mkvtoolnix →
61.0.0-1 →
armhf → 2021-09-23 04:01:16
sbuild (Debian sbuild) 0.72.0 (25 Oct 2016) on mb-lxc-02
+==============================================================================+
| mkvtoolnix 61.0.0-1 (armhf) Thu, 23 Sep 2021 02:46:46 +0000 |
+==============================================================================+
Package: mkvtoolnix
Version: 61.0.0-1
Source Version: 61.0.0-1
Distribution: bookworm-staging
Machine Architecture: armhf
Host Architecture: armhf
Build Architecture: armhf
I: NOTICE: Log filtering will replace 'var/lib/schroot/mount/bookworm-staging-armhf-sbuild-9a577b4e-19cb-40ef-8dae-f0c798dff4d7' with '<<CHROOT>>'
+------------------------------------------------------------------------------+
| Update chroot |
+------------------------------------------------------------------------------+
Get:1 http://172.17.0.1/private bookworm-staging InRelease [11.3 kB]
Get:2 http://172.17.0.1/private bookworm-staging/main Sources [12.4 MB]
Get:3 http://172.17.0.1/private bookworm-staging/main armhf Packages [13.4 MB]
Fetched 25.8 MB in 10s (2548 kB/s)
Reading package lists...
W: No sandbox user '_apt' on the system, can not drop privileges
+------------------------------------------------------------------------------+
| Fetch source files |
+------------------------------------------------------------------------------+
Check APT
---------
Checking available source versions...
Download source files with APT
------------------------------
Reading package lists...
Need to get 7673 kB of source archives.
Get:1 http://172.17.0.1/private bookworm-staging/main mkvtoolnix 61.0.0-1 (dsc) [2275 B]
Get:2 http://172.17.0.1/private bookworm-staging/main mkvtoolnix 61.0.0-1 (tar) [7662 kB]
Get:3 http://172.17.0.1/private bookworm-staging/main mkvtoolnix 61.0.0-1 (diff) [8140 B]
Fetched 7673 kB in 1s (6263 kB/s)
Download complete and in download only mode
I: NOTICE: Log filtering will replace 'build/mkvtoolnix-SOnPuO/mkvtoolnix-61.0.0' with '<<PKGBUILDDIR>>'
I: NOTICE: Log filtering will replace 'build/mkvtoolnix-SOnPuO' with '<<BUILDDIR>>'
+------------------------------------------------------------------------------+
| Install build-essential |
+------------------------------------------------------------------------------+
Setup apt archive
-----------------
Merged Build-Depends: build-essential, fakeroot
Filtered Build-Depends: build-essential, fakeroot
dpkg-deb: building package 'sbuild-build-depends-core-dummy' in '/<<BUILDDIR>>/resolver-HpXQTr/apt_archive/sbuild-build-depends-core-dummy.deb'.
dpkg-scanpackages: warning: Packages in archive but missing from override file:
dpkg-scanpackages: warning: sbuild-build-depends-core-dummy
dpkg-scanpackages: info: Wrote 1 entries to output Packages file.
gpg: keybox '/<<BUILDDIR>>/resolver-HpXQTr/gpg/pubring.kbx' created
gpg: /<<BUILDDIR>>/resolver-HpXQTr/gpg/trustdb.gpg: trustdb created
gpg: key 37145E60F90AF620: public key "Sbuild Signer (Sbuild Build Dependency Archive Key) <buildd-tools-devel@lists.alioth.debian.org>" imported
gpg: Total number processed: 1
gpg: imported: 1
gpg: key 37145E60F90AF620: "Sbuild Signer (Sbuild Build Dependency Archive Key) <buildd-tools-devel@lists.alioth.debian.org>" not changed
gpg: key 37145E60F90AF620: secret key imported
gpg: Total number processed: 1
gpg: unchanged: 1
gpg: secret keys read: 1
gpg: secret keys imported: 1
gpg: using "Sbuild Signer" as default secret key for signing
Ign:1 copy:/<<BUILDDIR>>/resolver-HpXQTr/apt_archive ./ InRelease
Get:2 copy:/<<BUILDDIR>>/resolver-HpXQTr/apt_archive ./ Release [957 B]
Get:3 copy:/<<BUILDDIR>>/resolver-HpXQTr/apt_archive ./ Release.gpg [370 B]
Get:4 copy:/<<BUILDDIR>>/resolver-HpXQTr/apt_archive ./ Sources [349 B]
Get:5 copy:/<<BUILDDIR>>/resolver-HpXQTr/apt_archive ./ Packages [434 B]
Fetched 2110 B in 0s (9993 B/s)
Reading package lists...
W: No sandbox user '_apt' on the system, can not drop privileges
Reading package lists...
Install core build dependencies (apt-based resolver)
----------------------------------------------------
Installing build dependencies
Reading package lists...
Building dependency tree...
Reading state information...
The following package was automatically installed and is no longer required:
netbase
Use 'apt autoremove' to remove it.
The following NEW packages will be installed:
sbuild-build-depends-core-dummy
0 upgraded, 1 newly installed, 0 to remove and 85 not upgraded.
Need to get 852 B of archives.
After this operation, 0 B of additional disk space will be used.
Get:1 copy:/<<BUILDDIR>>/resolver-HpXQTr/apt_archive ./ sbuild-build-depends-core-dummy 0.invalid.0 [852 B]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 852 B in 0s (66.0 kB/s)
Selecting previously unselected package sbuild-build-depends-core-dummy.
(Reading database ... 12488 files and directories currently installed.)
Preparing to unpack .../sbuild-build-depends-core-dummy_0.invalid.0_armhf.deb ...
Unpacking sbuild-build-depends-core-dummy (0.invalid.0) ...
Setting up sbuild-build-depends-core-dummy (0.invalid.0) ...
W: No sandbox user '_apt' on the system, can not drop privileges
+------------------------------------------------------------------------------+
| Check architectures |
+------------------------------------------------------------------------------+
Arch check ok (armhf included in any)
+------------------------------------------------------------------------------+
| Install package build dependencies |
+------------------------------------------------------------------------------+
Setup apt archive
-----------------
Merged Build-Depends: debhelper-compat (= 13), libboost-math-dev, rake, po4a, libbz2-dev, libflac-dev, libmatroska-dev (>= 1.6.3~), libogg-dev, libvorbis-dev, ruby:any, liblzo2-dev, zlib1g-dev, libcurl4-gnutls-dev, pkg-config, libboost-date-time-dev, libpugixml-dev, qtbase5-dev, libboost-filesystem-dev, nlohmann-json3-dev, xsltproc, docbook-xsl, qtmultimedia5-dev, libfmt-dev (>= 6.1.0), autoconf-archive, libcmark-dev (>= 0.28.3~), libdvdread-dev, libutfcpp-dev, libebml-dev (>= 1.4.2~), libgmp-dev
Filtered Build-Depends: debhelper-compat (= 13), libboost-math-dev, rake, po4a, libbz2-dev, libflac-dev, libmatroska-dev (>= 1.6.3~), libogg-dev, libvorbis-dev, ruby:any, liblzo2-dev, zlib1g-dev, libcurl4-gnutls-dev, pkg-config, libboost-date-time-dev, libpugixml-dev, qtbase5-dev, libboost-filesystem-dev, nlohmann-json3-dev, xsltproc, docbook-xsl, qtmultimedia5-dev, libfmt-dev (>= 6.1.0), autoconf-archive, libcmark-dev (>= 0.28.3~), libdvdread-dev, libutfcpp-dev, libebml-dev (>= 1.4.2~), libgmp-dev
dpkg-deb: building package 'sbuild-build-depends-mkvtoolnix-dummy' in '/<<BUILDDIR>>/resolver-HpXQTr/apt_archive/sbuild-build-depends-mkvtoolnix-dummy.deb'.
dpkg-scanpackages: warning: Packages in archive but missing from override file:
dpkg-scanpackages: warning: sbuild-build-depends-core-dummy sbuild-build-depends-mkvtoolnix-dummy
dpkg-scanpackages: info: Wrote 2 entries to output Packages file.
gpg: using "Sbuild Signer" as default secret key for signing
Ign:1 copy:/<<BUILDDIR>>/resolver-HpXQTr/apt_archive ./ InRelease
Get:2 copy:/<<BUILDDIR>>/resolver-HpXQTr/apt_archive ./ Release [963 B]
Get:3 copy:/<<BUILDDIR>>/resolver-HpXQTr/apt_archive ./ Release.gpg [370 B]
Get:4 copy:/<<BUILDDIR>>/resolver-HpXQTr/apt_archive ./ Sources [722 B]
Get:5 copy:/<<BUILDDIR>>/resolver-HpXQTr/apt_archive ./ Packages [802 B]
Fetched 2857 B in 0s (13.4 kB/s)
Reading package lists...
W: No sandbox user '_apt' on the system, can not drop privileges
Reading package lists...
Install mkvtoolnix build dependencies (apt-based resolver)
----------------------------------------------------------
Installing build dependencies
Reading package lists...
Building dependency tree...
Reading state information...
The following package was automatically installed and is no longer required:
netbase
Use 'apt autoremove' to remove it.
The following additional packages will be installed:
autoconf autoconf-archive automake autopoint autotools-dev bsdextrautils
ca-certificates debhelper dh-autoreconf dh-strip-nondeterminism docbook-xsl
dwz file fontconfig fontconfig-config fonts-dejavu-core gettext gettext-base
groff-base intltool-debian iso-codes libarchive-zip-perl libasound2
libasound2-data libasyncns0 libavahi-client3 libavahi-common-data
libavahi-common3 libblkid-dev libblkid1 libboost-date-time-dev
libboost-date-time1.74-dev libboost-date-time1.74.0 libboost-filesystem-dev
libboost-filesystem1.74-dev libboost-filesystem1.74.0 libboost-math-dev
libboost-math1.74-dev libboost-math1.74.0 libboost-serialization1.74-dev
libboost-serialization1.74.0 libboost-system1.74-dev libboost-system1.74.0
libboost1.74-dev libbrotli1 libbsd0 libbz2-dev libcap2 libcap2-bin
libcmark-dev libcmark0.30.1 libcups2 libcurl3-gnutls libcurl4-gnutls-dev
libdbus-1-3 libdebhelper-perl libdouble-conversion3 libdrm-amdgpu1
libdrm-common libdrm-nouveau2 libdrm-radeon1 libdrm2 libdvdread-dev
libdvdread8 libdw1 libebml-dev libebml5 libedit2 libegl-dev libegl-mesa0
libegl1 libelf1 libevdev2 libexpat1 libffi-dev
libfile-stripnondeterminism-perl libflac-dev libflac8 libfmt-dev libfmt7
libfontconfig1 libfreetype6 libgbm1 libgl-dev libgl1 libgl1-mesa-dri
libglapi-mesa libgles-dev libgles1 libgles2 libglib2.0-0 libglib2.0-bin
libglib2.0-data libglib2.0-dev libglib2.0-dev-bin libglvnd0 libglx-dev
libglx-mesa0 libglx0 libgmp-dev libgmp10 libgmpxx4ldbl libgnutls30
libgraphite2-3 libgstreamer-gl1.0-0 libgstreamer-plugins-base1.0-0
libgstreamer1.0-0 libgudev-1.0-0 libharfbuzz0b libice6 libicu67 libinput-bin
libinput10 libjpeg62-turbo libllvm11 liblzo2-2 liblzo2-dev libmagic-mgc
libmagic1 libmatroska-dev libmatroska7 libmd0 libmd4c0 libmount-dev
libmount1 libmpdec3 libmtdev1 libnghttp2-14 libogg-dev libogg0 libopus0
liborc-0.4-0 libosp5 libpcre16-3 libpcre2-16-0 libpcre2-32-0 libpcre2-dev
libpcre2-posix2 libpcre3-dev libpcre32-3 libpcrecpp0v5 libpipeline1
libpng16-16 libpod-parser-perl libpsl5 libpthread-stubs0-dev libpugixml-dev
libpugixml1v5 libpulse0 libpython3-stdlib libpython3.9-minimal
libpython3.9-stdlib libqt5concurrent5 libqt5core5a libqt5dbus5 libqt5gui5
libqt5multimedia5 libqt5multimediagsttools5 libqt5multimediaquick5
libqt5multimediawidgets5 libqt5network5 libqt5printsupport5 libqt5qml5
libqt5qmlmodels5 libqt5quick5 libqt5sql5 libqt5test5 libqt5widgets5
libqt5xml5 librtmp1 libruby2.7 libselinux1-dev libsensors-config libsensors5
libsepol1-dev libsgmls-perl libsigsegv2 libsm6 libsndfile1 libssh2-1
libsub-override-perl libtool libuchardet0 libunwind8 libutfcpp-dev libuuid1
libvorbis-dev libvorbis0a libvorbisenc2 libvorbisfile3 libvulkan-dev
libvulkan1 libwacom-common libwacom2 libwayland-client0 libwayland-cursor0
libwayland-egl1 libwayland-server0 libwrap0 libx11-6 libx11-data libx11-dev
libx11-xcb1 libxau-dev libxau6 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0
libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-present0 libxcb-randr0
libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-sync1
libxcb-util1 libxcb-xfixes0 libxcb-xinerama0 libxcb-xinput0 libxcb-xkb1
libxcb1 libxcb1-dev libxdamage1 libxdmcp-dev libxdmcp6 libxext-dev libxext6
libxfixes3 libxkbcommon-x11-0 libxkbcommon0 libxml2 libxrender1
libxshmfence1 libxslt1.1 libxxf86vm1 libyaml-0-2 libyaml-tiny-perl libz3-4
m4 man-db media-types nlohmann-json3-dev opensp openssl pkg-config
po-debconf po4a python3 python3-distutils python3-lib2to3 python3-minimal
python3.9 python3.9-minimal qt5-qmake qt5-qmake-bin qtbase5-dev
qtbase5-dev-tools qtchooser qtmultimedia5-dev rake ruby ruby-minitest
ruby-net-telnet ruby-power-assert ruby-rubygems ruby-test-unit ruby-xmlrpc
ruby2.7 rubygems-integration sensible-utils sgml-base shared-mime-info ucf
uuid-dev x11-common x11proto-dev xkb-data xml-core xorg-sgml-doctools
xsltproc xtrans-dev zlib1g-dev
Suggested packages:
gnu-standards autoconf-doc dh-make dbtoepub docbook-xsl-doc-html
| docbook-xsl-doc-pdf | docbook-xsl-doc-text | docbook-xsl-doc
docbook-xsl-saxon fop libsaxon-java libxalan2-java libxslthl-java xalan
gettext-doc libasprintf-dev libgettextpo-dev groff isoquery
libasound2-plugins alsa-utils libboost1.74-doc libboost-atomic1.74-dev
libboost-chrono1.74-dev libboost-container1.74-dev libboost-context1.74-dev
libboost-contract1.74-dev libboost-coroutine1.74-dev
libboost-exception1.74-dev libboost-fiber1.74-dev libboost-graph1.74-dev
libboost-graph-parallel1.74-dev libboost-iostreams1.74-dev
libboost-locale1.74-dev libboost-log1.74-dev libboost-mpi1.74-dev
libboost-mpi-python1.74-dev libboost-numpy1.74-dev
libboost-program-options1.74-dev libboost-python1.74-dev
libboost-random1.74-dev libboost-regex1.74-dev libboost-stacktrace1.74-dev
libboost-test1.74-dev libboost-thread1.74-dev libboost-timer1.74-dev
libboost-type-erasure1.74-dev libboost-wave1.74-dev libboost1.74-tools-dev
libmpfrc++-dev libntl-dev libboost-nowide1.74-dev cups-common libcurl4-doc
libgnutls28-dev libidn11-dev libkrb5-dev libldap2-dev librtmp-dev
libssh2-1-dev libdvdcss-dev libdvdcss2 libfmt-doc libgirepository1.0-dev
libglib2.0-doc libgdk-pixbuf2.0-bin | libgdk-pixbuf2.0-dev libxml2-utils
gmp-doc libgmp10-doc libmpfr-dev gnutls-bin libvisual-0.4-plugins
gstreamer1.0-tools opus-tools pulseaudio libthai0 qt5-image-formats-plugins
qtwayland5 qt5-qmltooling-plugins lm-sensors sgmlspl sgmls-doc libtool-doc
gfortran | fortran95-compiler gcj-jdk libx11-doc libxcb-doc libxext-doc
m4-doc apparmor less www-browser doc-base sgml-data libmail-box-perl
python3-doc python3-tk python3-venv python3.9-venv python3.9-doc
binfmt-support default-libmysqlclient-dev firebird-dev libpq-dev
libsqlite3-dev unixodbc-dev ri ruby-dev bundler sgml-base-doc
Recommended packages:
docbook-xml curl | wget | lynx alsa-ucm-conf alsa-topology-conf bzip2-doc
libpam-cap dbus libarchive-cpio-perl xdg-user-dirs gstreamer1.0-gl
gstreamer1.0-plugins-base publicsuffix qttranslations5-l10n libqt5svg5
qt5-gtk-platformtheme libqt5sql5-sqlite | libqt5sql5-mysql | libqt5sql5-odbc
| libqt5sql5-psql | libqt5sql5-tds | libqt5sql5-ibase libltdl-dev
uuid-runtime mesa-vulkan-drivers | vulkan-icd libwacom-bin
libmail-sendmail-perl libterm-readkey-perl libtext-wrapi18n-perl
libunicode-linebreak-perl libqt5opengl5-dev zip fonts-lato libjs-jquery
The following NEW packages will be installed:
autoconf autoconf-archive automake autopoint autotools-dev bsdextrautils
ca-certificates debhelper dh-autoreconf dh-strip-nondeterminism docbook-xsl
dwz file fontconfig fontconfig-config fonts-dejavu-core gettext gettext-base
groff-base intltool-debian iso-codes libarchive-zip-perl libasound2
libasound2-data libasyncns0 libavahi-client3 libavahi-common-data
libavahi-common3 libblkid-dev libboost-date-time-dev
libboost-date-time1.74-dev libboost-date-time1.74.0 libboost-filesystem-dev
libboost-filesystem1.74-dev libboost-filesystem1.74.0 libboost-math-dev
libboost-math1.74-dev libboost-math1.74.0 libboost-serialization1.74-dev
libboost-serialization1.74.0 libboost-system1.74-dev libboost-system1.74.0
libboost1.74-dev libbrotli1 libbsd0 libbz2-dev libcap2 libcap2-bin
libcmark-dev libcmark0.30.1 libcups2 libcurl3-gnutls libcurl4-gnutls-dev
libdbus-1-3 libdebhelper-perl libdouble-conversion3 libdrm-amdgpu1
libdrm-common libdrm-nouveau2 libdrm-radeon1 libdrm2 libdvdread-dev
libdvdread8 libdw1 libebml-dev libebml5 libedit2 libegl-dev libegl-mesa0
libegl1 libelf1 libevdev2 libexpat1 libffi-dev
libfile-stripnondeterminism-perl libflac-dev libflac8 libfmt-dev libfmt7
libfontconfig1 libfreetype6 libgbm1 libgl-dev libgl1 libgl1-mesa-dri
libglapi-mesa libgles-dev libgles1 libgles2 libglib2.0-0 libglib2.0-bin
libglib2.0-data libglib2.0-dev libglib2.0-dev-bin libglvnd0 libglx-dev
libglx-mesa0 libglx0 libgmp-dev libgmpxx4ldbl libgraphite2-3
libgstreamer-gl1.0-0 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0
libgudev-1.0-0 libharfbuzz0b libice6 libicu67 libinput-bin libinput10
libjpeg62-turbo libllvm11 liblzo2-2 liblzo2-dev libmagic-mgc libmagic1
libmatroska-dev libmatroska7 libmd0 libmd4c0 libmount-dev libmpdec3
libmtdev1 libnghttp2-14 libogg-dev libogg0 libopus0 liborc-0.4-0 libosp5
libpcre16-3 libpcre2-16-0 libpcre2-32-0 libpcre2-dev libpcre2-posix2
libpcre3-dev libpcre32-3 libpcrecpp0v5 libpipeline1 libpng16-16
libpod-parser-perl libpsl5 libpthread-stubs0-dev libpugixml-dev
libpugixml1v5 libpulse0 libpython3-stdlib libpython3.9-minimal
libpython3.9-stdlib libqt5concurrent5 libqt5core5a libqt5dbus5 libqt5gui5
libqt5multimedia5 libqt5multimediagsttools5 libqt5multimediaquick5
libqt5multimediawidgets5 libqt5network5 libqt5printsupport5 libqt5qml5
libqt5qmlmodels5 libqt5quick5 libqt5sql5 libqt5test5 libqt5widgets5
libqt5xml5 librtmp1 libruby2.7 libselinux1-dev libsensors-config libsensors5
libsepol1-dev libsgmls-perl libsigsegv2 libsm6 libsndfile1 libssh2-1
libsub-override-perl libtool libuchardet0 libunwind8 libutfcpp-dev
libvorbis-dev libvorbis0a libvorbisenc2 libvorbisfile3 libvulkan-dev
libvulkan1 libwacom-common libwacom2 libwayland-client0 libwayland-cursor0
libwayland-egl1 libwayland-server0 libwrap0 libx11-6 libx11-data libx11-dev
libx11-xcb1 libxau-dev libxau6 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0
libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-present0 libxcb-randr0
libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-sync1
libxcb-util1 libxcb-xfixes0 libxcb-xinerama0 libxcb-xinput0 libxcb-xkb1
libxcb1 libxcb1-dev libxdamage1 libxdmcp-dev libxdmcp6 libxext-dev libxext6
libxfixes3 libxkbcommon-x11-0 libxkbcommon0 libxml2 libxrender1
libxshmfence1 libxslt1.1 libxxf86vm1 libyaml-0-2 libyaml-tiny-perl libz3-4
m4 man-db media-types nlohmann-json3-dev opensp openssl pkg-config
po-debconf po4a python3 python3-distutils python3-lib2to3 python3-minimal
python3.9 python3.9-minimal qt5-qmake qt5-qmake-bin qtbase5-dev
qtbase5-dev-tools qtchooser qtmultimedia5-dev rake ruby ruby-minitest
ruby-net-telnet ruby-power-assert ruby-rubygems ruby-test-unit ruby-xmlrpc
ruby2.7 rubygems-integration sbuild-build-depends-mkvtoolnix-dummy
sensible-utils sgml-base shared-mime-info ucf uuid-dev x11-common
x11proto-dev xkb-data xml-core xorg-sgml-doctools xsltproc xtrans-dev
zlib1g-dev
The following packages will be upgraded:
libblkid1 libgmp10 libgnutls30 libmount1 libuuid1
5 upgraded, 281 newly installed, 0 to remove and 80 not upgraded.
Need to get 127 MB of archives.
After this operation, 641 MB of additional disk space will be used.
Get:1 copy:/<<BUILDDIR>>/resolver-HpXQTr/apt_archive ./ sbuild-build-depends-mkvtoolnix-dummy 0.invalid.0 [1084 B]
Get:2 http://172.17.0.1/private bookworm-staging/main armhf bsdextrautils armhf 2.37.2-1 [135 kB]
Get:3 http://172.17.0.1/private bookworm-staging/main armhf libuchardet0 armhf 0.0.7-1 [65.0 kB]
Get:4 http://172.17.0.1/private bookworm-staging/main armhf groff-base armhf 1.22.4-7 [793 kB]
Get:5 http://172.17.0.1/private bookworm-staging/main armhf libpipeline1 armhf 1.5.3-1 [29.9 kB]
Get:6 http://172.17.0.1/private bookworm-staging/main armhf man-db armhf 2.9.4-2 [1307 kB]
Get:7 http://172.17.0.1/private bookworm-staging/main armhf autoconf-archive all 20210219-2 [767 kB]
Get:8 http://172.17.0.1/private bookworm-staging/main armhf libpython3.9-minimal armhf 3.9.7-2+rpi1 [794 kB]
Get:9 http://172.17.0.1/private bookworm-staging/main armhf libexpat1 armhf 2.4.1-2 [80.3 kB]
Get:10 http://172.17.0.1/private bookworm-staging/main armhf python3.9-minimal armhf 3.9.7-2+rpi1 [1631 kB]
Get:11 http://172.17.0.1/private bookworm-staging/main armhf python3-minimal armhf 3.9.2-3 [38.2 kB]
Get:12 http://172.17.0.1/private bookworm-staging/main armhf media-types all 4.0.0 [30.3 kB]
Get:13 http://172.17.0.1/private bookworm-staging/main armhf libmpdec3 armhf 2.5.1-2+rpi1 [73.5 kB]
Get:14 http://172.17.0.1/private bookworm-staging/main armhf libuuid1 armhf 2.37.2-1 [83.1 kB]
Get:15 http://172.17.0.1/private bookworm-staging/main armhf libpython3.9-stdlib armhf 3.9.7-2+rpi1 [1618 kB]
Get:16 http://172.17.0.1/private bookworm-staging/main armhf python3.9 armhf 3.9.7-2+rpi1 [480 kB]
Get:17 http://172.17.0.1/private bookworm-staging/main armhf libpython3-stdlib armhf 3.9.2-3 [21.4 kB]
Get:18 http://172.17.0.1/private bookworm-staging/main armhf python3 armhf 3.9.2-3 [37.9 kB]
Get:19 http://172.17.0.1/private bookworm-staging/main armhf sgml-base all 1.30 [15.1 kB]
Get:20 http://172.17.0.1/private bookworm-staging/main armhf libblkid1 armhf 2.37.2-1 [186 kB]
Get:21 http://172.17.0.1/private bookworm-staging/main armhf libgmp10 armhf 2:6.2.1+dfsg-2 [507 kB]
Get:22 http://172.17.0.1/private bookworm-staging/main armhf libgnutls30 armhf 3.7.2-2 [1273 kB]
Get:23 http://172.17.0.1/private bookworm-staging/main armhf libmount1 armhf 2.37.2-1 [194 kB]
Get:24 http://172.17.0.1/private bookworm-staging/main armhf libcap2 armhf 1:2.44-1 [21.2 kB]
Get:25 http://172.17.0.1/private bookworm-staging/main armhf libcap2-bin armhf 1:2.44-1 [32.1 kB]
Get:26 http://172.17.0.1/private bookworm-staging/main armhf sensible-utils all 0.0.17 [21.5 kB]
Get:27 http://172.17.0.1/private bookworm-staging/main armhf libmagic-mgc armhf 1:5.39-3 [273 kB]
Get:28 http://172.17.0.1/private bookworm-staging/main armhf libmagic1 armhf 1:5.39-3 [117 kB]
Get:29 http://172.17.0.1/private bookworm-staging/main armhf file armhf 1:5.39-3 [68.0 kB]
Get:30 http://172.17.0.1/private bookworm-staging/main armhf gettext-base armhf 0.21-4 [171 kB]
Get:31 http://172.17.0.1/private bookworm-staging/main armhf ucf all 3.0043 [74.0 kB]
Get:32 http://172.17.0.1/private bookworm-staging/main armhf libsigsegv2 armhf 2.13-1 [34.3 kB]
Get:33 http://172.17.0.1/private bookworm-staging/main armhf m4 armhf 1.4.18-5 [186 kB]
Get:34 http://172.17.0.1/private bookworm-staging/main armhf autoconf all 2.71-2 [343 kB]
Get:35 http://172.17.0.1/private bookworm-staging/main armhf autotools-dev all 20180224.1+nmu1 [77.1 kB]
Get:36 http://172.17.0.1/private bookworm-staging/main armhf automake all 1:1.16.4-2 [819 kB]
Get:37 http://172.17.0.1/private bookworm-staging/main armhf autopoint all 0.21-4 [510 kB]
Get:38 http://172.17.0.1/private bookworm-staging/main armhf openssl armhf 1.1.1l-1 [815 kB]
Get:39 http://172.17.0.1/private bookworm-staging/main armhf ca-certificates all 20210119 [158 kB]
Get:40 http://172.17.0.1/private bookworm-staging/main armhf libdebhelper-perl all 13.5.1 [192 kB]
Get:41 http://172.17.0.1/private bookworm-staging/main armhf libtool all 2.4.6-15 [513 kB]
Get:42 http://172.17.0.1/private bookworm-staging/main armhf dh-autoreconf all 20 [17.1 kB]
Get:43 http://172.17.0.1/private bookworm-staging/main armhf libarchive-zip-perl all 1.68-1 [104 kB]
Get:44 http://172.17.0.1/private bookworm-staging/main armhf libsub-override-perl all 0.09-2 [10.2 kB]
Get:45 http://172.17.0.1/private bookworm-staging/main armhf libfile-stripnondeterminism-perl all 1.12.0-1 [26.3 kB]
Get:46 http://172.17.0.1/private bookworm-staging/main armhf dh-strip-nondeterminism all 1.12.0-1 [15.4 kB]
Get:47 http://172.17.0.1/private bookworm-staging/main armhf libelf1 armhf 0.185-2 [168 kB]
Get:48 http://172.17.0.1/private bookworm-staging/main armhf dwz armhf 0.14-1 [83.0 kB]
Get:49 http://172.17.0.1/private bookworm-staging/main armhf libicu67 armhf 67.1-7 [8291 kB]
Get:50 http://172.17.0.1/private bookworm-staging/main armhf libxml2 armhf 2.9.10+dfsg-6.7 [580 kB]
Get:51 http://172.17.0.1/private bookworm-staging/main armhf gettext armhf 0.21-4 [1215 kB]
Get:52 http://172.17.0.1/private bookworm-staging/main armhf intltool-debian all 0.35.0+20060710.5 [26.8 kB]
Get:53 http://172.17.0.1/private bookworm-staging/main armhf po-debconf all 1.0.21+nmu1 [248 kB]
Get:54 http://172.17.0.1/private bookworm-staging/main armhf debhelper all 13.5.1 [1056 kB]
Get:55 http://172.17.0.1/private bookworm-staging/main armhf xml-core all 0.18+nmu1 [23.8 kB]
Get:56 http://172.17.0.1/private bookworm-staging/main armhf docbook-xsl all 1.79.2+dfsg-1 [1237 kB]
Get:57 http://172.17.0.1/private bookworm-staging/main armhf libbrotli1 armhf 1.0.9-2+b1 [261 kB]
Get:58 http://172.17.0.1/private bookworm-staging/main armhf libpng16-16 armhf 1.6.37-3 [276 kB]
Get:59 http://172.17.0.1/private bookworm-staging/main armhf libfreetype6 armhf 2.10.4+dfsg-1 [353 kB]
Get:60 http://172.17.0.1/private bookworm-staging/main armhf fonts-dejavu-core all 2.37-2 [1069 kB]
Get:61 http://172.17.0.1/private bookworm-staging/main armhf fontconfig-config all 2.13.1-4.2 [281 kB]
Get:62 http://172.17.0.1/private bookworm-staging/main armhf libfontconfig1 armhf 2.13.1-4.2 [328 kB]
Get:63 http://172.17.0.1/private bookworm-staging/main armhf fontconfig armhf 2.13.1-4.2 [416 kB]
Get:64 http://172.17.0.1/private bookworm-staging/main armhf iso-codes all 4.7.0-1 [2836 kB]
Get:65 http://172.17.0.1/private bookworm-staging/main armhf libasound2-data all 1.2.5.1-1 [38.6 kB]
Get:66 http://172.17.0.1/private bookworm-staging/main armhf libasound2 armhf 1.2.5.1-1 [316 kB]
Get:67 http://172.17.0.1/private bookworm-staging/main armhf libasyncns0 armhf 0.8-6 [11.8 kB]
Get:68 http://172.17.0.1/private bookworm-staging/main armhf libavahi-common-data armhf 0.8-5 [123 kB]
Get:69 http://172.17.0.1/private bookworm-staging/main armhf libavahi-common3 armhf 0.8-5 [55.3 kB]
Get:70 http://172.17.0.1/private bookworm-staging/main armhf libdbus-1-3 armhf 1.12.20-2 [193 kB]
Get:71 http://172.17.0.1/private bookworm-staging/main armhf libavahi-client3 armhf 0.8-5 [57.9 kB]
Get:72 http://172.17.0.1/private bookworm-staging/main armhf uuid-dev armhf 2.37.2-1 [93.9 kB]
Get:73 http://172.17.0.1/private bookworm-staging/main armhf libblkid-dev armhf 2.37.2-1 [216 kB]
Get:74 http://172.17.0.1/private bookworm-staging/main armhf libboost1.74-dev armhf 1.74.0-9 [9534 kB]
Get:75 http://172.17.0.1/private bookworm-staging/main armhf libboost-date-time1.74.0 armhf 1.74.0-9 [241 kB]
Get:76 http://172.17.0.1/private bookworm-staging/main armhf libboost-serialization1.74.0 armhf 1.74.0-9 [319 kB]
Get:77 http://172.17.0.1/private bookworm-staging/main armhf libboost-serialization1.74-dev armhf 1.74.0-9 [388 kB]
Get:78 http://172.17.0.1/private bookworm-staging/main armhf libboost-date-time1.74-dev armhf 1.74.0-9 [251 kB]
Get:79 http://172.17.0.1/private bookworm-staging/main armhf libboost-date-time-dev armhf 1.74.0.3+b1 [4604 B]
Get:80 http://172.17.0.1/private bookworm-staging/main armhf libboost-filesystem1.74.0 armhf 1.74.0-9 [274 kB]
Get:81 http://172.17.0.1/private bookworm-staging/main armhf libboost-system1.74.0 armhf 1.74.0-9 [242 kB]
Get:82 http://172.17.0.1/private bookworm-staging/main armhf libboost-system1.74-dev armhf 1.74.0-9 [243 kB]
Get:83 http://172.17.0.1/private bookworm-staging/main armhf libboost-filesystem1.74-dev armhf 1.74.0-9 [285 kB]
Get:84 http://172.17.0.1/private bookworm-staging/main armhf libboost-filesystem-dev armhf 1.74.0.3+b1 [4636 B]
Get:85 http://172.17.0.1/private bookworm-staging/main armhf libboost-math1.74.0 armhf 1.74.0-9 [344 kB]
Get:86 http://172.17.0.1/private bookworm-staging/main armhf libboost-math1.74-dev armhf 1.74.0-9 [403 kB]
Get:87 http://172.17.0.1/private bookworm-staging/main armhf libboost-math-dev armhf 1.74.0.3+b1 [4804 B]
Get:88 http://172.17.0.1/private bookworm-staging/main armhf libmd0 armhf 1.0.3-3 [27.2 kB]
Get:89 http://172.17.0.1/private bookworm-staging/main armhf libbsd0 armhf 0.11.3-1 [103 kB]
Get:90 http://172.17.0.1/private bookworm-staging/main armhf libbz2-dev armhf 1.0.8-4 [28.0 kB]
Get:91 http://172.17.0.1/private bookworm-staging/main armhf libcmark0.30.1 armhf 0.30.1-2 [97.5 kB]
Get:92 http://172.17.0.1/private bookworm-staging/main armhf libcmark-dev armhf 0.30.1-2 [116 kB]
Get:93 http://172.17.0.1/private bookworm-staging/main armhf libcups2 armhf 2.3.3op2-7 [312 kB]
Get:94 http://172.17.0.1/private bookworm-staging/main armhf libnghttp2-14 armhf 1.43.0-1 [65.3 kB]
Get:95 http://172.17.0.1/private bookworm-staging/main armhf libpsl5 armhf 0.21.0-1.2 [56.2 kB]
Get:96 http://172.17.0.1/private bookworm-staging/main armhf librtmp1 armhf 2.4+20151223.gitfa8646d.1-2+b2 [54.2 kB]
Get:97 http://172.17.0.1/private bookworm-staging/main armhf libssh2-1 armhf 1.9.0-3 [151 kB]
Get:98 http://172.17.0.1/private bookworm-staging/main armhf libcurl3-gnutls armhf 7.74.0-1.3 [301 kB]
Get:99 http://172.17.0.1/private bookworm-staging/main armhf libcurl4-gnutls-dev armhf 7.74.0-1.3 [375 kB]
Get:100 http://172.17.0.1/private bookworm-staging/main armhf libdouble-conversion3 armhf 3.1.5-6.1 [38.6 kB]
Get:101 http://172.17.0.1/private bookworm-staging/main armhf libdrm-common all 2.4.107-2+rpi1 [15.3 kB]
Get:102 http://172.17.0.1/private bookworm-staging/main armhf libdrm2 armhf 2.4.107-2+rpi1 [40.0 kB]
Get:103 http://172.17.0.1/private bookworm-staging/main armhf libdrm-amdgpu1 armhf 2.4.107-2+rpi1 [27.8 kB]
Get:104 http://172.17.0.1/private bookworm-staging/main armhf libdrm-nouveau2 armhf 2.4.107-2+rpi1 [25.4 kB]
Get:105 http://172.17.0.1/private bookworm-staging/main armhf libdrm-radeon1 armhf 2.4.107-2+rpi1 [29.4 kB]
Get:106 http://172.17.0.1/private bookworm-staging/main armhf libdvdread8 armhf 6.1.2-1 [85.9 kB]
Get:107 http://172.17.0.1/private bookworm-staging/main armhf libglib2.0-0 armhf 2.68.4-1 [1197 kB]
Get:108 http://172.17.0.1/private bookworm-staging/main armhf pkg-config armhf 0.29.2-1 [61.5 kB]
Get:109 http://172.17.0.1/private bookworm-staging/main armhf libdvdread-dev armhf 6.1.2-1 [97.4 kB]
Get:110 http://172.17.0.1/private bookworm-staging/main armhf libdw1 armhf 0.185-2 [214 kB]
Get:111 http://172.17.0.1/private bookworm-staging/main armhf libebml5 armhf 1.4.2-1 [56.6 kB]
Get:112 http://172.17.0.1/private bookworm-staging/main armhf libebml-dev armhf 1.4.2-1 [38.4 kB]
Get:113 http://172.17.0.1/private bookworm-staging/main armhf libedit2 armhf 3.1-20210910-1 [81.2 kB]
Get:114 http://172.17.0.1/private bookworm-staging/main armhf libglvnd0 armhf 1.3.4-2 [54.8 kB]
Get:115 http://172.17.0.1/private bookworm-staging/main armhf libwayland-server0 armhf 1.19.0-2 [28.1 kB]
Get:116 http://172.17.0.1/private bookworm-staging/main armhf libgbm1 armhf 20.3.5-1+rpi1 [70.2 kB]
Get:117 http://172.17.0.1/private bookworm-staging/main armhf libglapi-mesa armhf 20.3.5-1+rpi1 [80.5 kB]
Get:118 http://172.17.0.1/private bookworm-staging/main armhf libwayland-client0 armhf 1.19.0-2 [22.2 kB]
Get:119 http://172.17.0.1/private bookworm-staging/main armhf libxau6 armhf 1:1.0.9-1 [19.1 kB]
Get:120 http://172.17.0.1/private bookworm-staging/main armhf libxdmcp6 armhf 1:1.1.2-3 [25.0 kB]
Get:121 http://172.17.0.1/private bookworm-staging/main armhf libxcb1 armhf 1.14-3 [136 kB]
Get:122 http://172.17.0.1/private bookworm-staging/main armhf libx11-data all 2:1.7.2-2 [311 kB]
Get:123 http://172.17.0.1/private bookworm-staging/main armhf libx11-6 armhf 2:1.7.2-2 [704 kB]
Get:124 http://172.17.0.1/private bookworm-staging/main armhf libx11-xcb1 armhf 2:1.7.2-2 [203 kB]
Get:125 http://172.17.0.1/private bookworm-staging/main armhf libxcb-dri2-0 armhf 1.14-3 [103 kB]
Get:126 http://172.17.0.1/private bookworm-staging/main armhf libxcb-dri3-0 armhf 1.14-3 [102 kB]
Get:127 http://172.17.0.1/private bookworm-staging/main armhf libxcb-present0 armhf 1.14-3 [101 kB]
Get:128 http://172.17.0.1/private bookworm-staging/main armhf libxcb-sync1 armhf 1.14-3 [104 kB]
Get:129 http://172.17.0.1/private bookworm-staging/main armhf libxcb-xfixes0 armhf 1.14-3 [105 kB]
Get:130 http://172.17.0.1/private bookworm-staging/main armhf libxshmfence1 armhf 1.3-1 [8636 B]
Get:131 http://172.17.0.1/private bookworm-staging/main armhf libegl-mesa0 armhf 20.3.5-1+rpi1 [123 kB]
Get:132 http://172.17.0.1/private bookworm-staging/main armhf libegl1 armhf 1.3.4-2 [29.8 kB]
Get:133 http://172.17.0.1/private bookworm-staging/main armhf libxcb-glx0 armhf 1.14-3 [117 kB]
Get:134 http://172.17.0.1/private bookworm-staging/main armhf libxcb-shm0 armhf 1.14-3 [101 kB]
Get:135 http://172.17.0.1/private bookworm-staging/main armhf libxdamage1 armhf 1:1.1.5-2 [15.2 kB]
Get:136 http://172.17.0.1/private bookworm-staging/main armhf libxext6 armhf 2:1.3.4-1 [48.0 kB]
Get:137 http://172.17.0.1/private bookworm-staging/main armhf libxfixes3 armhf 1:5.0.3-2 [20.7 kB]
Get:138 http://172.17.0.1/private bookworm-staging/main armhf libxxf86vm1 armhf 1:1.1.4-1+b2 [20.1 kB]
Get:139 http://172.17.0.1/private bookworm-staging/main armhf libz3-4 armhf 4.8.12-1 [5758 kB]
Get:140 http://172.17.0.1/private bookworm-staging/main armhf libllvm11 armhf 1:11.0.1-2+rpi1 [15.6 MB]
Get:141 http://172.17.0.1/private bookworm-staging/main armhf libsensors-config all 1:3.6.0-7 [32.3 kB]
Get:142 http://172.17.0.1/private bookworm-staging/main armhf libsensors5 armhf 1:3.6.0-7 [49.6 kB]
Get:143 http://172.17.0.1/private bookworm-staging/main armhf libvulkan1 armhf 1.2.189.0-2 [84.3 kB]
Get:144 http://172.17.0.1/private bookworm-staging/main armhf libgl1-mesa-dri armhf 20.3.5-1+rpi1 [5883 kB]
Get:145 http://172.17.0.1/private bookworm-staging/main armhf libglx-mesa0 armhf 20.3.5-1+rpi1 [171 kB]
Get:146 http://172.17.0.1/private bookworm-staging/main armhf libglx0 armhf 1.3.4-2 [26.6 kB]
Get:147 http://172.17.0.1/private bookworm-staging/main armhf libgl1 armhf 1.3.4-2 [105 kB]
Get:148 http://172.17.0.1/private bookworm-staging/main armhf xorg-sgml-doctools all 1:1.11-1.1 [22.1 kB]
Get:149 http://172.17.0.1/private bookworm-staging/main armhf x11proto-dev all 2021.5-1 [599 kB]
Get:150 http://172.17.0.1/private bookworm-staging/main armhf libxau-dev armhf 1:1.0.9-1 [22.3 kB]
Get:151 http://172.17.0.1/private bookworm-staging/main armhf libxdmcp-dev armhf 1:1.1.2-3 [40.9 kB]
Get:152 http://172.17.0.1/private bookworm-staging/main armhf xtrans-dev all 1.4.0-1 [98.7 kB]
Get:153 http://172.17.0.1/private bookworm-staging/main armhf libpthread-stubs0-dev armhf 0.4-1 [5344 B]
Get:154 http://172.17.0.1/private bookworm-staging/main armhf libxcb1-dev armhf 1.14-3 [171 kB]
Get:155 http://172.17.0.1/private bookworm-staging/main armhf libx11-dev armhf 2:1.7.2-2 [780 kB]
Get:156 http://172.17.0.1/private bookworm-staging/main armhf libglx-dev armhf 1.3.4-2 [16.6 kB]
Get:157 http://172.17.0.1/private bookworm-staging/main armhf libgl-dev armhf 1.3.4-2 [100 kB]
Get:158 http://172.17.0.1/private bookworm-staging/main armhf libegl-dev armhf 1.3.4-2 [20.1 kB]
Get:159 http://172.17.0.1/private bookworm-staging/main armhf libevdev2 armhf 1.11.0+dfsg-1+rpi1 [27.8 kB]
Get:160 http://172.17.0.1/private bookworm-staging/main armhf libffi-dev armhf 3.3-6 [58.2 kB]
Get:161 http://172.17.0.1/private bookworm-staging/main armhf libogg0 armhf 1.3.4-0.1 [24.6 kB]
Get:162 http://172.17.0.1/private bookworm-staging/main armhf libflac8 armhf 1.3.3-2 [87.6 kB]
Get:163 http://172.17.0.1/private bookworm-staging/main armhf libogg-dev armhf 1.3.4-0.1 [202 kB]
Get:164 http://172.17.0.1/private bookworm-staging/main armhf libflac-dev armhf 1.3.3-2 [136 kB]
Get:165 http://172.17.0.1/private bookworm-staging/main armhf libfmt7 armhf 7.1.3+ds1-5 [101 kB]
Get:166 http://172.17.0.1/private bookworm-staging/main armhf libfmt-dev armhf 7.1.3+ds1-5 [142 kB]
Get:167 http://172.17.0.1/private bookworm-staging/main armhf libgles1 armhf 1.3.4-2 [13.4 kB]
Get:168 http://172.17.0.1/private bookworm-staging/main armhf libgles2 armhf 1.3.4-2 [20.3 kB]
Get:169 http://172.17.0.1/private bookworm-staging/main armhf libgles-dev armhf 1.3.4-2 [50.6 kB]
Get:170 http://172.17.0.1/private bookworm-staging/main armhf libglib2.0-data all 2.68.4-1 [1190 kB]
Get:171 http://172.17.0.1/private bookworm-staging/main armhf libglib2.0-bin armhf 2.68.4-1 [138 kB]
Get:172 http://172.17.0.1/private bookworm-staging/main armhf python3-lib2to3 all 3.9.7-1 [79.4 kB]
Get:173 http://172.17.0.1/private bookworm-staging/main armhf python3-distutils all 3.9.7-1 [146 kB]
Get:174 http://172.17.0.1/private bookworm-staging/main armhf libglib2.0-dev-bin armhf 2.68.4-1 [180 kB]
Get:175 http://172.17.0.1/private bookworm-staging/main armhf libsepol1-dev armhf 3.1-1 [308 kB]
Get:176 http://172.17.0.1/private bookworm-staging/main armhf libpcre2-16-0 armhf 10.36-2 [197 kB]
Get:177 http://172.17.0.1/private bookworm-staging/main armhf libpcre2-32-0 armhf 10.36-2 [187 kB]
Get:178 http://172.17.0.1/private bookworm-staging/main armhf libpcre2-posix2 armhf 10.36-2 [48.7 kB]
Get:179 http://172.17.0.1/private bookworm-staging/main armhf libpcre2-dev armhf 10.36-2 [626 kB]
Get:180 http://172.17.0.1/private bookworm-staging/main armhf libselinux1-dev armhf 3.1-3 [156 kB]
Get:181 http://172.17.0.1/private bookworm-staging/main armhf libmount-dev armhf 2.37.2-1 [78.4 kB]
Get:182 http://172.17.0.1/private bookworm-staging/main armhf libpcre16-3 armhf 2:8.39-13 [235 kB]
Get:183 http://172.17.0.1/private bookworm-staging/main armhf libpcre32-3 armhf 2:8.39-13 [228 kB]
Get:184 http://172.17.0.1/private bookworm-staging/main armhf libpcrecpp0v5 armhf 2:8.39-13 [150 kB]
Get:185 http://172.17.0.1/private bookworm-staging/main armhf libpcre3-dev armhf 2:8.39-13 [566 kB]
Get:186 http://172.17.0.1/private bookworm-staging/main armhf zlib1g-dev armhf 1:1.2.11.dfsg-2 [184 kB]
Get:187 http://172.17.0.1/private bookworm-staging/main armhf libglib2.0-dev armhf 2.68.4-1 [1469 kB]
Get:188 http://172.17.0.1/private bookworm-staging/main armhf libgmpxx4ldbl armhf 2:6.2.1+dfsg-2 [337 kB]
Get:189 http://172.17.0.1/private bookworm-staging/main armhf libgmp-dev armhf 2:6.2.1+dfsg-2 [583 kB]
Get:190 http://172.17.0.1/private bookworm-staging/main armhf libgraphite2-3 armhf 1.3.14-1 [70.3 kB]
Get:191 http://172.17.0.1/private bookworm-staging/main armhf libunwind8 armhf 1.3.2-2 [47.3 kB]
Get:192 http://172.17.0.1/private bookworm-staging/main armhf libgstreamer1.0-0 armhf 1.18.5-1 [2139 kB]
Get:193 http://172.17.0.1/private bookworm-staging/main armhf liborc-0.4-0 armhf 1:0.4.32-1 [152 kB]
Get:194 http://172.17.0.1/private bookworm-staging/main armhf libgstreamer-plugins-base1.0-0 armhf 1.18.5-1 [2071 kB]
Get:195 http://172.17.0.1/private bookworm-staging/main armhf libgudev-1.0-0 armhf 237-2 [13.2 kB]
Get:196 http://172.17.0.1/private bookworm-staging/main armhf libwayland-cursor0 armhf 1.19.0-2 [13.5 kB]
Get:197 http://172.17.0.1/private bookworm-staging/main armhf libwayland-egl1 armhf 1.19.0-2 [8308 B]
Get:198 http://172.17.0.1/private bookworm-staging/main armhf libgstreamer-gl1.0-0 armhf 1.18.5-1 [1498 kB]
Get:199 http://172.17.0.1/private bookworm-staging/main armhf libharfbuzz0b armhf 2.7.4-1 [1422 kB]
Get:200 http://172.17.0.1/private bookworm-staging/main armhf x11-common all 1:7.7+23 [252 kB]
Get:201 http://172.17.0.1/private bookworm-staging/main armhf libice6 armhf 2:1.0.10-1 [51.7 kB]
Get:202 http://172.17.0.1/private bookworm-staging/main armhf libwacom-common all 1.11-1 [52.2 kB]
Get:203 http://172.17.0.1/private bookworm-staging/main armhf libwacom2 armhf 1.11-1 [19.5 kB]
Get:204 http://172.17.0.1/private bookworm-staging/main armhf libinput-bin armhf 1.16.4-3 [21.9 kB]
Get:205 http://172.17.0.1/private bookworm-staging/main armhf libmtdev1 armhf 1.1.6-1 [22.0 kB]
Get:206 http://172.17.0.1/private bookworm-staging/main armhf libinput10 armhf 1.16.4-3 [100 kB]
Get:207 http://172.17.0.1/private bookworm-staging/main armhf libjpeg62-turbo armhf 1:2.0.6-4 [122 kB]
Get:208 http://172.17.0.1/private bookworm-staging/main armhf liblzo2-2 armhf 2.10-2 [50.2 kB]
Get:209 http://172.17.0.1/private bookworm-staging/main armhf liblzo2-dev armhf 2.10-2 [98.0 kB]
Get:210 http://172.17.0.1/private bookworm-staging/main armhf libmatroska7 armhf 1.6.3-2 [104 kB]
Get:211 http://172.17.0.1/private bookworm-staging/main armhf libmatroska-dev armhf 1.6.3-2 [35.8 kB]
Get:212 http://172.17.0.1/private bookworm-staging/main armhf libmd4c0 armhf 0.4.8-1 [39.4 kB]
Get:213 http://172.17.0.1/private bookworm-staging/main armhf libopus0 armhf 1.3.1-0.1 [166 kB]
Get:214 http://172.17.0.1/private bookworm-staging/main armhf libosp5 armhf 1.5.2-13 [880 kB]
Get:215 http://172.17.0.1/private bookworm-staging/main armhf libpod-parser-perl all 1.63-2 [96.1 kB]
Get:216 http://172.17.0.1/private bookworm-staging/main armhf libpugixml1v5 armhf 1.11.4-1 [78.1 kB]
Get:217 http://172.17.0.1/private bookworm-staging/main armhf libpugixml-dev armhf 1.11.4-1 [102 kB]
Get:218 http://172.17.0.1/private bookworm-staging/main armhf libvorbis0a armhf 1.3.7-1 [82.7 kB]
Get:219 http://172.17.0.1/private bookworm-staging/main armhf libvorbisenc2 armhf 1.3.7-1 [74.4 kB]
Get:220 http://172.17.0.1/private bookworm-staging/main armhf libsndfile1 armhf 1.0.31-2 [171 kB]
Get:221 http://172.17.0.1/private bookworm-staging/main armhf libwrap0 armhf 7.6.q-31 [56.4 kB]
Get:222 http://172.17.0.1/private bookworm-staging/main armhf libpulse0 armhf 14.2-2 [256 kB]
Get:223 http://172.17.0.1/private bookworm-staging/main armhf shared-mime-info armhf 2.0-1 [697 kB]
Get:224 http://172.17.0.1/private bookworm-staging/main armhf libqt5core5a armhf 5.15.2+dfsg-10+rpi1 [1518 kB]
Get:225 http://172.17.0.1/private bookworm-staging/main armhf libqt5concurrent5 armhf 5.15.2+dfsg-10+rpi1 [69.9 kB]
Get:226 http://172.17.0.1/private bookworm-staging/main armhf libqt5dbus5 armhf 5.15.2+dfsg-10+rpi1 [212 kB]
Get:227 http://172.17.0.1/private bookworm-staging/main armhf libqt5network5 armhf 5.15.2+dfsg-10+rpi1 [595 kB]
Get:228 http://172.17.0.1/private bookworm-staging/main armhf libsm6 armhf 2:1.2.3-1 [32.9 kB]
Get:229 http://172.17.0.1/private bookworm-staging/main armhf libxcb-icccm4 armhf 0.4.1-1.1 [26.3 kB]
Get:230 http://172.17.0.1/private bookworm-staging/main armhf libxcb-util1 armhf 0.4.0-1 [22.1 kB]
Get:231 http://172.17.0.1/private bookworm-staging/main armhf libxcb-image0 armhf 0.4.0-1+b3 [23.4 kB]
Get:232 http://172.17.0.1/private bookworm-staging/main armhf libxcb-keysyms1 armhf 0.4.0-1+b2 [15.9 kB]
Get:233 http://172.17.0.1/private bookworm-staging/main armhf libxcb-randr0 armhf 1.14-3 [112 kB]
Get:234 http://172.17.0.1/private bookworm-staging/main armhf libxcb-render0 armhf 1.14-3 [110 kB]
Get:235 http://172.17.0.1/private bookworm-staging/main armhf libxcb-render-util0 armhf 0.3.9-1+b1 [17.3 kB]
Get:236 http://172.17.0.1/private bookworm-staging/main armhf libxcb-shape0 armhf 1.14-3 [102 kB]
Get:237 http://172.17.0.1/private bookworm-staging/main armhf libxcb-xinerama0 armhf 1.14-3 [101 kB]
Get:238 http://172.17.0.1/private bookworm-staging/main armhf libxcb-xinput0 armhf 1.14-3 [123 kB]
Get:239 http://172.17.0.1/private bookworm-staging/main armhf libxcb-xkb1 armhf 1.14-3 [122 kB]
Get:240 http://172.17.0.1/private bookworm-staging/main armhf xkb-data all 2.33-1 [748 kB]
Get:241 http://172.17.0.1/private bookworm-staging/main armhf libxkbcommon0 armhf 1.0.3-2 [88.5 kB]
Get:242 http://172.17.0.1/private bookworm-staging/main armhf libxkbcommon-x11-0 armhf 1.0.3-2 [15.1 kB]
Get:243 http://172.17.0.1/private bookworm-staging/main armhf libxrender1 armhf 1:0.9.10-1 [29.9 kB]
Get:244 http://172.17.0.1/private bookworm-staging/main armhf libqt5gui5 armhf 5.15.2+dfsg-10+rpi1 [2546 kB]
Get:245 http://172.17.0.1/private bookworm-staging/main armhf libqt5multimedia5 armhf 5.15.2-3 [238 kB]
Get:246 http://172.17.0.1/private bookworm-staging/main armhf libqt5widgets5 armhf 5.15.2+dfsg-10+rpi1 [2065 kB]
Get:247 http://172.17.0.1/private bookworm-staging/main armhf libqt5multimediawidgets5 armhf 5.15.2-3 [37.3 kB]
Get:248 http://172.17.0.1/private bookworm-staging/main armhf libqt5multimediagsttools5 armhf 5.15.2-3 [91.1 kB]
Get:249 http://172.17.0.1/private bookworm-staging/main armhf libqt5qml5 armhf 5.15.2+dfsg-8+rpi1 [1114 kB]
Get:250 http://172.17.0.1/private bookworm-staging/main armhf libqt5qmlmodels5 armhf 5.15.2+dfsg-8+rpi1 [168 kB]
Get:251 http://172.17.0.1/private bookworm-staging/main armhf libqt5quick5 armhf 5.15.2+dfsg-8+rpi1 [1330 kB]
Get:252 http://172.17.0.1/private bookworm-staging/main armhf libqt5multimediaquick5 armhf 5.15.2-3 [41.0 kB]
Get:253 http://172.17.0.1/private bookworm-staging/main armhf libqt5printsupport5 armhf 5.15.2+dfsg-10+rpi1 [211 kB]
Get:254 http://172.17.0.1/private bookworm-staging/main armhf libqt5sql5 armhf 5.15.2+dfsg-10+rpi1 [136 kB]
Get:255 http://172.17.0.1/private bookworm-staging/main armhf libqt5test5 armhf 5.15.2+dfsg-10+rpi1 [158 kB]
Get:256 http://172.17.0.1/private bookworm-staging/main armhf libqt5xml5 armhf 5.15.2+dfsg-10+rpi1 [136 kB]
Get:257 http://172.17.0.1/private bookworm-staging/main armhf rubygems-integration all 1.18 [6704 B]
Get:258 http://172.17.0.1/private bookworm-staging/main armhf ruby2.7 armhf 2.7.4-1 [747 kB]
Get:259 http://172.17.0.1/private bookworm-staging/main armhf ruby-rubygems all 3.2.5-2 [281 kB]
Get:260 http://172.17.0.1/private bookworm-staging/main armhf ruby armhf 1:2.7+2 [11.7 kB]
Get:261 http://172.17.0.1/private bookworm-staging/main armhf rake all 13.0.3-1 [84.7 kB]
Get:262 http://172.17.0.1/private bookworm-staging/main armhf ruby-minitest all 5.13.0-1 [57.3 kB]
Get:263 http://172.17.0.1/private bookworm-staging/main armhf ruby-net-telnet all 0.1.1-2 [12.5 kB]
Get:264 http://172.17.0.1/private bookworm-staging/main armhf ruby-power-assert all 1.1.7-2 [11.5 kB]
Get:265 http://172.17.0.1/private bookworm-staging/main armhf ruby-test-unit all 3.3.9-1 [86.1 kB]
Get:266 http://172.17.0.1/private bookworm-staging/main armhf ruby-xmlrpc all 0.3.0-2 [23.7 kB]
Get:267 http://172.17.0.1/private bookworm-staging/main armhf libyaml-0-2 armhf 0.2.2-1 [40.0 kB]
Get:268 http://172.17.0.1/private bookworm-staging/main armhf libruby2.7 armhf 2.7.4-1 [3904 kB]
Get:269 http://172.17.0.1/private bookworm-staging/main armhf libsgmls-perl all 1.03ii-36 [26.5 kB]
Get:270 http://172.17.0.1/private bookworm-staging/main armhf libutfcpp-dev armhf 2.3.4-1.1 [7444 B]
Get:271 http://172.17.0.1/private bookworm-staging/main armhf libvorbisfile3 armhf 1.3.7-1 [25.2 kB]
Get:272 http://172.17.0.1/private bookworm-staging/main armhf libvorbis-dev armhf 1.3.7-1 [316 kB]
Get:273 http://172.17.0.1/private bookworm-staging/main armhf libvulkan-dev armhf 1.2.189.0-2 [783 kB]
Get:274 http://172.17.0.1/private bookworm-staging/main armhf libxext-dev armhf 2:1.3.4-1 [102 kB]
Get:275 http://172.17.0.1/private bookworm-staging/main armhf libxslt1.1 armhf 1.1.34-4 [218 kB]
Get:276 http://172.17.0.1/private bookworm-staging/main armhf libyaml-tiny-perl all 1.73-1 [32.3 kB]
Get:277 http://172.17.0.1/private bookworm-staging/main armhf nlohmann-json3-dev all 3.9.1-1 [684 kB]
Get:278 http://172.17.0.1/private bookworm-staging/main armhf opensp armhf 1.5.2-13 [439 kB]
Get:279 http://172.17.0.1/private bookworm-staging/main armhf po4a all 0.62-1 [1796 kB]
Get:280 http://172.17.0.1/private bookworm-staging/main armhf qt5-qmake-bin armhf 5.15.2+dfsg-10+rpi1 [821 kB]
Get:281 http://172.17.0.1/private bookworm-staging/main armhf qtchooser armhf 66-2 [23.1 kB]
Get:282 http://172.17.0.1/private bookworm-staging/main armhf qt5-qmake armhf 5.15.2+dfsg-10+rpi1 [249 kB]
Get:283 http://172.17.0.1/private bookworm-staging/main armhf qtbase5-dev-tools armhf 5.15.2+dfsg-10+rpi1 [651 kB]
Get:284 http://172.17.0.1/private bookworm-staging/main armhf qtbase5-dev armhf 5.15.2+dfsg-10+rpi1 [1096 kB]
Get:285 http://172.17.0.1/private bookworm-staging/main armhf qtmultimedia5-dev armhf 5.15.2-3 [50.2 kB]
Get:286 http://172.17.0.1/private bookworm-staging/main armhf xsltproc armhf 1.1.34-4 [123 kB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 127 MB in 20s (6234 kB/s)
Selecting previously unselected package bsdextrautils.
(Reading database ... 12488 files and directories currently installed.)
Preparing to unpack .../0-bsdextrautils_2.37.2-1_armhf.deb ...
Unpacking bsdextrautils (2.37.2-1) ...
Selecting previously unselected package libuchardet0:armhf.
Preparing to unpack .../1-libuchardet0_0.0.7-1_armhf.deb ...
Unpacking libuchardet0:armhf (0.0.7-1) ...
Selecting previously unselected package groff-base.
Preparing to unpack .../2-groff-base_1.22.4-7_armhf.deb ...
Unpacking groff-base (1.22.4-7) ...
Selecting previously unselected package libpipeline1:armhf.
Preparing to unpack .../3-libpipeline1_1.5.3-1_armhf.deb ...
Unpacking libpipeline1:armhf (1.5.3-1) ...
Selecting previously unselected package man-db.
Preparing to unpack .../4-man-db_2.9.4-2_armhf.deb ...
Unpacking man-db (2.9.4-2) ...
Selecting previously unselected package autoconf-archive.
Preparing to unpack .../5-autoconf-archive_20210219-2_all.deb ...
Unpacking autoconf-archive (20210219-2) ...
Selecting previously unselected package libpython3.9-minimal:armhf.
Preparing to unpack .../6-libpython3.9-minimal_3.9.7-2+rpi1_armhf.deb ...
Unpacking libpython3.9-minimal:armhf (3.9.7-2+rpi1) ...
Selecting previously unselected package libexpat1:armhf.
Preparing to unpack .../7-libexpat1_2.4.1-2_armhf.deb ...
Unpacking libexpat1:armhf (2.4.1-2) ...
Selecting previously unselected package python3.9-minimal.
Preparing to unpack .../8-python3.9-minimal_3.9.7-2+rpi1_armhf.deb ...
Unpacking python3.9-minimal (3.9.7-2+rpi1) ...
Setting up libpython3.9-minimal:armhf (3.9.7-2+rpi1) ...
Setting up libexpat1:armhf (2.4.1-2) ...
Setting up python3.9-minimal (3.9.7-2+rpi1) ...
Selecting previously unselected package python3-minimal.
(Reading database ... 14529 files and directories currently installed.)
Preparing to unpack .../python3-minimal_3.9.2-3_armhf.deb ...
Unpacking python3-minimal (3.9.2-3) ...
Selecting previously unselected package media-types.
Preparing to unpack .../media-types_4.0.0_all.deb ...
Unpacking media-types (4.0.0) ...
Selecting previously unselected package libmpdec3:armhf.
Preparing to unpack .../libmpdec3_2.5.1-2+rpi1_armhf.deb ...
Unpacking libmpdec3:armhf (2.5.1-2+rpi1) ...
Preparing to unpack .../libuuid1_2.37.2-1_armhf.deb ...
Unpacking libuuid1:armhf (2.37.2-1) over (2.36.1-8) ...
Setting up libuuid1:armhf (2.37.2-1) ...
Selecting previously unselected package libpython3.9-stdlib:armhf.
(Reading database ... 14564 files and directories currently installed.)
Preparing to unpack .../libpython3.9-stdlib_3.9.7-2+rpi1_armhf.deb ...
Unpacking libpython3.9-stdlib:armhf (3.9.7-2+rpi1) ...
Selecting previously unselected package python3.9.
Preparing to unpack .../python3.9_3.9.7-2+rpi1_armhf.deb ...
Unpacking python3.9 (3.9.7-2+rpi1) ...
Selecting previously unselected package libpython3-stdlib:armhf.
Preparing to unpack .../libpython3-stdlib_3.9.2-3_armhf.deb ...
Unpacking libpython3-stdlib:armhf (3.9.2-3) ...
Setting up python3-minimal (3.9.2-3) ...
Selecting previously unselected package python3.
(Reading database ... 14927 files and directories currently installed.)
Preparing to unpack .../python3_3.9.2-3_armhf.deb ...
Unpacking python3 (3.9.2-3) ...
Selecting previously unselected package sgml-base.
Preparing to unpack .../sgml-base_1.30_all.deb ...
Unpacking sgml-base (1.30) ...
Preparing to unpack .../libblkid1_2.37.2-1_armhf.deb ...
Unpacking libblkid1:armhf (2.37.2-1) over (2.36.1-8) ...
Setting up libblkid1:armhf (2.37.2-1) ...
(Reading database ... 14975 files and directories currently installed.)
Preparing to unpack .../libgmp10_2%3a6.2.1+dfsg-2_armhf.deb ...
Unpacking libgmp10:armhf (2:6.2.1+dfsg-2) over (2:6.2.1+dfsg-1) ...
Setting up libgmp10:armhf (2:6.2.1+dfsg-2) ...
(Reading database ... 14975 files and directories currently installed.)
Preparing to unpack .../libgnutls30_3.7.2-2_armhf.deb ...
Unpacking libgnutls30:armhf (3.7.2-2) over (3.7.1-5) ...
Setting up libgnutls30:armhf (3.7.2-2) ...
(Reading database ... 14975 files and directories currently installed.)
Preparing to unpack .../libmount1_2.37.2-1_armhf.deb ...
Unpacking libmount1:armhf (2.37.2-1) over (2.36.1-8) ...
Setting up libmount1:armhf (2.37.2-1) ...
Selecting previously unselected package libcap2:armhf.
(Reading database ... 14975 files and directories currently installed.)
Preparing to unpack .../000-libcap2_1%3a2.44-1_armhf.deb ...
Unpacking libcap2:armhf (1:2.44-1) ...
Selecting previously unselected package libcap2-bin.
Preparing to unpack .../001-libcap2-bin_1%3a2.44-1_armhf.deb ...
Unpacking libcap2-bin (1:2.44-1) ...
Selecting previously unselected package sensible-utils.
Preparing to unpack .../002-sensible-utils_0.0.17_all.deb ...
Unpacking sensible-utils (0.0.17) ...
Selecting previously unselected package libmagic-mgc.
Preparing to unpack .../003-libmagic-mgc_1%3a5.39-3_armhf.deb ...
Unpacking libmagic-mgc (1:5.39-3) ...
Selecting previously unselected package libmagic1:armhf.
Preparing to unpack .../004-libmagic1_1%3a5.39-3_armhf.deb ...
Unpacking libmagic1:armhf (1:5.39-3) ...
Selecting previously unselected package file.
Preparing to unpack .../005-file_1%3a5.39-3_armhf.deb ...
Unpacking file (1:5.39-3) ...
Selecting previously unselected package gettext-base.
Preparing to unpack .../006-gettext-base_0.21-4_armhf.deb ...
Unpacking gettext-base (0.21-4) ...
Selecting previously unselected package ucf.
Preparing to unpack .../007-ucf_3.0043_all.deb ...
Moving old data out of the way
Unpacking ucf (3.0043) ...
Selecting previously unselected package libsigsegv2:armhf.
Preparing to unpack .../008-libsigsegv2_2.13-1_armhf.deb ...
Unpacking libsigsegv2:armhf (2.13-1) ...
Selecting previously unselected package m4.
Preparing to unpack .../009-m4_1.4.18-5_armhf.deb ...
Unpacking m4 (1.4.18-5) ...
Selecting previously unselected package autoconf.
Preparing to unpack .../010-autoconf_2.71-2_all.deb ...
Unpacking autoconf (2.71-2) ...
Selecting previously unselected package autotools-dev.
Preparing to unpack .../011-autotools-dev_20180224.1+nmu1_all.deb ...
Unpacking autotools-dev (20180224.1+nmu1) ...
Selecting previously unselected package automake.
Preparing to unpack .../012-automake_1%3a1.16.4-2_all.deb ...
Unpacking automake (1:1.16.4-2) ...
Selecting previously unselected package autopoint.
Preparing to unpack .../013-autopoint_0.21-4_all.deb ...
Unpacking autopoint (0.21-4) ...
Selecting previously unselected package openssl.
Preparing to unpack .../014-openssl_1.1.1l-1_armhf.deb ...
Unpacking openssl (1.1.1l-1) ...
Selecting previously unselected package ca-certificates.
Preparing to unpack .../015-ca-certificates_20210119_all.deb ...
Unpacking ca-certificates (20210119) ...
Selecting previously unselected package libdebhelper-perl.
Preparing to unpack .../016-libdebhelper-perl_13.5.1_all.deb ...
Unpacking libdebhelper-perl (13.5.1) ...
Selecting previously unselected package libtool.
Preparing to unpack .../017-libtool_2.4.6-15_all.deb ...
Unpacking libtool (2.4.6-15) ...
Selecting previously unselected package dh-autoreconf.
Preparing to unpack .../018-dh-autoreconf_20_all.deb ...
Unpacking dh-autoreconf (20) ...
Selecting previously unselected package libarchive-zip-perl.
Preparing to unpack .../019-libarchive-zip-perl_1.68-1_all.deb ...
Unpacking libarchive-zip-perl (1.68-1) ...
Selecting previously unselected package libsub-override-perl.
Preparing to unpack .../020-libsub-override-perl_0.09-2_all.deb ...
Unpacking libsub-override-perl (0.09-2) ...
Selecting previously unselected package libfile-stripnondeterminism-perl.
Preparing to unpack .../021-libfile-stripnondeterminism-perl_1.12.0-1_all.deb ...
Unpacking libfile-stripnondeterminism-perl (1.12.0-1) ...
Selecting previously unselected package dh-strip-nondeterminism.
Preparing to unpack .../022-dh-strip-nondeterminism_1.12.0-1_all.deb ...
Unpacking dh-strip-nondeterminism (1.12.0-1) ...
Selecting previously unselected package libelf1:armhf.
Preparing to unpack .../023-libelf1_0.185-2_armhf.deb ...
Unpacking libelf1:armhf (0.185-2) ...
Selecting previously unselected package dwz.
Preparing to unpack .../024-dwz_0.14-1_armhf.deb ...
Unpacking dwz (0.14-1) ...
Selecting previously unselected package libicu67:armhf.
Preparing to unpack .../025-libicu67_67.1-7_armhf.deb ...
Unpacking libicu67:armhf (67.1-7) ...
Selecting previously unselected package libxml2:armhf.
Preparing to unpack .../026-libxml2_2.9.10+dfsg-6.7_armhf.deb ...
Unpacking libxml2:armhf (2.9.10+dfsg-6.7) ...
Selecting previously unselected package gettext.
Preparing to unpack .../027-gettext_0.21-4_armhf.deb ...
Unpacking gettext (0.21-4) ...
Selecting previously unselected package intltool-debian.
Preparing to unpack .../028-intltool-debian_0.35.0+20060710.5_all.deb ...
Unpacking intltool-debian (0.35.0+20060710.5) ...
Selecting previously unselected package po-debconf.
Preparing to unpack .../029-po-debconf_1.0.21+nmu1_all.deb ...
Unpacking po-debconf (1.0.21+nmu1) ...
Selecting previously unselected package debhelper.
Preparing to unpack .../030-debhelper_13.5.1_all.deb ...
Unpacking debhelper (13.5.1) ...
Selecting previously unselected package xml-core.
Preparing to unpack .../031-xml-core_0.18+nmu1_all.deb ...
Unpacking xml-core (0.18+nmu1) ...
Selecting previously unselected package docbook-xsl.
Preparing to unpack .../032-docbook-xsl_1.79.2+dfsg-1_all.deb ...
Unpacking docbook-xsl (1.79.2+dfsg-1) ...
Selecting previously unselected package libbrotli1:armhf.
Preparing to unpack .../033-libbrotli1_1.0.9-2+b1_armhf.deb ...
Unpacking libbrotli1:armhf (1.0.9-2+b1) ...
Selecting previously unselected package libpng16-16:armhf.
Preparing to unpack .../034-libpng16-16_1.6.37-3_armhf.deb ...
Unpacking libpng16-16:armhf (1.6.37-3) ...
Selecting previously unselected package libfreetype6:armhf.
Preparing to unpack .../035-libfreetype6_2.10.4+dfsg-1_armhf.deb ...
Unpacking libfreetype6:armhf (2.10.4+dfsg-1) ...
Selecting previously unselected package fonts-dejavu-core.
Preparing to unpack .../036-fonts-dejavu-core_2.37-2_all.deb ...
Unpacking fonts-dejavu-core (2.37-2) ...
Selecting previously unselected package fontconfig-config.
Preparing to unpack .../037-fontconfig-config_2.13.1-4.2_all.deb ...
Unpacking fontconfig-config (2.13.1-4.2) ...
Selecting previously unselected package libfontconfig1:armhf.
Preparing to unpack .../038-libfontconfig1_2.13.1-4.2_armhf.deb ...
Unpacking libfontconfig1:armhf (2.13.1-4.2) ...
Selecting previously unselected package fontconfig.
Preparing to unpack .../039-fontconfig_2.13.1-4.2_armhf.deb ...
Unpacking fontconfig (2.13.1-4.2) ...
Selecting previously unselected package iso-codes.
Preparing to unpack .../040-iso-codes_4.7.0-1_all.deb ...
Unpacking iso-codes (4.7.0-1) ...
Selecting previously unselected package libasound2-data.
Preparing to unpack .../041-libasound2-data_1.2.5.1-1_all.deb ...
Unpacking libasound2-data (1.2.5.1-1) ...
Selecting previously unselected package libasound2:armhf.
Preparing to unpack .../042-libasound2_1.2.5.1-1_armhf.deb ...
Unpacking libasound2:armhf (1.2.5.1-1) ...
Selecting previously unselected package libasyncns0:armhf.
Preparing to unpack .../043-libasyncns0_0.8-6_armhf.deb ...
Unpacking libasyncns0:armhf (0.8-6) ...
Selecting previously unselected package libavahi-common-data:armhf.
Preparing to unpack .../044-libavahi-common-data_0.8-5_armhf.deb ...
Unpacking libavahi-common-data:armhf (0.8-5) ...
Selecting previously unselected package libavahi-common3:armhf.
Preparing to unpack .../045-libavahi-common3_0.8-5_armhf.deb ...
Unpacking libavahi-common3:armhf (0.8-5) ...
Selecting previously unselected package libdbus-1-3:armhf.
Preparing to unpack .../046-libdbus-1-3_1.12.20-2_armhf.deb ...
Unpacking libdbus-1-3:armhf (1.12.20-2) ...
Selecting previously unselected package libavahi-client3:armhf.
Preparing to unpack .../047-libavahi-client3_0.8-5_armhf.deb ...
Unpacking libavahi-client3:armhf (0.8-5) ...
Selecting previously unselected package uuid-dev:armhf.
Preparing to unpack .../048-uuid-dev_2.37.2-1_armhf.deb ...
Unpacking uuid-dev:armhf (2.37.2-1) ...
Selecting previously unselected package libblkid-dev:armhf.
Preparing to unpack .../049-libblkid-dev_2.37.2-1_armhf.deb ...
Unpacking libblkid-dev:armhf (2.37.2-1) ...
Selecting previously unselected package libboost1.74-dev:armhf.
Preparing to unpack .../050-libboost1.74-dev_1.74.0-9_armhf.deb ...
Unpacking libboost1.74-dev:armhf (1.74.0-9) ...
Selecting previously unselected package libboost-date-time1.74.0:armhf.
Preparing to unpack .../051-libboost-date-time1.74.0_1.74.0-9_armhf.deb ...
Unpacking libboost-date-time1.74.0:armhf (1.74.0-9) ...
Selecting previously unselected package libboost-serialization1.74.0:armhf.
Preparing to unpack .../052-libboost-serialization1.74.0_1.74.0-9_armhf.deb ...
Unpacking libboost-serialization1.74.0:armhf (1.74.0-9) ...
Selecting previously unselected package libboost-serialization1.74-dev:armhf.
Preparing to unpack .../053-libboost-serialization1.74-dev_1.74.0-9_armhf.deb ...
Unpacking libboost-serialization1.74-dev:armhf (1.74.0-9) ...
Selecting previously unselected package libboost-date-time1.74-dev:armhf.
Preparing to unpack .../054-libboost-date-time1.74-dev_1.74.0-9_armhf.deb ...
Unpacking libboost-date-time1.74-dev:armhf (1.74.0-9) ...
Selecting previously unselected package libboost-date-time-dev:armhf.
Preparing to unpack .../055-libboost-date-time-dev_1.74.0.3+b1_armhf.deb ...
Unpacking libboost-date-time-dev:armhf (1.74.0.3+b1) ...
Selecting previously unselected package libboost-filesystem1.74.0:armhf.
Preparing to unpack .../056-libboost-filesystem1.74.0_1.74.0-9_armhf.deb ...
Unpacking libboost-filesystem1.74.0:armhf (1.74.0-9) ...
Selecting previously unselected package libboost-system1.74.0:armhf.
Preparing to unpack .../057-libboost-system1.74.0_1.74.0-9_armhf.deb ...
Unpacking libboost-system1.74.0:armhf (1.74.0-9) ...
Selecting previously unselected package libboost-system1.74-dev:armhf.
Preparing to unpack .../058-libboost-system1.74-dev_1.74.0-9_armhf.deb ...
Unpacking libboost-system1.74-dev:armhf (1.74.0-9) ...
Selecting previously unselected package libboost-filesystem1.74-dev:armhf.
Preparing to unpack .../059-libboost-filesystem1.74-dev_1.74.0-9_armhf.deb ...
Unpacking libboost-filesystem1.74-dev:armhf (1.74.0-9) ...
Selecting previously unselected package libboost-filesystem-dev:armhf.
Preparing to unpack .../060-libboost-filesystem-dev_1.74.0.3+b1_armhf.deb ...
Unpacking libboost-filesystem-dev:armhf (1.74.0.3+b1) ...
Selecting previously unselected package libboost-math1.74.0:armhf.
Preparing to unpack .../061-libboost-math1.74.0_1.74.0-9_armhf.deb ...
Unpacking libboost-math1.74.0:armhf (1.74.0-9) ...
Selecting previously unselected package libboost-math1.74-dev:armhf.
Preparing to unpack .../062-libboost-math1.74-dev_1.74.0-9_armhf.deb ...
Unpacking libboost-math1.74-dev:armhf (1.74.0-9) ...
Selecting previously unselected package libboost-math-dev:armhf.
Preparing to unpack .../063-libboost-math-dev_1.74.0.3+b1_armhf.deb ...
Unpacking libboost-math-dev:armhf (1.74.0.3+b1) ...
Selecting previously unselected package libmd0:armhf.
Preparing to unpack .../064-libmd0_1.0.3-3_armhf.deb ...
Unpacking libmd0:armhf (1.0.3-3) ...
Selecting previously unselected package libbsd0:armhf.
Preparing to unpack .../065-libbsd0_0.11.3-1_armhf.deb ...
Unpacking libbsd0:armhf (0.11.3-1) ...
Selecting previously unselected package libbz2-dev:armhf.
Preparing to unpack .../066-libbz2-dev_1.0.8-4_armhf.deb ...
Unpacking libbz2-dev:armhf (1.0.8-4) ...
Selecting previously unselected package libcmark0.30.1:armhf.
Preparing to unpack .../067-libcmark0.30.1_0.30.1-2_armhf.deb ...
Unpacking libcmark0.30.1:armhf (0.30.1-2) ...
Selecting previously unselected package libcmark-dev:armhf.
Preparing to unpack .../068-libcmark-dev_0.30.1-2_armhf.deb ...
Unpacking libcmark-dev:armhf (0.30.1-2) ...
Selecting previously unselected package libcups2:armhf.
Preparing to unpack .../069-libcups2_2.3.3op2-7_armhf.deb ...
Unpacking libcups2:armhf (2.3.3op2-7) ...
Selecting previously unselected package libnghttp2-14:armhf.
Preparing to unpack .../070-libnghttp2-14_1.43.0-1_armhf.deb ...
Unpacking libnghttp2-14:armhf (1.43.0-1) ...
Selecting previously unselected package libpsl5:armhf.
Preparing to unpack .../071-libpsl5_0.21.0-1.2_armhf.deb ...
Unpacking libpsl5:armhf (0.21.0-1.2) ...
Selecting previously unselected package librtmp1:armhf.
Preparing to unpack .../072-librtmp1_2.4+20151223.gitfa8646d.1-2+b2_armhf.deb ...
Unpacking librtmp1:armhf (2.4+20151223.gitfa8646d.1-2+b2) ...
Selecting previously unselected package libssh2-1:armhf.
Preparing to unpack .../073-libssh2-1_1.9.0-3_armhf.deb ...
Unpacking libssh2-1:armhf (1.9.0-3) ...
Selecting previously unselected package libcurl3-gnutls:armhf.
Preparing to unpack .../074-libcurl3-gnutls_7.74.0-1.3_armhf.deb ...
Unpacking libcurl3-gnutls:armhf (7.74.0-1.3) ...
Selecting previously unselected package libcurl4-gnutls-dev:armhf.
Preparing to unpack .../075-libcurl4-gnutls-dev_7.74.0-1.3_armhf.deb ...
Unpacking libcurl4-gnutls-dev:armhf (7.74.0-1.3) ...
Selecting previously unselected package libdouble-conversion3:armhf.
Preparing to unpack .../076-libdouble-conversion3_3.1.5-6.1_armhf.deb ...
Unpacking libdouble-conversion3:armhf (3.1.5-6.1) ...
Selecting previously unselected package libdrm-common.
Preparing to unpack .../077-libdrm-common_2.4.107-2+rpi1_all.deb ...
Unpacking libdrm-common (2.4.107-2+rpi1) ...
Selecting previously unselected package libdrm2:armhf.
Preparing to unpack .../078-libdrm2_2.4.107-2+rpi1_armhf.deb ...
Unpacking libdrm2:armhf (2.4.107-2+rpi1) ...
Selecting previously unselected package libdrm-amdgpu1:armhf.
Preparing to unpack .../079-libdrm-amdgpu1_2.4.107-2+rpi1_armhf.deb ...
Unpacking libdrm-amdgpu1:armhf (2.4.107-2+rpi1) ...
Selecting previously unselected package libdrm-nouveau2:armhf.
Preparing to unpack .../080-libdrm-nouveau2_2.4.107-2+rpi1_armhf.deb ...
Unpacking libdrm-nouveau2:armhf (2.4.107-2+rpi1) ...
Selecting previously unselected package libdrm-radeon1:armhf.
Preparing to unpack .../081-libdrm-radeon1_2.4.107-2+rpi1_armhf.deb ...
Unpacking libdrm-radeon1:armhf (2.4.107-2+rpi1) ...
Selecting previously unselected package libdvdread8:armhf.
Preparing to unpack .../082-libdvdread8_6.1.2-1_armhf.deb ...
Unpacking libdvdread8:armhf (6.1.2-1) ...
Selecting previously unselected package libglib2.0-0:armhf.
Preparing to unpack .../083-libglib2.0-0_2.68.4-1_armhf.deb ...
Unpacking libglib2.0-0:armhf (2.68.4-1) ...
Selecting previously unselected package pkg-config.
Preparing to unpack .../084-pkg-config_0.29.2-1_armhf.deb ...
Unpacking pkg-config (0.29.2-1) ...
Selecting previously unselected package libdvdread-dev:armhf.
Preparing to unpack .../085-libdvdread-dev_6.1.2-1_armhf.deb ...
Unpacking libdvdread-dev:armhf (6.1.2-1) ...
Selecting previously unselected package libdw1:armhf.
Preparing to unpack .../086-libdw1_0.185-2_armhf.deb ...
Unpacking libdw1:armhf (0.185-2) ...
Selecting previously unselected package libebml5:armhf.
Preparing to unpack .../087-libebml5_1.4.2-1_armhf.deb ...
Unpacking libebml5:armhf (1.4.2-1) ...
Selecting previously unselected package libebml-dev:armhf.
Preparing to unpack .../088-libebml-dev_1.4.2-1_armhf.deb ...
Unpacking libebml-dev:armhf (1.4.2-1) ...
Selecting previously unselected package libedit2:armhf.
Preparing to unpack .../089-libedit2_3.1-20210910-1_armhf.deb ...
Unpacking libedit2:armhf (3.1-20210910-1) ...
Selecting previously unselected package libglvnd0:armhf.
Preparing to unpack .../090-libglvnd0_1.3.4-2_armhf.deb ...
Unpacking libglvnd0:armhf (1.3.4-2) ...
Selecting previously unselected package libwayland-server0:armhf.
Preparing to unpack .../091-libwayland-server0_1.19.0-2_armhf.deb ...
Unpacking libwayland-server0:armhf (1.19.0-2) ...
Selecting previously unselected package libgbm1:armhf.
Preparing to unpack .../092-libgbm1_20.3.5-1+rpi1_armhf.deb ...
Unpacking libgbm1:armhf (20.3.5-1+rpi1) ...
Selecting previously unselected package libglapi-mesa:armhf.
Preparing to unpack .../093-libglapi-mesa_20.3.5-1+rpi1_armhf.deb ...
Unpacking libglapi-mesa:armhf (20.3.5-1+rpi1) ...
Selecting previously unselected package libwayland-client0:armhf.
Preparing to unpack .../094-libwayland-client0_1.19.0-2_armhf.deb ...
Unpacking libwayland-client0:armhf (1.19.0-2) ...
Selecting previously unselected package libxau6:armhf.
Preparing to unpack .../095-libxau6_1%3a1.0.9-1_armhf.deb ...
Unpacking libxau6:armhf (1:1.0.9-1) ...
Selecting previously unselected package libxdmcp6:armhf.
Preparing to unpack .../096-libxdmcp6_1%3a1.1.2-3_armhf.deb ...
Unpacking libxdmcp6:armhf (1:1.1.2-3) ...
Selecting previously unselected package libxcb1:armhf.
Preparing to unpack .../097-libxcb1_1.14-3_armhf.deb ...
Unpacking libxcb1:armhf (1.14-3) ...
Selecting previously unselected package libx11-data.
Preparing to unpack .../098-libx11-data_2%3a1.7.2-2_all.deb ...
Unpacking libx11-data (2:1.7.2-2) ...
Selecting previously unselected package libx11-6:armhf.
Preparing to unpack .../099-libx11-6_2%3a1.7.2-2_armhf.deb ...
Unpacking libx11-6:armhf (2:1.7.2-2) ...
Selecting previously unselected package libx11-xcb1:armhf.
Preparing to unpack .../100-libx11-xcb1_2%3a1.7.2-2_armhf.deb ...
Unpacking libx11-xcb1:armhf (2:1.7.2-2) ...
Selecting previously unselected package libxcb-dri2-0:armhf.
Preparing to unpack .../101-libxcb-dri2-0_1.14-3_armhf.deb ...
Unpacking libxcb-dri2-0:armhf (1.14-3) ...
Selecting previously unselected package libxcb-dri3-0:armhf.
Preparing to unpack .../102-libxcb-dri3-0_1.14-3_armhf.deb ...
Unpacking libxcb-dri3-0:armhf (1.14-3) ...
Selecting previously unselected package libxcb-present0:armhf.
Preparing to unpack .../103-libxcb-present0_1.14-3_armhf.deb ...
Unpacking libxcb-present0:armhf (1.14-3) ...
Selecting previously unselected package libxcb-sync1:armhf.
Preparing to unpack .../104-libxcb-sync1_1.14-3_armhf.deb ...
Unpacking libxcb-sync1:armhf (1.14-3) ...
Selecting previously unselected package libxcb-xfixes0:armhf.
Preparing to unpack .../105-libxcb-xfixes0_1.14-3_armhf.deb ...
Unpacking libxcb-xfixes0:armhf (1.14-3) ...
Selecting previously unselected package libxshmfence1:armhf.
Preparing to unpack .../106-libxshmfence1_1.3-1_armhf.deb ...
Unpacking libxshmfence1:armhf (1.3-1) ...
Selecting previously unselected package libegl-mesa0:armhf.
Preparing to unpack .../107-libegl-mesa0_20.3.5-1+rpi1_armhf.deb ...
Unpacking libegl-mesa0:armhf (20.3.5-1+rpi1) ...
Selecting previously unselected package libegl1:armhf.
Preparing to unpack .../108-libegl1_1.3.4-2_armhf.deb ...
Unpacking libegl1:armhf (1.3.4-2) ...
Selecting previously unselected package libxcb-glx0:armhf.
Preparing to unpack .../109-libxcb-glx0_1.14-3_armhf.deb ...
Unpacking libxcb-glx0:armhf (1.14-3) ...
Selecting previously unselected package libxcb-shm0:armhf.
Preparing to unpack .../110-libxcb-shm0_1.14-3_armhf.deb ...
Unpacking libxcb-shm0:armhf (1.14-3) ...
Selecting previously unselected package libxdamage1:armhf.
Preparing to unpack .../111-libxdamage1_1%3a1.1.5-2_armhf.deb ...
Unpacking libxdamage1:armhf (1:1.1.5-2) ...
Selecting previously unselected package libxext6:armhf.
Preparing to unpack .../112-libxext6_2%3a1.3.4-1_armhf.deb ...
Unpacking libxext6:armhf (2:1.3.4-1) ...
Selecting previously unselected package libxfixes3:armhf.
Preparing to unpack .../113-libxfixes3_1%3a5.0.3-2_armhf.deb ...
Unpacking libxfixes3:armhf (1:5.0.3-2) ...
Selecting previously unselected package libxxf86vm1:armhf.
Preparing to unpack .../114-libxxf86vm1_1%3a1.1.4-1+b2_armhf.deb ...
Unpacking libxxf86vm1:armhf (1:1.1.4-1+b2) ...
Selecting previously unselected package libz3-4:armhf.
Preparing to unpack .../115-libz3-4_4.8.12-1_armhf.deb ...
Unpacking libz3-4:armhf (4.8.12-1) ...
Selecting previously unselected package libllvm11:armhf.
Preparing to unpack .../116-libllvm11_1%3a11.0.1-2+rpi1_armhf.deb ...
Unpacking libllvm11:armhf (1:11.0.1-2+rpi1) ...
Selecting previously unselected package libsensors-config.
Preparing to unpack .../117-libsensors-config_1%3a3.6.0-7_all.deb ...
Unpacking libsensors-config (1:3.6.0-7) ...
Selecting previously unselected package libsensors5:armhf.
Preparing to unpack .../118-libsensors5_1%3a3.6.0-7_armhf.deb ...
Unpacking libsensors5:armhf (1:3.6.0-7) ...
Selecting previously unselected package libvulkan1:armhf.
Preparing to unpack .../119-libvulkan1_1.2.189.0-2_armhf.deb ...
Unpacking libvulkan1:armhf (1.2.189.0-2) ...
Selecting previously unselected package libgl1-mesa-dri:armhf.
Preparing to unpack .../120-libgl1-mesa-dri_20.3.5-1+rpi1_armhf.deb ...
Unpacking libgl1-mesa-dri:armhf (20.3.5-1+rpi1) ...
Selecting previously unselected package libglx-mesa0:armhf.
Preparing to unpack .../121-libglx-mesa0_20.3.5-1+rpi1_armhf.deb ...
Unpacking libglx-mesa0:armhf (20.3.5-1+rpi1) ...
Selecting previously unselected package libglx0:armhf.
Preparing to unpack .../122-libglx0_1.3.4-2_armhf.deb ...
Unpacking libglx0:armhf (1.3.4-2) ...
Selecting previously unselected package libgl1:armhf.
Preparing to unpack .../123-libgl1_1.3.4-2_armhf.deb ...
Unpacking libgl1:armhf (1.3.4-2) ...
Selecting previously unselected package xorg-sgml-doctools.
Preparing to unpack .../124-xorg-sgml-doctools_1%3a1.11-1.1_all.deb ...
Unpacking xorg-sgml-doctools (1:1.11-1.1) ...
Selecting previously unselected package x11proto-dev.
Preparing to unpack .../125-x11proto-dev_2021.5-1_all.deb ...
Unpacking x11proto-dev (2021.5-1) ...
Selecting previously unselected package libxau-dev:armhf.
Preparing to unpack .../126-libxau-dev_1%3a1.0.9-1_armhf.deb ...
Unpacking libxau-dev:armhf (1:1.0.9-1) ...
Selecting previously unselected package libxdmcp-dev:armhf.
Preparing to unpack .../127-libxdmcp-dev_1%3a1.1.2-3_armhf.deb ...
Unpacking libxdmcp-dev:armhf (1:1.1.2-3) ...
Selecting previously unselected package xtrans-dev.
Preparing to unpack .../128-xtrans-dev_1.4.0-1_all.deb ...
Unpacking xtrans-dev (1.4.0-1) ...
Selecting previously unselected package libpthread-stubs0-dev:armhf.
Preparing to unpack .../129-libpthread-stubs0-dev_0.4-1_armhf.deb ...
Unpacking libpthread-stubs0-dev:armhf (0.4-1) ...
Selecting previously unselected package libxcb1-dev:armhf.
Preparing to unpack .../130-libxcb1-dev_1.14-3_armhf.deb ...
Unpacking libxcb1-dev:armhf (1.14-3) ...
Selecting previously unselected package libx11-dev:armhf.
Preparing to unpack .../131-libx11-dev_2%3a1.7.2-2_armhf.deb ...
Unpacking libx11-dev:armhf (2:1.7.2-2) ...
Selecting previously unselected package libglx-dev:armhf.
Preparing to unpack .../132-libglx-dev_1.3.4-2_armhf.deb ...
Unpacking libglx-dev:armhf (1.3.4-2) ...
Selecting previously unselected package libgl-dev:armhf.
Preparing to unpack .../133-libgl-dev_1.3.4-2_armhf.deb ...
Unpacking libgl-dev:armhf (1.3.4-2) ...
Selecting previously unselected package libegl-dev:armhf.
Preparing to unpack .../134-libegl-dev_1.3.4-2_armhf.deb ...
Unpacking libegl-dev:armhf (1.3.4-2) ...
Selecting previously unselected package libevdev2:armhf.
Preparing to unpack .../135-libevdev2_1.11.0+dfsg-1+rpi1_armhf.deb ...
Unpacking libevdev2:armhf (1.11.0+dfsg-1+rpi1) ...
Selecting previously unselected package libffi-dev:armhf.
Preparing to unpack .../136-libffi-dev_3.3-6_armhf.deb ...
Unpacking libffi-dev:armhf (3.3-6) ...
Selecting previously unselected package libogg0:armhf.
Preparing to unpack .../137-libogg0_1.3.4-0.1_armhf.deb ...
Unpacking libogg0:armhf (1.3.4-0.1) ...
Selecting previously unselected package libflac8:armhf.
Preparing to unpack .../138-libflac8_1.3.3-2_armhf.deb ...
Unpacking libflac8:armhf (1.3.3-2) ...
Selecting previously unselected package libogg-dev:armhf.
Preparing to unpack .../139-libogg-dev_1.3.4-0.1_armhf.deb ...
Unpacking libogg-dev:armhf (1.3.4-0.1) ...
Selecting previously unselected package libflac-dev:armhf.
Preparing to unpack .../140-libflac-dev_1.3.3-2_armhf.deb ...
Unpacking libflac-dev:armhf (1.3.3-2) ...
Selecting previously unselected package libfmt7:armhf.
Preparing to unpack .../141-libfmt7_7.1.3+ds1-5_armhf.deb ...
Unpacking libfmt7:armhf (7.1.3+ds1-5) ...
Selecting previously unselected package libfmt-dev:armhf.
Preparing to unpack .../142-libfmt-dev_7.1.3+ds1-5_armhf.deb ...
Unpacking libfmt-dev:armhf (7.1.3+ds1-5) ...
Selecting previously unselected package libgles1:armhf.
Preparing to unpack .../143-libgles1_1.3.4-2_armhf.deb ...
Unpacking libgles1:armhf (1.3.4-2) ...
Selecting previously unselected package libgles2:armhf.
Preparing to unpack .../144-libgles2_1.3.4-2_armhf.deb ...
Unpacking libgles2:armhf (1.3.4-2) ...
Selecting previously unselected package libgles-dev:armhf.
Preparing to unpack .../145-libgles-dev_1.3.4-2_armhf.deb ...
Unpacking libgles-dev:armhf (1.3.4-2) ...
Selecting previously unselected package libglib2.0-data.
Preparing to unpack .../146-libglib2.0-data_2.68.4-1_all.deb ...
Unpacking libglib2.0-data (2.68.4-1) ...
Selecting previously unselected package libglib2.0-bin.
Preparing to unpack .../147-libglib2.0-bin_2.68.4-1_armhf.deb ...
Unpacking libglib2.0-bin (2.68.4-1) ...
Selecting previously unselected package python3-lib2to3.
Preparing to unpack .../148-python3-lib2to3_3.9.7-1_all.deb ...
Unpacking python3-lib2to3 (3.9.7-1) ...
Selecting previously unselected package python3-distutils.
Preparing to unpack .../149-python3-distutils_3.9.7-1_all.deb ...
Unpacking python3-distutils (3.9.7-1) ...
Selecting previously unselected package libglib2.0-dev-bin.
Preparing to unpack .../150-libglib2.0-dev-bin_2.68.4-1_armhf.deb ...
Unpacking libglib2.0-dev-bin (2.68.4-1) ...
Selecting previously unselected package libsepol1-dev:armhf.
Preparing to unpack .../151-libsepol1-dev_3.1-1_armhf.deb ...
Unpacking libsepol1-dev:armhf (3.1-1) ...
Selecting previously unselected package libpcre2-16-0:armhf.
Preparing to unpack .../152-libpcre2-16-0_10.36-2_armhf.deb ...
Unpacking libpcre2-16-0:armhf (10.36-2) ...
Selecting previously unselected package libpcre2-32-0:armhf.
Preparing to unpack .../153-libpcre2-32-0_10.36-2_armhf.deb ...
Unpacking libpcre2-32-0:armhf (10.36-2) ...
Selecting previously unselected package libpcre2-posix2:armhf.
Preparing to unpack .../154-libpcre2-posix2_10.36-2_armhf.deb ...
Unpacking libpcre2-posix2:armhf (10.36-2) ...
Selecting previously unselected package libpcre2-dev:armhf.
Preparing to unpack .../155-libpcre2-dev_10.36-2_armhf.deb ...
Unpacking libpcre2-dev:armhf (10.36-2) ...
Selecting previously unselected package libselinux1-dev:armhf.
Preparing to unpack .../156-libselinux1-dev_3.1-3_armhf.deb ...
Unpacking libselinux1-dev:armhf (3.1-3) ...
Selecting previously unselected package libmount-dev:armhf.
Preparing to unpack .../157-libmount-dev_2.37.2-1_armhf.deb ...
Unpacking libmount-dev:armhf (2.37.2-1) ...
Selecting previously unselected package libpcre16-3:armhf.
Preparing to unpack .../158-libpcre16-3_2%3a8.39-13_armhf.deb ...
Unpacking libpcre16-3:armhf (2:8.39-13) ...
Selecting previously unselected package libpcre32-3:armhf.
Preparing to unpack .../159-libpcre32-3_2%3a8.39-13_armhf.deb ...
Unpacking libpcre32-3:armhf (2:8.39-13) ...
Selecting previously unselected package libpcrecpp0v5:armhf.
Preparing to unpack .../160-libpcrecpp0v5_2%3a8.39-13_armhf.deb ...
Unpacking libpcrecpp0v5:armhf (2:8.39-13) ...
Selecting previously unselected package libpcre3-dev:armhf.
Preparing to unpack .../161-libpcre3-dev_2%3a8.39-13_armhf.deb ...
Unpacking libpcre3-dev:armhf (2:8.39-13) ...
Selecting previously unselected package zlib1g-dev:armhf.
Preparing to unpack .../162-zlib1g-dev_1%3a1.2.11.dfsg-2_armhf.deb ...
Unpacking zlib1g-dev:armhf (1:1.2.11.dfsg-2) ...
Selecting previously unselected package libglib2.0-dev:armhf.
Preparing to unpack .../163-libglib2.0-dev_2.68.4-1_armhf.deb ...
Unpacking libglib2.0-dev:armhf (2.68.4-1) ...
Selecting previously unselected package libgmpxx4ldbl:armhf.
Preparing to unpack .../164-libgmpxx4ldbl_2%3a6.2.1+dfsg-2_armhf.deb ...
Unpacking libgmpxx4ldbl:armhf (2:6.2.1+dfsg-2) ...
Selecting previously unselected package libgmp-dev:armhf.
Preparing to unpack .../165-libgmp-dev_2%3a6.2.1+dfsg-2_armhf.deb ...
Unpacking libgmp-dev:armhf (2:6.2.1+dfsg-2) ...
Selecting previously unselected package libgraphite2-3:armhf.
Preparing to unpack .../166-libgraphite2-3_1.3.14-1_armhf.deb ...
Unpacking libgraphite2-3:armhf (1.3.14-1) ...
Selecting previously unselected package libunwind8:armhf.
Preparing to unpack .../167-libunwind8_1.3.2-2_armhf.deb ...
Unpacking libunwind8:armhf (1.3.2-2) ...
Selecting previously unselected package libgstreamer1.0-0:armhf.
Preparing to unpack .../168-libgstreamer1.0-0_1.18.5-1_armhf.deb ...
Unpacking libgstreamer1.0-0:armhf (1.18.5-1) ...
Selecting previously unselected package liborc-0.4-0:armhf.
Preparing to unpack .../169-liborc-0.4-0_1%3a0.4.32-1_armhf.deb ...
Unpacking liborc-0.4-0:armhf (1:0.4.32-1) ...
Selecting previously unselected package libgstreamer-plugins-base1.0-0:armhf.
Preparing to unpack .../170-libgstreamer-plugins-base1.0-0_1.18.5-1_armhf.deb ...
Unpacking libgstreamer-plugins-base1.0-0:armhf (1.18.5-1) ...
Selecting previously unselected package libgudev-1.0-0:armhf.
Preparing to unpack .../171-libgudev-1.0-0_237-2_armhf.deb ...
Unpacking libgudev-1.0-0:armhf (237-2) ...
Selecting previously unselected package libwayland-cursor0:armhf.
Preparing to unpack .../172-libwayland-cursor0_1.19.0-2_armhf.deb ...
Unpacking libwayland-cursor0:armhf (1.19.0-2) ...
Selecting previously unselected package libwayland-egl1:armhf.
Preparing to unpack .../173-libwayland-egl1_1.19.0-2_armhf.deb ...
Unpacking libwayland-egl1:armhf (1.19.0-2) ...
Selecting previously unselected package libgstreamer-gl1.0-0:armhf.
Preparing to unpack .../174-libgstreamer-gl1.0-0_1.18.5-1_armhf.deb ...
Unpacking libgstreamer-gl1.0-0:armhf (1.18.5-1) ...
Selecting previously unselected package libharfbuzz0b:armhf.
Preparing to unpack .../175-libharfbuzz0b_2.7.4-1_armhf.deb ...
Unpacking libharfbuzz0b:armhf (2.7.4-1) ...
Selecting previously unselected package x11-common.
Preparing to unpack .../176-x11-common_1%3a7.7+23_all.deb ...
Unpacking x11-common (1:7.7+23) ...
Selecting previously unselected package libice6:armhf.
Preparing to unpack .../177-libice6_2%3a1.0.10-1_armhf.deb ...
Unpacking libice6:armhf (2:1.0.10-1) ...
Selecting previously unselected package libwacom-common.
Preparing to unpack .../178-libwacom-common_1.11-1_all.deb ...
Unpacking libwacom-common (1.11-1) ...
Selecting previously unselected package libwacom2:armhf.
Preparing to unpack .../179-libwacom2_1.11-1_armhf.deb ...
Unpacking libwacom2:armhf (1.11-1) ...
Selecting previously unselected package libinput-bin.
Preparing to unpack .../180-libinput-bin_1.16.4-3_armhf.deb ...
Unpacking libinput-bin (1.16.4-3) ...
Selecting previously unselected package libmtdev1:armhf.
Preparing to unpack .../181-libmtdev1_1.1.6-1_armhf.deb ...
Unpacking libmtdev1:armhf (1.1.6-1) ...
Selecting previously unselected package libinput10:armhf.
Preparing to unpack .../182-libinput10_1.16.4-3_armhf.deb ...
Unpacking libinput10:armhf (1.16.4-3) ...
Selecting previously unselected package libjpeg62-turbo:armhf.
Preparing to unpack .../183-libjpeg62-turbo_1%3a2.0.6-4_armhf.deb ...
Unpacking libjpeg62-turbo:armhf (1:2.0.6-4) ...
Selecting previously unselected package liblzo2-2:armhf.
Preparing to unpack .../184-liblzo2-2_2.10-2_armhf.deb ...
Unpacking liblzo2-2:armhf (2.10-2) ...
Selecting previously unselected package liblzo2-dev:armhf.
Preparing to unpack .../185-liblzo2-dev_2.10-2_armhf.deb ...
Unpacking liblzo2-dev:armhf (2.10-2) ...
Selecting previously unselected package libmatroska7:armhf.
Preparing to unpack .../186-libmatroska7_1.6.3-2_armhf.deb ...
Unpacking libmatroska7:armhf (1.6.3-2) ...
Selecting previously unselected package libmatroska-dev:armhf.
Preparing to unpack .../187-libmatroska-dev_1.6.3-2_armhf.deb ...
Unpacking libmatroska-dev:armhf (1.6.3-2) ...
Selecting previously unselected package libmd4c0:armhf.
Preparing to unpack .../188-libmd4c0_0.4.8-1_armhf.deb ...
Unpacking libmd4c0:armhf (0.4.8-1) ...
Selecting previously unselected package libopus0:armhf.
Preparing to unpack .../189-libopus0_1.3.1-0.1_armhf.deb ...
Unpacking libopus0:armhf (1.3.1-0.1) ...
Selecting previously unselected package libosp5.
Preparing to unpack .../190-libosp5_1.5.2-13_armhf.deb ...
Unpacking libosp5 (1.5.2-13) ...
Selecting previously unselected package libpod-parser-perl.
Preparing to unpack .../191-libpod-parser-perl_1.63-2_all.deb ...
Adding 'diversion of /usr/bin/podselect to /usr/bin/podselect.bundled by libpod-parser-perl'
Adding 'diversion of /usr/share/man/man1/podselect.1.gz to /usr/share/man/man1/podselect.bundled.1.gz by libpod-parser-perl'
Unpacking libpod-parser-perl (1.63-2) ...
Selecting previously unselected package libpugixml1v5:armhf.
Preparing to unpack .../192-libpugixml1v5_1.11.4-1_armhf.deb ...
Unpacking libpugixml1v5:armhf (1.11.4-1) ...
Selecting previously unselected package libpugixml-dev:armhf.
Preparing to unpack .../193-libpugixml-dev_1.11.4-1_armhf.deb ...
Unpacking libpugixml-dev:armhf (1.11.4-1) ...
Selecting previously unselected package libvorbis0a:armhf.
Preparing to unpack .../194-libvorbis0a_1.3.7-1_armhf.deb ...
Unpacking libvorbis0a:armhf (1.3.7-1) ...
Selecting previously unselected package libvorbisenc2:armhf.
Preparing to unpack .../195-libvorbisenc2_1.3.7-1_armhf.deb ...
Unpacking libvorbisenc2:armhf (1.3.7-1) ...
Selecting previously unselected package libsndfile1:armhf.
Preparing to unpack .../196-libsndfile1_1.0.31-2_armhf.deb ...
Unpacking libsndfile1:armhf (1.0.31-2) ...
Selecting previously unselected package libwrap0:armhf.
Preparing to unpack .../197-libwrap0_7.6.q-31_armhf.deb ...
Unpacking libwrap0:armhf (7.6.q-31) ...
Selecting previously unselected package libpulse0:armhf.
Preparing to unpack .../198-libpulse0_14.2-2_armhf.deb ...
Unpacking libpulse0:armhf (14.2-2) ...
Selecting previously unselected package shared-mime-info.
Preparing to unpack .../199-shared-mime-info_2.0-1_armhf.deb ...
Unpacking shared-mime-info (2.0-1) ...
Selecting previously unselected package libqt5core5a:armhf.
Preparing to unpack .../200-libqt5core5a_5.15.2+dfsg-10+rpi1_armhf.deb ...
Unpacking libqt5core5a:armhf (5.15.2+dfsg-10+rpi1) ...
Selecting previously unselected package libqt5concurrent5:armhf.
Preparing to unpack .../201-libqt5concurrent5_5.15.2+dfsg-10+rpi1_armhf.deb ...
Unpacking libqt5concurrent5:armhf (5.15.2+dfsg-10+rpi1) ...
Selecting previously unselected package libqt5dbus5:armhf.
Preparing to unpack .../202-libqt5dbus5_5.15.2+dfsg-10+rpi1_armhf.deb ...
Unpacking libqt5dbus5:armhf (5.15.2+dfsg-10+rpi1) ...
Selecting previously unselected package libqt5network5:armhf.
Preparing to unpack .../203-libqt5network5_5.15.2+dfsg-10+rpi1_armhf.deb ...
Unpacking libqt5network5:armhf (5.15.2+dfsg-10+rpi1) ...
Selecting previously unselected package libsm6:armhf.
Preparing to unpack .../204-libsm6_2%3a1.2.3-1_armhf.deb ...
Unpacking libsm6:armhf (2:1.2.3-1) ...
Selecting previously unselected package libxcb-icccm4:armhf.
Preparing to unpack .../205-libxcb-icccm4_0.4.1-1.1_armhf.deb ...
Unpacking libxcb-icccm4:armhf (0.4.1-1.1) ...
Selecting previously unselected package libxcb-util1:armhf.
Preparing to unpack .../206-libxcb-util1_0.4.0-1_armhf.deb ...
Unpacking libxcb-util1:armhf (0.4.0-1) ...
Selecting previously unselected package libxcb-image0:armhf.
Preparing to unpack .../207-libxcb-image0_0.4.0-1+b3_armhf.deb ...
Unpacking libxcb-image0:armhf (0.4.0-1+b3) ...
Selecting previously unselected package libxcb-keysyms1:armhf.
Preparing to unpack .../208-libxcb-keysyms1_0.4.0-1+b2_armhf.deb ...
Unpacking libxcb-keysyms1:armhf (0.4.0-1+b2) ...
Selecting previously unselected package libxcb-randr0:armhf.
Preparing to unpack .../209-libxcb-randr0_1.14-3_armhf.deb ...
Unpacking libxcb-randr0:armhf (1.14-3) ...
Selecting previously unselected package libxcb-render0:armhf.
Preparing to unpack .../210-libxcb-render0_1.14-3_armhf.deb ...
Unpacking libxcb-render0:armhf (1.14-3) ...
Selecting previously unselected package libxcb-render-util0:armhf.
Preparing to unpack .../211-libxcb-render-util0_0.3.9-1+b1_armhf.deb ...
Unpacking libxcb-render-util0:armhf (0.3.9-1+b1) ...
Selecting previously unselected package libxcb-shape0:armhf.
Preparing to unpack .../212-libxcb-shape0_1.14-3_armhf.deb ...
Unpacking libxcb-shape0:armhf (1.14-3) ...
Selecting previously unselected package libxcb-xinerama0:armhf.
Preparing to unpack .../213-libxcb-xinerama0_1.14-3_armhf.deb ...
Unpacking libxcb-xinerama0:armhf (1.14-3) ...
Selecting previously unselected package libxcb-xinput0:armhf.
Preparing to unpack .../214-libxcb-xinput0_1.14-3_armhf.deb ...
Unpacking libxcb-xinput0:armhf (1.14-3) ...
Selecting previously unselected package libxcb-xkb1:armhf.
Preparing to unpack .../215-libxcb-xkb1_1.14-3_armhf.deb ...
Unpacking libxcb-xkb1:armhf (1.14-3) ...
Selecting previously unselected package xkb-data.
Preparing to unpack .../216-xkb-data_2.33-1_all.deb ...
Unpacking xkb-data (2.33-1) ...
Selecting previously unselected package libxkbcommon0:armhf.
Preparing to unpack .../217-libxkbcommon0_1.0.3-2_armhf.deb ...
Unpacking libxkbcommon0:armhf (1.0.3-2) ...
Selecting previously unselected package libxkbcommon-x11-0:armhf.
Preparing to unpack .../218-libxkbcommon-x11-0_1.0.3-2_armhf.deb ...
Unpacking libxkbcommon-x11-0:armhf (1.0.3-2) ...
Selecting previously unselected package libxrender1:armhf.
Preparing to unpack .../219-libxrender1_1%3a0.9.10-1_armhf.deb ...
Unpacking libxrender1:armhf (1:0.9.10-1) ...
Selecting previously unselected package libqt5gui5:armhf.
Preparing to unpack .../220-libqt5gui5_5.15.2+dfsg-10+rpi1_armhf.deb ...
Unpacking libqt5gui5:armhf (5.15.2+dfsg-10+rpi1) ...
Selecting previously unselected package libqt5multimedia5:armhf.
Preparing to unpack .../221-libqt5multimedia5_5.15.2-3_armhf.deb ...
Unpacking libqt5multimedia5:armhf (5.15.2-3) ...
Selecting previously unselected package libqt5widgets5:armhf.
Preparing to unpack .../222-libqt5widgets5_5.15.2+dfsg-10+rpi1_armhf.deb ...
Unpacking libqt5widgets5:armhf (5.15.2+dfsg-10+rpi1) ...
Selecting previously unselected package libqt5multimediawidgets5:armhf.
Preparing to unpack .../223-libqt5multimediawidgets5_5.15.2-3_armhf.deb ...
Unpacking libqt5multimediawidgets5:armhf (5.15.2-3) ...
Selecting previously unselected package libqt5multimediagsttools5:armhf.
Preparing to unpack .../224-libqt5multimediagsttools5_5.15.2-3_armhf.deb ...
Unpacking libqt5multimediagsttools5:armhf (5.15.2-3) ...
Selecting previously unselected package libqt5qml5:armhf.
Preparing to unpack .../225-libqt5qml5_5.15.2+dfsg-8+rpi1_armhf.deb ...
Unpacking libqt5qml5:armhf (5.15.2+dfsg-8+rpi1) ...
Selecting previously unselected package libqt5qmlmodels5:armhf.
Preparing to unpack .../226-libqt5qmlmodels5_5.15.2+dfsg-8+rpi1_armhf.deb ...
Unpacking libqt5qmlmodels5:armhf (5.15.2+dfsg-8+rpi1) ...
Selecting previously unselected package libqt5quick5:armhf.
Preparing to unpack .../227-libqt5quick5_5.15.2+dfsg-8+rpi1_armhf.deb ...
Unpacking libqt5quick5:armhf (5.15.2+dfsg-8+rpi1) ...
Selecting previously unselected package libqt5multimediaquick5:armhf.
Preparing to unpack .../228-libqt5multimediaquick5_5.15.2-3_armhf.deb ...
Unpacking libqt5multimediaquick5:armhf (5.15.2-3) ...
Selecting previously unselected package libqt5printsupport5:armhf.
Preparing to unpack .../229-libqt5printsupport5_5.15.2+dfsg-10+rpi1_armhf.deb ...
Unpacking libqt5printsupport5:armhf (5.15.2+dfsg-10+rpi1) ...
Selecting previously unselected package libqt5sql5:armhf.
Preparing to unpack .../230-libqt5sql5_5.15.2+dfsg-10+rpi1_armhf.deb ...
Unpacking libqt5sql5:armhf (5.15.2+dfsg-10+rpi1) ...
Selecting previously unselected package libqt5test5:armhf.
Preparing to unpack .../231-libqt5test5_5.15.2+dfsg-10+rpi1_armhf.deb ...
Unpacking libqt5test5:armhf (5.15.2+dfsg-10+rpi1) ...
Selecting previously unselected package libqt5xml5:armhf.
Preparing to unpack .../232-libqt5xml5_5.15.2+dfsg-10+rpi1_armhf.deb ...
Unpacking libqt5xml5:armhf (5.15.2+dfsg-10+rpi1) ...
Selecting previously unselected package rubygems-integration.
Preparing to unpack .../233-rubygems-integration_1.18_all.deb ...
Unpacking rubygems-integration (1.18) ...
Selecting previously unselected package ruby2.7.
Preparing to unpack .../234-ruby2.7_2.7.4-1_armhf.deb ...
Unpacking ruby2.7 (2.7.4-1) ...
Selecting previously unselected package ruby-rubygems.
Preparing to unpack .../235-ruby-rubygems_3.2.5-2_all.deb ...
Unpacking ruby-rubygems (3.2.5-2) ...
Selecting previously unselected package ruby.
Preparing to unpack .../236-ruby_1%3a2.7+2_armhf.deb ...
Unpacking ruby (1:2.7+2) ...
Selecting previously unselected package rake.
Preparing to unpack .../237-rake_13.0.3-1_all.deb ...
Unpacking rake (13.0.3-1) ...
Selecting previously unselected package ruby-minitest.
Preparing to unpack .../238-ruby-minitest_5.13.0-1_all.deb ...
Unpacking ruby-minitest (5.13.0-1) ...
Selecting previously unselected package ruby-net-telnet.
Preparing to unpack .../239-ruby-net-telnet_0.1.1-2_all.deb ...
Unpacking ruby-net-telnet (0.1.1-2) ...
Selecting previously unselected package ruby-power-assert.
Preparing to unpack .../240-ruby-power-assert_1.1.7-2_all.deb ...
Unpacking ruby-power-assert (1.1.7-2) ...
Selecting previously unselected package ruby-test-unit.
Preparing to unpack .../241-ruby-test-unit_3.3.9-1_all.deb ...
Unpacking ruby-test-unit (3.3.9-1) ...
Selecting previously unselected package ruby-xmlrpc.
Preparing to unpack .../242-ruby-xmlrpc_0.3.0-2_all.deb ...
Unpacking ruby-xmlrpc (0.3.0-2) ...
Selecting previously unselected package libyaml-0-2:armhf.
Preparing to unpack .../243-libyaml-0-2_0.2.2-1_armhf.deb ...
Unpacking libyaml-0-2:armhf (0.2.2-1) ...
Selecting previously unselected package libruby2.7:armhf.
Preparing to unpack .../244-libruby2.7_2.7.4-1_armhf.deb ...
Unpacking libruby2.7:armhf (2.7.4-1) ...
Selecting previously unselected package libsgmls-perl.
Preparing to unpack .../245-libsgmls-perl_1.03ii-36_all.deb ...
Unpacking libsgmls-perl (1.03ii-36) ...
Selecting previously unselected package libutfcpp-dev.
Preparing to unpack .../246-libutfcpp-dev_2.3.4-1.1_armhf.deb ...
Unpacking libutfcpp-dev (2.3.4-1.1) ...
Selecting previously unselected package libvorbisfile3:armhf.
Preparing to unpack .../247-libvorbisfile3_1.3.7-1_armhf.deb ...
Unpacking libvorbisfile3:armhf (1.3.7-1) ...
Selecting previously unselected package libvorbis-dev:armhf.
Preparing to unpack .../248-libvorbis-dev_1.3.7-1_armhf.deb ...
Unpacking libvorbis-dev:armhf (1.3.7-1) ...
Selecting previously unselected package libvulkan-dev:armhf.
Preparing to unpack .../249-libvulkan-dev_1.2.189.0-2_armhf.deb ...
Unpacking libvulkan-dev:armhf (1.2.189.0-2) ...
Selecting previously unselected package libxext-dev:armhf.
Preparing to unpack .../250-libxext-dev_2%3a1.3.4-1_armhf.deb ...
Unpacking libxext-dev:armhf (2:1.3.4-1) ...
Selecting previously unselected package libxslt1.1:armhf.
Preparing to unpack .../251-libxslt1.1_1.1.34-4_armhf.deb ...
Unpacking libxslt1.1:armhf (1.1.34-4) ...
Selecting previously unselected package libyaml-tiny-perl.
Preparing to unpack .../252-libyaml-tiny-perl_1.73-1_all.deb ...
Unpacking libyaml-tiny-perl (1.73-1) ...
Selecting previously unselected package nlohmann-json3-dev.
Preparing to unpack .../253-nlohmann-json3-dev_3.9.1-1_all.deb ...
Unpacking nlohmann-json3-dev (3.9.1-1) ...
Selecting previously unselected package opensp.
Preparing to unpack .../254-opensp_1.5.2-13_armhf.deb ...
Unpacking opensp (1.5.2-13) ...
Selecting previously unselected package po4a.
Preparing to unpack .../255-po4a_0.62-1_all.deb ...
Unpacking po4a (0.62-1) ...
Selecting previously unselected package qt5-qmake-bin.
Preparing to unpack .../256-qt5-qmake-bin_5.15.2+dfsg-10+rpi1_armhf.deb ...
Unpacking qt5-qmake-bin (5.15.2+dfsg-10+rpi1) ...
Selecting previously unselected package qtchooser.
Preparing to unpack .../257-qtchooser_66-2_armhf.deb ...
Unpacking qtchooser (66-2) ...
Selecting previously unselected package qt5-qmake:armhf.
Preparing to unpack .../258-qt5-qmake_5.15.2+dfsg-10+rpi1_armhf.deb ...
Unpacking qt5-qmake:armhf (5.15.2+dfsg-10+rpi1) ...
Selecting previously unselected package qtbase5-dev-tools.
Preparing to unpack .../259-qtbase5-dev-tools_5.15.2+dfsg-10+rpi1_armhf.deb ...
Unpacking qtbase5-dev-tools (5.15.2+dfsg-10+rpi1) ...
Selecting previously unselected package qtbase5-dev:armhf.
Preparing to unpack .../260-qtbase5-dev_5.15.2+dfsg-10+rpi1_armhf.deb ...
Unpacking qtbase5-dev:armhf (5.15.2+dfsg-10+rpi1) ...
Selecting previously unselected package qtmultimedia5-dev:armhf.
Preparing to unpack .../261-qtmultimedia5-dev_5.15.2-3_armhf.deb ...
Unpacking qtmultimedia5-dev:armhf (5.15.2-3) ...
Selecting previously unselected package xsltproc.
Preparing to unpack .../262-xsltproc_1.1.34-4_armhf.deb ...
Unpacking xsltproc (1.1.34-4) ...
Selecting previously unselected package sbuild-build-depends-mkvtoolnix-dummy.
Preparing to unpack .../263-sbuild-build-depends-mkvtoolnix-dummy_0.invalid.0_armhf.deb ...
Unpacking sbuild-build-depends-mkvtoolnix-dummy (0.invalid.0) ...
Setting up media-types (4.0.0) ...
Setting up libpcrecpp0v5:armhf (2:8.39-13) ...
Setting up libpipeline1:armhf (1.5.3-1) ...
Setting up libboost-system1.74.0:armhf (1.74.0-9) ...
Setting up libgraphite2-3:armhf (1.3.14-1) ...
Setting up libwayland-server0:armhf (1.19.0-2) ...
Setting up libebml5:armhf (1.4.2-1) ...
Setting up libxau6:armhf (1:1.0.9-1) ...
Setting up libdouble-conversion3:armhf (3.1.5-6.1) ...
Setting up libsgmls-perl (1.03ii-36) ...
Setting up libpsl5:armhf (0.21.0-1.2) ...
Setting up libboost1.74-dev:armhf (1.74.0-9) ...
Setting up libogg0:armhf (1.3.4-0.1) ...
Setting up bsdextrautils (2.37.2-1) ...
update-alternatives: using /usr/bin/write.ul to provide /usr/bin/write (write) in auto mode
Setting up libpcre16-3:armhf (2:8.39-13) ...
Setting up libicu67:armhf (67.1-7) ...
Setting up ruby-power-assert (1.1.7-2) ...
Setting up libmagic-mgc (1:5.39-3) ...
Setting up libarchive-zip-perl (1.68-1) ...
Setting up libyaml-0-2:armhf (0.2.2-1) ...
Setting up libglib2.0-0:armhf (2.68.4-1) ...
No schema files found: doing nothing.
Setting up libglvnd0:armhf (1.3.4-2) ...
Setting up libdebhelper-perl (13.5.1) ...
Setting up libbrotli1:armhf (1.0.9-2+b1) ...
Setting up x11-common (1:7.7+23) ...
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of restart.
Setting up libsensors-config (1:3.6.0-7) ...
Setting up libnghttp2-14:armhf (1.43.0-1) ...
Setting up libmagic1:armhf (1:5.39-3) ...
Setting up libsepol1-dev:armhf (3.1-1) ...
Setting up gettext-base (0.21-4) ...
Setting up xkb-data (2.33-1) ...
Setting up liblzo2-2:armhf (2.10-2) ...
Setting up libboost-filesystem1.74.0:armhf (1.74.0-9) ...
Setting up autoconf-archive (20210219-2) ...
Setting up file (1:5.39-3) ...
Setting up libogg-dev:armhf (1.3.4-0.1) ...
Setting up libffi-dev:armhf (3.3-6) ...
Setting up libunwind8:armhf (1.3.2-2) ...
Setting up libyaml-tiny-perl (1.73-1) ...
Setting up libpthread-stubs0-dev:armhf (0.4-1) ...
Setting up libpcre2-16-0:armhf (10.36-2) ...
Setting up libcap2:armhf (1:2.44-1) ...
Setting up libpugixml1v5:armhf (1.11.4-1) ...
Setting up libflac8:armhf (1.3.3-2) ...
Setting up libosp5 (1.5.2-13) ...
Setting up libcap2-bin (1:2.44-1) ...
Setting up ruby-minitest (5.13.0-1) ...
Setting up libasound2-data (1.2.5.1-1) ...
Setting up xtrans-dev (1.4.0-1) ...
Setting up autotools-dev (20180224.1+nmu1) ...
Setting up libz3-4:armhf (4.8.12-1) ...
Setting up libpcre2-32-0:armhf (10.36-2) ...
Setting up libglib2.0-data (2.68.4-1) ...
Setting up libutfcpp-dev (2.3.4-1.1) ...
Setting up libgmpxx4ldbl:armhf (2:6.2.1+dfsg-2) ...
Setting up libgles2:armhf (1.3.4-2) ...
Setting up libjpeg62-turbo:armhf (1:2.0.6-4) ...
Setting up libdvdread8:armhf (6.1.2-1) ...
Setting up qt5-qmake-bin (5.15.2+dfsg-10+rpi1) ...
Setting up ruby-test-unit (3.3.9-1) ...
Setting up libwrap0:armhf (7.6.q-31) ...
Setting up libx11-data (2:1.7.2-2) ...
Setting up librtmp1:armhf (2.4+20151223.gitfa8646d.1-2+b2) ...
Setting up uuid-dev:armhf (2.37.2-1) ...
Setting up libavahi-common-data:armhf (0.8-5) ...
Setting up libboost-system1.74-dev:armhf (1.74.0-9) ...
Setting up libgles1:armhf (1.3.4-2) ...
Setting up libdbus-1-3:armhf (1.12.20-2) ...
Setting up ruby-net-telnet (0.1.1-2) ...
Setting up libsigsegv2:armhf (2.13-1) ...
Setting up libopus0:armhf (1.3.1-0.1) ...
Setting up libpng16-16:armhf (1.6.37-3) ...
Setting up libpcre32-3:armhf (2:8.39-13) ...
Setting up libvorbis0a:armhf (1.3.7-1) ...
Setting up liborc-0.4-0:armhf (1:0.4.32-1) ...
Setting up libpod-parser-perl (1.63-2) ...
Setting up autopoint (0.21-4) ...
Setting up pkg-config (0.29.2-1) ...
Setting up fonts-dejavu-core (2.37-2) ...
Setting up libpcre2-posix2:armhf (10.36-2) ...
Setting up libsensors5:armhf (1:3.6.0-7) ...
Setting up libglapi-mesa:armhf (20.3.5-1+rpi1) ...
Setting up libmtdev1:armhf (1.1.6-1) ...
Setting up libvulkan1:armhf (1.2.189.0-2) ...
Setting up libboost-math1.74.0:armhf (1.74.0-9) ...
Setting up liblzo2-dev:armhf (2.10-2) ...
Setting up libboost-serialization1.74.0:armhf (1.74.0-9) ...
Setting up zlib1g-dev:armhf (1:1.2.11.dfsg-2) ...
Setting up libcmark0.30.1:armhf (0.30.1-2) ...
Setting up libmd0:armhf (1.0.3-3) ...
Setting up sensible-utils (0.0.17) ...
Setting up libasyncns0:armhf (0.8-6) ...
Setting up libxshmfence1:armhf (1.3-1) ...
Setting up libmatroska7:armhf (1.6.3-2) ...
Setting up libebml-dev:armhf (1.4.2-1) ...
Setting up libuchardet0:armhf (0.0.7-1) ...
Setting up libasound2:armhf (1.2.5.1-1) ...
Setting up libmpdec3:armhf (2.5.1-2+rpi1) ...
Setting up libfmt7:armhf (7.1.3+ds1-5) ...
Setting up libmd4c0:armhf (0.4.8-1) ...
Setting up libsub-override-perl (0.09-2) ...
Setting up libssh2-1:armhf (1.9.0-3) ...
Setting up xorg-sgml-doctools (1:1.11-1.1) ...
Setting up sgml-base (1.30) ...
Setting up libboost-math1.74-dev:armhf (1.74.0-9) ...
Setting up libwayland-egl1:armhf (1.19.0-2) ...
Setting up libboost-filesystem1.74-dev:armhf (1.74.0-9) ...
Setting up nlohmann-json3-dev (3.9.1-1) ...
Setting up libboost-date-time1.74.0:armhf (1.74.0-9) ...
Setting up openssl (1.1.1l-1) ...
Setting up libbsd0:armhf (0.11.3-1) ...
Setting up libdrm-common (2.4.107-2+rpi1) ...
Setting up libelf1:armhf (0.185-2) ...
Setting up libevdev2:armhf (1.11.0+dfsg-1+rpi1) ...
Setting up ruby-xmlrpc (0.3.0-2) ...
Setting up libxml2:armhf (2.9.10+dfsg-6.7) ...
Setting up iso-codes (4.7.0-1) ...
Setting up libboost-filesystem-dev:armhf (1.74.0.3+b1) ...
Setting up libgudev-1.0-0:armhf (237-2) ...
Setting up qtchooser (66-2) ...
Setting up libvorbisenc2:armhf (1.3.7-1) ...
Setting up libpython3.9-stdlib:armhf (3.9.7-2+rpi1) ...
Setting up libpython3-stdlib:armhf (3.9.2-3) ...
Setting up libwacom-common (1.11-1) ...
Setting up libbz2-dev:armhf (1.0.8-4) ...
Setting up libxkbcommon0:armhf (1.0.3-2) ...
Setting up libwayland-client0:armhf (1.19.0-2) ...
Setting up x11proto-dev (2021.5-1) ...
Setting up libfile-stripnondeterminism-perl (1.12.0-1) ...
Setting up libblkid-dev:armhf (2.37.2-1) ...
Setting up libice6:armhf (2:1.0.10-1) ...
Setting up libdw1:armhf (0.185-2) ...
Setting up libxdmcp6:armhf (1:1.1.2-3) ...
Setting up libflac-dev:armhf (1.3.3-2) ...
Setting up libvulkan-dev:armhf (1.2.189.0-2) ...
Setting up libxcb1:armhf (1.14-3) ...
Setting up gettext (0.21-4) ...
Setting up libgmp-dev:armhf (2:6.2.1+dfsg-2) ...
Setting up libxcb-xfixes0:armhf (1.14-3) ...
Setting up libxau-dev:armhf (1:1.0.9-1) ...
Setting up qt5-qmake:armhf (5.15.2+dfsg-10+rpi1) ...
Setting up libpcre2-dev:armhf (10.36-2) ...
Setting up libxcb-xinput0:armhf (1.14-3) ...
Setting up libtool (2.4.6-15) ...
Setting up libdvdread-dev:armhf (6.1.2-1) ...
Setting up libxcb-render0:armhf (1.14-3) ...
Setting up libselinux1-dev:armhf (3.1-3) ...
Setting up libpcre3-dev:armhf (2:8.39-13) ...
Setting up libmatroska-dev:armhf (1.6.3-2) ...
Setting up libboost-math-dev:armhf (1.74.0.3+b1) ...
Setting up libxcb-glx0:armhf (1.14-3) ...
Setting up libedit2:armhf (3.1-20210910-1) ...
Setting up libpugixml-dev:armhf (1.11.4-1) ...
Setting up libxcb-keysyms1:armhf (0.4.0-1+b2) ...
Setting up libxcb-shape0:armhf (1.14-3) ...
Setting up libavahi-common3:armhf (0.8-5) ...
Setting up libglib2.0-bin (2.68.4-1) ...
Setting up m4 (1.4.18-5) ...
Setting up libxcb-render-util0:armhf (0.3.9-1+b1) ...
Setting up libcurl3-gnutls:armhf (7.74.0-1.3) ...
Setting up libxcb-shm0:armhf (1.14-3) ...
Setting up libxcb-icccm4:armhf (0.4.1-1.1) ...
Setting up opensp (1.5.2-13) ...
Setting up libcurl4-gnutls-dev:armhf (7.74.0-1.3) ...
Setting up libxcb-util1:armhf (0.4.0-1) ...
Setting up libxcb-xkb1:armhf (1.14-3) ...
Setting up libxcb-image0:armhf (0.4.0-1+b3) ...
Setting up intltool-debian (0.35.0+20060710.5) ...
Setting up libxcb-present0:armhf (1.14-3) ...
Setting up ca-certificates (20210119) ...
Updating certificates in /etc/ssl/certs...
129 added, 0 removed; done.
Setting up libvorbisfile3:armhf (1.3.7-1) ...
Setting up libxdmcp-dev:armhf (1:1.1.2-3) ...
Setting up libxcb-xinerama0:armhf (1.14-3) ...
Setting up libllvm11:armhf (1:11.0.1-2+rpi1) ...
Setting up libfreetype6:armhf (2.10.4+dfsg-1) ...
Setting up libxcb-sync1:armhf (1.14-3) ...
Setting up libcmark-dev:armhf (0.30.1-2) ...
Setting up shared-mime-info (2.0-1) ...
Setting up libxkbcommon-x11-0:armhf (1.0.3-2) ...
Setting up libfmt-dev:armhf (7.1.3+ds1-5) ...
Setting up ucf (3.0043) ...
Setting up libqt5core5a:armhf (5.15.2+dfsg-10+rpi1) ...
Setting up autoconf (2.71-2) ...
Setting up libboost-serialization1.74-dev:armhf (1.74.0-9) ...
Setting up libxcb-dri2-0:armhf (1.14-3) ...
Setting up dh-strip-nondeterminism (1.12.0-1) ...
Setting up libdrm2:armhf (2.4.107-2+rpi1) ...
Setting up dwz (0.14-1) ...
Setting up groff-base (1.22.4-7) ...
Setting up libqt5dbus5:armhf (5.15.2+dfsg-10+rpi1) ...
Setting up libwayland-cursor0:armhf (1.19.0-2) ...
Setting up libxcb-randr0:armhf (1.14-3) ...
Setting up xml-core (0.18+nmu1) ...
Setting up libxslt1.1:armhf (1.1.34-4) ...
Setting up libx11-6:armhf (2:1.7.2-2) ...
Setting up libharfbuzz0b:armhf (2.7.4-1) ...
Setting up libsndfile1:armhf (1.0.31-2) ...
Setting up libqt5test5:armhf (5.15.2+dfsg-10+rpi1) ...
Setting up libwacom2:armhf (1.11-1) ...
Setting up libsm6:armhf (2:1.2.3-1) ...
Setting up libqt5concurrent5:armhf (5.15.2+dfsg-10+rpi1) ...
Setting up libavahi-client3:armhf (0.8-5) ...
Setting up libmount-dev:armhf (2.37.2-1) ...
Setting up libgstreamer1.0-0:armhf (1.18.5-1) ...
Setcap worked! gst-ptp-helper is not suid!
Setting up python3.9 (3.9.7-2+rpi1) ...
Setting up libdrm-amdgpu1:armhf (2.4.107-2+rpi1) ...
Setting up automake (1:1.16.4-2) ...
update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode
Setting up libvorbis-dev:armhf (1.3.7-1) ...
Setting up libxcb-dri3-0:armhf (1.14-3) ...
Setting up libx11-xcb1:armhf (2:1.7.2-2) ...
Setting up libdrm-nouveau2:armhf (2.4.107-2+rpi1) ...
Setting up libxdamage1:armhf (1:1.1.5-2) ...
Setting up po4a (0.62-1) ...
Setting up libxcb1-dev:armhf (1.14-3) ...
Setting up libxrender1:armhf (1:0.9.10-1) ...
Setting up libgbm1:armhf (20.3.5-1+rpi1) ...
Setting up libpulse0:armhf (14.2-2) ...
Setting up libdrm-radeon1:armhf (2.4.107-2+rpi1) ...
Setting up fontconfig-config (2.13.1-4.2) ...
Setting up po-debconf (1.0.21+nmu1) ...
Setting up libgl1-mesa-dri:armhf (20.3.5-1+rpi1) ...
Setting up xsltproc (1.1.34-4) ...
Setting up libx11-dev:armhf (2:1.7.2-2) ...
Setting up libxext6:armhf (2:1.3.4-1) ...
Setting up libgstreamer-plugins-base1.0-0:armhf (1.18.5-1) ...
Setting up python3 (3.9.2-3) ...
Setting up rubygems-integration (1.18) ...
Setting up man-db (2.9.4-2) ...
Not building database; man-db/auto-update is not 'true'.
Setting up libqt5network5:armhf (5.15.2+dfsg-10+rpi1) ...
Setting up libxxf86vm1:armhf (1:1.1.4-1+b2) ...
Setting up libinput-bin (1.16.4-3) ...
Setting up libqt5sql5:armhf (5.15.2+dfsg-10+rpi1) ...
Setting up dh-autoreconf (20) ...
Setting up libboost-date-time1.74-dev:armhf (1.74.0-9) ...
Setting up qtbase5-dev-tools (5.15.2+dfsg-10+rpi1) ...
Setting up libqt5xml5:armhf (5.15.2+dfsg-10+rpi1) ...
Setting up libegl-mesa0:armhf (20.3.5-1+rpi1) ...
Setting up libxfixes3:armhf (1:5.0.3-2) ...
Setting up libqt5qml5:armhf (5.15.2+dfsg-8+rpi1) ...
Setting up libboost-date-time-dev:armhf (1.74.0.3+b1) ...
Setting up libxext-dev:armhf (2:1.3.4-1) ...
Setting up libcups2:armhf (2.3.3op2-7) ...
Setting up libegl1:armhf (1.3.4-2) ...
Setting up libfontconfig1:armhf (2.13.1-4.2) ...
Setting up python3-lib2to3 (3.9.7-1) ...
Setting up python3-distutils (3.9.7-1) ...
Setting up libglib2.0-dev-bin (2.68.4-1) ...
Setting up libinput10:armhf (1.16.4-3) ...
Setting up fontconfig (2.13.1-4.2) ...
Regenerating fonts cache... done.
Setting up libqt5qmlmodels5:armhf (5.15.2+dfsg-8+rpi1) ...
Setting up libglx-mesa0:armhf (20.3.5-1+rpi1) ...
Setting up libglx0:armhf (1.3.4-2) ...
Setting up libqt5gui5:armhf (5.15.2+dfsg-10+rpi1) ...
Setting up debhelper (13.5.1) ...
Setting up libqt5widgets5:armhf (5.15.2+dfsg-10+rpi1) ...
Setting up libqt5multimedia5:armhf (5.15.2-3) ...
Setting up libqt5printsupport5:armhf (5.15.2+dfsg-10+rpi1) ...
Setting up libgl1:armhf (1.3.4-2) ...
Setting up libglib2.0-dev:armhf (2.68.4-1) ...
Setting up libqt5multimediawidgets5:armhf (5.15.2-3) ...
Setting up libglx-dev:armhf (1.3.4-2) ...
Setting up libqt5quick5:armhf (5.15.2+dfsg-8+rpi1) ...
Setting up libgl-dev:armhf (1.3.4-2) ...
Setting up libegl-dev:armhf (1.3.4-2) ...
Setting up libgstreamer-gl1.0-0:armhf (1.18.5-1) ...
Setting up libqt5multimediagsttools5:armhf (5.15.2-3) ...
Setting up libqt5multimediaquick5:armhf (5.15.2-3) ...
Setting up libgles-dev:armhf (1.3.4-2) ...
Setting up qtbase5-dev:armhf (5.15.2+dfsg-10+rpi1) ...
Setting up qtmultimedia5-dev:armhf (5.15.2-3) ...
Setting up ruby2.7 (2.7.4-1) ...
Setting up ruby-rubygems (3.2.5-2) ...
Setting up ruby (1:2.7+2) ...
Setting up rake (13.0.3-1) ...
Setting up libruby2.7:armhf (2.7.4-1) ...
Processing triggers for libc-bin (2.31-13+rpi1) ...
Processing triggers for sgml-base (1.30) ...
Setting up docbook-xsl (1.79.2+dfsg-1) ...
Setting up sbuild-build-depends-mkvtoolnix-dummy (0.invalid.0) ...
Processing triggers for ca-certificates (20210119) ...
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
W: No sandbox user '_apt' on the system, can not drop privileges
+------------------------------------------------------------------------------+
| Build environment |
+------------------------------------------------------------------------------+
Kernel: Linux 4.15.0-76-generic armhf (armv8l)
Toolchain package versions: binutils_2.35.2-2+rpi1 dpkg-dev_1.20.9+rpi1 g++-10_10.2.1-6+rpi1 gcc-10_10.2.1-6+rpi1 libc6-dev_2.31-13+rpi1 libstdc++-10-dev_10.2.1-6+rpi1 libstdc++6_10.2.1-6+rpi1 linux-libc-dev_5.10.46-4+rpi1
Package versions: adduser_3.118 apt_2.2.4 autoconf_2.71-2 autoconf-archive_20210219-2 automake_1:1.16.4-2 autopoint_0.21-4 autotools-dev_20180224.1+nmu1 base-files_11.1+rpi1 base-passwd_3.5.51 bash_5.1-2 binutils_2.35.2-2+rpi1 binutils-arm-linux-gnueabihf_2.35.2-2+rpi1 binutils-common_2.35.2-2+rpi1 bsdextrautils_2.37.2-1 bsdutils_1:2.36.1-8 build-essential_12.9 bzip2_1.0.8-4 ca-certificates_20210119 coreutils_8.32-4 cpp_4:10.2.1-1+rpi1 cpp-10_10.2.1-6+rpi1 dash_0.5.11+git20200708+dd9ef66-5 debconf_1.5.77 debhelper_13.5.1 debianutils_4.11.2 dh-autoreconf_20 dh-strip-nondeterminism_1.12.0-1 diffutils_1:3.7-5 dirmngr_2.2.27-2 docbook-xsl_1.79.2+dfsg-1 dpkg_1.20.9+rpi1 dpkg-dev_1.20.9+rpi1 dwz_0.14-1 e2fsprogs_1.46.2-2 fakeroot_1.25.3-1.1 file_1:5.39-3 findutils_4.8.0-1 fontconfig_2.13.1-4.2 fontconfig-config_2.13.1-4.2 fonts-dejavu-core_2.37-2 g++_4:10.2.1-1+rpi1 g++-10_10.2.1-6+rpi1 gcc_4:10.2.1-1+rpi1 gcc-10_10.2.1-6+rpi1 gcc-10-base_10.2.1-6+rpi1 gcc-7-base_7.5.0-6+rpi1+b2 gcc-8-base_8.4.0-7+rpi1 gcc-9-base_9.3.0-22+rpi1 gettext_0.21-4 gettext-base_0.21-4 gnupg_2.2.27-2 gnupg-l10n_2.2.27-2 gnupg-utils_2.2.27-2 gpg_2.2.27-2 gpg-agent_2.2.27-2 gpg-wks-client_2.2.27-2 gpg-wks-server_2.2.27-2 gpgconf_2.2.27-2 gpgsm_2.2.27-2 gpgv_2.2.27-2 grep_3.6-1 groff-base_1.22.4-7 gzip_1.10-4 hostname_3.23 init-system-helpers_1.60 intltool-debian_0.35.0+20060710.5 iso-codes_4.7.0-1 libacl1_2.2.53-10 libapt-pkg6.0_2.2.4 libarchive-zip-perl_1.68-1 libasan6_10.2.1-6+rpi1 libasound2_1.2.5.1-1 libasound2-data_1.2.5.1-1 libassuan0_2.5.3-7.1 libasyncns0_0.8-6 libatomic1_10.2.1-6+rpi1 libattr1_1:2.4.48-6 libaudit-common_1:3.0-2 libaudit1_1:3.0-2 libavahi-client3_0.8-5 libavahi-common-data_0.8-5 libavahi-common3_0.8-5 libbinutils_2.35.2-2+rpi1 libblkid-dev_2.37.2-1 libblkid1_2.37.2-1 libboost-date-time-dev_1.74.0.3+b1 libboost-date-time1.74-dev_1.74.0-9 libboost-date-time1.74.0_1.74.0-9 libboost-filesystem-dev_1.74.0.3+b1 libboost-filesystem1.74-dev_1.74.0-9 libboost-filesystem1.74.0_1.74.0-9 libboost-math-dev_1.74.0.3+b1 libboost-math1.74-dev_1.74.0-9 libboost-math1.74.0_1.74.0-9 libboost-serialization1.74-dev_1.74.0-9 libboost-serialization1.74.0_1.74.0-9 libboost-system1.74-dev_1.74.0-9 libboost-system1.74.0_1.74.0-9 libboost1.74-dev_1.74.0-9 libbrotli1_1.0.9-2+b1 libbsd0_0.11.3-1 libbz2-1.0_1.0.8-4 libbz2-dev_1.0.8-4 libc-bin_2.31-13+rpi1 libc-dev-bin_2.31-13+rpi1 libc6_2.31-13+rpi1 libc6-dev_2.31-13+rpi1 libcap-ng0_0.7.9-2.2+b1 libcap2_1:2.44-1 libcap2-bin_1:2.44-1 libcc1-0_10.2.1-6+rpi1 libcmark-dev_0.30.1-2 libcmark0.30.1_0.30.1-2 libcom-err2_1.46.2-2 libcrypt-dev_1:4.4.18-4 libcrypt1_1:4.4.18-4 libctf-nobfd0_2.35.2-2+rpi1 libctf0_2.35.2-2+rpi1 libcups2_2.3.3op2-7 libcurl3-gnutls_7.74.0-1.3 libcurl4-gnutls-dev_7.74.0-1.3 libdb5.3_5.3.28+dfsg1-0.8 libdbus-1-3_1.12.20-2 libdebconfclient0_0.260 libdebhelper-perl_13.5.1 libdouble-conversion3_3.1.5-6.1 libdpkg-perl_1.20.9+rpi1 libdrm-amdgpu1_2.4.107-2+rpi1 libdrm-common_2.4.107-2+rpi1 libdrm-nouveau2_2.4.107-2+rpi1 libdrm-radeon1_2.4.107-2+rpi1 libdrm2_2.4.107-2+rpi1 libdvdread-dev_6.1.2-1 libdvdread8_6.1.2-1 libdw1_0.185-2 libebml-dev_1.4.2-1 libebml5_1.4.2-1 libedit2_3.1-20210910-1 libegl-dev_1.3.4-2 libegl-mesa0_20.3.5-1+rpi1 libegl1_1.3.4-2 libelf1_0.185-2 libevdev2_1.11.0+dfsg-1+rpi1 libexpat1_2.4.1-2 libext2fs2_1.46.2-2 libfakeroot_1.25.3-1.1 libffi-dev_3.3-6 libffi7_3.3-6 libfile-stripnondeterminism-perl_1.12.0-1 libflac-dev_1.3.3-2 libflac8_1.3.3-2 libfmt-dev_7.1.3+ds1-5 libfmt7_7.1.3+ds1-5 libfontconfig1_2.13.1-4.2 libfreetype6_2.10.4+dfsg-1 libgbm1_20.3.5-1+rpi1 libgcc-10-dev_10.2.1-6+rpi1 libgcc-s1_10.2.1-6+rpi1 libgcrypt20_1.8.7-6 libgdbm-compat4_1.19-2 libgdbm6_1.19-2 libgl-dev_1.3.4-2 libgl1_1.3.4-2 libgl1-mesa-dri_20.3.5-1+rpi1 libglapi-mesa_20.3.5-1+rpi1 libgles-dev_1.3.4-2 libgles1_1.3.4-2 libgles2_1.3.4-2 libglib2.0-0_2.68.4-1 libglib2.0-bin_2.68.4-1 libglib2.0-data_2.68.4-1 libglib2.0-dev_2.68.4-1 libglib2.0-dev-bin_2.68.4-1 libglvnd0_1.3.4-2 libglx-dev_1.3.4-2 libglx-mesa0_20.3.5-1+rpi1 libglx0_1.3.4-2 libgmp-dev_2:6.2.1+dfsg-2 libgmp10_2:6.2.1+dfsg-2 libgmpxx4ldbl_2:6.2.1+dfsg-2 libgnutls30_3.7.2-2 libgomp1_10.2.1-6+rpi1 libgpg-error0_1.38-2 libgraphite2-3_1.3.14-1 libgssapi-krb5-2_1.18.3-6 libgstreamer-gl1.0-0_1.18.5-1 libgstreamer-plugins-base1.0-0_1.18.5-1 libgstreamer1.0-0_1.18.5-1 libgudev-1.0-0_237-2 libharfbuzz0b_2.7.4-1 libhogweed6_3.7.3-1 libice6_2:1.0.10-1 libicu67_67.1-7 libidn2-0_2.3.0-5 libinput-bin_1.16.4-3 libinput10_1.16.4-3 libisl23_0.23-1 libjpeg62-turbo_1:2.0.6-4 libk5crypto3_1.18.3-6 libkeyutils1_1.6.1-2 libkrb5-3_1.18.3-6 libkrb5support0_1.18.3-6 libksba8_1.5.0-3 libldap-2.4-2_2.4.57+dfsg-3 libllvm11_1:11.0.1-2+rpi1 liblocale-gettext-perl_1.07-4+b1 liblz4-1_1.9.3-2 liblzma5_5.2.5-2 liblzo2-2_2.10-2 liblzo2-dev_2.10-2 libmagic-mgc_1:5.39-3 libmagic1_1:5.39-3 libmatroska-dev_1.6.3-2 libmatroska7_1.6.3-2 libmd0_1.0.3-3 libmd4c0_0.4.8-1 libmount-dev_2.37.2-1 libmount1_2.37.2-1 libmpc3_1.2.0-1 libmpdec3_2.5.1-2+rpi1 libmpfr6_4.1.0-3 libmtdev1_1.1.6-1 libncursesw6_6.2+20201114-2 libnettle8_3.7.3-1 libnghttp2-14_1.43.0-1 libnpth0_1.6-3 libnsl-dev_1.3.0-2 libnsl2_1.3.0-2 libogg-dev_1.3.4-0.1 libogg0_1.3.4-0.1 libopus0_1.3.1-0.1 liborc-0.4-0_1:0.4.32-1 libosp5_1.5.2-13 libp11-kit0_0.23.22-1 libpam-modules_1.4.0-9 libpam-modules-bin_1.4.0-9 libpam-runtime_1.4.0-9 libpam0g_1.4.0-9 libpcre16-3_2:8.39-13 libpcre2-16-0_10.36-2 libpcre2-32-0_10.36-2 libpcre2-8-0_10.36-2 libpcre2-dev_10.36-2 libpcre2-posix2_10.36-2 libpcre3_2:8.39-13 libpcre3-dev_2:8.39-13 libpcre32-3_2:8.39-13 libpcrecpp0v5_2:8.39-13 libperl5.32_5.32.1-4+deb11u1 libpipeline1_1.5.3-1 libpng16-16_1.6.37-3 libpod-parser-perl_1.63-2 libpsl5_0.21.0-1.2 libpthread-stubs0-dev_0.4-1 libpugixml-dev_1.11.4-1 libpugixml1v5_1.11.4-1 libpulse0_14.2-2 libpython3-stdlib_3.9.2-3 libpython3.9-minimal_3.9.7-2+rpi1 libpython3.9-stdlib_3.9.7-2+rpi1 libqt5concurrent5_5.15.2+dfsg-10+rpi1 libqt5core5a_5.15.2+dfsg-10+rpi1 libqt5dbus5_5.15.2+dfsg-10+rpi1 libqt5gui5_5.15.2+dfsg-10+rpi1 libqt5multimedia5_5.15.2-3 libqt5multimediagsttools5_5.15.2-3 libqt5multimediaquick5_5.15.2-3 libqt5multimediawidgets5_5.15.2-3 libqt5network5_5.15.2+dfsg-10+rpi1 libqt5printsupport5_5.15.2+dfsg-10+rpi1 libqt5qml5_5.15.2+dfsg-8+rpi1 libqt5qmlmodels5_5.15.2+dfsg-8+rpi1 libqt5quick5_5.15.2+dfsg-8+rpi1 libqt5sql5_5.15.2+dfsg-10+rpi1 libqt5test5_5.15.2+dfsg-10+rpi1 libqt5widgets5_5.15.2+dfsg-10+rpi1 libqt5xml5_5.15.2+dfsg-10+rpi1 libreadline8_8.1-1 librtmp1_2.4+20151223.gitfa8646d.1-2+b2 libruby2.7_2.7.4-1 libsasl2-2_2.1.27+dfsg-2.1 libsasl2-modules-db_2.1.27+dfsg-2.1 libseccomp2_2.5.1-1+rpi1 libselinux1_3.1-3 libselinux1-dev_3.1-3 libsemanage-common_3.1-1 libsemanage1_3.1-1+b1 libsensors-config_1:3.6.0-7 libsensors5_1:3.6.0-7 libsepol1_3.1-1 libsepol1-dev_3.1-1 libsgmls-perl_1.03ii-36 libsigsegv2_2.13-1 libsm6_2:1.2.3-1 libsmartcols1_2.36.1-8 libsndfile1_1.0.31-2 libsqlite3-0_3.34.1-3 libss2_1.46.2-2 libssh2-1_1.9.0-3 libssl1.1_1.1.1k-1 libstdc++-10-dev_10.2.1-6+rpi1 libstdc++6_10.2.1-6+rpi1 libsub-override-perl_0.09-2 libsystemd0_247.3-6+rpi1 libtasn1-6_4.16.0-2 libtext-charwidth-perl_0.04-10+b1 libtext-iconv-perl_1.7-7+b1 libtinfo6_6.2+20201114-2 libtirpc-common_1.3.1-1 libtirpc-dev_1.3.1-1 libtirpc3_1.3.1-1 libtool_2.4.6-15 libubsan1_10.2.1-6+rpi1 libuchardet0_0.0.7-1 libudev1_247.3-6+rpi1 libunistring2_0.9.10-4 libunwind8_1.3.2-2 libutfcpp-dev_2.3.4-1.1 libuuid1_2.37.2-1 libvorbis-dev_1.3.7-1 libvorbis0a_1.3.7-1 libvorbisenc2_1.3.7-1 libvorbisfile3_1.3.7-1 libvulkan-dev_1.2.189.0-2 libvulkan1_1.2.189.0-2 libwacom-common_1.11-1 libwacom2_1.11-1 libwayland-client0_1.19.0-2 libwayland-cursor0_1.19.0-2 libwayland-egl1_1.19.0-2 libwayland-server0_1.19.0-2 libwrap0_7.6.q-31 libx11-6_2:1.7.2-2 libx11-data_2:1.7.2-2 libx11-dev_2:1.7.2-2 libx11-xcb1_2:1.7.2-2 libxau-dev_1:1.0.9-1 libxau6_1:1.0.9-1 libxcb-dri2-0_1.14-3 libxcb-dri3-0_1.14-3 libxcb-glx0_1.14-3 libxcb-icccm4_0.4.1-1.1 libxcb-image0_0.4.0-1+b3 libxcb-keysyms1_0.4.0-1+b2 libxcb-present0_1.14-3 libxcb-randr0_1.14-3 libxcb-render-util0_0.3.9-1+b1 libxcb-render0_1.14-3 libxcb-shape0_1.14-3 libxcb-shm0_1.14-3 libxcb-sync1_1.14-3 libxcb-util1_0.4.0-1 libxcb-xfixes0_1.14-3 libxcb-xinerama0_1.14-3 libxcb-xinput0_1.14-3 libxcb-xkb1_1.14-3 libxcb1_1.14-3 libxcb1-dev_1.14-3 libxdamage1_1:1.1.5-2 libxdmcp-dev_1:1.1.2-3 libxdmcp6_1:1.1.2-3 libxext-dev_2:1.3.4-1 libxext6_2:1.3.4-1 libxfixes3_1:5.0.3-2 libxkbcommon-x11-0_1.0.3-2 libxkbcommon0_1.0.3-2 libxml2_2.9.10+dfsg-6.7 libxrender1_1:0.9.10-1 libxshmfence1_1.3-1 libxslt1.1_1.1.34-4 libxxf86vm1_1:1.1.4-1+b2 libxxhash0_0.8.0-2+rpi1 libyaml-0-2_0.2.2-1 libyaml-tiny-perl_1.73-1 libz3-4_4.8.12-1 libzstd1_1.4.8+dfsg-2.1+rpi1 linux-libc-dev_5.10.46-4+rpi1 login_1:4.8.1-1 logsave_1.46.2-2 lsb-base_11.1.0+rpi1 m4_1.4.18-5 make_4.3-4.1 man-db_2.9.4-2 mawk_1.3.4.20200120-2 media-types_4.0.0 mount_2.36.1-8 ncurses-base_6.2+20201114-2 ncurses-bin_6.2+20201114-2 netbase_6.3 nlohmann-json3-dev_3.9.1-1 opensp_1.5.2-13 openssl_1.1.1l-1 passwd_1:4.8.1-1 patch_2.7.6-7 perl_5.32.1-4+deb11u1 perl-base_5.32.1-4+deb11u1 perl-modules-5.32_5.32.1-5 pinentry-curses_1.1.0-4 pkg-config_0.29.2-1 po-debconf_1.0.21+nmu1 po4a_0.62-1 python3_3.9.2-3 python3-distutils_3.9.7-1 python3-lib2to3_3.9.7-1 python3-minimal_3.9.2-3 python3.9_3.9.7-2+rpi1 python3.9-minimal_3.9.7-2+rpi1 qt5-qmake_5.15.2+dfsg-10+rpi1 qt5-qmake-bin_5.15.2+dfsg-10+rpi1 qtbase5-dev_5.15.2+dfsg-10+rpi1 qtbase5-dev-tools_5.15.2+dfsg-10+rpi1 qtchooser_66-2 qtmultimedia5-dev_5.15.2-3 rake_13.0.3-1 raspbian-archive-keyring_20120528.2 readline-common_8.1-2 ruby_1:2.7+2 ruby-minitest_5.13.0-1 ruby-net-telnet_0.1.1-2 ruby-power-assert_1.1.7-2 ruby-rubygems_3.2.5-2 ruby-test-unit_3.3.9-1 ruby-xmlrpc_0.3.0-2 ruby2.7_2.7.4-1 rubygems-integration_1.18 sbuild-build-depends-core-dummy_0.invalid.0 sbuild-build-depends-mkvtoolnix-dummy_0.invalid.0 sed_4.7-1 sensible-utils_0.0.17 sgml-base_1.30 shared-mime-info_2.0-1 sysvinit-utils_2.96-7 tar_1.34+dfsg-1 tzdata_2021a-1 ucf_3.0043 util-linux_2.36.1-8 uuid-dev_2.37.2-1 x11-common_1:7.7+23 x11proto-dev_2021.5-1 xkb-data_2.33-1 xml-core_0.18+nmu1 xorg-sgml-doctools_1:1.11-1.1 xsltproc_1.1.34-4 xtrans-dev_1.4.0-1 xz-utils_5.2.5-2 zlib1g_1:1.2.11.dfsg-2 zlib1g-dev_1:1.2.11.dfsg-2
+------------------------------------------------------------------------------+
| Build |
+------------------------------------------------------------------------------+
Unpack source
-------------
gpgv: unknown type of key resource 'trustedkeys.kbx'
gpgv: keyblock resource '/tmp/dpkg-verify-sig.20RCqQPE/trustedkeys.kbx': General error
gpgv: Signature made Mon Aug 30 15:36:31 2021 UTC
gpgv: using RSA key A401FF99368FA1F98152DE755C808C2B65558117
gpgv: Can't check signature: No public key
dpkg-source: warning: failed to verify signature on ./mkvtoolnix_61.0.0-1.dsc
dpkg-source: info: extracting mkvtoolnix in /<<PKGBUILDDIR>>
dpkg-source: info: unpacking mkvtoolnix_61.0.0.orig.tar.xz
dpkg-source: info: unpacking mkvtoolnix_61.0.0-1.debian.tar.xz
Check disk space
----------------
Sufficient free space for build
User Environment
----------------
APT_CONFIG=/var/lib/sbuild/apt.conf
DEB_BUILD_OPTIONS=parallel=4
HOME=/sbuild-nonexistent
LC_ALL=POSIX
LOGNAME=buildd
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
SCHROOT_ALIAS_NAME=bookworm-staging-armhf-sbuild
SCHROOT_CHROOT_NAME=bookworm-staging-armhf-sbuild
SCHROOT_COMMAND=env
SCHROOT_GID=112
SCHROOT_GROUP=buildd
SCHROOT_SESSION_ID=bookworm-staging-armhf-sbuild-9a577b4e-19cb-40ef-8dae-f0c798dff4d7
SCHROOT_UID=107
SCHROOT_USER=buildd
SHELL=/bin/sh
USER=buildd
dpkg-buildpackage
-----------------
dpkg-buildpackage: info: source package mkvtoolnix
dpkg-buildpackage: info: source version 61.0.0-1
dpkg-buildpackage: info: source distribution unstable
dpkg-source --before-build .
dpkg-buildpackage: info: host architecture armhf
fakeroot debian/rules clean
dh clean
debian/rules override_dh_clean
make[1]: Entering directory '/<<PKGBUILDDIR>>'
[ ! -f build-config ] || rake clean:dist
dh_clean config.status rake.d/dependecy.d/*.rb src/input/*.d \
config.h build-config ac/ax_boost_base.m4
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
debian/rules build-arch
dh build-arch
dh_update_autotools_config -a
debian/rules override_dh_autoreconf
make[1]: Entering directory '/<<PKGBUILDDIR>>'
cp /usr/share/aclocal/ax_boost_base.m4 ac
dh_autoreconf
ac/other_features.m4:7: warning: The macro `AC_HELP_STRING' is obsolete.
ac/other_features.m4:7: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
ac/other_features.m4:7: the top level
ac/initialization.m4:22: warning: The macro `AC_HEADER_STDC' is obsolete.
ac/initialization.m4:22: You should run autoupdate.
./lib/autoconf/headers.m4:704: AC_HEADER_STDC is expanded from...
ac/initialization.m4:22: the top level
ac/c++-features.m4:258: warning: The macro `AC_TRY_COMPILE' is obsolete.
ac/c++-features.m4:258: You should run autoupdate.
./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
ac/c++-features.m4:1: AX_CXX_STD_CXX_FLAG is expanded from...
ac/c++-features.m4:258: the top level
ac/c++-features.m4:259: warning: The macro `AC_TRY_COMPILE' is obsolete.
ac/c++-features.m4:259: You should run autoupdate.
./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
ac/c++-features.m4:32: AX_CXX17_ATTRIBUTE_MAYBE_UNUSED is expanded from...
ac/c++-features.m4:259: the top level
ac/c++-features.m4:260: warning: The macro `AC_TRY_COMPILE' is obsolete.
ac/c++-features.m4:260: You should run autoupdate.
./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
ac/c++-features.m4:90: AX_CXX17_NESTED_NAMESPACE_DEFINITION is expanded from...
ac/c++-features.m4:260: the top level
ac/c++-features.m4:261: warning: The macro `AC_TRY_COMPILE' is obsolete.
ac/c++-features.m4:261: You should run autoupdate.
./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
ac/c++-features.m4:59: AX_CXX17_STRUCTURED_BINDINGS is expanded from...
ac/c++-features.m4:261: the top level
ac/c++-features.m4:262: warning: The macro `AC_TRY_COMPILE' is obsolete.
ac/c++-features.m4:262: You should run autoupdate.
./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
ac/c++-features.m4:113: AX_CXX17_STD_OPTIONAL is expanded from...
ac/c++-features.m4:262: the top level
ac/c++-features.m4:263: warning: The macro `AC_TRY_COMPILE' is obsolete.
ac/c++-features.m4:263: You should run autoupdate.
./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
ac/c++-features.m4:140: AX_CXX17_STD_GCD is expanded from...
ac/c++-features.m4:263: the top level
ac/c++-features.m4:264: warning: The macro `AC_TRY_COMPILE' is obsolete.
ac/c++-features.m4:264: You should run autoupdate.
./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
ac/c++-features.m4:163: AX_CXX17_CONSTEXPR_IF is expanded from...
ac/c++-features.m4:264: the top level
ac/c++-features.m4:265: warning: The macro `AC_TRY_COMPILE' is obsolete.
ac/c++-features.m4:265: You should run autoupdate.
./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
ac/c++-features.m4:186: AX_CXX17_FILESYSTEM_LIBRARY is expanded from...
ac/c++-features.m4:265: the top level
ac/c++-features.m4:266: warning: The macro `AC_TRY_LINK' is obsolete.
ac/c++-features.m4:266: You should run autoupdate.
./lib/autoconf/general.m4:2920: AC_TRY_LINK is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
ac/c++-features.m4:209: AX_CXX17_LIBSTDCPPFS is expanded from...
ac/c++-features.m4:266: the top level
ac/endianess.m4:9: warning: The macro `AC_HELP_STRING' is obsolete.
ac/endianess.m4:9: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
ac/endianess.m4:9: the top level
ac/extra_inc_lib.m4:5: warning: The macro `AC_HELP_STRING' is obsolete.
ac/extra_inc_lib.m4:5: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
ac/extra_inc_lib.m4:5: the top level
ac/extra_inc_lib.m4:8: warning: The macro `AC_HELP_STRING' is obsolete.
ac/extra_inc_lib.m4:8: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
ac/extra_inc_lib.m4:8: the top level
ac/drmingw.m4:2: warning: The macro `AC_HELP_STRING' is obsolete.
ac/drmingw.m4:2: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
ac/drmingw.m4:2: the top level
ac/drmingw.m4:8: warning: The macro `AC_TRY_LINK' is obsolete.
ac/drmingw.m4:8: You should run autoupdate.
./lib/autoconf/general.m4:2920: AC_TRY_LINK is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
ac/drmingw.m4:8: the top level
ac/debugging_profiling.m4:6: warning: The macro `AC_HELP_STRING' is obsolete.
ac/debugging_profiling.m4:6: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
ac/debugging_profiling.m4:6: the top level
ac/debugging_profiling.m4:25: warning: The macro `AC_HELP_STRING' is obsolete.
ac/debugging_profiling.m4:25: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
ac/debugging_profiling.m4:25: the top level
ac/debugging_profiling.m4:44: warning: The macro `AC_HELP_STRING' is obsolete.
ac/debugging_profiling.m4:44: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
ac/debugging_profiling.m4:44: the top level
ac/debugging_profiling.m4:76: warning: The macro `AC_HELP_STRING' is obsolete.
ac/debugging_profiling.m4:76: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
ac/debugging_profiling.m4:76: the top level
ac/debugging_profiling.m4:94: warning: The macro `AC_HELP_STRING' is obsolete.
ac/debugging_profiling.m4:94: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
ac/debugging_profiling.m4:94: the top level
ac/precompiled_headers.m4:6: warning: The macro `AC_HELP_STRING' is obsolete.
ac/precompiled_headers.m4:6: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
ac/precompiled_headers.m4:6: the top level
ac/inttypes.m4:7: warning: The macro `AC_TRY_COMPILE' is obsolete.
ac/inttypes.m4:7: You should run autoupdate.
./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
ac/inttypes.m4:7: the top level
ac/inttypes.m4:26: warning: The macro `AC_TRY_COMPILE' is obsolete.
ac/inttypes.m4:26: You should run autoupdate.
./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
ac/inttypes.m4:26: the top level
ac/iconv.m4:12: warning: The macro `AC_TRY_LINK' is obsolete.
ac/iconv.m4:12: You should run autoupdate.
./lib/autoconf/general.m4:2920: AC_TRY_LINK is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
ac/iconv.m4:12: the top level
ac/iconv.m4:36: warning: The macro `AC_TRY_COMPILE' is obsolete.
ac/iconv.m4:36: You should run autoupdate.
./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
ac/iconv.m4:36: the top level
ac/nl_langinfo.m4:6: warning: The macro `AC_TRY_COMPILE' is obsolete.
ac/nl_langinfo.m4:6: You should run autoupdate.
./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
ac/nl_langinfo.m4:6: the top level
ac/nl_langinfo.m4:19: warning: The macro `AC_TRY_COMPILE' is obsolete.
ac/nl_langinfo.m4:19: You should run autoupdate.
./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
ac/nl_langinfo.m4:19: the top level
ac/static.m4:5: warning: The macro `AC_HELP_STRING' is obsolete.
ac/static.m4:5: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
ac/static.m4:5: the top level
ac/flac.m4:12: warning: The macro `AC_HELP_STRING' is obsolete.
ac/flac.m4:12: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
ac/flac.m4:12: the top level
ac/nlohmann_jsoncpp.m4:6: warning: The macro `AC_TRY_COMPILE' is obsolete.
ac/nlohmann_jsoncpp.m4:6: You should run autoupdate.
./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
ac/nlohmann_jsoncpp.m4:6: the top level
ac/fmt.m4:6: warning: The macro `AC_TRY_COMPILE' is obsolete.
ac/fmt.m4:6: You should run autoupdate.
./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
ac/fmt.m4:6: the top level
ac/fmt.m4:6: warning: The macro `AC_TRY_COMPILE' is obsolete.
ac/fmt.m4:6: You should run autoupdate.
./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
ac/fmt.m4:6: the top level
ac/zlib.m4:12: warning: The macro `AC_TRY_LINK' is obsolete.
ac/zlib.m4:12: You should run autoupdate.
./lib/autoconf/general.m4:2920: AC_TRY_LINK is expanded from...
ac/zlib.m4:12: the top level
ac/qt6.m4:9: warning: The macro `AC_HELP_STRING' is obsolete.
ac/qt6.m4:9: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
ac/qt6.m4:9: the top level
ac/qt6.m4:148: warning: The macro `AC_TRY_LINK' is obsolete.
ac/qt6.m4:148: You should run autoupdate.
./lib/autoconf/general.m4:2920: AC_TRY_LINK is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
ac/qt6.m4:148: the top level
ac/qt6.m4:189: warning: The macro `AC_HELP_STRING' is obsolete.
ac/qt6.m4:189: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
ac/qt6.m4:189: the top level
ac/qt6.m4:192: warning: The macro `AC_HELP_STRING' is obsolete.
ac/qt6.m4:192: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
ac/qt6.m4:192: the top level
ac/qt5.m4:9: warning: The macro `AC_HELP_STRING' is obsolete.
ac/qt5.m4:9: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
ac/qt5.m4:9: the top level
ac/qt5.m4:123: warning: The macro `AC_TRY_LINK' is obsolete.
ac/qt5.m4:123: You should run autoupdate.
./lib/autoconf/general.m4:2920: AC_TRY_LINK is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
ac/qt5.m4:123: the top level
ac/qt5.m4:244: warning: The macro `AC_HELP_STRING' is obsolete.
ac/qt5.m4:244: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
ac/qt5.m4:244: the top level
ac/qt5.m4:247: warning: The macro `AC_HELP_STRING' is obsolete.
ac/qt5.m4:247: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
ac/qt5.m4:247: the top level
ac/qt5.m4:249: warning: The macro `AC_HELP_STRING' is obsolete.
ac/qt5.m4:249: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
ac/qt5.m4:249: the top level
ac/qt5.m4:251: warning: The macro `AC_HELP_STRING' is obsolete.
ac/qt5.m4:251: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
ac/qt5.m4:251: the top level
ac/gtest.m4:29: warning: The macro `AC_TRY_COMPILE' is obsolete.
ac/gtest.m4:29: You should run autoupdate.
./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
ac/gtest.m4:1: AX_GTEST is expanded from...
ac/gtest.m4:29: the top level
ac/ax_docbook.m4:2: warning: The macro `AC_HELP_STRING' is obsolete.
ac/ax_docbook.m4:2: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
ac/ax_docbook.m4:2: the top level
ac/ax_docbook.m4:37: warning: The macro `AC_HELP_STRING' is obsolete.
ac/ax_docbook.m4:37: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
ac/ax_docbook.m4:37: the top level
ac/dvdread.m4:5: warning: The macro `AC_HELP_STRING' is obsolete.
ac/dvdread.m4:5: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
ac/dvdread.m4:5: the top level
ac/po4a.m4:6: warning: The macro `AC_HELP_STRING' is obsolete.
ac/po4a.m4:6: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
ac/po4a.m4:6: the top level
ac/po4a.m4:17: warning: The macro `AC_HELP_STRING' is obsolete.
ac/po4a.m4:17: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
ac/po4a.m4:17: the top level
ac/translations.m4:4: warning: The macro `AC_HELP_STRING' is obsolete.
ac/translations.m4:4: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
ac/translations.m4:4: the top level
configure.ac:55: warning: AC_OUTPUT should be used without arguments.
configure.ac:55: You should run autoupdate.
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
debian/rules override_dh_auto_configure
make[1]: Entering directory '/<<PKGBUILDDIR>>'
dh_auto_configure -- \
--docdir='${datarootdir}/doc/mkvtoolnix-gui' \
--disable-update-check --enable-debug
./configure --build=arm-linux-gnueabihf --prefix=/usr --includedir=\${prefix}/include --mandir=\${prefix}/share/man --infodir=\${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-option-checking --disable-silent-rules --libdir=\${prefix}/lib/arm-linux-gnueabihf --runstatedir=/run --disable-maintainer-mode --disable-dependency-tracking --docdir=\${datarootdir}/doc/mkvtoolnix-gui --disable-update-check --enable-debug
checking build system type... arm-unknown-linux-gnueabihf
checking host system type... arm-unknown-linux-gnueabihf
checking target system type... arm-unknown-linux-gnueabihf
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C11 features... none needed
checking whether gcc and cc understand -c and -o together... yes
checking how to run the C preprocessor... gcc -E
checking for g++... g++
checking whether the compiler supports GNU C++... yes
checking whether g++ accepts -g... yes
checking for g++ option to enable C++11 features... none needed
checking how to run the C++ preprocessor... g++ -E
checking whether make sets $(MAKE)... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking for ranlib... ranlib
checking for strip... strip
checking for ar... ar
checking for ld... ld
checking for strings... strings
checking for objdump... objdump
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for strings.h... yes
checking for sys/stat.h... yes
checking for sys/types.h... yes
checking for unistd.h... yes
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for inttypes.h... (cached) yes
checking for stdint.h... (cached) yes
checking for sys/types.h... (cached) yes
checking for sys/syscall.h... yes
checking for stropts.h... no
checking for syscall... yes
checking compiler type and version... gcc 10.2.1
checking for lld... no
checking for support for the "-std=c++17" flag... -std=c++17
checking for support for C++17 feature "attribute 'maybe_unused'"... yes
checking for support for C++17 feature "nested namespace definition"... yes
checking for support for C++17 feature "structured bindings"... yes
checking for support for C++17 feature "std::optional"... yes
checking for support for C++17 feature "std::gcd"... yes
checking for support for C++17 feature "constexpr if"... yes
checking for support for C++17 feature "file system library"... yes
checking for libraries to link against for the file system library... -lstdc++fs
checking whether the byte order is big-endian... no
checking if being compiled with mingw32... no
checking for int64_t... yes
checking for uint64_t... yes
checking size of int... 4
checking size of long... 4
checking size of long long... 8
checking for iconv.h... yes
checking for iconv... yes
checking for iconv declaration...
extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
checking for nl_langinfo... yes
checking for ogg_sync_init in -logg... yes
checking for ogg/ogg.h... yes
checking for vorbis_synthesis_init in -lvorbis... yes
checking for vorbis/codec.h... yes
checking for FLAC__stream_decoder_new in -lFLAC... yes
checking for FLAC__StreamMetadata_StreamInfo.sample_rate... yes
checking for FLAC__stream_decoder_skip_single_frame in -lFLAC... yes
checking for EBML... yes
checking for MATROSKA... yes
checking for PUGIXML... yes
configure: Using the system version of the pugixml library
checking nlohmann's json-cpp... yes
configure: Using the system version of nlohmann json-cpp
checking for utf8.h... yes
configure: Using the system version of UTF8-CPP
checking fmt... yes
checking for ZLIB... yes
checking for qmake6... no
checking for Qt 6... no: qmake6 not found
checking for qmake-qt5... no
checking for qmake... /usr/bin/qmake
checking for qmake's version... 5.15.2
checking for lconvert... /usr/bin/lconvert
checking for moc... /usr/lib/qt5/bin/moc
checking for rcc... /usr/lib/qt5/bin/rcc
checking for uic... /usr/lib/qt5/bin/uic
checking for Qt 5... yes
checking for libcmark... yes
checking for boostlib >= 1.66.0 (106600)... yes
checking for Boost's multi-precision library with GMP backend... yes
checking for boost/operators.hpp... yes
checking for main in -lgtest_main... no
checking for gtest/gtest.h... no
checking for valgrind... no
checking for main in -lbenchmark... no
checking for benchmark/benchmark.h... no
checking for pandoc... no
checking for DocBook XSL root directory... /usr/share/xml/docbook/stylesheet/nwalsh
checking for xsltproc... /usr/bin/xsltproc
checking whether xsltproc works... yes
checking POSIX termios... yes
checking whether termios.h defines TIOCGWINSZ... no
checking whether sys/ioctl.h defines TIOCGWINSZ... yes
checking for sys/ioctl.h... yes
checking for dvdread... yes
checking for po4a... /usr/bin/po4a
checking for po4a-translate... /usr/bin/po4a-translate
checking whether po4a-translate works... yes
checking for gettext... yes
checking for msgfmt... /usr/bin/msgfmt
checking for libintl.h... yes
checking the translations to install... bg ca cs de es eu fr it ja ko lt nl pl pt pt_BR ro ru sr_RS sr_RS@latin sv tr uk zh_CN zh_TW
checking the manpage translation languages to install... bg ca de es fr it ja ko nl pl ru uk zh_CN zh_TW
configure: creating ./config.status
config.status: creating build-config
config.status: creating config.h
The mkvtoolnix configuration is complete.
Optional features that are built:
* debugging information
* pre-compiled headers
* FLAC audio
* MKVToolNix GUI (with Qt 5)
* DVD chapter support via libdvdread
* man page translations (po4a)
* translations (gettext)
Optional features that are NOT built:
* online update check in the GUI
* profiling support
* compiler optimizations
* development technique 'address sanitizer'
* development technique 'undefined behavior sanitizer'
* make a static build of the applications
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
debian/rules override_dh_auto_build
make[1]: Entering directory '/<<PKGBUILDDIR>>'
rake -j 4
SCAN pch candidates (total=519, .c=4, .cpp=428, .moc=87)
CXX src/common/common_pch.h
CC lib/librmff/rmff.c
CC lib/librmff/mb_file_io.c
AR lib/librmff/librmff.a
RANLIB lib/librmff/librmff.a
CXX src/mpegparser/MPEGVideoBuffer.cpp
CXX lib/avilib-0.6.10/xio.cpp
CXX src/common/xml/xml.cpp
CC lib/avilib-0.6.10/avimisc.c
CC lib/avilib-0.6.10/avilib.c
CXX src/mpegparser/M2VParser.cpp
CXX src/common/xml/ebml_tags_converter.cpp
AR lib/avilib-0.6.10/libavi.a
RANLIB lib/avilib-0.6.10/libavi.a
CXX src/mpegparser/CircBuffer.cpp
AR src/mpegparser/libmpegparser.a
RANLIB src/mpegparser/libmpegparser.a
CXX src/common/xml/ebml_segmentinfo_converter.cpp
CXX src/common/xml/ebml_converter.cpp
CXX src/common/xml/ebml_chapters_converter.cpp
CXX src/common/tags/vorbis.cpp
CXX src/common/tags/tags.cpp
CXX src/common/strings/utf8.cpp
CXX src/common/strings/table_formatter.cpp
CXX src/common/strings/parsing.cpp
CXX src/common/strings/formatting.cpp
CXX src/common/strings/editing.cpp
CXX src/common/path/unix.cpp
CXX src/common/path/common.cpp
CXX src/common/mm_file_io/unix.cpp
CXX src/common/mm_file_io/common.cpp
CXX src/common/image/png.cpp
CXX src/common/image/jpeg.cpp
CXX src/common/hevc/util.cpp
CXX src/common/hevc/hevcc.cpp
CXX src/common/hevc/es_parser.cpp
CXX src/common/fs_sys_helpers/unix.cpp
CXX src/common/fs_sys_helpers/common.cpp
CXX src/common/compression/zlib.cpp
CXX src/common/compression/header_removal.cpp
CXX src/common/checksums/md5.cpp
CXX src/common/checksums/crc.cpp
CXX src/common/checksums/base.cpp
CXX src/common/checksums/adler32.cpp
CXX src/common/chapters/writer.cpp
In file included from /usr/include/c++/10/algorithm:62,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_algo.h: In function 'void std::__unguarded_linear_insert(_RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> >*, std::vector<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> > > >; _Compare = __gnu_cxx::__ops::_Val_less_iter]':
/usr/include/c++/10/bits/stl_algo.h:1819:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> >*, std::vector<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> > > >' changed in GCC 7.1
1819 | __unguarded_linear_insert(_RandomAccessIterator __last,
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h: In function 'void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> >*, std::vector<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> > > >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]':
/usr/include/c++/10/bits/stl_algo.h:1839:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> >*, std::vector<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> > > >' changed in GCC 7.1
1839 | __insertion_sort(_RandomAccessIterator __first,
| ^~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1839:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> >*, std::vector<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> > > >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:1839:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> >*, std::vector<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> > > >' changed in GCC 7.1
In file included from /usr/include/c++/10/bits/stl_algo.h:61,
from /usr/include/c++/10/algorithm:62,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_heap.h: In function 'void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> >*, std::vector<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> > > >; _Distance = int; _Tp = std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]':
/usr/include/c++/10/bits/stl_heap.h:223:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> >*, std::vector<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> > > >' changed in GCC 7.1
223 | __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
| ^~~~~~~~~~~~~
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {basic_timestamp_c<long long int>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&}; _Tp = std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> >; _Alloc = std::allocator<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> > >]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> > >::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/algorithm:62,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_algo.h: In function 'void std::__heap_select(_RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> >*, std::vector<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> > > >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]':
/usr/include/c++/10/bits/stl_algo.h:1662:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> >*, std::vector<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> > > >' changed in GCC 7.1
1662 | __heap_select(_RandomAccessIterator __first,
| ^~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1662:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> >*, std::vector<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> > > >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:1662:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> >*, std::vector<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> > > >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h: In function 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> >*, std::vector<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> > > >; _Size = int; _Compare = __gnu_cxx::__ops::_Iter_less_iter]':
/usr/include/c++/10/bits/stl_algo.h:1945:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> >*, std::vector<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> > > >' changed in GCC 7.1
1945 | __introsort_loop(_RandomAccessIterator __first,
| ^~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1945:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> >*, std::vector<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> > > >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:1945:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> >*, std::vector<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> > > >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:1959:25: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> >*, std::vector<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> > > >' changed in GCC 7.1
1959 | std::__introsort_loop(__cut, __last, __depth_limit, __comp);
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1937:25: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> >*, std::vector<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> > > >' changed in GCC 7.1
1937 | std::__heap_select(__first, __middle, __last, __comp);
| ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In function 'std::size_t mtx::chapters::write_simple(libmatroska::KaxChapters&, mm_io_c&, const mtx::bcp47::language_c&)':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> >*, std::vector<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> > > >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/algorithm:62,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_algo.h:1974:25: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> >*, std::vector<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> > > >' changed in GCC 7.1
1974 | std::__introsort_loop(__first, __last,
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
1975 | std::__lg(__last - __first) * 2,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1976 | __comp);
| ~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1886:25: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> >*, std::vector<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> > > >' changed in GCC 7.1
1886 | std::__insertion_sort(__first, __first + int(_S_threshold), __comp);
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1891:23: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> >*, std::vector<std::pair<basic_timestamp_c<long long int>, std::__cxx11::basic_string<char> > > >' changed in GCC 7.1
1891 | std::__insertion_sort(__first, __last, __comp);
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
CXX src/common/chapters/dvd.cpp
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {basic_timestamp_c<long long int>}; _Tp = basic_timestamp_c<long long int>; _Alloc = std::allocator<basic_timestamp_c<long long int> >]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<basic_timestamp_c<long long int> >::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {basic_timestamp_c<long long int>}; _Tp = basic_timestamp_c<long long int>; _Alloc = std::allocator<basic_timestamp_c<long long int> >]':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<basic_timestamp_c<long long int>*, std::vector<basic_timestamp_c<long long int> > >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CXX src/common/chapters/cue_parser.cpp
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const long long int&}; _Tp = long long int; _Alloc = std::allocator<long long int>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<long long int>::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/vector:67,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_vector.h: In function 'mtx::chapters::kax_cptr mtx::chapters::parse_cue(mm_text_io_c*, int64_t, int64_t, int64_t, const mtx::bcp47::language_c&, const string&, std::unique_ptr<libmatroska::KaxTags>*)':
/usr/include/c++/10/bits/stl_vector.h:1198:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >' changed in GCC 7.1
1198 | _M_realloc_insert(end(), __x);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
CXX src/common/chapters/chapters.cpp
CXX src/common/chapters/bluray.cpp
CXX src/common/bluray/util.cpp
CXX src/common/bluray/track_chapter_names.cpp
CXX src/common/bluray/mpls.cpp
In file included from /usr/include/c++/10/algorithm:62,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_algo.h: In function '_ForwardIterator std::__upper_bound(_ForwardIterator, _ForwardIterator, const _Tp&, _Compare) [with _ForwardIterator = __gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >; _Tp = mtx::bluray::mpls::chapter_t; _Compare = __gnu_cxx::__ops::_Val_comp_iter<mtx::bluray::mpls::parser_c::parse_chapters()::<lambda(const auto:25&, const auto:26&)> >]':
/usr/include/c++/10/bits/stl_algo.h:2048:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2048 | __upper_bound(_ForwardIterator __first, _ForwardIterator __last,
| ^~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:2048:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
In file included from /usr/include/c++/10/algorithm:61,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_algobase.h: In function '_ForwardIterator std::__lower_bound(_ForwardIterator, _ForwardIterator, const _Tp&, _Compare) [with _ForwardIterator = __gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >; _Tp = mtx::bluray::mpls::chapter_t; _Compare = __gnu_cxx::__ops::_Iter_comp_val<mtx::bluray::mpls::parser_c::parse_chapters()::<lambda(const auto:25&, const auto:26&)> >]':
/usr/include/c++/10/bits/stl_algobase.h:1309:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
1309 | __lower_bound(_ForwardIterator __first, _ForwardIterator __last,
| ^~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algobase.h:1309:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
In file included from /usr/include/c++/10/algorithm:62,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_algo.h: In function 'void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<mtx::bluray::mpls::parser_c::parse_chapters()::<lambda(const auto:25&, const auto:26&)> >]':
/usr/include/c++/10/bits/stl_algo.h:1839:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
1839 | __insertion_sort(_RandomAccessIterator __first,
| ^~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1839:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h: In function '_OutputIterator std::__move_merge(_InputIterator, _InputIterator, _InputIterator, _InputIterator, _OutputIterator, _Compare) [with _InputIterator = mtx::bluray::mpls::chapter_t*; _OutputIterator = __gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<mtx::bluray::mpls::parser_c::parse_chapters()::<lambda(const auto:25&, const auto:26&)> >]':
/usr/include/c++/10/bits/stl_algo.h:2650:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2650 | __move_merge(_InputIterator __first1, _InputIterator __last1,
| ^~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h: In function '_OutputIterator std::__move_merge(_InputIterator, _InputIterator, _InputIterator, _InputIterator, _OutputIterator, _Compare) [with _InputIterator = __gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >; _OutputIterator = mtx::bluray::mpls::chapter_t*; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<mtx::bluray::mpls::parser_c::parse_chapters()::<lambda(const auto:25&, const auto:26&)> >]':
/usr/include/c++/10/bits/stl_algo.h:2650:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:2650:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:2650:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:2650:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h: In function 'void std::__merge_sort_with_buffer(_RandomAccessIterator, _RandomAccessIterator, _Pointer, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >; _Pointer = mtx::bluray::mpls::chapter_t*; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<mtx::bluray::mpls::parser_c::parse_chapters()::<lambda(const auto:25&, const auto:26&)> >]':
/usr/include/c++/10/bits/stl_algo.h:2717:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2717 | __merge_sort_with_buffer(_RandomAccessIterator __first,
| ^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:2717:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:2717:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:2707:25: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2707 | std::__insertion_sort(__first, __first + __chunk_size, __comp);
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:2710:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2710 | std::__insertion_sort(__first, __last, __comp);
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:2685:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2685 | __result = std::__move_merge(__first, __first + __step_size,
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2686 | __first + __step_size,
| ~~~~~~~~~~~~~~~~~~~~~~
2687 | __first + __two_step,
| ~~~~~~~~~~~~~~~~~~~~~
2688 | __result, __comp);
| ~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:2685:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:2693:24: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2693 | std::__move_merge(__first, __first + __step_size,
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2694 | __first + __step_size, __last, __result, __comp);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:2693:24: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:2685:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2685 | __result = std::__move_merge(__first, __first + __step_size,
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2686 | __first + __step_size,
| ~~~~~~~~~~~~~~~~~~~~~~
2687 | __first + __two_step,
| ~~~~~~~~~~~~~~~~~~~~~
2688 | __result, __comp);
| ~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:2693:24: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2693 | std::__move_merge(__first, __first + __step_size,
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2694 | __first + __step_size, __last, __result, __comp);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:2693:24: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:2710:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2710 | std::__insertion_sort(__first, __last, __comp);
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {}; _Tp = mtx::bluray::mpls::chapter_t; _Alloc = std::allocator<mtx::bluray::mpls::chapter_t>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<mtx::bluray::mpls::chapter_t>::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {mtx::bluray::mpls::play_item_t}; _Tp = mtx::bluray::mpls::play_item_t; _Alloc = std::allocator<mtx::bluray::mpls::play_item_t>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<mtx::bluray::mpls::play_item_t>::iterator' changed in GCC 7.1
/usr/include/c++/10/bits/vector.tcc: In member function 'virtual void mtx::bluray::mpls::parser_c::parse_playlist()':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::play_item_t*, std::vector<mtx::bluray::mpls::play_item_t> >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {mtx::bluray::mpls::sub_play_item_t}; _Tp = mtx::bluray::mpls::sub_play_item_t; _Alloc = std::allocator<mtx::bluray::mpls::sub_play_item_t>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<mtx::bluray::mpls::sub_play_item_t>::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In member function 'virtual mtx::bluray::mpls::sub_path_t mtx::bluray::mpls::parser_c::parse_sub_path()':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::sub_play_item_t*, std::vector<mtx::bluray::mpls::sub_play_item_t> >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/bits/stl_algo.h:62,
from /usr/include/c++/10/algorithm:62,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_tempbuf.h: In constructor 'std::_Temporary_buffer<_ForwardIterator, _Tp>::_Temporary_buffer(_ForwardIterator, std::_Temporary_buffer<_ForwardIterator, _Tp>::size_type) [with _ForwardIterator = __gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >; _Tp = mtx::bluray::mpls::chapter_t]':
/usr/include/c++/10/bits/stl_tempbuf.h:257:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
257 | _Temporary_buffer<_ForwardIterator, _Tp>::
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/algorithm:62,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_algo.h: In function '_RandomAccessIterator std::_V2::__rotate(_RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, std::random_access_iterator_tag) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >]':
/usr/include/c++/10/bits/stl_algo.h:1318:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
1318 | __rotate(_RandomAccessIterator __first,
| ^~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1318:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:1318:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h: In function 'void std::__merge_without_buffer(_BidirectionalIterator, _BidirectionalIterator, _BidirectionalIterator, _Distance, _Distance, _Compare) [with _BidirectionalIterator = __gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >; _Distance = int; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<mtx::bluray::mpls::parser_c::parse_chapters()::<lambda(const auto:25&, const auto:26&)> >]':
/usr/include/c++/10/bits/stl_algo.h:2488:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2488 | __merge_without_buffer(_BidirectionalIterator __first,
| ^~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:2488:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:2488:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:2513:26: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2513 | = std::__lower_bound(__middle, __last, *__first_cut,
| ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2514 | __gnu_cxx::__ops::__iter_comp_val(__comp));
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:2522:26: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2522 | = std::__upper_bound(__first, __middle, *__second_cut,
| ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2523 | __gnu_cxx::__ops::__val_comp_iter(__comp));
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1434:27: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
1434 | return std::__rotate(__first, __middle, __last,
| ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
1435 | std::__iterator_category(__first));
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:2529:34: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2529 | std::__merge_without_buffer(__first, __first_cut, __new_middle,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2530 | __len11, __len22, __comp);
| ~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:2531:34: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2531 | std::__merge_without_buffer(__new_middle, __second_cut, __last,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2532 | __len1 - __len11, __len2 - __len22, __comp);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h: In function 'void std::__inplace_stable_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<mtx::bluray::mpls::parser_c::parse_chapters()::<lambda(const auto:25&, const auto:26&)> >]':
/usr/include/c++/10/bits/stl_algo.h:2773:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2773 | __inplace_stable_sort(_RandomAccessIterator __first,
| ^~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:2773:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:2778:25: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2778 | std::__insertion_sort(__first, __last, __comp);
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:2782:33: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2782 | std::__inplace_stable_sort(__first, __middle, __comp);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:2783:33: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2783 | std::__inplace_stable_sort(__middle, __last, __comp);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:2784:34: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2784 | std::__merge_without_buffer(__first, __middle, __last,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
2785 | __middle - __first,
| ~~~~~~~~~~~~~~~~~~~
2786 | __last - __middle,
| ~~~~~~~~~~~~~~~~~~
2787 | __comp);
| ~~~~~~~
/usr/include/c++/10/bits/stl_algo.h: In function 'void std::__merge_adaptive(_BidirectionalIterator, _BidirectionalIterator, _BidirectionalIterator, _Distance, _Distance, _Pointer, _Distance, _Compare) [with _BidirectionalIterator = __gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >; _Distance = int; _Pointer = mtx::bluray::mpls::chapter_t*; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<mtx::bluray::mpls::parser_c::parse_chapters()::<lambda(const auto:25&, const auto:26&)> >]':
/usr/include/c++/10/bits/stl_algo.h:2427:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2427 | __merge_adaptive(_BidirectionalIterator __first,
| ^~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:2427:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:2427:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:2457:23: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2457 | = std::__lower_bound(__middle, __last, *__first_cut,
| ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2458 | __gnu_cxx::__ops::__iter_comp_val(__comp));
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:2466:23: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2466 | = std::__upper_bound(__first, __middle, *__second_cut,
| ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2467 | __gnu_cxx::__ops::__val_comp_iter(__comp));
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1434:27: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
1434 | return std::__rotate(__first, __middle, __last,
| ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
1435 | std::__iterator_category(__first));
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:2475:25: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2475 | std::__merge_adaptive(__first, __first_cut, __new_middle, __len11,
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2476 | __len22, __buffer, __buffer_size, __comp);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:2477:25: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2477 | std::__merge_adaptive(__new_middle, __second_cut, __last,
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2478 | __len1 - __len11,
| ~~~~~~~~~~~~~~~~~
2479 | __len2 - __len22, __buffer,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2480 | __buffer_size, __comp);
| ~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h: In function 'void std::__stable_sort_adaptive(_RandomAccessIterator, _RandomAccessIterator, _Pointer, _Distance, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >; _Pointer = mtx::bluray::mpls::chapter_t*; _Distance = int; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<mtx::bluray::mpls::parser_c::parse_chapters()::<lambda(const auto:25&, const auto:26&)> >]':
/usr/include/c++/10/bits/stl_algo.h:2744:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2744 | __stable_sort_adaptive(_RandomAccessIterator __first,
| ^~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:2744:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:2744:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:2753:31: note: parameter passing for argument of type 'const __gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2753 | std::__stable_sort_adaptive(__first, __middle, __buffer,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2754 | __buffer_size, __comp);
| ~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:2755:31: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2755 | std::__stable_sort_adaptive(__middle, __last, __buffer,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
2756 | __buffer_size, __comp);
| ~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:2760:33: note: parameter passing for argument of type 'const __gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2760 | std::__merge_sort_with_buffer(__first, __middle, __buffer, __comp);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:2761:33: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2761 | std::__merge_sort_with_buffer(__middle, __last, __buffer, __comp);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:2763:28: note: parameter passing for argument of type 'const __gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
2763 | std::__merge_adaptive(__first, __middle, __last,
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
2764 | _Distance(__middle - __first),
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2765 | _Distance(__last - __middle),
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2766 | __buffer, __buffer_size,
| ~~~~~~~~~~~~~~~~~~~~~~~~
2767 | __comp);
| ~~~~~~~
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'virtual void mtx::bluray::mpls::parser_c::parse_chapters()':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/algorithm:62,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_algo.h:5032:15: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
5032 | _TmpBuf __buf(__first, std::distance(__first, __last));
| ^~~~~
/usr/include/c++/10/bits/stl_algo.h:5035:28: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
5035 | std::__inplace_stable_sort(__first, __last, __comp);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:5037:29: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::mpls::chapter_t*, std::vector<mtx::bluray::mpls::chapter_t> >' changed in GCC 7.1
5037 | std::__stable_sort_adaptive(__first, __last, __buf.begin(),
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5038 | _DistanceType(__buf.size()), __comp);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CXX src/common/bluray/index.cpp
CXX src/common/bluray/disc_library.cpp
CXX src/common/bluray/clpi.cpp
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {}; _Tp = mtx::bluray::clpi::ep_map_one_stream_t::coarse_point_t; _Alloc = std::allocator<mtx::bluray::clpi::ep_map_one_stream_t::coarse_point_t>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<mtx::bluray::clpi::ep_map_one_stream_t::coarse_point_t>::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {}; _Tp = mtx::bluray::clpi::ep_map_one_stream_t::fine_point_t; _Alloc = std::allocator<mtx::bluray::clpi::ep_map_one_stream_t::fine_point_t>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<mtx::bluray::clpi::ep_map_one_stream_t::fine_point_t>::iterator' changed in GCC 7.1
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {}; _Tp = mtx::bluray::clpi::ep_map_one_stream_t::point_t; _Alloc = std::allocator<mtx::bluray::clpi::ep_map_one_stream_t::point_t>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<mtx::bluray::clpi::ep_map_one_stream_t::point_t>::iterator' changed in GCC 7.1
/usr/include/c++/10/bits/vector.tcc: In function 'virtual void mtx::bluray::clpi::parser_c::parse_ep_map_for_one_stream_pid(mtx::bits::reader_c&, mtx::bluray::clpi::ep_map_one_stream_t&)':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::clpi::ep_map_one_stream_t::coarse_point_t*, std::vector<mtx::bluray::clpi::ep_map_one_stream_t::coarse_point_t> >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::clpi::ep_map_one_stream_t::fine_point_t*, std::vector<mtx::bluray::clpi::ep_map_one_stream_t::fine_point_t> >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::bluray::clpi::ep_map_one_stream_t::point_t*, std::vector<mtx::bluray::clpi::ep_map_one_stream_t::point_t> >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CXX src/common/avc_hevc/types.cpp
CXX src/common/avc_hevc/es_parser.cpp
In file included from /usr/include/c++/10/bits/stl_algo.h:61,
from /usr/include/c++/10/algorithm:62,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_heap.h: In function 'void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >; _Distance = int; _Tp = long long int; _Compare = __gnu_cxx::__ops::_Iter_less_iter]':
/usr/include/c++/10/bits/stl_heap.h:223:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >' changed in GCC 7.1
223 | __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
| ^~~~~~~~~~~~~
In file included from /usr/include/c++/10/algorithm:62,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_algo.h: In function 'void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]':
/usr/include/c++/10/bits/stl_algo.h:1839:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >' changed in GCC 7.1
1839 | __insertion_sort(_RandomAccessIterator __first,
| ^~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1839:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:1839:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h: In function 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >; _Size = int; _Compare = __gnu_cxx::__ops::_Iter_less_iter]':
/usr/include/c++/10/bits/stl_algo.h:1945:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >' changed in GCC 7.1
1945 | __introsort_loop(_RandomAccessIterator __first,
| ^~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1945:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:1959:25: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >' changed in GCC 7.1
1959 | std::__introsort_loop(__cut, __last, __depth_limit, __comp);
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {long long int}; _Tp = long long int; _Alloc = std::allocator<long long int>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<long long int>::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In member function 'std::vector<long long int> mtx::avc_hevc::es_parser_c::calculate_provided_timestamps_to_use()':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/algorithm:62,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_algo.h:1974:25: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >' changed in GCC 7.1
1974 | std::__introsort_loop(__first, __last,
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
1975 | std::__lg(__last - __first) * 2,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1976 | __comp);
| ~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1886:25: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >' changed in GCC 7.1
1886 | std::__insertion_sort(__first, __first + int(_S_threshold), __comp);
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1891:23: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >' changed in GCC 7.1
1891 | std::__insertion_sort(__first, __last, __comp);
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
CXX src/common/avc/util.cpp
CXX src/common/avc/es_parser.cpp
CXX src/common/avc/avcc.cpp
CXX src/common/webvtt.cpp
CXX src/common/webm.cpp
CXX src/common/wavpack.cpp
CXX src/common/w64.cpp
CXX src/common/vp9.cpp
CXX src/common/vobsub.cpp
CXX src/common/vint.cpp
CXX src/common/version.cpp
CXX src/common/vc1.cpp
CXX src/common/unique_numbers.cpp
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const long long unsigned int&}; _Tp = long long unsigned int; _Alloc = std::allocator<long long unsigned int>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<long long unsigned int>::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {long long unsigned int}; _Tp = long long unsigned int; _Alloc = std::allocator<long long unsigned int>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<long long unsigned int>::iterator' changed in GCC 7.1
/usr/include/c++/10/bits/vector.tcc: In function 'void add_unique_number(uint64_t, unique_id_category_e)':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long unsigned int*, std::vector<long long unsigned int> >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/vector:67,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_vector.h:1198:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long unsigned int*, std::vector<long long unsigned int> >' changed in GCC 7.1
1198 | _M_realloc_insert(end(), __x);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In function 'uint64_t create_unique_number(unique_id_category_e)':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long unsigned int*, std::vector<long long unsigned int> >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CXX src/common/truehd.cpp
CXX src/common/translation.cpp
CXX src/common/track_statistics.cpp
CXX src/common/theora.cpp
CXX src/common/terminal.cpp
CXX src/common/stereo_mode.cpp
CXX src/common/spu.cpp
CXX src/common/split_point.cpp
CXX src/common/split_arg_parsing.cpp
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {long long int&, long long int&, bool&}; _Tp = std::tuple<long long int, long long int, bool>; _Alloc = std::allocator<std::tuple<long long int, long long int, bool> >]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<std::tuple<long long int, long long int, bool> >::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {long long int&, split_point_c::type_e&, bool, bool, bool&}; _Tp = split_point_c; _Alloc = std::allocator<split_point_c>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<split_point_c>::iterator' changed in GCC 7.1
/usr/include/c++/10/bits/vector.tcc: In function 'std::vector<split_point_c> mtx::args::parse_split_parts(const string&, bool)':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::tuple<long long int, long long int, bool>*, std::vector<std::tuple<long long int, long long int, bool> > >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<split_point_c*, std::vector<split_point_c> >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<split_point_c*, std::vector<split_point_c> >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CXX src/common/samples_to_timestamp_converter.cpp
CXX src/common/random.cpp
CXX src/common/property_element.cpp
CXX src/common/output.cpp
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >}; _Tp = nlohmann::basic_json<>; _Alloc = std::allocator<nlohmann::basic_json<> >]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > >::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >}; _Tp = nlohmann::basic_json<>; _Alloc = std::allocator<nlohmann::basic_json<> >]':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<nlohmann::basic_json<>*, std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > > >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/map:60,
from /usr/include/boost/detail/container_fwd.hpp:94,
from /usr/include/boost/container_hash/extensions.hpp:22,
from /usr/include/boost/container_hash/hash.hpp:761,
from /usr/include/boost/multiprecision/number.hpp:29,
from /usr/include/boost/multiprecision/cpp_int.hpp:12,
from src/common/common.h:47,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
/usr/include/c++/10/bits/stl_tree.h:2193:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
2193 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CXX src/common/opus.cpp
CXX src/common/mpeg4_p2.cpp
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const mtx::mpeg4_p2::video_frame_t&}; _Tp = mtx::mpeg4_p2::video_frame_t; _Alloc = std::allocator<mtx::mpeg4_p2::video_frame_t>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<mtx::mpeg4_p2::video_frame_t>::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/vector:67,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_vector.h: In function 'void mtx::mpeg4_p2::find_frame_types(const unsigned char*, int, std::vector<mtx::mpeg4_p2::video_frame_t>&, const mtx::mpeg4_p2::config_data_t&)':
/usr/include/c++/10/bits/stl_vector.h:1198:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::mpeg4_p2::video_frame_t*, std::vector<mtx::mpeg4_p2::video_frame_t> >' changed in GCC 7.1
1198 | _M_realloc_insert(end(), __x);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
/usr/include/c++/10/bits/stl_vector.h:1198:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::mpeg4_p2::video_frame_t*, std::vector<mtx::mpeg4_p2::video_frame_t> >' changed in GCC 7.1
1198 | _M_realloc_insert(end(), __x);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
CXX src/common/mpeg1_2.cpp
CXX src/common/mpeg.cpp
CXX src/common/mp3.cpp
CXX src/common/mm_write_buffer_io.cpp
CXX src/common/mm_text_io.cpp
CXX src/common/mm_stdio.cpp
CXX src/common/mm_read_buffer_io.cpp
CXX src/common/mm_proxy_io.cpp
CXX src/common/mm_null_io.cpp
CXX src/common/mm_multi_file_io.cpp
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const std::filesystem::__cxx11::path&, long long unsigned int&, std::shared_ptr<mm_file_io_c>&}; _Tp = mm_multi_file_io_private_c::file_t; _Alloc = std::allocator<mm_multi_file_io_private_c::file_t>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<mm_multi_file_io_private_c::file_t>::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In constructor 'mm_multi_file_io_private_c::mm_multi_file_io_private_c(const std::vector<std::filesystem::__cxx11::path>&, const string&)':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mm_multi_file_io_private_c::file_t*, std::vector<mm_multi_file_io_private_c::file_t> >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >}; _Tp = nlohmann::basic_json<>; _Alloc = std::allocator<nlohmann::basic_json<> >]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > >::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >}; _Tp = nlohmann::basic_json<>; _Alloc = std::allocator<nlohmann::basic_json<> >]':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<nlohmann::basic_json<>*, std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > > >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >&}; _Tp = std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _Alloc = std::allocator<std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In member function 'virtual void mm_multi_file_io_c::create_verbose_identification_info(mtx::id::info_c&)':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> >*, std::vector<std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CXX src/common/mm_mpls_multi_file_io.cpp
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >}; _Tp = nlohmann::basic_json<>; _Alloc = std::allocator<nlohmann::basic_json<> >]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > >::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >}; _Tp = nlohmann::basic_json<>; _Alloc = std::allocator<nlohmann::basic_json<> >]':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<nlohmann::basic_json<>*, std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > > >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const bool&}; _Tp = std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _Alloc = std::allocator<std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const long long int&}; _Tp = std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _Alloc = std::allocator<std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >::iterator' changed in GCC 7.1
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >::iterator' changed in GCC 7.1
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const long long unsigned int&}; _Tp = std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _Alloc = std::allocator<std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >::iterator' changed in GCC 7.1
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >::iterator' changed in GCC 7.1
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const unsigned int&}; _Tp = std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _Alloc = std::allocator<std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >::iterator' changed in GCC 7.1
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >::iterator' changed in GCC 7.1
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >&}; _Tp = std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _Alloc = std::allocator<std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >::iterator' changed in GCC 7.1
/usr/include/c++/10/bits/vector.tcc: In member function 'virtual void mm_mpls_multi_file_io_c::create_verbose_identification_info(mtx::id::info_c&)':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> >*, std::vector<std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> >*, std::vector<std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> >*, std::vector<std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> >*, std::vector<std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> >*, std::vector<std::pair<std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CXX src/common/mm_mem_io.cpp
CXX src/common/mm_io_x.cpp
CXX src/common/mm_io.cpp
CXX src/common/mime.cpp
CXX src/common/memory.cpp
CXX src/common/math.cpp
CXX src/common/markdown.cpp
CXX src/common/logger.cpp
CXX src/common/locale_string.cpp
CXX src/common/locale.cpp
CXX src/common/kax_info.cpp
CXX src/common/kax_file.cpp
CXX src/common/kax_element_names.cpp
CXX src/common/kax_analyzer.cpp
CXX src/common/kate.cpp
CXX src/common/json.cpp
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >}; _Tp = nlohmann::basic_json<>; _Alloc = std::allocator<nlohmann::basic_json<> >]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > >::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >}; _Tp = nlohmann::basic_json<>; _Alloc = std::allocator<nlohmann::basic_json<> >]':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<nlohmann::basic_json<>*, std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > > >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {nlohmann::detail::value_t}; _Tp = nlohmann::basic_json<>; _Alloc = std::allocator<nlohmann::basic_json<> >]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > >::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In member function 'bool nlohmann::detail::json_sax_dom_parser<BasicJsonType>::start_array(std::size_t) [with BasicJsonType = nlohmann::basic_json<>]':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<nlohmann::basic_json<>*, std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > > >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In member function 'bool nlohmann::detail::json_sax_dom_parser<BasicJsonType>::start_object(std::size_t) [with BasicJsonType = nlohmann::basic_json<>]':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<nlohmann::basic_json<>*, std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > > >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {double&}; _Tp = nlohmann::basic_json<>; _Alloc = std::allocator<nlohmann::basic_json<> >]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > >::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {bool&}; _Tp = nlohmann::basic_json<>; _Alloc = std::allocator<nlohmann::basic_json<> >]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > >::iterator' changed in GCC 7.1
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > >::iterator' changed in GCC 7.1
/usr/include/c++/10/bits/vector.tcc: In member function 'BasicJsonType* nlohmann::detail::json_sax_dom_parser<BasicJsonType>::handle_value(Value&&) [with Value = bool&; BasicJsonType = nlohmann::basic_json<>]':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<nlohmann::basic_json<>*, std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > > >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {long long int&}; _Tp = nlohmann::basic_json<>; _Alloc = std::allocator<nlohmann::basic_json<> >]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > >::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&}; _Tp = nlohmann::basic_json<>; _Alloc = std::allocator<nlohmann::basic_json<> >]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > >::iterator' changed in GCC 7.1
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > >::iterator' changed in GCC 7.1
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {long long unsigned int&}; _Tp = nlohmann::basic_json<>; _Alloc = std::allocator<nlohmann::basic_json<> >]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > >::iterator' changed in GCC 7.1
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > >::iterator' changed in GCC 7.1
In file included from /usr/include/c++/10/map:60,
from /usr/include/boost/detail/container_fwd.hpp:94,
from /usr/include/boost/container_hash/extensions.hpp:22,
from /usr/include/boost/container_hash/hash.hpp:761,
from /usr/include/boost/multiprecision/number.hpp:29,
from /usr/include/boost/multiprecision/cpp_int.hpp:12,
from src/common/common.h:47,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_tree.h: In member function 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
/usr/include/c++/10/bits/stl_tree.h:2193:5: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
2193 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>, std::tuple<>}; _Key = std::__cxx11::basic_string<char>; _Val = std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >; _KeyOfValue = std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
/usr/include/c++/10/bits/stl_tree.h:2458:7: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
2458 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_tree.h:2458:7: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
In file included from /usr/include/c++/10/map:61,
from /usr/include/boost/detail/container_fwd.hpp:94,
from /usr/include/boost/container_hash/extensions.hpp:22,
from /usr/include/boost/container_hash/hash.hpp:761,
from /usr/include/boost/multiprecision/number.hpp:29,
from /usr/include/boost/multiprecision/cpp_int.hpp:12,
from src/common/common.h:47,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_map.h: In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string<char>; _Tp = nlohmann::basic_json<>; _Compare = std::less<void>; _Alloc = std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >]':
/usr/include/c++/10/bits/stl_map.h:501:37: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
501 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
502 | std::tuple<const key_type&>(__k),
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
503 | std::tuple<>());
| ~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_map.h: In member function 'bool nlohmann::detail::json_sax_dom_callback_parser<BasicJsonType>::key(nlohmann::detail::json_sax_dom_callback_parser<BasicJsonType>::string_t&) [with BasicJsonType = nlohmann::basic_json<>]':
/usr/include/c++/10/bits/stl_map.h:501:37: note: parameter passing for argument of type 'std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > >, std::less<void>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> > > >::const_iterator' changed in GCC 7.1
501 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
502 | std::tuple<const key_type&>(__k),
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
503 | std::tuple<>());
| ~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'bool nlohmann::detail::parser<BasicJsonType, InputAdapterType>::sax_parse_internal(SAX*) [with SAX = nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<> >; BasicJsonType = nlohmann::basic_json<>; InputAdapterType = nlohmann::detail::iterator_input_adapter<__gnu_cxx::__normal_iterator<const char*, std::__cxx11::basic_string<char> > >]':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<nlohmann::basic_json<>*, std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > > >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<nlohmann::basic_json<>*, std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > > >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<nlohmann::basic_json<>*, std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > > >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<nlohmann::basic_json<>*, std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > > >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CXX src/common/ivf.cpp
CXX src/common/iso639_language_list.cpp
CXX src/common/iso639.cpp
CXX src/common/iso3166_country_list.cpp
CXX src/common/iso3166.cpp
CXX src/common/iso15924_script_list.cpp
CXX src/common/iso15924.cpp
CXX src/common/image.cpp
CXX src/common/id3.cpp
CXX src/common/iana_language_subtag_registry_list.cpp
CXX src/common/iana_language_subtag_registry.cpp
CXX src/common/hdmv_textst.cpp
CXX src/common/hdmv_pgs.cpp
CXX src/common/hacks.cpp
CXX src/common/frame_timing.cpp
In file included from /usr/include/c++/10/algorithm:62,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_algo.h: In function 'void std::__unguarded_linear_insert(_RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<std::pair<long long int, mtx::frame_timing::common_frame_rate_t>*, std::vector<std::pair<long long int, mtx::frame_timing::common_frame_rate_t> > >; _Compare = __gnu_cxx::__ops::_Val_comp_iter<mtx::frame_timing::determine_frame_rate(int64_t, int64_t)::<lambda(const auto:24&, const auto:25&)> >]':
/usr/include/c++/10/bits/stl_algo.h:1819:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<long long int, mtx::frame_timing::common_frame_rate_t>*, std::vector<std::pair<long long int, mtx::frame_timing::common_frame_rate_t> > >' changed in GCC 7.1
1819 | __unguarded_linear_insert(_RandomAccessIterator __last,
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h: In function 'void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<std::pair<long long int, mtx::frame_timing::common_frame_rate_t>*, std::vector<std::pair<long long int, mtx::frame_timing::common_frame_rate_t> > >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<mtx::frame_timing::determine_frame_rate(int64_t, int64_t)::<lambda(const auto:24&, const auto:25&)> >]':
/usr/include/c++/10/bits/stl_algo.h:1839:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<long long int, mtx::frame_timing::common_frame_rate_t>*, std::vector<std::pair<long long int, mtx::frame_timing::common_frame_rate_t> > >' changed in GCC 7.1
1839 | __insertion_sort(_RandomAccessIterator __first,
| ^~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1839:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<long long int, mtx::frame_timing::common_frame_rate_t>*, std::vector<std::pair<long long int, mtx::frame_timing::common_frame_rate_t> > >' changed in GCC 7.1
In file included from /usr/include/c++/10/bits/stl_algo.h:61,
from /usr/include/c++/10/algorithm:62,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_heap.h: In function 'void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<std::pair<long long int, mtx::frame_timing::common_frame_rate_t>*, std::vector<std::pair<long long int, mtx::frame_timing::common_frame_rate_t> > >; _Distance = int; _Tp = std::pair<long long int, mtx::frame_timing::common_frame_rate_t>; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<mtx::frame_timing::determine_frame_rate(int64_t, int64_t)::<lambda(const auto:24&, const auto:25&)> >]':
/usr/include/c++/10/bits/stl_heap.h:223:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<long long int, mtx::frame_timing::common_frame_rate_t>*, std::vector<std::pair<long long int, mtx::frame_timing::common_frame_rate_t> > >' changed in GCC 7.1
223 | __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
| ^~~~~~~~~~~~~
In file included from /usr/include/c++/10/algorithm:62,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_algo.h: In function 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<std::pair<long long int, mtx::frame_timing::common_frame_rate_t>*, std::vector<std::pair<long long int, mtx::frame_timing::common_frame_rate_t> > >; _Size = int; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<mtx::frame_timing::determine_frame_rate(int64_t, int64_t)::<lambda(const auto:24&, const auto:25&)> >]':
/usr/include/c++/10/bits/stl_algo.h:1945:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<long long int, mtx::frame_timing::common_frame_rate_t>*, std::vector<std::pair<long long int, mtx::frame_timing::common_frame_rate_t> > >' changed in GCC 7.1
1945 | __introsort_loop(_RandomAccessIterator __first,
| ^~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1945:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<long long int, mtx::frame_timing::common_frame_rate_t>*, std::vector<std::pair<long long int, mtx::frame_timing::common_frame_rate_t> > >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:1959:25: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<long long int, mtx::frame_timing::common_frame_rate_t>*, std::vector<std::pair<long long int, mtx::frame_timing::common_frame_rate_t> > >' changed in GCC 7.1
1959 | std::__introsort_loop(__cut, __last, __depth_limit, __comp);
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/vector:67,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_vector.h: In constructor 'std::vector<_Tp, _Alloc>::vector(std::initializer_list<_Tp>, const allocator_type&) [with _Tp = mtx::frame_timing::common_frame_rate_t; _Alloc = std::allocator<mtx::frame_timing::common_frame_rate_t>]':
/usr/include/c++/10/bits/stl_vector.h:625:7: note: parameter passing for argument of type 'std::initializer_list<mtx::frame_timing::common_frame_rate_t>' changed in GCC 7.1
625 | vector(initializer_list<value_type> __l,
| ^~~~~~
src/common/frame_timing.cpp: In function 'void __static_initialization_and_destruction_0(int, int)':
src/common/frame_timing.cpp:33:1: note: parameter passing for argument of type 'std::initializer_list<mtx::frame_timing::common_frame_rate_t>' changed in GCC 7.1
33 | };
| ^
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {long long int&, const mtx::frame_timing::common_frame_rate_t&}; _Tp = std::pair<long long int, mtx::frame_timing::common_frame_rate_t>; _Alloc = std::allocator<std::pair<long long int, mtx::frame_timing::common_frame_rate_t> >]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<std::pair<long long int, mtx::frame_timing::common_frame_rate_t> >::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In function 'mtx_mp_rational_t mtx::frame_timing::determine_frame_rate(int64_t, int64_t)':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<long long int, mtx::frame_timing::common_frame_rate_t>*, std::vector<std::pair<long long int, mtx::frame_timing::common_frame_rate_t> > >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/algorithm:62,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_algo.h:1974:25: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<long long int, mtx::frame_timing::common_frame_rate_t>*, std::vector<std::pair<long long int, mtx::frame_timing::common_frame_rate_t> > >' changed in GCC 7.1
1974 | std::__introsort_loop(__first, __last,
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
1975 | std::__lg(__last - __first) * 2,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1976 | __comp);
| ~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1886:25: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<long long int, mtx::frame_timing::common_frame_rate_t>*, std::vector<std::pair<long long int, mtx::frame_timing::common_frame_rate_t> > >' changed in GCC 7.1
1886 | std::__insertion_sort(__first, __first + int(_S_threshold), __comp);
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1891:23: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<std::pair<long long int, mtx::frame_timing::common_frame_rate_t>*, std::vector<std::pair<long long int, mtx::frame_timing::common_frame_rate_t> > >' changed in GCC 7.1
1891 | std::__insertion_sort(__first, __last, __comp);
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
CXX src/common/fourcc.cpp
CXX src/common/flac.cpp
CXX src/common/file_types.cpp
CXX src/common/endian.cpp
CXX src/common/ebml.cpp
CXX src/common/dts_parser.cpp
CXX src/common/dts.cpp
CXX src/common/dovi_meta.cpp
CXX src/common/doc_type_version_handler_p.cpp
CXX src/common/doc_type_version_handler.cpp
CXX src/common/dirac.cpp
CXX src/common/debugging.cpp
CXX src/common/date_time.cpp
CXX src/common/content_decoder.cpp
CXX src/common/compression.cpp
CXX src/common/common.cpp
CXX src/common/command_line.cpp
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >}; _Tp = nlohmann::basic_json<>; _Alloc = std::allocator<nlohmann::basic_json<> >]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > >::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >}; _Tp = nlohmann::basic_json<>; _Alloc = std::allocator<nlohmann::basic_json<> >]':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<nlohmann::basic_json<>*, std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > > >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CXX src/common/codec.cpp
CXX src/common/cli_parser.cpp
CXX src/common/character_sets.cpp
CXX src/common/bswap.cpp
CXX src/common/bitvalue.cpp
CXX src/common/bcp47_re.cpp
CXX src/common/bcp47.cpp
CXX src/common/base64.cpp
CXX src/common/av1.cpp
CXX src/common/ape.cpp
CXX src/common/amf.cpp
CXX src/common/ac3.cpp
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const mtx::ac3::frame_c&}; _Tp = mtx::ac3::frame_c; _Alloc = std::allocator<mtx::ac3::frame_c>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<mtx::ac3::frame_c>::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/vector:67,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_vector.h: In member function 'void mtx::ac3::frame_c::add_dependent_frame(const mtx::ac3::frame_c&, const unsigned char*, std::size_t)':
/usr/include/c++/10/bits/stl_vector.h:1198:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::ac3::frame_c*, std::vector<mtx::ac3::frame_c> >' changed in GCC 7.1
1198 | _M_realloc_insert(end(), __x);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
CXX src/common/aac.cpp
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const mtx::aac::frame_c&}; _Tp = mtx::aac::frame_c; _Alloc = std::allocator<mtx::aac::frame_c>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<mtx::aac::frame_c>::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/vector:67,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_vector.h: In static member function 'static int mtx::aac::parser_c::find_consecutive_frames(const unsigned char*, size_t, size_t)':
/usr/include/c++/10/bits/stl_vector.h:1198:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::aac::frame_c*, std::vector<mtx::aac::frame_c> >' changed in GCC 7.1
1198 | _M_realloc_insert(end(), __x);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
AR src/common/libmtxcommon.a
RANLIB src/common/libmtxcommon.a
CXX src/output/p_webvtt.cpp
CXX src/extract/xtr_webvtt.cpp
CXX src/info/mkvinfo.cpp
CXX src/tools/element_info.cpp
CXX src/info/info_cli_parser.cpp
CXX src/extract/xtr_wav.cpp
CXX src/output/p_wavpack.cpp
LINK src/mkvinfo
CXX src/output/p_vpx.cpp
CXX src/tools/ebml_validator.cpp
CXX src/extract/xtr_vobsub.cpp
CXX src/propedit/track_target.cpp
CXX src/output/p_vorbis.cpp
LINK src/tools/ebml_validator
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const long long int&}; _Tp = long long int; _Alloc = std::allocator<long long int>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<long long int>::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {long long int}; _Tp = long long int; _Alloc = std::allocator<long long int>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<long long int>::iterator' changed in GCC 7.1
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<long long int>::iterator' changed in GCC 7.1
/usr/include/c++/10/bits/vector.tcc: In member function 'virtual void xtr_vobsub_c::handle_frame(xtr_frame_t&)':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/vector:67,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_vector.h:1198:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >' changed in GCC 7.1
1198 | _M_realloc_insert(end(), __x);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
VERIFY-PO-FMT po/zh_TW.po
MSGFMT po/zh_TW.po
CXX src/extract/xtr_tta.cpp
CXX src/propedit/target.cpp
VERIFY-PO-FMT po/zh_CN.po
MSGFMT po/zh_CN.po
CXX src/output/p_vobsub.cpp
VERIFY-PO-FMT po/uk.po
MSGFMT po/uk.po
VERIFY-PO-FMT po/tr.po
MSGFMT po/tr.po
VERIFY-PO-FMT po/sv.po
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {long long int}; _Tp = long long int; _Alloc = std::allocator<long long int>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<long long int>::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<long long int>::iterator' changed in GCC 7.1
/usr/include/c++/10/bits/vector.tcc: In member function 'virtual void xtr_tta_c::handle_frame(xtr_frame_t&)':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
MSGFMT po/sv.po
VERIFY-PO-FMT po/sr_RS@latin.po
MSGFMT po/sr_RS@latin.po
CXX src/extract/xtr_textsubs.cpp
CXX src/propedit/tag_target.cpp
VERIFY-PO-FMT po/sr_RS.po
MSGFMT po/sr_RS.po
VERIFY-PO-FMT po/ru.po
MSGFMT po/ru.po
CXX src/output/p_vobbtn.cpp
VERIFY-PO-FMT po/ro.po
MSGFMT po/ro.po
VERIFY-PO-FMT po/pt_BR.po
MSGFMT po/pt_BR.po
VERIFY-PO-FMT po/pt.po
MSGFMT po/pt.po
VERIFY-PO-FMT po/pl.po
In file included from /usr/include/c++/10/bits/stl_algo.h:61,
from /usr/include/c++/10/algorithm:62,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_heap.h: In function 'void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<long long unsigned int*, std::vector<long long unsigned int> >; _Distance = int; _Tp = long long unsigned int; _Compare = __gnu_cxx::__ops::_Iter_less_iter]':
/usr/include/c++/10/bits/stl_heap.h:223:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long unsigned int*, std::vector<long long unsigned int> >' changed in GCC 7.1
223 | __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
| ^~~~~~~~~~~~~
In file included from /usr/include/c++/10/algorithm:62,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_algo.h: In function 'void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<long long unsigned int*, std::vector<long long unsigned int> >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]':
/usr/include/c++/10/bits/stl_algo.h:1839:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long unsigned int*, std::vector<long long unsigned int> >' changed in GCC 7.1
1839 | __insertion_sort(_RandomAccessIterator __first,
| ^~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1839:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long unsigned int*, std::vector<long long unsigned int> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:1839:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long unsigned int*, std::vector<long long unsigned int> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h: In function 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<long long unsigned int*, std::vector<long long unsigned int> >; _Size = int; _Compare = __gnu_cxx::__ops::_Iter_less_iter]':
/usr/include/c++/10/bits/stl_algo.h:1945:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long unsigned int*, std::vector<long long unsigned int> >' changed in GCC 7.1
1945 | __introsort_loop(_RandomAccessIterator __first,
| ^~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1945:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long unsigned int*, std::vector<long long unsigned int> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:1959:25: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long unsigned int*, std::vector<long long unsigned int> >' changed in GCC 7.1
1959 | std::__introsort_loop(__cut, __last, __depth_limit, __comp);
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const long long unsigned int&}; _Tp = long long unsigned int; _Alloc = std::allocator<long long unsigned int>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<long long unsigned int>::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<long long unsigned int>::iterator' changed in GCC 7.1
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const xtr_usf_c::usf_entry_t&}; _Tp = xtr_usf_c::usf_entry_t; _Alloc = std::allocator<xtr_usf_c::usf_entry_t>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<xtr_usf_c::usf_entry_t>::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
MSGFMT po/pl.po
In file included from /usr/include/c++/10/vector:67,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_vector.h: In member function 'virtual void tag_target_c::create_track_statistics_tags()':
/usr/include/c++/10/bits/stl_vector.h:1198:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long unsigned int*, std::vector<long long unsigned int> >' changed in GCC 7.1
1198 | _M_realloc_insert(end(), __x);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
In file included from /usr/include/c++/10/algorithm:62,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_algo.h:1974:25: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long unsigned int*, std::vector<long long unsigned int> >' changed in GCC 7.1
1974 | std::__introsort_loop(__first, __last,
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
1975 | std::__lg(__last - __first) * 2,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1976 | __comp);
| ~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1886:25: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long unsigned int*, std::vector<long long unsigned int> >' changed in GCC 7.1
1886 | std::__insertion_sort(__first, __first + int(_S_threshold), __comp);
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1891:23: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long unsigned int*, std::vector<long long unsigned int> >' changed in GCC 7.1
1891 | std::__insertion_sort(__first, __last, __comp);
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
VERIFY-PO-FMT po/nl.po
In file included from /usr/include/c++/10/vector:67,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_vector.h: In member function 'virtual void xtr_usf_c::handle_frame(xtr_frame_t&)':
/usr/include/c++/10/bits/stl_vector.h:1198:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<xtr_usf_c::usf_entry_t*, std::vector<xtr_usf_c::usf_entry_t> >' changed in GCC 7.1
1198 | _M_realloc_insert(end(), __x);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
MSGFMT po/nl.po
CXX src/output/p_video_for_windows.cpp
VERIFY-PO-FMT po/lt.po
MSGFMT po/lt.po
CXX src/propedit/segment_info_target.cpp
VERIFY-PO-FMT po/ko.po
MSGFMT po/ko.po
CXX src/extract/xtr_rmff.cpp
VERIFY-PO-FMT po/ja.po
MSGFMT po/ja.po
VERIFY-PO-FMT po/it.po
CXX src/propedit/propedit_cli_parser.cpp
MSGFMT po/it.po
VERIFY-PO-FMT po/fr.po
CXX src/output/p_vc1.cpp
MSGFMT po/fr.po
VERIFY-PO-FMT po/eu.po
MSGFMT po/eu.po
CXX src/extract/xtr_ogg.cpp
VERIFY-PO-FMT po/es.po
MSGFMT po/es.po
VERIFY-PO-FMT po/de.po
MSGFMT po/de.po
VERIFY-PO-FMT po/cs.po
MSGFMT po/cs.po
VERIFY-PO-FMT po/ca.po
MSGFMT po/ca.po
VERIFY-PO-FMT po/bg.po
MSGFMT po/bg.po
CXX src/propedit/propedit.cpp
CXX src/output/p_tta.cpp
PO4A doc/man/mkvtoolnix-gui.xml (zh_TW)
PO4A doc/man/mkvtoolnix-gui.xml (zh_TW)
XSLTPROC doc/man/zh_TW/mkvtoolnix-gui.xml
CXX src/extract/xtr_mpeg1_2.cpp
PO4A doc/man/mkvpropedit.xml (zh_TW)
XSLTPROC doc/man/zh_TW/mkvpropedit.xml
PO4A doc/man/mkvextract.xml (zh_TW)
XSLTPROC doc/man/zh_TW/mkvextract.xml
PO4A doc/man/mkvinfo.xml (zh_TW)
CXX src/output/p_truehd.cpp
CXX src/extract/xtr_ivf.cpp
XSLTPROC doc/man/zh_TW/mkvinfo.xml
PO4A doc/man/mkvmerge.xml (zh_TW)
CXX src/propedit/options.cpp
XSLTPROC doc/man/zh_TW/mkvmerge.xml
PO4A doc/man/mkvtoolnix-gui.xml (zh_CN)
CXX src/extract/xtr_hevc.cpp
CXX src/output/p_theora.cpp
PO4A doc/man/mkvtoolnix-gui.xml (zh_CN)
XSLTPROC doc/man/zh_CN/mkvtoolnix-gui.xml
PO4A doc/man/mkvpropedit.xml (zh_CN)
XSLTPROC doc/man/zh_CN/mkvpropedit.xml
PO4A doc/man/mkvextract.xml (zh_CN)
CXX src/propedit/chapter_target.cpp
XSLTPROC doc/man/zh_CN/mkvextract.xml
PO4A doc/man/mkvinfo.xml (zh_CN)
CXX src/extract/xtr_hdmv_textst.cpp
XSLTPROC doc/man/zh_CN/mkvinfo.xml
PO4A doc/man/mkvmerge.xml (zh_CN)
CXX src/output/p_textsubs.cpp
CXX src/propedit/change.cpp
XSLTPROC doc/man/zh_CN/mkvmerge.xml
CXX src/extract/xtr_hdmv_pgs.cpp
PO4A doc/man/mkvtoolnix-gui.xml (uk)
PO4A doc/man/mkvtoolnix-gui.xml (uk)
XSLTPROC doc/man/uk/mkvtoolnix-gui.xml
PO4A doc/man/mkvpropedit.xml (uk)
CXX src/output/p_ssa.cpp
CXX src/extract/xtr_base.cpp
XSLTPROC doc/man/uk/mkvpropedit.xml
PO4A doc/man/mkvextract.xml (uk)
XSLTPROC doc/man/uk/mkvextract.xml
PO4A doc/man/mkvinfo.xml (uk)
CXX src/propedit/attachment_target.cpp
XSLTPROC doc/man/uk/mkvinfo.xml
PO4A doc/man/mkvmerge.xml (uk)
CXX src/output/p_realaudio.cpp
XSLTPROC doc/man/uk/mkvmerge.xml
PO4A doc/man/mkvtoolnix-gui.xml (ru)
CXX src/extract/xtr_avi.cpp
PO4A doc/man/mkvtoolnix-gui.xml (ru)
XSLTPROC doc/man/ru/mkvtoolnix-gui.xml
PO4A doc/man/mkvpropedit.xml (ru)
CXX src/output/p_quicktime.cpp
XSLTPROC doc/man/ru/mkvpropedit.xml
PO4A doc/man/mkvextract.xml (ru)
XSLTPROC doc/man/ru/mkvextract.xml
AR src/propedit/libmtxpropedit.a
RANLIB src/propedit/libmtxpropedit.a
LINK src/mkvpropedit
PO4A doc/man/mkvinfo.xml (ru)
XSLTPROC doc/man/ru/mkvinfo.xml
CXX src/extract/xtr_avc.cpp
PO4A doc/man/mkvmerge.xml (ru)
CXX src/output/p_prores.cpp
XSLTPROC doc/man/ru/mkvmerge.xml
RCC src/mkvtoolnix-gui/qt_resources.qrc
CXX src/mkvtoolnix-gui/qt_resources.cpp
PO4A doc/man/mkvtoolnix-gui.xml (pl)
CXX src/output/p_pcm.cpp
CXX src/extract/xtr_alac.cpp
PO4A doc/man/mkvtoolnix-gui.xml (pl)
XSLTPROC doc/man/pl/mkvtoolnix-gui.xml
PO4A doc/man/mkvpropedit.xml (pl)
XSLTPROC doc/man/pl/mkvpropedit.xml
PO4A doc/man/mkvextract.xml (pl)
XSLTPROC doc/man/pl/mkvextract.xml
CXX src/extract/xtr_aac.cpp
PO4A doc/man/mkvinfo.xml (pl)
CXX src/output/p_passthrough.cpp
XSLTPROC doc/man/pl/mkvinfo.xml
PO4A doc/man/mkvmerge.xml (pl)
UIC src/mkvtoolnix-gui/forms/watch_jobs/tool.ui
UIC src/mkvtoolnix-gui/forms/main_window/main_window.ui
CXX src/mkvtoolnix-gui/watch_jobs/tool.cpp
XSLTPROC doc/man/pl/mkvmerge.xml
CXX src/extract/tracks.cpp
CXX src/output/p_opus.cpp
PO4A doc/man/mkvtoolnix-gui.xml (nl)
PO4A doc/man/mkvtoolnix-gui.xml (nl)
XSLTPROC doc/man/nl/mkvtoolnix-gui.xml
PO4A doc/man/mkvpropedit.xml (nl)
UIC src/mkvtoolnix-gui/forms/watch_jobs/tab.ui
CXX src/mkvtoolnix-gui/watch_jobs/tab.cpp
XSLTPROC doc/man/nl/mkvpropedit.xml
PO4A doc/man/mkvextract.xml (nl)
XSLTPROC doc/man/nl/mkvextract.xml
In file included from /usr/include/c++/10/bits/stl_algo.h:61,
from /usr/include/c++/10/algorithm:62,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_heap.h: In function 'void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<timestamp_t*, std::vector<timestamp_t> >; _Distance = int; _Tp = timestamp_t; _Compare = __gnu_cxx::__ops::_Iter_less_iter]':
/usr/include/c++/10/bits/stl_heap.h:223:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_t*, std::vector<timestamp_t> >' changed in GCC 7.1
223 | __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
| ^~~~~~~~~~~~~
In file included from /usr/include/c++/10/algorithm:62,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_algo.h: In function 'void std::__unguarded_linear_insert(_RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<timestamp_t*, std::vector<timestamp_t> >; _Compare = __gnu_cxx::__ops::_Val_less_iter]':
/usr/include/c++/10/bits/stl_algo.h:1819:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_t*, std::vector<timestamp_t> >' changed in GCC 7.1
1819 | __unguarded_linear_insert(_RandomAccessIterator __last,
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h: In function 'void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<timestamp_t*, std::vector<timestamp_t> >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]':
/usr/include/c++/10/bits/stl_algo.h:1839:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_t*, std::vector<timestamp_t> >' changed in GCC 7.1
1839 | __insertion_sort(_RandomAccessIterator __first,
| ^~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1839:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_t*, std::vector<timestamp_t> >' changed in GCC 7.1
PO4A doc/man/mkvinfo.xml (nl)
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {long long unsigned int, long long int&}; _Tp = timestamp_t; _Alloc = std::allocator<timestamp_t>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<timestamp_t>::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<timestamp_t>::iterator' changed in GCC 7.1
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {timestamp_t}; _Tp = timestamp_t; _Alloc = std::allocator<timestamp_t>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<timestamp_t>::iterator' changed in GCC 7.1
In file included from /usr/include/c++/10/algorithm:62,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_algo.h: In function 'void std::__heap_select(_RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<timestamp_t*, std::vector<timestamp_t> >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]':
/usr/include/c++/10/bits/stl_algo.h:1662:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_t*, std::vector<timestamp_t> >' changed in GCC 7.1
1662 | __heap_select(_RandomAccessIterator __first,
| ^~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1662:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_t*, std::vector<timestamp_t> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:1662:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_t*, std::vector<timestamp_t> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h: In function 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<timestamp_t*, std::vector<timestamp_t> >; _Size = int; _Compare = __gnu_cxx::__ops::_Iter_less_iter]':
/usr/include/c++/10/bits/stl_algo.h:1945:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_t*, std::vector<timestamp_t> >' changed in GCC 7.1
1945 | __introsort_loop(_RandomAccessIterator __first,
| ^~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1945:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_t*, std::vector<timestamp_t> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:1959:25: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_t*, std::vector<timestamp_t> >' changed in GCC 7.1
1959 | std::__introsort_loop(__cut, __last, __depth_limit, __comp);
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1937:25: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_t*, std::vector<timestamp_t> >' changed in GCC 7.1
1937 | std::__heap_select(__first, __middle, __last, __comp);
| ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h: In function 'void close_timestamp_files()':
/usr/include/c++/10/bits/stl_algo.h:1974:25: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_t*, std::vector<timestamp_t> >' changed in GCC 7.1
1974 | std::__introsort_loop(__first, __last,
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
1975 | std::__lg(__last - __first) * 2,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1976 | __comp);
| ~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1886:25: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_t*, std::vector<timestamp_t> >' changed in GCC 7.1
1886 | std::__insertion_sort(__first, __first + int(_S_threshold), __comp);
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1891:23: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_t*, std::vector<timestamp_t> >' changed in GCC 7.1
1891 | std::__insertion_sort(__first, __last, __comp);
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In function 'bool extract_tracks(kax_analyzer_c&, options_c::mode_options_c&)':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_t*, std::vector<timestamp_t> >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_t*, std::vector<timestamp_t> >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CXX src/output/p_mpeg4_p2.cpp
XSLTPROC doc/man/nl/mkvinfo.xml
PO4A doc/man/mkvmerge.xml (nl)
CXX src/extract/track_spec.cpp
XSLTPROC doc/man/nl/mkvmerge.xml
CXX src/extract/tags.cpp
PO4A doc/man/mkvtoolnix-gui.xml (ko)
PO4A doc/man/mkvtoolnix-gui.xml (ko)
CXX src/mkvtoolnix-gui/util/widget.cpp
XSLTPROC doc/man/ko/mkvtoolnix-gui.xml
PO4A doc/man/mkvpropedit.xml (ko)
CXX src/extract/options.cpp
XSLTPROC doc/man/ko/mkvpropedit.xml
CXX src/output/p_mpeg1_2.cpp
PO4A doc/man/mkvextract.xml (ko)
XSLTPROC doc/man/ko/mkvextract.xml
PO4A doc/man/mkvinfo.xml (ko)
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const track_spec_t&}; _Tp = track_spec_t; _Alloc = std::allocator<track_spec_t>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<track_spec_t>::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
XSLTPROC doc/man/ko/mkvinfo.xml
In file included from /usr/include/c++/10/vector:67,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_vector.h: In member function 'void options_c::merge_tracks_and_timestamps_targets()':
/usr/include/c++/10/bits/stl_vector.h:1198:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<track_spec_t*, std::vector<track_spec_t> >' changed in GCC 7.1
1198 | _M_realloc_insert(end(), __x);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
PO4A doc/man/mkvmerge.xml (ko)
CXX src/extract/extract_cli_parser.cpp
CXX src/mkvtoolnix-gui/util/waiting_spinner_widget.cpp
XSLTPROC doc/man/ko/mkvmerge.xml
PO4A doc/man/mkvtoolnix-gui.xml (ja)
CXX src/output/p_mp3.cpp
PO4A doc/man/mkvtoolnix-gui.xml (ja)
XSLTPROC doc/man/ja/mkvtoolnix-gui.xml
PO4A doc/man/mkvpropedit.xml (ja)
CXX src/mkvtoolnix-gui/util/unix_font.cpp
XSLTPROC doc/man/ja/mkvpropedit.xml
PO4A doc/man/mkvextract.xml (ja)
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const track_spec_t&}; _Tp = track_spec_t; _Alloc = std::allocator<track_spec_t>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<track_spec_t>::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/vector:67,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_vector.h: In member function 'void extract_cli_parser_c::add_extraction_spec()':
/usr/include/c++/10/bits/stl_vector.h:1198:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<track_spec_t*, std::vector<track_spec_t> >' changed in GCC 7.1
1198 | _M_realloc_insert(end(), __x);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
XSLTPROC doc/man/ja/mkvextract.xml
PO4A doc/man/mkvinfo.xml (ja)
CXX src/extract/cuesheets.cpp
XSLTPROC doc/man/ja/mkvinfo.xml
CXX src/mkvtoolnix-gui/util/tree.cpp
PO4A doc/man/mkvmerge.xml (ja)
CXX src/output/p_kate.cpp
XSLTPROC doc/man/ja/mkvmerge.xml
UIC src/mkvtoolnix-gui/forms/util/text_display_dialog.ui
CXX src/mkvtoolnix-gui/util/text_display_dialog.cpp
PO4A doc/man/mkvtoolnix-gui.xml (it)
CXX src/extract/cues.cpp
PO4A doc/man/mkvtoolnix-gui.xml (it)
XSLTPROC doc/man/it/mkvtoolnix-gui.xml
PO4A doc/man/mkvpropedit.xml (it)
CXX src/output/p_hevc_es.cpp
XSLTPROC doc/man/it/mkvpropedit.xml
PO4A doc/man/mkvextract.xml (it)
XSLTPROC doc/man/it/mkvextract.xml
PO4A doc/man/mkvinfo.xml (it)
CXX src/mkvtoolnix-gui/util/system_information.cpp
XSLTPROC doc/man/it/mkvinfo.xml
PO4A doc/man/mkvmerge.xml (it)
CXX src/output/p_hevc.cpp
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const cue_point_t&}; _Tp = cue_point_t; _Alloc = std::allocator<cue_point_t>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<cue_point_t>::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/vector:67,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_vector.h: In function 'bool extract_cues(kax_analyzer_c&, options_c::mode_options_c&)':
/usr/include/c++/10/bits/stl_vector.h:1198:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<cue_point_t*, std::vector<cue_point_t> >' changed in GCC 7.1
1198 | _M_realloc_insert(end(), __x);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
XSLTPROC doc/man/it/mkvmerge.xml
CXX src/extract/chapters.cpp
PO4A doc/man/mkvtoolnix-gui.xml (fr)
PO4A doc/man/mkvtoolnix-gui.xml (fr)
XSLTPROC doc/man/fr/mkvtoolnix-gui.xml
PO4A doc/man/mkvpropedit.xml (fr)
CXX src/mkvtoolnix-gui/util/style_helper.cpp
CXX src/extract/attachments.cpp
XSLTPROC doc/man/fr/mkvpropedit.xml
PO4A doc/man/mkvextract.xml (fr)
CXX src/output/p_hdmv_textst.cpp
XSLTPROC doc/man/fr/mkvextract.xml
PO4A doc/man/mkvinfo.xml (fr)
XSLTPROC doc/man/fr/mkvinfo.xml
PO4A doc/man/mkvmerge.xml (fr)
AR src/extract/libmtxextract.a
RANLIB src/extract/libmtxextract.a
CXX src/extract/mkvextract.cpp
CXX src/output/p_hdmv_pgs.cpp
XSLTPROC doc/man/fr/mkvmerge.xml
PO4A doc/man/mkvtoolnix-gui.xml (es)
PO4A doc/man/mkvtoolnix-gui.xml (es)
XSLTPROC doc/man/es/mkvtoolnix-gui.xml
PO4A doc/man/mkvpropedit.xml (es)
CXX src/output/p_generic_video.cpp
XSLTPROC doc/man/es/mkvpropedit.xml
PO4A doc/man/mkvextract.xml (es)
XSLTPROC doc/man/es/mkvextract.xml
LINK src/mkvextract
PO4A doc/man/mkvinfo.xml (es)
UIC src/mkvtoolnix-gui/forms/util/string_list_configuration_widget.ui
CXX src/mkvtoolnix-gui/util/string_list_configuration_widget.cpp
XSLTPROC doc/man/es/mkvinfo.xml
PO4A doc/man/mkvmerge.xml (es)
CXX src/output/p_flac.cpp
XSLTPROC doc/man/es/mkvmerge.xml
PO4A doc/man/mkvtoolnix-gui.xml (de)
XSLTPROC doc/man/mkvtoolnix-gui.xml
CXX src/mkvtoolnix-gui/util/string.cpp
PO4A doc/man/mkvtoolnix-gui.xml (de)
XSLTPROC doc/man/mkvpropedit.xml
XSLTPROC doc/man/de/mkvtoolnix-gui.xml
CXX src/output/p_dvbsub.cpp
XSLTPROC doc/man/mkvextract.xml
PO4A doc/man/mkvpropedit.xml (de)
XSLTPROC doc/man/mkvinfo.xml
XSLTPROC doc/man/mkvmerge.xml
XSLTPROC doc/man/de/mkvpropedit.xml
PO4A doc/man/mkvextract.xml (de)
CXX src/merge/mkvmerge.cpp
XSLTPROC doc/man/de/mkvextract.xml
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >}; _Tp = nlohmann::basic_json<>; _Alloc = std::allocator<nlohmann::basic_json<> >]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > >::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
PO4A doc/man/mkvinfo.xml (de)
/usr/include/c++/10/bits/vector.tcc: In function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >}; _Tp = nlohmann::basic_json<>; _Alloc = std::allocator<nlohmann::basic_json<> >]':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<nlohmann::basic_json<>*, std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > > >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CXX src/output/p_dts.cpp
XSLTPROC doc/man/de/mkvinfo.xml
PO4A doc/man/mkvmerge.xml (de)
CXX src/mkvtoolnix-gui/util/sleep_inhibitor/linux_logind.cpp
XSLTPROC doc/man/de/mkvmerge.xml
PO4A doc/man/mkvtoolnix-gui.xml (ca)
CXX src/mkvtoolnix-gui/util/sleep_inhibitor.cpp
PO4A doc/man/mkvtoolnix-gui.xml (ca)
XSLTPROC doc/man/ca/mkvtoolnix-gui.xml
PO4A doc/man/mkvpropedit.xml (ca)
CXX src/output/p_dirac.cpp
XSLTPROC doc/man/ca/mkvpropedit.xml
PO4A doc/man/mkvextract.xml (ca)
UIC src/mkvtoolnix-gui/forms/util/side_by_side_multi_select.ui
CXX src/mkvtoolnix-gui/util/side_by_side_multi_select.cpp
XSLTPROC doc/man/ca/mkvextract.xml
PO4A doc/man/mkvinfo.xml (ca)
XSLTPROC doc/man/ca/mkvinfo.xml
PO4A doc/man/mkvmerge.xml (ca)
XSLTPROC doc/man/ca/mkvmerge.xml
CXX src/output/p_avc_hevc_es.cpp
CXX src/mkvtoolnix-gui/util/settings.cpp
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const track_order_t&}; _Tp = track_order_t; _Alloc = std::allocator<track_order_t>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<track_order_t>::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/vector:67,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_vector.h: In function 'void parse_arg_track_order(const string&)':
/usr/include/c++/10/bits/stl_vector.h:1198:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<track_order_t*, std::vector<track_order_t> >' changed in GCC 7.1
1198 | _M_realloc_insert(end(), __x);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
PO4A doc/man/mkvtoolnix-gui.xml (bg)
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const double&}; _Tp = double; _Alloc = std::allocator<double>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<double>::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/map:60,
from /usr/include/boost/detail/container_fwd.hpp:94,
from /usr/include/boost/container_hash/extensions.hpp:22,
from /usr/include/boost/container_hash/hash.hpp:761,
from /usr/include/boost/multiprecision/number.hpp:29,
from /usr/include/boost/multiprecision/cpp_int.hpp:12,
from src/common/common.h:47,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple<const long long int&>, std::tuple<>}; _Key = long long int; _Val = std::pair<const long long int, bool>; _KeyOfValue = std::_Select1st<std::pair<const long long int, bool> >; _Compare = std::less<long long int>; _Alloc = std::allocator<std::pair<const long long int, bool> >]':
/usr/include/c++/10/bits/stl_tree.h:2458:7: note: parameter passing for argument of type 'std::_Rb_tree<long long int, std::pair<const long long int, bool>, std::_Select1st<std::pair<const long long int, bool> >, std::less<long long int>, std::allocator<std::pair<const long long int, bool> > >::const_iterator' changed in GCC 7.1
2458 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/map:61,
from /usr/include/boost/detail/container_fwd.hpp:94,
from /usr/include/boost/container_hash/extensions.hpp:22,
from /usr/include/boost/container_hash/hash.hpp:761,
from /usr/include/boost/multiprecision/number.hpp:29,
from /usr/include/boost/multiprecision/cpp_int.hpp:12,
from src/common/common.h:47,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_map.h: In function 'void parse_arg_boolean_track_option(const string&, const string&, std::map<long long int, bool>&)':
/usr/include/c++/10/bits/stl_map.h:501:37: note: parameter passing for argument of type 'std::_Rb_tree<long long int, std::pair<const long long int, bool>, std::_Select1st<std::pair<const long long int, bool> >, std::less<long long int>, std::allocator<std::pair<const long long int, bool> > >::const_iterator' changed in GCC 7.1
501 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
502 | std::tuple<const key_type&>(__k),
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
503 | std::tuple<>());
| ~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_map.h: In function 'void parse_arg_sync(std::string, const string&, track_info_c&, std::optional<long long int>)':
/usr/include/c++/10/bits/stl_map.h:501:37: note: parameter passing for argument of type 'std::_Rb_tree<long long int, std::pair<const long long int, bool>, std::_Select1st<std::pair<const long long int, bool> >, std::less<long long int>, std::allocator<std::pair<const long long int, bool> > >::const_iterator' changed in GCC 7.1
501 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
502 | std::tuple<const key_type&>(__k),
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
503 | std::tuple<>());
| ~~~~~~~~~~~~~~~
PO4A doc/man/mkvtoolnix-gui.xml (bg)
XSLTPROC doc/man/bg/mkvtoolnix-gui.xml
PO4A doc/man/mkvpropedit.xml (bg)
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >}; _Tp = nlohmann::basic_json<>; _Alloc = std::allocator<nlohmann::basic_json<> >]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > >::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In function 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long int, long long unsigned int, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> > >}; _Tp = nlohmann::basic_json<>; _Alloc = std::allocator<nlohmann::basic_json<> >]':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<nlohmann::basic_json<>*, std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > > >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
XSLTPROC doc/man/bg/mkvpropedit.xml
/usr/include/c++/10/bits/vector.tcc: In member function 'void nlohmann::basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType>::json_value::destroy(nlohmann::basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType>::value_t) [with ObjectType = std::map; ArrayType = std::vector; StringType = std::__cxx11::basic_string<char>; BooleanType = bool; NumberIntegerType = long long int; NumberUnsignedType = long long unsigned int; NumberFloatType = double; AllocatorType = std::allocator; JSONSerializer = nlohmann::adl_serializer; BinaryType = std::vector<unsigned char>]':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<nlohmann::basic_json<>*, std::vector<nlohmann::basic_json<>, std::allocator<nlohmann::basic_json<> > > >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PO4A doc/man/mkvextract.xml (bg)
In file included from /usr/include/c++/10/vector:67,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_vector.h: In function 'bool mtx::string::parse_property_to_struct(const string&, std::map<long long int, StructType>&) [with StructType = chroma_coordinates_t; DataType = double]':
/usr/include/c++/10/bits/stl_vector.h:1198:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<double*, std::vector<double> >' changed in GCC 7.1
1198 | _M_realloc_insert(end(), __x);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
/usr/include/c++/10/bits/stl_vector.h: In function 'bool mtx::string::parse_property_to_struct(const string&, std::map<long long int, StructType>&) [with StructType = white_colour_coordinates_t; DataType = double]':
/usr/include/c++/10/bits/stl_vector.h:1198:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<double*, std::vector<double> >' changed in GCC 7.1
1198 | _M_realloc_insert(end(), __x);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
XSLTPROC doc/man/bg/mkvextract.xml
PO4A doc/man/mkvinfo.xml (bg)
XSLTPROC doc/man/bg/mkvinfo.xml
In file included from /usr/include/c++/10/map:61,
from /usr/include/boost/detail/container_fwd.hpp:94,
from /usr/include/boost/container_hash/extensions.hpp:22,
from /usr/include/boost/container_hash/hash.hpp:761,
from /usr/include/boost/multiprecision/number.hpp:29,
from /usr/include/boost/multiprecision/cpp_int.hpp:12,
from src/common/common.h:47,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_map.h: In function 'void parse_args(std::vector<std::__cxx11::basic_string<char> >)':
/usr/include/c++/10/bits/stl_map.h:501:37: note: parameter passing for argument of type 'std::_Rb_tree<long long int, std::pair<const long long int, bool>, std::_Select1st<std::pair<const long long int, bool> >, std::less<long long int>, std::allocator<std::pair<const long long int, bool> > >::const_iterator' changed in GCC 7.1
501 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
502 | std::tuple<const key_type&>(__k),
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
503 | std::tuple<>());
| ~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_map.h:501:37: note: parameter passing for argument of type 'std::_Rb_tree<long long int, std::pair<const long long int, bool>, std::_Select1st<std::pair<const long long int, bool> >, std::less<long long int>, std::allocator<std::pair<const long long int, bool> > >::const_iterator' changed in GCC 7.1
501 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
502 | std::tuple<const key_type&>(__k),
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
503 | std::tuple<>());
| ~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_map.h:501:37: note: parameter passing for argument of type 'std::_Rb_tree<long long int, std::pair<const long long int, bool>, std::_Select1st<std::pair<const long long int, bool> >, std::less<long long int>, std::allocator<std::pair<const long long int, bool> > >::const_iterator' changed in GCC 7.1
501 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
502 | std::tuple<const key_type&>(__k),
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
503 | std::tuple<>());
| ~~~~~~~~~~~~~~~
PO4A doc/man/mkvmerge.xml (bg)
CXX src/output/p_avc_es.cpp
XSLTPROC doc/man/bg/mkvmerge.xml
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {QString}; _Tp = mtx::sort::natural_element_c<QString>; _Alloc = std::allocator<mtx::sort::natural_element_c<QString> >]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<mtx::sort::natural_element_c<QString> >::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In constructor 'mtx::sort::natural_string_c<StrT>::natural_string_c(const StrT&) [with StrT = QString]':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<mtx::sort::natural_element_c<QString>*, std::vector<mtx::sort::natural_element_c<QString> > >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CXX src/mkvtoolnix-gui/util/serial_worker_queue.cpp
CXX src/merge/webm.cpp
CXX src/output/p_avc.cpp
CXX src/merge/track_info.cpp
CXX src/mkvtoolnix-gui/util/recently_used_strings.cpp
CXX src/output/p_av1.cpp
CXX src/mkvtoolnix-gui/util/process.cpp
CXX src/merge/timestamp_factory.cpp
CXX src/mkvtoolnix-gui/util/option_file.cpp
CXX src/output/p_alac.cpp
CXX src/mkvtoolnix-gui/util/network_access_manager.cpp
CXX src/output/p_ac3.cpp
In file included from /usr/include/c++/10/bits/stl_algo.h:61,
from /usr/include/c++/10/algorithm:62,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_heap.h: In function 'void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<timestamp_range_c*, std::vector<timestamp_range_c> >; _Distance = int; _Tp = timestamp_range_c; _Compare = __gnu_cxx::__ops::_Iter_less_iter]':
/usr/include/c++/10/bits/stl_heap.h:223:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_range_c*, std::vector<timestamp_range_c> >' changed in GCC 7.1
223 | __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
| ^~~~~~~~~~~~~
In file included from /usr/include/c++/10/algorithm:62,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_algo.h: In function 'void std::__unguarded_linear_insert(_RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<timestamp_range_c*, std::vector<timestamp_range_c> >; _Compare = __gnu_cxx::__ops::_Val_less_iter]':
/usr/include/c++/10/bits/stl_algo.h:1819:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_range_c*, std::vector<timestamp_range_c> >' changed in GCC 7.1
1819 | __unguarded_linear_insert(_RandomAccessIterator __last,
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h: In function 'void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<timestamp_range_c*, std::vector<timestamp_range_c> >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]':
/usr/include/c++/10/bits/stl_algo.h:1839:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_range_c*, std::vector<timestamp_range_c> >' changed in GCC 7.1
1839 | __insertion_sort(_RandomAccessIterator __first,
| ^~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1839:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_range_c*, std::vector<timestamp_range_c> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:1839:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_range_c*, std::vector<timestamp_range_c> >' changed in GCC 7.1
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const timestamp_range_c&}; _Tp = timestamp_range_c; _Alloc = std::allocator<timestamp_range_c>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<timestamp_range_c>::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In member function 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::insert(std::vector<_Tp, _Alloc>::const_iterator, const value_type&) [with _Tp = timestamp_range_c; _Alloc = std::allocator<timestamp_range_c>]':
/usr/include/c++/10/bits/vector.tcc:130:5: note: parameter passing for argument of type 'std::vector<timestamp_range_c>::const_iterator' changed in GCC 7.1
130 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc:161:19: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_range_c*, std::vector<timestamp_range_c> >' changed in GCC 7.1
161 | _M_realloc_insert(begin() + (__position - cbegin()), __x);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const long long int&}; _Tp = long long int; _Alloc = std::allocator<long long int>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<long long int>::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const timestamp_duration_c&}; _Tp = timestamp_duration_c; _Alloc = std::allocator<timestamp_duration_c>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<timestamp_duration_c>::iterator' changed in GCC 7.1
In file included from /usr/include/c++/10/vector:67,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_vector.h: In member function 'virtual void timestamp_factory_v3_c::parse(mm_io_c&)':
/usr/include/c++/10/bits/stl_vector.h:1198:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_duration_c*, std::vector<timestamp_duration_c> >' changed in GCC 7.1
1198 | _M_realloc_insert(end(), __x);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
/usr/include/c++/10/bits/stl_vector.h:1198:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_duration_c*, std::vector<timestamp_duration_c> >' changed in GCC 7.1
1198 | _M_realloc_insert(end(), __x);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {long long int}; _Tp = long long int; _Alloc = std::allocator<long long int>]':
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<long long int>::iterator' changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<long long int>::iterator' changed in GCC 7.1
In file included from /usr/include/c++/10/map:60,
from /usr/include/boost/detail/container_fwd.hpp:94,
from /usr/include/boost/container_hash/extensions.hpp:22,
from /usr/include/boost/container_hash/hash.hpp:761,
from /usr/include/boost/multiprecision/number.hpp:29,
from /usr/include/boost/multiprecision/cpp_int.hpp:12,
from src/common/common.h:47,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple<const long long int&>, std::tuple<>}; _Key = long long int; _Val = std::pair<const long long int, long long int>; _KeyOfValue = std::_Select1st<std::pair<const long long int, long long int> >; _Compare = std::less<long long int>; _Alloc = std::allocator<std::pair<const long long int, long long int> >]':
/usr/include/c++/10/bits/stl_tree.h:2458:7: note: parameter passing for argument of type 'std::_Rb_tree<long long int, std::pair<const long long int, long long int>, std::_Select1st<std::pair<const long long int, long long int> >, std::less<long long int>, std::allocator<std::pair<const long long int, long long int> > >::const_iterator' changed in GCC 7.1
2458 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/vector:72,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/vector.tcc: In member function 'virtual void timestamp_factory_v2_c::parse(mm_io_c&)':
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >' changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/map:61,
from /usr/include/boost/detail/container_fwd.hpp:94,
from /usr/include/boost/container_hash/extensions.hpp:22,
from /usr/include/boost/container_hash/hash.hpp:761,
from /usr/include/boost/multiprecision/number.hpp:29,
from /usr/include/boost/multiprecision/cpp_int.hpp:12,
from src/common/common.h:47,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_map.h:501:37: note: parameter passing for argument of type 'std::_Rb_tree<long long int, std::pair<const long long int, long long int>, std::_Select1st<std::pair<const long long int, long long int> >, std::less<long long int>, std::allocator<std::pair<const long long int, long long int> > >::const_iterator' changed in GCC 7.1
501 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
502 | std::tuple<const key_type&>(__k),
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
503 | std::tuple<>());
| ~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_map.h:501:37: note: parameter passing for argument of type 'std::_Rb_tree<long long int, std::pair<const long long int, long long int>, std::_Select1st<std::pair<const long long int, long long int> >, std::less<long long int>, std::allocator<std::pair<const long long int, long long int> > >::const_iterator' changed in GCC 7.1
501 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
502 | std::tuple<const key_type&>(__k),
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
503 | std::tuple<>());
| ~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_map.h:501:37: note: parameter passing for argument of type 'std::_Rb_tree<long long int, std::pair<const long long int, long long int>, std::_Select1st<std::pair<const long long int, long long int> >, std::less<long long int>, std::allocator<std::pair<const long long int, long long int> > >::const_iterator' changed in GCC 7.1
501 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
502 | std::tuple<const key_type&>(__k),
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
503 | std::tuple<>());
| ~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/vector:67,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_vector.h:1198:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >' changed in GCC 7.1
1198 | _M_realloc_insert(end(), __x);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
In file included from /usr/include/c++/10/map:61,
from /usr/include/boost/detail/container_fwd.hpp:94,
from /usr/include/boost/container_hash/extensions.hpp:22,
from /usr/include/boost/container_hash/hash.hpp:761,
from /usr/include/boost/multiprecision/number.hpp:29,
from /usr/include/boost/multiprecision/cpp_int.hpp:12,
from src/common/common.h:47,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_map.h:501:37: note: parameter passing for argument of type 'std::_Rb_tree<long long int, std::pair<const long long int, long long int>, std::_Select1st<std::pair<const long long int, long long int> >, std::less<long long int>, std::allocator<std::pair<const long long int, long long int> > >::const_iterator' changed in GCC 7.1
501 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
502 | std::tuple<const key_type&>(__k),
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
503 | std::tuple<>());
| ~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_map.h:501:37: note: parameter passing for argument of type 'std::_Rb_tree<long long int, std::pair<const long long int, long long int>, std::_Select1st<std::pair<const long long int, long long int> >, std::less<long long int>, std::allocator<std::pair<const long long int, long long int> > >::const_iterator' changed in GCC 7.1
501 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
502 | std::tuple<const key_type&>(__k),
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
503 | std::tuple<>());
| ~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/vector:67,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_vector.h:1198:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >' changed in GCC 7.1
1198 | _M_realloc_insert(end(), __x);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
In file included from /usr/include/c++/10/algorithm:62,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_algo.h: In function 'void std::__heap_select(_RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<timestamp_range_c*, std::vector<timestamp_range_c> >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]':
/usr/include/c++/10/bits/stl_algo.h:1662:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_range_c*, std::vector<timestamp_range_c> >' changed in GCC 7.1
1662 | __heap_select(_RandomAccessIterator __first,
| ^~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1662:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_range_c*, std::vector<timestamp_range_c> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:1662:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_range_c*, std::vector<timestamp_range_c> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h: In function 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<timestamp_range_c*, std::vector<timestamp_range_c> >; _Size = int; _Compare = __gnu_cxx::__ops::_Iter_less_iter]':
/usr/include/c++/10/bits/stl_algo.h:1945:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_range_c*, std::vector<timestamp_range_c> >' changed in GCC 7.1
1945 | __introsort_loop(_RandomAccessIterator __first,
| ^~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1945:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_range_c*, std::vector<timestamp_range_c> >' changed in GCC 7.1
/usr/include/c++/10/bits/stl_algo.h:1959:25: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_range_c*, std::vector<timestamp_range_c> >' changed in GCC 7.1
1959 | std::__introsort_loop(__cut, __last, __depth_limit, __comp);
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1937:25: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_range_c*, std::vector<timestamp_range_c> >' changed in GCC 7.1
1937 | std::__heap_select(__first, __middle, __last, __comp);
| ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/vector:67,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_vector.h: In member function 'virtual void timestamp_factory_v1_c::parse(mm_io_c&)':
/usr/include/c++/10/bits/stl_vector.h:1198:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_range_c*, std::vector<timestamp_range_c> >' changed in GCC 7.1
1198 | _M_realloc_insert(end(), __x);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
In file included from /usr/include/c++/10/algorithm:62,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_algo.h:1974:25: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_range_c*, std::vector<timestamp_range_c> >' changed in GCC 7.1
1974 | std::__introsort_loop(__first, __last,
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
1975 | std::__lg(__last - __first) * 2,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1976 | __comp);
| ~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1886:25: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_range_c*, std::vector<timestamp_range_c> >' changed in GCC 7.1
1886 | std::__insertion_sort(__first, __first + int(_S_threshold), __comp);
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/stl_algo.h:1891:23: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_range_c*, std::vector<timestamp_range_c> >' changed in GCC 7.1
1891 | std::__insertion_sort(__first, __last, __comp);
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
src/merge/timestamp_factory.cpp:149:33: note: parameter passing for argument of type 'std::vector<timestamp_range_c>::const_iterator' changed in GCC 7.1
149 | m_ranges.insert(iit, t);
| ^
src/merge/timestamp_factory.cpp:159:42: note: parameter passing for argument of type 'std::vector<timestamp_range_c>::const_iterator' changed in GCC 7.1
159 | m_ranges.insert(m_ranges.begin(), t);
| ^
In file included from /usr/include/c++/10/vector:67,
from /usr/include/c++/10/functional:62,
from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/10/algorithm:74,
from src/common/common.h:21,
from src/common/common_pch.h:1:
/usr/include/c++/10/bits/stl_vector.h:1198:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<timestamp_range_c*, std::vector<timestamp_range_c> >' changed in GCC 7.1
1198 | _M_realloc_insert(end(), __x);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
CXX src/mkvtoolnix-gui/util/model.cpp
CXX src/merge/timestamp_calculator.cpp
CXX src/output/p_aac.cpp
CXX src/mkvtoolnix-gui/util/message_box.cpp
CXX src/merge/reader_detection_and_creation.cpp
src/merge/reader_detection_and_creation.cpp: In substitution of 'template<class _Functor> std::function<std::unique_ptr<generic_reader_c>(const std::shared_ptr<mm_io_c>&, const probe_range_info_t&)>& std::function<std::unique_ptr<generic_reader_c>(const std::shared_ptr<mm_io_c>&, const probe_range_info_t&)>::operator=<_Functor>(std::reference_wrapper<_Tp>) [with _Functor = <missing>]':
src/merge/reader_detection_and_creation.cpp:173:54: required from here
src/merge/reader_detection_and_creation.cpp:173:54: internal compiler error: Segmentation fault
173 | type_probe_map[mtx::file_type_e::avc_es] = &do_probe<avc_es_reader_c>;
| ^~~~~~~~~~~~~~~~~~~~~~~~~
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-10/README.Bugs> for instructions.
AR src/output/libmtxoutput.a
RANLIB src/output/libmtxoutput.a
CXX src/input/wav_pcm_demuxer.cpp
CXX src/mkvtoolnix-gui/util/media_player.cpp
UIC src/mkvtoolnix-gui/forms/util/language_display_widget.ui
CXX src/mkvtoolnix-gui/util/language_display_widget.cpp
CXX src/input/wav_dts_demuxer.cpp
UIC src/mkvtoolnix-gui/forms/util/language_dialog.ui
CXX src/mkvtoolnix-gui/util/language_dialog.cpp
CXX src/input/wav_ac3wav_demuxer.cpp
Preprocessed source stored into /tmp/ccsgjk8Q.out file, please attach this to your bugreport.
=== BEGIN GCC DUMP ===
23866: // Target: arm-linux-gnueabihf
23866: // Configured with: ../src/configure -v --with-pkgversion='Raspbian 10.2.1-6+rpi1' --with-bugurl=file:///usr/share/doc/gcc-10/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-10 --program-prefix=arm-linux-gnueabihf- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --disable-libquadmath-support --enable-plugin --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-sjlj-exceptions --with-arch=armv6 --with-fpu=vfp --with-float=hard --disable-werror --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf
23866: // Thread model: posix
23866: // Supported LTO compression algorithms: zlib zstd
23866: // gcc version 10.2.1 20210110 (Raspbian 10.2.1-6+rpi1)
23866: //
23866: // src/merge/reader_detection_and_creation.cpp: In substitution of 'template<class _Functor> std::function<std::unique_ptr<generic_reader_c>(const std::shared_ptr<mm_io_c>&, const probe_range_info_t&)>& std::function<std::unique_ptr<generic_reader_c>(const std::shared_ptr<mm_io_c>&, const probe_range_info_t&)>::operator=<_Functor>(std::reference_wrapper<_Tp>) [with _Functor = <missing>]':
23866: // src/merge/reader_detection_and_creation.cpp:173:54: required from here
23866: // src/merge/reader_detection_and_creation.cpp:173:54: internal compiler error: Segmentation fault
23866: // 173 | type_probe_map[mtx::file_type_e::avc_es] = &do_probe<avc_es_reader_c>;
23866: // | ^~~~~~~~~~~~~~~~~~~~~~~~~
23866: // Please submit a full bug report,
23866: // with preprocessed source if appropriate.
23866: // See <file:///usr/share/doc/gcc-10/README.Bugs> for instructions.
23866:
23866: // /usr/lib/gcc/arm-linux-gnueabihf/10/cc1plus -quiet -I /usr/include/arm-linux-gnueabihf/qt5/QtWidgets -I /usr/include/arm-linux-gnueabihf/qt5 -I /usr/include/arm-linux-gnueabihf/qt5/QtMultimedia -I /usr/include/arm-linux-gnueabihf/qt5 -I /usr/include/arm-linux-gnueabihf/qt5/QtGui -I /usr/include/arm-linux-gnueabihf/qt5 -I /usr/include/arm-linux-gnueabihf/qt5/QtNetwork -I /usr/include/arm-linux-gnueabihf/qt5 -I /usr/include/arm-linux-gnueabihf/qt5/QtConcurrent -I /usr/include/arm-linux-gnueabihf/qt5 -I /usr/include/arm-linux-gnueabihf/qt5/QtDBus -I /usr/include/arm-linux-gnueabihf/qt5 -I /usr/include/arm-linux-gnueabihf/qt5/QtCore -I /usr/include/arm-linux-gnueabihf/qt5 -I /usr/include -I . -I lib -I lib/avilib-0.6.10 -I src -imultilib . -imultiarch arm-linux-gnueabihf -MMD src/merge/reader_detection_and_creation.d -MF /<<PKGBUILDDIR>>/rake.d/dependency.d/tmp/src_merge_reader_detection_and_creation_o.d -MQ src/merge/reader_detection_and_creation.o -dD -D_GNU_SOURCE -D _FILE_OFFSET_BITS=64 -D QT_NO_KEYWORDS -D MTX_LOCALE_DIR="/usr/share/locale" -D MTX_PKG_DATA_DIR="/usr/share/mkvtoolnix" -D MTX_DOC_DIR="/usr/share/doc/mkvtoolnix-gui" -D DEBUG -D _FORTIFY_SOURCE=2 -D QT_WIDGETS_LIB -D QT_MULTIMEDIA_LIB -D QT_GUI_LIB -D QT_NETWORK_LIB -D QT_CONCURRENT_LIB -D QT_DBUS_LIB -D QT_CORE_LIB -D PIC -include src/common/common_pch.h src/merge/reader_detection_and_creation.cpp -quiet -dumpbase reader_detection_and_creation.cpp -mfloat-abi=hard -mfpu=vfp -mtls-dialect=gnu -marm -march=armv6+fp -auxbase-strip src/merge/reader_detection_and_creation.o -g3 -g -O2 -Wall -Wno-comment -Wfatal-errors -Wdate-time -Wnon-virtual-dtor -Wextra -Wno-missing-field-initializers -Wunused -Wpedantic -Wno-maybe-uninitialized -Wlogical-op -Wno-extra-semi -Wmisleading-indentation -Wduplicated-cond -Wshadow=compatible-local -Wduplicated-branches -Wno-deprecated-copy -Wformat=1 -Werror=format-security -std=c++17 -fstack-protector-strong -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -fPIC -fno-var-tracking -o - -frandom-seed=0 -fdump-noaddr
23866:
23866: # 1 "src/merge/reader_detection_and_creation.cpp"
23866: # 1 "/<<PKGBUILDDIR>>//"
23866: # 1 "<built-in>"
23866: #define __STDC__ 1
23866: #define __cplusplus 201703L
23866: #define __STDC_UTF_16__ 1
23866: #define __STDC_UTF_32__ 1
23866: #define __STDC_HOSTED__ 1
23866: #define __GNUC__ 10
23866: #define __GNUC_MINOR__ 2
23866: #define __GNUC_PATCHLEVEL__ 1
23866: #define __VERSION__ "10.2.1 20210110"
23866: #define __ATOMIC_RELAXED 0
23866: #define __ATOMIC_SEQ_CST 5
23866: #define __ATOMIC_ACQUIRE 2
23866: #define __ATOMIC_RELEASE 3
23866: #define __ATOMIC_ACQ_REL 4
23866: #define __ATOMIC_CONSUME 1
23866: #define __pic__ 2
23866: #define __PIC__ 2
23866: #define __OPTIMIZE__ 1
23866: #define __FINITE_MATH_ONLY__ 0
23866: #define __SIZEOF_INT__ 4
23866: #define __SIZEOF_LONG__ 4
23866: #define __SIZEOF_LONG_LONG__ 8
23866: #define __SIZEOF_SHORT__ 2
23866: #define __SIZEOF_FLOAT__ 4
23866: #define __SIZEOF_DOUBLE__ 8
23866: #define __SIZEOF_LONG_DOUBLE__ 8
23866: #define __SIZEOF_SIZE_T__ 4
23866: #define __CHAR_BIT__ 8
23866: #define __BIGGEST_ALIGNMENT__ 8
23866: #define __ORDER_LITTLE_ENDIAN__ 1234
23866: #define __ORDER_BIG_ENDIAN__ 4321
23866: #define __ORDER_PDP_ENDIAN__ 3412
23866: #define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
23866: #define __FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__
23866: #define __SIZEOF_POINTER__ 4
23866: #define __GNUG__ 10
23866: #define __SIZE_TYPE__ unsigned int
23866: #define __PTRDIFF_TYPE__ int
23866: #define __WCHAR_TYPE__ unsigned int
23866: #define __WINT_TYPE__ unsigned int
23866: #define __INTMAX_TYPE__ long long int
23866: #define __UINTMAX_TYPE__ long long unsigned int
23866: #define __CHAR16_TYPE__ short unsigned int
23866: #define __CHAR32_TYPE__ unsigned int
23866: #define __SIG_ATOMIC_TYPE__ int
23866: #define __INT8_TYPE__ signed char
23866: #define __INT16_TYPE__ short int
23866: #define __INT32_TYPE__ int
23866: #define __INT64_TYPE__ long long int
23866: #define __UINT8_TYPE__ unsigned char
23866: #define __UINT16_TYPE__ short unsigned int
23866: #define __UINT32_TYPE__ unsigned int
23866: #define __UINT64_TYPE__ long long unsigned int
23866: #define __INT_LEAST8_TYPE__ signed char
23866: #define __INT_LEAST16_TYPE__ short int
23866: #define __INT_LEAST32_TYPE__ int
23866: #define __INT_LEAST64_TYPE__ long long int
23866: #define __UINT_LEAST8_TYPE__ unsigned char
23866: #define __UINT_LEAST16_TYPE__ short unsigned int
23866: #define __UINT_LEAST32_TYPE__ unsigned int
23866: #define __UINT_LEAST64_TYPE__ long long unsigned int
23866: #define __INT_FAST8_TYPE__ signed char
23866: #define __INT_FAST16_TYPE__ int
23866: #define __INT_FAST32_TYPE__ int
23866: #define __INT_FAST64_TYPE__ long long int
23866: #define __UINT_FAST8_TYPE__ unsigned char
23866: #define __UINT_FAST16_TYPE__ unsigned int
23866: #define __UINT_FAST32_TYPE__ unsigned int
23866: #define __UINT_FAST64_TYPE__ long long unsigned int
23866: #define __INTPTR_TYPE__ int
23866: #define __UINTPTR_TYPE__ unsigned int
23866: #define __GXX_WEAK__ 1
23866: #define __DEPRECATED 1
23866: #define __GXX_RTTI 1
23866: #define __cpp_rtti 199711L
23866: #define __GXX_EXPERIMENTAL_CXX0X__ 1
23866: #define __cpp_binary_literals 201304L
23866: #define __cpp_hex_float 201603L
23866: #define __cpp_raw_strings 200710L
23866: #define __cpp_unicode_literals 200710L
23866: #define __cpp_user_defined_literals 200809L
23866: #define __cpp_lambdas 200907L
23866: #define __cpp_decltype 200707L
23866: #define __cpp_attributes 200809L
23866: #define __cpp_rvalue_reference 200610L
23866: #define __cpp_rvalue_references 200610L
23866: #define __cpp_variadic_templates 200704L
23866: #define __cpp_initializer_lists 200806L
23866: #define __cpp_delegating_constructors 200604L
23866: #define __cpp_nsdmi 200809L
23866: #define __cpp_inheriting_constructors 201511L
23866: #define __cpp_ref_qualifiers 200710L
23866: #define __cpp_alias_templates 200704L
23866: #define __cpp_return_type_deduction 201304L
23866: #define __cpp_init_captures 201304L
23866: #define __cpp_generic_lambdas 201304L
23866: #define __cpp_decltype_auto 201304L
23866: #define __cpp_aggregate_nsdmi 201304L
23866: #define __cpp_variable_templates 201304L
23866: #define __cpp_digit_separators 201309L
23866: #define __cpp_unicode_characters 201411L
23866: #define __cpp_static_assert 201411L
23866: #define __cpp_namespace_attributes 201411L
23866: #define __cpp_enumerator_attributes 201411L
23866: #define __cpp_nested_namespace_definitions 201411L
23866: #define __cpp_fold_expressions 201603L
23866: #define __cpp_nontype_template_args 201411L
23866: #define __cpp_range_based_for 201603L
23866: #define __cpp_constexpr 201603L
23866: #define __cpp_if_constexpr 201606L
23866: #define __cpp_capture_star_this 201603L
23866: #define __cpp_inline_variables 201606L
23866: #define __cpp_aggregate_bases 201603L
23866: #define __cpp_deduction_guides 201703L
23866: #define __cpp_noexcept_function_type 201510L
23866: #define __cpp_template_auto 201606L
23866: #define __cpp_structured_bindings 201606L
23866: #define __cpp_variadic_using 201611L
23866: #define __cpp_guaranteed_copy_elision 201606L
23866: #define __cpp_nontype_template_parameter_auto 201606L
23866: #define __cpp_sized_deallocation 201309L
23866: #define __cpp_aligned_new 201606L
23866: #define __STDCPP_DEFAULT_NEW_ALIGNMENT__ 8
23866: #define __cpp_template_template_args 201611L
23866: #define __cpp_threadsafe_static_init 200806L
23866: #define __EXCEPTIONS 1
23866: #define __cpp_exceptions 199711L
23866: #define __GXX_ABI_VERSION 1014
23866: #define __SCHAR_MAX__ 0x7f
23866: #define __SHRT_MAX__ 0x7fff
23866: #define __INT_MAX__ 0x7fffffff
23866: #define __LONG_MAX__ 0x7fffffffL
23866: #define __LONG_LONG_MAX__ 0x7fffffffffffffffLL
23866: #define __WCHAR_MAX__ 0xffffffffU
23866: #define __WCHAR_MIN__ 0U
23866: #define __WINT_MAX__ 0xffffffffU
23866: #define __WINT_MIN__ 0U
23866: #define __PTRDIFF_MAX__ 0x7fffffff
23866: #define __SIZE_MAX__ 0xffffffffU
23866: #define __SCHAR_WIDTH__ 8
23866: #define __SHRT_WIDTH__ 16
23866: #define __INT_WIDTH__ 32
23866: #define __LONG_WIDTH__ 32
23866: #define __LONG_LONG_WIDTH__ 64
23866: #define __WCHAR_WIDTH__ 32
23866: #define __WINT_WIDTH__ 32
23866: #define __PTRDIFF_WIDTH__ 32
23866: #define __SIZE_WIDTH__ 32
23866: #define __INTMAX_MAX__ 0x7fffffffffffffffLL
23866: #define __INTMAX_C(c) c ## LL
23866: #define __UINTMAX_MAX__ 0xffffffffffffffffULL
23866: #define __UINTMAX_C(c) c ## ULL
23866: #define __INTMAX_WIDTH__ 64
23866: #define __SIG_ATOMIC_MAX__ 0x7fffffff
23866: #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)
23866: #define __SIG_ATOMIC_WIDTH__ 32
23866: #define __INT8_MAX__ 0x7f
23866: #define __INT16_MAX__ 0x7fff
23866: #define __INT32_MAX__ 0x7fffffff
23866: #define __INT64_MAX__ 0x7fffffffffffffffLL
23866: #define __UINT8_MAX__ 0xff
23866: #define __UINT16_MAX__ 0xffff
23866: #define __UINT32_MAX__ 0xffffffffU
23866: #define __UINT64_MAX__ 0xffffffffffffffffULL
23866: #define __INT_LEAST8_MAX__ 0x7f
23866: #define __INT8_C(c) c
23866: #define __INT_LEAST8_WIDTH__ 8
23866: #define __INT_LEAST16_MAX__ 0x7fff
23866: #define __INT16_C(c) c
23866: #define __INT_LEAST16_WIDTH__ 16
23866: #define __INT_LEAST32_MAX__ 0x7fffffff
23866: #define __INT32_C(c) c
23866: #define __INT_LEAST32_WIDTH__ 32
23866: #define __INT_LEAST64_MAX__ 0x7fffffffffffffffLL
23866: #define __INT64_C(c) c ## LL
23866: #define __INT_LEAST64_WIDTH__ 64
23866: #define __UINT_LEAST8_MAX__ 0xff
23866: #define __UINT8_C(c) c
23866: #define __UINT_LEAST16_MAX__ 0xffff
23866: #define __UINT16_C(c) c
23866: #define __UINT_LEAST32_MAX__ 0xffffffffU
23866: #define __UINT32_C(c) c ## U
23866: #define __UINT_LEAST64_MAX__ 0xffffffffffffffffULL
23866: #define __UINT64_C(c) c ## ULL
23866: #define __INT_FAST8_MAX__ 0x7f
23866: #define __INT_FAST8_WIDTH__ 8
23866: #define __INT_FAST16_MAX__ 0x7fffffff
23866: #define __INT_FAST16_WIDTH__ 32
23866: #define __INT_FAST32_MAX__ 0x7fffffff
23866: #define __INT_FAST32_WIDTH__ 32
23866: #define __INT_FAST64_MAX__ 0x7fffffffffffffffLL
23866: #define __INT_FAST64_WIDTH__ 64
23866: #define __UINT_FAST8_MAX__ 0xff
23866: #define __UINT_FAST16_MAX__ 0xffffffffU
23866: #define __UINT_FAST32_MAX__ 0xffffffffU
23866: #define __UINT_FAST64_MAX__ 0xffffffffffffffffULL
23866: #define __INTPTR_MAX__ 0x7fffffff
23866: #define __INTPTR_WIDTH__ 32
23866: #define __UINTPTR_MAX__ 0xffffffffU
23866: #define __GCC_IEC_559 2
23866: #define __GCC_IEC_559_COMPLEX 2
23866: #define __FLT_EVAL_METHOD__ 0
23866: #define __FLT_EVAL_METHOD_TS_18661_3__ 0
23866: #define __DEC_EVAL_METHOD__ 2
23866: #define __FLT_RADIX__ 2
23866: #define __FLT_MANT_DIG__ 24
23866: #define __FLT_DIG__ 6
23866: #define __FLT_MIN_EXP__ (-125)
23866: #define __FLT_MIN_10_EXP__ (-37)
23866: #define __FLT_MAX_EXP__ 128
23866: #define __FLT_MAX_10_EXP__ 38
23866: #define __FLT_DECIMAL_DIG__ 9
23866: #define __FLT_MAX__ 3.4028234663852886e+38F
23866: #define __FLT_NORM_MAX__ 3.4028234663852886e+38F
23866: #define __FLT_MIN__ 1.1754943508222875e-38F
23866: #define __FLT_EPSILON__ 1.1920928955078125e-7F
23866: #define __FLT_DENORM_MIN__ 1.4012984643248171e-45F
23866: #define __FLT_HAS_DENORM__ 1
23866: #define __FLT_HAS_INFINITY__ 1
23866: #define __FLT_HAS_QUIET_NAN__ 1
23866: #define __DBL_MANT_DIG__ 53
23866: #define __DBL_DIG__ 15
23866: #define __DBL_MIN_EXP__ (-1021)
23866: #define __DBL_MIN_10_EXP__ (-307)
23866: #define __DBL_MAX_EXP__ 1024
23866: #define __DBL_MAX_10_EXP__ 308
23866: #define __DBL_DECIMAL_DIG__ 17
23866: #define __DBL_MAX__ double(1.7976931348623157e+308L)
23866: #define __DBL_NORM_MAX__ double(1.7976931348623157e+308L)
23866: #define __DBL_MIN__ double(2.2250738585072014e-308L)
23866: #define __DBL_EPSILON__ double(2.2204460492503131e-16L)
23866: #define __DBL_DENORM_MIN__ double(4.9406564584124654e-324L)
23866: #define __DBL_HAS_DENORM__ 1
23866: #define __DBL_HAS_INFINITY__ 1
23866: #define __DBL_HAS_QUIET_NAN__ 1
23866: #define __LDBL_MANT_DIG__ 53
23866: #define __LDBL_DIG__ 15
23866: #define __LDBL_MIN_EXP__ (-1021)
23866: #define __LDBL_MIN_10_EXP__ (-307)
23866: #define __LDBL_MAX_EXP__ 1024
23866: #define __LDBL_MAX_10_EXP__ 308
23866: #define __DECIMAL_DIG__ 17
23866: #define __LDBL_DECIMAL_DIG__ 17
23866: #define __LDBL_MAX__ 1.7976931348623157e+308L
23866: #define __LDBL_NORM_MAX__ 1.7976931348623157e+308L
23866: #define __LDBL_MIN__ 2.2250738585072014e-308L
23866: #define __LDBL_EPSILON__ 2.2204460492503131e-16L
23866: #define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L
23866: #define __LDBL_HAS_DENORM__ 1
23866: #define __LDBL_HAS_INFINITY__ 1
23866: #define __LDBL_HAS_QUIET_NAN__ 1
23866: #define __FLT32_MANT_DIG__ 24
23866: #define __FLT32_DIG__ 6
23866: #define __FLT32_MIN_EXP__ (-125)
23866: #define __FLT32_MIN_10_EXP__ (-37)
23866: #define __FLT32_MAX_EXP__ 128
23866: #define __FLT32_MAX_10_EXP__ 38
23866: #define __FLT32_DECIMAL_DIG__ 9
23866: #define __FLT32_MAX__ 3.4028234663852886e+38F32
23866: #define __FLT32_NORM_MAX__ 3.4028234663852886e+38F32
23866: #define __FLT32_MIN__ 1.1754943508222875e-38F32
23866: #define __FLT32_EPSILON__ 1.1920928955078125e-7F32
23866: #define __FLT32_DENORM_MIN__ 1.4012984643248171e-45F32
23866: #define __FLT32_HAS_DENORM__ 1
23866: #define __FLT32_HAS_INFINITY__ 1
23866: #define __FLT32_HAS_QUIET_NAN__ 1
23866: #define __FLT64_MANT_DIG__ 53
23866: #define __FLT64_DIG__ 15
23866: #define __FLT64_MIN_EXP__ (-1021)
23866: #define __FLT64_MIN_10_EXP__ (-307)
23866: #define __FLT64_MAX_EXP__ 1024
23866: #define __FLT64_MAX_10_EXP__ 308
23866: #define __FLT64_DECIMAL_DIG__ 17
23866: #define __FLT64_MAX__ 1.7976931348623157e+308F64
23866: #define __FLT64_NORM_MAX__ 1.7976931348623157e+308F64
23866: #define __FLT64_MIN__ 2.2250738585072014e-308F64
23866: #define __FLT64_EPSILON__ 2.2204460492503131e-16F64
23866: #define __FLT64_DENORM_MIN__ 4.9406564584124654e-324F64
23866: #define __FLT64_HAS_DENORM__ 1
23866: #define __FLT64_HAS_INFINITY__ 1
23866: #define __FLT64_HAS_QUIET_NAN__ 1
23866: #define __FLT32X_MANT_DIG__ 53
23866: #define __FLT32X_DIG__ 15
23866: #define __FLT32X_MIN_EXP__ (-1021)
23866: #define __FLT32X_MIN_10_EXP__ (-307)
23866: #define __FLT32X_MAX_EXP__ 1024
23866: #define __FLT32X_MAX_10_EXP__ 308
23866: #define __FLT32X_DECIMAL_DIG__ 17
23866: #define __FLT32X_MAX__ 1.7976931348623157e+308F32x
23866: #define __FLT32X_NORM_MAX__ 1.7976931348623157e+308F32x
23866: #define __FLT32X_MIN__ 2.2250738585072014e-308F32x
23866: #define __FLT32X_EPSILON__ 2.2204460492503131e-16F32x
23866: #define __FLT32X_DENORM_MIN__ 4.9406564584124654e-324F32x
23866: #define __FLT32X_HAS_DENORM__ 1
23866: #define __FLT32X_HAS_INFINITY__ 1
23866: #define __FLT32X_HAS_QUIET_NAN__ 1
23866: #define __SFRACT_FBIT__ 7
23866: #define __SFRACT_IBIT__ 0
23866: #define __SFRACT_MIN__ (-0.5HR-0.5HR)
23866: #define __SFRACT_MAX__ 0X7FP-7HR
23866: #define __SFRACT_EPSILON__ 0x1P-7HR
23866: #define __USFRACT_FBIT__ 8
23866: #define __USFRACT_IBIT__ 0
23866: #define __USFRACT_MIN__ 0.0UHR
23866: #define __USFRACT_MAX__ 0XFFP-8UHR
23866: #define __USFRACT_EPSILON__ 0x1P-8UHR
23866: #define __FRACT_FBIT__ 15
23866: #define __FRACT_IBIT__ 0
23866: #define __FRACT_MIN__ (-0.5R-0.5R)
23866: #define __FRACT_MAX__ 0X7FFFP-15R
23866: #define __FRACT_EPSILON__ 0x1P-15R
23866: #define __UFRACT_FBIT__ 16
23866: #define __UFRACT_IBIT__ 0
23866: #define __UFRACT_MIN__ 0.0UR
23866: #define __UFRACT_MAX__ 0XFFFFP-16UR
23866: #define __UFRACT_EPSILON__ 0x1P-16UR
23866: #define __LFRACT_FBIT__ 31
23866: #define __LFRACT_IBIT__ 0
23866: #define __LFRACT_MIN__ (-0.5LR-0.5LR)
23866: #define __LFRACT_MAX__ 0X7FFFFFFFP-31LR
23866: #define __LFRACT_EPSILON__ 0x1P-31LR
23866: #define __ULFRACT_FBIT__ 32
23866: #define __ULFRACT_IBIT__ 0
23866: #define __ULFRACT_MIN__ 0.0ULR
23866: #define __ULFRACT_MAX__ 0XFFFFFFFFP-32ULR
23866: #define __ULFRACT_EPSILON__ 0x1P-32ULR
23866: #define __LLFRACT_FBIT__ 63
23866: #define __LLFRACT_IBIT__ 0
23866: #define __LLFRACT_MIN__ (-0.5LLR-0.5LLR)
23866: #define __LLFRACT_MAX__ 0X7FFFFFFFFFFFFFFFP-63LLR
23866: #define __LLFRACT_EPSILON__ 0x1P-63LLR
23866: #define __ULLFRACT_FBIT__ 64
23866: #define __ULLFRACT_IBIT__ 0
23866: #define __ULLFRACT_MIN__ 0.0ULLR
23866: #define __ULLFRACT_MAX__ 0XFFFFFFFFFFFFFFFFP-64ULLR
23866: #define __ULLFRACT_EPSILON__ 0x1P-64ULLR
23866: #define __SACCUM_FBIT__ 7
23866: #define __SACCUM_IBIT__ 8
23866: #define __SACCUM_MIN__ (-0X1P7HK-0X1P7HK)
23866: #define __SACCUM_MAX__ 0X7FFFP-7HK
23866: #define __SACCUM_EPSILON__ 0x1P-7HK
23866: #define __USACCUM_FBIT__ 8
23866: #define __USACCUM_IBIT__ 8
23866: #define __USACCUM_MIN__ 0.0UHK
23866: #define __USACCUM_MAX__ 0XFFFFP-8UHK
23866: #define __USACCUM_EPSILON__ 0x1P-8UHK
23866: #define __ACCUM_FBIT__ 15
23866: #define __ACCUM_IBIT__ 16
23866: #define __ACCUM_MIN__ (-0X1P15K-0X1P15K)
23866: #define __ACCUM_MAX__ 0X7FFFFFFFP-15K
23866: #define __ACCUM_EPSILON__ 0x1P-15K
23866: #define __UACCUM_FBIT__ 16
23866: #define __UACCUM_IBIT__ 16
23866: #define __UACCUM_MIN__ 0.0UK
23866: #define __UACCUM_MAX__ 0XFFFFFFFFP-16UK
23866: #define __UACCUM_EPSILON__ 0x1P-16UK
23866: #define __LACCUM_FBIT__ 31
23866: #define __LACCUM_IBIT__ 32
23866: #define __LACCUM_MIN__ (-0X1P31LK-0X1P31LK)
23866: #define __LACCUM_MAX__ 0X7FFFFFFFFFFFFFFFP-31LK
23866: #define __LACCUM_EPSILON__ 0x1P-31LK
23866: #define __ULACCUM_FBIT__ 32
23866: #define __ULACCUM_IBIT__ 32
23866: #define __ULACCUM_MIN__ 0.0ULK
23866: #define __ULACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULK
23866: #define __ULACCUM_EPSILON__ 0x1P-32ULK
23866: #define __LLACCUM_FBIT__ 31
23866: #define __LLACCUM_IBIT__ 32
23866: #define __LLACCUM_MIN__ (-0X1P31LLK-0X1P31LLK)
23866: #define __LLACCUM_MAX__ 0X7FFFFFFFFFFFFFFFP-31LLK
23866: #define __LLACCUM_EPSILON__ 0x1P-31LLK
23866: #define __ULLACCUM_FBIT__ 32
23866: #define __ULLACCUM_IBIT__ 32
23866: #define __ULLACCUM_MIN__ 0.0ULLK
23866: #define __ULLACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULLK
23866: #define __ULLACCUM_EPSILON__ 0x1P-32ULLK
23866: #define __QQ_FBIT__ 7
23866: #define __QQ_IBIT__ 0
23866: #define __HQ_FBIT__ 15
23866: #define __HQ_IBIT__ 0
23866: #define __SQ_FBIT__ 31
23866: #define __SQ_IBIT__ 0
23866: #define __DQ_FBIT__ 63
23866: #define __DQ_IBIT__ 0
23866: #define __TQ_FBIT__ 127
23866: #define __TQ_IBIT__ 0
23866: #define __UQQ_FBIT__ 8
23866: #define __UQQ_IBIT__ 0
23866: #define __UHQ_FBIT__ 16
23866: #define __UHQ_IBIT__ 0
23866: #define __USQ_FBIT__ 32
23866: #define __USQ_IBIT__ 0
23866: #define __UDQ_FBIT__ 64
23866: #define __UDQ_IBIT__ 0
23866: #define __UTQ_FBIT__ 128
23866: #define __UTQ_IBIT__ 0
23866: #define __HA_FBIT__ 7
23866: #define __HA_IBIT__ 8
23866: #define __SA_FBIT__ 15
23866: #define __SA_IBIT__ 16
23866: #define __DA_FBIT__ 31
23866: #define __DA_IBIT__ 32
23866: #define __TA_FBIT__ 63
23866: #define __TA_IBIT__ 64
23866: #define __UHA_FBIT__ 8
23866: #define __UHA_IBIT__ 8
23866: #define __USA_FBIT__ 16
23866: #define __USA_IBIT__ 16
23866: #define __UDA_FBIT__ 32
23866: #define __UDA_IBIT__ 32
23866: #define __UTA_FBIT__ 64
23866: #define __UTA_IBIT__ 64
23866: #define __REGISTER_PREFIX__
23866: #define __USER_LABEL_PREFIX__
23866: #define __GNUC_STDC_INLINE__ 1
23866: #define __STRICT_ANSI__ 1
23866: #define __CHAR_UNSIGNED__ 1
23866: #define __WCHAR_UNSIGNED__ 1
23866: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
23866: #define __GCC_ATOMIC_BOOL_LOCK_FREE 1
23866: #define __GCC_ATOMIC_CHAR_LOCK_FREE 1
23866: #define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 1
23866: #define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2
23866: #define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2
23866: #define __GCC_ATOMIC_SHORT_LOCK_FREE 1
23866: #define __GCC_ATOMIC_INT_LOCK_FREE 2
23866: #define __GCC_ATOMIC_LONG_LOCK_FREE 2
23866: #define __GCC_ATOMIC_LLONG_LOCK_FREE 1
23866: #define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1
23866: #define __GCC_ATOMIC_POINTER_LOCK_FREE 2
23866: #define __HAVE_SPECULATION_SAFE_VALUE 1
23866: #define __GCC_HAVE_DWARF2_CFI_ASM 1
23866: #define __PRAGMA_REDEFINE_EXTNAME 1
23866: #define __SSP_STRONG__ 3
23866: #define __SIZEOF_WCHAR_T__ 4
23866: #define __SIZEOF_WINT_T__ 4
23866: #define __SIZEOF_PTRDIFF_T__ 4
23866: #define __ARM_FEATURE_DSP 1
23866: #define __ARM_FEATURE_QBIT 1
23866: #define __ARM_FEATURE_SAT 1
23866: #undef __ARM_FEATURE_CRYPTO
23866: # 1 "<built-in>"
23866: #define __ARM_FEATURE_UNALIGNED 1
23866: #undef __ARM_FEATURE_QRDMX
23866: # 1 "<built-in>"
23866: #undef __ARM_FEATURE_CRC32
23866: # 1 "<built-in>"
23866: #undef __ARM_FEATURE_DOTPROD
23866: # 1 "<built-in>"
23866: #undef __ARM_FEATURE_COMPLEX
23866: # 1 "<built-in>"
23866: #define __ARM_32BIT_STATE 1
23866: #undef __ARM_FEATURE_MVE
23866: # 1 "<built-in>"
23866: #undef __ARM_FEATURE_CMSE
23866: # 1 "<built-in>"
23866: #undef __ARM_FEATURE_LDREX
23866: # 1 "<built-in>"
23866: #define __ARM_FEATURE_LDREX 4
23866: #define __ARM_FEATURE_CLZ 1
23866: #undef __ARM_FEATURE_NUMERIC_MAXMIN
23866: # 1 "<built-in>"
23866: #define __ARM_FEATURE_SIMD32 1
23866: #define __ARM_SIZEOF_MINIMAL_ENUM 4
23866: #define __ARM_SIZEOF_WCHAR_T 4
23866: #undef __ARM_ARCH_PROFILE
23866: # 1 "<built-in>"
23866: #define __arm__ 1
23866: #undef __ARM_ARCH
23866: # 1 "<built-in>"
23866: #define __ARM_ARCH 6
23866: #define __ARM_ARCH_ISA_ARM 1
23866: #define __APCS_32__ 1
23866: #define __GCC_ASM_FLAG_OUTPUTS__ 1
23866: #undef __thumb__
23866: # 1 "<built-in>"
23866: #undef __thumb2__
23866: # 1 "<built-in>"
23866: #undef __THUMBEL__
23866: # 1 "<built-in>"
23866: #undef __ARM_ARCH_ISA_THUMB
23866: # 1 "<built-in>"
23866: #define __ARM_ARCH_ISA_THUMB 1
23866: #define __ARMEL__ 1
23866: #define __VFP_FP__ 1
23866: #undef __ARM_FP
23866: # 1 "<built-in>"
23866: #define __ARM_FP 12
23866: #undef __ARM_FP16_FORMAT_IEEE
23866: # 1 "<built-in>"
23866: #undef __ARM_FP16_FORMAT_ALTERNATIVE
23866: # 1 "<built-in>"
23866: #undef __ARM_FP16_ARGS
23866: # 1 "<built-in>"
23866: #undef __ARM_FEATURE_FP16_SCALAR_ARITHMETIC
23866: # 1 "<built-in>"
23866: #undef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
23866: # 1 "<built-in>"
23866: #undef __ARM_FEATURE_FP16_FML
23866: # 1 "<built-in>"
23866: #undef __ARM_FEATURE_FMA
23866: # 1 "<built-in>"
23866: #undef __ARM_NEON__
23866: # 1 "<built-in>"
23866: #undef __ARM_NEON
23866: # 1 "<built-in>"
23866: #undef __ARM_NEON_FP
23866: # 1 "<built-in>"
23866: #define __THUMB_INTERWORK__ 1
23866: #define __ARM_ARCH_6__ 1
23866: #define __ARM_PCS_VFP 1
23866: #define __ARM_EABI__ 1
23866: #undef __FDPIC__
23866: # 1 "<built-in>"
23866: #undef __ARM_ARCH_EXT_IDIV__
23866: # 1 "<built-in>"
23866: #undef __ARM_FEATURE_IDIV
23866: # 1 "<built-in>"
23866: #undef __ARM_ASM_SYNTAX_UNIFIED__
23866: # 1 "<built-in>"
23866: #undef __ARM_FEATURE_COPROC
23866: # 1 "<built-in>"
23866: #define __ARM_FEATURE_COPROC 15
23866: #undef __ARM_FEATURE_CDE
23866: # 1 "<built-in>"
23866: #undef __ARM_FEATURE_CDE_COPROC
23866: # 1 "<built-in>"
23866: #undef __ARM_FEATURE_MATMUL_INT8
23866: # 1 "<built-in>"
23866: #undef __ARM_FEATURE_BF16_SCALAR_ARITHMETIC
23866: # 1 "<built-in>"
23866: #undef __ARM_FEATURE_BF16_VECTOR_ARITHMETIC
23866: # 1 "<built-in>"
23866: #undef __ARM_BF16_FORMAT_ALTERNATIVE
23866: # 1 "<built-in>"
23866: #define __GXX_TYPEINFO_EQUALITY_INLINE 0
23866: #define __gnu_linux__ 1
23866: #define __linux 1
23866: #define __linux__ 1
23866: #define __unix 1
23866: #define __unix__ 1
23866: #define __ELF__ 1
23866: # 1 "<command-line>"
23866: #define _GNU_SOURCE 1
23866: #define _FILE_OFFSET_BITS 64
23866: #define QT_NO_KEYWORDS 1
23866: #define MTX_LOCALE_DIR "/usr/share/locale"
23866: #define MTX_PKG_DATA_DIR "/usr/share/mkvtoolnix"
23866: #define MTX_DOC_DIR "/usr/share/doc/mkvtoolnix-gui"
23866: #define DEBUG 1
23866: #define _FORTIFY_SOURCE 2
23866: #define QT_WIDGETS_LIB 1
23866: #define QT_MULTIMEDIA_LIB 1
23866: #define QT_GUI_LIB 1
23866: #define QT_NETWORK_LIB 1
23866: #define QT_CONCURRENT_LIB 1
23866: #define QT_DBUS_LIB 1
23866: #define QT_CORE_LIB 1
23866: #define PIC 1
23866: # 1 "/usr/include/stdc-predef.h" 1 3 4
23866: # 19 "/usr/include/stdc-predef.h" 3 4
23866: #define _STDC_PREDEF_H 1
23866: # 38 "/usr/include/stdc-predef.h" 3 4
23866: #define __STDC_IEC_559__ 1
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __STDC_IEC_559_COMPLEX__ 1
23866: # 58 "/usr/include/stdc-predef.h" 3 4
23866: #define __STDC_ISO_10646__ 201706L
23866: # 1 "<command-line>" 2
23866: # 1 "./src/common/common_pch.h" 1
23866: # 1 "src/common/common.h" 1
23866: # 14 "src/common/common.h"
23866:
23866:
23866: #undef min
23866: #undef max
23866:
23866: # 1 "src/common/os.h" 1
23866: # 13 "src/common/os.h"
23866:
23866:
23866: # 1 "./config.h" 1
23866:
23866:
23866:
23866:
23866: #define GWINSZ_IN_SYS_IOCTL 1
23866:
23866:
23866:
23866:
23866:
23866: #define HAVE_BOOST
23866:
23866:
23866: #define HAVE_BOOST_OPERATORS_HPP 1
23866:
23866:
23866: #define HAVE_CMARK
23866:
23866:
23866: #define HAVE_DVDREAD
23866:
23866:
23866: #define HAVE_FLAC_DECODER_SKIP 1
23866:
23866:
23866: #define HAVE_FLAC_FORMAT_H 1
23866:
23866:
23866:
23866:
23866:
23866: #define HAVE_GETTEXT 1
23866:
23866:
23866:
23866:
23866:
23866: #define HAVE_ICONV_H 1
23866:
23866:
23866: #define HAVE_INTTYPES_H 1
23866:
23866:
23866: #define HAVE_LIBINTL_H 1
23866:
23866:
23866:
23866:
23866:
23866: #define HAVE_NLOHMANN_JSONCPP 1
23866:
23866:
23866: #define HAVE_NL_LANGINFO 1
23866: # 62 "./config.h"
23866: #define HAVE_OGG_OGG_H 1
23866:
23866:
23866:
23866:
23866:
23866: #define HAVE_QT 1
23866:
23866:
23866: #define HAVE_QTDBUS 1
23866:
23866:
23866:
23866:
23866:
23866: #define HAVE_STDINT_H 1
23866:
23866:
23866: #define HAVE_STDIO_H 1
23866:
23866:
23866: #define HAVE_STDLIB_H 1
23866:
23866:
23866: #define HAVE_STRINGS_H 1
23866:
23866:
23866: #define HAVE_STRING_H 1
23866:
23866:
23866:
23866:
23866:
23866: #define HAVE_SYSCALL 1
23866:
23866:
23866: #define HAVE_SYS_IOCTL_H 1
23866:
23866:
23866: #define HAVE_SYS_STAT_H 1
23866:
23866:
23866: #define HAVE_SYS_SYSCALL_H 1
23866:
23866:
23866: #define HAVE_SYS_TYPES_H 1
23866:
23866:
23866: #define HAVE_TIOCGWINSZ 1
23866:
23866:
23866: #define HAVE_UNISTD_H 1
23866:
23866:
23866:
23866:
23866:
23866: #define HAVE_UTF8_H 1
23866:
23866:
23866: #define HAVE_VORBIS_CODEC_H 1
23866:
23866:
23866: #define ICONV_CONST
23866: # 134 "./config.h"
23866: #define PACKAGE_BUGREPORT "https://gitlab.com/mbunkus/mkvtoolnix/issues/"
23866:
23866:
23866: #define PACKAGE_NAME "MKVToolNix"
23866:
23866:
23866: #define PACKAGE_STRING "MKVToolNix 61.0.0"
23866:
23866:
23866: #define PACKAGE_TARNAME "mkvtoolnix"
23866:
23866:
23866: #define PACKAGE_URL ""
23866:
23866:
23866: #define PACKAGE_VERSION "61.0.0"
23866:
23866:
23866: #define SIZEOF_INT 4
23866:
23866:
23866: #define SIZEOF_LONG 4
23866:
23866:
23866: #define SIZEOF_LONG_LONG 8
23866:
23866:
23866:
23866:
23866: #define STDC_HEADERS 1
23866:
23866:
23866:
23866:
23866:
23866: #define USE_PRECOMPILED_HEADERS 1
23866: # 16 "src/common/os.h" 2
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define COMP_GCC
23866: #define SYS_UNIX
23866: # 36 "src/common/os.h"
23866: #define SYS_LINUX
23866: # 56 "src/common/os.h"
23866: #define PACKED_STRUCTURE __attribute__((__packed__))
23866: # 20 "src/common/common.h" 2
23866:
23866: # 1 "/usr/include/c++/10/algorithm" 1 3
23866: # 56 "/usr/include/c++/10/algorithm" 3
23866: #define _GLIBCXX_ALGORITHM 1
23866:
23866:
23866: # 59 "/usr/include/c++/10/algorithm" 3
23866:
23866: # 1 "/usr/include/c++/10/utility" 1 3
23866: # 56 "/usr/include/c++/10/utility" 3
23866: #define _GLIBCXX_UTILITY 1
23866:
23866:
23866: # 59 "/usr/include/c++/10/utility" 3
23866: # 68 "/usr/include/c++/10/utility" 3
23866: # 1 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 1 3
23866: # 31 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define _GLIBCXX_CXX_CONFIG_H 1
23866:
23866:
23866: #define _GLIBCXX_RELEASE 10
23866:
23866:
23866: #define __GLIBCXX__ 20210110
23866: # 46 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define _GLIBCXX_PURE __attribute__ ((__pure__))
23866:
23866:
23866:
23866: #define _GLIBCXX_CONST __attribute__ ((__const__))
23866:
23866:
23866:
23866: #define _GLIBCXX_NORETURN __attribute__ ((__noreturn__))
23866: # 67 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1
23866:
23866:
23866: #define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V)))
23866: # 84 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define _GLIBCXX_USE_DEPRECATED 1
23866:
23866:
23866:
23866: #define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__))
23866: #define _GLIBCXX_DEPRECATED_SUGGEST(ALT) __attribute__ ((__deprecated__ ("use '" ALT "' instead")))
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX17_DEPRECATED [[__deprecated__]]
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX20_DEPRECATED(MSG)
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11")))
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_NODISCARD [[__nodiscard__]]
23866: # 127 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define _GLIBCXX_CONSTEXPR constexpr
23866: #define _GLIBCXX_USE_CONSTEXPR constexpr
23866: # 137 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define _GLIBCXX14_CONSTEXPR constexpr
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX17_CONSTEXPR constexpr
23866: # 155 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define _GLIBCXX20_CONSTEXPR
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX17_INLINE inline
23866: # 170 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define _GLIBCXX_NOEXCEPT noexcept
23866: #define _GLIBCXX_NOEXCEPT_IF(...) noexcept(__VA_ARGS__)
23866: #define _GLIBCXX_USE_NOEXCEPT noexcept
23866: #define _GLIBCXX_THROW(_EXC)
23866: # 183 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC))
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_NOEXCEPT_PARM , bool _NE
23866: #define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE)
23866: # 212 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define _GLIBCXX_EXTERN_TEMPLATE 1
23866: # 262 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866:
23866: # 262 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: namespace std
23866: {
23866: typedef unsigned int size_t;
23866: typedef int ptrdiff_t;
23866:
23866:
23866: typedef decltype(nullptr) nullptr_t;
23866:
23866: }
23866:
23866: #define _GLIBCXX_USE_DUAL_ABI 1
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_USE_CXX11_ABI 1
23866:
23866:
23866:
23866: namespace std
23866: {
23866: inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { }
23866: }
23866: namespace __gnu_cxx
23866: {
23866: inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { }
23866: }
23866: #define _GLIBCXX_NAMESPACE_CXX11 __cxx11::
23866: #define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 {
23866: #define _GLIBCXX_END_NAMESPACE_CXX11 }
23866: #define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11
23866: # 304 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define _GLIBCXX_INLINE_VERSION 0
23866: # 334 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define _GLIBCXX_BEGIN_NAMESPACE_VERSION
23866: #define _GLIBCXX_END_NAMESPACE_VERSION
23866: # 393 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define _GLIBCXX_STD_C std
23866: #define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
23866: #define _GLIBCXX_END_NAMESPACE_CONTAINER
23866: # 404 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define _GLIBCXX_STD_A std
23866: #define _GLIBCXX_BEGIN_NAMESPACE_ALGO
23866: #define _GLIBCXX_END_NAMESPACE_ALGO
23866:
23866:
23866:
23866:
23866: #undef _GLIBCXX_LONG_DOUBLE_COMPAT
23866: # 423 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define _GLIBCXX_NAMESPACE_LDBL
23866: #define _GLIBCXX_BEGIN_NAMESPACE_LDBL
23866: #define _GLIBCXX_END_NAMESPACE_LDBL
23866:
23866:
23866: #define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11
23866: #define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11
23866: #define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11
23866: # 476 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define __glibcxx_assert(_Condition)
23866: # 501 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A)
23866:
23866:
23866: #define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A)
23866:
23866:
23866:
23866: #define _GLIBCXX_BEGIN_EXTERN_C extern "C" {
23866: #define _GLIBCXX_END_EXTERN_C }
23866:
23866: #define _GLIBCXX_USE_ALLOCATOR_NEW 1
23866: # 522 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: # 1 "/usr/include/arm-linux-gnueabihf/c++/10/bits/os_defines.h" 1 3
23866: # 31 "/usr/include/arm-linux-gnueabihf/c++/10/bits/os_defines.h" 3
23866: #define _GLIBCXX_OS_DEFINES 1
23866:
23866:
23866:
23866:
23866:
23866: #define __NO_CTYPE 1
23866:
23866: # 1 "/usr/include/features.h" 1 3 4
23866: # 19 "/usr/include/features.h" 3 4
23866: #define _FEATURES_H 1
23866: # 120 "/usr/include/features.h" 3 4
23866: #undef __USE_ISOC11
23866: #undef __USE_ISOC99
23866: #undef __USE_ISOC95
23866: #undef __USE_ISOCXX11
23866: #undef __USE_POSIX
23866: #undef __USE_POSIX2
23866: #undef __USE_POSIX199309
23866: #undef __USE_POSIX199506
23866: #undef __USE_XOPEN
23866: #undef __USE_XOPEN_EXTENDED
23866: #undef __USE_UNIX98
23866: #undef __USE_XOPEN2K
23866: #undef __USE_XOPEN2KXSI
23866: #undef __USE_XOPEN2K8
23866: #undef __USE_XOPEN2K8XSI
23866: #undef __USE_LARGEFILE
23866: #undef __USE_LARGEFILE64
23866: #undef __USE_FILE_OFFSET64
23866: #undef __USE_MISC
23866: #undef __USE_ATFILE
23866: #undef __USE_GNU
23866: #undef __USE_FORTIFY_LEVEL
23866: #undef __KERNEL_STRICT_NAMES
23866: #undef __GLIBC_USE_ISOC2X
23866: #undef __GLIBC_USE_DEPRECATED_GETS
23866: #undef __GLIBC_USE_DEPRECATED_SCANF
23866:
23866:
23866:
23866:
23866: #define __KERNEL_STRICT_NAMES
23866: # 161 "/usr/include/features.h" 3 4
23866: #define __GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
23866: # 175 "/usr/include/features.h" 3 4
23866: #define __glibc_clang_prereq(maj,min) 0
23866:
23866:
23866:
23866: #define __GLIBC_USE(F) __GLIBC_USE_ ## F
23866: # 194 "/usr/include/features.h" 3 4
23866: #undef _ISOC95_SOURCE
23866: #define _ISOC95_SOURCE 1
23866: #undef _ISOC99_SOURCE
23866: #define _ISOC99_SOURCE 1
23866: #undef _ISOC11_SOURCE
23866: #define _ISOC11_SOURCE 1
23866: #undef _ISOC2X_SOURCE
23866: #define _ISOC2X_SOURCE 1
23866: #undef _POSIX_SOURCE
23866: #define _POSIX_SOURCE 1
23866: #undef _POSIX_C_SOURCE
23866: #define _POSIX_C_SOURCE 200809L
23866: #undef _XOPEN_SOURCE
23866: #define _XOPEN_SOURCE 700
23866: #undef _XOPEN_SOURCE_EXTENDED
23866: #define _XOPEN_SOURCE_EXTENDED 1
23866: #undef _LARGEFILE64_SOURCE
23866: #define _LARGEFILE64_SOURCE 1
23866: #undef _DEFAULT_SOURCE
23866: #define _DEFAULT_SOURCE 1
23866: #undef _ATFILE_SOURCE
23866: #define _ATFILE_SOURCE 1
23866: # 226 "/usr/include/features.h" 3 4
23866: #undef _DEFAULT_SOURCE
23866: #define _DEFAULT_SOURCE 1
23866:
23866:
23866:
23866:
23866:
23866: #define __GLIBC_USE_ISOC2X 1
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __USE_ISOC11 1
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __USE_ISOC99 1
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __USE_ISOC95 1
23866:
23866:
23866:
23866:
23866:
23866: #define __USE_ISOC11 1
23866:
23866:
23866:
23866:
23866: #define __USE_ISOCXX11 1
23866: #define __USE_ISOC99 1
23866: # 278 "/usr/include/features.h" 3 4
23866: #undef _POSIX_SOURCE
23866: #define _POSIX_SOURCE 1
23866: #undef _POSIX_C_SOURCE
23866: #define _POSIX_C_SOURCE 200809L
23866: # 316 "/usr/include/features.h" 3 4
23866: #define __USE_POSIX 1
23866:
23866:
23866:
23866: #define __USE_POSIX2 1
23866:
23866:
23866:
23866: #define __USE_POSIX199309 1
23866:
23866:
23866:
23866: #define __USE_POSIX199506 1
23866:
23866:
23866:
23866: #define __USE_XOPEN2K 1
23866: #undef __USE_ISOC95
23866: #define __USE_ISOC95 1
23866: #undef __USE_ISOC99
23866: #define __USE_ISOC99 1
23866:
23866:
23866:
23866: #define __USE_XOPEN2K8 1
23866: #undef _ATFILE_SOURCE
23866: #define _ATFILE_SOURCE 1
23866:
23866:
23866:
23866: #define __USE_XOPEN 1
23866:
23866: #define __USE_XOPEN_EXTENDED 1
23866: #define __USE_UNIX98 1
23866: #undef _LARGEFILE_SOURCE
23866: #define _LARGEFILE_SOURCE 1
23866:
23866:
23866: #define __USE_XOPEN2K8 1
23866: #define __USE_XOPEN2K8XSI 1
23866:
23866: #define __USE_XOPEN2K 1
23866: #define __USE_XOPEN2KXSI 1
23866: #undef __USE_ISOC95
23866: #define __USE_ISOC95 1
23866: #undef __USE_ISOC99
23866: #define __USE_ISOC99 1
23866: # 372 "/usr/include/features.h" 3 4
23866: #define __USE_LARGEFILE 1
23866:
23866:
23866:
23866: #define __USE_LARGEFILE64 1
23866:
23866:
23866:
23866: #define __USE_FILE_OFFSET64 1
23866:
23866:
23866:
23866: #define __USE_MISC 1
23866:
23866:
23866:
23866: #define __USE_ATFILE 1
23866:
23866:
23866:
23866: #define __USE_GNU 1
23866:
23866:
23866:
23866:
23866:
23866: #define __USE_FORTIFY_LEVEL 2
23866: # 411 "/usr/include/features.h" 3 4
23866: #define __GLIBC_USE_DEPRECATED_GETS 0
23866: # 434 "/usr/include/features.h" 3 4
23866: #define __GLIBC_USE_DEPRECATED_SCANF 0
23866: # 447 "/usr/include/features.h" 3 4
23866: #undef __GNU_LIBRARY__
23866: #define __GNU_LIBRARY__ 6
23866:
23866:
23866:
23866: #define __GLIBC__ 2
23866: #define __GLIBC_MINOR__ 31
23866:
23866: #define __GLIBC_PREREQ(maj,min) ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 1 3 4
23866: # 19 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4
23866: #define _SYS_CDEFS_H 1
23866: # 34 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4
23866: #undef __P
23866: #undef __PMT
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __LEAF , __leaf__
23866: #define __LEAF_ATTR __attribute__ ((__leaf__))
23866: # 61 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4
23866: #define __THROW throw ()
23866: #define __THROWNL throw ()
23866: #define __NTH(fct) __LEAF_ATTR fct throw ()
23866: #define __NTHNL(fct) fct throw ()
23866: # 94 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4
23866: #define __glibc_clang_has_extension(ext) 0
23866:
23866:
23866:
23866:
23866: #define __P(args) args
23866: #define __PMT(args) args
23866:
23866:
23866:
23866:
23866: #define __CONCAT(x,y) x ## y
23866: #define __STRING(x) #x
23866:
23866:
23866: #define __ptr_t void *
23866:
23866:
23866:
23866:
23866: #define __BEGIN_DECLS extern "C" {
23866: #define __END_DECLS }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
23866: #define __bos0(ptr) __builtin_object_size (ptr, 0)
23866:
23866:
23866: #define __warndecl(name,msg) extern void name (void) __attribute__((__warning__ (msg)))
23866:
23866: #define __warnattr(msg) __attribute__((__warning__ (msg)))
23866: #define __errordecl(name,msg) extern void name (void) __attribute__((__error__ (msg)))
23866: # 148 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4
23866: #define __flexarr []
23866: #define __glibc_c99_flexarr_available 1
23866: # 174 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4
23866: #define __REDIRECT(name,proto,alias) name proto __asm__ (__ASMNAME (#alias))
23866:
23866: #define __REDIRECT_NTH(name,proto,alias) name proto __THROW __asm__ (__ASMNAME (#alias))
23866:
23866: #define __REDIRECT_NTHNL(name,proto,alias) name proto __THROWNL __asm__ (__ASMNAME (#alias))
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __ASMNAME(cname) __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
23866: #define __ASMNAME2(prefix,cname) __STRING (prefix) cname
23866: # 208 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4
23866: #define __attribute_malloc__ __attribute__ ((__malloc__))
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __attribute_alloc_size__(params) __attribute__ ((__alloc_size__ params))
23866: # 226 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4
23866: #define __attribute_pure__ __attribute__ ((__pure__))
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __attribute_const__ __attribute__ ((__const__))
23866: # 242 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4
23866: #define __attribute_used__ __attribute__ ((__used__))
23866: #define __attribute_noinline__ __attribute__ ((__noinline__))
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __attribute_deprecated__ __attribute__ ((__deprecated__))
23866: # 261 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4
23866: #define __attribute_deprecated_msg__(msg) __attribute__ ((__deprecated__ (msg)))
23866: # 274 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4
23866: #define __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x)))
23866: # 284 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4
23866: #define __attribute_format_strfmon__(a,b) __attribute__ ((__format__ (__strfmon__, a, b)))
23866: # 293 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4
23866: #define __nonnull(params) __attribute__ ((__nonnull__ params))
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __attribute_warn_unused_result__ __attribute__ ((__warn_unused_result__))
23866:
23866:
23866: #define __wur __attribute_warn_unused_result__
23866: # 318 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4
23866: #undef __always_inline
23866: #define __always_inline __inline __attribute__ ((__always_inline__))
23866: # 328 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4
23866: #define __attribute_artificial__ __attribute__ ((__artificial__))
23866: # 346 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4
23866: #define __extern_inline extern __inline __attribute__ ((__gnu_inline__))
23866: #define __extern_always_inline extern __always_inline __attribute__ ((__gnu_inline__))
23866: # 356 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4
23866: #define __fortify_function __extern_always_inline __attribute_artificial__
23866:
23866:
23866:
23866:
23866:
23866: #define __va_arg_pack() __builtin_va_arg_pack ()
23866: #define __va_arg_pack_len() __builtin_va_arg_pack_len ()
23866: # 390 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4
23866: #define __restrict_arr
23866: # 402 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4
23866: #define __glibc_unlikely(cond) __builtin_expect ((cond), 0)
23866: #define __glibc_likely(cond) __builtin_expect ((cond), 1)
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __glibc_has_attribute(attr) __has_attribute (attr)
23866: # 429 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4
23866: #define __attribute_nonstring__ __attribute__ ((__nonstring__))
23866:
23866:
23866:
23866:
23866:
23866: #undef __attribute_copy__
23866:
23866:
23866:
23866: #define __attribute_copy__(arg) __attribute__ ((__copy__ (arg)))
23866: # 452 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4
23866: # 18 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 3 4
23866: #define __WORDSIZE 32
23866: #define __WORDSIZE_TIME64_COMPAT32 0
23866: #define __WORDSIZE32_SIZE_ULONG 0
23866: #define __WORDSIZE32_PTRDIFF_LONG 0
23866: # 453 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 2 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/long-double.h" 1 3 4
23866: # 38 "/usr/include/arm-linux-gnueabihf/bits/long-double.h" 3 4
23866: #define __NO_LONG_DOUBLE_MATH 1
23866:
23866: #define __LONG_DOUBLE_USES_FLOAT128 0
23866: # 454 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 2 3 4
23866: # 475 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4
23866: #define __LDBL_REDIR1(name,proto,alias) name proto
23866: #define __LDBL_REDIR(name,proto) name proto
23866: #define __LDBL_REDIR1_NTH(name,proto,alias) name proto __THROW
23866: #define __LDBL_REDIR_NTH(name,proto) name proto __THROW
23866: #define __LDBL_REDIR_DECL(name)
23866:
23866: #define __REDIRECT_LDBL(name,proto,alias) __REDIRECT (name, proto, alias)
23866: #define __REDIRECT_NTH_LDBL(name,proto,alias) __REDIRECT_NTH (name, proto, alias)
23866: # 493 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4
23866: #define __glibc_macro_warning1(message) _Pragma (#message)
23866: #define __glibc_macro_warning(message) __glibc_macro_warning1 (GCC warning message)
23866: # 514 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4
23866: #define __HAVE_GENERIC_SELECTION 0
23866: # 462 "/usr/include/features.h" 2 3 4
23866: # 477 "/usr/include/features.h" 3 4
23866: #define __USE_EXTERN_INLINES 1
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/gnu/stubs.h" 1 3 4
23866: # 10 "/usr/include/arm-linux-gnueabihf/gnu/stubs.h" 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/gnu/stubs-hard.h" 1 3 4
23866: # 10 "/usr/include/arm-linux-gnueabihf/gnu/stubs-hard.h" 3 4
23866: #define __stub___compat_create_module
23866: #define __stub___compat_get_kernel_syms
23866: #define __stub___compat_query_module
23866: #define __stub_chflags
23866: #define __stub_fchflags
23866: #define __stub_gtty
23866: #define __stub_lchmod
23866: #define __stub_revoke
23866: #define __stub_setlogin
23866: #define __stub_sigreturn
23866: #define __stub_sstk
23866: #define __stub_stty
23866: # 11 "/usr/include/arm-linux-gnueabihf/gnu/stubs.h" 2 3 4
23866: # 486 "/usr/include/features.h" 2 3 4
23866: # 40 "/usr/include/arm-linux-gnueabihf/c++/10/bits/os_defines.h" 2 3
23866:
23866:
23866:
23866:
23866:
23866: #undef _GLIBCXX_HAVE_GETS
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_NO_OBSOLETE_ISINF_ISNAN_DYNAMIC __GLIBC_PREREQ(2,23)
23866:
23866:
23866:
23866: #define _GLIBCXX_NATIVE_THREAD_ID pthread_self()
23866: # 523 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 2 3
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/c++/10/bits/cpu_defines.h" 1 3
23866: # 31 "/usr/include/arm-linux-gnueabihf/c++/10/bits/cpu_defines.h" 3
23866: #define _GLIBCXX_CPU_DEFINES 1
23866:
23866:
23866:
23866:
23866:
23866: #define __glibcxx_integral_traps true
23866: # 526 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 2 3
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_PSEUDO_VISIBILITY(V)
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_WEAK_DEFINITION
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_USE_WEAK_REF __GXX_WEAK__
23866: # 558 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define _GLIBCXX_TXN_SAFE
23866: #define _GLIBCXX_TXN_SAFE_DYN
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_USE_STD_SPEC_FUNCS 1
23866: # 577 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define _GLIBCXX_FAST_MATH 0
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __N(msgid) (msgid)
23866:
23866:
23866: #undef min
23866: #undef max
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH
23866:
23866:
23866: #define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX
23866:
23866:
23866: #define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO
23866:
23866:
23866: #define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB
23866:
23866:
23866: #define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR
23866: # 644 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP 1
23866: #define _GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE 1
23866: #define _GLIBCXX_HAVE_BUILTIN_LAUNDER 1
23866: #define _GLIBCXX_BUILTIN_IS_SAME_AS(T,U) __is_same_as(T, U)
23866:
23866: #define _GLIBCXX_HAVE_BUILTIN_IS_CONSTANT_EVALUATED 1
23866: # 680 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define _GLIBCXX_USE_TBB_PAR_BACKEND __has_include(<tbb/tbb.h>)
23866:
23866:
23866:
23866:
23866:
23866: #define _PSTL_PAR_BACKEND_SERIAL
23866:
23866:
23866: #define _PSTL_ASSERT(_Condition) __glibcxx_assert(_Condition)
23866: #define _PSTL_ASSERT_MSG(_Condition,_Message) __glibcxx_assert(_Condition)
23866:
23866: # 1 "/usr/include/c++/10/pstl/pstl_config.h" 1 3
23866: # 11 "/usr/include/c++/10/pstl/pstl_config.h" 3
23866: #define _PSTL_CONFIG_H
23866:
23866:
23866: #define _PSTL_VERSION 9000
23866: #define _PSTL_VERSION_MAJOR (_PSTL_VERSION / 1000)
23866: #define _PSTL_VERSION_MINOR ((_PSTL_VERSION % 1000) / 10)
23866: #define _PSTL_VERSION_PATCH (_PSTL_VERSION % 10)
23866: # 29 "/usr/include/c++/10/pstl/pstl_config.h" 3
23866: #define _PSTL_USAGE_WARNINGS 0
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define _PSTL_PRAGMA(x) _Pragma(#x)
23866:
23866:
23866: #define _PSTL_STRING_AUX(x) #x
23866: #define _PSTL_STRING(x) _PSTL_STRING_AUX(x)
23866: #define _PSTL_STRING_CONCAT(x,y) x #y
23866:
23866:
23866:
23866: #define _PSTL_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
23866: # 54 "/usr/include/c++/10/pstl/pstl_config.h" 3
23866: #define _PSTL_PRAGMA_SIMD _PSTL_PRAGMA(omp simd)
23866: #define _PSTL_PRAGMA_DECLARE_SIMD _PSTL_PRAGMA(omp declare simd)
23866: #define _PSTL_PRAGMA_SIMD_REDUCTION(PRM) _PSTL_PRAGMA(omp simd reduction(PRM))
23866: # 70 "/usr/include/c++/10/pstl/pstl_config.h" 3
23866: #define _PSTL_PRAGMA_FORCEINLINE
23866:
23866:
23866:
23866: #define _PSTL_PRAGMA_SIMD_SCAN(PRM) _PSTL_PRAGMA(omp simd reduction(inscan, PRM))
23866: #define _PSTL_PRAGMA_SIMD_INCLUSIVE_SCAN(PRM) _PSTL_PRAGMA(omp scan inclusive(PRM))
23866: #define _PSTL_PRAGMA_SIMD_EXCLUSIVE_SCAN(PRM) _PSTL_PRAGMA(omp scan exclusive(PRM))
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define _PSTL_CPP17_EXECUTION_POLICIES_PRESENT (_MSC_VER >= 1912)
23866:
23866: #define _PSTL_CPP14_2RANGE_MISMATCH_EQUAL_PRESENT (_MSC_VER >= 1900 || __cplusplus >= 201300L || __cpp_lib_robust_nonmodifying_seq_ops == 201304)
23866:
23866: #define _PSTL_CPP14_MAKE_REVERSE_ITERATOR_PRESENT (_MSC_VER >= 1900 || __cplusplus >= 201402L || __cpp_lib_make_reverse_iterator == 201402)
23866:
23866: #define _PSTL_CPP14_INTEGER_SEQUENCE_PRESENT (_MSC_VER >= 1900 || __cplusplus >= 201402L)
23866: #define _PSTL_CPP14_VARIABLE_TEMPLATES_PRESENT (!__INTEL_COMPILER || __INTEL_COMPILER >= 1700) && (_MSC_FULL_VER >= 190023918 || __cplusplus >= 201402L)
23866:
23866:
23866: #define _PSTL_EARLYEXIT_PRESENT (__INTEL_COMPILER >= 1800)
23866: #define _PSTL_MONOTONIC_PRESENT (__INTEL_COMPILER >= 1800)
23866:
23866:
23866: #define _PSTL_UDR_PRESENT 1
23866:
23866:
23866:
23866:
23866:
23866: #define _PSTL_UDS_PRESENT 1
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define _PSTL_PRAGMA_SIMD_EARLYEXIT
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define _PSTL_PRAGMA_SIMD_ORDERED_MONOTONIC(PRM)
23866: #define _PSTL_PRAGMA_SIMD_ORDERED_MONOTONIC_2ARGS(PRM1,PRM2)
23866: # 130 "/usr/include/c++/10/pstl/pstl_config.h" 3
23866: #define _PSTL_PRAGMA_DECLARE_REDUCTION(NAME,OP) _PSTL_PRAGMA(omp declare reduction(NAME:OP : omp_out(omp_in)) initializer(omp_priv = omp_orig))
23866:
23866:
23866:
23866:
23866:
23866: #define _PSTL_PRAGMA_VECTOR_UNALIGNED
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define _PSTL_USE_NONTEMPORAL_STORES_IF_ALLOWED
23866:
23866:
23866:
23866:
23866:
23866: #define _PSTL_PRAGMA_LOCATION " [Parallel STL message]: "
23866:
23866:
23866: #define _PSTL_PRAGMA_MESSAGE_IMPL(x) _PSTL_PRAGMA(message(_PSTL_STRING_CONCAT(_PSTL_PRAGMA_LOCATION, x)))
23866:
23866:
23866:
23866:
23866:
23866: #define _PSTL_PRAGMA_MESSAGE(x)
23866: #define _PSTL_PRAGMA_MESSAGE_POLICIES(x)
23866:
23866:
23866:
23866: #define _PSTL_CPP11_STD_ROTATE_BROKEN ((__GLIBCXX__ && __GLIBCXX__ < 20150716) || (_MSC_VER && _MSC_VER < 1800))
23866:
23866: #define _PSTL_ICC_18_OMP_SIMD_BROKEN (__INTEL_COMPILER == 1800)
23866: # 693 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 2 3
23866: # 701 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define _GLIBCXX_HAVE_ACOSF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_ACOSL 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_ALIGNED_ALLOC 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_ARPA_INET_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_ASINF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_ASINL 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_ATAN2F 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_ATAN2L 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_ATANF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_ATANL 1
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_HAVE_AT_QUICK_EXIT 1
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_HAVE_CEILF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_CEILL 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_COMPLEX_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_COSF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_COSHF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_COSHL 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_COSL 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_DIRENT_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_DLFCN_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_EBADMSG 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_ECANCELED 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_ECHILD 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_EIDRM 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_ENDIAN_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_ENODATA 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_ENOLINK 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_ENOSPC 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_ENOSR 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_ENOSTR 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_ENOTRECOVERABLE 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_ENOTSUP 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_EOVERFLOW 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_EOWNERDEAD 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_EPERM 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_EPROTO 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_ETIME 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_ETIMEDOUT 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_ETXTBSY 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_EWOULDBLOCK 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_EXECINFO_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_EXPF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_EXPL 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_FABSF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_FABSL 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_FCNTL_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_FENV_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_FINITE 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_FINITEF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_FINITEL 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_FLOAT_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_FLOORF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_FLOORL 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_FMODF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_FMODL 1
23866: # 884 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define _GLIBCXX_HAVE_FREXPF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_FREXPL 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_GETIPINFO 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_GETS 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_HYPOT 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_HYPOTF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_HYPOTL 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_ICONV 1
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_HAVE_INT64_T 1
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_INTTYPES_H 1
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_HAVE_ISINFF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_ISINFL 1
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_HAVE_ISNANF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_ISNANL 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_ISWBLANK 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_LC_MESSAGES 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_LDEXPF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_LDEXPL 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_LIBINTL_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_LIMIT_AS 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_LIMIT_DATA 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_LIMIT_FSIZE 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_LIMIT_RSS 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_LIMIT_VMEM 0
23866:
23866:
23866: #define _GLIBCXX_HAVE_LINK 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_LINUX_FUTEX 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_LINUX_RANDOM_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_LINUX_TYPES_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_LOCALE_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_LOG10F 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_LOG10L 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_LOGF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_LOGL 1
23866: # 1004 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define _GLIBCXX_HAVE_MBSTATE_T 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_MEMALIGN 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_MEMORY_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_MODF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_MODFF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_MODFL 1
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_HAVE_NETDB_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_NETINET_IN_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_NETINET_TCP_H 1
23866: # 1040 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define _GLIBCXX_HAVE_POLL 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_POLL_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_POSIX_MEMALIGN 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_POWF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_POWL 1
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_HAVE_QUICK_EXIT 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_READLINK 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_SETENV 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_SINCOS 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_SINCOSF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_SINCOSL 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_SINF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_SINHF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_SINHL 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_SINL 1
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_HAVE_SOCKATMARK 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_SQRTF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_SQRTL 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_STDALIGN_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_STDBOOL_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_STDINT_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_STDLIB_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_STRERROR_L 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_STRERROR_R 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_STRINGS_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_STRING_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_STRTOF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_STRTOLD 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_STRXFRM_L 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_SYMLINK 1
23866:
23866:
23866:
23866: #define _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT 1
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_HAVE_SYS_IOCTL_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_SYS_IPC_H 1
23866: # 1158 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define _GLIBCXX_HAVE_SYS_PARAM_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_SYS_RESOURCE_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_SYS_SDT_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_SYS_SEM_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_SYS_SOCKET_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_SYS_STATVFS_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_SYS_STAT_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_SYS_SYSINFO_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_SYS_TIME_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_SYS_TYPES_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_SYS_UIO_H 1
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_HAVE_S_ISREG 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_TANF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_TANHF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_TANHL 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_TANL 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_TGMATH_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_TIMESPEC_GET 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_TLS 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_TRUNCATE 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_UCHAR_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_UNISTD_H 1
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_HAVE_UTIME_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_VFWSCANF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_VSWSCANF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_VWSCANF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_WCHAR_H 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_WCSTOF 1
23866:
23866:
23866: #define _GLIBCXX_HAVE_WCTYPE_H 1
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_HAVE_WRITEV 1
23866: # 1452 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL 1
23866:
23866:
23866: #define _GLIBCXX_ICONV_CONST
23866:
23866:
23866:
23866: #define LT_OBJDIR ".libs/"
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_PACKAGE_BUGREPORT ""
23866:
23866:
23866: #define _GLIBCXX_PACKAGE_NAME "package-unused"
23866:
23866:
23866: #define _GLIBCXX_PACKAGE_STRING "package-unused version-unused"
23866:
23866:
23866: #define _GLIBCXX_PACKAGE_TARNAME "libstdc++"
23866:
23866:
23866: #define _GLIBCXX_PACKAGE_URL ""
23866:
23866:
23866: #define _GLIBCXX_PACKAGE__GLIBCXX_VERSION "version-unused"
23866: # 1498 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define STDC_HEADERS 1
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_DARWIN_USE_64_BIT_INODE 1
23866:
23866:
23866:
23866: #define _GLIBCXX_FILE_OFFSET_BITS 64
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX11_USE_C99_COMPLEX 1
23866:
23866:
23866:
23866: #define _GLIBCXX11_USE_C99_MATH 1
23866:
23866:
23866:
23866: #define _GLIBCXX11_USE_C99_STDIO 1
23866:
23866:
23866:
23866: #define _GLIBCXX11_USE_C99_STDLIB 1
23866:
23866:
23866:
23866: #define _GLIBCXX11_USE_C99_WCHAR 1
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX98_USE_C99_COMPLEX 1
23866:
23866:
23866:
23866: #define _GLIBCXX98_USE_C99_MATH 1
23866:
23866:
23866:
23866: #define _GLIBCXX98_USE_C99_STDIO 1
23866:
23866:
23866:
23866: #define _GLIBCXX98_USE_C99_STDLIB 1
23866:
23866:
23866:
23866: #define _GLIBCXX98_USE_C99_WCHAR 1
23866:
23866:
23866: #define _GLIBCXX_ATOMIC_BUILTINS 1
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_FULLY_DYNAMIC_STRING 0
23866:
23866:
23866: #define _GLIBCXX_HAS_GTHREADS 1
23866:
23866:
23866: #define _GLIBCXX_HOSTED 1
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_MANGLE_SIZE_T j
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_PTRDIFF_T_IS_INT 1
23866:
23866:
23866: #define _GLIBCXX_RES_LIMITS 1
23866:
23866:
23866: #define _GLIBCXX_SIZE_T_IS_UINT 1
23866:
23866:
23866: #define _GLIBCXX_STDIO_EOF -1
23866:
23866:
23866: #define _GLIBCXX_STDIO_SEEK_CUR 1
23866:
23866:
23866: #define _GLIBCXX_STDIO_SEEK_END 2
23866:
23866:
23866: #define _GLIBCXX_SYMVER 1
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_SYMVER_GNU 1
23866: # 1612 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define _GLIBCXX_USE_C11_UCHAR_CXX11 1
23866:
23866:
23866:
23866: #define _GLIBCXX_USE_C99 1
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_USE_C99_COMPLEX_TR1 1
23866:
23866:
23866:
23866: #define _GLIBCXX_USE_C99_CTYPE_TR1 1
23866:
23866:
23866:
23866: #define _GLIBCXX_USE_C99_FENV_TR1 1
23866:
23866:
23866:
23866: #define _GLIBCXX_USE_C99_INTTYPES_TR1 1
23866:
23866:
23866:
23866: #define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1
23866:
23866:
23866:
23866: #define _GLIBCXX_USE_C99_MATH_TR1 1
23866:
23866:
23866:
23866: #define _GLIBCXX_USE_C99_STDINT_TR1 1
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_USE_CLOCK_MONOTONIC 1
23866:
23866:
23866: #define _GLIBCXX_USE_CLOCK_REALTIME 1
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_USE_DEV_RANDOM 1
23866:
23866:
23866: #define _GLIBCXX_USE_FCHMOD 1
23866:
23866:
23866: #define _GLIBCXX_USE_FCHMODAT 1
23866:
23866:
23866: #define _GLIBCXX_USE_GETTIMEOFDAY 1
23866:
23866:
23866: #define _GLIBCXX_USE_GET_NPROCS 1
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_USE_LFS 1
23866:
23866:
23866: #define _GLIBCXX_USE_LONG_LONG 1
23866:
23866:
23866: #define _GLIBCXX_USE_LSTAT 1
23866:
23866:
23866: #define _GLIBCXX_USE_NANOSLEEP 1
23866:
23866:
23866: #define _GLIBCXX_USE_NLS 1
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_USE_PTHREAD_COND_CLOCKWAIT 1
23866:
23866:
23866: #define _GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK 1
23866:
23866:
23866:
23866: #define _GLIBCXX_USE_PTHREAD_RWLOCK_CLOCKLOCK 1
23866:
23866:
23866: #define _GLIBCXX_USE_PTHREAD_RWLOCK_T 1
23866:
23866:
23866:
23866: #define _GLIBCXX_USE_RANDOM_TR1 1
23866:
23866:
23866: #define _GLIBCXX_USE_REALPATH 1
23866:
23866:
23866: #define _GLIBCXX_USE_SCHED_YIELD 1
23866:
23866:
23866: #define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_USE_SENDFILE 1
23866:
23866:
23866: #define _GLIBCXX_USE_ST_MTIM 1
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_USE_TMPNAM 1
23866:
23866:
23866: #define _GLIBCXX_USE_UTIME 1
23866:
23866:
23866:
23866: #define _GLIBCXX_USE_UTIMENSAT 1
23866:
23866:
23866: #define _GLIBCXX_USE_WCHAR_T 1
23866:
23866:
23866: #define _GLIBCXX_VERBOSE 1
23866: # 1759 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++config.h" 3
23866: #define _GTHREAD_USE_MUTEX_TIMEDLOCK 1
23866: # 69 "/usr/include/c++/10/utility" 2 3
23866: # 1 "/usr/include/c++/10/bits/stl_relops.h" 1 3
23866: # 65 "/usr/include/c++/10/bits/stl_relops.h" 3
23866: #define _STL_RELOPS_H 1
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: namespace rel_ops
23866: {
23866: # 85 "/usr/include/c++/10/bits/stl_relops.h" 3
23866: template <class _Tp>
23866: inline bool
23866: operator!=(const _Tp& __x, const _Tp& __y)
23866: { return !(__x == __y); }
23866: # 98 "/usr/include/c++/10/bits/stl_relops.h" 3
23866: template <class _Tp>
23866: inline bool
23866: operator>(const _Tp& __x, const _Tp& __y)
23866: { return __y < __x; }
23866: # 111 "/usr/include/c++/10/bits/stl_relops.h" 3
23866: template <class _Tp>
23866: inline bool
23866: operator<=(const _Tp& __x, const _Tp& __y)
23866: { return !(__y < __x); }
23866: # 124 "/usr/include/c++/10/bits/stl_relops.h" 3
23866: template <class _Tp>
23866: inline bool
23866: operator>=(const _Tp& __x, const _Tp& __y)
23866: { return !(__x < __y); }
23866: }
23866:
23866:
23866: }
23866: # 70 "/usr/include/c++/10/utility" 2 3
23866: # 1 "/usr/include/c++/10/bits/stl_pair.h" 1 3
23866: # 57 "/usr/include/c++/10/bits/stl_pair.h" 3
23866: #define _STL_PAIR_H 1
23866:
23866: # 1 "/usr/include/c++/10/bits/move.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/move.h" 3
23866: #define _MOVE_H 1
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: inline constexpr _Tp*
23866: __addressof(_Tp& __r) noexcept
23866: { return __builtin_addressof(__r); }
23866:
23866:
23866:
23866:
23866: }
23866:
23866: # 1 "/usr/include/c++/10/type_traits" 1 3
23866: # 30 "/usr/include/c++/10/type_traits" 3
23866: #define _GLIBCXX_TYPE_TRAITS 1
23866:
23866:
23866: # 33 "/usr/include/c++/10/type_traits" 3
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 56 "/usr/include/c++/10/type_traits" 3
23866: template<typename _Tp, _Tp __v>
23866: struct integral_constant
23866: {
23866: static constexpr _Tp value = __v;
23866: typedef _Tp value_type;
23866: typedef integral_constant<_Tp, __v> type;
23866: constexpr operator value_type() const noexcept { return value; }
23866:
23866:
23866: #define __cpp_lib_integral_constant_callable 201304
23866:
23866: constexpr value_type operator()() const noexcept { return value; }
23866:
23866: };
23866:
23866: template<typename _Tp, _Tp __v>
23866: constexpr _Tp integral_constant<_Tp, __v>::value;
23866:
23866:
23866: typedef integral_constant<bool, true> true_type;
23866:
23866:
23866: typedef integral_constant<bool, false> false_type;
23866:
23866: template<bool __v>
23866: using __bool_constant = integral_constant<bool, __v>;
23866:
23866:
23866: #define __cpp_lib_bool_constant 201505
23866: template<bool __v>
23866: using bool_constant = integral_constant<bool, __v>;
23866:
23866:
23866:
23866:
23866: template<bool, typename, typename>
23866: struct conditional;
23866:
23866: template <typename _Type>
23866: struct __type_identity
23866: { using type = _Type; };
23866:
23866: template<typename _Tp>
23866: using __type_identity_t = typename __type_identity<_Tp>::type;
23866:
23866: template<typename...>
23866: struct __or_;
23866:
23866: template<>
23866: struct __or_<>
23866: : public false_type
23866: { };
23866:
23866: template<typename _B1>
23866: struct __or_<_B1>
23866: : public _B1
23866: { };
23866:
23866: template<typename _B1, typename _B2>
23866: struct __or_<_B1, _B2>
23866: : public conditional<_B1::value, _B1, _B2>::type
23866: { };
23866:
23866: template<typename _B1, typename _B2, typename _B3, typename... _Bn>
23866: struct __or_<_B1, _B2, _B3, _Bn...>
23866: : public conditional<_B1::value, _B1, __or_<_B2, _B3, _Bn...>>::type
23866: { };
23866:
23866: template<typename...>
23866: struct __and_;
23866:
23866: template<>
23866: struct __and_<>
23866: : public true_type
23866: { };
23866:
23866: template<typename _B1>
23866: struct __and_<_B1>
23866: : public _B1
23866: { };
23866:
23866: template<typename _B1, typename _B2>
23866: struct __and_<_B1, _B2>
23866: : public conditional<_B1::value, _B2, _B1>::type
23866: { };
23866:
23866: template<typename _B1, typename _B2, typename _B3, typename... _Bn>
23866: struct __and_<_B1, _B2, _B3, _Bn...>
23866: : public conditional<_B1::value, __and_<_B2, _B3, _Bn...>, _B1>::type
23866: { };
23866:
23866: template<typename _Pp>
23866: struct __not_
23866: : public __bool_constant<!bool(_Pp::value)>
23866: { };
23866:
23866:
23866:
23866: template<typename... _Bn>
23866: inline constexpr bool __or_v = __or_<_Bn...>::value;
23866: template<typename... _Bn>
23866: inline constexpr bool __and_v = __and_<_Bn...>::value;
23866:
23866: #define __cpp_lib_logical_traits 201510
23866:
23866: template<typename... _Bn>
23866: struct conjunction
23866: : __and_<_Bn...>
23866: { };
23866:
23866: template<typename... _Bn>
23866: struct disjunction
23866: : __or_<_Bn...>
23866: { };
23866:
23866: template<typename _Pp>
23866: struct negation
23866: : __not_<_Pp>
23866: { };
23866:
23866: template<typename... _Bn>
23866: inline constexpr bool conjunction_v = conjunction<_Bn...>::value;
23866:
23866: template<typename... _Bn>
23866: inline constexpr bool disjunction_v = disjunction<_Bn...>::value;
23866:
23866: template<typename _Pp>
23866: inline constexpr bool negation_v = negation<_Pp>::value;
23866:
23866:
23866:
23866:
23866: template<typename>
23866: struct is_reference;
23866: template<typename>
23866: struct is_function;
23866: template<typename>
23866: struct is_void;
23866: template<typename>
23866: struct __is_array_unknown_bounds;
23866:
23866:
23866:
23866:
23866: template <typename _Tp, size_t = sizeof(_Tp)>
23866: constexpr true_type __is_complete_or_unbounded(__type_identity<_Tp>)
23866: { return {}; }
23866:
23866: template <typename _TypeIdentity,
23866: typename _NestedType = typename _TypeIdentity::type>
23866: constexpr typename __or_<
23866: is_reference<_NestedType>,
23866: is_function<_NestedType>,
23866: is_void<_NestedType>,
23866: __is_array_unknown_bounds<_NestedType>
23866: >::type __is_complete_or_unbounded(_TypeIdentity)
23866: { return {}; }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct __success_type
23866: { typedef _Tp type; };
23866:
23866: struct __failure_type
23866: { };
23866:
23866: template<typename>
23866: struct remove_cv;
23866:
23866:
23866: template<typename _Tp>
23866: using __remove_cv_t = typename remove_cv<_Tp>::type;
23866:
23866: template<typename>
23866: struct is_const;
23866:
23866:
23866:
23866: template<typename>
23866: struct __is_void_helper
23866: : public false_type { };
23866:
23866: template<>
23866: struct __is_void_helper<void>
23866: : public true_type { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_void
23866: : public __is_void_helper<__remove_cv_t<_Tp>>::type
23866: { };
23866:
23866: template<typename>
23866: struct __is_integral_helper
23866: : public false_type { };
23866:
23866: template<>
23866: struct __is_integral_helper<bool>
23866: : public true_type { };
23866:
23866: template<>
23866: struct __is_integral_helper<char>
23866: : public true_type { };
23866:
23866: template<>
23866: struct __is_integral_helper<signed char>
23866: : public true_type { };
23866:
23866: template<>
23866: struct __is_integral_helper<unsigned char>
23866: : public true_type { };
23866:
23866:
23866: template<>
23866: struct __is_integral_helper<wchar_t>
23866: : public true_type { };
23866: # 284 "/usr/include/c++/10/type_traits" 3
23866: template<>
23866: struct __is_integral_helper<char16_t>
23866: : public true_type { };
23866:
23866: template<>
23866: struct __is_integral_helper<char32_t>
23866: : public true_type { };
23866:
23866: template<>
23866: struct __is_integral_helper<short>
23866: : public true_type { };
23866:
23866: template<>
23866: struct __is_integral_helper<unsigned short>
23866: : public true_type { };
23866:
23866: template<>
23866: struct __is_integral_helper<int>
23866: : public true_type { };
23866:
23866: template<>
23866: struct __is_integral_helper<unsigned int>
23866: : public true_type { };
23866:
23866: template<>
23866: struct __is_integral_helper<long>
23866: : public true_type { };
23866:
23866: template<>
23866: struct __is_integral_helper<unsigned long>
23866: : public true_type { };
23866:
23866: template<>
23866: struct __is_integral_helper<long long>
23866: : public true_type { };
23866:
23866: template<>
23866: struct __is_integral_helper<unsigned long long>
23866: : public true_type { };
23866: # 364 "/usr/include/c++/10/type_traits" 3
23866: template<typename _Tp>
23866: struct is_integral
23866: : public __is_integral_helper<__remove_cv_t<_Tp>>::type
23866: { };
23866:
23866: template<typename>
23866: struct __is_floating_point_helper
23866: : public false_type { };
23866:
23866: template<>
23866: struct __is_floating_point_helper<float>
23866: : public true_type { };
23866:
23866: template<>
23866: struct __is_floating_point_helper<double>
23866: : public true_type { };
23866:
23866: template<>
23866: struct __is_floating_point_helper<long double>
23866: : public true_type { };
23866: # 392 "/usr/include/c++/10/type_traits" 3
23866: template<typename _Tp>
23866: struct is_floating_point
23866: : public __is_floating_point_helper<__remove_cv_t<_Tp>>::type
23866: { };
23866:
23866:
23866: template<typename>
23866: struct is_array
23866: : public false_type { };
23866:
23866: template<typename _Tp, std::size_t _Size>
23866: struct is_array<_Tp[_Size]>
23866: : public true_type { };
23866:
23866: template<typename _Tp>
23866: struct is_array<_Tp[]>
23866: : public true_type { };
23866:
23866: template<typename>
23866: struct __is_pointer_helper
23866: : public false_type { };
23866:
23866: template<typename _Tp>
23866: struct __is_pointer_helper<_Tp*>
23866: : public true_type { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_pointer
23866: : public __is_pointer_helper<__remove_cv_t<_Tp>>::type
23866: { };
23866:
23866:
23866: template<typename>
23866: struct is_lvalue_reference
23866: : public false_type { };
23866:
23866: template<typename _Tp>
23866: struct is_lvalue_reference<_Tp&>
23866: : public true_type { };
23866:
23866:
23866: template<typename>
23866: struct is_rvalue_reference
23866: : public false_type { };
23866:
23866: template<typename _Tp>
23866: struct is_rvalue_reference<_Tp&&>
23866: : public true_type { };
23866:
23866: template<typename>
23866: struct __is_member_object_pointer_helper
23866: : public false_type { };
23866:
23866: template<typename _Tp, typename _Cp>
23866: struct __is_member_object_pointer_helper<_Tp _Cp::*>
23866: : public __not_<is_function<_Tp>>::type { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_member_object_pointer
23866: : public __is_member_object_pointer_helper<__remove_cv_t<_Tp>>::type
23866: { };
23866:
23866: template<typename>
23866: struct __is_member_function_pointer_helper
23866: : public false_type { };
23866:
23866: template<typename _Tp, typename _Cp>
23866: struct __is_member_function_pointer_helper<_Tp _Cp::*>
23866: : public is_function<_Tp>::type { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_member_function_pointer
23866: : public __is_member_function_pointer_helper<__remove_cv_t<_Tp>>::type
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_enum
23866: : public integral_constant<bool, __is_enum(_Tp)>
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_union
23866: : public integral_constant<bool, __is_union(_Tp)>
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_class
23866: : public integral_constant<bool, __is_class(_Tp)>
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_function
23866: : public __bool_constant<!is_const<const _Tp>::value> { };
23866:
23866: template<typename _Tp>
23866: struct is_function<_Tp&>
23866: : public false_type { };
23866:
23866: template<typename _Tp>
23866: struct is_function<_Tp&&>
23866: : public false_type { };
23866:
23866: #define __cpp_lib_is_null_pointer 201309
23866:
23866: template<typename>
23866: struct __is_null_pointer_helper
23866: : public false_type { };
23866:
23866: template<>
23866: struct __is_null_pointer_helper<std::nullptr_t>
23866: : public true_type { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_null_pointer
23866: : public __is_null_pointer_helper<__remove_cv_t<_Tp>>::type
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct __is_nullptr_t
23866: : public is_null_pointer<_Tp>
23866: { } __attribute__ ((__deprecated__ ("use '" "std::is_null_pointer" "' instead")));
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct is_reference
23866: : public __or_<is_lvalue_reference<_Tp>,
23866: is_rvalue_reference<_Tp>>::type
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_arithmetic
23866: : public __or_<is_integral<_Tp>, is_floating_point<_Tp>>::type
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_fundamental
23866: : public __or_<is_arithmetic<_Tp>, is_void<_Tp>,
23866: is_null_pointer<_Tp>>::type
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_object
23866: : public __not_<__or_<is_function<_Tp>, is_reference<_Tp>,
23866: is_void<_Tp>>>::type
23866: { };
23866:
23866: template<typename>
23866: struct is_member_pointer;
23866:
23866:
23866: template<typename _Tp>
23866: struct is_scalar
23866: : public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>,
23866: is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_compound
23866: : public __not_<is_fundamental<_Tp>>::type { };
23866:
23866: template<typename _Tp>
23866: struct __is_member_pointer_helper
23866: : public false_type { };
23866:
23866: template<typename _Tp, typename _Cp>
23866: struct __is_member_pointer_helper<_Tp _Cp::*>
23866: : public true_type { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_member_pointer
23866: : public __is_member_pointer_helper<__remove_cv_t<_Tp>>::type
23866: { };
23866:
23866: template<typename, typename>
23866: struct is_same;
23866:
23866: template<typename _Tp, typename... _Types>
23866: using __is_one_of = __or_<is_same<_Tp, _Types>...>;
23866:
23866:
23866: template<typename _Tp>
23866: using __is_signed_integer = __is_one_of<__remove_cv_t<_Tp>,
23866: signed char, signed short, signed int, signed long,
23866: signed long long
23866: # 604 "/usr/include/c++/10/type_traits" 3
23866: >;
23866:
23866:
23866: template<typename _Tp>
23866: using __is_unsigned_integer = __is_one_of<__remove_cv_t<_Tp>,
23866: unsigned char, unsigned short, unsigned int, unsigned long,
23866: unsigned long long
23866: # 623 "/usr/include/c++/10/type_traits" 3
23866: >;
23866:
23866:
23866: template<typename _Tp>
23866: using __is_standard_integer
23866: = __or_<__is_signed_integer<_Tp>, __is_unsigned_integer<_Tp>>;
23866:
23866:
23866: template<typename...> using __void_t = void;
23866:
23866:
23866:
23866: template<typename _Tp, typename = void>
23866: struct __is_referenceable
23866: : public false_type
23866: { };
23866:
23866: template<typename _Tp>
23866: struct __is_referenceable<_Tp, __void_t<_Tp&>>
23866: : public true_type
23866: { };
23866:
23866:
23866:
23866:
23866: template<typename>
23866: struct is_const
23866: : public false_type { };
23866:
23866: template<typename _Tp>
23866: struct is_const<_Tp const>
23866: : public true_type { };
23866:
23866:
23866: template<typename>
23866: struct is_volatile
23866: : public false_type { };
23866:
23866: template<typename _Tp>
23866: struct is_volatile<_Tp volatile>
23866: : public true_type { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_trivial
23866: : public integral_constant<bool, __is_trivial(_Tp)>
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_trivially_copyable
23866: : public integral_constant<bool, __is_trivially_copyable(_Tp)>
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_standard_layout
23866: : public integral_constant<bool, __is_standard_layout(_Tp)>
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct
23866:
23866: is_pod
23866: : public integral_constant<bool, __is_pod(_Tp)>
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_literal_type
23866: : public integral_constant<bool, __is_literal_type(_Tp)>
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_empty
23866: : public integral_constant<bool, __is_empty(_Tp)>
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_polymorphic
23866: : public integral_constant<bool, __is_polymorphic(_Tp)>
23866: { };
23866:
23866:
23866: #define __cpp_lib_is_final 201402L
23866:
23866: template<typename _Tp>
23866: struct is_final
23866: : public integral_constant<bool, __is_final(_Tp)>
23866: { };
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct is_abstract
23866: : public integral_constant<bool, __is_abstract(_Tp)>
23866: { };
23866:
23866: template<typename _Tp,
23866: bool = is_arithmetic<_Tp>::value>
23866: struct __is_signed_helper
23866: : public false_type { };
23866:
23866: template<typename _Tp>
23866: struct __is_signed_helper<_Tp, true>
23866: : public integral_constant<bool, _Tp(-1) < _Tp(0)>
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_signed
23866: : public __is_signed_helper<_Tp>::type
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_unsigned
23866: : public __and_<is_arithmetic<_Tp>, __not_<is_signed<_Tp>>>
23866: { };
23866: # 770 "/usr/include/c++/10/type_traits" 3
23866: template<typename _Tp, typename _Up = _Tp&&>
23866: _Up
23866: __declval(int);
23866:
23866: template<typename _Tp>
23866: _Tp
23866: __declval(long);
23866:
23866: template<typename _Tp>
23866: auto declval() noexcept -> decltype(__declval<_Tp>(0));
23866:
23866: template<typename, unsigned = 0>
23866: struct extent;
23866:
23866: template<typename>
23866: struct remove_all_extents;
23866:
23866: template<typename _Tp>
23866: struct __is_array_known_bounds
23866: : public integral_constant<bool, (extent<_Tp>::value > 0)>
23866: { };
23866:
23866: template<typename _Tp>
23866: struct __is_array_unknown_bounds
23866: : public __and_<is_array<_Tp>, __not_<extent<_Tp>>>
23866: { };
23866:
23866:
23866:
23866:
23866:
23866:
23866: struct __do_is_destructible_impl
23866: {
23866: template<typename _Tp, typename = decltype(declval<_Tp&>().~_Tp())>
23866: static true_type __test(int);
23866:
23866: template<typename>
23866: static false_type __test(...);
23866: };
23866:
23866: template<typename _Tp>
23866: struct __is_destructible_impl
23866: : public __do_is_destructible_impl
23866: {
23866: typedef decltype(__test<_Tp>(0)) type;
23866: };
23866:
23866: template<typename _Tp,
23866: bool = __or_<is_void<_Tp>,
23866: __is_array_unknown_bounds<_Tp>,
23866: is_function<_Tp>>::value,
23866: bool = __or_<is_reference<_Tp>, is_scalar<_Tp>>::value>
23866: struct __is_destructible_safe;
23866:
23866: template<typename _Tp>
23866: struct __is_destructible_safe<_Tp, false, false>
23866: : public __is_destructible_impl<typename
23866: remove_all_extents<_Tp>::type>::type
23866: { };
23866:
23866: template<typename _Tp>
23866: struct __is_destructible_safe<_Tp, true, false>
23866: : public false_type { };
23866:
23866: template<typename _Tp>
23866: struct __is_destructible_safe<_Tp, false, true>
23866: : public true_type { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_destructible
23866: : public __is_destructible_safe<_Tp>::type
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866:
23866:
23866:
23866:
23866: struct __do_is_nt_destructible_impl
23866: {
23866: template<typename _Tp>
23866: static __bool_constant<noexcept(declval<_Tp&>().~_Tp())>
23866: __test(int);
23866:
23866: template<typename>
23866: static false_type __test(...);
23866: };
23866:
23866: template<typename _Tp>
23866: struct __is_nt_destructible_impl
23866: : public __do_is_nt_destructible_impl
23866: {
23866: typedef decltype(__test<_Tp>(0)) type;
23866: };
23866:
23866: template<typename _Tp,
23866: bool = __or_<is_void<_Tp>,
23866: __is_array_unknown_bounds<_Tp>,
23866: is_function<_Tp>>::value,
23866: bool = __or_<is_reference<_Tp>, is_scalar<_Tp>>::value>
23866: struct __is_nt_destructible_safe;
23866:
23866: template<typename _Tp>
23866: struct __is_nt_destructible_safe<_Tp, false, false>
23866: : public __is_nt_destructible_impl<typename
23866: remove_all_extents<_Tp>::type>::type
23866: { };
23866:
23866: template<typename _Tp>
23866: struct __is_nt_destructible_safe<_Tp, true, false>
23866: : public false_type { };
23866:
23866: template<typename _Tp>
23866: struct __is_nt_destructible_safe<_Tp, false, true>
23866: : public true_type { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_nothrow_destructible
23866: : public __is_nt_destructible_safe<_Tp>::type
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866: template<typename _Tp, typename... _Args>
23866: struct __is_constructible_impl
23866: : public __bool_constant<__is_constructible(_Tp, _Args...)>
23866: { };
23866:
23866:
23866: template<typename _Tp, typename... _Args>
23866: struct is_constructible
23866: : public __is_constructible_impl<_Tp, _Args...>
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_default_constructible
23866: : public __is_constructible_impl<_Tp>::type
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866: template<typename _Tp, bool = __is_referenceable<_Tp>::value>
23866: struct __is_copy_constructible_impl;
23866:
23866: template<typename _Tp>
23866: struct __is_copy_constructible_impl<_Tp, false>
23866: : public false_type { };
23866:
23866: template<typename _Tp>
23866: struct __is_copy_constructible_impl<_Tp, true>
23866: : public __is_constructible_impl<_Tp, const _Tp&>
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_copy_constructible
23866: : public __is_copy_constructible_impl<_Tp>
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866: template<typename _Tp, bool = __is_referenceable<_Tp>::value>
23866: struct __is_move_constructible_impl;
23866:
23866: template<typename _Tp>
23866: struct __is_move_constructible_impl<_Tp, false>
23866: : public false_type { };
23866:
23866: template<typename _Tp>
23866: struct __is_move_constructible_impl<_Tp, true>
23866: : public __is_constructible_impl<_Tp, _Tp&&>
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_move_constructible
23866: : public __is_move_constructible_impl<_Tp>
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866: template<bool, typename _Tp, typename... _Args>
23866: struct __is_nt_constructible_impl
23866: : public false_type
23866: { };
23866:
23866: template<typename _Tp, typename... _Args>
23866: struct __is_nt_constructible_impl<true, _Tp, _Args...>
23866: : public __bool_constant<noexcept(_Tp(std::declval<_Args>()...))>
23866: { };
23866:
23866: template<typename _Tp, typename _Arg>
23866: struct __is_nt_constructible_impl<true, _Tp, _Arg>
23866: : public __bool_constant<noexcept(static_cast<_Tp>(std::declval<_Arg>()))>
23866: { };
23866:
23866: template<typename _Tp>
23866: struct __is_nt_constructible_impl<true, _Tp>
23866: : public __bool_constant<noexcept(_Tp())>
23866: { };
23866:
23866: template<typename _Tp, size_t _Num>
23866: struct __is_nt_constructible_impl<true, _Tp[_Num]>
23866: : public __bool_constant<noexcept(typename remove_all_extents<_Tp>::type())>
23866: { };
23866: # 1001 "/usr/include/c++/10/type_traits" 3
23866: template<typename _Tp, typename... _Args>
23866: using __is_nothrow_constructible_impl
23866: = __is_nt_constructible_impl<__is_constructible(_Tp, _Args...),
23866: _Tp, _Args...>;
23866:
23866:
23866: template<typename _Tp, typename... _Args>
23866: struct is_nothrow_constructible
23866: : public __is_nothrow_constructible_impl<_Tp, _Args...>::type
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_nothrow_default_constructible
23866: : public __is_nothrow_constructible_impl<_Tp>::type
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866:
23866: template<typename _Tp, bool = __is_referenceable<_Tp>::value>
23866: struct __is_nothrow_copy_constructible_impl;
23866:
23866: template<typename _Tp>
23866: struct __is_nothrow_copy_constructible_impl<_Tp, false>
23866: : public false_type { };
23866:
23866: template<typename _Tp>
23866: struct __is_nothrow_copy_constructible_impl<_Tp, true>
23866: : public __is_nothrow_constructible_impl<_Tp, const _Tp&>
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_nothrow_copy_constructible
23866: : public __is_nothrow_copy_constructible_impl<_Tp>::type
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866: template<typename _Tp, bool = __is_referenceable<_Tp>::value>
23866: struct __is_nothrow_move_constructible_impl;
23866:
23866: template<typename _Tp>
23866: struct __is_nothrow_move_constructible_impl<_Tp, false>
23866: : public false_type { };
23866:
23866: template<typename _Tp>
23866: struct __is_nothrow_move_constructible_impl<_Tp, true>
23866: : public __is_nothrow_constructible_impl<_Tp, _Tp&&>
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_nothrow_move_constructible
23866: : public __is_nothrow_move_constructible_impl<_Tp>::type
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: struct is_assignable
23866: : public __bool_constant<__is_assignable(_Tp, _Up)>
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866: template<typename _Tp, bool = __is_referenceable<_Tp>::value>
23866: struct __is_copy_assignable_impl;
23866:
23866: template<typename _Tp>
23866: struct __is_copy_assignable_impl<_Tp, false>
23866: : public false_type { };
23866:
23866: template<typename _Tp>
23866: struct __is_copy_assignable_impl<_Tp, true>
23866: : public __bool_constant<__is_assignable(_Tp&, const _Tp&)>
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_copy_assignable
23866: : public __is_copy_assignable_impl<_Tp>::type
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866: template<typename _Tp, bool = __is_referenceable<_Tp>::value>
23866: struct __is_move_assignable_impl;
23866:
23866: template<typename _Tp>
23866: struct __is_move_assignable_impl<_Tp, false>
23866: : public false_type { };
23866:
23866: template<typename _Tp>
23866: struct __is_move_assignable_impl<_Tp, true>
23866: : public __bool_constant<__is_assignable(_Tp&, _Tp&&)>
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_move_assignable
23866: : public __is_move_assignable_impl<_Tp>::type
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866: template<typename _Tp, typename _Up>
23866: struct __is_nt_assignable_impl
23866: : public integral_constant<bool, noexcept(declval<_Tp>() = declval<_Up>())>
23866: { };
23866:
23866: template<typename _Tp, typename _Up>
23866: struct __is_nothrow_assignable_impl
23866: : public __and_<__bool_constant<__is_assignable(_Tp, _Up)>,
23866: __is_nt_assignable_impl<_Tp, _Up>>
23866: { };
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: struct is_nothrow_assignable
23866: : public __is_nothrow_assignable_impl<_Tp, _Up>
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866: template<typename _Tp, bool = __is_referenceable<_Tp>::value>
23866: struct __is_nt_copy_assignable_impl;
23866:
23866: template<typename _Tp>
23866: struct __is_nt_copy_assignable_impl<_Tp, false>
23866: : public false_type { };
23866:
23866: template<typename _Tp>
23866: struct __is_nt_copy_assignable_impl<_Tp, true>
23866: : public __is_nothrow_assignable_impl<_Tp&, const _Tp&>
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_nothrow_copy_assignable
23866: : public __is_nt_copy_assignable_impl<_Tp>
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866: template<typename _Tp, bool = __is_referenceable<_Tp>::value>
23866: struct __is_nt_move_assignable_impl;
23866:
23866: template<typename _Tp>
23866: struct __is_nt_move_assignable_impl<_Tp, false>
23866: : public false_type { };
23866:
23866: template<typename _Tp>
23866: struct __is_nt_move_assignable_impl<_Tp, true>
23866: : public __is_nothrow_assignable_impl<_Tp&, _Tp&&>
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_nothrow_move_assignable
23866: : public __is_nt_move_assignable_impl<_Tp>
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866:
23866: template<typename _Tp, typename... _Args>
23866: struct is_trivially_constructible
23866: : public __bool_constant<__is_trivially_constructible(_Tp, _Args...)>
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_trivially_default_constructible
23866: : public __bool_constant<__is_trivially_constructible(_Tp)>
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866: struct __do_is_implicitly_default_constructible_impl
23866: {
23866: template <typename _Tp>
23866: static void __helper(const _Tp&);
23866:
23866: template <typename _Tp>
23866: static true_type __test(const _Tp&,
23866: decltype(__helper<const _Tp&>({}))* = 0);
23866:
23866: static false_type __test(...);
23866: };
23866:
23866: template<typename _Tp>
23866: struct __is_implicitly_default_constructible_impl
23866: : public __do_is_implicitly_default_constructible_impl
23866: {
23866: typedef decltype(__test(declval<_Tp>())) type;
23866: };
23866:
23866: template<typename _Tp>
23866: struct __is_implicitly_default_constructible_safe
23866: : public __is_implicitly_default_constructible_impl<_Tp>::type
23866: { };
23866:
23866: template <typename _Tp>
23866: struct __is_implicitly_default_constructible
23866: : public __and_<__is_constructible_impl<_Tp>,
23866: __is_implicitly_default_constructible_safe<_Tp>>
23866: { };
23866:
23866: template<typename _Tp, bool = __is_referenceable<_Tp>::value>
23866: struct __is_trivially_copy_constructible_impl;
23866:
23866: template<typename _Tp>
23866: struct __is_trivially_copy_constructible_impl<_Tp, false>
23866: : public false_type { };
23866:
23866: template<typename _Tp>
23866: struct __is_trivially_copy_constructible_impl<_Tp, true>
23866: : public __and_<__is_copy_constructible_impl<_Tp>,
23866: integral_constant<bool,
23866: __is_trivially_constructible(_Tp, const _Tp&)>>
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_trivially_copy_constructible
23866: : public __is_trivially_copy_constructible_impl<_Tp>
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866: template<typename _Tp, bool = __is_referenceable<_Tp>::value>
23866: struct __is_trivially_move_constructible_impl;
23866:
23866: template<typename _Tp>
23866: struct __is_trivially_move_constructible_impl<_Tp, false>
23866: : public false_type { };
23866:
23866: template<typename _Tp>
23866: struct __is_trivially_move_constructible_impl<_Tp, true>
23866: : public __and_<__is_move_constructible_impl<_Tp>,
23866: integral_constant<bool,
23866: __is_trivially_constructible(_Tp, _Tp&&)>>
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_trivially_move_constructible
23866: : public __is_trivially_move_constructible_impl<_Tp>
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: struct is_trivially_assignable
23866: : public __bool_constant<__is_trivially_assignable(_Tp, _Up)>
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866: template<typename _Tp, bool = __is_referenceable<_Tp>::value>
23866: struct __is_trivially_copy_assignable_impl;
23866:
23866: template<typename _Tp>
23866: struct __is_trivially_copy_assignable_impl<_Tp, false>
23866: : public false_type { };
23866:
23866: template<typename _Tp>
23866: struct __is_trivially_copy_assignable_impl<_Tp, true>
23866: : public __bool_constant<__is_trivially_assignable(_Tp&, const _Tp&)>
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_trivially_copy_assignable
23866: : public __is_trivially_copy_assignable_impl<_Tp>
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866: template<typename _Tp, bool = __is_referenceable<_Tp>::value>
23866: struct __is_trivially_move_assignable_impl;
23866:
23866: template<typename _Tp>
23866: struct __is_trivially_move_assignable_impl<_Tp, false>
23866: : public false_type { };
23866:
23866: template<typename _Tp>
23866: struct __is_trivially_move_assignable_impl<_Tp, true>
23866: : public __bool_constant<__is_trivially_assignable(_Tp&, _Tp&&)>
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_trivially_move_assignable
23866: : public __is_trivially_move_assignable_impl<_Tp>
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_trivially_destructible
23866: : public __and_<__is_destructible_safe<_Tp>,
23866: __bool_constant<__has_trivial_destructor(_Tp)>>
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct has_virtual_destructor
23866: : public integral_constant<bool, __has_virtual_destructor(_Tp)>
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct alignment_of
23866: : public integral_constant<std::size_t, alignof(_Tp)>
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866:
23866: template<typename>
23866: struct rank
23866: : public integral_constant<std::size_t, 0> { };
23866:
23866: template<typename _Tp, std::size_t _Size>
23866: struct rank<_Tp[_Size]>
23866: : public integral_constant<std::size_t, 1 + rank<_Tp>::value> { };
23866:
23866: template<typename _Tp>
23866: struct rank<_Tp[]>
23866: : public integral_constant<std::size_t, 1 + rank<_Tp>::value> { };
23866:
23866:
23866: template<typename, unsigned _Uint>
23866: struct extent
23866: : public integral_constant<std::size_t, 0> { };
23866:
23866: template<typename _Tp, unsigned _Uint, std::size_t _Size>
23866: struct extent<_Tp[_Size], _Uint>
23866: : public integral_constant<std::size_t,
23866: _Uint == 0 ? _Size : extent<_Tp,
23866: _Uint - 1>::value>
23866: { };
23866:
23866: template<typename _Tp, unsigned _Uint>
23866: struct extent<_Tp[], _Uint>
23866: : public integral_constant<std::size_t,
23866: _Uint == 0 ? 0 : extent<_Tp,
23866: _Uint - 1>::value>
23866: { };
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: struct is_same
23866:
23866: : public integral_constant<bool, __is_same_as(_Tp, _Up)>
23866:
23866:
23866:
23866: { };
23866: # 1410 "/usr/include/c++/10/type_traits" 3
23866: template<typename _Base, typename _Derived>
23866: struct is_base_of
23866: : public integral_constant<bool, __is_base_of(_Base, _Derived)>
23866: { };
23866:
23866: template<typename _From, typename _To,
23866: bool = __or_<is_void<_From>, is_function<_To>,
23866: is_array<_To>>::value>
23866: struct __is_convertible_helper
23866: {
23866: typedef typename is_void<_To>::type type;
23866: };
23866:
23866: #pragma GCC diagnostic push
23866: #pragma GCC diagnostic ignored "-Wctor-dtor-privacy"
23866: template<typename _From, typename _To>
23866: class __is_convertible_helper<_From, _To, false>
23866: {
23866: template<typename _To1>
23866: static void __test_aux(_To1) noexcept;
23866:
23866: template<typename _From1, typename _To1,
23866: typename = decltype(__test_aux<_To1>(std::declval<_From1>()))>
23866: static true_type
23866: __test(int);
23866:
23866: template<typename, typename>
23866: static false_type
23866: __test(...);
23866:
23866: public:
23866: typedef decltype(__test<_From, _To>(0)) type;
23866: };
23866: #pragma GCC diagnostic pop
23866:
23866:
23866: template<typename _From, typename _To>
23866: struct is_convertible
23866: : public __is_convertible_helper<_From, _To>::type
23866: { };
23866:
23866:
23866: template<typename _ToElementType, typename _FromElementType>
23866: using __is_array_convertible
23866: = is_convertible<_FromElementType(*)[], _ToElementType(*)[]>;
23866:
23866: template<typename _From, typename _To,
23866: bool = __or_<is_void<_From>, is_function<_To>,
23866: is_array<_To>>::value>
23866: struct __is_nt_convertible_helper
23866: : is_void<_To>
23866: { };
23866:
23866: #pragma GCC diagnostic push
23866: #pragma GCC diagnostic ignored "-Wctor-dtor-privacy"
23866: template<typename _From, typename _To>
23866: class __is_nt_convertible_helper<_From, _To, false>
23866: {
23866: template<typename _To1>
23866: static void __test_aux(_To1) noexcept;
23866:
23866: template<typename _From1, typename _To1>
23866: static
23866: __bool_constant<noexcept(__test_aux<_To1>(std::declval<_From1>()))>
23866: __test(int);
23866:
23866: template<typename, typename>
23866: static false_type
23866: __test(...);
23866:
23866: public:
23866: using type = decltype(__test<_From, _To>(0));
23866: };
23866: #pragma GCC diagnostic pop
23866:
23866:
23866: template<typename _From, typename _To>
23866: struct __is_nothrow_convertible
23866: : public __is_nt_convertible_helper<_From, _To>::type
23866: { };
23866: # 1508 "/usr/include/c++/10/type_traits" 3
23866: template<typename _Tp>
23866: struct remove_const
23866: { typedef _Tp type; };
23866:
23866: template<typename _Tp>
23866: struct remove_const<_Tp const>
23866: { typedef _Tp type; };
23866:
23866:
23866: template<typename _Tp>
23866: struct remove_volatile
23866: { typedef _Tp type; };
23866:
23866: template<typename _Tp>
23866: struct remove_volatile<_Tp volatile>
23866: { typedef _Tp type; };
23866:
23866:
23866: template<typename _Tp>
23866: struct remove_cv
23866: { using type = _Tp; };
23866:
23866: template<typename _Tp>
23866: struct remove_cv<const _Tp>
23866: { using type = _Tp; };
23866:
23866: template<typename _Tp>
23866: struct remove_cv<volatile _Tp>
23866: { using type = _Tp; };
23866:
23866: template<typename _Tp>
23866: struct remove_cv<const volatile _Tp>
23866: { using type = _Tp; };
23866:
23866:
23866: template<typename _Tp>
23866: struct add_const
23866: { typedef _Tp const type; };
23866:
23866:
23866: template<typename _Tp>
23866: struct add_volatile
23866: { typedef _Tp volatile type; };
23866:
23866:
23866: template<typename _Tp>
23866: struct add_cv
23866: {
23866: typedef typename
23866: add_const<typename add_volatile<_Tp>::type>::type type;
23866: };
23866:
23866:
23866:
23866: #define __cpp_lib_transformation_trait_aliases 201304
23866:
23866:
23866: template<typename _Tp>
23866: using remove_const_t = typename remove_const<_Tp>::type;
23866:
23866:
23866: template<typename _Tp>
23866: using remove_volatile_t = typename remove_volatile<_Tp>::type;
23866:
23866:
23866: template<typename _Tp>
23866: using remove_cv_t = typename remove_cv<_Tp>::type;
23866:
23866:
23866: template<typename _Tp>
23866: using add_const_t = typename add_const<_Tp>::type;
23866:
23866:
23866: template<typename _Tp>
23866: using add_volatile_t = typename add_volatile<_Tp>::type;
23866:
23866:
23866: template<typename _Tp>
23866: using add_cv_t = typename add_cv<_Tp>::type;
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct remove_reference
23866: { typedef _Tp type; };
23866:
23866: template<typename _Tp>
23866: struct remove_reference<_Tp&>
23866: { typedef _Tp type; };
23866:
23866: template<typename _Tp>
23866: struct remove_reference<_Tp&&>
23866: { typedef _Tp type; };
23866:
23866: template<typename _Tp, bool = __is_referenceable<_Tp>::value>
23866: struct __add_lvalue_reference_helper
23866: { typedef _Tp type; };
23866:
23866: template<typename _Tp>
23866: struct __add_lvalue_reference_helper<_Tp, true>
23866: { typedef _Tp& type; };
23866:
23866:
23866: template<typename _Tp>
23866: struct add_lvalue_reference
23866: : public __add_lvalue_reference_helper<_Tp>
23866: { };
23866:
23866: template<typename _Tp, bool = __is_referenceable<_Tp>::value>
23866: struct __add_rvalue_reference_helper
23866: { typedef _Tp type; };
23866:
23866: template<typename _Tp>
23866: struct __add_rvalue_reference_helper<_Tp, true>
23866: { typedef _Tp&& type; };
23866:
23866:
23866: template<typename _Tp>
23866: struct add_rvalue_reference
23866: : public __add_rvalue_reference_helper<_Tp>
23866: { };
23866:
23866:
23866:
23866: template<typename _Tp>
23866: using remove_reference_t = typename remove_reference<_Tp>::type;
23866:
23866:
23866: template<typename _Tp>
23866: using add_lvalue_reference_t = typename add_lvalue_reference<_Tp>::type;
23866:
23866:
23866: template<typename _Tp>
23866: using add_rvalue_reference_t = typename add_rvalue_reference<_Tp>::type;
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Unqualified, bool _IsConst, bool _IsVol>
23866: struct __cv_selector;
23866:
23866: template<typename _Unqualified>
23866: struct __cv_selector<_Unqualified, false, false>
23866: { typedef _Unqualified __type; };
23866:
23866: template<typename _Unqualified>
23866: struct __cv_selector<_Unqualified, false, true>
23866: { typedef volatile _Unqualified __type; };
23866:
23866: template<typename _Unqualified>
23866: struct __cv_selector<_Unqualified, true, false>
23866: { typedef const _Unqualified __type; };
23866:
23866: template<typename _Unqualified>
23866: struct __cv_selector<_Unqualified, true, true>
23866: { typedef const volatile _Unqualified __type; };
23866:
23866: template<typename _Qualified, typename _Unqualified,
23866: bool _IsConst = is_const<_Qualified>::value,
23866: bool _IsVol = is_volatile<_Qualified>::value>
23866: class __match_cv_qualifiers
23866: {
23866: typedef __cv_selector<_Unqualified, _IsConst, _IsVol> __match;
23866:
23866: public:
23866: typedef typename __match::__type __type;
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct __make_unsigned
23866: { typedef _Tp __type; };
23866:
23866: template<>
23866: struct __make_unsigned<char>
23866: { typedef unsigned char __type; };
23866:
23866: template<>
23866: struct __make_unsigned<signed char>
23866: { typedef unsigned char __type; };
23866:
23866: template<>
23866: struct __make_unsigned<short>
23866: { typedef unsigned short __type; };
23866:
23866: template<>
23866: struct __make_unsigned<int>
23866: { typedef unsigned int __type; };
23866:
23866: template<>
23866: struct __make_unsigned<long>
23866: { typedef unsigned long __type; };
23866:
23866: template<>
23866: struct __make_unsigned<long long>
23866: { typedef unsigned long long __type; };
23866: # 1730 "/usr/include/c++/10/type_traits" 3
23866: template<typename _Tp,
23866: bool _IsInt = is_integral<_Tp>::value,
23866: bool _IsEnum = is_enum<_Tp>::value>
23866: class __make_unsigned_selector;
23866:
23866: template<typename _Tp>
23866: class __make_unsigned_selector<_Tp, true, false>
23866: {
23866: using __unsigned_type
23866: = typename __make_unsigned<__remove_cv_t<_Tp>>::__type;
23866:
23866: public:
23866: using __type
23866: = typename __match_cv_qualifiers<_Tp, __unsigned_type>::__type;
23866: };
23866:
23866: class __make_unsigned_selector_base
23866: {
23866: protected:
23866: template<typename...> struct _List { };
23866:
23866: template<typename _Tp, typename... _Up>
23866: struct _List<_Tp, _Up...> : _List<_Up...>
23866: { static constexpr size_t __size = sizeof(_Tp); };
23866:
23866: template<size_t _Sz, typename _Tp, bool = (_Sz <= _Tp::__size)>
23866: struct __select;
23866:
23866: template<size_t _Sz, typename _Uint, typename... _UInts>
23866: struct __select<_Sz, _List<_Uint, _UInts...>, true>
23866: { using __type = _Uint; };
23866:
23866: template<size_t _Sz, typename _Uint, typename... _UInts>
23866: struct __select<_Sz, _List<_Uint, _UInts...>, false>
23866: : __select<_Sz, _List<_UInts...>>
23866: { };
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: class __make_unsigned_selector<_Tp, false, true>
23866: : __make_unsigned_selector_base
23866: {
23866:
23866: using _UInts = _List<unsigned char, unsigned short, unsigned int,
23866: unsigned long, unsigned long long>;
23866:
23866: using __unsigned_type = typename __select<sizeof(_Tp), _UInts>::__type;
23866:
23866: public:
23866: using __type
23866: = typename __match_cv_qualifiers<_Tp, __unsigned_type>::__type;
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<>
23866: struct __make_unsigned<wchar_t>
23866: {
23866: using __type
23866: = typename __make_unsigned_selector<wchar_t, false, true>::__type;
23866: };
23866: # 1806 "/usr/include/c++/10/type_traits" 3
23866: template<>
23866: struct __make_unsigned<char16_t>
23866: {
23866: using __type
23866: = typename __make_unsigned_selector<char16_t, false, true>::__type;
23866: };
23866:
23866: template<>
23866: struct __make_unsigned<char32_t>
23866: {
23866: using __type
23866: = typename __make_unsigned_selector<char32_t, false, true>::__type;
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct make_unsigned
23866: { typedef typename __make_unsigned_selector<_Tp>::__type type; };
23866:
23866:
23866: template<>
23866: struct make_unsigned<bool>;
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct __make_signed
23866: { typedef _Tp __type; };
23866:
23866: template<>
23866: struct __make_signed<char>
23866: { typedef signed char __type; };
23866:
23866: template<>
23866: struct __make_signed<unsigned char>
23866: { typedef signed char __type; };
23866:
23866: template<>
23866: struct __make_signed<unsigned short>
23866: { typedef signed short __type; };
23866:
23866: template<>
23866: struct __make_signed<unsigned int>
23866: { typedef signed int __type; };
23866:
23866: template<>
23866: struct __make_signed<unsigned long>
23866: { typedef signed long __type; };
23866:
23866: template<>
23866: struct __make_signed<unsigned long long>
23866: { typedef signed long long __type; };
23866: # 1884 "/usr/include/c++/10/type_traits" 3
23866: template<typename _Tp,
23866: bool _IsInt = is_integral<_Tp>::value,
23866: bool _IsEnum = is_enum<_Tp>::value>
23866: class __make_signed_selector;
23866:
23866: template<typename _Tp>
23866: class __make_signed_selector<_Tp, true, false>
23866: {
23866: using __signed_type
23866: = typename __make_signed<__remove_cv_t<_Tp>>::__type;
23866:
23866: public:
23866: using __type
23866: = typename __match_cv_qualifiers<_Tp, __signed_type>::__type;
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: class __make_signed_selector<_Tp, false, true>
23866: {
23866: typedef typename __make_unsigned_selector<_Tp>::__type __unsigned_type;
23866:
23866: public:
23866: typedef typename __make_signed_selector<__unsigned_type>::__type __type;
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<>
23866: struct __make_signed<wchar_t>
23866: {
23866: using __type
23866: = typename __make_signed_selector<wchar_t, false, true>::__type;
23866: };
23866: # 1932 "/usr/include/c++/10/type_traits" 3
23866: template<>
23866: struct __make_signed<char16_t>
23866: {
23866: using __type
23866: = typename __make_signed_selector<char16_t, false, true>::__type;
23866: };
23866:
23866: template<>
23866: struct __make_signed<char32_t>
23866: {
23866: using __type
23866: = typename __make_signed_selector<char32_t, false, true>::__type;
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct make_signed
23866: { typedef typename __make_signed_selector<_Tp>::__type type; };
23866:
23866:
23866: template<>
23866: struct make_signed<bool>;
23866:
23866:
23866:
23866: template<typename _Tp>
23866: using make_signed_t = typename make_signed<_Tp>::type;
23866:
23866:
23866: template<typename _Tp>
23866: using make_unsigned_t = typename make_unsigned<_Tp>::type;
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct remove_extent
23866: { typedef _Tp type; };
23866:
23866: template<typename _Tp, std::size_t _Size>
23866: struct remove_extent<_Tp[_Size]>
23866: { typedef _Tp type; };
23866:
23866: template<typename _Tp>
23866: struct remove_extent<_Tp[]>
23866: { typedef _Tp type; };
23866:
23866:
23866: template<typename _Tp>
23866: struct remove_all_extents
23866: { typedef _Tp type; };
23866:
23866: template<typename _Tp, std::size_t _Size>
23866: struct remove_all_extents<_Tp[_Size]>
23866: { typedef typename remove_all_extents<_Tp>::type type; };
23866:
23866: template<typename _Tp>
23866: struct remove_all_extents<_Tp[]>
23866: { typedef typename remove_all_extents<_Tp>::type type; };
23866:
23866:
23866:
23866: template<typename _Tp>
23866: using remove_extent_t = typename remove_extent<_Tp>::type;
23866:
23866:
23866: template<typename _Tp>
23866: using remove_all_extents_t = typename remove_all_extents<_Tp>::type;
23866:
23866:
23866:
23866:
23866: template<typename _Tp, typename>
23866: struct __remove_pointer_helper
23866: { typedef _Tp type; };
23866:
23866: template<typename _Tp, typename _Up>
23866: struct __remove_pointer_helper<_Tp, _Up*>
23866: { typedef _Up type; };
23866:
23866:
23866: template<typename _Tp>
23866: struct remove_pointer
23866: : public __remove_pointer_helper<_Tp, __remove_cv_t<_Tp>>
23866: { };
23866:
23866:
23866: template<typename _Tp, bool = __or_<__is_referenceable<_Tp>,
23866: is_void<_Tp>>::value>
23866: struct __add_pointer_helper
23866: { typedef _Tp type; };
23866:
23866: template<typename _Tp>
23866: struct __add_pointer_helper<_Tp, true>
23866: { typedef typename remove_reference<_Tp>::type* type; };
23866:
23866: template<typename _Tp>
23866: struct add_pointer
23866: : public __add_pointer_helper<_Tp>
23866: { };
23866:
23866:
23866:
23866: template<typename _Tp>
23866: using remove_pointer_t = typename remove_pointer<_Tp>::type;
23866:
23866:
23866: template<typename _Tp>
23866: using add_pointer_t = typename add_pointer<_Tp>::type;
23866:
23866:
23866: template<std::size_t _Len>
23866: struct __aligned_storage_msa
23866: {
23866: union __type
23866: {
23866: unsigned char __data[_Len];
23866: struct __attribute__((__aligned__)) { } __align;
23866: };
23866: };
23866: # 2067 "/usr/include/c++/10/type_traits" 3
23866: template<std::size_t _Len, std::size_t _Align =
23866: __alignof__(typename __aligned_storage_msa<_Len>::__type)>
23866: struct aligned_storage
23866: {
23866: union type
23866: {
23866: unsigned char __data[_Len];
23866: struct __attribute__((__aligned__((_Align)))) { } __align;
23866: };
23866: };
23866:
23866: template <typename... _Types>
23866: struct __strictest_alignment
23866: {
23866: static const size_t _S_alignment = 0;
23866: static const size_t _S_size = 0;
23866: };
23866:
23866: template <typename _Tp, typename... _Types>
23866: struct __strictest_alignment<_Tp, _Types...>
23866: {
23866: static const size_t _S_alignment =
23866: alignof(_Tp) > __strictest_alignment<_Types...>::_S_alignment
23866: ? alignof(_Tp) : __strictest_alignment<_Types...>::_S_alignment;
23866: static const size_t _S_size =
23866: sizeof(_Tp) > __strictest_alignment<_Types...>::_S_size
23866: ? sizeof(_Tp) : __strictest_alignment<_Types...>::_S_size;
23866: };
23866: # 2106 "/usr/include/c++/10/type_traits" 3
23866: template <size_t _Len, typename... _Types>
23866: struct aligned_union
23866: {
23866: private:
23866: static_assert(sizeof...(_Types) != 0, "At least one type is required");
23866:
23866: using __strictest = __strictest_alignment<_Types...>;
23866: static const size_t _S_len = _Len > __strictest::_S_size
23866: ? _Len : __strictest::_S_size;
23866: public:
23866:
23866: static const size_t alignment_value = __strictest::_S_alignment;
23866:
23866: typedef typename aligned_storage<_S_len, alignment_value>::type type;
23866: };
23866:
23866: template <size_t _Len, typename... _Types>
23866: const size_t aligned_union<_Len, _Types...>::alignment_value;
23866:
23866:
23866:
23866: template<typename _Up,
23866: bool _IsArray = is_array<_Up>::value,
23866: bool _IsFunction = is_function<_Up>::value>
23866: struct __decay_selector;
23866:
23866:
23866: template<typename _Up>
23866: struct __decay_selector<_Up, false, false>
23866: { typedef __remove_cv_t<_Up> __type; };
23866:
23866: template<typename _Up>
23866: struct __decay_selector<_Up, true, false>
23866: { typedef typename remove_extent<_Up>::type* __type; };
23866:
23866: template<typename _Up>
23866: struct __decay_selector<_Up, false, true>
23866: { typedef typename add_pointer<_Up>::type __type; };
23866:
23866:
23866: template<typename _Tp>
23866: class decay
23866: {
23866: typedef typename remove_reference<_Tp>::type __remove_type;
23866:
23866: public:
23866: typedef typename __decay_selector<__remove_type>::__type type;
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: using __decay_t = typename decay<_Tp>::type;
23866:
23866: template<typename _Tp>
23866: class reference_wrapper;
23866:
23866:
23866: template<typename _Tp>
23866: struct __strip_reference_wrapper
23866: {
23866: typedef _Tp __type;
23866: };
23866:
23866: template<typename _Tp>
23866: struct __strip_reference_wrapper<reference_wrapper<_Tp> >
23866: {
23866: typedef _Tp& __type;
23866: };
23866:
23866: template<typename _Tp>
23866: using __decay_and_strip = __strip_reference_wrapper<__decay_t<_Tp>>;
23866:
23866:
23866:
23866:
23866: template<bool, typename _Tp = void>
23866: struct enable_if
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct enable_if<true, _Tp>
23866: { typedef _Tp type; };
23866:
23866:
23866: template<bool _Cond, typename _Tp = void>
23866: using __enable_if_t = typename enable_if<_Cond, _Tp>::type;
23866:
23866: template<typename... _Cond>
23866: using _Require = __enable_if_t<__and_<_Cond...>::value>;
23866:
23866:
23866:
23866: template<bool _Cond, typename _Iftrue, typename _Iffalse>
23866: struct conditional
23866: { typedef _Iftrue type; };
23866:
23866:
23866: template<typename _Iftrue, typename _Iffalse>
23866: struct conditional<false, _Iftrue, _Iffalse>
23866: { typedef _Iffalse type; };
23866:
23866:
23866: template<typename _Tp>
23866: using __remove_cvref_t
23866: = typename remove_cv<typename remove_reference<_Tp>::type>::type;
23866:
23866:
23866: template<typename... _Tp>
23866: struct common_type;
23866:
23866:
23866:
23866: struct __do_common_type_impl
23866: {
23866: template<typename _Tp, typename _Up>
23866: using __cond_t
23866: = decltype(true ? std::declval<_Tp>() : std::declval<_Up>());
23866:
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: static __success_type<__decay_t<__cond_t<_Tp, _Up>>>
23866: _S_test(int);
23866: # 2239 "/usr/include/c++/10/type_traits" 3
23866: template<typename, typename>
23866: static __failure_type
23866: _S_test_2(...);
23866:
23866: template<typename _Tp, typename _Up>
23866: static decltype(_S_test_2<_Tp, _Up>(0))
23866: _S_test(...);
23866: };
23866:
23866:
23866: template<>
23866: struct common_type<>
23866: { };
23866:
23866:
23866: template<typename _Tp0>
23866: struct common_type<_Tp0>
23866: : public common_type<_Tp0, _Tp0>
23866: { };
23866:
23866:
23866: template<typename _Tp1, typename _Tp2,
23866: typename _Dp1 = __decay_t<_Tp1>, typename _Dp2 = __decay_t<_Tp2>>
23866: struct __common_type_impl
23866: {
23866:
23866:
23866: using type = common_type<_Dp1, _Dp2>;
23866: };
23866:
23866: template<typename _Tp1, typename _Tp2>
23866: struct __common_type_impl<_Tp1, _Tp2, _Tp1, _Tp2>
23866: : private __do_common_type_impl
23866: {
23866:
23866:
23866: using type = decltype(_S_test<_Tp1, _Tp2>(0));
23866: };
23866:
23866:
23866: template<typename _Tp1, typename _Tp2>
23866: struct common_type<_Tp1, _Tp2>
23866: : public __common_type_impl<_Tp1, _Tp2>::type
23866: { };
23866:
23866: template<typename...>
23866: struct __common_type_pack
23866: { };
23866:
23866: template<typename, typename, typename = void>
23866: struct __common_type_fold;
23866:
23866:
23866: template<typename _Tp1, typename _Tp2, typename... _Rp>
23866: struct common_type<_Tp1, _Tp2, _Rp...>
23866: : public __common_type_fold<common_type<_Tp1, _Tp2>,
23866: __common_type_pack<_Rp...>>
23866: { };
23866:
23866:
23866:
23866:
23866: template<typename _CTp, typename... _Rp>
23866: struct __common_type_fold<_CTp, __common_type_pack<_Rp...>,
23866: __void_t<typename _CTp::type>>
23866: : public common_type<typename _CTp::type, _Rp...>
23866: { };
23866:
23866:
23866: template<typename _CTp, typename _Rp>
23866: struct __common_type_fold<_CTp, _Rp, void>
23866: { };
23866:
23866: template<typename _Tp, bool = is_enum<_Tp>::value>
23866: struct __underlying_type_impl
23866: {
23866: using type = __underlying_type(_Tp);
23866: };
23866:
23866: template<typename _Tp>
23866: struct __underlying_type_impl<_Tp, false>
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct underlying_type
23866: : public __underlying_type_impl<_Tp>
23866: { };
23866:
23866: template<typename _Tp>
23866: struct __declval_protector
23866: {
23866: static const bool __stop = false;
23866: };
23866:
23866: template<typename _Tp>
23866: auto declval() noexcept -> decltype(__declval<_Tp>(0))
23866: {
23866: static_assert(__declval_protector<_Tp>::__stop,
23866: "declval() must not be used!");
23866: return __declval<_Tp>(0);
23866: }
23866:
23866:
23866: template<typename _Signature>
23866: class result_of;
23866:
23866:
23866:
23866: #define __cpp_lib_result_of_sfinae 201210
23866:
23866: struct __invoke_memfun_ref { };
23866: struct __invoke_memfun_deref { };
23866: struct __invoke_memobj_ref { };
23866: struct __invoke_memobj_deref { };
23866: struct __invoke_other { };
23866:
23866:
23866: template<typename _Tp, typename _Tag>
23866: struct __result_of_success : __success_type<_Tp>
23866: { using __invoke_type = _Tag; };
23866:
23866:
23866: struct __result_of_memfun_ref_impl
23866: {
23866: template<typename _Fp, typename _Tp1, typename... _Args>
23866: static __result_of_success<decltype(
23866: (std::declval<_Tp1>().*std::declval<_Fp>())(std::declval<_Args>()...)
23866: ), __invoke_memfun_ref> _S_test(int);
23866:
23866: template<typename...>
23866: static __failure_type _S_test(...);
23866: };
23866:
23866: template<typename _MemPtr, typename _Arg, typename... _Args>
23866: struct __result_of_memfun_ref
23866: : private __result_of_memfun_ref_impl
23866: {
23866: typedef decltype(_S_test<_MemPtr, _Arg, _Args...>(0)) type;
23866: };
23866:
23866:
23866: struct __result_of_memfun_deref_impl
23866: {
23866: template<typename _Fp, typename _Tp1, typename... _Args>
23866: static __result_of_success<decltype(
23866: ((*std::declval<_Tp1>()).*std::declval<_Fp>())(std::declval<_Args>()...)
23866: ), __invoke_memfun_deref> _S_test(int);
23866:
23866: template<typename...>
23866: static __failure_type _S_test(...);
23866: };
23866:
23866: template<typename _MemPtr, typename _Arg, typename... _Args>
23866: struct __result_of_memfun_deref
23866: : private __result_of_memfun_deref_impl
23866: {
23866: typedef decltype(_S_test<_MemPtr, _Arg, _Args...>(0)) type;
23866: };
23866:
23866:
23866: struct __result_of_memobj_ref_impl
23866: {
23866: template<typename _Fp, typename _Tp1>
23866: static __result_of_success<decltype(
23866: std::declval<_Tp1>().*std::declval<_Fp>()
23866: ), __invoke_memobj_ref> _S_test(int);
23866:
23866: template<typename, typename>
23866: static __failure_type _S_test(...);
23866: };
23866:
23866: template<typename _MemPtr, typename _Arg>
23866: struct __result_of_memobj_ref
23866: : private __result_of_memobj_ref_impl
23866: {
23866: typedef decltype(_S_test<_MemPtr, _Arg>(0)) type;
23866: };
23866:
23866:
23866: struct __result_of_memobj_deref_impl
23866: {
23866: template<typename _Fp, typename _Tp1>
23866: static __result_of_success<decltype(
23866: (*std::declval<_Tp1>()).*std::declval<_Fp>()
23866: ), __invoke_memobj_deref> _S_test(int);
23866:
23866: template<typename, typename>
23866: static __failure_type _S_test(...);
23866: };
23866:
23866: template<typename _MemPtr, typename _Arg>
23866: struct __result_of_memobj_deref
23866: : private __result_of_memobj_deref_impl
23866: {
23866: typedef decltype(_S_test<_MemPtr, _Arg>(0)) type;
23866: };
23866:
23866: template<typename _MemPtr, typename _Arg>
23866: struct __result_of_memobj;
23866:
23866: template<typename _Res, typename _Class, typename _Arg>
23866: struct __result_of_memobj<_Res _Class::*, _Arg>
23866: {
23866: typedef __remove_cvref_t<_Arg> _Argval;
23866: typedef _Res _Class::* _MemPtr;
23866: typedef typename conditional<__or_<is_same<_Argval, _Class>,
23866: is_base_of<_Class, _Argval>>::value,
23866: __result_of_memobj_ref<_MemPtr, _Arg>,
23866: __result_of_memobj_deref<_MemPtr, _Arg>
23866: >::type::type type;
23866: };
23866:
23866: template<typename _MemPtr, typename _Arg, typename... _Args>
23866: struct __result_of_memfun;
23866:
23866: template<typename _Res, typename _Class, typename _Arg, typename... _Args>
23866: struct __result_of_memfun<_Res _Class::*, _Arg, _Args...>
23866: {
23866: typedef typename remove_reference<_Arg>::type _Argval;
23866: typedef _Res _Class::* _MemPtr;
23866: typedef typename conditional<is_base_of<_Class, _Argval>::value,
23866: __result_of_memfun_ref<_MemPtr, _Arg, _Args...>,
23866: __result_of_memfun_deref<_MemPtr, _Arg, _Args...>
23866: >::type::type type;
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp, typename _Up = __remove_cvref_t<_Tp>>
23866: struct __inv_unwrap
23866: {
23866: using type = _Tp;
23866: };
23866:
23866: template<typename _Tp, typename _Up>
23866: struct __inv_unwrap<_Tp, reference_wrapper<_Up>>
23866: {
23866: using type = _Up&;
23866: };
23866:
23866: template<bool, bool, typename _Functor, typename... _ArgTypes>
23866: struct __result_of_impl
23866: {
23866: typedef __failure_type type;
23866: };
23866:
23866: template<typename _MemPtr, typename _Arg>
23866: struct __result_of_impl<true, false, _MemPtr, _Arg>
23866: : public __result_of_memobj<__decay_t<_MemPtr>,
23866: typename __inv_unwrap<_Arg>::type>
23866: { };
23866:
23866: template<typename _MemPtr, typename _Arg, typename... _Args>
23866: struct __result_of_impl<false, true, _MemPtr, _Arg, _Args...>
23866: : public __result_of_memfun<__decay_t<_MemPtr>,
23866: typename __inv_unwrap<_Arg>::type, _Args...>
23866: { };
23866:
23866:
23866: struct __result_of_other_impl
23866: {
23866: template<typename _Fn, typename... _Args>
23866: static __result_of_success<decltype(
23866: std::declval<_Fn>()(std::declval<_Args>()...)
23866: ), __invoke_other> _S_test(int);
23866:
23866: template<typename...>
23866: static __failure_type _S_test(...);
23866: };
23866:
23866: template<typename _Functor, typename... _ArgTypes>
23866: struct __result_of_impl<false, false, _Functor, _ArgTypes...>
23866: : private __result_of_other_impl
23866: {
23866: typedef decltype(_S_test<_Functor, _ArgTypes...>(0)) type;
23866: };
23866:
23866:
23866: template<typename _Functor, typename... _ArgTypes>
23866: struct __invoke_result
23866: : public __result_of_impl<
23866: is_member_object_pointer<
23866: typename remove_reference<_Functor>::type
23866: >::value,
23866: is_member_function_pointer<
23866: typename remove_reference<_Functor>::type
23866: >::value,
23866: _Functor, _ArgTypes...
23866: >::type
23866: { };
23866:
23866: template<typename _Functor, typename... _ArgTypes>
23866: struct result_of<_Functor(_ArgTypes...)>
23866: : public __invoke_result<_Functor, _ArgTypes...>
23866: { };
23866:
23866:
23866:
23866: template<size_t _Len, size_t _Align =
23866: __alignof__(typename __aligned_storage_msa<_Len>::__type)>
23866: using aligned_storage_t = typename aligned_storage<_Len, _Align>::type;
23866:
23866: template <size_t _Len, typename... _Types>
23866: using aligned_union_t = typename aligned_union<_Len, _Types...>::type;
23866:
23866:
23866: template<typename _Tp>
23866: using decay_t = typename decay<_Tp>::type;
23866:
23866:
23866: template<bool _Cond, typename _Tp = void>
23866: using enable_if_t = typename enable_if<_Cond, _Tp>::type;
23866:
23866:
23866: template<bool _Cond, typename _Iftrue, typename _Iffalse>
23866: using conditional_t = typename conditional<_Cond, _Iftrue, _Iffalse>::type;
23866:
23866:
23866: template<typename... _Tp>
23866: using common_type_t = typename common_type<_Tp...>::type;
23866:
23866:
23866: template<typename _Tp>
23866: using underlying_type_t = typename underlying_type<_Tp>::type;
23866:
23866:
23866: template<typename _Tp>
23866: using result_of_t = typename result_of<_Tp>::type;
23866:
23866:
23866:
23866: #define __cpp_lib_void_t 201411
23866:
23866: template<typename...> using void_t = void;
23866:
23866:
23866:
23866: template<typename _Default, typename _AlwaysVoid,
23866: template<typename...> class _Op, typename... _Args>
23866: struct __detector
23866: {
23866: using value_t = false_type;
23866: using type = _Default;
23866: };
23866:
23866:
23866: template<typename _Default, template<typename...> class _Op,
23866: typename... _Args>
23866: struct __detector<_Default, __void_t<_Op<_Args...>>, _Op, _Args...>
23866: {
23866: using value_t = true_type;
23866: using type = _Op<_Args...>;
23866: };
23866:
23866:
23866: template<typename _Default, template<typename...> class _Op,
23866: typename... _Args>
23866: using __detected_or = __detector<_Default, void, _Op, _Args...>;
23866:
23866:
23866: template<typename _Default, template<typename...> class _Op,
23866: typename... _Args>
23866: using __detected_or_t
23866: = typename __detected_or<_Default, _Op, _Args...>::type;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_HAS_NESTED_TYPE(_NTYPE) template<typename _Tp, typename = __void_t<>> struct __has_ ##_NTYPE : false_type { }; template<typename _Tp> struct __has_ ##_NTYPE<_Tp, __void_t<typename _Tp::_NTYPE>> : true_type { };
23866: # 2624 "/usr/include/c++/10/type_traits" 3
23866: template <typename _Tp>
23866: struct __is_swappable;
23866:
23866: template <typename _Tp>
23866: struct __is_nothrow_swappable;
23866:
23866: template<typename... _Elements>
23866: class tuple;
23866:
23866: template<typename>
23866: struct __is_tuple_like_impl : false_type
23866: { };
23866:
23866: template<typename... _Tps>
23866: struct __is_tuple_like_impl<tuple<_Tps...>> : true_type
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct __is_tuple_like
23866: : public __is_tuple_like_impl<__remove_cvref_t<_Tp>>::type
23866: { };
23866:
23866: template<typename _Tp>
23866:
23866: inline
23866: _Require<__not_<__is_tuple_like<_Tp>>,
23866: is_move_constructible<_Tp>,
23866: is_move_assignable<_Tp>>
23866: swap(_Tp&, _Tp&)
23866: noexcept(__and_<is_nothrow_move_constructible<_Tp>,
23866: is_nothrow_move_assignable<_Tp>>::value);
23866:
23866: template<typename _Tp, size_t _Nm>
23866:
23866: inline
23866: __enable_if_t<__is_swappable<_Tp>::value>
23866: swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm])
23866: noexcept(__is_nothrow_swappable<_Tp>::value);
23866:
23866: namespace __swappable_details {
23866: using std::swap;
23866:
23866: struct __do_is_swappable_impl
23866: {
23866: template<typename _Tp, typename
23866: = decltype(swap(std::declval<_Tp&>(), std::declval<_Tp&>()))>
23866: static true_type __test(int);
23866:
23866: template<typename>
23866: static false_type __test(...);
23866: };
23866:
23866: struct __do_is_nothrow_swappable_impl
23866: {
23866: template<typename _Tp>
23866: static __bool_constant<
23866: noexcept(swap(std::declval<_Tp&>(), std::declval<_Tp&>()))
23866: > __test(int);
23866:
23866: template<typename>
23866: static false_type __test(...);
23866: };
23866:
23866: }
23866:
23866: template<typename _Tp>
23866: struct __is_swappable_impl
23866: : public __swappable_details::__do_is_swappable_impl
23866: {
23866: typedef decltype(__test<_Tp>(0)) type;
23866: };
23866:
23866: template<typename _Tp>
23866: struct __is_nothrow_swappable_impl
23866: : public __swappable_details::__do_is_nothrow_swappable_impl
23866: {
23866: typedef decltype(__test<_Tp>(0)) type;
23866: };
23866:
23866: template<typename _Tp>
23866: struct __is_swappable
23866: : public __is_swappable_impl<_Tp>::type
23866: { };
23866:
23866: template<typename _Tp>
23866: struct __is_nothrow_swappable
23866: : public __is_nothrow_swappable_impl<_Tp>::type
23866: { };
23866:
23866:
23866: #define __cpp_lib_is_swappable 201603
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct is_swappable
23866: : public __is_swappable_impl<_Tp>::type
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_nothrow_swappable
23866: : public __is_nothrow_swappable_impl<_Tp>::type
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866:
23866:
23866: template<typename _Tp>
23866: inline constexpr bool is_swappable_v =
23866: is_swappable<_Tp>::value;
23866:
23866:
23866: template<typename _Tp>
23866: inline constexpr bool is_nothrow_swappable_v =
23866: is_nothrow_swappable<_Tp>::value;
23866:
23866:
23866: namespace __swappable_with_details {
23866: using std::swap;
23866:
23866: struct __do_is_swappable_with_impl
23866: {
23866: template<typename _Tp, typename _Up, typename
23866: = decltype(swap(std::declval<_Tp>(), std::declval<_Up>())),
23866: typename
23866: = decltype(swap(std::declval<_Up>(), std::declval<_Tp>()))>
23866: static true_type __test(int);
23866:
23866: template<typename, typename>
23866: static false_type __test(...);
23866: };
23866:
23866: struct __do_is_nothrow_swappable_with_impl
23866: {
23866: template<typename _Tp, typename _Up>
23866: static __bool_constant<
23866: noexcept(swap(std::declval<_Tp>(), std::declval<_Up>()))
23866: &&
23866: noexcept(swap(std::declval<_Up>(), std::declval<_Tp>()))
23866: > __test(int);
23866:
23866: template<typename, typename>
23866: static false_type __test(...);
23866: };
23866:
23866: }
23866:
23866: template<typename _Tp, typename _Up>
23866: struct __is_swappable_with_impl
23866: : public __swappable_with_details::__do_is_swappable_with_impl
23866: {
23866: typedef decltype(__test<_Tp, _Up>(0)) type;
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct __is_swappable_with_impl<_Tp&, _Tp&>
23866: : public __swappable_details::__do_is_swappable_impl
23866: {
23866: typedef decltype(__test<_Tp&>(0)) type;
23866: };
23866:
23866: template<typename _Tp, typename _Up>
23866: struct __is_nothrow_swappable_with_impl
23866: : public __swappable_with_details::__do_is_nothrow_swappable_with_impl
23866: {
23866: typedef decltype(__test<_Tp, _Up>(0)) type;
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct __is_nothrow_swappable_with_impl<_Tp&, _Tp&>
23866: : public __swappable_details::__do_is_nothrow_swappable_impl
23866: {
23866: typedef decltype(__test<_Tp&>(0)) type;
23866: };
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: struct is_swappable_with
23866: : public __is_swappable_with_impl<_Tp, _Up>::type
23866: { };
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: struct is_nothrow_swappable_with
23866: : public __is_nothrow_swappable_with_impl<_Tp, _Up>::type
23866: { };
23866:
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: inline constexpr bool is_swappable_with_v =
23866: is_swappable_with<_Tp, _Up>::value;
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: inline constexpr bool is_nothrow_swappable_with_v =
23866: is_nothrow_swappable_with<_Tp, _Up>::value;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Result, typename _Ret,
23866: bool = is_void<_Ret>::value, typename = void>
23866: struct __is_invocable_impl : false_type { };
23866:
23866:
23866: template<typename _Result, typename _Ret>
23866: struct __is_invocable_impl<_Result, _Ret,
23866: true,
23866: __void_t<typename _Result::type>>
23866: : true_type
23866: { };
23866:
23866: #pragma GCC diagnostic push
23866: #pragma GCC diagnostic ignored "-Wctor-dtor-privacy"
23866:
23866: template<typename _Result, typename _Ret>
23866: struct __is_invocable_impl<_Result, _Ret,
23866: false,
23866: __void_t<typename _Result::type>>
23866: {
23866: private:
23866:
23866:
23866: static typename _Result::type _S_get();
23866:
23866: template<typename _Tp>
23866: static void _S_conv(_Tp);
23866:
23866:
23866: template<typename _Tp, typename = decltype(_S_conv<_Tp>(_S_get()))>
23866: static true_type
23866: _S_test(int);
23866:
23866: template<typename _Tp>
23866: static false_type
23866: _S_test(...);
23866:
23866: public:
23866: using type = decltype(_S_test<_Ret>(1));
23866: };
23866: #pragma GCC diagnostic pop
23866:
23866: template<typename _Fn, typename... _ArgTypes>
23866: struct __is_invocable
23866: : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type
23866: { };
23866:
23866: template<typename _Fn, typename _Tp, typename... _Args>
23866: constexpr bool __call_is_nt(__invoke_memfun_ref)
23866: {
23866: using _Up = typename __inv_unwrap<_Tp>::type;
23866: return noexcept((std::declval<_Up>().*std::declval<_Fn>())(
23866: std::declval<_Args>()...));
23866: }
23866:
23866: template<typename _Fn, typename _Tp, typename... _Args>
23866: constexpr bool __call_is_nt(__invoke_memfun_deref)
23866: {
23866: return noexcept(((*std::declval<_Tp>()).*std::declval<_Fn>())(
23866: std::declval<_Args>()...));
23866: }
23866:
23866: template<typename _Fn, typename _Tp>
23866: constexpr bool __call_is_nt(__invoke_memobj_ref)
23866: {
23866: using _Up = typename __inv_unwrap<_Tp>::type;
23866: return noexcept(std::declval<_Up>().*std::declval<_Fn>());
23866: }
23866:
23866: template<typename _Fn, typename _Tp>
23866: constexpr bool __call_is_nt(__invoke_memobj_deref)
23866: {
23866: return noexcept((*std::declval<_Tp>()).*std::declval<_Fn>());
23866: }
23866:
23866: template<typename _Fn, typename... _Args>
23866: constexpr bool __call_is_nt(__invoke_other)
23866: {
23866: return noexcept(std::declval<_Fn>()(std::declval<_Args>()...));
23866: }
23866:
23866: template<typename _Result, typename _Fn, typename... _Args>
23866: struct __call_is_nothrow
23866: : __bool_constant<
23866: std::__call_is_nt<_Fn, _Args...>(typename _Result::__invoke_type{})
23866: >
23866: { };
23866:
23866: template<typename _Fn, typename... _Args>
23866: using __call_is_nothrow_
23866: = __call_is_nothrow<__invoke_result<_Fn, _Args...>, _Fn, _Args...>;
23866:
23866:
23866: template<typename _Fn, typename... _Args>
23866: struct __is_nothrow_invocable
23866: : __and_<__is_invocable<_Fn, _Args...>,
23866: __call_is_nothrow_<_Fn, _Args...>>::type
23866: { };
23866:
23866: #pragma GCC diagnostic push
23866: #pragma GCC diagnostic ignored "-Wctor-dtor-privacy"
23866: struct __nonesuchbase {};
23866: struct __nonesuch : private __nonesuchbase {
23866: ~__nonesuch() = delete;
23866: __nonesuch(__nonesuch const&) = delete;
23866: void operator=(__nonesuch const&) = delete;
23866: };
23866: #pragma GCC diagnostic pop
23866:
23866:
23866: #define __cpp_lib_is_invocable 201703
23866:
23866:
23866: template<typename _Functor, typename... _ArgTypes>
23866: struct invoke_result
23866: : public __invoke_result<_Functor, _ArgTypes...>
23866: { };
23866:
23866:
23866: template<typename _Fn, typename... _Args>
23866: using invoke_result_t = typename invoke_result<_Fn, _Args...>::type;
23866:
23866:
23866: template<typename _Fn, typename... _ArgTypes>
23866: struct is_invocable
23866: : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Fn>{}),
23866: "_Fn must be a complete class or an unbounded array");
23866: };
23866:
23866:
23866: template<typename _Ret, typename _Fn, typename... _ArgTypes>
23866: struct is_invocable_r
23866: : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, _Ret>::type
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Fn>{}),
23866: "_Fn must be a complete class or an unbounded array");
23866: };
23866:
23866:
23866: template<typename _Fn, typename... _ArgTypes>
23866: struct is_nothrow_invocable
23866: : __and_<__is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>,
23866: __call_is_nothrow_<_Fn, _ArgTypes...>>::type
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Fn>{}),
23866: "_Fn must be a complete class or an unbounded array");
23866: };
23866:
23866: template<typename _Result, typename _Ret, typename = void>
23866: struct __is_nt_invocable_impl : false_type { };
23866:
23866: template<typename _Result, typename _Ret>
23866: struct __is_nt_invocable_impl<_Result, _Ret,
23866: __void_t<typename _Result::type>>
23866: : __or_<is_void<_Ret>,
23866: __is_nothrow_convertible<typename _Result::type, _Ret>>
23866: { };
23866:
23866:
23866: template<typename _Ret, typename _Fn, typename... _ArgTypes>
23866: struct is_nothrow_invocable_r
23866: : __and_<__is_nt_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, _Ret>,
23866: __call_is_nothrow_<_Fn, _ArgTypes...>>::type
23866: { };
23866:
23866:
23866: template<typename _Fn, typename... _Args>
23866: inline constexpr bool is_invocable_v = is_invocable<_Fn, _Args...>::value;
23866:
23866:
23866: template<typename _Fn, typename... _Args>
23866: inline constexpr bool is_nothrow_invocable_v
23866: = is_nothrow_invocable<_Fn, _Args...>::value;
23866:
23866:
23866: template<typename _Ret, typename _Fn, typename... _Args>
23866: inline constexpr bool is_invocable_r_v
23866: = is_invocable_r<_Ret, _Fn, _Args...>::value;
23866:
23866:
23866: template<typename _Ret, typename _Fn, typename... _Args>
23866: inline constexpr bool is_nothrow_invocable_r_v
23866: = is_nothrow_invocable_r<_Ret, _Fn, _Args...>::value;
23866:
23866:
23866:
23866: #define __cpp_lib_type_trait_variable_templates 201510L
23866: template <typename _Tp>
23866: inline constexpr bool is_void_v = is_void<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_null_pointer_v = is_null_pointer<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_integral_v = is_integral<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_floating_point_v = is_floating_point<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_array_v = is_array<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_pointer_v = is_pointer<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_lvalue_reference_v =
23866: is_lvalue_reference<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_rvalue_reference_v =
23866: is_rvalue_reference<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_member_object_pointer_v =
23866: is_member_object_pointer<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_member_function_pointer_v =
23866: is_member_function_pointer<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_enum_v = is_enum<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_union_v = is_union<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_class_v = is_class<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_function_v = is_function<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_reference_v = is_reference<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_arithmetic_v = is_arithmetic<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_fundamental_v = is_fundamental<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_object_v = is_object<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_scalar_v = is_scalar<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_compound_v = is_compound<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_member_pointer_v = is_member_pointer<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_const_v = is_const<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_volatile_v = is_volatile<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_trivial_v = is_trivial<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_trivially_copyable_v =
23866: is_trivially_copyable<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_standard_layout_v = is_standard_layout<_Tp>::value;
23866: #pragma GCC diagnostic push
23866: #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
23866: template <typename _Tp>
23866:
23866: inline constexpr bool is_pod_v = is_pod<_Tp>::value;
23866: #pragma GCC diagnostic pop
23866: template <typename _Tp>
23866: inline constexpr bool is_literal_type_v = is_literal_type<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_empty_v = is_empty<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_polymorphic_v = is_polymorphic<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_abstract_v = is_abstract<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_final_v = is_final<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_signed_v = is_signed<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_unsigned_v = is_unsigned<_Tp>::value;
23866: template <typename _Tp, typename... _Args>
23866: inline constexpr bool is_constructible_v =
23866: is_constructible<_Tp, _Args...>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_default_constructible_v =
23866: is_default_constructible<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_copy_constructible_v =
23866: is_copy_constructible<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_move_constructible_v =
23866: is_move_constructible<_Tp>::value;
23866: template <typename _Tp, typename _Up>
23866: inline constexpr bool is_assignable_v = is_assignable<_Tp, _Up>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_copy_assignable_v = is_copy_assignable<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_move_assignable_v = is_move_assignable<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_destructible_v = is_destructible<_Tp>::value;
23866: template <typename _Tp, typename... _Args>
23866: inline constexpr bool is_trivially_constructible_v =
23866: is_trivially_constructible<_Tp, _Args...>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_trivially_default_constructible_v =
23866: is_trivially_default_constructible<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_trivially_copy_constructible_v =
23866: is_trivially_copy_constructible<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_trivially_move_constructible_v =
23866: is_trivially_move_constructible<_Tp>::value;
23866: template <typename _Tp, typename _Up>
23866: inline constexpr bool is_trivially_assignable_v =
23866: is_trivially_assignable<_Tp, _Up>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_trivially_copy_assignable_v =
23866: is_trivially_copy_assignable<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_trivially_move_assignable_v =
23866: is_trivially_move_assignable<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_trivially_destructible_v =
23866: is_trivially_destructible<_Tp>::value;
23866: template <typename _Tp, typename... _Args>
23866: inline constexpr bool is_nothrow_constructible_v =
23866: is_nothrow_constructible<_Tp, _Args...>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_nothrow_default_constructible_v =
23866: is_nothrow_default_constructible<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_nothrow_copy_constructible_v =
23866: is_nothrow_copy_constructible<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_nothrow_move_constructible_v =
23866: is_nothrow_move_constructible<_Tp>::value;
23866: template <typename _Tp, typename _Up>
23866: inline constexpr bool is_nothrow_assignable_v =
23866: is_nothrow_assignable<_Tp, _Up>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_nothrow_copy_assignable_v =
23866: is_nothrow_copy_assignable<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_nothrow_move_assignable_v =
23866: is_nothrow_move_assignable<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_nothrow_destructible_v =
23866: is_nothrow_destructible<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool has_virtual_destructor_v =
23866: has_virtual_destructor<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr size_t alignment_of_v = alignment_of<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr size_t rank_v = rank<_Tp>::value;
23866: template <typename _Tp, unsigned _Idx = 0>
23866: inline constexpr size_t extent_v = extent<_Tp, _Idx>::value;
23866:
23866: template <typename _Tp, typename _Up>
23866: inline constexpr bool is_same_v = __is_same_as(_Tp, _Up);
23866:
23866:
23866:
23866:
23866: template <typename _Base, typename _Derived>
23866: inline constexpr bool is_base_of_v = is_base_of<_Base, _Derived>::value;
23866: template <typename _From, typename _To>
23866: inline constexpr bool is_convertible_v = is_convertible<_From, _To>::value;
23866:
23866:
23866: #define __cpp_lib_has_unique_object_representations 201606
23866:
23866: template<typename _Tp>
23866: struct has_unique_object_representations
23866: : bool_constant<__has_unique_object_representations(
23866: remove_cv_t<remove_all_extents_t<_Tp>>
23866: )>
23866: {
23866: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
23866: "template argument must be a complete class or an unbounded array");
23866: };
23866:
23866: template<typename _Tp>
23866: inline constexpr bool has_unique_object_representations_v
23866: = has_unique_object_representations<_Tp>::value;
23866:
23866:
23866:
23866: #define __cpp_lib_is_aggregate 201703
23866:
23866: template<typename _Tp>
23866: struct is_aggregate
23866: : bool_constant<__is_aggregate(remove_cv_t<_Tp>)>
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: inline constexpr bool is_aggregate_v = is_aggregate<_Tp>::value;
23866: # 3455 "/usr/include/c++/10/type_traits" 3
23866:
23866: }
23866: # 58 "/usr/include/c++/10/bits/move.h" 2 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 74 "/usr/include/c++/10/bits/move.h" 3
23866: template<typename _Tp>
23866: constexpr _Tp&&
23866: forward(typename std::remove_reference<_Tp>::type& __t) noexcept
23866: { return static_cast<_Tp&&>(__t); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr _Tp&&
23866: forward(typename std::remove_reference<_Tp>::type&& __t) noexcept
23866: {
23866: static_assert(!std::is_lvalue_reference<_Tp>::value, "template argument"
23866: " substituting _Tp is an lvalue reference type");
23866: return static_cast<_Tp&&>(__t);
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename std::remove_reference<_Tp>::type&&
23866: move(_Tp&& __t) noexcept
23866: { return static_cast<typename std::remove_reference<_Tp>::type&&>(__t); }
23866:
23866:
23866: template<typename _Tp>
23866: struct __move_if_noexcept_cond
23866: : public __and_<__not_<is_nothrow_move_constructible<_Tp>>,
23866: is_copy_constructible<_Tp>>::type { };
23866: # 118 "/usr/include/c++/10/bits/move.h" 3
23866: template<typename _Tp>
23866: constexpr typename
23866: conditional<__move_if_noexcept_cond<_Tp>::value, const _Tp&, _Tp&&>::type
23866: move_if_noexcept(_Tp& __x) noexcept
23866: { return std::move(__x); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __cpp_lib_addressof_constexpr 201603
23866: # 138 "/usr/include/c++/10/bits/move.h" 3
23866: template<typename _Tp>
23866: inline constexpr _Tp*
23866: addressof(_Tp& __r) noexcept
23866: { return std::__addressof(__r); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: const _Tp* addressof(const _Tp&&) = delete;
23866:
23866:
23866: template <typename _Tp, typename _Up = _Tp>
23866:
23866: inline _Tp
23866: __exchange(_Tp& __obj, _Up&& __new_val)
23866: {
23866: _Tp __old_val = std::move(__obj);
23866: __obj = std::forward<_Up>(__new_val);
23866: return __old_val;
23866: }
23866:
23866:
23866:
23866: #define _GLIBCXX_MOVE(__val) std::move(__val)
23866: #define _GLIBCXX_FORWARD(_Tp,__val) std::forward<_Tp>(__val)
23866: # 179 "/usr/include/c++/10/bits/move.h" 3
23866: template<typename _Tp>
23866:
23866: inline
23866:
23866: typename enable_if<__and_<__not_<__is_tuple_like<_Tp>>,
23866: is_move_constructible<_Tp>,
23866: is_move_assignable<_Tp>>::value>::type
23866:
23866:
23866:
23866: swap(_Tp& __a, _Tp& __b)
23866: noexcept(__and_<is_nothrow_move_constructible<_Tp>, is_nothrow_move_assignable<_Tp>>::value)
23866:
23866: {
23866:
23866:
23866:
23866:
23866: _Tp __tmp = std::move(__a);
23866: __a = std::move(__b);
23866: __b = std::move(__tmp);
23866: }
23866:
23866:
23866:
23866:
23866: template<typename _Tp, size_t _Nm>
23866:
23866: inline
23866:
23866: typename enable_if<__is_swappable<_Tp>::value>::type
23866:
23866:
23866:
23866: swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm])
23866: noexcept(__is_nothrow_swappable<_Tp>::value)
23866: {
23866: for (size_t __n = 0; __n < _Nm; ++__n)
23866: swap(__a[__n], __b[__n]);
23866: }
23866:
23866:
23866:
23866: }
23866: # 60 "/usr/include/c++/10/bits/stl_pair.h" 2 3
23866: # 69 "/usr/include/c++/10/bits/stl_pair.h" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 80 "/usr/include/c++/10/bits/stl_pair.h" 3
23866: struct piecewise_construct_t { explicit piecewise_construct_t() = default; };
23866:
23866:
23866: inline constexpr piecewise_construct_t piecewise_construct =
23866: piecewise_construct_t();
23866:
23866:
23866:
23866:
23866: template<typename...>
23866: class tuple;
23866:
23866: template<std::size_t...>
23866: struct _Index_tuple;
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <bool, typename _T1, typename _T2>
23866: struct _PCC
23866: {
23866: template <typename _U1, typename _U2>
23866: static constexpr bool _ConstructiblePair()
23866: {
23866: return __and_<is_constructible<_T1, const _U1&>,
23866: is_constructible<_T2, const _U2&>>::value;
23866: }
23866:
23866: template <typename _U1, typename _U2>
23866: static constexpr bool _ImplicitlyConvertiblePair()
23866: {
23866: return __and_<is_convertible<const _U1&, _T1>,
23866: is_convertible<const _U2&, _T2>>::value;
23866: }
23866:
23866: template <typename _U1, typename _U2>
23866: static constexpr bool _MoveConstructiblePair()
23866: {
23866: return __and_<is_constructible<_T1, _U1&&>,
23866: is_constructible<_T2, _U2&&>>::value;
23866: }
23866:
23866: template <typename _U1, typename _U2>
23866: static constexpr bool _ImplicitlyMoveConvertiblePair()
23866: {
23866: return __and_<is_convertible<_U1&&, _T1>,
23866: is_convertible<_U2&&, _T2>>::value;
23866: }
23866:
23866: template <bool __implicit, typename _U1, typename _U2>
23866: static constexpr bool _CopyMovePair()
23866: {
23866: using __do_converts = __and_<is_convertible<const _U1&, _T1>,
23866: is_convertible<_U2&&, _T2>>;
23866: using __converts = typename conditional<__implicit,
23866: __do_converts,
23866: __not_<__do_converts>>::type;
23866: return __and_<is_constructible<_T1, const _U1&>,
23866: is_constructible<_T2, _U2&&>,
23866: __converts
23866: >::value;
23866: }
23866:
23866: template <bool __implicit, typename _U1, typename _U2>
23866: static constexpr bool _MoveCopyPair()
23866: {
23866: using __do_converts = __and_<is_convertible<_U1&&, _T1>,
23866: is_convertible<const _U2&, _T2>>;
23866: using __converts = typename conditional<__implicit,
23866: __do_converts,
23866: __not_<__do_converts>>::type;
23866: return __and_<is_constructible<_T1, _U1&&>,
23866: is_constructible<_T2, const _U2&&>,
23866: __converts
23866: >::value;
23866: }
23866: };
23866:
23866: template <typename _T1, typename _T2>
23866: struct _PCC<false, _T1, _T2>
23866: {
23866: template <typename _U1, typename _U2>
23866: static constexpr bool _ConstructiblePair()
23866: {
23866: return false;
23866: }
23866:
23866: template <typename _U1, typename _U2>
23866: static constexpr bool _ImplicitlyConvertiblePair()
23866: {
23866: return false;
23866: }
23866:
23866: template <typename _U1, typename _U2>
23866: static constexpr bool _MoveConstructiblePair()
23866: {
23866: return false;
23866: }
23866:
23866: template <typename _U1, typename _U2>
23866: static constexpr bool _ImplicitlyMoveConvertiblePair()
23866: {
23866: return false;
23866: }
23866: };
23866:
23866:
23866: template<typename _U1, typename _U2> class __pair_base
23866: {
23866:
23866: template<typename _T1, typename _T2> friend struct pair;
23866: __pair_base() = default;
23866: ~__pair_base() = default;
23866: __pair_base(const __pair_base&) = default;
23866: __pair_base& operator=(const __pair_base&) = delete;
23866:
23866: };
23866: # 210 "/usr/include/c++/10/bits/stl_pair.h" 3
23866: template<typename _T1, typename _T2>
23866: struct pair
23866: : private __pair_base<_T1, _T2>
23866: {
23866: typedef _T1 first_type;
23866: typedef _T2 second_type;
23866:
23866: _T1 first;
23866: _T2 second;
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <typename _U1 = _T1,
23866: typename _U2 = _T2,
23866: typename enable_if<__and_<
23866: __is_implicitly_default_constructible<_U1>,
23866: __is_implicitly_default_constructible<_U2>>
23866: ::value, bool>::type = true>
23866:
23866: constexpr pair()
23866: : first(), second() { }
23866:
23866:
23866: template <typename _U1 = _T1,
23866: typename _U2 = _T2,
23866: typename enable_if<__and_<
23866: is_default_constructible<_U1>,
23866: is_default_constructible<_U2>,
23866: __not_<
23866: __and_<__is_implicitly_default_constructible<_U1>,
23866: __is_implicitly_default_constructible<_U2>>>>
23866: ::value, bool>::type = false>
23866: explicit constexpr pair()
23866: : first(), second() { }
23866: # 256 "/usr/include/c++/10/bits/stl_pair.h" 3
23866: using _PCCP = _PCC<true, _T1, _T2>;
23866:
23866:
23866:
23866: template<typename _U1 = _T1, typename _U2=_T2, typename
23866: enable_if<_PCCP::template
23866: _ConstructiblePair<_U1, _U2>()
23866: && _PCCP::template
23866: _ImplicitlyConvertiblePair<_U1, _U2>(),
23866: bool>::type=true>
23866: constexpr pair(const _T1& __a, const _T2& __b)
23866: : first(__a), second(__b) { }
23866:
23866:
23866: template<typename _U1 = _T1, typename _U2=_T2, typename
23866: enable_if<_PCCP::template
23866: _ConstructiblePair<_U1, _U2>()
23866: && !_PCCP::template
23866: _ImplicitlyConvertiblePair<_U1, _U2>(),
23866: bool>::type=false>
23866: explicit constexpr pair(const _T1& __a, const _T2& __b)
23866: : first(__a), second(__b) { }
23866: # 288 "/usr/include/c++/10/bits/stl_pair.h" 3
23866: template <typename _U1, typename _U2>
23866: using _PCCFP = _PCC<!is_same<_T1, _U1>::value
23866: || !is_same<_T2, _U2>::value,
23866: _T1, _T2>;
23866:
23866:
23866: template<typename _U1, typename _U2, typename
23866: enable_if<_PCCFP<_U1, _U2>::template
23866: _ConstructiblePair<_U1, _U2>()
23866: && _PCCFP<_U1, _U2>::template
23866: _ImplicitlyConvertiblePair<_U1, _U2>(),
23866: bool>::type=true>
23866: constexpr pair(const pair<_U1, _U2>& __p)
23866: : first(__p.first), second(__p.second) { }
23866:
23866: template<typename _U1, typename _U2, typename
23866: enable_if<_PCCFP<_U1, _U2>::template
23866: _ConstructiblePair<_U1, _U2>()
23866: && !_PCCFP<_U1, _U2>::template
23866: _ImplicitlyConvertiblePair<_U1, _U2>(),
23866: bool>::type=false>
23866: explicit constexpr pair(const pair<_U1, _U2>& __p)
23866: : first(__p.first), second(__p.second) { }
23866:
23866:
23866:
23866: constexpr pair(const pair&) = default;
23866: constexpr pair(pair&&) = default;
23866:
23866:
23866: template<typename _U1, typename
23866: enable_if<_PCCP::template
23866: _MoveCopyPair<true, _U1, _T2>(),
23866: bool>::type=true>
23866: constexpr pair(_U1&& __x, const _T2& __y)
23866: : first(std::forward<_U1>(__x)), second(__y) { }
23866:
23866: template<typename _U1, typename
23866: enable_if<_PCCP::template
23866: _MoveCopyPair<false, _U1, _T2>(),
23866: bool>::type=false>
23866: explicit constexpr pair(_U1&& __x, const _T2& __y)
23866: : first(std::forward<_U1>(__x)), second(__y) { }
23866:
23866: template<typename _U2, typename
23866: enable_if<_PCCP::template
23866: _CopyMovePair<true, _T1, _U2>(),
23866: bool>::type=true>
23866: constexpr pair(const _T1& __x, _U2&& __y)
23866: : first(__x), second(std::forward<_U2>(__y)) { }
23866:
23866: template<typename _U2, typename
23866: enable_if<_PCCP::template
23866: _CopyMovePair<false, _T1, _U2>(),
23866: bool>::type=false>
23866: explicit pair(const _T1& __x, _U2&& __y)
23866: : first(__x), second(std::forward<_U2>(__y)) { }
23866:
23866: template<typename _U1, typename _U2, typename
23866: enable_if<_PCCP::template
23866: _MoveConstructiblePair<_U1, _U2>()
23866: && _PCCP::template
23866: _ImplicitlyMoveConvertiblePair<_U1, _U2>(),
23866: bool>::type=true>
23866: constexpr pair(_U1&& __x, _U2&& __y)
23866: : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { }
23866:
23866: template<typename _U1, typename _U2, typename
23866: enable_if<_PCCP::template
23866: _MoveConstructiblePair<_U1, _U2>()
23866: && !_PCCP::template
23866: _ImplicitlyMoveConvertiblePair<_U1, _U2>(),
23866: bool>::type=false>
23866: explicit constexpr pair(_U1&& __x, _U2&& __y)
23866: : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { }
23866:
23866:
23866: template<typename _U1, typename _U2, typename
23866: enable_if<_PCCFP<_U1, _U2>::template
23866: _MoveConstructiblePair<_U1, _U2>()
23866: && _PCCFP<_U1, _U2>::template
23866: _ImplicitlyMoveConvertiblePair<_U1, _U2>(),
23866: bool>::type=true>
23866: constexpr pair(pair<_U1, _U2>&& __p)
23866: : first(std::forward<_U1>(__p.first)),
23866: second(std::forward<_U2>(__p.second)) { }
23866:
23866: template<typename _U1, typename _U2, typename
23866: enable_if<_PCCFP<_U1, _U2>::template
23866: _MoveConstructiblePair<_U1, _U2>()
23866: && !_PCCFP<_U1, _U2>::template
23866: _ImplicitlyMoveConvertiblePair<_U1, _U2>(),
23866: bool>::type=false>
23866: explicit constexpr pair(pair<_U1, _U2>&& __p)
23866: : first(std::forward<_U1>(__p.first)),
23866: second(std::forward<_U2>(__p.second)) { }
23866:
23866: template<typename... _Args1, typename... _Args2>
23866:
23866: pair(piecewise_construct_t, tuple<_Args1...>, tuple<_Args2...>);
23866:
23866: pair&
23866: operator=(typename conditional<
23866: __and_<is_copy_assignable<_T1>,
23866: is_copy_assignable<_T2>>::value,
23866: const pair&, const __nonesuch&>::type __p)
23866: {
23866: first = __p.first;
23866: second = __p.second;
23866: return *this;
23866: }
23866:
23866: pair&
23866: operator=(typename conditional<
23866: __and_<is_move_assignable<_T1>,
23866: is_move_assignable<_T2>>::value,
23866: pair&&, __nonesuch&&>::type __p)
23866: noexcept(__and_<is_nothrow_move_assignable<_T1>,
23866: is_nothrow_move_assignable<_T2>>::value)
23866: {
23866: first = std::forward<first_type>(__p.first);
23866: second = std::forward<second_type>(__p.second);
23866: return *this;
23866: }
23866:
23866: template<typename _U1, typename _U2>
23866:
23866: typename enable_if<__and_<is_assignable<_T1&, const _U1&>,
23866: is_assignable<_T2&, const _U2&>>::value,
23866: pair&>::type
23866: operator=(const pair<_U1, _U2>& __p)
23866: {
23866: first = __p.first;
23866: second = __p.second;
23866: return *this;
23866: }
23866:
23866: template<typename _U1, typename _U2>
23866:
23866: typename enable_if<__and_<is_assignable<_T1&, _U1&&>,
23866: is_assignable<_T2&, _U2&&>>::value,
23866: pair&>::type
23866: operator=(pair<_U1, _U2>&& __p)
23866: {
23866: first = std::forward<_U1>(__p.first);
23866: second = std::forward<_U2>(__p.second);
23866: return *this;
23866: }
23866:
23866:
23866: void
23866: swap(pair& __p)
23866: noexcept(__and_<__is_nothrow_swappable<_T1>,
23866: __is_nothrow_swappable<_T2>>::value)
23866: {
23866: using std::swap;
23866: swap(first, __p.first);
23866: swap(second, __p.second);
23866: }
23866:
23866: private:
23866: template<typename... _Args1, std::size_t... _Indexes1,
23866: typename... _Args2, std::size_t... _Indexes2>
23866:
23866: pair(tuple<_Args1...>&, tuple<_Args2...>&,
23866: _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>);
23866:
23866: };
23866:
23866:
23866:
23866:
23866: template<typename _T1, typename _T2> pair(_T1, _T2) -> pair<_T1, _T2>;
23866:
23866:
23866:
23866: template<typename _T1, typename _T2>
23866: inline constexpr bool
23866: operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
23866: { return __x.first == __y.first && __x.second == __y.second; }
23866: # 487 "/usr/include/c++/10/bits/stl_pair.h" 3
23866: template<typename _T1, typename _T2>
23866: inline constexpr bool
23866: operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
23866: { return __x.first < __y.first
23866: || (!(__y.first < __x.first) && __x.second < __y.second); }
23866:
23866:
23866: template<typename _T1, typename _T2>
23866: inline constexpr bool
23866: operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
23866: { return !(__x == __y); }
23866:
23866:
23866: template<typename _T1, typename _T2>
23866: inline constexpr bool
23866: operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
23866: { return __y < __x; }
23866:
23866:
23866: template<typename _T1, typename _T2>
23866: inline constexpr bool
23866: operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
23866: { return !(__y < __x); }
23866:
23866:
23866: template<typename _T1, typename _T2>
23866: inline constexpr bool
23866: operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
23866: { return !(__x < __y); }
23866: # 524 "/usr/include/c++/10/bits/stl_pair.h" 3
23866: template<typename _T1, typename _T2>
23866: inline
23866:
23866:
23866: typename enable_if<__and_<__is_swappable<_T1>,
23866: __is_swappable<_T2>>::value>::type
23866:
23866:
23866:
23866: swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y)
23866: noexcept(noexcept(__x.swap(__y)))
23866: { __x.swap(__y); }
23866:
23866:
23866: template<typename _T1, typename _T2>
23866: typename enable_if<!__and_<__is_swappable<_T1>,
23866: __is_swappable<_T2>>::value>::type
23866: swap(pair<_T1, _T2>&, pair<_T1, _T2>&) = delete;
23866: # 564 "/usr/include/c++/10/bits/stl_pair.h" 3
23866: template<typename _T1, typename _T2>
23866: constexpr pair<typename __decay_and_strip<_T1>::__type,
23866: typename __decay_and_strip<_T2>::__type>
23866: make_pair(_T1&& __x, _T2&& __y)
23866: {
23866: typedef typename __decay_and_strip<_T1>::__type __ds_type1;
23866: typedef typename __decay_and_strip<_T2>::__type __ds_type2;
23866: typedef pair<__ds_type1, __ds_type2> __pair_type;
23866: return __pair_type(std::forward<_T1>(__x), std::forward<_T2>(__y));
23866: }
23866: # 583 "/usr/include/c++/10/bits/stl_pair.h" 3
23866:
23866: }
23866: # 71 "/usr/include/c++/10/utility" 2 3
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/initializer_list" 1 3
23866: # 31 "/usr/include/c++/10/initializer_list" 3
23866: #define _INITIALIZER_LIST
23866:
23866:
23866: # 34 "/usr/include/c++/10/initializer_list" 3
23866:
23866:
23866:
23866:
23866:
23866: #pragma GCC visibility push(default)
23866:
23866:
23866:
23866: namespace std
23866: {
23866:
23866: template<class _E>
23866: class initializer_list
23866: {
23866: public:
23866: typedef _E value_type;
23866: typedef const _E& reference;
23866: typedef const _E& const_reference;
23866: typedef size_t size_type;
23866: typedef const _E* iterator;
23866: typedef const _E* const_iterator;
23866:
23866: private:
23866: iterator _M_array;
23866: size_type _M_len;
23866:
23866:
23866: constexpr initializer_list(const_iterator __a, size_type __l)
23866: : _M_array(__a), _M_len(__l) { }
23866:
23866: public:
23866: constexpr initializer_list() noexcept
23866: : _M_array(0), _M_len(0) { }
23866:
23866:
23866: constexpr size_type
23866: size() const noexcept { return _M_len; }
23866:
23866:
23866: constexpr const_iterator
23866: begin() const noexcept { return _M_array; }
23866:
23866:
23866: constexpr const_iterator
23866: end() const noexcept { return begin() + size(); }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<class _Tp>
23866: constexpr const _Tp*
23866: begin(initializer_list<_Tp> __ils) noexcept
23866: { return __ils.begin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<class _Tp>
23866: constexpr const _Tp*
23866: end(initializer_list<_Tp> __ils) noexcept
23866: { return __ils.end(); }
23866: }
23866:
23866: #pragma GCC visibility pop
23866: # 77 "/usr/include/c++/10/utility" 2 3
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct tuple_size;
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp,
23866: typename _Up = typename remove_cv<_Tp>::type,
23866: typename = typename enable_if<is_same<_Tp, _Up>::value>::type,
23866: size_t = tuple_size<_Tp>::value>
23866: using __enable_if_has_tuple_size = _Tp;
23866:
23866: template<typename _Tp>
23866: struct tuple_size<const __enable_if_has_tuple_size<_Tp>>
23866: : public tuple_size<_Tp> { };
23866:
23866: template<typename _Tp>
23866: struct tuple_size<volatile __enable_if_has_tuple_size<_Tp>>
23866: : public tuple_size<_Tp> { };
23866:
23866: template<typename _Tp>
23866: struct tuple_size<const volatile __enable_if_has_tuple_size<_Tp>>
23866: : public tuple_size<_Tp> { };
23866:
23866:
23866: template<std::size_t __i, typename _Tp>
23866: struct tuple_element;
23866:
23866:
23866: template<std::size_t __i, typename _Tp>
23866: using __tuple_element_t = typename tuple_element<__i, _Tp>::type;
23866:
23866: template<std::size_t __i, typename _Tp>
23866: struct tuple_element<__i, const _Tp>
23866: {
23866: typedef typename add_const<__tuple_element_t<__i, _Tp>>::type type;
23866: };
23866:
23866: template<std::size_t __i, typename _Tp>
23866: struct tuple_element<__i, volatile _Tp>
23866: {
23866: typedef typename add_volatile<__tuple_element_t<__i, _Tp>>::type type;
23866: };
23866:
23866: template<std::size_t __i, typename _Tp>
23866: struct tuple_element<__i, const volatile _Tp>
23866: {
23866: typedef typename add_cv<__tuple_element_t<__i, _Tp>>::type type;
23866: };
23866:
23866:
23866:
23866:
23866:
23866: #define __cpp_lib_tuple_element_t 201402L
23866:
23866: template<std::size_t __i, typename _Tp>
23866: using tuple_element_t = typename tuple_element<__i, _Tp>::type;
23866:
23866:
23866:
23866:
23866:
23866: template<typename _T1, typename _T2>
23866: struct __is_tuple_like_impl<std::pair<_T1, _T2>> : true_type
23866: { };
23866:
23866:
23866: template<class _Tp1, class _Tp2>
23866: struct tuple_size<std::pair<_Tp1, _Tp2>>
23866: : public integral_constant<std::size_t, 2> { };
23866:
23866:
23866: template<class _Tp1, class _Tp2>
23866: struct tuple_element<0, std::pair<_Tp1, _Tp2>>
23866: { typedef _Tp1 type; };
23866:
23866:
23866: template<class _Tp1, class _Tp2>
23866: struct tuple_element<1, std::pair<_Tp1, _Tp2>>
23866: { typedef _Tp2 type; };
23866:
23866: template<std::size_t _Int>
23866: struct __pair_get;
23866:
23866: template<>
23866: struct __pair_get<0>
23866: {
23866: template<typename _Tp1, typename _Tp2>
23866: static constexpr _Tp1&
23866: __get(std::pair<_Tp1, _Tp2>& __pair) noexcept
23866: { return __pair.first; }
23866:
23866: template<typename _Tp1, typename _Tp2>
23866: static constexpr _Tp1&&
23866: __move_get(std::pair<_Tp1, _Tp2>&& __pair) noexcept
23866: { return std::forward<_Tp1>(__pair.first); }
23866:
23866: template<typename _Tp1, typename _Tp2>
23866: static constexpr const _Tp1&
23866: __const_get(const std::pair<_Tp1, _Tp2>& __pair) noexcept
23866: { return __pair.first; }
23866:
23866: template<typename _Tp1, typename _Tp2>
23866: static constexpr const _Tp1&&
23866: __const_move_get(const std::pair<_Tp1, _Tp2>&& __pair) noexcept
23866: { return std::forward<const _Tp1>(__pair.first); }
23866: };
23866:
23866: template<>
23866: struct __pair_get<1>
23866: {
23866: template<typename _Tp1, typename _Tp2>
23866: static constexpr _Tp2&
23866: __get(std::pair<_Tp1, _Tp2>& __pair) noexcept
23866: { return __pair.second; }
23866:
23866: template<typename _Tp1, typename _Tp2>
23866: static constexpr _Tp2&&
23866: __move_get(std::pair<_Tp1, _Tp2>&& __pair) noexcept
23866: { return std::forward<_Tp2>(__pair.second); }
23866:
23866: template<typename _Tp1, typename _Tp2>
23866: static constexpr const _Tp2&
23866: __const_get(const std::pair<_Tp1, _Tp2>& __pair) noexcept
23866: { return __pair.second; }
23866:
23866: template<typename _Tp1, typename _Tp2>
23866: static constexpr const _Tp2&&
23866: __const_move_get(const std::pair<_Tp1, _Tp2>&& __pair) noexcept
23866: { return std::forward<const _Tp2>(__pair.second); }
23866: };
23866:
23866: template<std::size_t _Int, class _Tp1, class _Tp2>
23866: constexpr typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type&
23866: get(std::pair<_Tp1, _Tp2>& __in) noexcept
23866: { return __pair_get<_Int>::__get(__in); }
23866:
23866: template<std::size_t _Int, class _Tp1, class _Tp2>
23866: constexpr typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type&&
23866: get(std::pair<_Tp1, _Tp2>&& __in) noexcept
23866: { return __pair_get<_Int>::__move_get(std::move(__in)); }
23866:
23866: template<std::size_t _Int, class _Tp1, class _Tp2>
23866: constexpr const typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type&
23866: get(const std::pair<_Tp1, _Tp2>& __in) noexcept
23866: { return __pair_get<_Int>::__const_get(__in); }
23866:
23866: template<std::size_t _Int, class _Tp1, class _Tp2>
23866: constexpr const typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type&&
23866: get(const std::pair<_Tp1, _Tp2>&& __in) noexcept
23866: { return __pair_get<_Int>::__const_move_get(std::move(__in)); }
23866:
23866:
23866:
23866: #define __cpp_lib_tuples_by_type 201304
23866:
23866: template <typename _Tp, typename _Up>
23866: constexpr _Tp&
23866: get(pair<_Tp, _Up>& __p) noexcept
23866: { return __p.first; }
23866:
23866: template <typename _Tp, typename _Up>
23866: constexpr const _Tp&
23866: get(const pair<_Tp, _Up>& __p) noexcept
23866: { return __p.first; }
23866:
23866: template <typename _Tp, typename _Up>
23866: constexpr _Tp&&
23866: get(pair<_Tp, _Up>&& __p) noexcept
23866: { return std::move(__p.first); }
23866:
23866: template <typename _Tp, typename _Up>
23866: constexpr const _Tp&&
23866: get(const pair<_Tp, _Up>&& __p) noexcept
23866: { return std::move(__p.first); }
23866:
23866: template <typename _Tp, typename _Up>
23866: constexpr _Tp&
23866: get(pair<_Up, _Tp>& __p) noexcept
23866: { return __p.second; }
23866:
23866: template <typename _Tp, typename _Up>
23866: constexpr const _Tp&
23866: get(const pair<_Up, _Tp>& __p) noexcept
23866: { return __p.second; }
23866:
23866: template <typename _Tp, typename _Up>
23866: constexpr _Tp&&
23866: get(pair<_Up, _Tp>&& __p) noexcept
23866: { return std::move(__p.second); }
23866:
23866: template <typename _Tp, typename _Up>
23866: constexpr const _Tp&&
23866: get(const pair<_Up, _Tp>&& __p) noexcept
23866: { return std::move(__p.second); }
23866:
23866: #define __cpp_lib_exchange_function 201304
23866:
23866:
23866: template <typename _Tp, typename _Up = _Tp>
23866:
23866: inline _Tp
23866: exchange(_Tp& __obj, _Up&& __new_val)
23866: { return std::__exchange(__obj, std::forward<_Up>(__new_val)); }
23866:
23866:
23866:
23866:
23866:
23866: template<size_t... _Indexes> struct _Index_tuple { };
23866: # 307 "/usr/include/c++/10/utility" 3
23866: template<size_t _Num>
23866: struct _Build_index_tuple
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: using __type = _Index_tuple<__integer_pack(_Num)...>;
23866:
23866: };
23866:
23866:
23866:
23866: #define __cpp_lib_integer_sequence 201304
23866:
23866:
23866: template<typename _Tp, _Tp... _Idx>
23866: struct integer_sequence
23866: {
23866: typedef _Tp value_type;
23866: static constexpr size_t size() noexcept { return sizeof...(_Idx); }
23866: };
23866:
23866:
23866: template<typename _Tp, _Tp _Num>
23866: using make_integer_sequence
23866:
23866:
23866:
23866: = integer_sequence<_Tp, __integer_pack(_Num)...>;
23866:
23866:
23866: #undef _GLIBCXX_USE_MAKE_INTEGER_SEQ
23866:
23866:
23866: template<size_t... _Idx>
23866: using index_sequence = integer_sequence<size_t, _Idx...>;
23866:
23866:
23866: template<size_t _Num>
23866: using make_index_sequence = make_integer_sequence<size_t, _Num>;
23866:
23866:
23866: template<typename... _Types>
23866: using index_sequence_for = make_index_sequence<sizeof...(_Types)>;
23866:
23866:
23866:
23866:
23866: struct in_place_t {
23866: explicit in_place_t() = default;
23866: };
23866:
23866: inline constexpr in_place_t in_place{};
23866:
23866: template<typename _Tp> struct in_place_type_t
23866: {
23866: explicit in_place_type_t() = default;
23866: };
23866:
23866: template<typename _Tp>
23866: inline constexpr in_place_type_t<_Tp> in_place_type{};
23866:
23866: template<size_t _Idx> struct in_place_index_t
23866: {
23866: explicit in_place_index_t() = default;
23866: };
23866:
23866: template<size_t _Idx>
23866: inline constexpr in_place_index_t<_Idx> in_place_index{};
23866:
23866: template<typename>
23866: struct __is_in_place_type_impl : false_type
23866: { };
23866:
23866: template<typename _Tp>
23866: struct __is_in_place_type_impl<in_place_type_t<_Tp>> : true_type
23866: { };
23866:
23866: template<typename _Tp>
23866: struct __is_in_place_type
23866: : public __is_in_place_type_impl<_Tp>
23866: { };
23866:
23866: #define __cpp_lib_as_const 201510
23866: template<typename _Tp>
23866: constexpr add_const_t<_Tp>& as_const(_Tp& __t) noexcept { return __t; }
23866:
23866: template<typename _Tp>
23866: void as_const(const _Tp&&) = delete;
23866: # 473 "/usr/include/c++/10/utility" 3
23866:
23866: }
23866: # 61 "/usr/include/c++/10/algorithm" 2 3
23866: # 1 "/usr/include/c++/10/bits/stl_algobase.h" 1 3
23866: # 57 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: #define _STL_ALGOBASE_H 1
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/functexcept.h" 1 3
23866: # 37 "/usr/include/c++/10/bits/functexcept.h" 3
23866: #define _FUNCTEXCEPT_H 1
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/exception_defines.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/exception_defines.h" 3
23866: #define _EXCEPTION_DEFINES_H 1
23866: # 40 "/usr/include/c++/10/bits/exception_defines.h" 3
23866: #define __try try
23866: #define __catch(X) catch(X)
23866: #define __throw_exception_again throw
23866: # 41 "/usr/include/c++/10/bits/functexcept.h" 2 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: void
23866: __throw_bad_exception(void) __attribute__((__noreturn__));
23866:
23866:
23866: void
23866: __throw_bad_alloc(void) __attribute__((__noreturn__));
23866:
23866:
23866: void
23866: __throw_bad_cast(void) __attribute__((__noreturn__));
23866:
23866: void
23866: __throw_bad_typeid(void) __attribute__((__noreturn__));
23866:
23866:
23866: void
23866: __throw_logic_error(const char*) __attribute__((__noreturn__));
23866:
23866: void
23866: __throw_domain_error(const char*) __attribute__((__noreturn__));
23866:
23866: void
23866: __throw_invalid_argument(const char*) __attribute__((__noreturn__));
23866:
23866: void
23866: __throw_length_error(const char*) __attribute__((__noreturn__));
23866:
23866: void
23866: __throw_out_of_range(const char*) __attribute__((__noreturn__));
23866:
23866: void
23866: __throw_out_of_range_fmt(const char*, ...) __attribute__((__noreturn__))
23866: __attribute__((__format__(__gnu_printf__, 1, 2)));
23866:
23866: void
23866: __throw_runtime_error(const char*) __attribute__((__noreturn__));
23866:
23866: void
23866: __throw_range_error(const char*) __attribute__((__noreturn__));
23866:
23866: void
23866: __throw_overflow_error(const char*) __attribute__((__noreturn__));
23866:
23866: void
23866: __throw_underflow_error(const char*) __attribute__((__noreturn__));
23866:
23866:
23866: void
23866: __throw_ios_failure(const char*) __attribute__((__noreturn__));
23866:
23866: void
23866: __throw_ios_failure(const char*, int) __attribute__((__noreturn__));
23866:
23866:
23866: void
23866: __throw_system_error(int) __attribute__((__noreturn__));
23866:
23866:
23866: void
23866: __throw_future_error(int) __attribute__((__noreturn__));
23866:
23866:
23866: void
23866: __throw_bad_function_call() __attribute__((__noreturn__));
23866:
23866:
23866: }
23866: # 61 "/usr/include/c++/10/bits/stl_algobase.h" 2 3
23866: # 1 "/usr/include/c++/10/bits/cpp_type_traits.h" 1 3
23866: # 33 "/usr/include/c++/10/bits/cpp_type_traits.h" 3
23866: #define _CPP_TYPE_TRAITS_H 1
23866:
23866:
23866: # 36 "/usr/include/c++/10/bits/cpp_type_traits.h" 3
23866: # 67 "/usr/include/c++/10/bits/cpp_type_traits.h" 3
23866: extern "C++" {
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: struct __true_type { };
23866: struct __false_type { };
23866:
23866: template<bool>
23866: struct __truth_type
23866: { typedef __false_type __type; };
23866:
23866: template<>
23866: struct __truth_type<true>
23866: { typedef __true_type __type; };
23866:
23866:
23866:
23866: template<class _Sp, class _Tp>
23866: struct __traitor
23866: {
23866: enum { __value = bool(_Sp::__value) || bool(_Tp::__value) };
23866: typedef typename __truth_type<__value>::__type __type;
23866: };
23866:
23866:
23866: template<typename, typename>
23866: struct __are_same
23866: {
23866: enum { __value = 0 };
23866: typedef __false_type __type;
23866: };
23866:
23866: template<typename _Tp>
23866: struct __are_same<_Tp, _Tp>
23866: {
23866: enum { __value = 1 };
23866: typedef __true_type __type;
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct __is_void
23866: {
23866: enum { __value = 0 };
23866: typedef __false_type __type;
23866: };
23866:
23866: template<>
23866: struct __is_void<void>
23866: {
23866: enum { __value = 1 };
23866: typedef __true_type __type;
23866: };
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct __is_integer
23866: {
23866: enum { __value = 0 };
23866: typedef __false_type __type;
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template<>
23866: struct __is_integer<bool>
23866: {
23866: enum { __value = 1 };
23866: typedef __true_type __type;
23866: };
23866:
23866: template<>
23866: struct __is_integer<char>
23866: {
23866: enum { __value = 1 };
23866: typedef __true_type __type;
23866: };
23866:
23866: template<>
23866: struct __is_integer<signed char>
23866: {
23866: enum { __value = 1 };
23866: typedef __true_type __type;
23866: };
23866:
23866: template<>
23866: struct __is_integer<unsigned char>
23866: {
23866: enum { __value = 1 };
23866: typedef __true_type __type;
23866: };
23866:
23866:
23866: template<>
23866: struct __is_integer<wchar_t>
23866: {
23866: enum { __value = 1 };
23866: typedef __true_type __type;
23866: };
23866: # 184 "/usr/include/c++/10/bits/cpp_type_traits.h" 3
23866: template<>
23866: struct __is_integer<char16_t>
23866: {
23866: enum { __value = 1 };
23866: typedef __true_type __type;
23866: };
23866:
23866: template<>
23866: struct __is_integer<char32_t>
23866: {
23866: enum { __value = 1 };
23866: typedef __true_type __type;
23866: };
23866:
23866:
23866: template<>
23866: struct __is_integer<short>
23866: {
23866: enum { __value = 1 };
23866: typedef __true_type __type;
23866: };
23866:
23866: template<>
23866: struct __is_integer<unsigned short>
23866: {
23866: enum { __value = 1 };
23866: typedef __true_type __type;
23866: };
23866:
23866: template<>
23866: struct __is_integer<int>
23866: {
23866: enum { __value = 1 };
23866: typedef __true_type __type;
23866: };
23866:
23866: template<>
23866: struct __is_integer<unsigned int>
23866: {
23866: enum { __value = 1 };
23866: typedef __true_type __type;
23866: };
23866:
23866: template<>
23866: struct __is_integer<long>
23866: {
23866: enum { __value = 1 };
23866: typedef __true_type __type;
23866: };
23866:
23866: template<>
23866: struct __is_integer<unsigned long>
23866: {
23866: enum { __value = 1 };
23866: typedef __true_type __type;
23866: };
23866:
23866: template<>
23866: struct __is_integer<long long>
23866: {
23866: enum { __value = 1 };
23866: typedef __true_type __type;
23866: };
23866:
23866: template<>
23866: struct __is_integer<unsigned long long>
23866: {
23866: enum { __value = 1 };
23866: typedef __true_type __type;
23866: };
23866:
23866: #define __INT_N(TYPE) template<> struct __is_integer<TYPE> { enum { __value = 1 }; typedef __true_type __type; }; template<> struct __is_integer<unsigned TYPE> { enum { __value = 1 }; typedef __true_type __type; };
23866: # 282 "/usr/include/c++/10/bits/cpp_type_traits.h" 3
23866: #undef __INT_N
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct __is_floating
23866: {
23866: enum { __value = 0 };
23866: typedef __false_type __type;
23866: };
23866:
23866:
23866: template<>
23866: struct __is_floating<float>
23866: {
23866: enum { __value = 1 };
23866: typedef __true_type __type;
23866: };
23866:
23866: template<>
23866: struct __is_floating<double>
23866: {
23866: enum { __value = 1 };
23866: typedef __true_type __type;
23866: };
23866:
23866: template<>
23866: struct __is_floating<long double>
23866: {
23866: enum { __value = 1 };
23866: typedef __true_type __type;
23866: };
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct __is_pointer
23866: {
23866: enum { __value = 0 };
23866: typedef __false_type __type;
23866: };
23866:
23866: template<typename _Tp>
23866: struct __is_pointer<_Tp*>
23866: {
23866: enum { __value = 1 };
23866: typedef __true_type __type;
23866: };
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct __is_arithmetic
23866: : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> >
23866: { };
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct __is_scalar
23866: : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> >
23866: { };
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct __is_char
23866: {
23866: enum { __value = 0 };
23866: typedef __false_type __type;
23866: };
23866:
23866: template<>
23866: struct __is_char<char>
23866: {
23866: enum { __value = 1 };
23866: typedef __true_type __type;
23866: };
23866:
23866:
23866: template<>
23866: struct __is_char<wchar_t>
23866: {
23866: enum { __value = 1 };
23866: typedef __true_type __type;
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct __is_byte
23866: {
23866: enum { __value = 0 };
23866: typedef __false_type __type;
23866: };
23866:
23866: template<>
23866: struct __is_byte<char>
23866: {
23866: enum { __value = 1 };
23866: typedef __true_type __type;
23866: };
23866:
23866: template<>
23866: struct __is_byte<signed char>
23866: {
23866: enum { __value = 1 };
23866: typedef __true_type __type;
23866: };
23866:
23866: template<>
23866: struct __is_byte<unsigned char>
23866: {
23866: enum { __value = 1 };
23866: typedef __true_type __type;
23866: };
23866:
23866:
23866: enum class byte : unsigned char;
23866:
23866: template<>
23866: struct __is_byte<byte>
23866: {
23866: enum { __value = 1 };
23866: typedef __true_type __type;
23866: };
23866: # 423 "/usr/include/c++/10/bits/cpp_type_traits.h" 3
23866: template<typename> struct iterator_traits;
23866:
23866:
23866: template<typename _Tp>
23866: struct __is_nonvolatile_trivially_copyable
23866: {
23866: enum { __value = __is_trivially_copyable(_Tp) };
23866: };
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct __is_nonvolatile_trivially_copyable<volatile _Tp>
23866: {
23866: enum { __value = 0 };
23866: };
23866:
23866:
23866: template<typename _OutputIter, typename _InputIter>
23866: struct __memcpyable
23866: {
23866: enum { __value = 0 };
23866: };
23866:
23866: template<typename _Tp>
23866: struct __memcpyable<_Tp*, _Tp*>
23866: : __is_nonvolatile_trivially_copyable<_Tp>
23866: { };
23866:
23866: template<typename _Tp>
23866: struct __memcpyable<_Tp*, const _Tp*>
23866: : __is_nonvolatile_trivially_copyable<_Tp>
23866: { };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Iter1, typename _Iter2>
23866: struct __memcmpable
23866: {
23866: enum { __value = 0 };
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct __memcmpable<_Tp*, _Tp*>
23866: : __is_nonvolatile_trivially_copyable<_Tp>
23866: { };
23866:
23866: template<typename _Tp>
23866: struct __memcmpable<const _Tp*, _Tp*>
23866: : __is_nonvolatile_trivially_copyable<_Tp>
23866: { };
23866:
23866: template<typename _Tp>
23866: struct __memcmpable<_Tp*, const _Tp*>
23866: : __is_nonvolatile_trivially_copyable<_Tp>
23866: { };
23866:
23866:
23866:
23866:
23866: template<typename _Tp, bool _TreatAsBytes = __is_byte<_Tp>::__value>
23866: struct __is_memcmp_ordered
23866: {
23866: static const bool __value = _Tp(-1) > _Tp(1);
23866: };
23866:
23866: template<typename _Tp>
23866: struct __is_memcmp_ordered<_Tp, false>
23866: {
23866: static const bool __value = false;
23866: };
23866:
23866:
23866: template<typename _Tp, typename _Up, bool = sizeof(_Tp) == sizeof(_Up)>
23866: struct __is_memcmp_ordered_with
23866: {
23866: static const bool __value = __is_memcmp_ordered<_Tp>::__value
23866: && __is_memcmp_ordered<_Up>::__value;
23866: };
23866:
23866: template<typename _Tp, typename _Up>
23866: struct __is_memcmp_ordered_with<_Tp, _Up, false>
23866: {
23866: static const bool __value = false;
23866: };
23866:
23866:
23866:
23866: template<>
23866: struct __is_memcmp_ordered_with<std::byte, std::byte, true>
23866: { static constexpr bool __value = true; };
23866:
23866: template<typename _Tp, bool _SameSize>
23866: struct __is_memcmp_ordered_with<_Tp, std::byte, _SameSize>
23866: { static constexpr bool __value = false; };
23866:
23866: template<typename _Up, bool _SameSize>
23866: struct __is_memcmp_ordered_with<std::byte, _Up, _SameSize>
23866: { static constexpr bool __value = false; };
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct __is_move_iterator
23866: {
23866: enum { __value = 0 };
23866: typedef __false_type __type;
23866: };
23866:
23866:
23866:
23866: template<typename _Iterator>
23866:
23866: inline _Iterator
23866: __miter_base(_Iterator __it)
23866: { return __it; }
23866:
23866:
23866: }
23866: }
23866: # 62 "/usr/include/c++/10/bits/stl_algobase.h" 2 3
23866: # 1 "/usr/include/c++/10/ext/type_traits.h" 1 3
23866: # 30 "/usr/include/c++/10/ext/type_traits.h" 3
23866: #define _EXT_TYPE_TRAITS 1
23866:
23866:
23866: # 33 "/usr/include/c++/10/ext/type_traits.h" 3
23866:
23866:
23866:
23866:
23866: extern "C++" {
23866:
23866: namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: template<bool, typename>
23866: struct __enable_if
23866: { };
23866:
23866: template<typename _Tp>
23866: struct __enable_if<true, _Tp>
23866: { typedef _Tp __type; };
23866:
23866:
23866:
23866: template<bool _Cond, typename _Iftrue, typename _Iffalse>
23866: struct __conditional_type
23866: { typedef _Iftrue __type; };
23866:
23866: template<typename _Iftrue, typename _Iffalse>
23866: struct __conditional_type<false, _Iftrue, _Iffalse>
23866: { typedef _Iffalse __type; };
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct __add_unsigned
23866: {
23866: private:
23866: typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type;
23866:
23866: public:
23866: typedef typename __if_type::__type __type;
23866: };
23866:
23866: template<>
23866: struct __add_unsigned<char>
23866: { typedef unsigned char __type; };
23866:
23866: template<>
23866: struct __add_unsigned<signed char>
23866: { typedef unsigned char __type; };
23866:
23866: template<>
23866: struct __add_unsigned<short>
23866: { typedef unsigned short __type; };
23866:
23866: template<>
23866: struct __add_unsigned<int>
23866: { typedef unsigned int __type; };
23866:
23866: template<>
23866: struct __add_unsigned<long>
23866: { typedef unsigned long __type; };
23866:
23866: template<>
23866: struct __add_unsigned<long long>
23866: { typedef unsigned long long __type; };
23866:
23866:
23866: template<>
23866: struct __add_unsigned<bool>;
23866:
23866: template<>
23866: struct __add_unsigned<wchar_t>;
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct __remove_unsigned
23866: {
23866: private:
23866: typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type;
23866:
23866: public:
23866: typedef typename __if_type::__type __type;
23866: };
23866:
23866: template<>
23866: struct __remove_unsigned<char>
23866: { typedef signed char __type; };
23866:
23866: template<>
23866: struct __remove_unsigned<unsigned char>
23866: { typedef signed char __type; };
23866:
23866: template<>
23866: struct __remove_unsigned<unsigned short>
23866: { typedef short __type; };
23866:
23866: template<>
23866: struct __remove_unsigned<unsigned int>
23866: { typedef int __type; };
23866:
23866: template<>
23866: struct __remove_unsigned<unsigned long>
23866: { typedef long __type; };
23866:
23866: template<>
23866: struct __remove_unsigned<unsigned long long>
23866: { typedef long long __type; };
23866:
23866:
23866: template<>
23866: struct __remove_unsigned<bool>;
23866:
23866: template<>
23866: struct __remove_unsigned<wchar_t>;
23866:
23866:
23866:
23866: template<typename _Type>
23866: inline bool
23866: __is_null_pointer(_Type* __ptr)
23866: { return __ptr == 0; }
23866:
23866: template<typename _Type>
23866: inline bool
23866: __is_null_pointer(_Type)
23866: { return false; }
23866:
23866:
23866: inline bool
23866: __is_null_pointer(std::nullptr_t)
23866: { return true; }
23866:
23866:
23866:
23866: template<typename _Tp, bool = std::__is_integer<_Tp>::__value>
23866: struct __promote
23866: { typedef double __type; };
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct __promote<_Tp, false>
23866: { };
23866:
23866: template<>
23866: struct __promote<long double>
23866: { typedef long double __type; };
23866:
23866: template<>
23866: struct __promote<double>
23866: { typedef double __type; };
23866:
23866: template<>
23866: struct __promote<float>
23866: { typedef float __type; };
23866:
23866: template<typename _Tp, typename _Up,
23866: typename _Tp2 = typename __promote<_Tp>::__type,
23866: typename _Up2 = typename __promote<_Up>::__type>
23866: struct __promote_2
23866: {
23866: typedef __typeof__(_Tp2() + _Up2()) __type;
23866: };
23866:
23866: template<typename _Tp, typename _Up, typename _Vp,
23866: typename _Tp2 = typename __promote<_Tp>::__type,
23866: typename _Up2 = typename __promote<_Up>::__type,
23866: typename _Vp2 = typename __promote<_Vp>::__type>
23866: struct __promote_3
23866: {
23866: typedef __typeof__(_Tp2() + _Up2() + _Vp2()) __type;
23866: };
23866:
23866: template<typename _Tp, typename _Up, typename _Vp, typename _Wp,
23866: typename _Tp2 = typename __promote<_Tp>::__type,
23866: typename _Up2 = typename __promote<_Up>::__type,
23866: typename _Vp2 = typename __promote<_Vp>::__type,
23866: typename _Wp2 = typename __promote<_Wp>::__type>
23866: struct __promote_4
23866: {
23866: typedef __typeof__(_Tp2() + _Up2() + _Vp2() + _Wp2()) __type;
23866: };
23866:
23866:
23866: }
23866: }
23866: # 63 "/usr/include/c++/10/bits/stl_algobase.h" 2 3
23866: # 1 "/usr/include/c++/10/ext/numeric_traits.h" 1 3
23866: # 30 "/usr/include/c++/10/ext/numeric_traits.h" 3
23866: #define _EXT_NUMERIC_TRAITS 1
23866:
23866:
23866: # 33 "/usr/include/c++/10/ext/numeric_traits.h" 3
23866:
23866:
23866:
23866:
23866: namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 50 "/usr/include/c++/10/ext/numeric_traits.h" 3
23866: template<typename _Tp>
23866: struct __is_integer_nonstrict
23866: : public std::__is_integer<_Tp>
23866: {
23866: using std::__is_integer<_Tp>::__value;
23866:
23866:
23866: enum { __width = __value ? sizeof(_Tp) * 8 : 0 };
23866: };
23866:
23866: template<typename _Value>
23866: struct __numeric_traits_integer
23866: {
23866:
23866: static_assert(__is_integer_nonstrict<_Value>::__value,
23866: "invalid specialization");
23866:
23866:
23866:
23866:
23866: static const bool __is_signed = (_Value)(-1) < 0;
23866: static const int __digits
23866: = __is_integer_nonstrict<_Value>::__width - __is_signed;
23866:
23866:
23866: static const _Value __max = __is_signed
23866: ? (((((_Value)1 << (__digits - 1)) - 1) << 1) + 1)
23866: : ~(_Value)0;
23866: static const _Value __min = __is_signed ? -__max - 1 : (_Value)0;
23866: };
23866:
23866: template<typename _Value>
23866: const _Value __numeric_traits_integer<_Value>::__min;
23866:
23866: template<typename _Value>
23866: const _Value __numeric_traits_integer<_Value>::__max;
23866:
23866: template<typename _Value>
23866: const bool __numeric_traits_integer<_Value>::__is_signed;
23866:
23866: template<typename _Value>
23866: const int __numeric_traits_integer<_Value>::__digits;
23866:
23866:
23866:
23866: #define _GLIBCXX_INT_N_TRAITS(T,WIDTH) template<> struct __is_integer_nonstrict<T> { enum { __value = 1 }; typedef std::__true_type __type; enum { __width = WIDTH }; }; template<> struct __is_integer_nonstrict<unsigned T> { enum { __value = 1 }; typedef std::__true_type __type; enum { __width = WIDTH }; };
23866: # 131 "/usr/include/c++/10/ext/numeric_traits.h" 3
23866: #undef _GLIBCXX_INT_N_TRAITS
23866:
23866:
23866:
23866: template<typename _Tp>
23866: using __int_traits = __numeric_traits_integer<_Tp>;
23866:
23866:
23866: #define __glibcxx_floating(_Tp,_Fval,_Dval,_LDval) (std::__are_same<_Tp, float>::__value ? _Fval : std::__are_same<_Tp, double>::__value ? _Dval : _LDval)
23866:
23866:
23866:
23866: #define __glibcxx_max_digits10(_Tp) (2 + __glibcxx_floating(_Tp, __FLT_MANT_DIG__, __DBL_MANT_DIG__, __LDBL_MANT_DIG__) * 643L / 2136)
23866:
23866:
23866:
23866: #define __glibcxx_digits10(_Tp) __glibcxx_floating(_Tp, __FLT_DIG__, __DBL_DIG__, __LDBL_DIG__)
23866:
23866:
23866: #define __glibcxx_max_exponent10(_Tp) __glibcxx_floating(_Tp, __FLT_MAX_10_EXP__, __DBL_MAX_10_EXP__, __LDBL_MAX_10_EXP__)
23866:
23866:
23866:
23866:
23866: template<typename _Value>
23866: struct __numeric_traits_floating
23866: {
23866:
23866: static const int __max_digits10 = (2 + (std::__are_same<_Value, float>::__value ? 24 : std::__are_same<_Value, double>::__value ? 53 : 53) * 643L / 2136);
23866:
23866:
23866: static const bool __is_signed = true;
23866: static const int __digits10 = (std::__are_same<_Value, float>::__value ? 6 : std::__are_same<_Value, double>::__value ? 15 : 15);
23866: static const int __max_exponent10 = (std::__are_same<_Value, float>::__value ? 38 : std::__are_same<_Value, double>::__value ? 308 : 308);
23866: };
23866:
23866: template<typename _Value>
23866: const int __numeric_traits_floating<_Value>::__max_digits10;
23866:
23866: template<typename _Value>
23866: const bool __numeric_traits_floating<_Value>::__is_signed;
23866:
23866: template<typename _Value>
23866: const int __numeric_traits_floating<_Value>::__digits10;
23866:
23866: template<typename _Value>
23866: const int __numeric_traits_floating<_Value>::__max_exponent10;
23866:
23866: template<typename _Value>
23866: struct __numeric_traits
23866: : public __conditional_type<__is_integer_nonstrict<_Value>::__value,
23866: __numeric_traits_integer<_Value>,
23866: __numeric_traits_floating<_Value> >::__type
23866: { };
23866:
23866:
23866: }
23866:
23866: #undef __glibcxx_floating
23866: #undef __glibcxx_max_digits10
23866: #undef __glibcxx_digits10
23866: #undef __glibcxx_max_exponent10
23866: # 64 "/usr/include/c++/10/bits/stl_algobase.h" 2 3
23866:
23866: # 1 "/usr/include/c++/10/bits/stl_iterator_base_types.h" 1 3
23866: # 60 "/usr/include/c++/10/bits/stl_iterator_base_types.h" 3
23866: #define _STL_ITERATOR_BASE_TYPES_H 1
23866:
23866:
23866: # 63 "/usr/include/c++/10/bits/stl_iterator_base_types.h" 3
23866: # 74 "/usr/include/c++/10/bits/stl_iterator_base_types.h" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 93 "/usr/include/c++/10/bits/stl_iterator_base_types.h" 3
23866: struct input_iterator_tag { };
23866:
23866:
23866: struct output_iterator_tag { };
23866:
23866:
23866: struct forward_iterator_tag : public input_iterator_tag { };
23866:
23866:
23866:
23866: struct bidirectional_iterator_tag : public forward_iterator_tag { };
23866:
23866:
23866:
23866: struct random_access_iterator_tag : public bidirectional_iterator_tag { };
23866: # 125 "/usr/include/c++/10/bits/stl_iterator_base_types.h" 3
23866: template<typename _Category, typename _Tp, typename _Distance = ptrdiff_t,
23866: typename _Pointer = _Tp*, typename _Reference = _Tp&>
23866: struct iterator
23866: {
23866:
23866: typedef _Category iterator_category;
23866:
23866: typedef _Tp value_type;
23866:
23866: typedef _Distance difference_type;
23866:
23866: typedef _Pointer pointer;
23866:
23866: typedef _Reference reference;
23866: };
23866: # 149 "/usr/include/c++/10/bits/stl_iterator_base_types.h" 3
23866: template<typename _Iterator>
23866: struct iterator_traits;
23866:
23866:
23866:
23866:
23866: template<typename _Iterator, typename = __void_t<>>
23866: struct __iterator_traits { };
23866:
23866:
23866:
23866: template<typename _Iterator>
23866: struct __iterator_traits<_Iterator,
23866: __void_t<typename _Iterator::iterator_category,
23866: typename _Iterator::value_type,
23866: typename _Iterator::difference_type,
23866: typename _Iterator::pointer,
23866: typename _Iterator::reference>>
23866: {
23866: typedef typename _Iterator::iterator_category iterator_category;
23866: typedef typename _Iterator::value_type value_type;
23866: typedef typename _Iterator::difference_type difference_type;
23866: typedef typename _Iterator::pointer pointer;
23866: typedef typename _Iterator::reference reference;
23866: };
23866:
23866:
23866: template<typename _Iterator>
23866: struct iterator_traits
23866: : public __iterator_traits<_Iterator> { };
23866: # 209 "/usr/include/c++/10/bits/stl_iterator_base_types.h" 3
23866: template<typename _Tp>
23866: struct iterator_traits<_Tp*>
23866: {
23866: typedef random_access_iterator_tag iterator_category;
23866: typedef _Tp value_type;
23866: typedef ptrdiff_t difference_type;
23866: typedef _Tp* pointer;
23866: typedef _Tp& reference;
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct iterator_traits<const _Tp*>
23866: {
23866: typedef random_access_iterator_tag iterator_category;
23866: typedef _Tp value_type;
23866: typedef ptrdiff_t difference_type;
23866: typedef const _Tp* pointer;
23866: typedef const _Tp& reference;
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Iter>
23866: inline constexpr
23866: typename iterator_traits<_Iter>::iterator_category
23866: __iterator_category(const _Iter&)
23866: { return typename iterator_traits<_Iter>::iterator_category(); }
23866:
23866:
23866:
23866:
23866: template<typename _Iter>
23866: using __iterator_category_t
23866: = typename iterator_traits<_Iter>::iterator_category;
23866:
23866: template<typename _InIter>
23866: using _RequireInputIter =
23866: __enable_if_t<is_convertible<__iterator_category_t<_InIter>,
23866: input_iterator_tag>::value>;
23866:
23866: template<typename _It,
23866: typename _Cat = __iterator_category_t<_It>>
23866: struct __is_random_access_iter
23866: : is_base_of<random_access_iterator_tag, _Cat>
23866: {
23866: typedef is_base_of<random_access_iterator_tag, _Cat> _Base;
23866: enum { __value = _Base::value };
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 66 "/usr/include/c++/10/bits/stl_algobase.h" 2 3
23866: # 1 "/usr/include/c++/10/bits/stl_iterator_base_funcs.h" 1 3
23866: # 60 "/usr/include/c++/10/bits/stl_iterator_base_funcs.h" 3
23866: #define _STL_ITERATOR_BASE_FUNCS_H 1
23866:
23866:
23866: # 63 "/usr/include/c++/10/bits/stl_iterator_base_funcs.h" 3
23866:
23866: # 1 "/usr/include/c++/10/bits/concept_check.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/concept_check.h" 3
23866: #define _CONCEPT_CHECK_H 1
23866:
23866:
23866: # 34 "/usr/include/c++/10/bits/concept_check.h" 3
23866: # 48 "/usr/include/c++/10/bits/concept_check.h" 3
23866: #define __glibcxx_function_requires(...)
23866: #define __glibcxx_class_requires(_a,_b)
23866: #define __glibcxx_class_requires2(_a,_b,_c)
23866: #define __glibcxx_class_requires3(_a,_b,_c,_d)
23866: #define __glibcxx_class_requires4(_a,_b,_c,_d,_e)
23866: # 65 "/usr/include/c++/10/bits/stl_iterator_base_funcs.h" 2 3
23866: # 1 "/usr/include/c++/10/debug/assertions.h" 1 3
23866: # 30 "/usr/include/c++/10/debug/assertions.h" 3
23866: #define _GLIBCXX_DEBUG_ASSERTIONS_H 1
23866:
23866:
23866:
23866: #define _GLIBCXX_DEBUG_ASSERT(_Condition)
23866: #define _GLIBCXX_DEBUG_PEDASSERT(_Condition)
23866: #define _GLIBCXX_DEBUG_ONLY(_Statement)
23866:
23866:
23866:
23866:
23866: #define __glibcxx_requires_non_empty_range(_First,_Last)
23866: #define __glibcxx_requires_nonempty()
23866: #define __glibcxx_requires_subscript(_N)
23866: # 66 "/usr/include/c++/10/bits/stl_iterator_base_funcs.h" 2 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866: template <typename> struct _List_iterator;
23866: template <typename> struct _List_const_iterator;
23866:
23866:
23866: template<typename _InputIterator>
23866: inline constexpr
23866: typename iterator_traits<_InputIterator>::difference_type
23866: __distance(_InputIterator __first, _InputIterator __last,
23866: input_iterator_tag)
23866: {
23866:
23866:
23866:
23866: typename iterator_traits<_InputIterator>::difference_type __n = 0;
23866: while (__first != __last)
23866: {
23866: ++__first;
23866: ++__n;
23866: }
23866: return __n;
23866: }
23866:
23866: template<typename _RandomAccessIterator>
23866: inline constexpr
23866: typename iterator_traits<_RandomAccessIterator>::difference_type
23866: __distance(_RandomAccessIterator __first, _RandomAccessIterator __last,
23866: random_access_iterator_tag)
23866: {
23866:
23866:
23866:
23866: return __last - __first;
23866: }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: ptrdiff_t
23866: __distance(std::_List_iterator<_Tp>,
23866: std::_List_iterator<_Tp>,
23866: input_iterator_tag);
23866:
23866: template<typename _Tp>
23866: ptrdiff_t
23866: __distance(std::_List_const_iterator<_Tp>,
23866: std::_List_const_iterator<_Tp>,
23866: input_iterator_tag);
23866: # 135 "/usr/include/c++/10/bits/stl_iterator_base_funcs.h" 3
23866: template<typename _InputIterator>
23866: inline constexpr
23866: typename iterator_traits<_InputIterator>::difference_type
23866: distance(_InputIterator __first, _InputIterator __last)
23866: {
23866:
23866: return std::__distance(__first, __last,
23866: std::__iterator_category(__first));
23866: }
23866:
23866: template<typename _InputIterator, typename _Distance>
23866: inline constexpr void
23866: __advance(_InputIterator& __i, _Distance __n, input_iterator_tag)
23866: {
23866:
23866:
23866: ;
23866: while (__n--)
23866: ++__i;
23866: }
23866:
23866: template<typename _BidirectionalIterator, typename _Distance>
23866: inline constexpr void
23866: __advance(_BidirectionalIterator& __i, _Distance __n,
23866: bidirectional_iterator_tag)
23866: {
23866:
23866:
23866:
23866: if (__n > 0)
23866: while (__n--)
23866: ++__i;
23866: else
23866: while (__n++)
23866: --__i;
23866: }
23866:
23866: template<typename _RandomAccessIterator, typename _Distance>
23866: inline constexpr void
23866: __advance(_RandomAccessIterator& __i, _Distance __n,
23866: random_access_iterator_tag)
23866: {
23866:
23866:
23866:
23866: if (__builtin_constant_p(__n) && __n == 1)
23866: ++__i;
23866: else if (__builtin_constant_p(__n) && __n == -1)
23866: --__i;
23866: else
23866: __i += __n;
23866: }
23866: # 200 "/usr/include/c++/10/bits/stl_iterator_base_funcs.h" 3
23866: template<typename _InputIterator, typename _Distance>
23866: inline constexpr void
23866: advance(_InputIterator& __i, _Distance __n)
23866: {
23866:
23866: typename iterator_traits<_InputIterator>::difference_type __d = __n;
23866: std::__advance(__i, __d, std::__iterator_category(__i));
23866: }
23866:
23866:
23866:
23866: template<typename _InputIterator>
23866: inline constexpr _InputIterator
23866: next(_InputIterator __x, typename
23866: iterator_traits<_InputIterator>::difference_type __n = 1)
23866: {
23866:
23866:
23866: std::advance(__x, __n);
23866: return __x;
23866: }
23866:
23866: template<typename _BidirectionalIterator>
23866: inline constexpr _BidirectionalIterator
23866: prev(_BidirectionalIterator __x, typename
23866: iterator_traits<_BidirectionalIterator>::difference_type __n = 1)
23866: {
23866:
23866:
23866:
23866: std::advance(__x, -__n);
23866: return __x;
23866: }
23866:
23866:
23866:
23866:
23866: }
23866: # 67 "/usr/include/c++/10/bits/stl_algobase.h" 2 3
23866: # 1 "/usr/include/c++/10/bits/stl_iterator.h" 1 3
23866: # 61 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866: #define _STL_ITERATOR_H 1
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/ptr_traits.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/ptr_traits.h" 3
23866: #define _PTR_TRAITS_H 1
23866: # 42 "/usr/include/c++/10/bits/ptr_traits.h" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: class __undefined;
23866:
23866:
23866: template<typename _Tp>
23866: struct __get_first_arg
23866: { using type = __undefined; };
23866:
23866: template<template<typename, typename...> class _Template, typename _Tp,
23866: typename... _Types>
23866: struct __get_first_arg<_Template<_Tp, _Types...>>
23866: { using type = _Tp; };
23866:
23866: template<typename _Tp>
23866: using __get_first_arg_t = typename __get_first_arg<_Tp>::type;
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: struct __replace_first_arg
23866: { };
23866:
23866: template<template<typename, typename...> class _Template, typename _Up,
23866: typename _Tp, typename... _Types>
23866: struct __replace_first_arg<_Template<_Tp, _Types...>, _Up>
23866: { using type = _Template<_Up, _Types...>; };
23866:
23866: template<typename _Tp, typename _Up>
23866: using __replace_first_arg_t = typename __replace_first_arg<_Tp, _Up>::type;
23866:
23866: template<typename _Tp>
23866: using __make_not_void
23866: = typename conditional<is_void<_Tp>::value, __undefined, _Tp>::type;
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Ptr>
23866: struct pointer_traits
23866: {
23866: private:
23866: template<typename _Tp>
23866: using __element_type = typename _Tp::element_type;
23866:
23866: template<typename _Tp>
23866: using __difference_type = typename _Tp::difference_type;
23866:
23866: template<typename _Tp, typename _Up, typename = void>
23866: struct __rebind : __replace_first_arg<_Tp, _Up> { };
23866:
23866: template<typename _Tp, typename _Up>
23866: struct __rebind<_Tp, _Up, __void_t<typename _Tp::template rebind<_Up>>>
23866: { using type = typename _Tp::template rebind<_Up>; };
23866:
23866: public:
23866:
23866: using pointer = _Ptr;
23866:
23866:
23866: using element_type
23866: = __detected_or_t<__get_first_arg_t<_Ptr>, __element_type, _Ptr>;
23866:
23866:
23866: using difference_type
23866: = __detected_or_t<ptrdiff_t, __difference_type, _Ptr>;
23866:
23866:
23866: template<typename _Up>
23866: using rebind = typename __rebind<_Ptr, _Up>::type;
23866:
23866: static _Ptr
23866: pointer_to(__make_not_void<element_type>& __e)
23866: { return _Ptr::pointer_to(__e); }
23866:
23866: static_assert(!is_same<element_type, __undefined>::value,
23866: "pointer type defines element_type or is like SomePointer<T, Args>");
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct pointer_traits<_Tp*>
23866: {
23866:
23866: typedef _Tp* pointer;
23866:
23866: typedef _Tp element_type;
23866:
23866: typedef ptrdiff_t difference_type;
23866:
23866: template<typename _Up>
23866: using rebind = _Up*;
23866:
23866:
23866:
23866:
23866:
23866:
23866: static pointer
23866: pointer_to(__make_not_void<element_type>& __r) noexcept
23866: { return std::addressof(__r); }
23866: };
23866:
23866:
23866: template<typename _Ptr, typename _Tp>
23866: using __ptr_rebind = typename pointer_traits<_Ptr>::template rebind<_Tp>;
23866:
23866: template<typename _Tp>
23866: constexpr _Tp*
23866: __to_address(_Tp* __ptr) noexcept
23866: {
23866: static_assert(!std::is_function<_Tp>::value, "not a function pointer");
23866: return __ptr;
23866: }
23866:
23866:
23866: template<typename _Ptr>
23866: constexpr typename std::pointer_traits<_Ptr>::element_type*
23866: __to_address(const _Ptr& __ptr)
23866: { return std::__to_address(__ptr.operator->()); }
23866: # 210 "/usr/include/c++/10/bits/ptr_traits.h" 3
23866:
23866: }
23866: # 67 "/usr/include/c++/10/bits/stl_iterator.h" 2 3
23866: # 76 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866: #define __cpp_lib_array_constexpr 201803L
23866: # 85 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 124 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866: template<typename _Iterator>
23866: class reverse_iterator
23866: : public iterator<typename iterator_traits<_Iterator>::iterator_category,
23866: typename iterator_traits<_Iterator>::value_type,
23866: typename iterator_traits<_Iterator>::difference_type,
23866: typename iterator_traits<_Iterator>::pointer,
23866: typename iterator_traits<_Iterator>::reference>
23866: {
23866: protected:
23866: _Iterator current;
23866:
23866: typedef iterator_traits<_Iterator> __traits_type;
23866:
23866: public:
23866: typedef _Iterator iterator_type;
23866: typedef typename __traits_type::difference_type difference_type;
23866: typedef typename __traits_type::pointer pointer;
23866: typedef typename __traits_type::reference reference;
23866: # 160 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866: constexpr
23866: reverse_iterator() : current() { }
23866:
23866:
23866:
23866:
23866: explicit constexpr
23866: reverse_iterator(iterator_type __x) : current(__x) { }
23866:
23866:
23866:
23866:
23866: constexpr
23866: reverse_iterator(const reverse_iterator& __x)
23866: : current(__x.current) { }
23866:
23866:
23866: reverse_iterator& operator=(const reverse_iterator&) = default;
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Iter>
23866: constexpr
23866: reverse_iterator(const reverse_iterator<_Iter>& __x)
23866: : current(__x.base()) { }
23866:
23866:
23866:
23866:
23866: constexpr iterator_type
23866: base() const
23866: { return current; }
23866: # 206 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866: constexpr reference
23866: operator*() const
23866: {
23866: _Iterator __tmp = current;
23866: return *--__tmp;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: constexpr pointer
23866: operator->() const
23866:
23866:
23866:
23866:
23866: {
23866:
23866:
23866: _Iterator __tmp = current;
23866: --__tmp;
23866: return _S_to_pointer(__tmp);
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: constexpr reverse_iterator&
23866: operator++()
23866: {
23866: --current;
23866: return *this;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: constexpr reverse_iterator
23866: operator++(int)
23866: {
23866: reverse_iterator __tmp = *this;
23866: --current;
23866: return __tmp;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: constexpr reverse_iterator&
23866: operator--()
23866: {
23866: ++current;
23866: return *this;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: constexpr reverse_iterator
23866: operator--(int)
23866: {
23866: reverse_iterator __tmp = *this;
23866: ++current;
23866: return __tmp;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: constexpr reverse_iterator
23866: operator+(difference_type __n) const
23866: { return reverse_iterator(current - __n); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: constexpr reverse_iterator&
23866: operator+=(difference_type __n)
23866: {
23866: current -= __n;
23866: return *this;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: constexpr reverse_iterator
23866: operator-(difference_type __n) const
23866: { return reverse_iterator(current + __n); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: constexpr reverse_iterator&
23866: operator-=(difference_type __n)
23866: {
23866: current += __n;
23866: return *this;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: constexpr reference
23866: operator[](difference_type __n) const
23866: { return *(*this + __n); }
23866: # 360 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866: private:
23866: template<typename _Tp>
23866: static constexpr _Tp*
23866: _S_to_pointer(_Tp* __p)
23866: { return __p; }
23866:
23866: template<typename _Tp>
23866: static constexpr pointer
23866: _S_to_pointer(_Tp __t)
23866: { return __t.operator->(); }
23866: };
23866: # 383 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866: template<typename _Iterator>
23866: inline constexpr bool
23866: operator==(const reverse_iterator<_Iterator>& __x,
23866: const reverse_iterator<_Iterator>& __y)
23866: { return __x.base() == __y.base(); }
23866:
23866: template<typename _Iterator>
23866: inline constexpr bool
23866: operator<(const reverse_iterator<_Iterator>& __x,
23866: const reverse_iterator<_Iterator>& __y)
23866: { return __y.base() < __x.base(); }
23866:
23866: template<typename _Iterator>
23866: inline constexpr bool
23866: operator!=(const reverse_iterator<_Iterator>& __x,
23866: const reverse_iterator<_Iterator>& __y)
23866: { return !(__x == __y); }
23866:
23866: template<typename _Iterator>
23866: inline constexpr bool
23866: operator>(const reverse_iterator<_Iterator>& __x,
23866: const reverse_iterator<_Iterator>& __y)
23866: { return __y < __x; }
23866:
23866: template<typename _Iterator>
23866: inline constexpr bool
23866: operator<=(const reverse_iterator<_Iterator>& __x,
23866: const reverse_iterator<_Iterator>& __y)
23866: { return !(__y < __x); }
23866:
23866: template<typename _Iterator>
23866: inline constexpr bool
23866: operator>=(const reverse_iterator<_Iterator>& __x,
23866: const reverse_iterator<_Iterator>& __y)
23866: { return !(__x < __y); }
23866:
23866:
23866:
23866: template<typename _IteratorL, typename _IteratorR>
23866: inline constexpr bool
23866: operator==(const reverse_iterator<_IteratorL>& __x,
23866: const reverse_iterator<_IteratorR>& __y)
23866: { return __x.base() == __y.base(); }
23866:
23866: template<typename _IteratorL, typename _IteratorR>
23866: inline constexpr bool
23866: operator<(const reverse_iterator<_IteratorL>& __x,
23866: const reverse_iterator<_IteratorR>& __y)
23866: { return __y.base() < __x.base(); }
23866:
23866: template<typename _IteratorL, typename _IteratorR>
23866: inline constexpr bool
23866: operator!=(const reverse_iterator<_IteratorL>& __x,
23866: const reverse_iterator<_IteratorR>& __y)
23866: { return !(__x == __y); }
23866:
23866: template<typename _IteratorL, typename _IteratorR>
23866: inline constexpr bool
23866: operator>(const reverse_iterator<_IteratorL>& __x,
23866: const reverse_iterator<_IteratorR>& __y)
23866: { return __y < __x; }
23866:
23866: template<typename _IteratorL, typename _IteratorR>
23866: inline constexpr bool
23866: operator<=(const reverse_iterator<_IteratorL>& __x,
23866: const reverse_iterator<_IteratorR>& __y)
23866: { return !(__y < __x); }
23866:
23866: template<typename _IteratorL, typename _IteratorR>
23866: inline constexpr bool
23866: operator>=(const reverse_iterator<_IteratorL>& __x,
23866: const reverse_iterator<_IteratorR>& __y)
23866: { return !(__x < __y); }
23866: # 523 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866: template<typename _IteratorL, typename _IteratorR>
23866: inline constexpr auto
23866: operator-(const reverse_iterator<_IteratorL>& __x,
23866: const reverse_iterator<_IteratorR>& __y)
23866: -> decltype(__y.base() - __x.base())
23866: { return __y.base() - __x.base(); }
23866:
23866:
23866: template<typename _Iterator>
23866: inline constexpr reverse_iterator<_Iterator>
23866: operator+(typename reverse_iterator<_Iterator>::difference_type __n,
23866: const reverse_iterator<_Iterator>& __x)
23866: { return reverse_iterator<_Iterator>(__x.base() - __n); }
23866:
23866:
23866:
23866: template<typename _Iterator>
23866: inline constexpr reverse_iterator<_Iterator>
23866: __make_reverse_iterator(_Iterator __i)
23866: { return reverse_iterator<_Iterator>(__i); }
23866:
23866:
23866: #define __cpp_lib_make_reverse_iterator 201402
23866:
23866:
23866:
23866:
23866: template<typename _Iterator>
23866: inline constexpr reverse_iterator<_Iterator>
23866: make_reverse_iterator(_Iterator __i)
23866: { return reverse_iterator<_Iterator>(__i); }
23866: # 564 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866: template<typename _Iterator>
23866:
23866: auto
23866: __niter_base(reverse_iterator<_Iterator> __it)
23866: -> decltype(__make_reverse_iterator(__niter_base(__it.base())))
23866: { return __make_reverse_iterator(__niter_base(__it.base())); }
23866:
23866: template<typename _Iterator>
23866: struct __is_move_iterator<reverse_iterator<_Iterator> >
23866: : __is_move_iterator<_Iterator>
23866: { };
23866:
23866: template<typename _Iterator>
23866:
23866: auto
23866: __miter_base(reverse_iterator<_Iterator> __it)
23866: -> decltype(__make_reverse_iterator(__miter_base(__it.base())))
23866: { return __make_reverse_iterator(__miter_base(__it.base())); }
23866: # 595 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866: template<typename _Container>
23866: class back_insert_iterator
23866: : public iterator<output_iterator_tag, void, void, void, void>
23866: {
23866: protected:
23866: _Container* container;
23866:
23866: public:
23866:
23866: typedef _Container container_type;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: explicit
23866: back_insert_iterator(_Container& __x)
23866: : container(std::__addressof(__x)) { }
23866: # 635 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866:
23866: back_insert_iterator&
23866: operator=(const typename _Container::value_type& __value)
23866: {
23866: container->push_back(__value);
23866: return *this;
23866: }
23866:
23866:
23866: back_insert_iterator&
23866: operator=(typename _Container::value_type&& __value)
23866: {
23866: container->push_back(std::move(__value));
23866: return *this;
23866: }
23866:
23866:
23866:
23866:
23866: back_insert_iterator&
23866: operator*()
23866: { return *this; }
23866:
23866:
23866:
23866: back_insert_iterator&
23866: operator++()
23866: { return *this; }
23866:
23866:
23866:
23866: back_insert_iterator
23866: operator++(int)
23866: { return *this; }
23866: };
23866: # 682 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866: template<typename _Container>
23866:
23866: inline back_insert_iterator<_Container>
23866: back_inserter(_Container& __x)
23866: { return back_insert_iterator<_Container>(__x); }
23866: # 698 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866: template<typename _Container>
23866: class front_insert_iterator
23866: : public iterator<output_iterator_tag, void, void, void, void>
23866: {
23866: protected:
23866: _Container* container;
23866:
23866: public:
23866:
23866: typedef _Container container_type;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: explicit
23866: front_insert_iterator(_Container& __x)
23866: : container(std::__addressof(__x)) { }
23866: # 738 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866:
23866: front_insert_iterator&
23866: operator=(const typename _Container::value_type& __value)
23866: {
23866: container->push_front(__value);
23866: return *this;
23866: }
23866:
23866:
23866: front_insert_iterator&
23866: operator=(typename _Container::value_type&& __value)
23866: {
23866: container->push_front(std::move(__value));
23866: return *this;
23866: }
23866:
23866:
23866:
23866:
23866: front_insert_iterator&
23866: operator*()
23866: { return *this; }
23866:
23866:
23866:
23866: front_insert_iterator&
23866: operator++()
23866: { return *this; }
23866:
23866:
23866:
23866: front_insert_iterator
23866: operator++(int)
23866: { return *this; }
23866: };
23866: # 785 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866: template<typename _Container>
23866:
23866: inline front_insert_iterator<_Container>
23866: front_inserter(_Container& __x)
23866: { return front_insert_iterator<_Container>(__x); }
23866: # 805 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866: template<typename _Container>
23866: class insert_iterator
23866: : public iterator<output_iterator_tag, void, void, void, void>
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: typedef typename _Container::iterator _Iter;
23866:
23866: protected:
23866: _Container* container;
23866: _Iter iter;
23866:
23866:
23866: public:
23866:
23866: typedef _Container container_type;
23866: # 837 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866:
23866: insert_iterator(_Container& __x, _Iter __i)
23866: : container(std::__addressof(__x)), iter(__i) {}
23866: # 873 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866:
23866: insert_iterator&
23866: operator=(const typename _Container::value_type& __value)
23866: {
23866: iter = container->insert(iter, __value);
23866: ++iter;
23866: return *this;
23866: }
23866:
23866:
23866: insert_iterator&
23866: operator=(typename _Container::value_type&& __value)
23866: {
23866: iter = container->insert(iter, std::move(__value));
23866: ++iter;
23866: return *this;
23866: }
23866:
23866:
23866:
23866:
23866: insert_iterator&
23866: operator*()
23866: { return *this; }
23866:
23866:
23866:
23866: insert_iterator&
23866: operator++()
23866: { return *this; }
23866:
23866:
23866:
23866: insert_iterator&
23866: operator++(int)
23866: { return *this; }
23866: };
23866: # 929 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866: template<typename _Container, typename _Iterator>
23866: inline insert_iterator<_Container>
23866: inserter(_Container& __x, _Iterator __i)
23866: {
23866: return insert_iterator<_Container>(__x,
23866: typename _Container::iterator(__i));
23866: }
23866:
23866:
23866:
23866:
23866:
23866: }
23866:
23866: namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 954 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866: template<typename _Iterator, typename _Container>
23866: class __normal_iterator
23866: {
23866: protected:
23866: _Iterator _M_current;
23866:
23866: typedef std::iterator_traits<_Iterator> __traits_type;
23866:
23866: public:
23866: typedef _Iterator iterator_type;
23866: typedef typename __traits_type::iterator_category iterator_category;
23866: typedef typename __traits_type::value_type value_type;
23866: typedef typename __traits_type::difference_type difference_type;
23866: typedef typename __traits_type::reference reference;
23866: typedef typename __traits_type::pointer pointer;
23866:
23866:
23866:
23866:
23866:
23866: constexpr __normal_iterator() noexcept
23866: : _M_current(_Iterator()) { }
23866:
23866: explicit
23866: __normal_iterator(const _Iterator& __i) noexcept
23866: : _M_current(__i) { }
23866:
23866:
23866: template<typename _Iter>
23866:
23866: __normal_iterator(const __normal_iterator<_Iter,
23866: typename __enable_if<
23866: (std::__are_same<_Iter, typename _Container::pointer>::__value),
23866: _Container>::__type>& __i) noexcept
23866: : _M_current(__i.base()) { }
23866:
23866:
23866:
23866: reference
23866: operator*() const noexcept
23866: { return *_M_current; }
23866:
23866:
23866: pointer
23866: operator->() const noexcept
23866: { return _M_current; }
23866:
23866:
23866: __normal_iterator&
23866: operator++() noexcept
23866: {
23866: ++_M_current;
23866: return *this;
23866: }
23866:
23866:
23866: __normal_iterator
23866: operator++(int) noexcept
23866: { return __normal_iterator(_M_current++); }
23866:
23866:
23866:
23866: __normal_iterator&
23866: operator--() noexcept
23866: {
23866: --_M_current;
23866: return *this;
23866: }
23866:
23866:
23866: __normal_iterator
23866: operator--(int) noexcept
23866: { return __normal_iterator(_M_current--); }
23866:
23866:
23866:
23866: reference
23866: operator[](difference_type __n) const noexcept
23866: { return _M_current[__n]; }
23866:
23866:
23866: __normal_iterator&
23866: operator+=(difference_type __n) noexcept
23866: { _M_current += __n; return *this; }
23866:
23866:
23866: __normal_iterator
23866: operator+(difference_type __n) const noexcept
23866: { return __normal_iterator(_M_current + __n); }
23866:
23866:
23866: __normal_iterator&
23866: operator-=(difference_type __n) noexcept
23866: { _M_current -= __n; return *this; }
23866:
23866:
23866: __normal_iterator
23866: operator-(difference_type __n) const noexcept
23866: { return __normal_iterator(_M_current - __n); }
23866:
23866:
23866: const _Iterator&
23866: base() const noexcept
23866: { return _M_current; }
23866: };
23866: # 1086 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866: template<typename _IteratorL, typename _IteratorR, typename _Container>
23866:
23866: inline bool
23866: operator==(const __normal_iterator<_IteratorL, _Container>& __lhs,
23866: const __normal_iterator<_IteratorR, _Container>& __rhs)
23866: noexcept
23866: { return __lhs.base() == __rhs.base(); }
23866:
23866: template<typename _Iterator, typename _Container>
23866:
23866: inline bool
23866: operator==(const __normal_iterator<_Iterator, _Container>& __lhs,
23866: const __normal_iterator<_Iterator, _Container>& __rhs)
23866: noexcept
23866: { return __lhs.base() == __rhs.base(); }
23866:
23866: template<typename _IteratorL, typename _IteratorR, typename _Container>
23866:
23866: inline bool
23866: operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs,
23866: const __normal_iterator<_IteratorR, _Container>& __rhs)
23866: noexcept
23866: { return __lhs.base() != __rhs.base(); }
23866:
23866: template<typename _Iterator, typename _Container>
23866:
23866: inline bool
23866: operator!=(const __normal_iterator<_Iterator, _Container>& __lhs,
23866: const __normal_iterator<_Iterator, _Container>& __rhs)
23866: noexcept
23866: { return __lhs.base() != __rhs.base(); }
23866:
23866:
23866: template<typename _IteratorL, typename _IteratorR, typename _Container>
23866: inline bool
23866: operator<(const __normal_iterator<_IteratorL, _Container>& __lhs,
23866: const __normal_iterator<_IteratorR, _Container>& __rhs)
23866: noexcept
23866: { return __lhs.base() < __rhs.base(); }
23866:
23866: template<typename _Iterator, typename _Container>
23866:
23866: inline bool
23866: operator<(const __normal_iterator<_Iterator, _Container>& __lhs,
23866: const __normal_iterator<_Iterator, _Container>& __rhs)
23866: noexcept
23866: { return __lhs.base() < __rhs.base(); }
23866:
23866: template<typename _IteratorL, typename _IteratorR, typename _Container>
23866: inline bool
23866: operator>(const __normal_iterator<_IteratorL, _Container>& __lhs,
23866: const __normal_iterator<_IteratorR, _Container>& __rhs)
23866: noexcept
23866: { return __lhs.base() > __rhs.base(); }
23866:
23866: template<typename _Iterator, typename _Container>
23866:
23866: inline bool
23866: operator>(const __normal_iterator<_Iterator, _Container>& __lhs,
23866: const __normal_iterator<_Iterator, _Container>& __rhs)
23866: noexcept
23866: { return __lhs.base() > __rhs.base(); }
23866:
23866: template<typename _IteratorL, typename _IteratorR, typename _Container>
23866: inline bool
23866: operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs,
23866: const __normal_iterator<_IteratorR, _Container>& __rhs)
23866: noexcept
23866: { return __lhs.base() <= __rhs.base(); }
23866:
23866: template<typename _Iterator, typename _Container>
23866:
23866: inline bool
23866: operator<=(const __normal_iterator<_Iterator, _Container>& __lhs,
23866: const __normal_iterator<_Iterator, _Container>& __rhs)
23866: noexcept
23866: { return __lhs.base() <= __rhs.base(); }
23866:
23866: template<typename _IteratorL, typename _IteratorR, typename _Container>
23866: inline bool
23866: operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs,
23866: const __normal_iterator<_IteratorR, _Container>& __rhs)
23866: noexcept
23866: { return __lhs.base() >= __rhs.base(); }
23866:
23866: template<typename _Iterator, typename _Container>
23866:
23866: inline bool
23866: operator>=(const __normal_iterator<_Iterator, _Container>& __lhs,
23866: const __normal_iterator<_Iterator, _Container>& __rhs)
23866: noexcept
23866: { return __lhs.base() >= __rhs.base(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _IteratorL, typename _IteratorR, typename _Container>
23866:
23866:
23866:
23866: inline auto
23866: operator-(const __normal_iterator<_IteratorL, _Container>& __lhs,
23866: const __normal_iterator<_IteratorR, _Container>& __rhs) noexcept
23866: -> decltype(__lhs.base() - __rhs.base())
23866:
23866:
23866:
23866:
23866:
23866: { return __lhs.base() - __rhs.base(); }
23866:
23866: template<typename _Iterator, typename _Container>
23866:
23866: inline typename __normal_iterator<_Iterator, _Container>::difference_type
23866: operator-(const __normal_iterator<_Iterator, _Container>& __lhs,
23866: const __normal_iterator<_Iterator, _Container>& __rhs)
23866: noexcept
23866: { return __lhs.base() - __rhs.base(); }
23866:
23866: template<typename _Iterator, typename _Container>
23866:
23866: inline __normal_iterator<_Iterator, _Container>
23866: operator+(typename __normal_iterator<_Iterator, _Container>::difference_type
23866: __n, const __normal_iterator<_Iterator, _Container>& __i)
23866: noexcept
23866: { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); }
23866:
23866:
23866: }
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: template<typename _Iterator, typename _Container>
23866:
23866: _Iterator
23866: __niter_base(__gnu_cxx::__normal_iterator<_Iterator, _Container> __it)
23866: noexcept(std::is_nothrow_copy_constructible<_Iterator>::value)
23866: { return __it.base(); }
23866: # 1285 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866: template<typename _Iterator>
23866: class move_iterator
23866: {
23866: _Iterator _M_current;
23866:
23866: using __traits_type = iterator_traits<_Iterator>;
23866:
23866:
23866:
23866: using __base_ref = typename __traits_type::reference;
23866:
23866:
23866: public:
23866: using iterator_type = _Iterator;
23866: # 1309 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866: typedef typename __traits_type::iterator_category iterator_category;
23866: typedef typename __traits_type::value_type value_type;
23866: typedef typename __traits_type::difference_type difference_type;
23866:
23866: typedef _Iterator pointer;
23866:
23866:
23866: typedef typename conditional<is_reference<__base_ref>::value,
23866: typename remove_reference<__base_ref>::type&&,
23866: __base_ref>::type reference;
23866:
23866:
23866: constexpr
23866: move_iterator()
23866: : _M_current() { }
23866:
23866: explicit constexpr
23866: move_iterator(iterator_type __i)
23866: : _M_current(std::move(__i)) { }
23866:
23866: template<typename _Iter>
23866: constexpr
23866: move_iterator(const move_iterator<_Iter>& __i)
23866: : _M_current(__i.base()) { }
23866:
23866:
23866: constexpr iterator_type
23866: base() const
23866: { return _M_current; }
23866: # 1351 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866: constexpr reference
23866: operator*() const
23866:
23866:
23866:
23866: { return static_cast<reference>(*_M_current); }
23866:
23866:
23866: constexpr pointer
23866: operator->() const
23866: { return _M_current; }
23866:
23866: constexpr move_iterator&
23866: operator++()
23866: {
23866: ++_M_current;
23866: return *this;
23866: }
23866:
23866: constexpr move_iterator
23866: operator++(int)
23866: {
23866: move_iterator __tmp = *this;
23866: ++_M_current;
23866: return __tmp;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: constexpr move_iterator&
23866: operator--()
23866: {
23866: --_M_current;
23866: return *this;
23866: }
23866:
23866: constexpr move_iterator
23866: operator--(int)
23866: {
23866: move_iterator __tmp = *this;
23866: --_M_current;
23866: return __tmp;
23866: }
23866:
23866: constexpr move_iterator
23866: operator+(difference_type __n) const
23866: { return move_iterator(_M_current + __n); }
23866:
23866: constexpr move_iterator&
23866: operator+=(difference_type __n)
23866: {
23866: _M_current += __n;
23866: return *this;
23866: }
23866:
23866: constexpr move_iterator
23866: operator-(difference_type __n) const
23866: { return move_iterator(_M_current - __n); }
23866:
23866: constexpr move_iterator&
23866: operator-=(difference_type __n)
23866: {
23866: _M_current -= __n;
23866: return *this;
23866: }
23866:
23866: constexpr reference
23866: operator[](difference_type __n) const
23866:
23866:
23866:
23866: { return std::move(_M_current[__n]); }
23866: # 1456 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866: };
23866:
23866: template<typename _IteratorL, typename _IteratorR>
23866: inline constexpr bool
23866: operator==(const move_iterator<_IteratorL>& __x,
23866: const move_iterator<_IteratorR>& __y)
23866:
23866:
23866:
23866: { return __x.base() == __y.base(); }
23866: # 1475 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866: template<typename _IteratorL, typename _IteratorR>
23866: inline constexpr bool
23866: operator!=(const move_iterator<_IteratorL>& __x,
23866: const move_iterator<_IteratorR>& __y)
23866: { return !(__x == __y); }
23866:
23866:
23866: template<typename _IteratorL, typename _IteratorR>
23866: inline constexpr bool
23866: operator<(const move_iterator<_IteratorL>& __x,
23866: const move_iterator<_IteratorR>& __y)
23866:
23866:
23866:
23866: { return __x.base() < __y.base(); }
23866:
23866: template<typename _IteratorL, typename _IteratorR>
23866: inline constexpr bool
23866: operator<=(const move_iterator<_IteratorL>& __x,
23866: const move_iterator<_IteratorR>& __y)
23866:
23866:
23866:
23866: { return !(__y < __x); }
23866:
23866: template<typename _IteratorL, typename _IteratorR>
23866: inline constexpr bool
23866: operator>(const move_iterator<_IteratorL>& __x,
23866: const move_iterator<_IteratorR>& __y)
23866:
23866:
23866:
23866: { return __y < __x; }
23866:
23866: template<typename _IteratorL, typename _IteratorR>
23866: inline constexpr bool
23866: operator>=(const move_iterator<_IteratorL>& __x,
23866: const move_iterator<_IteratorR>& __y)
23866:
23866:
23866:
23866: { return !(__x < __y); }
23866: # 1526 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866: template<typename _Iterator>
23866: inline constexpr bool
23866: operator==(const move_iterator<_Iterator>& __x,
23866: const move_iterator<_Iterator>& __y)
23866: { return __x.base() == __y.base(); }
23866:
23866: template<typename _Iterator>
23866: inline constexpr bool
23866: operator!=(const move_iterator<_Iterator>& __x,
23866: const move_iterator<_Iterator>& __y)
23866: { return !(__x == __y); }
23866:
23866: template<typename _Iterator>
23866: inline constexpr bool
23866: operator<(const move_iterator<_Iterator>& __x,
23866: const move_iterator<_Iterator>& __y)
23866: { return __x.base() < __y.base(); }
23866:
23866: template<typename _Iterator>
23866: inline constexpr bool
23866: operator<=(const move_iterator<_Iterator>& __x,
23866: const move_iterator<_Iterator>& __y)
23866: { return !(__y < __x); }
23866:
23866: template<typename _Iterator>
23866: inline constexpr bool
23866: operator>(const move_iterator<_Iterator>& __x,
23866: const move_iterator<_Iterator>& __y)
23866: { return __y < __x; }
23866:
23866: template<typename _Iterator>
23866: inline constexpr bool
23866: operator>=(const move_iterator<_Iterator>& __x,
23866: const move_iterator<_Iterator>& __y)
23866: { return !(__x < __y); }
23866:
23866:
23866:
23866: template<typename _IteratorL, typename _IteratorR>
23866: inline constexpr auto
23866: operator-(const move_iterator<_IteratorL>& __x,
23866: const move_iterator<_IteratorR>& __y)
23866: -> decltype(__x.base() - __y.base())
23866: { return __x.base() - __y.base(); }
23866:
23866: template<typename _Iterator>
23866: inline constexpr move_iterator<_Iterator>
23866: operator+(typename move_iterator<_Iterator>::difference_type __n,
23866: const move_iterator<_Iterator>& __x)
23866: { return __x + __n; }
23866:
23866: template<typename _Iterator>
23866: inline constexpr move_iterator<_Iterator>
23866: make_move_iterator(_Iterator __i)
23866: { return move_iterator<_Iterator>(std::move(__i)); }
23866:
23866: template<typename _Iterator, typename _ReturnType
23866: = typename conditional<__move_if_noexcept_cond
23866: <typename iterator_traits<_Iterator>::value_type>::value,
23866: _Iterator, move_iterator<_Iterator>>::type>
23866: inline constexpr _ReturnType
23866: __make_move_if_noexcept_iterator(_Iterator __i)
23866: { return _ReturnType(__i); }
23866:
23866:
23866:
23866: template<typename _Tp, typename _ReturnType
23866: = typename conditional<__move_if_noexcept_cond<_Tp>::value,
23866: const _Tp*, move_iterator<_Tp*>>::type>
23866: inline constexpr _ReturnType
23866: __make_move_if_noexcept_iterator(_Tp* __i)
23866: { return _ReturnType(__i); }
23866: # 2183 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866: template<typename _Iterator>
23866: auto
23866: __niter_base(move_iterator<_Iterator> __it)
23866: -> decltype(make_move_iterator(__niter_base(__it.base())))
23866: { return make_move_iterator(__niter_base(__it.base())); }
23866:
23866: template<typename _Iterator>
23866: struct __is_move_iterator<move_iterator<_Iterator> >
23866: {
23866: enum { __value = 1 };
23866: typedef __true_type __type;
23866: };
23866:
23866: template<typename _Iterator>
23866: auto
23866: __miter_base(move_iterator<_Iterator> __it)
23866: -> decltype(__miter_base(__it.base()))
23866: { return __miter_base(__it.base()); }
23866:
23866: #define _GLIBCXX_MAKE_MOVE_ITERATOR(_Iter) std::make_move_iterator(_Iter)
23866: #define _GLIBCXX_MAKE_MOVE_IF_NOEXCEPT_ITERATOR(_Iter) std::__make_move_if_noexcept_iterator(_Iter)
23866: # 2213 "/usr/include/c++/10/bits/stl_iterator.h" 3
23866: template<typename _InputIterator>
23866: using __iter_key_t = remove_const_t<
23866: typename iterator_traits<_InputIterator>::value_type::first_type>;
23866:
23866: template<typename _InputIterator>
23866: using __iter_val_t =
23866: typename iterator_traits<_InputIterator>::value_type::second_type;
23866:
23866: template<typename _T1, typename _T2>
23866: struct pair;
23866:
23866: template<typename _InputIterator>
23866: using __iter_to_alloc_t =
23866: pair<add_const_t<__iter_key_t<_InputIterator>>,
23866: __iter_val_t<_InputIterator>>;
23866:
23866:
23866:
23866: }
23866: # 68 "/usr/include/c++/10/bits/stl_algobase.h" 2 3
23866:
23866: # 1 "/usr/include/c++/10/debug/debug.h" 1 3
23866: # 30 "/usr/include/c++/10/debug/debug.h" 3
23866: #define _GLIBCXX_DEBUG_MACRO_SWITCH_H 1
23866: # 48 "/usr/include/c++/10/debug/debug.h" 3
23866: namespace std
23866: {
23866: namespace __debug { }
23866: }
23866:
23866:
23866:
23866:
23866: namespace __gnu_debug
23866: {
23866: using namespace std::__debug;
23866:
23866: template<typename _Ite, typename _Seq, typename _Cat>
23866: struct _Safe_iterator;
23866: }
23866:
23866:
23866:
23866: #define __glibcxx_requires_cond(_Cond,_Msg)
23866: #define __glibcxx_requires_valid_range(_First,_Last)
23866: #define __glibcxx_requires_can_increment(_First,_Size)
23866: #define __glibcxx_requires_can_increment_range(_First1,_Last1,_First2)
23866: #define __glibcxx_requires_can_decrement_range(_First1,_Last1,_First2)
23866: #define __glibcxx_requires_sorted(_First,_Last)
23866: #define __glibcxx_requires_sorted_pred(_First,_Last,_Pred)
23866: #define __glibcxx_requires_sorted_set(_First1,_Last1,_First2)
23866: #define __glibcxx_requires_sorted_set_pred(_First1,_Last1,_First2,_Pred)
23866: #define __glibcxx_requires_partitioned_lower(_First,_Last,_Value)
23866: #define __glibcxx_requires_partitioned_upper(_First,_Last,_Value)
23866: #define __glibcxx_requires_partitioned_lower_pred(_First,_Last,_Value,_Pred)
23866: #define __glibcxx_requires_partitioned_upper_pred(_First,_Last,_Value,_Pred)
23866: #define __glibcxx_requires_heap(_First,_Last)
23866: #define __glibcxx_requires_heap_pred(_First,_Last,_Pred)
23866: #define __glibcxx_requires_string(_String)
23866: #define __glibcxx_requires_string_len(_String,_Len)
23866: #define __glibcxx_requires_irreflexive(_First,_Last)
23866: #define __glibcxx_requires_irreflexive2(_First,_Last)
23866: #define __glibcxx_requires_irreflexive_pred(_First,_Last,_Pred)
23866: #define __glibcxx_requires_irreflexive_pred2(_First,_Last,_Pred)
23866: # 70 "/usr/include/c++/10/bits/stl_algobase.h" 2 3
23866:
23866: # 1 "/usr/include/c++/10/bits/predefined_ops.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/predefined_ops.h" 3
23866: #define _GLIBCXX_PREDEFINED_OPS_H 1
23866:
23866: namespace __gnu_cxx
23866: {
23866: namespace __ops
23866: {
23866: struct _Iter_less_iter
23866: {
23866: template<typename _Iterator1, typename _Iterator2>
23866: constexpr
23866: bool
23866: operator()(_Iterator1 __it1, _Iterator2 __it2) const
23866: { return *__it1 < *__it2; }
23866: };
23866:
23866: constexpr
23866: inline _Iter_less_iter
23866: __iter_less_iter()
23866: { return _Iter_less_iter(); }
23866:
23866: struct _Iter_less_val
23866: {
23866:
23866: constexpr _Iter_less_val() = default;
23866:
23866:
23866:
23866:
23866:
23866: explicit
23866: _Iter_less_val(_Iter_less_iter) { }
23866:
23866: template<typename _Iterator, typename _Value>
23866:
23866: bool
23866: operator()(_Iterator __it, _Value& __val) const
23866: { return *__it < __val; }
23866: };
23866:
23866:
23866: inline _Iter_less_val
23866: __iter_less_val()
23866: { return _Iter_less_val(); }
23866:
23866:
23866: inline _Iter_less_val
23866: __iter_comp_val(_Iter_less_iter)
23866: { return _Iter_less_val(); }
23866:
23866: struct _Val_less_iter
23866: {
23866:
23866: constexpr _Val_less_iter() = default;
23866:
23866:
23866:
23866:
23866:
23866: explicit
23866: _Val_less_iter(_Iter_less_iter) { }
23866:
23866: template<typename _Value, typename _Iterator>
23866:
23866: bool
23866: operator()(_Value& __val, _Iterator __it) const
23866: { return __val < *__it; }
23866: };
23866:
23866:
23866: inline _Val_less_iter
23866: __val_less_iter()
23866: { return _Val_less_iter(); }
23866:
23866:
23866: inline _Val_less_iter
23866: __val_comp_iter(_Iter_less_iter)
23866: { return _Val_less_iter(); }
23866:
23866: struct _Iter_equal_to_iter
23866: {
23866: template<typename _Iterator1, typename _Iterator2>
23866:
23866: bool
23866: operator()(_Iterator1 __it1, _Iterator2 __it2) const
23866: { return *__it1 == *__it2; }
23866: };
23866:
23866:
23866: inline _Iter_equal_to_iter
23866: __iter_equal_to_iter()
23866: { return _Iter_equal_to_iter(); }
23866:
23866: struct _Iter_equal_to_val
23866: {
23866: template<typename _Iterator, typename _Value>
23866:
23866: bool
23866: operator()(_Iterator __it, _Value& __val) const
23866: { return *__it == __val; }
23866: };
23866:
23866:
23866: inline _Iter_equal_to_val
23866: __iter_equal_to_val()
23866: { return _Iter_equal_to_val(); }
23866:
23866:
23866: inline _Iter_equal_to_val
23866: __iter_comp_val(_Iter_equal_to_iter)
23866: { return _Iter_equal_to_val(); }
23866:
23866: template<typename _Compare>
23866: struct _Iter_comp_iter
23866: {
23866: _Compare _M_comp;
23866:
23866: explicit constexpr
23866: _Iter_comp_iter(_Compare __comp)
23866: : _M_comp(std::move(__comp))
23866: { }
23866:
23866: template<typename _Iterator1, typename _Iterator2>
23866: constexpr
23866: bool
23866: operator()(_Iterator1 __it1, _Iterator2 __it2)
23866: { return bool(_M_comp(*__it1, *__it2)); }
23866: };
23866:
23866: template<typename _Compare>
23866: constexpr
23866: inline _Iter_comp_iter<_Compare>
23866: __iter_comp_iter(_Compare __comp)
23866: { return _Iter_comp_iter<_Compare>(std::move(__comp)); }
23866:
23866: template<typename _Compare>
23866: struct _Iter_comp_val
23866: {
23866: _Compare _M_comp;
23866:
23866:
23866: explicit
23866: _Iter_comp_val(_Compare __comp)
23866: : _M_comp(std::move(__comp))
23866: { }
23866:
23866:
23866: explicit
23866: _Iter_comp_val(const _Iter_comp_iter<_Compare>& __comp)
23866: : _M_comp(__comp._M_comp)
23866: { }
23866:
23866:
23866:
23866: explicit
23866: _Iter_comp_val(_Iter_comp_iter<_Compare>&& __comp)
23866: : _M_comp(std::move(__comp._M_comp))
23866: { }
23866:
23866:
23866: template<typename _Iterator, typename _Value>
23866:
23866: bool
23866: operator()(_Iterator __it, _Value& __val)
23866: { return bool(_M_comp(*__it, __val)); }
23866: };
23866:
23866: template<typename _Compare>
23866:
23866: inline _Iter_comp_val<_Compare>
23866: __iter_comp_val(_Compare __comp)
23866: { return _Iter_comp_val<_Compare>(std::move(__comp)); }
23866:
23866: template<typename _Compare>
23866:
23866: inline _Iter_comp_val<_Compare>
23866: __iter_comp_val(_Iter_comp_iter<_Compare> __comp)
23866: { return _Iter_comp_val<_Compare>(std::move(__comp)); }
23866:
23866: template<typename _Compare>
23866: struct _Val_comp_iter
23866: {
23866: _Compare _M_comp;
23866:
23866:
23866: explicit
23866: _Val_comp_iter(_Compare __comp)
23866: : _M_comp(std::move(__comp))
23866: { }
23866:
23866:
23866: explicit
23866: _Val_comp_iter(const _Iter_comp_iter<_Compare>& __comp)
23866: : _M_comp(__comp._M_comp)
23866: { }
23866:
23866:
23866:
23866: explicit
23866: _Val_comp_iter(_Iter_comp_iter<_Compare>&& __comp)
23866: : _M_comp(std::move(__comp._M_comp))
23866: { }
23866:
23866:
23866: template<typename _Value, typename _Iterator>
23866:
23866: bool
23866: operator()(_Value& __val, _Iterator __it)
23866: { return bool(_M_comp(__val, *__it)); }
23866: };
23866:
23866: template<typename _Compare>
23866:
23866: inline _Val_comp_iter<_Compare>
23866: __val_comp_iter(_Compare __comp)
23866: { return _Val_comp_iter<_Compare>(std::move(__comp)); }
23866:
23866: template<typename _Compare>
23866:
23866: inline _Val_comp_iter<_Compare>
23866: __val_comp_iter(_Iter_comp_iter<_Compare> __comp)
23866: { return _Val_comp_iter<_Compare>(std::move(__comp)); }
23866:
23866: template<typename _Value>
23866: struct _Iter_equals_val
23866: {
23866: _Value& _M_value;
23866:
23866:
23866: explicit
23866: _Iter_equals_val(_Value& __value)
23866: : _M_value(__value)
23866: { }
23866:
23866: template<typename _Iterator>
23866:
23866: bool
23866: operator()(_Iterator __it)
23866: { return *__it == _M_value; }
23866: };
23866:
23866: template<typename _Value>
23866:
23866: inline _Iter_equals_val<_Value>
23866: __iter_equals_val(_Value& __val)
23866: { return _Iter_equals_val<_Value>(__val); }
23866:
23866: template<typename _Iterator1>
23866: struct _Iter_equals_iter
23866: {
23866: _Iterator1 _M_it1;
23866:
23866:
23866: explicit
23866: _Iter_equals_iter(_Iterator1 __it1)
23866: : _M_it1(__it1)
23866: { }
23866:
23866: template<typename _Iterator2>
23866:
23866: bool
23866: operator()(_Iterator2 __it2)
23866: { return *__it2 == *_M_it1; }
23866: };
23866:
23866: template<typename _Iterator>
23866:
23866: inline _Iter_equals_iter<_Iterator>
23866: __iter_comp_iter(_Iter_equal_to_iter, _Iterator __it)
23866: { return _Iter_equals_iter<_Iterator>(__it); }
23866:
23866: template<typename _Predicate>
23866: struct _Iter_pred
23866: {
23866: _Predicate _M_pred;
23866:
23866:
23866: explicit
23866: _Iter_pred(_Predicate __pred)
23866: : _M_pred(std::move(__pred))
23866: { }
23866:
23866: template<typename _Iterator>
23866:
23866: bool
23866: operator()(_Iterator __it)
23866: { return bool(_M_pred(*__it)); }
23866: };
23866:
23866: template<typename _Predicate>
23866:
23866: inline _Iter_pred<_Predicate>
23866: __pred_iter(_Predicate __pred)
23866: { return _Iter_pred<_Predicate>(std::move(__pred)); }
23866:
23866: template<typename _Compare, typename _Value>
23866: struct _Iter_comp_to_val
23866: {
23866: _Compare _M_comp;
23866: _Value& _M_value;
23866:
23866:
23866: _Iter_comp_to_val(_Compare __comp, _Value& __value)
23866: : _M_comp(std::move(__comp)), _M_value(__value)
23866: { }
23866:
23866: template<typename _Iterator>
23866:
23866: bool
23866: operator()(_Iterator __it)
23866: { return bool(_M_comp(*__it, _M_value)); }
23866: };
23866:
23866: template<typename _Compare, typename _Value>
23866: _Iter_comp_to_val<_Compare, _Value>
23866:
23866: __iter_comp_val(_Compare __comp, _Value &__val)
23866: {
23866: return _Iter_comp_to_val<_Compare, _Value>(std::move(__comp), __val);
23866: }
23866:
23866: template<typename _Compare, typename _Iterator1>
23866: struct _Iter_comp_to_iter
23866: {
23866: _Compare _M_comp;
23866: _Iterator1 _M_it1;
23866:
23866:
23866: _Iter_comp_to_iter(_Compare __comp, _Iterator1 __it1)
23866: : _M_comp(std::move(__comp)), _M_it1(__it1)
23866: { }
23866:
23866: template<typename _Iterator2>
23866:
23866: bool
23866: operator()(_Iterator2 __it2)
23866: { return bool(_M_comp(*__it2, *_M_it1)); }
23866: };
23866:
23866: template<typename _Compare, typename _Iterator>
23866:
23866: inline _Iter_comp_to_iter<_Compare, _Iterator>
23866: __iter_comp_iter(_Iter_comp_iter<_Compare> __comp, _Iterator __it)
23866: {
23866: return _Iter_comp_to_iter<_Compare, _Iterator>(
23866: std::move(__comp._M_comp), __it);
23866: }
23866:
23866: template<typename _Predicate>
23866: struct _Iter_negate
23866: {
23866: _Predicate _M_pred;
23866:
23866:
23866: explicit
23866: _Iter_negate(_Predicate __pred)
23866: : _M_pred(std::move(__pred))
23866: { }
23866:
23866: template<typename _Iterator>
23866:
23866: bool
23866: operator()(_Iterator __it)
23866: { return !bool(_M_pred(*__it)); }
23866: };
23866:
23866: template<typename _Predicate>
23866:
23866: inline _Iter_negate<_Predicate>
23866: __negate(_Iter_pred<_Predicate> __pred)
23866: { return _Iter_negate<_Predicate>(std::move(__pred._M_pred)); }
23866:
23866: }
23866: }
23866: # 72 "/usr/include/c++/10/bits/stl_algobase.h" 2 3
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr
23866: inline int
23866: __memcmp(const _Tp* __first1, const _Up* __first2, size_t __num)
23866: {
23866:
23866: static_assert(sizeof(_Tp) == sizeof(_Up), "can be compared with memcmp");
23866: # 105 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: return __builtin_memcmp(__first1, __first2, sizeof(_Tp) * __num);
23866: }
23866: # 149 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: template<typename _ForwardIterator1, typename _ForwardIterator2>
23866:
23866: inline void
23866: iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
23866: {
23866:
23866:
23866:
23866:
23866: # 182 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: swap(*__a, *__b);
23866:
23866: }
23866: # 198 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: template<typename _ForwardIterator1, typename _ForwardIterator2>
23866:
23866: _ForwardIterator2
23866: swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
23866: _ForwardIterator2 __first2)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: for (; __first1 != __last1; ++__first1, (void)++__first2)
23866: std::iter_swap(__first1, __first2);
23866: return __first2;
23866: }
23866: # 227 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: template<typename _Tp>
23866: constexpr
23866: inline const _Tp&
23866: min(const _Tp& __a, const _Tp& __b)
23866: {
23866:
23866:
23866:
23866: if (__b < __a)
23866: return __b;
23866: return __a;
23866: }
23866: # 251 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: template<typename _Tp>
23866: constexpr
23866: inline const _Tp&
23866: max(const _Tp& __a, const _Tp& __b)
23866: {
23866:
23866:
23866:
23866: if (__a < __b)
23866: return __b;
23866: return __a;
23866: }
23866: # 275 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: template<typename _Tp, typename _Compare>
23866: constexpr
23866: inline const _Tp&
23866: min(const _Tp& __a, const _Tp& __b, _Compare __comp)
23866: {
23866:
23866: if (__comp(__b, __a))
23866: return __b;
23866: return __a;
23866: }
23866: # 297 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: template<typename _Tp, typename _Compare>
23866: constexpr
23866: inline const _Tp&
23866: max(const _Tp& __a, const _Tp& __b, _Compare __comp)
23866: {
23866:
23866: if (__comp(__a, __b))
23866: return __b;
23866: return __a;
23866: }
23866:
23866:
23866:
23866: template<typename _Iterator>
23866:
23866: inline _Iterator
23866: __niter_base(_Iterator __it)
23866: noexcept(std::is_nothrow_copy_constructible<_Iterator>::value)
23866: { return __it; }
23866:
23866:
23866:
23866:
23866: template<typename _From, typename _To>
23866:
23866: inline _From
23866: __niter_wrap(_From __from, _To __res)
23866: { return __from + (__res - std::__niter_base(__from)); }
23866:
23866:
23866: template<typename _Iterator>
23866:
23866: inline _Iterator
23866: __niter_wrap(const _Iterator&, _Iterator __res)
23866: { return __res; }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<bool _IsMove, bool _IsSimple, typename _Category>
23866: struct __copy_move
23866: {
23866: template<typename _II, typename _OI>
23866:
23866: static _OI
23866: __copy_m(_II __first, _II __last, _OI __result)
23866: {
23866: for (; __first != __last; ++__result, (void)++__first)
23866: *__result = *__first;
23866: return __result;
23866: }
23866: };
23866:
23866:
23866: template<typename _Category>
23866: struct __copy_move<true, false, _Category>
23866: {
23866: template<typename _II, typename _OI>
23866:
23866: static _OI
23866: __copy_m(_II __first, _II __last, _OI __result)
23866: {
23866: for (; __first != __last; ++__result, (void)++__first)
23866: *__result = std::move(*__first);
23866: return __result;
23866: }
23866: };
23866:
23866:
23866: template<>
23866: struct __copy_move<false, false, random_access_iterator_tag>
23866: {
23866: template<typename _II, typename _OI>
23866:
23866: static _OI
23866: __copy_m(_II __first, _II __last, _OI __result)
23866: {
23866: typedef typename iterator_traits<_II>::difference_type _Distance;
23866: for(_Distance __n = __last - __first; __n > 0; --__n)
23866: {
23866: *__result = *__first;
23866: ++__first;
23866: ++__result;
23866: }
23866: return __result;
23866: }
23866: };
23866:
23866:
23866: template<>
23866: struct __copy_move<true, false, random_access_iterator_tag>
23866: {
23866: template<typename _II, typename _OI>
23866:
23866: static _OI
23866: __copy_m(_II __first, _II __last, _OI __result)
23866: {
23866: typedef typename iterator_traits<_II>::difference_type _Distance;
23866: for(_Distance __n = __last - __first; __n > 0; --__n)
23866: {
23866: *__result = std::move(*__first);
23866: ++__first;
23866: ++__result;
23866: }
23866: return __result;
23866: }
23866: };
23866:
23866:
23866: template<bool _IsMove>
23866: struct __copy_move<_IsMove, true, random_access_iterator_tag>
23866: {
23866: template<typename _Tp>
23866:
23866: static _Tp*
23866: __copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result)
23866: {
23866:
23866: using __assignable = conditional<_IsMove,
23866: is_move_assignable<_Tp>,
23866: is_copy_assignable<_Tp>>;
23866:
23866: static_assert( __assignable::type::value, "type is not assignable" );
23866:
23866: const ptrdiff_t _Num = __last - __first;
23866: if (_Num)
23866: __builtin_memmove(__result, __first, sizeof(_Tp) * _Num);
23866: return __result + _Num;
23866: }
23866: };
23866:
23866:
23866:
23866: template<typename _CharT>
23866: struct char_traits;
23866:
23866: template<typename _CharT, typename _Traits>
23866: class istreambuf_iterator;
23866:
23866: template<typename _CharT, typename _Traits>
23866: class ostreambuf_iterator;
23866:
23866: template<bool _IsMove, typename _CharT>
23866: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
23866: ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type
23866: __copy_move_a2(_CharT*, _CharT*,
23866: ostreambuf_iterator<_CharT, char_traits<_CharT> >);
23866:
23866: template<bool _IsMove, typename _CharT>
23866: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
23866: ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type
23866: __copy_move_a2(const _CharT*, const _CharT*,
23866: ostreambuf_iterator<_CharT, char_traits<_CharT> >);
23866:
23866: template<bool _IsMove, typename _CharT>
23866: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
23866: _CharT*>::__type
23866: __copy_move_a2(istreambuf_iterator<_CharT, char_traits<_CharT> >,
23866: istreambuf_iterator<_CharT, char_traits<_CharT> >, _CharT*);
23866:
23866: template<bool _IsMove, typename _II, typename _OI>
23866:
23866: inline _OI
23866: __copy_move_a2(_II __first, _II __last, _OI __result)
23866: {
23866: typedef typename iterator_traits<_II>::iterator_category _Category;
23866:
23866:
23866:
23866:
23866:
23866: return std::__copy_move<_IsMove, __memcpyable<_OI, _II>::__value,
23866: _Category>::__copy_m(__first, __last, __result);
23866: }
23866:
23866:
23866:
23866: template<typename _Tp, typename _Ref, typename _Ptr>
23866: struct _Deque_iterator;
23866:
23866:
23866:
23866: template<bool _IsMove,
23866: typename _Tp, typename _Ref, typename _Ptr, typename _OI>
23866: _OI
23866: __copy_move_a1(std::_Deque_iterator<_Tp, _Ref, _Ptr>,
23866: std::_Deque_iterator<_Tp, _Ref, _Ptr>,
23866: _OI);
23866:
23866: template<bool _IsMove,
23866: typename _ITp, typename _IRef, typename _IPtr, typename _OTp>
23866: std::_Deque_iterator<_OTp, _OTp&, _OTp*>
23866: __copy_move_a1(std::_Deque_iterator<_ITp, _IRef, _IPtr>,
23866: std::_Deque_iterator<_ITp, _IRef, _IPtr>,
23866: std::_Deque_iterator<_OTp, _OTp&, _OTp*>);
23866:
23866: template<bool _IsMove, typename _II, typename _Tp>
23866: typename __gnu_cxx::__enable_if<
23866: __is_random_access_iter<_II>::__value,
23866: std::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type
23866: __copy_move_a1(_II, _II, std::_Deque_iterator<_Tp, _Tp&, _Tp*>);
23866:
23866: template<bool _IsMove, typename _II, typename _OI>
23866:
23866: inline _OI
23866: __copy_move_a1(_II __first, _II __last, _OI __result)
23866: { return std::__copy_move_a2<_IsMove>(__first, __last, __result); }
23866:
23866: template<bool _IsMove, typename _II, typename _OI>
23866:
23866: inline _OI
23866: __copy_move_a(_II __first, _II __last, _OI __result)
23866: {
23866: return std::__niter_wrap(__result,
23866: std::__copy_move_a1<_IsMove>(std::__niter_base(__first),
23866: std::__niter_base(__last),
23866: std::__niter_base(__result)));
23866: }
23866:
23866: template<bool _IsMove,
23866: typename _Ite, typename _Seq, typename _Cat, typename _OI>
23866: _OI
23866: __copy_move_a(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&,
23866: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&,
23866: _OI);
23866:
23866: template<bool _IsMove,
23866: typename _II, typename _Ite, typename _Seq, typename _Cat>
23866: __gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>
23866: __copy_move_a(_II, _II,
23866: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&);
23866:
23866: template<bool _IsMove,
23866: typename _IIte, typename _ISeq, typename _ICat,
23866: typename _OIte, typename _OSeq, typename _OCat>
23866: ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat>
23866: __copy_move_a(const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&,
23866: const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&,
23866: const ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat>&);
23866: # 557 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: template<typename _II, typename _OI>
23866:
23866: inline _OI
23866: copy(_II __first, _II __last, _OI __result)
23866: {
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__copy_move_a<__is_move_iterator<_II>::__value>
23866: (std::__miter_base(__first), std::__miter_base(__last), __result);
23866: }
23866: # 590 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: template<typename _II, typename _OI>
23866:
23866: inline _OI
23866: move(_II __first, _II __last, _OI __result)
23866: {
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__copy_move_a<true>(std::__miter_base(__first),
23866: std::__miter_base(__last), __result);
23866: }
23866:
23866: #define _GLIBCXX_MOVE3(_Tp,_Up,_Vp) std::move(_Tp, _Up, _Vp)
23866:
23866:
23866:
23866:
23866: template<bool _IsMove, bool _IsSimple, typename _Category>
23866: struct __copy_move_backward
23866: {
23866: template<typename _BI1, typename _BI2>
23866:
23866: static _BI2
23866: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result)
23866: {
23866: while (__first != __last)
23866: *--__result = *--__last;
23866: return __result;
23866: }
23866: };
23866:
23866:
23866: template<typename _Category>
23866: struct __copy_move_backward<true, false, _Category>
23866: {
23866: template<typename _BI1, typename _BI2>
23866:
23866: static _BI2
23866: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result)
23866: {
23866: while (__first != __last)
23866: *--__result = std::move(*--__last);
23866: return __result;
23866: }
23866: };
23866:
23866:
23866: template<>
23866: struct __copy_move_backward<false, false, random_access_iterator_tag>
23866: {
23866: template<typename _BI1, typename _BI2>
23866:
23866: static _BI2
23866: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result)
23866: {
23866: typename iterator_traits<_BI1>::difference_type
23866: __n = __last - __first;
23866: for (; __n > 0; --__n)
23866: *--__result = *--__last;
23866: return __result;
23866: }
23866: };
23866:
23866:
23866: template<>
23866: struct __copy_move_backward<true, false, random_access_iterator_tag>
23866: {
23866: template<typename _BI1, typename _BI2>
23866:
23866: static _BI2
23866: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result)
23866: {
23866: typename iterator_traits<_BI1>::difference_type
23866: __n = __last - __first;
23866: for (; __n > 0; --__n)
23866: *--__result = std::move(*--__last);
23866: return __result;
23866: }
23866: };
23866:
23866:
23866: template<bool _IsMove>
23866: struct __copy_move_backward<_IsMove, true, random_access_iterator_tag>
23866: {
23866: template<typename _Tp>
23866:
23866: static _Tp*
23866: __copy_move_b(const _Tp* __first, const _Tp* __last, _Tp* __result)
23866: {
23866:
23866: using __assignable = conditional<_IsMove,
23866: is_move_assignable<_Tp>,
23866: is_copy_assignable<_Tp>>;
23866:
23866: static_assert( __assignable::type::value, "type is not assignable" );
23866:
23866: const ptrdiff_t _Num = __last - __first;
23866: if (_Num)
23866: __builtin_memmove(__result - _Num, __first, sizeof(_Tp) * _Num);
23866: return __result - _Num;
23866: }
23866: };
23866:
23866: template<bool _IsMove, typename _BI1, typename _BI2>
23866:
23866: inline _BI2
23866: __copy_move_backward_a2(_BI1 __first, _BI1 __last, _BI2 __result)
23866: {
23866: typedef typename iterator_traits<_BI1>::iterator_category _Category;
23866:
23866:
23866:
23866:
23866:
23866: return std::__copy_move_backward<_IsMove,
23866: __memcpyable<_BI2, _BI1>::__value,
23866: _Category>::__copy_move_b(__first,
23866: __last,
23866: __result);
23866: }
23866:
23866: template<bool _IsMove, typename _BI1, typename _BI2>
23866:
23866: inline _BI2
23866: __copy_move_backward_a1(_BI1 __first, _BI1 __last, _BI2 __result)
23866: { return std::__copy_move_backward_a2<_IsMove>(__first, __last, __result); }
23866:
23866: template<bool _IsMove,
23866: typename _Tp, typename _Ref, typename _Ptr, typename _OI>
23866: _OI
23866: __copy_move_backward_a1(std::_Deque_iterator<_Tp, _Ref, _Ptr>,
23866: std::_Deque_iterator<_Tp, _Ref, _Ptr>,
23866: _OI);
23866:
23866: template<bool _IsMove,
23866: typename _ITp, typename _IRef, typename _IPtr, typename _OTp>
23866: std::_Deque_iterator<_OTp, _OTp&, _OTp*>
23866: __copy_move_backward_a1(
23866: std::_Deque_iterator<_ITp, _IRef, _IPtr>,
23866: std::_Deque_iterator<_ITp, _IRef, _IPtr>,
23866: std::_Deque_iterator<_OTp, _OTp&, _OTp*>);
23866:
23866: template<bool _IsMove, typename _II, typename _Tp>
23866: typename __gnu_cxx::__enable_if<
23866: __is_random_access_iter<_II>::__value,
23866: std::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type
23866: __copy_move_backward_a1(_II, _II,
23866: std::_Deque_iterator<_Tp, _Tp&, _Tp*>);
23866:
23866: template<bool _IsMove, typename _II, typename _OI>
23866:
23866: inline _OI
23866: __copy_move_backward_a(_II __first, _II __last, _OI __result)
23866: {
23866: return std::__niter_wrap(__result,
23866: std::__copy_move_backward_a1<_IsMove>
23866: (std::__niter_base(__first), std::__niter_base(__last),
23866: std::__niter_base(__result)));
23866: }
23866:
23866: template<bool _IsMove,
23866: typename _Ite, typename _Seq, typename _Cat, typename _OI>
23866: _OI
23866: __copy_move_backward_a(
23866: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&,
23866: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&,
23866: _OI);
23866:
23866: template<bool _IsMove,
23866: typename _II, typename _Ite, typename _Seq, typename _Cat>
23866: __gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>
23866: __copy_move_backward_a(_II, _II,
23866: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&);
23866:
23866: template<bool _IsMove,
23866: typename _IIte, typename _ISeq, typename _ICat,
23866: typename _OIte, typename _OSeq, typename _OCat>
23866: ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat>
23866: __copy_move_backward_a(
23866: const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&,
23866: const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&,
23866: const ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat>&);
23866: # 794 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: template<typename _BI1, typename _BI2>
23866:
23866: inline _BI2
23866: copy_backward(_BI1 __first, _BI1 __last, _BI2 __result)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__copy_move_backward_a<__is_move_iterator<_BI1>::__value>
23866: (std::__miter_base(__first), std::__miter_base(__last), __result);
23866: }
23866: # 830 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: template<typename _BI1, typename _BI2>
23866:
23866: inline _BI2
23866: move_backward(_BI1 __first, _BI1 __last, _BI2 __result)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__copy_move_backward_a<true>(std::__miter_base(__first),
23866: std::__miter_base(__last),
23866: __result);
23866: }
23866:
23866: #define _GLIBCXX_MOVE_BACKWARD3(_Tp,_Up,_Vp) std::move_backward(_Tp, _Up, _Vp)
23866:
23866:
23866:
23866:
23866: template<typename _ForwardIterator, typename _Tp>
23866:
23866: inline typename
23866: __gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, void>::__type
23866: __fill_a1(_ForwardIterator __first, _ForwardIterator __last,
23866: const _Tp& __value)
23866: {
23866: for (; __first != __last; ++__first)
23866: *__first = __value;
23866: }
23866:
23866: template<typename _ForwardIterator, typename _Tp>
23866:
23866: inline typename
23866: __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, void>::__type
23866: __fill_a1(_ForwardIterator __first, _ForwardIterator __last,
23866: const _Tp& __value)
23866: {
23866: const _Tp __tmp = __value;
23866: for (; __first != __last; ++__first)
23866: *__first = __tmp;
23866: }
23866:
23866:
23866: template<typename _Tp>
23866:
23866: inline typename
23866: __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, void>::__type
23866: __fill_a1(_Tp* __first, _Tp* __last, const _Tp& __c)
23866: {
23866: const _Tp __tmp = __c;
23866: # 892 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: if (const size_t __len = __last - __first)
23866: __builtin_memset(__first, static_cast<unsigned char>(__tmp), __len);
23866: }
23866:
23866: template<typename _Ite, typename _Cont, typename _Tp>
23866:
23866: inline void
23866: __fill_a1(::__gnu_cxx::__normal_iterator<_Ite, _Cont> __first,
23866: ::__gnu_cxx::__normal_iterator<_Ite, _Cont> __last,
23866: const _Tp& __value)
23866: { std::__fill_a1(__first.base(), __last.base(), __value); }
23866:
23866: template<typename _Tp, typename _VTp>
23866: void
23866: __fill_a1(const std::_Deque_iterator<_Tp, _Tp&, _Tp*>&,
23866: const std::_Deque_iterator<_Tp, _Tp&, _Tp*>&,
23866: const _VTp&);
23866:
23866: template<typename _FIte, typename _Tp>
23866:
23866: inline void
23866: __fill_a(_FIte __first, _FIte __last, const _Tp& __value)
23866: { std::__fill_a1(__first, __last, __value); }
23866:
23866: template<typename _Ite, typename _Seq, typename _Cat, typename _Tp>
23866: void
23866: __fill_a(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&,
23866: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&,
23866: const _Tp&);
23866: # 934 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: template<typename _ForwardIterator, typename _Tp>
23866:
23866: inline void
23866: fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value)
23866: {
23866:
23866:
23866:
23866: ;
23866:
23866: std::__fill_a(__first, __last, __value);
23866: }
23866:
23866:
23866: inline constexpr int
23866: __size_to_integer(int __n) { return __n; }
23866: inline constexpr unsigned
23866: __size_to_integer(unsigned __n) { return __n; }
23866: inline constexpr long
23866: __size_to_integer(long __n) { return __n; }
23866: inline constexpr unsigned long
23866: __size_to_integer(unsigned long __n) { return __n; }
23866: inline constexpr long long
23866: __size_to_integer(long long __n) { return __n; }
23866: inline constexpr unsigned long long
23866: __size_to_integer(unsigned long long __n) { return __n; }
23866: # 986 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: inline constexpr long long
23866: __size_to_integer(float __n) { return __n; }
23866: inline constexpr long long
23866: __size_to_integer(double __n) { return __n; }
23866: inline constexpr long long
23866: __size_to_integer(long double __n) { return __n; }
23866:
23866:
23866:
23866:
23866:
23866: template<typename _OutputIterator, typename _Size, typename _Tp>
23866:
23866: inline typename
23866: __gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, _OutputIterator>::__type
23866: __fill_n_a1(_OutputIterator __first, _Size __n, const _Tp& __value)
23866: {
23866: for (; __n > 0; --__n, (void) ++__first)
23866: *__first = __value;
23866: return __first;
23866: }
23866:
23866: template<typename _OutputIterator, typename _Size, typename _Tp>
23866:
23866: inline typename
23866: __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, _OutputIterator>::__type
23866: __fill_n_a1(_OutputIterator __first, _Size __n, const _Tp& __value)
23866: {
23866: const _Tp __tmp = __value;
23866: for (; __n > 0; --__n, (void) ++__first)
23866: *__first = __tmp;
23866: return __first;
23866: }
23866:
23866: template<typename _Ite, typename _Seq, typename _Cat, typename _Size,
23866: typename _Tp>
23866: ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>
23866: __fill_n_a(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>& __first,
23866: _Size __n, const _Tp& __value,
23866: std::input_iterator_tag);
23866:
23866: template<typename _OutputIterator, typename _Size, typename _Tp>
23866:
23866: inline _OutputIterator
23866: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value,
23866: std::output_iterator_tag)
23866: {
23866:
23866: static_assert(is_integral<_Size>{}, "fill_n must pass integral size");
23866:
23866: return __fill_n_a1(__first, __n, __value);
23866: }
23866:
23866: template<typename _OutputIterator, typename _Size, typename _Tp>
23866:
23866: inline _OutputIterator
23866: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value,
23866: std::input_iterator_tag)
23866: {
23866:
23866: static_assert(is_integral<_Size>{}, "fill_n must pass integral size");
23866:
23866: return __fill_n_a1(__first, __n, __value);
23866: }
23866:
23866: template<typename _OutputIterator, typename _Size, typename _Tp>
23866:
23866: inline _OutputIterator
23866: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value,
23866: std::random_access_iterator_tag)
23866: {
23866:
23866: static_assert(is_integral<_Size>{}, "fill_n must pass integral size");
23866:
23866: if (__n <= 0)
23866: return __first;
23866:
23866: ;
23866:
23866: std::__fill_a(__first, __first + __n, __value);
23866: return __first + __n;
23866: }
23866: # 1086 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: template<typename _OI, typename _Size, typename _Tp>
23866:
23866: inline _OI
23866: fill_n(_OI __first, _Size __n, const _Tp& __value)
23866: {
23866:
23866:
23866:
23866: return std::__fill_n_a(__first, std::__size_to_integer(__n), __value,
23866: std::__iterator_category(__first));
23866: }
23866:
23866: template<bool _BoolType>
23866: struct __equal
23866: {
23866: template<typename _II1, typename _II2>
23866:
23866: static bool
23866: equal(_II1 __first1, _II1 __last1, _II2 __first2)
23866: {
23866: for (; __first1 != __last1; ++__first1, (void) ++__first2)
23866: if (!(*__first1 == *__first2))
23866: return false;
23866: return true;
23866: }
23866: };
23866:
23866: template<>
23866: struct __equal<true>
23866: {
23866: template<typename _Tp>
23866:
23866: static bool
23866: equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2)
23866: {
23866: if (const size_t __len = (__last1 - __first1))
23866: return !std::__memcmp(__first1, __first2, __len);
23866: return true;
23866: }
23866: };
23866:
23866: template<typename _Tp, typename _Ref, typename _Ptr, typename _II>
23866: typename __gnu_cxx::__enable_if<
23866: __is_random_access_iter<_II>::__value, bool>::__type
23866: __equal_aux1(std::_Deque_iterator<_Tp, _Ref, _Ptr>,
23866: std::_Deque_iterator<_Tp, _Ref, _Ptr>,
23866: _II);
23866:
23866: template<typename _Tp1, typename _Ref1, typename _Ptr1,
23866: typename _Tp2, typename _Ref2, typename _Ptr2>
23866: bool
23866: __equal_aux1(std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>,
23866: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>,
23866: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>);
23866:
23866: template<typename _II, typename _Tp, typename _Ref, typename _Ptr>
23866: typename __gnu_cxx::__enable_if<
23866: __is_random_access_iter<_II>::__value, bool>::__type
23866: __equal_aux1(_II, _II,
23866: std::_Deque_iterator<_Tp, _Ref, _Ptr>);
23866:
23866: template<typename _II1, typename _II2>
23866:
23866: inline bool
23866: __equal_aux1(_II1 __first1, _II1 __last1, _II2 __first2)
23866: {
23866: typedef typename iterator_traits<_II1>::value_type _ValueType1;
23866: const bool __simple = ((__is_integer<_ValueType1>::__value
23866: || __is_pointer<_ValueType1>::__value)
23866: && __memcmpable<_II1, _II2>::__value);
23866: return std::__equal<__simple>::equal(__first1, __last1, __first2);
23866: }
23866:
23866: template<typename _II1, typename _II2>
23866:
23866: inline bool
23866: __equal_aux(_II1 __first1, _II1 __last1, _II2 __first2)
23866: {
23866: return std::__equal_aux1(std::__niter_base(__first1),
23866: std::__niter_base(__last1),
23866: std::__niter_base(__first2));
23866: }
23866:
23866: template<typename _II1, typename _Seq1, typename _Cat1, typename _II2>
23866: bool
23866: __equal_aux(const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&,
23866: const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&,
23866: _II2);
23866:
23866: template<typename _II1, typename _II2, typename _Seq2, typename _Cat2>
23866: bool
23866: __equal_aux(_II1, _II1,
23866: const ::__gnu_debug::_Safe_iterator<_II2, _Seq2, _Cat2>&);
23866:
23866: template<typename _II1, typename _Seq1, typename _Cat1,
23866: typename _II2, typename _Seq2, typename _Cat2>
23866: bool
23866: __equal_aux(const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&,
23866: const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&,
23866: const ::__gnu_debug::_Safe_iterator<_II2, _Seq2, _Cat2>&);
23866:
23866: template<typename, typename>
23866: struct __lc_rai
23866: {
23866: template<typename _II1, typename _II2>
23866:
23866: static _II1
23866: __newlast1(_II1, _II1 __last1, _II2, _II2)
23866: { return __last1; }
23866:
23866: template<typename _II>
23866:
23866: static bool
23866: __cnd2(_II __first, _II __last)
23866: { return __first != __last; }
23866: };
23866:
23866: template<>
23866: struct __lc_rai<random_access_iterator_tag, random_access_iterator_tag>
23866: {
23866: template<typename _RAI1, typename _RAI2>
23866:
23866: static _RAI1
23866: __newlast1(_RAI1 __first1, _RAI1 __last1,
23866: _RAI2 __first2, _RAI2 __last2)
23866: {
23866: const typename iterator_traits<_RAI1>::difference_type
23866: __diff1 = __last1 - __first1;
23866: const typename iterator_traits<_RAI2>::difference_type
23866: __diff2 = __last2 - __first2;
23866: return __diff2 < __diff1 ? __first1 + __diff2 : __last1;
23866: }
23866:
23866: template<typename _RAI>
23866: static bool
23866: __cnd2(_RAI, _RAI)
23866: { return true; }
23866: };
23866:
23866: template<typename _II1, typename _II2, typename _Compare>
23866:
23866: bool
23866: __lexicographical_compare_impl(_II1 __first1, _II1 __last1,
23866: _II2 __first2, _II2 __last2,
23866: _Compare __comp)
23866: {
23866: typedef typename iterator_traits<_II1>::iterator_category _Category1;
23866: typedef typename iterator_traits<_II2>::iterator_category _Category2;
23866: typedef std::__lc_rai<_Category1, _Category2> __rai_type;
23866:
23866: __last1 = __rai_type::__newlast1(__first1, __last1, __first2, __last2);
23866: for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2);
23866: ++__first1, (void)++__first2)
23866: {
23866: if (__comp(__first1, __first2))
23866: return true;
23866: if (__comp(__first2, __first1))
23866: return false;
23866: }
23866: return __first1 == __last1 && __first2 != __last2;
23866: }
23866:
23866: template<bool _BoolType>
23866: struct __lexicographical_compare
23866: {
23866: template<typename _II1, typename _II2>
23866:
23866: static bool
23866: __lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2)
23866: {
23866: using __gnu_cxx::__ops::__iter_less_iter;
23866: return std::__lexicographical_compare_impl(__first1, __last1,
23866: __first2, __last2,
23866: __iter_less_iter());
23866: }
23866: };
23866:
23866: template<>
23866: struct __lexicographical_compare<true>
23866: {
23866: template<typename _Tp, typename _Up>
23866:
23866: static bool
23866: __lc(const _Tp* __first1, const _Tp* __last1,
23866: const _Up* __first2, const _Up* __last2)
23866: {
23866: const size_t __len1 = __last1 - __first1;
23866: const size_t __len2 = __last2 - __first2;
23866: if (const size_t __len = std::min(__len1, __len2))
23866: if (int __result = std::__memcmp(__first1, __first2, __len))
23866: return __result < 0;
23866: return __len1 < __len2;
23866: }
23866: };
23866:
23866: template<typename _II1, typename _II2>
23866:
23866: inline bool
23866: __lexicographical_compare_aux(_II1 __first1, _II1 __last1,
23866: _II2 __first2, _II2 __last2)
23866: {
23866: typedef typename iterator_traits<_II1>::value_type _ValueType1;
23866: typedef typename iterator_traits<_II2>::value_type _ValueType2;
23866: const bool __simple =
23866: (__is_memcmp_ordered_with<_ValueType1, _ValueType2>::__value
23866: && __is_pointer<_II1>::__value
23866: && __is_pointer<_II2>::__value
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: );
23866:
23866: return std::__lexicographical_compare<__simple>::__lc(__first1, __last1,
23866: __first2, __last2);
23866: }
23866:
23866: template<typename _ForwardIterator, typename _Tp, typename _Compare>
23866:
23866: _ForwardIterator
23866: __lower_bound(_ForwardIterator __first, _ForwardIterator __last,
23866: const _Tp& __val, _Compare __comp)
23866: {
23866: typedef typename iterator_traits<_ForwardIterator>::difference_type
23866: _DistanceType;
23866:
23866: _DistanceType __len = std::distance(__first, __last);
23866:
23866: while (__len > 0)
23866: {
23866: _DistanceType __half = __len >> 1;
23866: _ForwardIterator __middle = __first;
23866: std::advance(__middle, __half);
23866: if (__comp(__middle, __val))
23866: {
23866: __first = __middle;
23866: ++__first;
23866: __len = __len - __half - 1;
23866: }
23866: else
23866: __len = __half;
23866: }
23866: return __first;
23866: }
23866: # 1345 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: template<typename _ForwardIterator, typename _Tp>
23866:
23866: inline _ForwardIterator
23866: lower_bound(_ForwardIterator __first, _ForwardIterator __last,
23866: const _Tp& __val)
23866: {
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__lower_bound(__first, __last, __val,
23866: __gnu_cxx::__ops::__iter_less_val());
23866: }
23866:
23866:
23866:
23866: inline constexpr int
23866: __lg(int __n)
23866: { return (int)sizeof(int) * 8 - 1 - __builtin_clz(__n); }
23866:
23866: inline constexpr unsigned
23866: __lg(unsigned __n)
23866: { return (int)sizeof(int) * 8 - 1 - __builtin_clz(__n); }
23866:
23866: inline constexpr long
23866: __lg(long __n)
23866: { return (int)sizeof(long) * 8 - 1 - __builtin_clzl(__n); }
23866:
23866: inline constexpr unsigned long
23866: __lg(unsigned long __n)
23866: { return (int)sizeof(long) * 8 - 1 - __builtin_clzl(__n); }
23866:
23866: inline constexpr long long
23866: __lg(long long __n)
23866: { return (int)sizeof(long long) * 8 - 1 - __builtin_clzll(__n); }
23866:
23866: inline constexpr unsigned long long
23866: __lg(unsigned long long __n)
23866: { return (int)sizeof(long long) * 8 - 1 - __builtin_clzll(__n); }
23866:
23866:
23866: # 1401 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: template<typename _II1, typename _II2>
23866:
23866: inline bool
23866: equal(_II1 __first1, _II1 __last1, _II2 __first2)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__equal_aux(__first1, __last1, __first2);
23866: }
23866: # 1432 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
23866:
23866: inline bool
23866: equal(_IIter1 __first1, _IIter1 __last1,
23866: _IIter2 __first2, _BinaryPredicate __binary_pred)
23866: {
23866:
23866:
23866:
23866: ;
23866:
23866: for (; __first1 != __last1; ++__first1, (void)++__first2)
23866: if (!bool(__binary_pred(*__first1, *__first2)))
23866: return false;
23866: return true;
23866: }
23866:
23866:
23866:
23866: template<typename _II1, typename _II2>
23866:
23866: inline bool
23866: __equal4(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2)
23866: {
23866: using _RATag = random_access_iterator_tag;
23866: using _Cat1 = typename iterator_traits<_II1>::iterator_category;
23866: using _Cat2 = typename iterator_traits<_II2>::iterator_category;
23866: using _RAIters = __and_<is_same<_Cat1, _RATag>, is_same<_Cat2, _RATag>>;
23866: if (_RAIters())
23866: {
23866: auto __d1 = std::distance(__first1, __last1);
23866: auto __d2 = std::distance(__first2, __last2);
23866: if (__d1 != __d2)
23866: return false;
23866: return std::equal(__first1, __last1, __first2);
23866: }
23866:
23866: for (; __first1 != __last1 && __first2 != __last2;
23866: ++__first1, (void)++__first2)
23866: if (!(*__first1 == *__first2))
23866: return false;
23866: return __first1 == __last1 && __first2 == __last2;
23866: }
23866:
23866:
23866: template<typename _II1, typename _II2, typename _BinaryPredicate>
23866:
23866: inline bool
23866: __equal4(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2,
23866: _BinaryPredicate __binary_pred)
23866: {
23866: using _RATag = random_access_iterator_tag;
23866: using _Cat1 = typename iterator_traits<_II1>::iterator_category;
23866: using _Cat2 = typename iterator_traits<_II2>::iterator_category;
23866: using _RAIters = __and_<is_same<_Cat1, _RATag>, is_same<_Cat2, _RATag>>;
23866: if (_RAIters())
23866: {
23866: auto __d1 = std::distance(__first1, __last1);
23866: auto __d2 = std::distance(__first2, __last2);
23866: if (__d1 != __d2)
23866: return false;
23866: return std::equal(__first1, __last1, __first2,
23866: __binary_pred);
23866: }
23866:
23866: for (; __first1 != __last1 && __first2 != __last2;
23866: ++__first1, (void)++__first2)
23866: if (!bool(__binary_pred(*__first1, *__first2)))
23866: return false;
23866: return __first1 == __last1 && __first2 == __last2;
23866: }
23866:
23866:
23866:
23866:
23866: #define __cpp_lib_robust_nonmodifying_seq_ops 201304
23866: # 1522 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: template<typename _II1, typename _II2>
23866:
23866: inline bool
23866: equal(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: return std::__equal4(__first1, __last1, __first2, __last2);
23866: }
23866: # 1555 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
23866:
23866: inline bool
23866: equal(_IIter1 __first1, _IIter1 __last1,
23866: _IIter2 __first2, _IIter2 __last2, _BinaryPredicate __binary_pred)
23866: {
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: return std::__equal4(__first1, __last1, __first2, __last2,
23866: __binary_pred);
23866: }
23866: # 1587 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: template<typename _II1, typename _II2>
23866:
23866: inline bool
23866: lexicographical_compare(_II1 __first1, _II1 __last1,
23866: _II2 __first2, _II2 __last2)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: return std::__lexicographical_compare_aux(std::__niter_base(__first1),
23866: std::__niter_base(__last1),
23866: std::__niter_base(__first2),
23866: std::__niter_base(__last2));
23866: }
23866: # 1624 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: template<typename _II1, typename _II2, typename _Compare>
23866:
23866: inline bool
23866: lexicographical_compare(_II1 __first1, _II1 __last1,
23866: _II2 __first2, _II2 __last2, _Compare __comp)
23866: {
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: return std::__lexicographical_compare_impl
23866: (__first1, __last1, __first2, __last2,
23866: __gnu_cxx::__ops::__iter_comp_iter(__comp));
23866: }
23866: # 1737 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: template<typename _InputIterator1, typename _InputIterator2,
23866: typename _BinaryPredicate>
23866:
23866: pair<_InputIterator1, _InputIterator2>
23866: __mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2, _BinaryPredicate __binary_pred)
23866: {
23866: while (__first1 != __last1 && __binary_pred(__first1, __first2))
23866: {
23866: ++__first1;
23866: ++__first2;
23866: }
23866: return pair<_InputIterator1, _InputIterator2>(__first1, __first2);
23866: }
23866: # 1765 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: template<typename _InputIterator1, typename _InputIterator2>
23866:
23866: inline pair<_InputIterator1, _InputIterator2>
23866: mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__mismatch(__first1, __last1, __first2,
23866: __gnu_cxx::__ops::__iter_equal_to_iter());
23866: }
23866: # 1799 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: template<typename _InputIterator1, typename _InputIterator2,
23866: typename _BinaryPredicate>
23866:
23866: inline pair<_InputIterator1, _InputIterator2>
23866: mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2, _BinaryPredicate __binary_pred)
23866: {
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__mismatch(__first1, __last1, __first2,
23866: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred));
23866: }
23866:
23866:
23866:
23866: template<typename _InputIterator1, typename _InputIterator2,
23866: typename _BinaryPredicate>
23866:
23866: pair<_InputIterator1, _InputIterator2>
23866: __mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2, _InputIterator2 __last2,
23866: _BinaryPredicate __binary_pred)
23866: {
23866: while (__first1 != __last1 && __first2 != __last2
23866: && __binary_pred(__first1, __first2))
23866: {
23866: ++__first1;
23866: ++__first2;
23866: }
23866: return pair<_InputIterator1, _InputIterator2>(__first1, __first2);
23866: }
23866: # 1848 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: template<typename _InputIterator1, typename _InputIterator2>
23866:
23866: inline pair<_InputIterator1, _InputIterator2>
23866: mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2, _InputIterator2 __last2)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: return std::__mismatch(__first1, __last1, __first2, __last2,
23866: __gnu_cxx::__ops::__iter_equal_to_iter());
23866: }
23866: # 1884 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: template<typename _InputIterator1, typename _InputIterator2,
23866: typename _BinaryPredicate>
23866:
23866: inline pair<_InputIterator1, _InputIterator2>
23866: mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2, _InputIterator2 __last2,
23866: _BinaryPredicate __binary_pred)
23866: {
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: return std::__mismatch(__first1, __last1, __first2, __last2,
23866: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred));
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename _InputIterator, typename _Predicate>
23866:
23866: inline _InputIterator
23866: __find_if(_InputIterator __first, _InputIterator __last,
23866: _Predicate __pred, input_iterator_tag)
23866: {
23866: while (__first != __last && !__pred(__first))
23866: ++__first;
23866: return __first;
23866: }
23866:
23866:
23866: template<typename _RandomAccessIterator, typename _Predicate>
23866:
23866: _RandomAccessIterator
23866: __find_if(_RandomAccessIterator __first, _RandomAccessIterator __last,
23866: _Predicate __pred, random_access_iterator_tag)
23866: {
23866: typename iterator_traits<_RandomAccessIterator>::difference_type
23866: __trip_count = (__last - __first) >> 2;
23866:
23866: for (; __trip_count > 0; --__trip_count)
23866: {
23866: if (__pred(__first))
23866: return __first;
23866: ++__first;
23866:
23866: if (__pred(__first))
23866: return __first;
23866: ++__first;
23866:
23866: if (__pred(__first))
23866: return __first;
23866: ++__first;
23866:
23866: if (__pred(__first))
23866: return __first;
23866: ++__first;
23866: }
23866:
23866: switch (__last - __first)
23866: {
23866: case 3:
23866: if (__pred(__first))
23866: return __first;
23866: ++__first;
23866:
23866: case 2:
23866: if (__pred(__first))
23866: return __first;
23866: ++__first;
23866:
23866: case 1:
23866: if (__pred(__first))
23866: return __first;
23866: ++__first;
23866:
23866: case 0:
23866: default:
23866: return __last;
23866: }
23866: }
23866:
23866: template<typename _Iterator, typename _Predicate>
23866:
23866: inline _Iterator
23866: __find_if(_Iterator __first, _Iterator __last, _Predicate __pred)
23866: {
23866: return __find_if(__first, __last, __pred,
23866: std::__iterator_category(__first));
23866: }
23866:
23866: template<typename _InputIterator, typename _Predicate>
23866:
23866: typename iterator_traits<_InputIterator>::difference_type
23866: __count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred)
23866: {
23866: typename iterator_traits<_InputIterator>::difference_type __n = 0;
23866: for (; __first != __last; ++__first)
23866: if (__pred(__first))
23866: ++__n;
23866: return __n;
23866: }
23866:
23866:
23866: template<typename _ForwardIterator1, typename _ForwardIterator2,
23866: typename _BinaryPredicate>
23866:
23866: bool
23866: __is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
23866: _ForwardIterator2 __first2, _BinaryPredicate __pred)
23866: {
23866:
23866:
23866: for (; __first1 != __last1; ++__first1, (void)++__first2)
23866: if (!__pred(__first1, __first2))
23866: break;
23866:
23866: if (__first1 == __last1)
23866: return true;
23866:
23866:
23866:
23866: _ForwardIterator2 __last2 = __first2;
23866: std::advance(__last2, std::distance(__first1, __last1));
23866: for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan)
23866: {
23866: if (__scan != std::__find_if(__first1, __scan,
23866: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)))
23866: continue;
23866:
23866: auto __matches
23866: = std::__count_if(__first2, __last2,
23866: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan));
23866: if (0 == __matches ||
23866: std::__count_if(__scan, __last1,
23866: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan))
23866: != __matches)
23866: return false;
23866: }
23866: return true;
23866: }
23866: # 2041 "/usr/include/c++/10/bits/stl_algobase.h" 3
23866: template<typename _ForwardIterator1, typename _ForwardIterator2>
23866:
23866: inline bool
23866: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
23866: _ForwardIterator2 __first2)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__is_permutation(__first1, __last1, __first2,
23866: __gnu_cxx::__ops::__iter_equal_to_iter());
23866: }
23866:
23866:
23866:
23866: }
23866: # 62 "/usr/include/c++/10/algorithm" 2 3
23866: # 1 "/usr/include/c++/10/bits/stl_algo.h" 1 3
23866: # 57 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: #define _STL_ALGO_H 1
23866:
23866: # 1 "/usr/include/c++/10/cstdlib" 1 3
23866: # 39 "/usr/include/c++/10/cstdlib" 3
23866:
23866: # 40 "/usr/include/c++/10/cstdlib" 3
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_CSTDLIB 1
23866: # 74 "/usr/include/c++/10/cstdlib" 3
23866: #define _GLIBCXX_INCLUDE_NEXT_C_HEADERS
23866: # 1 "/usr/include/stdlib.h" 1 3 4
23866: # 24 "/usr/include/stdlib.h" 3 4
23866: #define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4
23866: # 31 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 3 4
23866: #undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
23866:
23866:
23866:
23866:
23866:
23866: #undef __GLIBC_USE_LIB_EXT2
23866:
23866:
23866: #define __GLIBC_USE_LIB_EXT2 1
23866: # 49 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 3 4
23866: #undef __GLIBC_USE_IEC_60559_BFP_EXT
23866:
23866: #define __GLIBC_USE_IEC_60559_BFP_EXT 1
23866:
23866:
23866:
23866: #undef __GLIBC_USE_IEC_60559_BFP_EXT_C2X
23866:
23866: #define __GLIBC_USE_IEC_60559_BFP_EXT_C2X 1
23866: # 66 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 3 4
23866: #undef __GLIBC_USE_IEC_60559_FUNCS_EXT
23866:
23866: #define __GLIBC_USE_IEC_60559_FUNCS_EXT 1
23866:
23866:
23866:
23866: #undef __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X
23866:
23866: #define __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X 1
23866:
23866:
23866:
23866:
23866:
23866:
23866: #undef __GLIBC_USE_IEC_60559_TYPES_EXT
23866:
23866: #define __GLIBC_USE_IEC_60559_TYPES_EXT 1
23866: # 26 "/usr/include/stdlib.h" 2 3 4
23866:
23866:
23866: #define __need_size_t
23866: #define __need_wchar_t
23866: #define __need_NULL
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 1 3 4
23866: # 181 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #define __size_t__
23866: #define __SIZE_T__
23866: #define _SIZE_T
23866: #define _SYS_SIZE_T_H
23866: #define _T_SIZE_
23866: #define _T_SIZE
23866: #define __SIZE_T
23866: #define _SIZE_T_
23866: #define _BSD_SIZE_T_
23866: #define _SIZE_T_DEFINED_
23866: #define _SIZE_T_DEFINED
23866: #define _BSD_SIZE_T_DEFINED_
23866: #define _SIZE_T_DECLARED
23866: #define ___int_size_t_h
23866: #define _GCC_SIZE_T
23866: #define _SIZET_
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __size_t
23866:
23866:
23866:
23866:
23866:
23866: typedef unsigned int size_t;
23866: # 231 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_size_t
23866: # 260 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #define __wchar_t__
23866: #define __WCHAR_T__
23866: #define _WCHAR_T
23866: #define _T_WCHAR_
23866: #define _T_WCHAR
23866: #define __WCHAR_T
23866: #define _WCHAR_T_
23866: #define _BSD_WCHAR_T_
23866: #define _WCHAR_T_DEFINED_
23866: #define _WCHAR_T_DEFINED
23866: #define _WCHAR_T_H
23866: #define ___int_wchar_t_h
23866: #define __INT_WCHAR_T_H
23866: #define _GCC_WCHAR_T
23866: #define _WCHAR_T_DECLARED
23866: # 287 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef _BSD_WCHAR_T_
23866: # 340 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_wchar_t
23866: # 390 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef NULL
23866:
23866: #define NULL __null
23866: # 401 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_NULL
23866: # 32 "/usr/include/stdlib.h" 2 3 4
23866:
23866: extern "C" {
23866:
23866: #define _STDLIB_H 1
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/waitflags.h" 1 3 4
23866: # 25 "/usr/include/arm-linux-gnueabihf/bits/waitflags.h" 3 4
23866: #define WNOHANG 1
23866: #define WUNTRACED 2
23866:
23866:
23866:
23866: #define WSTOPPED 2
23866: #define WEXITED 4
23866: #define WCONTINUED 8
23866: #define WNOWAIT 0x01000000
23866:
23866:
23866: #define __WNOTHREAD 0x20000000
23866:
23866: #define __WALL 0x40000000
23866: #define __WCLONE 0x80000000
23866:
23866:
23866:
23866:
23866: #define __ENUM_IDTYPE_T 1
23866:
23866:
23866:
23866: #undef P_ALL
23866: #undef P_PID
23866: #undef P_PGID
23866:
23866: typedef enum
23866: {
23866: P_ALL,
23866: P_PID,
23866: P_PGID
23866: } idtype_t;
23866: # 40 "/usr/include/stdlib.h" 2 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/waitstatus.h" 1 3 4
23866: # 28 "/usr/include/arm-linux-gnueabihf/bits/waitstatus.h" 3 4
23866: #define __WEXITSTATUS(status) (((status) & 0xff00) >> 8)
23866:
23866:
23866: #define __WTERMSIG(status) ((status) & 0x7f)
23866:
23866:
23866: #define __WSTOPSIG(status) __WEXITSTATUS(status)
23866:
23866:
23866: #define __WIFEXITED(status) (__WTERMSIG(status) == 0)
23866:
23866:
23866: #define __WIFSIGNALED(status) (((signed char) (((status) & 0x7f) + 1) >> 1) > 0)
23866:
23866:
23866:
23866: #define __WIFSTOPPED(status) (((status) & 0xff) == 0x7f)
23866:
23866:
23866:
23866:
23866: #define __WIFCONTINUED(status) ((status) == __W_CONTINUED)
23866:
23866:
23866:
23866: #define __WCOREDUMP(status) ((status) & __WCOREFLAG)
23866:
23866:
23866: #define __W_EXITCODE(ret,sig) ((ret) << 8 | (sig))
23866: #define __W_STOPCODE(sig) ((sig) << 8 | 0x7f)
23866: #define __W_CONTINUED 0xffff
23866: #define __WCOREFLAG 0x80
23866: # 41 "/usr/include/stdlib.h" 2 3 4
23866:
23866:
23866: #define WEXITSTATUS(status) __WEXITSTATUS (status)
23866: #define WTERMSIG(status) __WTERMSIG (status)
23866: #define WSTOPSIG(status) __WSTOPSIG (status)
23866: #define WIFEXITED(status) __WIFEXITED (status)
23866: #define WIFSIGNALED(status) __WIFSIGNALED (status)
23866: #define WIFSTOPPED(status) __WIFSTOPPED (status)
23866:
23866: #define WIFCONTINUED(status) __WIFCONTINUED (status)
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 1 3 4
23866: # 22 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 3 4
23866: #define __HAVE_FLOAT128 0
23866:
23866:
23866:
23866: #define __HAVE_DISTINCT_FLOAT128 0
23866:
23866:
23866:
23866:
23866: #define __HAVE_FLOAT64X 0
23866:
23866:
23866:
23866:
23866:
23866: #define __HAVE_FLOAT64X_LONG_DOUBLE 0
23866:
23866:
23866:
23866:
23866:
23866:
23866: #undef __f128
23866:
23866:
23866:
23866: #undef __CFLOAT128
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn-common.h" 1 3 4
23866: # 21 "/usr/include/arm-linux-gnueabihf/bits/floatn-common.h" 3 4
23866: #define _BITS_FLOATN_COMMON_H
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/long-double.h" 1 3 4
23866: # 40 "/usr/include/arm-linux-gnueabihf/bits/long-double.h" 3 4
23866: #define __LONG_DOUBLE_USES_FLOAT128 0
23866: # 25 "/usr/include/arm-linux-gnueabihf/bits/floatn-common.h" 2 3 4
23866: # 34 "/usr/include/arm-linux-gnueabihf/bits/floatn-common.h" 3 4
23866: #define __HAVE_FLOAT16 0
23866: #define __HAVE_FLOAT32 1
23866: #define __HAVE_FLOAT64 1
23866: #define __HAVE_FLOAT32X 1
23866: #define __HAVE_FLOAT128X 0
23866: # 52 "/usr/include/arm-linux-gnueabihf/bits/floatn-common.h" 3 4
23866: #define __HAVE_DISTINCT_FLOAT16 __HAVE_FLOAT16
23866: #define __HAVE_DISTINCT_FLOAT32 0
23866: #define __HAVE_DISTINCT_FLOAT64 0
23866: #define __HAVE_DISTINCT_FLOAT32X 0
23866: #define __HAVE_DISTINCT_FLOAT64X 0
23866: #define __HAVE_DISTINCT_FLOAT128X __HAVE_FLOAT128X
23866:
23866:
23866:
23866:
23866:
23866: #define __HAVE_FLOAT128_UNLIKE_LDBL (__HAVE_DISTINCT_FLOAT128 && __LDBL_MANT_DIG__ != 113)
23866: # 72 "/usr/include/arm-linux-gnueabihf/bits/floatn-common.h" 3 4
23866: #define __HAVE_FLOATN_NOT_TYPEDEF 0
23866: # 91 "/usr/include/arm-linux-gnueabihf/bits/floatn-common.h" 3 4
23866: #define __f32(x) x ##f
23866: # 100 "/usr/include/arm-linux-gnueabihf/bits/floatn-common.h" 3 4
23866: #define __f64(x) x ##l
23866: # 111 "/usr/include/arm-linux-gnueabihf/bits/floatn-common.h" 3 4
23866: #define __f32x(x) x
23866: # 149 "/usr/include/arm-linux-gnueabihf/bits/floatn-common.h" 3 4
23866: #define __CFLOAT32 _Complex float
23866: # 158 "/usr/include/arm-linux-gnueabihf/bits/floatn-common.h" 3 4
23866: #define __CFLOAT64 _Complex long double
23866: # 169 "/usr/include/arm-linux-gnueabihf/bits/floatn-common.h" 3 4
23866: #define __CFLOAT32X _Complex double
23866: # 214 "/usr/include/arm-linux-gnueabihf/bits/floatn-common.h" 3 4
23866: typedef float _Float32;
23866: # 238 "/usr/include/arm-linux-gnueabihf/bits/floatn-common.h" 3 4
23866: typedef long double _Float64;
23866: # 268 "/usr/include/arm-linux-gnueabihf/bits/floatn-common.h" 3 4
23866: typedef double _Float32x;
23866: # 53 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 2 3 4
23866: # 56 "/usr/include/stdlib.h" 2 3 4
23866:
23866:
23866: typedef struct
23866: {
23866: int quot;
23866: int rem;
23866: } div_t;
23866:
23866:
23866:
23866: typedef struct
23866: {
23866: long int quot;
23866: long int rem;
23866: } ldiv_t;
23866: #define __ldiv_t_defined 1
23866:
23866:
23866:
23866:
23866: __extension__ typedef struct
23866: {
23866: long long int quot;
23866: long long int rem;
23866: } lldiv_t;
23866: #define __lldiv_t_defined 1
23866:
23866:
23866:
23866:
23866: #define RAND_MAX 2147483647
23866:
23866:
23866:
23866:
23866: #define EXIT_FAILURE 1
23866: #define EXIT_SUCCESS 0
23866:
23866:
23866:
23866: #define MB_CUR_MAX (__ctype_get_mb_cur_max ())
23866: extern size_t __ctype_get_mb_cur_max (void) throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866: extern double atof (const char *__nptr)
23866: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866:
23866: extern int atoi (const char *__nptr)
23866: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866:
23866: extern long int atol (const char *__nptr)
23866: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866: __extension__ extern long long int atoll (const char *__nptr)
23866: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866: extern double strtod (const char *__restrict __nptr,
23866: char **__restrict __endptr)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866: extern float strtof (const char *__restrict __nptr,
23866: char **__restrict __endptr) throw () __attribute__ ((__nonnull__ (1)));
23866:
23866: extern long double strtold (const char *__restrict __nptr,
23866: char **__restrict __endptr)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866: # 140 "/usr/include/stdlib.h" 3 4
23866: extern _Float32 strtof32 (const char *__restrict __nptr,
23866: char **__restrict __endptr)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866: extern _Float64 strtof64 (const char *__restrict __nptr,
23866: char **__restrict __endptr)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866: # 158 "/usr/include/stdlib.h" 3 4
23866: extern _Float32x strtof32x (const char *__restrict __nptr,
23866: char **__restrict __endptr)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866: # 176 "/usr/include/stdlib.h" 3 4
23866: extern long int strtol (const char *__restrict __nptr,
23866: char **__restrict __endptr, int __base)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866: extern unsigned long int strtoul (const char *__restrict __nptr,
23866: char **__restrict __endptr, int __base)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866: __extension__
23866: extern long long int strtoq (const char *__restrict __nptr,
23866: char **__restrict __endptr, int __base)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866: __extension__
23866: extern unsigned long long int strtouq (const char *__restrict __nptr,
23866: char **__restrict __endptr, int __base)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866:
23866: __extension__
23866: extern long long int strtoll (const char *__restrict __nptr,
23866: char **__restrict __endptr, int __base)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866: __extension__
23866: extern unsigned long long int strtoull (const char *__restrict __nptr,
23866: char **__restrict __endptr, int __base)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866:
23866: extern int strfromd (char *__dest, size_t __size, const char *__format,
23866: double __f)
23866: throw () __attribute__ ((__nonnull__ (3)));
23866:
23866: extern int strfromf (char *__dest, size_t __size, const char *__format,
23866: float __f)
23866: throw () __attribute__ ((__nonnull__ (3)));
23866:
23866: extern int strfroml (char *__dest, size_t __size, const char *__format,
23866: long double __f)
23866: throw () __attribute__ ((__nonnull__ (3)));
23866: # 232 "/usr/include/stdlib.h" 3 4
23866: extern int strfromf32 (char *__dest, size_t __size, const char * __format,
23866: _Float32 __f)
23866: throw () __attribute__ ((__nonnull__ (3)));
23866:
23866:
23866:
23866: extern int strfromf64 (char *__dest, size_t __size, const char * __format,
23866: _Float64 __f)
23866: throw () __attribute__ ((__nonnull__ (3)));
23866: # 250 "/usr/include/stdlib.h" 3 4
23866: extern int strfromf32x (char *__dest, size_t __size, const char * __format,
23866: _Float32x __f)
23866: throw () __attribute__ ((__nonnull__ (3)));
23866: # 272 "/usr/include/stdlib.h" 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/locale_t.h" 1 3 4
23866: # 20 "/usr/include/arm-linux-gnueabihf/bits/types/locale_t.h" 3 4
23866: #define _BITS_TYPES_LOCALE_T_H 1
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__locale_t.h" 1 3 4
23866: # 21 "/usr/include/arm-linux-gnueabihf/bits/types/__locale_t.h" 3 4
23866: #define _BITS_TYPES___LOCALE_T_H 1
23866:
23866:
23866:
23866:
23866:
23866:
23866: struct __locale_struct
23866: {
23866:
23866: struct __locale_data *__locales[13];
23866:
23866:
23866: const unsigned short int *__ctype_b;
23866: const int *__ctype_tolower;
23866: const int *__ctype_toupper;
23866:
23866:
23866: const char *__names[13];
23866: };
23866:
23866: typedef struct __locale_struct *__locale_t;
23866: # 23 "/usr/include/arm-linux-gnueabihf/bits/types/locale_t.h" 2 3 4
23866:
23866: typedef __locale_t locale_t;
23866: # 273 "/usr/include/stdlib.h" 2 3 4
23866:
23866: extern long int strtol_l (const char *__restrict __nptr,
23866: char **__restrict __endptr, int __base,
23866: locale_t __loc) throw () __attribute__ ((__nonnull__ (1, 4)));
23866:
23866: extern unsigned long int strtoul_l (const char *__restrict __nptr,
23866: char **__restrict __endptr,
23866: int __base, locale_t __loc)
23866: throw () __attribute__ ((__nonnull__ (1, 4)));
23866:
23866: __extension__
23866: extern long long int strtoll_l (const char *__restrict __nptr,
23866: char **__restrict __endptr, int __base,
23866: locale_t __loc)
23866: throw () __attribute__ ((__nonnull__ (1, 4)));
23866:
23866: __extension__
23866: extern unsigned long long int strtoull_l (const char *__restrict __nptr,
23866: char **__restrict __endptr,
23866: int __base, locale_t __loc)
23866: throw () __attribute__ ((__nonnull__ (1, 4)));
23866:
23866: extern double strtod_l (const char *__restrict __nptr,
23866: char **__restrict __endptr, locale_t __loc)
23866: throw () __attribute__ ((__nonnull__ (1, 3)));
23866:
23866: extern float strtof_l (const char *__restrict __nptr,
23866: char **__restrict __endptr, locale_t __loc)
23866: throw () __attribute__ ((__nonnull__ (1, 3)));
23866:
23866: extern long double strtold_l (const char *__restrict __nptr,
23866: char **__restrict __endptr,
23866: locale_t __loc)
23866: throw () __attribute__ ((__nonnull__ (1, 3)));
23866: # 316 "/usr/include/stdlib.h" 3 4
23866: extern _Float32 strtof32_l (const char *__restrict __nptr,
23866: char **__restrict __endptr,
23866: locale_t __loc)
23866: throw () __attribute__ ((__nonnull__ (1, 3)));
23866:
23866:
23866:
23866: extern _Float64 strtof64_l (const char *__restrict __nptr,
23866: char **__restrict __endptr,
23866: locale_t __loc)
23866: throw () __attribute__ ((__nonnull__ (1, 3)));
23866: # 337 "/usr/include/stdlib.h" 3 4
23866: extern _Float32x strtof32x_l (const char *__restrict __nptr,
23866: char **__restrict __endptr,
23866: locale_t __loc)
23866: throw () __attribute__ ((__nonnull__ (1, 3)));
23866: # 360 "/usr/include/stdlib.h" 3 4
23866: extern __inline __attribute__ ((__gnu_inline__)) int
23866: __attribute__ ((__leaf__)) atoi (const char *__nptr) throw ()
23866: {
23866: return (int) strtol (__nptr, (char **) __null, 10);
23866: }
23866: extern __inline __attribute__ ((__gnu_inline__)) long int
23866: __attribute__ ((__leaf__)) atol (const char *__nptr) throw ()
23866: {
23866: return strtol (__nptr, (char **) __null, 10);
23866: }
23866:
23866:
23866: __extension__ extern __inline __attribute__ ((__gnu_inline__)) long long int
23866: __attribute__ ((__leaf__)) atoll (const char *__nptr) throw ()
23866: {
23866: return strtoll (__nptr, (char **) __null, 10);
23866: }
23866: # 385 "/usr/include/stdlib.h" 3 4
23866: extern char *l64a (long int __n) throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866: extern long int a64l (const char *__s)
23866: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/sys/types.h" 1 3 4
23866: # 23 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4
23866: #define _SYS_TYPES_H 1
23866:
23866:
23866:
23866: extern "C" {
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/types.h" 1 3 4
23866: # 24 "/usr/include/arm-linux-gnueabihf/bits/types.h" 3 4
23866: #define _BITS_TYPES_H 1
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4
23866: # 18 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 3 4
23866: #define __WORDSIZE 32
23866: #define __WORDSIZE_TIME64_COMPAT32 0
23866: #define __WORDSIZE32_SIZE_ULONG 0
23866: #define __WORDSIZE32_PTRDIFF_LONG 0
23866: # 28 "/usr/include/arm-linux-gnueabihf/bits/types.h" 2 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/timesize.h" 1 3 4
23866: # 19 "/usr/include/arm-linux-gnueabihf/bits/timesize.h" 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4
23866: # 18 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 3 4
23866: #define __WORDSIZE 32
23866: #define __WORDSIZE_TIME64_COMPAT32 0
23866: #define __WORDSIZE32_SIZE_ULONG 0
23866: #define __WORDSIZE32_PTRDIFF_LONG 0
23866: # 20 "/usr/include/arm-linux-gnueabihf/bits/timesize.h" 2 3 4
23866:
23866:
23866: #define __TIMESIZE __WORDSIZE
23866: # 29 "/usr/include/arm-linux-gnueabihf/bits/types.h" 2 3 4
23866:
23866:
23866: typedef unsigned char __u_char;
23866: typedef unsigned short int __u_short;
23866: typedef unsigned int __u_int;
23866: typedef unsigned long int __u_long;
23866:
23866:
23866: typedef signed char __int8_t;
23866: typedef unsigned char __uint8_t;
23866: typedef signed short int __int16_t;
23866: typedef unsigned short int __uint16_t;
23866: typedef signed int __int32_t;
23866: typedef unsigned int __uint32_t;
23866:
23866:
23866:
23866:
23866: __extension__ typedef signed long long int __int64_t;
23866: __extension__ typedef unsigned long long int __uint64_t;
23866:
23866:
23866:
23866: typedef __int8_t __int_least8_t;
23866: typedef __uint8_t __uint_least8_t;
23866: typedef __int16_t __int_least16_t;
23866: typedef __uint16_t __uint_least16_t;
23866: typedef __int32_t __int_least32_t;
23866: typedef __uint32_t __uint_least32_t;
23866: typedef __int64_t __int_least64_t;
23866: typedef __uint64_t __uint_least64_t;
23866:
23866:
23866:
23866:
23866:
23866:
23866: __extension__ typedef long long int __quad_t;
23866: __extension__ typedef unsigned long long int __u_quad_t;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: __extension__ typedef long long int __intmax_t;
23866: __extension__ typedef unsigned long long int __uintmax_t;
23866: # 109 "/usr/include/arm-linux-gnueabihf/bits/types.h" 3 4
23866: #define __S16_TYPE short int
23866: #define __U16_TYPE unsigned short int
23866: #define __S32_TYPE int
23866: #define __U32_TYPE unsigned int
23866: #define __SLONGWORD_TYPE long int
23866: #define __ULONGWORD_TYPE unsigned long int
23866:
23866: #define __SQUAD_TYPE __int64_t
23866: #define __UQUAD_TYPE __uint64_t
23866: #define __SWORD_TYPE int
23866: #define __UWORD_TYPE unsigned int
23866: #define __SLONG32_TYPE long int
23866: #define __ULONG32_TYPE unsigned long int
23866: #define __S64_TYPE __int64_t
23866: #define __U64_TYPE __uint64_t
23866:
23866:
23866: #define __STD_TYPE __extension__ typedef
23866: # 141 "/usr/include/arm-linux-gnueabihf/bits/types.h" 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/typesizes.h" 1 3 4
23866: # 24 "/usr/include/arm-linux-gnueabihf/bits/typesizes.h" 3 4
23866: #define _BITS_TYPESIZES_H 1
23866:
23866:
23866:
23866:
23866: #define __DEV_T_TYPE __UQUAD_TYPE
23866: #define __UID_T_TYPE __U32_TYPE
23866: #define __GID_T_TYPE __U32_TYPE
23866: #define __INO_T_TYPE __ULONGWORD_TYPE
23866: #define __INO64_T_TYPE __UQUAD_TYPE
23866: #define __MODE_T_TYPE __U32_TYPE
23866: #define __NLINK_T_TYPE __UWORD_TYPE
23866: #define __OFF_T_TYPE __SLONGWORD_TYPE
23866: #define __OFF64_T_TYPE __SQUAD_TYPE
23866: #define __PID_T_TYPE __S32_TYPE
23866: #define __RLIM_T_TYPE __ULONGWORD_TYPE
23866: #define __RLIM64_T_TYPE __UQUAD_TYPE
23866: #define __BLKCNT_T_TYPE __SLONGWORD_TYPE
23866: #define __BLKCNT64_T_TYPE __SQUAD_TYPE
23866: #define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
23866: #define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
23866: #define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
23866: #define __FSFILCNT64_T_TYPE __UQUAD_TYPE
23866: #define __FSWORD_T_TYPE __SWORD_TYPE
23866: #define __ID_T_TYPE __U32_TYPE
23866: #define __CLOCK_T_TYPE __SLONGWORD_TYPE
23866: #define __TIME_T_TYPE __SLONGWORD_TYPE
23866: #define __USECONDS_T_TYPE __U32_TYPE
23866: #define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
23866: #define __DADDR_T_TYPE __S32_TYPE
23866: #define __KEY_T_TYPE __S32_TYPE
23866: #define __CLOCKID_T_TYPE __S32_TYPE
23866: #define __TIMER_T_TYPE void *
23866: #define __BLKSIZE_T_TYPE __SLONGWORD_TYPE
23866: #define __FSID_T_TYPE struct { int __val[2]; }
23866: #define __SSIZE_T_TYPE __SWORD_TYPE
23866: #define __SYSCALL_SLONG_TYPE __SLONGWORD_TYPE
23866: #define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE
23866: #define __CPU_MASK_TYPE __ULONGWORD_TYPE
23866: # 79 "/usr/include/arm-linux-gnueabihf/bits/typesizes.h" 3 4
23866: #define __RLIM_T_MATCHES_RLIM64_T 0
23866:
23866: #define __STATFS_MATCHES_STATFS64 0
23866:
23866:
23866:
23866: #define __FD_SETSIZE 1024
23866: # 142 "/usr/include/arm-linux-gnueabihf/bits/types.h" 2 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/time64.h" 1 3 4
23866: # 24 "/usr/include/arm-linux-gnueabihf/bits/time64.h" 3 4
23866: #define _BITS_TIME64_H 1
23866: # 33 "/usr/include/arm-linux-gnueabihf/bits/time64.h" 3 4
23866: #define __TIME64_T_TYPE __SQUAD_TYPE
23866: # 143 "/usr/include/arm-linux-gnueabihf/bits/types.h" 2 3 4
23866:
23866:
23866: __extension__ typedef __uint64_t __dev_t;
23866: __extension__ typedef unsigned int __uid_t;
23866: __extension__ typedef unsigned int __gid_t;
23866: __extension__ typedef unsigned long int __ino_t;
23866: __extension__ typedef __uint64_t __ino64_t;
23866: __extension__ typedef unsigned int __mode_t;
23866: __extension__ typedef unsigned int __nlink_t;
23866: __extension__ typedef long int __off_t;
23866: __extension__ typedef __int64_t __off64_t;
23866: __extension__ typedef int __pid_t;
23866: __extension__ typedef struct { int __val[2]; } __fsid_t;
23866: __extension__ typedef long int __clock_t;
23866: __extension__ typedef unsigned long int __rlim_t;
23866: __extension__ typedef __uint64_t __rlim64_t;
23866: __extension__ typedef unsigned int __id_t;
23866: __extension__ typedef long int __time_t;
23866: __extension__ typedef unsigned int __useconds_t;
23866: __extension__ typedef long int __suseconds_t;
23866:
23866: __extension__ typedef int __daddr_t;
23866: __extension__ typedef int __key_t;
23866:
23866:
23866: __extension__ typedef int __clockid_t;
23866:
23866:
23866: __extension__ typedef void * __timer_t;
23866:
23866:
23866: __extension__ typedef long int __blksize_t;
23866:
23866:
23866:
23866:
23866: __extension__ typedef long int __blkcnt_t;
23866: __extension__ typedef __int64_t __blkcnt64_t;
23866:
23866:
23866: __extension__ typedef unsigned long int __fsblkcnt_t;
23866: __extension__ typedef __uint64_t __fsblkcnt64_t;
23866:
23866:
23866: __extension__ typedef unsigned long int __fsfilcnt_t;
23866: __extension__ typedef __uint64_t __fsfilcnt64_t;
23866:
23866:
23866: __extension__ typedef int __fsword_t;
23866:
23866: __extension__ typedef int __ssize_t;
23866:
23866:
23866: __extension__ typedef long int __syscall_slong_t;
23866:
23866: __extension__ typedef unsigned long int __syscall_ulong_t;
23866:
23866:
23866:
23866: typedef __off64_t __loff_t;
23866: typedef char *__caddr_t;
23866:
23866:
23866: __extension__ typedef int __intptr_t;
23866:
23866:
23866: __extension__ typedef unsigned int __socklen_t;
23866:
23866:
23866:
23866:
23866: typedef int __sig_atomic_t;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: __extension__ typedef __int64_t __time64_t;
23866:
23866:
23866: #undef __STD_TYPE
23866: # 30 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4
23866:
23866:
23866:
23866: typedef __u_char u_char;
23866: typedef __u_short u_short;
23866: typedef __u_int u_int;
23866: typedef __u_long u_long;
23866: typedef __quad_t quad_t;
23866: typedef __u_quad_t u_quad_t;
23866: typedef __fsid_t fsid_t;
23866: #define __u_char_defined
23866:
23866: typedef __loff_t loff_t;
23866:
23866:
23866:
23866:
23866:
23866:
23866: typedef __ino64_t ino_t;
23866:
23866: #define __ino_t_defined
23866:
23866:
23866: typedef __ino64_t ino64_t;
23866: #define __ino64_t_defined
23866:
23866:
23866:
23866: typedef __dev_t dev_t;
23866: #define __dev_t_defined
23866:
23866:
23866:
23866: typedef __gid_t gid_t;
23866: #define __gid_t_defined
23866:
23866:
23866:
23866: typedef __mode_t mode_t;
23866: #define __mode_t_defined
23866:
23866:
23866:
23866: typedef __nlink_t nlink_t;
23866: #define __nlink_t_defined
23866:
23866:
23866:
23866: typedef __uid_t uid_t;
23866: #define __uid_t_defined
23866:
23866:
23866:
23866:
23866:
23866:
23866: typedef __off64_t off_t;
23866:
23866: #define __off_t_defined
23866:
23866:
23866: typedef __off64_t off64_t;
23866: #define __off64_t_defined
23866:
23866:
23866:
23866: typedef __pid_t pid_t;
23866: #define __pid_t_defined
23866:
23866:
23866:
23866:
23866: typedef __id_t id_t;
23866: #define __id_t_defined
23866:
23866:
23866:
23866: typedef __ssize_t ssize_t;
23866: #define __ssize_t_defined
23866:
23866:
23866:
23866:
23866: typedef __daddr_t daddr_t;
23866: typedef __caddr_t caddr_t;
23866: #define __daddr_t_defined
23866:
23866:
23866:
23866:
23866: typedef __key_t key_t;
23866: #define __key_t_defined
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/clock_t.h" 1 3 4
23866:
23866: #define __clock_t_defined 1
23866:
23866:
23866:
23866:
23866: typedef __clock_t clock_t;
23866: # 127 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/clockid_t.h" 1 3 4
23866:
23866: #define __clockid_t_defined 1
23866:
23866:
23866:
23866:
23866: typedef __clockid_t clockid_t;
23866: # 129 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/time_t.h" 1 3 4
23866:
23866: #define __time_t_defined 1
23866:
23866:
23866:
23866:
23866: typedef __time_t time_t;
23866: # 130 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/timer_t.h" 1 3 4
23866:
23866: #define __timer_t_defined 1
23866:
23866:
23866:
23866:
23866: typedef __timer_t timer_t;
23866: # 131 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4
23866:
23866:
23866:
23866: typedef __useconds_t useconds_t;
23866: #define __useconds_t_defined
23866:
23866:
23866: typedef __suseconds_t suseconds_t;
23866: #define __suseconds_t_defined
23866:
23866:
23866:
23866: #define __need_size_t
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 1 3 4
23866: # 231 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_size_t
23866: # 401 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_NULL
23866: # 145 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4
23866:
23866:
23866:
23866: typedef unsigned long int ulong;
23866: typedef unsigned short int ushort;
23866: typedef unsigned int uint;
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdint-intn.h" 1 3 4
23866: # 20 "/usr/include/arm-linux-gnueabihf/bits/stdint-intn.h" 3 4
23866: #define _BITS_STDINT_INTN_H 1
23866:
23866:
23866:
23866: typedef __int8_t int8_t;
23866: typedef __int16_t int16_t;
23866: typedef __int32_t int32_t;
23866: typedef __int64_t int64_t;
23866: # 156 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4
23866:
23866:
23866: typedef __uint8_t u_int8_t;
23866: typedef __uint16_t u_int16_t;
23866: typedef __uint32_t u_int32_t;
23866: typedef __uint64_t u_int64_t;
23866:
23866:
23866: typedef int register_t __attribute__ ((__mode__ (__word__)));
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __BIT_TYPES_DEFINED__ 1
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/endian.h" 1 3 4
23866: # 19 "/usr/include/endian.h" 3 4
23866: #define _ENDIAN_H 1
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/endian.h" 1 3 4
23866: # 20 "/usr/include/arm-linux-gnueabihf/bits/endian.h" 3 4
23866: #define _BITS_ENDIAN_H 1
23866: # 30 "/usr/include/arm-linux-gnueabihf/bits/endian.h" 3 4
23866: #define __LITTLE_ENDIAN 1234
23866: #define __BIG_ENDIAN 4321
23866: #define __PDP_ENDIAN 3412
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/endianness.h" 1 3 4
23866:
23866: #define _BITS_ENDIANNESS_H 1
23866: # 12 "/usr/include/arm-linux-gnueabihf/bits/endianness.h" 3 4
23866: #define __BYTE_ORDER __LITTLE_ENDIAN
23866: # 36 "/usr/include/arm-linux-gnueabihf/bits/endian.h" 2 3 4
23866:
23866:
23866:
23866:
23866: #define __FLOAT_WORD_ORDER __BYTE_ORDER
23866:
23866:
23866:
23866: #define __LONG_LONG_PAIR(HI,LO) LO, HI
23866: # 25 "/usr/include/endian.h" 2 3 4
23866:
23866:
23866: #define LITTLE_ENDIAN __LITTLE_ENDIAN
23866: #define BIG_ENDIAN __BIG_ENDIAN
23866: #define PDP_ENDIAN __PDP_ENDIAN
23866: #define BYTE_ORDER __BYTE_ORDER
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/byteswap.h" 1 3 4
23866: # 24 "/usr/include/arm-linux-gnueabihf/bits/byteswap.h" 3 4
23866: #define _BITS_BYTESWAP_H 1
23866:
23866:
23866:
23866:
23866:
23866: #define __bswap_constant_16(x) ((__uint16_t) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)))
23866:
23866:
23866: static __inline __uint16_t
23866: __bswap_16 (__uint16_t __bsx)
23866: {
23866:
23866: return __builtin_bswap16 (__bsx);
23866:
23866:
23866:
23866: }
23866:
23866:
23866: #define __bswap_constant_32(x) ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >> 8) | (((x) & 0x0000ff00u) << 8) | (((x) & 0x000000ffu) << 24))
23866:
23866:
23866:
23866: static __inline __uint32_t
23866: __bswap_32 (__uint32_t __bsx)
23866: {
23866:
23866: return __builtin_bswap32 (__bsx);
23866:
23866:
23866:
23866: }
23866:
23866:
23866: #define __bswap_constant_64(x) ((((x) & 0xff00000000000000ull) >> 56) | (((x) & 0x00ff000000000000ull) >> 40) | (((x) & 0x0000ff0000000000ull) >> 24) | (((x) & 0x000000ff00000000ull) >> 8) | (((x) & 0x00000000ff000000ull) << 8) | (((x) & 0x0000000000ff0000ull) << 24) | (((x) & 0x000000000000ff00ull) << 40) | (((x) & 0x00000000000000ffull) << 56))
23866: # 69 "/usr/include/arm-linux-gnueabihf/bits/byteswap.h" 3 4
23866: __extension__ static __inline __uint64_t
23866: __bswap_64 (__uint64_t __bsx)
23866: {
23866:
23866: return __builtin_bswap64 (__bsx);
23866:
23866:
23866:
23866: }
23866: # 36 "/usr/include/endian.h" 2 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/uintn-identity.h" 1 3 4
23866: # 24 "/usr/include/arm-linux-gnueabihf/bits/uintn-identity.h" 3 4
23866: #define _BITS_UINTN_IDENTITY_H 1
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: static __inline __uint16_t
23866: __uint16_identity (__uint16_t __x)
23866: {
23866: return __x;
23866: }
23866:
23866: static __inline __uint32_t
23866: __uint32_identity (__uint32_t __x)
23866: {
23866: return __x;
23866: }
23866:
23866: static __inline __uint64_t
23866: __uint64_identity (__uint64_t __x)
23866: {
23866: return __x;
23866: }
23866: # 37 "/usr/include/endian.h" 2 3 4
23866:
23866:
23866: #define htobe16(x) __bswap_16 (x)
23866: #define htole16(x) __uint16_identity (x)
23866: #define be16toh(x) __bswap_16 (x)
23866: #define le16toh(x) __uint16_identity (x)
23866:
23866: #define htobe32(x) __bswap_32 (x)
23866: #define htole32(x) __uint32_identity (x)
23866: #define be32toh(x) __bswap_32 (x)
23866: #define le32toh(x) __uint32_identity (x)
23866:
23866: #define htobe64(x) __bswap_64 (x)
23866: #define htole64(x) __uint64_identity (x)
23866: #define be64toh(x) __bswap_64 (x)
23866: #define le64toh(x) __uint64_identity (x)
23866: # 177 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/sys/select.h" 1 3 4
23866: # 22 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4
23866: #define _SYS_SELECT_H 1
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/select.h" 1 3 4
23866: # 25 "/usr/include/arm-linux-gnueabihf/bits/select.h" 3 4
23866: #define __FD_ZERO(s) do { unsigned int __i; fd_set *__arr = (s); for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) __FDS_BITS (__arr)[__i] = 0; } while (0)
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __FD_SET(d,s) ((void) (__FDS_BITS (s)[__FD_ELT(d)] |= __FD_MASK(d)))
23866:
23866: #define __FD_CLR(d,s) ((void) (__FDS_BITS (s)[__FD_ELT(d)] &= ~__FD_MASK(d)))
23866:
23866: #define __FD_ISSET(d,s) ((__FDS_BITS (s)[__FD_ELT (d)] & __FD_MASK (d)) != 0)
23866: # 31 "/usr/include/arm-linux-gnueabihf/sys/select.h" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/sigset_t.h" 1 3 4
23866:
23866: #define __sigset_t_defined 1
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__sigset_t.h" 1 3 4
23866:
23866: #define ____sigset_t_defined
23866:
23866: #define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int)))
23866: typedef struct
23866: {
23866: unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
23866: } __sigset_t;
23866: # 5 "/usr/include/arm-linux-gnueabihf/bits/types/sigset_t.h" 2 3 4
23866:
23866:
23866: typedef __sigset_t sigset_t;
23866: # 34 "/usr/include/arm-linux-gnueabihf/sys/select.h" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_timeval.h" 1 3 4
23866:
23866: #define __timeval_defined 1
23866:
23866:
23866:
23866:
23866:
23866: struct timeval
23866: {
23866: __time_t tv_sec;
23866: __suseconds_t tv_usec;
23866: };
23866: # 38 "/usr/include/arm-linux-gnueabihf/sys/select.h" 2 3 4
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_timespec.h" 1 3 4
23866:
23866:
23866: #define _STRUCT_TIMESPEC 1
23866:
23866:
23866:
23866:
23866:
23866:
23866: struct timespec
23866: {
23866: __time_t tv_sec;
23866:
23866:
23866:
23866: __syscall_slong_t tv_nsec;
23866: # 26 "/usr/include/arm-linux-gnueabihf/bits/types/struct_timespec.h" 3 4
23866: };
23866: # 40 "/usr/include/arm-linux-gnueabihf/sys/select.h" 2 3 4
23866: # 49 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4
23866: typedef long int __fd_mask;
23866:
23866:
23866: #undef __NFDBITS
23866:
23866: #define __NFDBITS (8 * (int) sizeof (__fd_mask))
23866: #define __FD_ELT(d) ((d) / __NFDBITS)
23866: #define __FD_MASK(d) ((__fd_mask) (1UL << ((d) % __NFDBITS)))
23866:
23866:
23866: typedef struct
23866: {
23866:
23866:
23866:
23866: __fd_mask fds_bits[1024 / (8 * (int) sizeof (__fd_mask))];
23866: #define __FDS_BITS(set) ((set)->fds_bits)
23866:
23866:
23866:
23866:
23866: } fd_set;
23866:
23866:
23866: #define FD_SETSIZE __FD_SETSIZE
23866:
23866:
23866:
23866: typedef __fd_mask fd_mask;
23866:
23866:
23866: #define NFDBITS __NFDBITS
23866:
23866:
23866:
23866:
23866: #define FD_SET(fd,fdsetp) __FD_SET (fd, fdsetp)
23866: #define FD_CLR(fd,fdsetp) __FD_CLR (fd, fdsetp)
23866: #define FD_ISSET(fd,fdsetp) __FD_ISSET (fd, fdsetp)
23866: #define FD_ZERO(fdsetp) __FD_ZERO (fdsetp)
23866:
23866:
23866: extern "C" {
23866: # 101 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4
23866: extern int select (int __nfds, fd_set *__restrict __readfds,
23866: fd_set *__restrict __writefds,
23866: fd_set *__restrict __exceptfds,
23866: struct timeval *__restrict __timeout);
23866: # 113 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4
23866: extern int pselect (int __nfds, fd_set *__restrict __readfds,
23866: fd_set *__restrict __writefds,
23866: fd_set *__restrict __exceptfds,
23866: const struct timespec *__restrict __timeout,
23866: const __sigset_t *__restrict __sigmask);
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/select2.h" 1 3 4
23866: # 24 "/usr/include/arm-linux-gnueabihf/bits/select2.h" 3 4
23866: extern long int __fdelt_chk (long int __d);
23866: extern long int __fdelt_warn (long int __d)
23866: __attribute__((__warning__ ("bit outside of fd_set selected")));
23866: #undef __FD_ELT
23866: #define __FD_ELT(d) __extension__ ({ long int __d = (d); (__builtin_constant_p (__d) ? (0 <= __d && __d < __FD_SETSIZE ? (__d / __NFDBITS) : __fdelt_warn (__d)) : __fdelt_chk (__d)); })
23866: # 124 "/usr/include/arm-linux-gnueabihf/sys/select.h" 2 3 4
23866:
23866:
23866: }
23866: # 180 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: typedef __blksize_t blksize_t;
23866: #define __blksize_t_defined
23866: # 205 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4
23866: typedef __blkcnt64_t blkcnt_t;
23866: #define __blkcnt_t_defined
23866:
23866:
23866: typedef __fsblkcnt64_t fsblkcnt_t;
23866: #define __fsblkcnt_t_defined
23866:
23866:
23866: typedef __fsfilcnt64_t fsfilcnt_t;
23866: #define __fsfilcnt_t_defined
23866:
23866:
23866:
23866:
23866: typedef __blkcnt64_t blkcnt64_t;
23866: typedef __fsblkcnt64_t fsblkcnt64_t;
23866: typedef __fsfilcnt64_t fsfilcnt64_t;
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h" 1 3 4
23866: # 20 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h" 3 4
23866: #define _BITS_PTHREADTYPES_COMMON_H 1
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 1 3 4
23866: # 20 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 3 4
23866: #define _THREAD_SHARED_TYPES_H 1
23866: # 44 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes-arch.h" 1 3 4
23866: # 21 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes-arch.h" 3 4
23866: #define _BITS_PTHREADTYPES_ARCH_H 1
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4
23866: # 18 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 3 4
23866: #define __WORDSIZE 32
23866: #define __WORDSIZE_TIME64_COMPAT32 0
23866: #define __WORDSIZE32_SIZE_ULONG 0
23866: #define __WORDSIZE32_PTRDIFF_LONG 0
23866: # 24 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes-arch.h" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __SIZEOF_PTHREAD_ATTR_T 36
23866: #define __SIZEOF_PTHREAD_MUTEX_T 24
23866: #define __SIZEOF_PTHREAD_RWLOCK_T 32
23866: #define __SIZEOF_PTHREAD_BARRIER_T 20
23866:
23866: #define __SIZEOF_PTHREAD_MUTEXATTR_T 4
23866: #define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
23866: #define __SIZEOF_PTHREAD_BARRIERATTR_T 4
23866: #define __SIZEOF_PTHREAD_COND_T 48
23866: #define __SIZEOF_PTHREAD_CONDATTR_T 4
23866:
23866: #define __LOCK_ALIGNMENT
23866: #define __ONCE_ALIGNMENT
23866: # 45 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 2 3 4
23866:
23866:
23866:
23866:
23866: typedef struct __pthread_internal_list
23866: {
23866: struct __pthread_internal_list *__prev;
23866: struct __pthread_internal_list *__next;
23866: } __pthread_list_t;
23866:
23866: typedef struct __pthread_internal_slist
23866: {
23866: struct __pthread_internal_slist *__next;
23866: } __pthread_slist_t;
23866: # 74 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/struct_mutex.h" 1 3 4
23866: # 20 "/usr/include/arm-linux-gnueabihf/bits/struct_mutex.h" 3 4
23866: #define _THREAD_MUTEX_INTERNAL_H 1
23866:
23866:
23866:
23866:
23866:
23866:
23866: struct __pthread_mutex_s
23866: {
23866: int __lock ;
23866: unsigned int __count;
23866: int __owner;
23866: # 58 "/usr/include/arm-linux-gnueabihf/bits/struct_mutex.h" 3 4
23866: int __kind;
23866:
23866: unsigned int __nusers;
23866:
23866:
23866:
23866:
23866:
23866:
23866: __extension__ union
23866: {
23866: int __spins;
23866: __pthread_slist_t __list;
23866: };
23866: #define __PTHREAD_MUTEX_HAVE_PREV 0
23866:
23866: };
23866:
23866:
23866:
23866:
23866:
23866: #define __PTHREAD_MUTEX_INITIALIZER(__kind) 0, 0, 0, __kind, 0, { 0 }
23866: # 75 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 2 3 4
23866: # 87 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/struct_rwlock.h" 1 3 4
23866: # 20 "/usr/include/arm-linux-gnueabihf/bits/struct_rwlock.h" 3 4
23866: #define __RWLOCK_INTERNAL_H
23866: # 29 "/usr/include/arm-linux-gnueabihf/bits/struct_rwlock.h" 3 4
23866: struct __pthread_rwlock_arch_t
23866: {
23866: unsigned int __readers;
23866: unsigned int __writers;
23866: unsigned int __wrphase_futex;
23866: unsigned int __writers_futex;
23866: unsigned int __pad3;
23866: unsigned int __pad4;
23866: # 45 "/usr/include/arm-linux-gnueabihf/bits/struct_rwlock.h" 3 4
23866: unsigned char __flags;
23866: unsigned char __shared;
23866: unsigned char __pad1;
23866: unsigned char __pad2;
23866:
23866: int __cur_writer;
23866: };
23866:
23866:
23866:
23866:
23866:
23866: #define __PTHREAD_RWLOCK_INITIALIZER(__flags) 0, 0, 0, 0, 0, 0, __flags, 0, 0, 0, 0
23866: # 88 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 2 3 4
23866:
23866:
23866:
23866:
23866: struct __pthread_cond_s
23866: {
23866: __extension__ union
23866: {
23866: __extension__ unsigned long long int __wseq;
23866: struct
23866: {
23866: unsigned int __low;
23866: unsigned int __high;
23866: } __wseq32;
23866: };
23866: __extension__ union
23866: {
23866: __extension__ unsigned long long int __g1_start;
23866: struct
23866: {
23866: unsigned int __low;
23866: unsigned int __high;
23866: } __g1_start32;
23866: };
23866: unsigned int __g_refs[2] ;
23866: unsigned int __g_size[2];
23866: unsigned int __g1_orig_size;
23866: unsigned int __wrefs;
23866: unsigned int __g_signals[2];
23866: };
23866: # 24 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h" 2 3 4
23866:
23866:
23866:
23866: typedef unsigned long int pthread_t;
23866:
23866:
23866:
23866:
23866: typedef union
23866: {
23866: char __size[4];
23866: int __align;
23866: } pthread_mutexattr_t;
23866:
23866:
23866:
23866:
23866: typedef union
23866: {
23866: char __size[4];
23866: int __align;
23866: } pthread_condattr_t;
23866:
23866:
23866:
23866: typedef unsigned int pthread_key_t;
23866:
23866:
23866:
23866: typedef int pthread_once_t;
23866:
23866:
23866: union pthread_attr_t
23866: {
23866: char __size[36];
23866: long int __align;
23866: };
23866:
23866: typedef union pthread_attr_t pthread_attr_t;
23866: #define __have_pthread_attr_t 1
23866:
23866:
23866:
23866: typedef union
23866: {
23866: struct __pthread_mutex_s __data;
23866: char __size[24];
23866: long int __align;
23866: } pthread_mutex_t;
23866:
23866:
23866: typedef union
23866: {
23866: struct __pthread_cond_s __data;
23866: char __size[48];
23866: __extension__ long long int __align;
23866: } pthread_cond_t;
23866:
23866:
23866:
23866:
23866:
23866: typedef union
23866: {
23866: struct __pthread_rwlock_arch_t __data;
23866: char __size[32];
23866: long int __align;
23866: } pthread_rwlock_t;
23866:
23866: typedef union
23866: {
23866: char __size[8];
23866: long int __align;
23866: } pthread_rwlockattr_t;
23866:
23866:
23866:
23866:
23866:
23866: typedef volatile int pthread_spinlock_t;
23866:
23866:
23866:
23866:
23866: typedef union
23866: {
23866: char __size[20];
23866: long int __align;
23866: } pthread_barrier_t;
23866:
23866: typedef union
23866: {
23866: char __size[4];
23866: int __align;
23866: } pthread_barrierattr_t;
23866: # 228 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4
23866:
23866:
23866: }
23866: # 395 "/usr/include/stdlib.h" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern long int random (void) throw ();
23866:
23866:
23866: extern void srandom (unsigned int __seed) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern char *initstate (unsigned int __seed, char *__statebuf,
23866: size_t __statelen) throw () __attribute__ ((__nonnull__ (2)));
23866:
23866:
23866:
23866: extern char *setstate (char *__statebuf) throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: struct random_data
23866: {
23866: int32_t *fptr;
23866: int32_t *rptr;
23866: int32_t *state;
23866: int rand_type;
23866: int rand_deg;
23866: int rand_sep;
23866: int32_t *end_ptr;
23866: };
23866:
23866: extern int random_r (struct random_data *__restrict __buf,
23866: int32_t *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866: extern int srandom_r (unsigned int __seed, struct random_data *__buf)
23866: throw () __attribute__ ((__nonnull__ (2)));
23866:
23866: extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
23866: size_t __statelen,
23866: struct random_data *__restrict __buf)
23866: throw () __attribute__ ((__nonnull__ (2, 4)));
23866:
23866: extern int setstate_r (char *__restrict __statebuf,
23866: struct random_data *__restrict __buf)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866:
23866:
23866:
23866: extern int rand (void) throw ();
23866:
23866: extern void srand (unsigned int __seed) throw ();
23866:
23866:
23866:
23866: extern int rand_r (unsigned int *__seed) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern double drand48 (void) throw ();
23866: extern double erand48 (unsigned short int __xsubi[3]) throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern long int lrand48 (void) throw ();
23866: extern long int nrand48 (unsigned short int __xsubi[3])
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern long int mrand48 (void) throw ();
23866: extern long int jrand48 (unsigned short int __xsubi[3])
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern void srand48 (long int __seedval) throw ();
23866: extern unsigned short int *seed48 (unsigned short int __seed16v[3])
23866: throw () __attribute__ ((__nonnull__ (1)));
23866: extern void lcong48 (unsigned short int __param[7]) throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866:
23866:
23866: struct drand48_data
23866: {
23866: unsigned short int __x[3];
23866: unsigned short int __old_x[3];
23866: unsigned short int __c;
23866: unsigned short int __init;
23866: __extension__ unsigned long long int __a;
23866:
23866: };
23866:
23866:
23866: extern int drand48_r (struct drand48_data *__restrict __buffer,
23866: double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2)));
23866: extern int erand48_r (unsigned short int __xsubi[3],
23866: struct drand48_data *__restrict __buffer,
23866: double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern int lrand48_r (struct drand48_data *__restrict __buffer,
23866: long int *__restrict __result)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866: extern int nrand48_r (unsigned short int __xsubi[3],
23866: struct drand48_data *__restrict __buffer,
23866: long int *__restrict __result)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern int mrand48_r (struct drand48_data *__restrict __buffer,
23866: long int *__restrict __result)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866: extern int jrand48_r (unsigned short int __xsubi[3],
23866: struct drand48_data *__restrict __buffer,
23866: long int *__restrict __result)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
23866: throw () __attribute__ ((__nonnull__ (2)));
23866:
23866: extern int seed48_r (unsigned short int __seed16v[3],
23866: struct drand48_data *__buffer) throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866: extern int lcong48_r (unsigned short int __param[7],
23866: struct drand48_data *__buffer)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866:
23866:
23866: extern void *malloc (size_t __size) throw () __attribute__ ((__malloc__))
23866: __attribute__ ((__alloc_size__ (1))) __attribute__ ((__warn_unused_result__));
23866:
23866: extern void *calloc (size_t __nmemb, size_t __size)
23866: throw () __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (1, 2))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern void *realloc (void *__ptr, size_t __size)
23866: throw () __attribute__ ((__warn_unused_result__)) __attribute__ ((__alloc_size__ (2)));
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size)
23866: throw () __attribute__ ((__warn_unused_result__))
23866: __attribute__ ((__alloc_size__ (2, 3)));
23866:
23866:
23866:
23866: extern void free (void *__ptr) throw ();
23866:
23866:
23866: # 1 "/usr/include/alloca.h" 1 3 4
23866: # 19 "/usr/include/alloca.h" 3 4
23866: #define _ALLOCA_H 1
23866:
23866:
23866:
23866: #define __need_size_t
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 1 3 4
23866: # 231 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_size_t
23866: # 401 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_NULL
23866: # 25 "/usr/include/alloca.h" 2 3 4
23866:
23866: extern "C" {
23866:
23866:
23866: #undef alloca
23866:
23866:
23866: extern void *alloca (size_t __size) throw ();
23866:
23866:
23866: #define alloca(size) __builtin_alloca (size)
23866:
23866:
23866: }
23866: # 569 "/usr/include/stdlib.h" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: extern void *valloc (size_t __size) throw () __attribute__ ((__malloc__))
23866: __attribute__ ((__alloc_size__ (1))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
23866: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: extern void *aligned_alloc (size_t __alignment, size_t __size)
23866: throw () __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (2))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866: extern void abort (void) throw () __attribute__ ((__noreturn__));
23866:
23866:
23866:
23866: extern int atexit (void (*__func) (void)) throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866:
23866: extern "C++" int at_quick_exit (void (*__func) (void))
23866: throw () __asm ("at_quick_exit") __attribute__ ((__nonnull__ (1)));
23866: # 610 "/usr/include/stdlib.h" 3 4
23866: extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866:
23866:
23866: extern void exit (int __status) throw () __attribute__ ((__noreturn__));
23866:
23866:
23866:
23866:
23866:
23866: extern void quick_exit (int __status) throw () __attribute__ ((__noreturn__));
23866:
23866:
23866:
23866:
23866:
23866: extern void _Exit (int __status) throw () __attribute__ ((__noreturn__));
23866:
23866:
23866:
23866:
23866: extern char *getenv (const char *__name) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: extern char *secure_getenv (const char *__name)
23866: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int putenv (char *__string) throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866:
23866:
23866: extern int setenv (const char *__name, const char *__value, int __replace)
23866: throw () __attribute__ ((__nonnull__ (2)));
23866:
23866:
23866: extern int unsetenv (const char *__name) throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int clearenv (void) throw ();
23866: # 675 "/usr/include/stdlib.h" 3 4
23866: extern char *mktemp (char *__template) throw () __attribute__ ((__nonnull__ (1)));
23866: # 691 "/usr/include/stdlib.h" 3 4
23866: extern int mkstemp (char *__template) __asm__ ("" "mkstemp64")
23866: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866: extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866: # 713 "/usr/include/stdlib.h" 3 4
23866: extern int mkstemps (char *__template, int __suffixlen) __asm__ ("" "mkstemps64")
23866: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866: extern int mkstemps64 (char *__template, int __suffixlen)
23866: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866: # 731 "/usr/include/stdlib.h" 3 4
23866: extern char *mkdtemp (char *__template) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866: # 745 "/usr/include/stdlib.h" 3 4
23866: extern int mkostemp (char *__template, int __flags) __asm__ ("" "mkostemp64")
23866: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866: extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866: # 766 "/usr/include/stdlib.h" 3 4
23866: extern int mkostemps (char *__template, int __suffixlen, int __flags) __asm__ ("" "mkostemps64")
23866:
23866: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866: extern int mkostemps64 (char *__template, int __suffixlen, int __flags)
23866: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866: # 784 "/usr/include/stdlib.h" 3 4
23866: extern int system (const char *__command) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866: extern char *canonicalize_file_name (const char *__name)
23866: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866: # 800 "/usr/include/stdlib.h" 3 4
23866: extern char *realpath (const char *__restrict __name,
23866: char *__restrict __resolved) throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866: #define __COMPAR_FN_T
23866: typedef int (*__compar_fn_t) (const void *, const void *);
23866:
23866:
23866: typedef __compar_fn_t comparison_fn_t;
23866:
23866:
23866:
23866: typedef int (*__compar_d_fn_t) (const void *, const void *, void *);
23866:
23866:
23866:
23866:
23866: extern void *bsearch (const void *__key, const void *__base,
23866: size_t __nmemb, size_t __size, __compar_fn_t __compar)
23866: __attribute__ ((__nonnull__ (1, 2, 5))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdlib-bsearch.h" 1 3 4
23866: # 19 "/usr/include/arm-linux-gnueabihf/bits/stdlib-bsearch.h" 3 4
23866: extern __inline __attribute__ ((__gnu_inline__)) void *
23866: bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size,
23866: __compar_fn_t __compar)
23866: {
23866: size_t __l, __u, __idx;
23866: const void *__p;
23866: int __comparison;
23866:
23866: __l = 0;
23866: __u = __nmemb;
23866: while (__l < __u)
23866: {
23866: __idx = (__l + __u) / 2;
23866: __p = (void *) (((const char *) __base) + (__idx * __size));
23866: __comparison = (*__compar) (__key, __p);
23866: if (__comparison < 0)
23866: __u = __idx;
23866: else if (__comparison > 0)
23866: __l = __idx + 1;
23866: else
23866: return (void *) __p;
23866: }
23866:
23866: return __null;
23866: }
23866: # 826 "/usr/include/stdlib.h" 2 3 4
23866:
23866:
23866:
23866:
23866: extern void qsort (void *__base, size_t __nmemb, size_t __size,
23866: __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));
23866:
23866: extern void qsort_r (void *__base, size_t __nmemb, size_t __size,
23866: __compar_d_fn_t __compar, void *__arg)
23866: __attribute__ ((__nonnull__ (1, 4)));
23866:
23866:
23866:
23866:
23866: extern int abs (int __x) throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
23866: extern long int labs (long int __x) throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866: __extension__ extern long long int llabs (long long int __x)
23866: throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern div_t div (int __numer, int __denom)
23866: throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
23866: extern ldiv_t ldiv (long int __numer, long int __denom)
23866: throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866: __extension__ extern lldiv_t lldiv (long long int __numer,
23866: long long int __denom)
23866: throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
23866: # 872 "/usr/include/stdlib.h" 3 4
23866: extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
23866: int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
23866: int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: extern char *gcvt (double __value, int __ndigit, char *__buf)
23866: throw () __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: extern char *qecvt (long double __value, int __ndigit,
23866: int *__restrict __decpt, int *__restrict __sign)
23866: throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
23866: extern char *qfcvt (long double __value, int __ndigit,
23866: int *__restrict __decpt, int *__restrict __sign)
23866: throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
23866: extern char *qgcvt (long double __value, int __ndigit, char *__buf)
23866: throw () __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
23866: int *__restrict __sign, char *__restrict __buf,
23866: size_t __len) throw () __attribute__ ((__nonnull__ (3, 4, 5)));
23866: extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
23866: int *__restrict __sign, char *__restrict __buf,
23866: size_t __len) throw () __attribute__ ((__nonnull__ (3, 4, 5)));
23866:
23866: extern int qecvt_r (long double __value, int __ndigit,
23866: int *__restrict __decpt, int *__restrict __sign,
23866: char *__restrict __buf, size_t __len)
23866: throw () __attribute__ ((__nonnull__ (3, 4, 5)));
23866: extern int qfcvt_r (long double __value, int __ndigit,
23866: int *__restrict __decpt, int *__restrict __sign,
23866: char *__restrict __buf, size_t __len)
23866: throw () __attribute__ ((__nonnull__ (3, 4, 5)));
23866:
23866:
23866:
23866:
23866:
23866: extern int mblen (const char *__s, size_t __n) throw ();
23866:
23866:
23866: extern int mbtowc (wchar_t *__restrict __pwc,
23866: const char *__restrict __s, size_t __n) throw ();
23866:
23866:
23866: extern int wctomb (char *__s, wchar_t __wchar) throw ();
23866:
23866:
23866:
23866: extern size_t mbstowcs (wchar_t *__restrict __pwcs,
23866: const char *__restrict __s, size_t __n) throw ();
23866:
23866: extern size_t wcstombs (char *__restrict __s,
23866: const wchar_t *__restrict __pwcs, size_t __n)
23866: throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int rpmatch (const char *__response) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866: # 957 "/usr/include/stdlib.h" 3 4
23866: extern int getsubopt (char **__restrict __optionp,
23866: char *const *__restrict __tokens,
23866: char **__restrict __valuep)
23866: throw () __attribute__ ((__nonnull__ (1, 2, 3))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int posix_openpt (int __oflag) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int grantpt (int __fd) throw ();
23866:
23866:
23866:
23866: extern int unlockpt (int __fd) throw ();
23866:
23866:
23866:
23866:
23866: extern char *ptsname (int __fd) throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
23866: throw () __attribute__ ((__nonnull__ (2)));
23866:
23866:
23866: extern int getpt (void);
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int getloadavg (double __loadavg[], int __nelem)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866: # 1013 "/usr/include/stdlib.h" 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdlib-float.h" 1 3 4
23866: # 24 "/usr/include/arm-linux-gnueabihf/bits/stdlib-float.h" 3 4
23866: extern __inline __attribute__ ((__gnu_inline__)) double
23866: __attribute__ ((__leaf__)) atof (const char *__nptr) throw ()
23866: {
23866: return strtod (__nptr, (char **) __null);
23866: }
23866: # 1014 "/usr/include/stdlib.h" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdlib.h" 1 3 4
23866: # 23 "/usr/include/arm-linux-gnueabihf/bits/stdlib.h" 3 4
23866: extern char *__realpath_chk (const char *__restrict __name,
23866: char *__restrict __resolved,
23866: size_t __resolvedlen) throw () __attribute__ ((__warn_unused_result__));
23866: extern char *__realpath_alias (const char *__restrict __name, char *__restrict __resolved) throw () __asm__ ("" "realpath")
23866:
23866: __attribute__ ((__warn_unused_result__));
23866: extern char *__realpath_chk_warn (const char *__restrict __name, char *__restrict __resolved, size_t __resolvedlen) throw () __asm__ ("" "__realpath_chk")
23866:
23866:
23866: __attribute__ ((__warn_unused_result__))
23866: __attribute__((__warning__ ("second argument of realpath must be either NULL or at " "least PATH_MAX bytes long buffer")))
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char *
23866: __attribute__ ((__leaf__)) realpath (const char *__restrict __name, char *__restrict __resolved) throw ()
23866: {
23866: if (__builtin_object_size (__resolved, 2 > 1) != (size_t) -1)
23866: {
23866:
23866:
23866:
23866:
23866: return __realpath_chk (__name, __resolved, __builtin_object_size (__resolved, 2 > 1));
23866: }
23866:
23866: return __realpath_alias (__name, __resolved);
23866: }
23866:
23866:
23866: extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen,
23866: size_t __nreal) throw () __attribute__ ((__nonnull__ (2)));
23866: extern int __ptsname_r_alias (int __fd, char *__buf, size_t __buflen) throw () __asm__ ("" "ptsname_r")
23866:
23866: __attribute__ ((__nonnull__ (2)));
23866: extern int __ptsname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) throw () __asm__ ("" "__ptsname_r_chk")
23866:
23866:
23866: __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ptsname_r called with buflen bigger than " "size of buf")))
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int
23866: __attribute__ ((__leaf__)) ptsname_r (int __fd, char *__buf, size_t __buflen) throw ()
23866: {
23866: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__buflen))
23866: return __ptsname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1));
23866: if (__buflen > __builtin_object_size (__buf, 2 > 1))
23866: return __ptsname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1));
23866: }
23866: return __ptsname_r_alias (__fd, __buf, __buflen);
23866: }
23866:
23866:
23866: extern int __wctomb_chk (char *__s, wchar_t __wchar, size_t __buflen)
23866: throw () __attribute__ ((__warn_unused_result__));
23866: extern int __wctomb_alias (char *__s, wchar_t __wchar) throw () __asm__ ("" "wctomb")
23866: __attribute__ ((__warn_unused_result__));
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) int
23866: __attribute__ ((__leaf__)) wctomb (char *__s, wchar_t __wchar) throw ()
23866: {
23866:
23866:
23866:
23866: #define __STDLIB_MB_LEN_MAX 16
23866:
23866:
23866:
23866: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 && 16 > __builtin_object_size (__s, 2 > 1))
23866: return __wctomb_chk (__s, __wchar, __builtin_object_size (__s, 2 > 1));
23866: return __wctomb_alias (__s, __wchar);
23866: }
23866:
23866:
23866: extern size_t __mbstowcs_chk (wchar_t *__restrict __dst,
23866: const char *__restrict __src,
23866: size_t __len, size_t __dstlen) throw ();
23866: extern size_t __mbstowcs_alias (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) throw () __asm__ ("" "mbstowcs")
23866:
23866:
23866: ;
23866: extern size_t __mbstowcs_chk_warn (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len, size_t __dstlen) throw () __asm__ ("" "__mbstowcs_chk")
23866:
23866:
23866:
23866: __attribute__((__warning__ ("mbstowcs called with dst buffer smaller than len " "* sizeof (wchar_t)")))
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t
23866: __attribute__ ((__leaf__)) mbstowcs (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) throw ()
23866:
23866: {
23866: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__len))
23866: return __mbstowcs_chk (__dst, __src, __len,
23866: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t));
23866:
23866: if (__len > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t))
23866: return __mbstowcs_chk_warn (__dst, __src, __len,
23866: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t));
23866: }
23866: return __mbstowcs_alias (__dst, __src, __len);
23866: }
23866:
23866:
23866: extern size_t __wcstombs_chk (char *__restrict __dst,
23866: const wchar_t *__restrict __src,
23866: size_t __len, size_t __dstlen) throw ();
23866: extern size_t __wcstombs_alias (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len) throw () __asm__ ("" "wcstombs")
23866:
23866:
23866: ;
23866: extern size_t __wcstombs_chk_warn (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len, size_t __dstlen) throw () __asm__ ("" "__wcstombs_chk")
23866:
23866:
23866:
23866: __attribute__((__warning__ ("wcstombs called with dst buffer smaller than len")));
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t
23866: __attribute__ ((__leaf__)) wcstombs (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len) throw ()
23866:
23866: {
23866: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__len))
23866: return __wcstombs_chk (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1));
23866: if (__len > __builtin_object_size (__dst, 2 > 1))
23866: return __wcstombs_chk_warn (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1));
23866: }
23866: return __wcstombs_alias (__dst, __src, __len);
23866: }
23866: # 1018 "/usr/include/stdlib.h" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 76 "/usr/include/c++/10/cstdlib" 2 3
23866: #undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS
23866: # 1 "/usr/include/c++/10/bits/std_abs.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/std_abs.h" 3
23866: #define _GLIBCXX_BITS_STD_ABS_H
23866:
23866:
23866: # 34 "/usr/include/c++/10/bits/std_abs.h" 3
23866:
23866:
23866:
23866: #define _GLIBCXX_INCLUDE_NEXT_C_HEADERS
23866:
23866:
23866:
23866:
23866: #undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS
23866:
23866: #undef abs
23866:
23866: extern "C++"
23866: {
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: using ::abs;
23866:
23866:
23866: inline long
23866: abs(long __i) { return __builtin_labs(__i); }
23866:
23866:
23866:
23866: inline long long
23866: abs(long long __x) { return __builtin_llabs (__x); }
23866: # 70 "/usr/include/c++/10/bits/std_abs.h" 3
23866: inline constexpr double
23866: abs(double __x)
23866: { return __builtin_fabs(__x); }
23866:
23866: inline constexpr float
23866: abs(float __x)
23866: { return __builtin_fabsf(__x); }
23866:
23866: inline constexpr long double
23866: abs(long double __x)
23866: { return __builtin_fabsl(__x); }
23866: # 107 "/usr/include/c++/10/bits/std_abs.h" 3
23866:
23866: }
23866: }
23866: # 78 "/usr/include/c++/10/cstdlib" 2 3
23866:
23866:
23866: #undef abort
23866:
23866: #undef aligned_alloc
23866:
23866: #undef atexit
23866:
23866:
23866: #undef at_quick_exit
23866:
23866:
23866: #undef atof
23866: #undef atoi
23866: #undef atol
23866: #undef bsearch
23866: #undef calloc
23866: #undef div
23866: #undef exit
23866: #undef free
23866: #undef getenv
23866: #undef labs
23866: #undef ldiv
23866: #undef malloc
23866: #undef mblen
23866: #undef mbstowcs
23866: #undef mbtowc
23866: #undef qsort
23866:
23866:
23866: #undef quick_exit
23866:
23866:
23866: #undef rand
23866: #undef realloc
23866: #undef srand
23866: #undef strtod
23866: #undef strtol
23866: #undef strtoul
23866: #undef system
23866: #undef wcstombs
23866: #undef wctomb
23866:
23866: extern "C++"
23866: {
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: using ::div_t;
23866: using ::ldiv_t;
23866:
23866: using ::abort;
23866:
23866: using ::aligned_alloc;
23866:
23866: using ::atexit;
23866:
23866:
23866: using ::at_quick_exit;
23866:
23866:
23866: using ::atof;
23866: using ::atoi;
23866: using ::atol;
23866: using ::bsearch;
23866: using ::calloc;
23866: using ::div;
23866: using ::exit;
23866: using ::free;
23866: using ::getenv;
23866: using ::labs;
23866: using ::ldiv;
23866: using ::malloc;
23866:
23866: using ::mblen;
23866: using ::mbstowcs;
23866: using ::mbtowc;
23866:
23866: using ::qsort;
23866:
23866:
23866: using ::quick_exit;
23866:
23866:
23866: using ::rand;
23866: using ::realloc;
23866: using ::srand;
23866: using ::strtod;
23866: using ::strtol;
23866: using ::strtoul;
23866: using ::system;
23866:
23866: using ::wcstombs;
23866: using ::wctomb;
23866:
23866:
23866:
23866: inline ldiv_t
23866: div(long __i, long __j) { return ldiv(__i, __j); }
23866:
23866:
23866:
23866:
23866: }
23866:
23866:
23866:
23866: #undef _Exit
23866: #undef llabs
23866: #undef lldiv
23866: #undef atoll
23866: #undef strtoll
23866: #undef strtoull
23866: #undef strtof
23866: #undef strtold
23866:
23866: namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: using ::lldiv_t;
23866:
23866:
23866:
23866:
23866:
23866: using ::_Exit;
23866:
23866:
23866:
23866: using ::llabs;
23866:
23866: inline lldiv_t
23866: div(long long __n, long long __d)
23866: { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; }
23866:
23866: using ::lldiv;
23866: # 227 "/usr/include/c++/10/cstdlib" 3
23866: using ::atoll;
23866: using ::strtoll;
23866: using ::strtoull;
23866:
23866: using ::strtof;
23866: using ::strtold;
23866:
23866:
23866: }
23866:
23866: namespace std
23866: {
23866:
23866: using ::__gnu_cxx::lldiv_t;
23866:
23866: using ::__gnu_cxx::_Exit;
23866:
23866: using ::__gnu_cxx::llabs;
23866: using ::__gnu_cxx::div;
23866: using ::__gnu_cxx::lldiv;
23866:
23866: using ::__gnu_cxx::atoll;
23866: using ::__gnu_cxx::strtof;
23866: using ::__gnu_cxx::strtoll;
23866: using ::__gnu_cxx::strtoull;
23866: using ::__gnu_cxx::strtold;
23866: }
23866:
23866:
23866:
23866: }
23866: # 60 "/usr/include/c++/10/bits/stl_algo.h" 2 3
23866: # 1 "/usr/include/c++/10/bits/algorithmfwd.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/algorithmfwd.h" 3
23866: #define _GLIBCXX_ALGORITHMFWD_H 1
23866:
23866:
23866: # 34 "/usr/include/c++/10/bits/algorithmfwd.h" 3
23866: # 42 "/usr/include/c++/10/bits/algorithmfwd.h" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 199 "/usr/include/c++/10/bits/algorithmfwd.h" 3
23866: template<typename _IIter, typename _Predicate>
23866:
23866: bool
23866: all_of(_IIter, _IIter, _Predicate);
23866:
23866: template<typename _IIter, typename _Predicate>
23866:
23866: bool
23866: any_of(_IIter, _IIter, _Predicate);
23866:
23866:
23866: template<typename _FIter, typename _Tp>
23866:
23866: bool
23866: binary_search(_FIter, _FIter, const _Tp&);
23866:
23866: template<typename _FIter, typename _Tp, typename _Compare>
23866:
23866: bool
23866: binary_search(_FIter, _FIter, const _Tp&, _Compare);
23866:
23866:
23866: template<typename _Tp>
23866: constexpr
23866: const _Tp&
23866: clamp(const _Tp&, const _Tp&, const _Tp&);
23866:
23866: template<typename _Tp, typename _Compare>
23866: constexpr
23866: const _Tp&
23866: clamp(const _Tp&, const _Tp&, const _Tp&, _Compare);
23866:
23866:
23866: template<typename _IIter, typename _OIter>
23866:
23866: _OIter
23866: copy(_IIter, _IIter, _OIter);
23866:
23866: template<typename _BIter1, typename _BIter2>
23866:
23866: _BIter2
23866: copy_backward(_BIter1, _BIter1, _BIter2);
23866:
23866:
23866: template<typename _IIter, typename _OIter, typename _Predicate>
23866:
23866: _OIter
23866: copy_if(_IIter, _IIter, _OIter, _Predicate);
23866:
23866: template<typename _IIter, typename _Size, typename _OIter>
23866:
23866: _OIter
23866: copy_n(_IIter, _Size, _OIter);
23866:
23866:
23866:
23866:
23866:
23866: template<typename _FIter, typename _Tp>
23866:
23866: pair<_FIter, _FIter>
23866: equal_range(_FIter, _FIter, const _Tp&);
23866:
23866: template<typename _FIter, typename _Tp, typename _Compare>
23866:
23866: pair<_FIter, _FIter>
23866: equal_range(_FIter, _FIter, const _Tp&, _Compare);
23866:
23866: template<typename _FIter, typename _Tp>
23866:
23866: void
23866: fill(_FIter, _FIter, const _Tp&);
23866:
23866: template<typename _OIter, typename _Size, typename _Tp>
23866:
23866: _OIter
23866: fill_n(_OIter, _Size, const _Tp&);
23866:
23866:
23866:
23866: template<typename _FIter1, typename _FIter2>
23866:
23866: _FIter1
23866: find_end(_FIter1, _FIter1, _FIter2, _FIter2);
23866:
23866: template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
23866:
23866: _FIter1
23866: find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
23866:
23866:
23866:
23866:
23866:
23866: template<typename _IIter, typename _Predicate>
23866:
23866: _IIter
23866: find_if_not(_IIter, _IIter, _Predicate);
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _IIter1, typename _IIter2>
23866:
23866: bool
23866: includes(_IIter1, _IIter1, _IIter2, _IIter2);
23866:
23866: template<typename _IIter1, typename _IIter2, typename _Compare>
23866:
23866: bool
23866: includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare);
23866:
23866: template<typename _BIter>
23866: void
23866: inplace_merge(_BIter, _BIter, _BIter);
23866:
23866: template<typename _BIter, typename _Compare>
23866: void
23866: inplace_merge(_BIter, _BIter, _BIter, _Compare);
23866:
23866:
23866: template<typename _RAIter>
23866:
23866: bool
23866: is_heap(_RAIter, _RAIter);
23866:
23866: template<typename _RAIter, typename _Compare>
23866:
23866: bool
23866: is_heap(_RAIter, _RAIter, _Compare);
23866:
23866: template<typename _RAIter>
23866:
23866: _RAIter
23866: is_heap_until(_RAIter, _RAIter);
23866:
23866: template<typename _RAIter, typename _Compare>
23866:
23866: _RAIter
23866: is_heap_until(_RAIter, _RAIter, _Compare);
23866:
23866: template<typename _IIter, typename _Predicate>
23866:
23866: bool
23866: is_partitioned(_IIter, _IIter, _Predicate);
23866:
23866: template<typename _FIter1, typename _FIter2>
23866:
23866: bool
23866: is_permutation(_FIter1, _FIter1, _FIter2);
23866:
23866: template<typename _FIter1, typename _FIter2,
23866: typename _BinaryPredicate>
23866:
23866: bool
23866: is_permutation(_FIter1, _FIter1, _FIter2, _BinaryPredicate);
23866:
23866: template<typename _FIter>
23866:
23866: bool
23866: is_sorted(_FIter, _FIter);
23866:
23866: template<typename _FIter, typename _Compare>
23866:
23866: bool
23866: is_sorted(_FIter, _FIter, _Compare);
23866:
23866: template<typename _FIter>
23866:
23866: _FIter
23866: is_sorted_until(_FIter, _FIter);
23866:
23866: template<typename _FIter, typename _Compare>
23866:
23866: _FIter
23866: is_sorted_until(_FIter, _FIter, _Compare);
23866:
23866:
23866: template<typename _FIter1, typename _FIter2>
23866:
23866: void
23866: iter_swap(_FIter1, _FIter2);
23866:
23866: template<typename _FIter, typename _Tp>
23866:
23866: _FIter
23866: lower_bound(_FIter, _FIter, const _Tp&);
23866:
23866: template<typename _FIter, typename _Tp, typename _Compare>
23866:
23866: _FIter
23866: lower_bound(_FIter, _FIter, const _Tp&, _Compare);
23866:
23866: template<typename _RAIter>
23866:
23866: void
23866: make_heap(_RAIter, _RAIter);
23866:
23866: template<typename _RAIter, typename _Compare>
23866:
23866: void
23866: make_heap(_RAIter, _RAIter, _Compare);
23866:
23866: template<typename _Tp>
23866: constexpr
23866: const _Tp&
23866: max(const _Tp&, const _Tp&);
23866:
23866: template<typename _Tp, typename _Compare>
23866: constexpr
23866: const _Tp&
23866: max(const _Tp&, const _Tp&, _Compare);
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr
23866: const _Tp&
23866: min(const _Tp&, const _Tp&);
23866:
23866: template<typename _Tp, typename _Compare>
23866: constexpr
23866: const _Tp&
23866: min(const _Tp&, const _Tp&, _Compare);
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr
23866: pair<const _Tp&, const _Tp&>
23866: minmax(const _Tp&, const _Tp&);
23866:
23866: template<typename _Tp, typename _Compare>
23866: constexpr
23866: pair<const _Tp&, const _Tp&>
23866: minmax(const _Tp&, const _Tp&, _Compare);
23866:
23866: template<typename _FIter>
23866: constexpr
23866: pair<_FIter, _FIter>
23866: minmax_element(_FIter, _FIter);
23866:
23866: template<typename _FIter, typename _Compare>
23866: constexpr
23866: pair<_FIter, _FIter>
23866: minmax_element(_FIter, _FIter, _Compare);
23866:
23866: template<typename _Tp>
23866: constexpr
23866: _Tp
23866: min(initializer_list<_Tp>);
23866:
23866: template<typename _Tp, typename _Compare>
23866: constexpr
23866: _Tp
23866: min(initializer_list<_Tp>, _Compare);
23866:
23866: template<typename _Tp>
23866: constexpr
23866: _Tp
23866: max(initializer_list<_Tp>);
23866:
23866: template<typename _Tp, typename _Compare>
23866: constexpr
23866: _Tp
23866: max(initializer_list<_Tp>, _Compare);
23866:
23866: template<typename _Tp>
23866: constexpr
23866: pair<_Tp, _Tp>
23866: minmax(initializer_list<_Tp>);
23866:
23866: template<typename _Tp, typename _Compare>
23866: constexpr
23866: pair<_Tp, _Tp>
23866: minmax(initializer_list<_Tp>, _Compare);
23866:
23866:
23866:
23866:
23866: template<typename _BIter>
23866:
23866: bool
23866: next_permutation(_BIter, _BIter);
23866:
23866: template<typename _BIter, typename _Compare>
23866:
23866: bool
23866: next_permutation(_BIter, _BIter, _Compare);
23866:
23866:
23866: template<typename _IIter, typename _Predicate>
23866:
23866: bool
23866: none_of(_IIter, _IIter, _Predicate);
23866:
23866:
23866:
23866:
23866:
23866: template<typename _IIter, typename _RAIter>
23866:
23866: _RAIter
23866: partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter);
23866:
23866: template<typename _IIter, typename _RAIter, typename _Compare>
23866:
23866: _RAIter
23866: partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare);
23866:
23866:
23866:
23866:
23866: template<typename _IIter, typename _OIter1,
23866: typename _OIter2, typename _Predicate>
23866:
23866: pair<_OIter1, _OIter2>
23866: partition_copy(_IIter, _IIter, _OIter1, _OIter2, _Predicate);
23866:
23866: template<typename _FIter, typename _Predicate>
23866:
23866: _FIter
23866: partition_point(_FIter, _FIter, _Predicate);
23866:
23866:
23866: template<typename _RAIter>
23866:
23866: void
23866: pop_heap(_RAIter, _RAIter);
23866:
23866: template<typename _RAIter, typename _Compare>
23866:
23866: void
23866: pop_heap(_RAIter, _RAIter, _Compare);
23866:
23866: template<typename _BIter>
23866:
23866: bool
23866: prev_permutation(_BIter, _BIter);
23866:
23866: template<typename _BIter, typename _Compare>
23866:
23866: bool
23866: prev_permutation(_BIter, _BIter, _Compare);
23866:
23866: template<typename _RAIter>
23866:
23866: void
23866: push_heap(_RAIter, _RAIter);
23866:
23866: template<typename _RAIter, typename _Compare>
23866:
23866: void
23866: push_heap(_RAIter, _RAIter, _Compare);
23866:
23866:
23866:
23866: template<typename _FIter, typename _Tp>
23866:
23866: _FIter
23866: remove(_FIter, _FIter, const _Tp&);
23866:
23866: template<typename _FIter, typename _Predicate>
23866:
23866: _FIter
23866: remove_if(_FIter, _FIter, _Predicate);
23866:
23866: template<typename _IIter, typename _OIter, typename _Tp>
23866:
23866: _OIter
23866: remove_copy(_IIter, _IIter, _OIter, const _Tp&);
23866:
23866: template<typename _IIter, typename _OIter, typename _Predicate>
23866:
23866: _OIter
23866: remove_copy_if(_IIter, _IIter, _OIter, _Predicate);
23866:
23866:
23866:
23866: template<typename _IIter, typename _OIter, typename _Tp>
23866:
23866: _OIter
23866: replace_copy(_IIter, _IIter, _OIter, const _Tp&, const _Tp&);
23866:
23866: template<typename _Iter, typename _OIter, typename _Predicate, typename _Tp>
23866:
23866: _OIter
23866: replace_copy_if(_Iter, _Iter, _OIter, _Predicate, const _Tp&);
23866:
23866:
23866:
23866: template<typename _BIter>
23866:
23866: void
23866: reverse(_BIter, _BIter);
23866:
23866: template<typename _BIter, typename _OIter>
23866:
23866: _OIter
23866: reverse_copy(_BIter, _BIter, _OIter);
23866:
23866: inline namespace _V2
23866: {
23866: template<typename _FIter>
23866:
23866: _FIter
23866: rotate(_FIter, _FIter, _FIter);
23866: }
23866:
23866: template<typename _FIter, typename _OIter>
23866:
23866: _OIter
23866: rotate_copy(_FIter, _FIter, _FIter, _OIter);
23866: # 625 "/usr/include/c++/10/bits/algorithmfwd.h" 3
23866: template<typename _RAIter, typename _UGenerator>
23866: void
23866: shuffle(_RAIter, _RAIter, _UGenerator&&);
23866:
23866:
23866: template<typename _RAIter>
23866:
23866: void
23866: sort_heap(_RAIter, _RAIter);
23866:
23866: template<typename _RAIter, typename _Compare>
23866:
23866: void
23866: sort_heap(_RAIter, _RAIter, _Compare);
23866:
23866: template<typename _BIter, typename _Predicate>
23866: _BIter
23866: stable_partition(_BIter, _BIter, _Predicate);
23866: # 658 "/usr/include/c++/10/bits/algorithmfwd.h" 3
23866: template<typename _FIter1, typename _FIter2>
23866:
23866: _FIter2
23866: swap_ranges(_FIter1, _FIter1, _FIter2);
23866:
23866:
23866:
23866: template<typename _FIter>
23866:
23866: _FIter
23866: unique(_FIter, _FIter);
23866:
23866: template<typename _FIter, typename _BinaryPredicate>
23866:
23866: _FIter
23866: unique(_FIter, _FIter, _BinaryPredicate);
23866:
23866:
23866:
23866: template<typename _FIter, typename _Tp>
23866:
23866: _FIter
23866: upper_bound(_FIter, _FIter, const _Tp&);
23866:
23866: template<typename _FIter, typename _Tp, typename _Compare>
23866:
23866: _FIter
23866: upper_bound(_FIter, _FIter, const _Tp&, _Compare);
23866:
23866:
23866:
23866: template<typename _FIter>
23866:
23866: _FIter
23866: adjacent_find(_FIter, _FIter);
23866:
23866: template<typename _FIter, typename _BinaryPredicate>
23866:
23866: _FIter
23866: adjacent_find(_FIter, _FIter, _BinaryPredicate);
23866:
23866: template<typename _IIter, typename _Tp>
23866:
23866: typename iterator_traits<_IIter>::difference_type
23866: count(_IIter, _IIter, const _Tp&);
23866:
23866: template<typename _IIter, typename _Predicate>
23866:
23866: typename iterator_traits<_IIter>::difference_type
23866: count_if(_IIter, _IIter, _Predicate);
23866:
23866: template<typename _IIter1, typename _IIter2>
23866:
23866: bool
23866: equal(_IIter1, _IIter1, _IIter2);
23866:
23866: template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
23866:
23866: bool
23866: equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate);
23866:
23866: template<typename _IIter, typename _Tp>
23866:
23866: _IIter
23866: find(_IIter, _IIter, const _Tp&);
23866:
23866: template<typename _FIter1, typename _FIter2>
23866:
23866: _FIter1
23866: find_first_of(_FIter1, _FIter1, _FIter2, _FIter2);
23866:
23866: template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
23866:
23866: _FIter1
23866: find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
23866:
23866: template<typename _IIter, typename _Predicate>
23866:
23866: _IIter
23866: find_if(_IIter, _IIter, _Predicate);
23866:
23866: template<typename _IIter, typename _Funct>
23866:
23866: _Funct
23866: for_each(_IIter, _IIter, _Funct);
23866:
23866: template<typename _FIter, typename _Generator>
23866:
23866: void
23866: generate(_FIter, _FIter, _Generator);
23866:
23866: template<typename _OIter, typename _Size, typename _Generator>
23866:
23866: _OIter
23866: generate_n(_OIter, _Size, _Generator);
23866:
23866: template<typename _IIter1, typename _IIter2>
23866:
23866: bool
23866: lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2);
23866:
23866: template<typename _IIter1, typename _IIter2, typename _Compare>
23866:
23866: bool
23866: lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare);
23866:
23866: template<typename _FIter>
23866: constexpr
23866: _FIter
23866: max_element(_FIter, _FIter);
23866:
23866: template<typename _FIter, typename _Compare>
23866: constexpr
23866: _FIter
23866: max_element(_FIter, _FIter, _Compare);
23866:
23866: template<typename _IIter1, typename _IIter2, typename _OIter>
23866:
23866: _OIter
23866: merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
23866:
23866: template<typename _IIter1, typename _IIter2, typename _OIter,
23866: typename _Compare>
23866:
23866: _OIter
23866: merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
23866:
23866: template<typename _FIter>
23866: constexpr
23866: _FIter
23866: min_element(_FIter, _FIter);
23866:
23866: template<typename _FIter, typename _Compare>
23866: constexpr
23866: _FIter
23866: min_element(_FIter, _FIter, _Compare);
23866:
23866: template<typename _IIter1, typename _IIter2>
23866:
23866: pair<_IIter1, _IIter2>
23866: mismatch(_IIter1, _IIter1, _IIter2);
23866:
23866: template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
23866:
23866: pair<_IIter1, _IIter2>
23866: mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate);
23866:
23866: template<typename _RAIter>
23866:
23866: void
23866: nth_element(_RAIter, _RAIter, _RAIter);
23866:
23866: template<typename _RAIter, typename _Compare>
23866:
23866: void
23866: nth_element(_RAIter, _RAIter, _RAIter, _Compare);
23866:
23866: template<typename _RAIter>
23866:
23866: void
23866: partial_sort(_RAIter, _RAIter, _RAIter);
23866:
23866: template<typename _RAIter, typename _Compare>
23866:
23866: void
23866: partial_sort(_RAIter, _RAIter, _RAIter, _Compare);
23866:
23866: template<typename _BIter, typename _Predicate>
23866:
23866: _BIter
23866: partition(_BIter, _BIter, _Predicate);
23866:
23866: template<typename _RAIter>
23866: void
23866: random_shuffle(_RAIter, _RAIter);
23866:
23866: template<typename _RAIter, typename _Generator>
23866: void
23866: random_shuffle(_RAIter, _RAIter,
23866:
23866: _Generator&&);
23866:
23866:
23866:
23866:
23866: template<typename _FIter, typename _Tp>
23866:
23866: void
23866: replace(_FIter, _FIter, const _Tp&, const _Tp&);
23866:
23866: template<typename _FIter, typename _Predicate, typename _Tp>
23866:
23866: void
23866: replace_if(_FIter, _FIter, _Predicate, const _Tp&);
23866:
23866: template<typename _FIter1, typename _FIter2>
23866:
23866: _FIter1
23866: search(_FIter1, _FIter1, _FIter2, _FIter2);
23866:
23866: template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
23866:
23866: _FIter1
23866: search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
23866:
23866: template<typename _FIter, typename _Size, typename _Tp>
23866:
23866: _FIter
23866: search_n(_FIter, _FIter, _Size, const _Tp&);
23866:
23866: template<typename _FIter, typename _Size, typename _Tp,
23866: typename _BinaryPredicate>
23866:
23866: _FIter
23866: search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate);
23866:
23866: template<typename _IIter1, typename _IIter2, typename _OIter>
23866:
23866: _OIter
23866: set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
23866:
23866: template<typename _IIter1, typename _IIter2, typename _OIter,
23866: typename _Compare>
23866:
23866: _OIter
23866: set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
23866:
23866: template<typename _IIter1, typename _IIter2, typename _OIter>
23866:
23866: _OIter
23866: set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
23866:
23866: template<typename _IIter1, typename _IIter2, typename _OIter,
23866: typename _Compare>
23866:
23866: _OIter
23866: set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
23866:
23866: template<typename _IIter1, typename _IIter2, typename _OIter>
23866:
23866: _OIter
23866: set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
23866:
23866: template<typename _IIter1, typename _IIter2, typename _OIter,
23866: typename _Compare>
23866:
23866: _OIter
23866: set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2,
23866: _OIter, _Compare);
23866:
23866: template<typename _IIter1, typename _IIter2, typename _OIter>
23866:
23866: _OIter
23866: set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
23866:
23866: template<typename _IIter1, typename _IIter2, typename _OIter,
23866: typename _Compare>
23866:
23866: _OIter
23866: set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
23866:
23866: template<typename _RAIter>
23866:
23866: void
23866: sort(_RAIter, _RAIter);
23866:
23866: template<typename _RAIter, typename _Compare>
23866:
23866: void
23866: sort(_RAIter, _RAIter, _Compare);
23866:
23866: template<typename _RAIter>
23866: void
23866: stable_sort(_RAIter, _RAIter);
23866:
23866: template<typename _RAIter, typename _Compare>
23866: void
23866: stable_sort(_RAIter, _RAIter, _Compare);
23866:
23866: template<typename _IIter, typename _OIter, typename _UnaryOperation>
23866:
23866: _OIter
23866: transform(_IIter, _IIter, _OIter, _UnaryOperation);
23866:
23866: template<typename _IIter1, typename _IIter2, typename _OIter,
23866: typename _BinaryOperation>
23866:
23866: _OIter
23866: transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation);
23866:
23866: template<typename _IIter, typename _OIter>
23866:
23866: _OIter
23866: unique_copy(_IIter, _IIter, _OIter);
23866:
23866: template<typename _IIter, typename _OIter, typename _BinaryPredicate>
23866:
23866: _OIter
23866: unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate);
23866:
23866:
23866:
23866: }
23866: # 61 "/usr/include/c++/10/bits/stl_algo.h" 2 3
23866: # 1 "/usr/include/c++/10/bits/stl_heap.h" 1 3
23866: # 56 "/usr/include/c++/10/bits/stl_heap.h" 3
23866: #define _STL_HEAP_H 1
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _RandomAccessIterator, typename _Distance,
23866: typename _Compare>
23866:
23866: _Distance
23866: __is_heap_until(_RandomAccessIterator __first, _Distance __n,
23866: _Compare& __comp)
23866: {
23866: _Distance __parent = 0;
23866: for (_Distance __child = 1; __child < __n; ++__child)
23866: {
23866: if (__comp(__first + __parent, __first + __child))
23866: return __child;
23866: if ((__child & 1) == 0)
23866: ++__parent;
23866: }
23866: return __n;
23866: }
23866:
23866:
23866:
23866: template<typename _RandomAccessIterator, typename _Distance>
23866:
23866: inline bool
23866: __is_heap(_RandomAccessIterator __first, _Distance __n)
23866: {
23866: __gnu_cxx::__ops::_Iter_less_iter __comp;
23866: return std::__is_heap_until(__first, __n, __comp) == __n;
23866: }
23866:
23866: template<typename _RandomAccessIterator, typename _Compare,
23866: typename _Distance>
23866:
23866: inline bool
23866: __is_heap(_RandomAccessIterator __first, _Compare __comp, _Distance __n)
23866: {
23866: typedef __decltype(__comp) _Cmp;
23866: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp));
23866: return std::__is_heap_until(__first, __n, __cmp) == __n;
23866: }
23866:
23866: template<typename _RandomAccessIterator>
23866:
23866: inline bool
23866: __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
23866: { return std::__is_heap(__first, std::distance(__first, __last)); }
23866:
23866: template<typename _RandomAccessIterator, typename _Compare>
23866:
23866: inline bool
23866: __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
23866: _Compare __comp)
23866: {
23866: return std::__is_heap(__first, std::move(__comp),
23866: std::distance(__first, __last));
23866: }
23866:
23866:
23866:
23866:
23866: template<typename _RandomAccessIterator, typename _Distance, typename _Tp,
23866: typename _Compare>
23866:
23866: void
23866: __push_heap(_RandomAccessIterator __first,
23866: _Distance __holeIndex, _Distance __topIndex, _Tp __value,
23866: _Compare& __comp)
23866: {
23866: _Distance __parent = (__holeIndex - 1) / 2;
23866: while (__holeIndex > __topIndex && __comp(__first + __parent, __value))
23866: {
23866: *(__first + __holeIndex) = std::move(*(__first + __parent));
23866: __holeIndex = __parent;
23866: __parent = (__holeIndex - 1) / 2;
23866: }
23866: *(__first + __holeIndex) = std::move(__value);
23866: }
23866: # 158 "/usr/include/c++/10/bits/stl_heap.h" 3
23866: template<typename _RandomAccessIterator>
23866:
23866: inline void
23866: push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
23866: {
23866: typedef typename iterator_traits<_RandomAccessIterator>::value_type
23866: _ValueType;
23866: typedef typename iterator_traits<_RandomAccessIterator>::difference_type
23866: _DistanceType;
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866: ;
23866:
23866: __gnu_cxx::__ops::_Iter_less_val __comp;
23866: _ValueType __value = std::move(*(__last - 1));
23866: std::__push_heap(__first, _DistanceType((__last - __first) - 1),
23866: _DistanceType(0), std::move(__value), __comp);
23866: }
23866: # 194 "/usr/include/c++/10/bits/stl_heap.h" 3
23866: template<typename _RandomAccessIterator, typename _Compare>
23866:
23866: inline void
23866: push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
23866: _Compare __comp)
23866: {
23866: typedef typename iterator_traits<_RandomAccessIterator>::value_type
23866: _ValueType;
23866: typedef typename iterator_traits<_RandomAccessIterator>::difference_type
23866: _DistanceType;
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866: ;
23866:
23866: __decltype(__gnu_cxx::__ops::__iter_comp_val(std::move(__comp)))
23866: __cmp(std::move(__comp));
23866: _ValueType __value = std::move(*(__last - 1));
23866: std::__push_heap(__first, _DistanceType((__last - __first) - 1),
23866: _DistanceType(0), std::move(__value), __cmp);
23866: }
23866:
23866: template<typename _RandomAccessIterator, typename _Distance,
23866: typename _Tp, typename _Compare>
23866:
23866: void
23866: __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
23866: _Distance __len, _Tp __value, _Compare __comp)
23866: {
23866: const _Distance __topIndex = __holeIndex;
23866: _Distance __secondChild = __holeIndex;
23866: while (__secondChild < (__len - 1) / 2)
23866: {
23866: __secondChild = 2 * (__secondChild + 1);
23866: if (__comp(__first + __secondChild,
23866: __first + (__secondChild - 1)))
23866: __secondChild--;
23866: *(__first + __holeIndex) = std::move(*(__first + __secondChild));
23866: __holeIndex = __secondChild;
23866: }
23866: if ((__len & 1) == 0 && __secondChild == (__len - 2) / 2)
23866: {
23866: __secondChild = 2 * (__secondChild + 1);
23866: *(__first + __holeIndex) = std::move(*(__first + (__secondChild - 1)))
23866: ;
23866: __holeIndex = __secondChild - 1;
23866: }
23866: __decltype(__gnu_cxx::__ops::__iter_comp_val(std::move(__comp)))
23866: __cmp(std::move(__comp));
23866: std::__push_heap(__first, __holeIndex, __topIndex,
23866: std::move(__value), __cmp);
23866: }
23866:
23866: template<typename _RandomAccessIterator, typename _Compare>
23866:
23866: inline void
23866: __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
23866: _RandomAccessIterator __result, _Compare& __comp)
23866: {
23866: typedef typename iterator_traits<_RandomAccessIterator>::value_type
23866: _ValueType;
23866: typedef typename iterator_traits<_RandomAccessIterator>::difference_type
23866: _DistanceType;
23866:
23866: _ValueType __value = std::move(*__result);
23866: *__result = std::move(*__first);
23866: std::__adjust_heap(__first, _DistanceType(0),
23866: _DistanceType(__last - __first),
23866: std::move(__value), __comp);
23866: }
23866: # 279 "/usr/include/c++/10/bits/stl_heap.h" 3
23866: template<typename _RandomAccessIterator>
23866:
23866: inline void
23866: pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866: ;
23866: ;
23866:
23866: if (__last - __first > 1)
23866: {
23866: --__last;
23866: __gnu_cxx::__ops::_Iter_less_iter __comp;
23866: std::__pop_heap(__first, __last, __last, __comp);
23866: }
23866: }
23866: # 313 "/usr/include/c++/10/bits/stl_heap.h" 3
23866: template<typename _RandomAccessIterator, typename _Compare>
23866:
23866: inline void
23866: pop_heap(_RandomAccessIterator __first,
23866: _RandomAccessIterator __last, _Compare __comp)
23866: {
23866:
23866:
23866:
23866: ;
23866: ;
23866: ;
23866: ;
23866:
23866: if (__last - __first > 1)
23866: {
23866: typedef __decltype(__comp) _Cmp;
23866: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp));
23866: --__last;
23866: std::__pop_heap(__first, __last, __last, __cmp);
23866: }
23866: }
23866:
23866: template<typename _RandomAccessIterator, typename _Compare>
23866:
23866: void
23866: __make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
23866: _Compare& __comp)
23866: {
23866: typedef typename iterator_traits<_RandomAccessIterator>::value_type
23866: _ValueType;
23866: typedef typename iterator_traits<_RandomAccessIterator>::difference_type
23866: _DistanceType;
23866:
23866: if (__last - __first < 2)
23866: return;
23866:
23866: const _DistanceType __len = __last - __first;
23866: _DistanceType __parent = (__len - 2) / 2;
23866: while (true)
23866: {
23866: _ValueType __value = std::move(*(__first + __parent));
23866: std::__adjust_heap(__first, __parent, __len, std::move(__value),
23866: __comp);
23866: if (__parent == 0)
23866: return;
23866: __parent--;
23866: }
23866: }
23866: # 371 "/usr/include/c++/10/bits/stl_heap.h" 3
23866: template<typename _RandomAccessIterator>
23866:
23866: inline void
23866: make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: __gnu_cxx::__ops::_Iter_less_iter __comp;
23866: std::__make_heap(__first, __last, __comp);
23866: }
23866: # 398 "/usr/include/c++/10/bits/stl_heap.h" 3
23866: template<typename _RandomAccessIterator, typename _Compare>
23866:
23866: inline void
23866: make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
23866: _Compare __comp)
23866: {
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: typedef __decltype(__comp) _Cmp;
23866: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp));
23866: std::__make_heap(__first, __last, __cmp);
23866: }
23866:
23866: template<typename _RandomAccessIterator, typename _Compare>
23866:
23866: void
23866: __sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
23866: _Compare& __comp)
23866: {
23866: while (__last - __first > 1)
23866: {
23866: --__last;
23866: std::__pop_heap(__first, __last, __last, __comp);
23866: }
23866: }
23866: # 436 "/usr/include/c++/10/bits/stl_heap.h" 3
23866: template<typename _RandomAccessIterator>
23866:
23866: inline void
23866: sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866: ;
23866:
23866: __gnu_cxx::__ops::_Iter_less_iter __comp;
23866: std::__sort_heap(__first, __last, __comp);
23866: }
23866: # 464 "/usr/include/c++/10/bits/stl_heap.h" 3
23866: template<typename _RandomAccessIterator, typename _Compare>
23866:
23866: inline void
23866: sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
23866: _Compare __comp)
23866: {
23866:
23866:
23866:
23866: ;
23866: ;
23866: ;
23866:
23866: typedef __decltype(__comp) _Cmp;
23866: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp));
23866: std::__sort_heap(__first, __last, __cmp);
23866: }
23866: # 493 "/usr/include/c++/10/bits/stl_heap.h" 3
23866: template<typename _RandomAccessIterator>
23866:
23866: inline _RandomAccessIterator
23866: is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: __gnu_cxx::__ops::_Iter_less_iter __comp;
23866: return __first +
23866: std::__is_heap_until(__first, std::distance(__first, __last), __comp);
23866: }
23866: # 522 "/usr/include/c++/10/bits/stl_heap.h" 3
23866: template<typename _RandomAccessIterator, typename _Compare>
23866:
23866: inline _RandomAccessIterator
23866: is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last,
23866: _Compare __comp)
23866: {
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: typedef __decltype(__comp) _Cmp;
23866: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp));
23866: return __first
23866: + std::__is_heap_until(__first, std::distance(__first, __last), __cmp);
23866: }
23866: # 547 "/usr/include/c++/10/bits/stl_heap.h" 3
23866: template<typename _RandomAccessIterator>
23866:
23866: inline bool
23866: is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
23866: { return std::is_heap_until(__first, __last) == __last; }
23866: # 561 "/usr/include/c++/10/bits/stl_heap.h" 3
23866: template<typename _RandomAccessIterator, typename _Compare>
23866:
23866: inline bool
23866: is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
23866: _Compare __comp)
23866: {
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: const auto __dist = std::distance(__first, __last);
23866: typedef __decltype(__comp) _Cmp;
23866: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp));
23866: return std::__is_heap_until(__first, __dist, __cmp) == __dist;
23866: }
23866:
23866:
23866:
23866: }
23866: # 62 "/usr/include/c++/10/bits/stl_algo.h" 2 3
23866: # 1 "/usr/include/c++/10/bits/stl_tempbuf.h" 1 3
23866: # 57 "/usr/include/c++/10/bits/stl_tempbuf.h" 3
23866: #define _STL_TEMPBUF_H 1
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/stl_construct.h" 1 3
23866: # 57 "/usr/include/c++/10/bits/stl_construct.h" 3
23866: #define _STL_CONSTRUCT_H 1
23866:
23866: # 1 "/usr/include/c++/10/new" 1 3
23866: # 36 "/usr/include/c++/10/new" 3
23866: #define _NEW
23866:
23866:
23866: # 39 "/usr/include/c++/10/new" 3
23866:
23866:
23866: # 1 "/usr/include/c++/10/exception" 1 3
23866: # 31 "/usr/include/c++/10/exception" 3
23866: #define __EXCEPTION__
23866:
23866:
23866: # 34 "/usr/include/c++/10/exception" 3
23866:
23866: #pragma GCC visibility push(default)
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/exception.h" 1 3
23866: # 32 "/usr/include/c++/10/bits/exception.h" 3
23866: #define __EXCEPTION_H 1
23866:
23866:
23866: # 35 "/usr/include/c++/10/bits/exception.h" 3
23866:
23866: #pragma GCC visibility push(default)
23866:
23866:
23866:
23866: extern "C++" {
23866:
23866: namespace std
23866: {
23866: # 60 "/usr/include/c++/10/bits/exception.h" 3
23866: class exception
23866: {
23866: public:
23866: exception() noexcept { }
23866: virtual ~exception() noexcept;
23866:
23866: exception(const exception&) = default;
23866: exception& operator=(const exception&) = default;
23866: exception(exception&&) = default;
23866: exception& operator=(exception&&) = default;
23866:
23866:
23866:
23866:
23866: virtual const char*
23866: what() const noexcept;
23866: };
23866:
23866: }
23866:
23866: }
23866:
23866: #pragma GCC visibility pop
23866: # 39 "/usr/include/c++/10/exception" 2 3
23866:
23866: extern "C++" {
23866:
23866: namespace std
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: class bad_exception : public exception
23866: {
23866: public:
23866: bad_exception() noexcept { }
23866:
23866:
23866:
23866: virtual ~bad_exception() noexcept;
23866:
23866:
23866: virtual const char*
23866: what() const noexcept;
23866: };
23866:
23866:
23866: typedef void (*terminate_handler) ();
23866:
23866:
23866: typedef void (*unexpected_handler) ();
23866:
23866:
23866: terminate_handler set_terminate(terminate_handler) noexcept;
23866:
23866:
23866:
23866: terminate_handler get_terminate() noexcept;
23866:
23866:
23866:
23866:
23866: void terminate() noexcept __attribute__ ((__noreturn__));
23866:
23866:
23866: unexpected_handler set_unexpected(unexpected_handler) noexcept;
23866:
23866:
23866:
23866: unexpected_handler get_unexpected() noexcept;
23866:
23866:
23866:
23866:
23866: void unexpected() __attribute__ ((__noreturn__));
23866: # 105 "/usr/include/c++/10/exception" 3
23866: [[__deprecated__]]
23866: bool uncaught_exception() noexcept __attribute__ ((__pure__));
23866:
23866:
23866: #define __cpp_lib_uncaught_exceptions 201411L
23866:
23866: int uncaught_exceptions() noexcept __attribute__ ((__pure__));
23866:
23866:
23866:
23866: }
23866:
23866: namespace __gnu_cxx
23866: {
23866:
23866: # 137 "/usr/include/c++/10/exception" 3
23866: void __verbose_terminate_handler();
23866:
23866:
23866: }
23866:
23866: }
23866:
23866: #pragma GCC visibility pop
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/exception_ptr.h" 1 3
23866: # 32 "/usr/include/c++/10/bits/exception_ptr.h" 3
23866: #define _EXCEPTION_PTR_H
23866:
23866: #pragma GCC visibility push(default)
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/cxxabi_init_exception.h" 1 3
23866: # 32 "/usr/include/c++/10/bits/cxxabi_init_exception.h" 3
23866: #define _CXXABI_INIT_EXCEPTION_H 1
23866:
23866:
23866: # 35 "/usr/include/c++/10/bits/cxxabi_init_exception.h" 3
23866:
23866: #pragma GCC visibility push(default)
23866:
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 1 3 4
23866: # 39 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #define _STDDEF_H
23866: #define _STDDEF_H_
23866:
23866: #define _ANSI_STDDEF_H
23866: # 131 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #define _PTRDIFF_T
23866: #define _T_PTRDIFF_
23866: #define _T_PTRDIFF
23866: #define __PTRDIFF_T
23866: #define _PTRDIFF_T_
23866: #define _BSD_PTRDIFF_T_
23866: #define ___int_ptrdiff_t_h
23866: #define _GCC_PTRDIFF_T
23866: #define _PTRDIFF_T_DECLARED
23866:
23866:
23866:
23866: typedef int ptrdiff_t;
23866: # 155 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_ptrdiff_t
23866: # 231 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_size_t
23866: # 340 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_wchar_t
23866: # 390 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef NULL
23866:
23866: #define NULL __null
23866: # 401 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_NULL
23866:
23866:
23866:
23866:
23866: #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
23866:
23866:
23866:
23866:
23866: #define _GCC_MAX_ALIGN_T
23866:
23866:
23866:
23866: typedef struct {
23866: long long __max_align_ll __attribute__((__aligned__(__alignof__(long long))));
23866: long double __max_align_ld __attribute__((__aligned__(__alignof__(long double))));
23866: # 426 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: } max_align_t;
23866:
23866:
23866:
23866:
23866:
23866: #define _GXX_NULLPTR_T
23866: typedef decltype(nullptr) nullptr_t;
23866: # 39 "/usr/include/c++/10/bits/cxxabi_init_exception.h" 2 3
23866:
23866:
23866:
23866: #define _GLIBCXX_CDTOR_CALLABI
23866: #define _GLIBCXX_HAVE_CDTOR_CALLABI 0
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace std
23866: {
23866: class type_info;
23866: }
23866:
23866: namespace __cxxabiv1
23866: {
23866: struct __cxa_refcounted_exception;
23866:
23866: extern "C"
23866: {
23866:
23866: void*
23866: __cxa_allocate_exception(size_t) noexcept;
23866:
23866: void
23866: __cxa_free_exception(void*) noexcept;
23866:
23866:
23866: __cxa_refcounted_exception*
23866: __cxa_init_primary_exception(void *object, std::type_info *tinfo,
23866: void ( *dest) (void *)) noexcept;
23866:
23866: }
23866: }
23866:
23866:
23866:
23866: #pragma GCC visibility pop
23866: # 39 "/usr/include/c++/10/bits/exception_ptr.h" 2 3
23866: # 1 "/usr/include/c++/10/typeinfo" 1 3
23866: # 30 "/usr/include/c++/10/typeinfo" 3
23866: #define _TYPEINFO
23866:
23866:
23866: # 33 "/usr/include/c++/10/typeinfo" 3
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/hash_bytes.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/hash_bytes.h" 3
23866: #define _HASH_BYTES_H 1
23866:
23866:
23866: # 34 "/usr/include/c++/10/bits/hash_bytes.h" 3
23866:
23866:
23866:
23866: namespace std
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: size_t
23866: _Hash_bytes(const void* __ptr, size_t __len, size_t __seed);
23866:
23866:
23866:
23866:
23866:
23866: size_t
23866: _Fnv_hash_bytes(const void* __ptr, size_t __len, size_t __seed);
23866:
23866:
23866: }
23866: # 37 "/usr/include/c++/10/typeinfo" 2 3
23866:
23866:
23866: #pragma GCC visibility push(default)
23866:
23866: extern "C++" {
23866:
23866: namespace __cxxabiv1
23866: {
23866: class __class_type_info;
23866: }
23866: # 68 "/usr/include/c++/10/typeinfo" 3
23866: #define __GXX_MERGED_TYPEINFO_NAMES 0
23866: # 80 "/usr/include/c++/10/typeinfo" 3
23866: namespace std
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: class type_info
23866: {
23866: public:
23866:
23866:
23866:
23866:
23866: virtual ~type_info();
23866:
23866:
23866:
23866: const char* name() const noexcept
23866: { return __name[0] == '*' ? __name + 1 : __name; }
23866:
23866:
23866:
23866:
23866:
23866: bool before(const type_info& __arg) const noexcept;
23866: bool operator==(const type_info& __arg) const noexcept;
23866: # 138 "/usr/include/c++/10/typeinfo" 3
23866: bool operator!=(const type_info& __arg) const noexcept
23866: { return !operator==(__arg); }
23866:
23866:
23866:
23866: size_t hash_code() const noexcept
23866: {
23866:
23866: return _Hash_bytes(name(), __builtin_strlen(name()),
23866: static_cast<size_t>(0xc70f6907UL));
23866:
23866:
23866:
23866: }
23866:
23866:
23866:
23866: virtual bool __is_pointer_p() const;
23866:
23866:
23866: virtual bool __is_function_p() const;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: virtual bool __do_catch(const type_info *__thr_type, void **__thr_obj,
23866: unsigned __outer) const;
23866:
23866:
23866: virtual bool __do_upcast(const __cxxabiv1::__class_type_info *__target,
23866: void **__obj_ptr) const;
23866:
23866: protected:
23866: const char *__name;
23866:
23866: explicit type_info(const char *__n): __name(__n) { }
23866:
23866: private:
23866:
23866: type_info& operator=(const type_info&);
23866: type_info(const type_info&);
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: class bad_cast : public exception
23866: {
23866: public:
23866: bad_cast() noexcept { }
23866:
23866:
23866:
23866: virtual ~bad_cast() noexcept;
23866:
23866:
23866: virtual const char* what() const noexcept;
23866: };
23866:
23866:
23866:
23866:
23866:
23866: class bad_typeid : public exception
23866: {
23866: public:
23866: bad_typeid () noexcept { }
23866:
23866:
23866:
23866: virtual ~bad_typeid() noexcept;
23866:
23866:
23866: virtual const char* what() const noexcept;
23866: };
23866: }
23866:
23866: }
23866:
23866: #pragma GCC visibility pop
23866: # 40 "/usr/include/c++/10/bits/exception_ptr.h" 2 3
23866: # 1 "/usr/include/c++/10/new" 1 3
23866: # 41 "/usr/include/c++/10/bits/exception_ptr.h" 2 3
23866:
23866: extern "C++" {
23866:
23866: namespace std
23866: {
23866: class type_info;
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace __exception_ptr
23866: {
23866: class exception_ptr;
23866: }
23866:
23866: using __exception_ptr::exception_ptr;
23866:
23866:
23866:
23866:
23866:
23866: exception_ptr current_exception() noexcept;
23866:
23866: template<typename _Ex>
23866: exception_ptr make_exception_ptr(_Ex) noexcept;
23866:
23866:
23866: void rethrow_exception(exception_ptr) __attribute__ ((__noreturn__));
23866:
23866: namespace __exception_ptr
23866: {
23866: using std::rethrow_exception;
23866:
23866:
23866:
23866:
23866:
23866: class exception_ptr
23866: {
23866: void* _M_exception_object;
23866:
23866: explicit exception_ptr(void* __e) noexcept;
23866:
23866: void _M_addref() noexcept;
23866: void _M_release() noexcept;
23866:
23866: void *_M_get() const noexcept __attribute__ ((__pure__));
23866:
23866: friend exception_ptr std::current_exception() noexcept;
23866: friend void std::rethrow_exception(exception_ptr);
23866: template<typename _Ex>
23866: friend exception_ptr std::make_exception_ptr(_Ex) noexcept;
23866:
23866: public:
23866: exception_ptr() noexcept;
23866:
23866: exception_ptr(const exception_ptr&) noexcept;
23866:
23866:
23866: exception_ptr(nullptr_t) noexcept
23866: : _M_exception_object(0)
23866: { }
23866:
23866: exception_ptr(exception_ptr&& __o) noexcept
23866: : _M_exception_object(__o._M_exception_object)
23866: { __o._M_exception_object = 0; }
23866: # 118 "/usr/include/c++/10/bits/exception_ptr.h" 3
23866: exception_ptr&
23866: operator=(const exception_ptr&) noexcept;
23866:
23866:
23866: exception_ptr&
23866: operator=(exception_ptr&& __o) noexcept
23866: {
23866: exception_ptr(static_cast<exception_ptr&&>(__o)).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: ~exception_ptr() noexcept;
23866:
23866: void
23866: swap(exception_ptr&) noexcept;
23866: # 145 "/usr/include/c++/10/bits/exception_ptr.h" 3
23866: explicit operator bool() const
23866: { return _M_exception_object; }
23866:
23866:
23866: friend bool
23866: operator==(const exception_ptr&, const exception_ptr&)
23866: noexcept __attribute__ ((__pure__));
23866:
23866: const class std::type_info*
23866: __cxa_exception_type() const noexcept
23866: __attribute__ ((__pure__));
23866: };
23866:
23866:
23866:
23866: bool
23866: operator==(const exception_ptr&, const exception_ptr&)
23866: noexcept __attribute__ ((__pure__));
23866:
23866: bool
23866: operator!=(const exception_ptr&, const exception_ptr&)
23866: noexcept __attribute__ ((__pure__));
23866:
23866: inline void
23866: swap(exception_ptr& __lhs, exception_ptr& __rhs)
23866: { __lhs.swap(__rhs); }
23866:
23866:
23866:
23866:
23866: template<typename _Ex>
23866: inline void
23866: __dest_thunk(void* __x)
23866: { static_cast<_Ex*>(__x)->~_Ex(); }
23866:
23866:
23866: }
23866:
23866:
23866: template<typename _Ex>
23866: exception_ptr
23866: make_exception_ptr(_Ex __ex) noexcept
23866: {
23866:
23866: void* __e = __cxxabiv1::__cxa_allocate_exception(sizeof(_Ex));
23866: (void) __cxxabiv1::__cxa_init_primary_exception(
23866: __e, const_cast<std::type_info*>(&typeid(__ex)),
23866: __exception_ptr::__dest_thunk<_Ex>);
23866: try
23866: {
23866: ::new (__e) _Ex(__ex);
23866: return exception_ptr(__e);
23866: }
23866: catch(...)
23866: {
23866: __cxxabiv1::__cxa_free_exception(__e);
23866: return current_exception();
23866: }
23866: # 215 "/usr/include/c++/10/bits/exception_ptr.h" 3
23866: }
23866:
23866:
23866: }
23866:
23866: }
23866:
23866: #pragma GCC visibility pop
23866: # 148 "/usr/include/c++/10/exception" 2 3
23866: # 1 "/usr/include/c++/10/bits/nested_exception.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/nested_exception.h" 3
23866: #define _GLIBCXX_NESTED_EXCEPTION_H 1
23866:
23866: #pragma GCC visibility push(default)
23866: # 42 "/usr/include/c++/10/bits/nested_exception.h" 3
23866: extern "C++" {
23866:
23866: namespace std
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: class nested_exception
23866: {
23866: exception_ptr _M_ptr;
23866:
23866: public:
23866: nested_exception() noexcept : _M_ptr(current_exception()) { }
23866:
23866: nested_exception(const nested_exception&) noexcept = default;
23866:
23866: nested_exception& operator=(const nested_exception&) noexcept = default;
23866:
23866: virtual ~nested_exception() noexcept;
23866:
23866: [[noreturn]]
23866: void
23866: rethrow_nested() const
23866: {
23866: if (_M_ptr)
23866: rethrow_exception(_M_ptr);
23866: std::terminate();
23866: }
23866:
23866: exception_ptr
23866: nested_ptr() const noexcept
23866: { return _M_ptr; }
23866: };
23866:
23866:
23866:
23866: template<typename _Except>
23866: struct _Nested_exception : public _Except, public nested_exception
23866: {
23866: explicit _Nested_exception(const _Except& __ex)
23866: : _Except(__ex)
23866: { }
23866:
23866: explicit _Nested_exception(_Except&& __ex)
23866: : _Except(static_cast<_Except&&>(__ex))
23866: { }
23866: };
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: [[noreturn]]
23866: inline void
23866: __throw_with_nested_impl(_Tp&& __t, true_type)
23866: {
23866: using _Up = typename remove_reference<_Tp>::type;
23866: throw _Nested_exception<_Up>{std::forward<_Tp>(__t)};
23866: }
23866:
23866: template<typename _Tp>
23866: [[noreturn]]
23866: inline void
23866: __throw_with_nested_impl(_Tp&& __t, false_type)
23866: { throw std::forward<_Tp>(__t); }
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: [[noreturn]]
23866: inline void
23866: throw_with_nested(_Tp&& __t)
23866: {
23866: using _Up = typename decay<_Tp>::type;
23866: using _CopyConstructible
23866: = __and_<is_copy_constructible<_Up>, is_move_constructible<_Up>>;
23866: static_assert(_CopyConstructible::value,
23866: "throw_with_nested argument must be CopyConstructible");
23866: using __nest = __and_<is_class<_Up>, __bool_constant<!__is_final(_Up)>,
23866: __not_<is_base_of<nested_exception, _Up>>>;
23866: std::__throw_with_nested_impl(std::forward<_Tp>(__t), __nest{});
23866: }
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: using __rethrow_if_nested_cond = typename enable_if<
23866: __and_<is_polymorphic<_Tp>,
23866: __or_<__not_<is_base_of<nested_exception, _Tp>>,
23866: is_convertible<_Tp*, nested_exception*>>>::value
23866: >::type;
23866:
23866:
23866: template<typename _Ex>
23866: inline __rethrow_if_nested_cond<_Ex>
23866: __rethrow_if_nested_impl(const _Ex* __ptr)
23866: {
23866: if (auto __ne_ptr = dynamic_cast<const nested_exception*>(__ptr))
23866: __ne_ptr->rethrow_nested();
23866: }
23866:
23866:
23866: inline void
23866: __rethrow_if_nested_impl(const void*)
23866: { }
23866:
23866:
23866:
23866:
23866: template<typename _Ex>
23866: inline void
23866: rethrow_if_nested(const _Ex& __ex)
23866: { std::__rethrow_if_nested_impl(std::__addressof(__ex)); }
23866:
23866:
23866: }
23866:
23866: }
23866:
23866:
23866:
23866: #pragma GCC visibility pop
23866: # 149 "/usr/include/c++/10/exception" 2 3
23866: # 42 "/usr/include/c++/10/new" 2 3
23866:
23866: #pragma GCC visibility push(default)
23866:
23866: extern "C++" {
23866:
23866: namespace std
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: class bad_alloc : public exception
23866: {
23866: public:
23866: bad_alloc() throw() { }
23866:
23866:
23866: bad_alloc(const bad_alloc&) = default;
23866: bad_alloc& operator=(const bad_alloc&) = default;
23866:
23866:
23866:
23866:
23866: virtual ~bad_alloc() throw();
23866:
23866:
23866: virtual const char* what() const throw();
23866: };
23866:
23866:
23866: class bad_array_new_length : public bad_alloc
23866: {
23866: public:
23866: bad_array_new_length() throw() { }
23866:
23866:
23866:
23866: virtual ~bad_array_new_length() throw();
23866:
23866:
23866: virtual const char* what() const throw();
23866: };
23866:
23866:
23866:
23866: enum class align_val_t: size_t {};
23866:
23866:
23866: struct nothrow_t
23866: {
23866:
23866: explicit nothrow_t() = default;
23866:
23866: };
23866:
23866: extern const nothrow_t nothrow;
23866:
23866:
23866:
23866: typedef void (*new_handler)();
23866:
23866:
23866:
23866: new_handler set_new_handler(new_handler) throw();
23866:
23866:
23866:
23866: new_handler get_new_handler() noexcept;
23866:
23866: }
23866: # 126 "/usr/include/c++/10/new" 3
23866: [[__nodiscard__]] void* operator new(std::size_t)
23866: __attribute__((__externally_visible__));
23866: [[__nodiscard__]] void* operator new[](std::size_t)
23866: __attribute__((__externally_visible__));
23866: void operator delete(void*) noexcept
23866: __attribute__((__externally_visible__));
23866: void operator delete[](void*) noexcept
23866: __attribute__((__externally_visible__));
23866:
23866: void operator delete(void*, std::size_t) noexcept
23866: __attribute__((__externally_visible__));
23866: void operator delete[](void*, std::size_t) noexcept
23866: __attribute__((__externally_visible__));
23866:
23866: [[__nodiscard__]] void* operator new(std::size_t, const std::nothrow_t&) noexcept
23866: __attribute__((__externally_visible__, __malloc__));
23866: [[__nodiscard__]] void* operator new[](std::size_t, const std::nothrow_t&) noexcept
23866: __attribute__((__externally_visible__, __malloc__));
23866: void operator delete(void*, const std::nothrow_t&) noexcept
23866: __attribute__((__externally_visible__));
23866: void operator delete[](void*, const std::nothrow_t&) noexcept
23866: __attribute__((__externally_visible__));
23866:
23866: [[__nodiscard__]] void* operator new(std::size_t, std::align_val_t)
23866: __attribute__((__externally_visible__));
23866: [[__nodiscard__]] void* operator new(std::size_t, std::align_val_t, const std::nothrow_t&)
23866: noexcept __attribute__((__externally_visible__, __malloc__));
23866: void operator delete(void*, std::align_val_t)
23866: noexcept __attribute__((__externally_visible__));
23866: void operator delete(void*, std::align_val_t, const std::nothrow_t&)
23866: noexcept __attribute__((__externally_visible__));
23866: [[__nodiscard__]] void* operator new[](std::size_t, std::align_val_t)
23866: __attribute__((__externally_visible__));
23866: [[__nodiscard__]] void* operator new[](std::size_t, std::align_val_t, const std::nothrow_t&)
23866: noexcept __attribute__((__externally_visible__, __malloc__));
23866: void operator delete[](void*, std::align_val_t)
23866: noexcept __attribute__((__externally_visible__));
23866: void operator delete[](void*, std::align_val_t, const std::nothrow_t&)
23866: noexcept __attribute__((__externally_visible__));
23866:
23866: void operator delete(void*, std::size_t, std::align_val_t)
23866: noexcept __attribute__((__externally_visible__));
23866: void operator delete[](void*, std::size_t, std::align_val_t)
23866: noexcept __attribute__((__externally_visible__));
23866:
23866:
23866:
23866:
23866: [[__nodiscard__]] inline void* operator new(std::size_t, void* __p) noexcept
23866: { return __p; }
23866: [[__nodiscard__]] inline void* operator new[](std::size_t, void* __p) noexcept
23866: { return __p; }
23866:
23866:
23866: inline void operator delete (void*, void*) noexcept { }
23866: inline void operator delete[](void*, void*) noexcept { }
23866:
23866: }
23866:
23866:
23866:
23866: namespace std
23866: {
23866: #define __cpp_lib_launder 201606
23866:
23866: template<typename _Tp>
23866: [[nodiscard]] constexpr _Tp*
23866: launder(_Tp* __p) noexcept
23866: { return __builtin_launder(__p); }
23866:
23866:
23866:
23866:
23866: template<typename _Ret, typename... _Args , bool _NE>
23866: void launder(_Ret (*)(_Args...) noexcept (_NE)) = delete;
23866: template<typename _Ret, typename... _Args , bool _NE>
23866: void launder(_Ret (*)(_Args......) noexcept (_NE)) = delete;
23866:
23866: void launder(void*) = delete;
23866: void launder(const void*) = delete;
23866: void launder(volatile void*) = delete;
23866: void launder(const volatile void*) = delete;
23866: }
23866: # 230 "/usr/include/c++/10/new" 3
23866: #pragma GCC visibility pop
23866: # 60 "/usr/include/c++/10/bits/stl_construct.h" 2 3
23866: # 73 "/usr/include/c++/10/bits/stl_construct.h" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: template <typename _Tp>
23866: inline void
23866: destroy_at(_Tp* __location)
23866: {
23866: if constexpr (201703L > 201703L && is_array_v<_Tp>)
23866: {
23866: for (auto& __x : *__location)
23866: std::destroy_at(std::__addressof(__x));
23866: }
23866: else
23866: __location->~_Tp();
23866: }
23866: # 106 "/usr/include/c++/10/bits/stl_construct.h" 3
23866: template<typename _Tp, typename... _Args>
23866: inline void
23866: _Construct(_Tp* __p, _Args&&... __args)
23866: { ::new(static_cast<void*>(__p)) _Tp(std::forward<_Args>(__args)...); }
23866: # 121 "/usr/include/c++/10/bits/stl_construct.h" 3
23866: template<typename _T1>
23866: inline void
23866: _Construct_novalue(_T1* __p)
23866: { ::new(static_cast<void*>(__p)) _T1; }
23866:
23866: template<typename _ForwardIterator>
23866: void
23866: _Destroy(_ForwardIterator __first, _ForwardIterator __last);
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr inline void
23866: _Destroy(_Tp* __pointer)
23866: {
23866:
23866:
23866:
23866: __pointer->~_Tp();
23866:
23866: }
23866:
23866: template<bool>
23866: struct _Destroy_aux
23866: {
23866: template<typename _ForwardIterator>
23866: static void
23866: __destroy(_ForwardIterator __first, _ForwardIterator __last)
23866: {
23866: for (; __first != __last; ++__first)
23866: std::_Destroy(std::__addressof(*__first));
23866: }
23866: };
23866:
23866: template<>
23866: struct _Destroy_aux<true>
23866: {
23866: template<typename _ForwardIterator>
23866: static void
23866: __destroy(_ForwardIterator, _ForwardIterator) { }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _ForwardIterator>
23866: inline void
23866: _Destroy(_ForwardIterator __first, _ForwardIterator __last)
23866: {
23866: typedef typename iterator_traits<_ForwardIterator>::value_type
23866: _Value_type;
23866:
23866:
23866: static_assert(is_destructible<_Value_type>::value,
23866: "value type is destructible");
23866:
23866:
23866:
23866:
23866:
23866: std::_Destroy_aux<__has_trivial_destructor(_Value_type)>::
23866: __destroy(__first, __last);
23866: }
23866:
23866: template<bool>
23866: struct _Destroy_n_aux
23866: {
23866: template<typename _ForwardIterator, typename _Size>
23866: static _ForwardIterator
23866: __destroy_n(_ForwardIterator __first, _Size __count)
23866: {
23866: for (; __count > 0; (void)++__first, --__count)
23866: std::_Destroy(std::__addressof(*__first));
23866: return __first;
23866: }
23866: };
23866:
23866: template<>
23866: struct _Destroy_n_aux<true>
23866: {
23866: template<typename _ForwardIterator, typename _Size>
23866: static _ForwardIterator
23866: __destroy_n(_ForwardIterator __first, _Size __count)
23866: {
23866: std::advance(__first, __count);
23866: return __first;
23866: }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _ForwardIterator, typename _Size>
23866: inline _ForwardIterator
23866: _Destroy_n(_ForwardIterator __first, _Size __count)
23866: {
23866: typedef typename iterator_traits<_ForwardIterator>::value_type
23866: _Value_type;
23866:
23866:
23866: static_assert(is_destructible<_Value_type>::value,
23866: "value type is destructible");
23866:
23866:
23866:
23866:
23866:
23866: return std::_Destroy_n_aux<__has_trivial_destructor(_Value_type)>::
23866: __destroy_n(__first, __count);
23866: }
23866:
23866:
23866: template <typename _ForwardIterator>
23866: inline void
23866: destroy(_ForwardIterator __first, _ForwardIterator __last)
23866: {
23866: std::_Destroy(__first, __last);
23866: }
23866:
23866: template <typename _ForwardIterator, typename _Size>
23866: inline _ForwardIterator
23866: destroy_n(_ForwardIterator __first, _Size __count)
23866: {
23866: return std::_Destroy_n(__first, __count);
23866: }
23866:
23866:
23866:
23866: }
23866: # 61 "/usr/include/c++/10/bits/stl_tempbuf.h" 2 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: namespace __detail
23866: {
23866: template<typename _Tp>
23866: inline void
23866: __return_temporary_buffer(_Tp* __p,
23866: size_t __len __attribute__((__unused__)))
23866: {
23866:
23866: ::operator delete(__p, __len * sizeof(_Tp));
23866:
23866:
23866:
23866: }
23866: }
23866: # 98 "/usr/include/c++/10/bits/stl_tempbuf.h" 3
23866: template<typename _Tp>
23866: pair<_Tp*, ptrdiff_t>
23866: get_temporary_buffer(ptrdiff_t __len) noexcept
23866: {
23866: const ptrdiff_t __max =
23866: __gnu_cxx::__numeric_traits<ptrdiff_t>::__max / sizeof(_Tp);
23866: if (__len > __max)
23866: __len = __max;
23866:
23866: while (__len > 0)
23866: {
23866: _Tp* __tmp = static_cast<_Tp*>(::operator new(__len * sizeof(_Tp),
23866: std::nothrow));
23866: if (__tmp != 0)
23866: return std::pair<_Tp*, ptrdiff_t>(__tmp, __len);
23866: __len /= 2;
23866: }
23866: return std::pair<_Tp*, ptrdiff_t>(static_cast<_Tp*>(0), 0);
23866: }
23866: # 125 "/usr/include/c++/10/bits/stl_tempbuf.h" 3
23866: template<typename _Tp>
23866: inline void
23866: return_temporary_buffer(_Tp* __p)
23866: { ::operator delete(__p); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _ForwardIterator, typename _Tp>
23866: class _Temporary_buffer
23866: {
23866:
23866:
23866:
23866: public:
23866: typedef _Tp value_type;
23866: typedef value_type* pointer;
23866: typedef pointer iterator;
23866: typedef ptrdiff_t size_type;
23866:
23866: protected:
23866: size_type _M_original_len;
23866: size_type _M_len;
23866: pointer _M_buffer;
23866:
23866: public:
23866:
23866: size_type
23866: size() const
23866: { return _M_len; }
23866:
23866:
23866: size_type
23866: requested_size() const
23866: { return _M_original_len; }
23866:
23866:
23866: iterator
23866: begin()
23866: { return _M_buffer; }
23866:
23866:
23866: iterator
23866: end()
23866: { return _M_buffer + _M_len; }
23866:
23866:
23866:
23866:
23866:
23866: _Temporary_buffer(_ForwardIterator __seed, size_type __original_len);
23866:
23866: ~_Temporary_buffer()
23866: {
23866: std::_Destroy(_M_buffer, _M_buffer + _M_len);
23866: std::__detail::__return_temporary_buffer(_M_buffer, _M_len);
23866: }
23866:
23866: private:
23866:
23866: _Temporary_buffer(const _Temporary_buffer&);
23866:
23866: void
23866: operator=(const _Temporary_buffer&);
23866: };
23866:
23866:
23866: template<bool>
23866: struct __uninitialized_construct_buf_dispatch
23866: {
23866: template<typename _Pointer, typename _ForwardIterator>
23866: static void
23866: __ucr(_Pointer __first, _Pointer __last,
23866: _ForwardIterator __seed)
23866: {
23866: if (__first == __last)
23866: return;
23866:
23866: _Pointer __cur = __first;
23866: try
23866: {
23866: std::_Construct(std::__addressof(*__first),
23866: std::move(*__seed));
23866: _Pointer __prev = __cur;
23866: ++__cur;
23866: for(; __cur != __last; ++__cur, ++__prev)
23866: std::_Construct(std::__addressof(*__cur),
23866: std::move(*__prev));
23866: *__seed = std::move(*__prev);
23866: }
23866: catch(...)
23866: {
23866: std::_Destroy(__first, __cur);
23866: throw;
23866: }
23866: }
23866: };
23866:
23866: template<>
23866: struct __uninitialized_construct_buf_dispatch<true>
23866: {
23866: template<typename _Pointer, typename _ForwardIterator>
23866: static void
23866: __ucr(_Pointer, _Pointer, _ForwardIterator) { }
23866: };
23866: # 243 "/usr/include/c++/10/bits/stl_tempbuf.h" 3
23866: template<typename _Pointer, typename _ForwardIterator>
23866: inline void
23866: __uninitialized_construct_buf(_Pointer __first, _Pointer __last,
23866: _ForwardIterator __seed)
23866: {
23866: typedef typename std::iterator_traits<_Pointer>::value_type
23866: _ValueType;
23866:
23866: std::__uninitialized_construct_buf_dispatch<
23866: __has_trivial_constructor(_ValueType)>::
23866: __ucr(__first, __last, __seed);
23866: }
23866:
23866: template<typename _ForwardIterator, typename _Tp>
23866: _Temporary_buffer<_ForwardIterator, _Tp>::
23866: _Temporary_buffer(_ForwardIterator __seed, size_type __original_len)
23866: : _M_original_len(__original_len), _M_len(0), _M_buffer(0)
23866: {
23866: std::pair<pointer, size_type> __p(
23866: std::get_temporary_buffer<value_type>(_M_original_len));
23866:
23866: if (__p.first)
23866: {
23866: try
23866: {
23866: std::__uninitialized_construct_buf(__p.first, __p.first + __p.second,
23866: __seed);
23866: _M_buffer = __p.first;
23866: _M_len = __p.second;
23866: }
23866: catch(...)
23866: {
23866: std::__detail::__return_temporary_buffer(__p.first, __p.second);
23866: throw;
23866: }
23866: }
23866: }
23866:
23866:
23866: }
23866: # 63 "/usr/include/c++/10/bits/stl_algo.h" 2 3
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/uniform_int_dist.h" 1 3
23866: # 32 "/usr/include/c++/10/bits/uniform_int_dist.h" 3
23866: #define _GLIBCXX_BITS_UNIFORM_INT_DIST_H
23866:
23866:
23866: # 1 "/usr/include/c++/10/limits" 1 3
23866: # 38 "/usr/include/c++/10/limits" 3
23866: #define _GLIBCXX_NUMERIC_LIMITS 1
23866:
23866:
23866: # 41 "/usr/include/c++/10/limits" 3
23866: # 89 "/usr/include/c++/10/limits" 3
23866: #define __glibcxx_float_has_denorm_loss false
23866:
23866:
23866: #define __glibcxx_float_traps false
23866:
23866:
23866: #define __glibcxx_float_tinyness_before false
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __glibcxx_double_has_denorm_loss false
23866:
23866:
23866: #define __glibcxx_double_traps false
23866:
23866:
23866: #define __glibcxx_double_tinyness_before false
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __glibcxx_long_double_has_denorm_loss false
23866:
23866:
23866: #define __glibcxx_long_double_traps false
23866:
23866:
23866: #define __glibcxx_long_double_tinyness_before false
23866:
23866:
23866:
23866:
23866: #define __glibcxx_signed_b(T,B) ((T)(-1) < 0)
23866:
23866: #define __glibcxx_min_b(T,B) (__glibcxx_signed_b (T,B) ? -__glibcxx_max_b (T,B) - 1 : (T)0)
23866:
23866:
23866: #define __glibcxx_max_b(T,B) (__glibcxx_signed_b (T,B) ? (((((T)1 << (__glibcxx_digits_b (T,B) - 1)) - 1) << 1) + 1) : ~(T)0)
23866:
23866:
23866:
23866: #define __glibcxx_digits_b(T,B) (B - __glibcxx_signed_b (T,B))
23866:
23866:
23866:
23866: #define __glibcxx_digits10_b(T,B) (__glibcxx_digits_b (T,B) * 643L / 2136)
23866:
23866:
23866: #define __glibcxx_signed(T) __glibcxx_signed_b (T, sizeof(T) * __CHAR_BIT__)
23866:
23866: #define __glibcxx_min(T) __glibcxx_min_b (T, sizeof(T) * __CHAR_BIT__)
23866:
23866: #define __glibcxx_max(T) __glibcxx_max_b (T, sizeof(T) * __CHAR_BIT__)
23866:
23866: #define __glibcxx_digits(T) __glibcxx_digits_b (T, sizeof(T) * __CHAR_BIT__)
23866:
23866: #define __glibcxx_digits10(T) __glibcxx_digits10_b (T, sizeof(T) * __CHAR_BIT__)
23866:
23866:
23866: #define __glibcxx_max_digits10(T) (2 + (T) * 643L / 2136)
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: enum float_round_style
23866: {
23866: round_indeterminate = -1,
23866: round_toward_zero = 0,
23866: round_to_nearest = 1,
23866: round_toward_infinity = 2,
23866: round_toward_neg_infinity = 3
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: enum float_denorm_style
23866: {
23866:
23866: denorm_indeterminate = -1,
23866:
23866: denorm_absent = 0,
23866:
23866: denorm_present = 1
23866: };
23866: # 202 "/usr/include/c++/10/limits" 3
23866: struct __numeric_limits_base
23866: {
23866:
23866:
23866: static constexpr bool is_specialized = false;
23866:
23866:
23866:
23866:
23866: static constexpr int digits = 0;
23866:
23866:
23866: static constexpr int digits10 = 0;
23866:
23866:
23866:
23866:
23866: static constexpr int max_digits10 = 0;
23866:
23866:
23866:
23866: static constexpr bool is_signed = false;
23866:
23866:
23866: static constexpr bool is_integer = false;
23866:
23866:
23866:
23866:
23866: static constexpr bool is_exact = false;
23866:
23866:
23866:
23866: static constexpr int radix = 0;
23866:
23866:
23866:
23866: static constexpr int min_exponent = 0;
23866:
23866:
23866:
23866: static constexpr int min_exponent10 = 0;
23866:
23866:
23866:
23866:
23866: static constexpr int max_exponent = 0;
23866:
23866:
23866:
23866: static constexpr int max_exponent10 = 0;
23866:
23866:
23866: static constexpr bool has_infinity = false;
23866:
23866:
23866:
23866: static constexpr bool has_quiet_NaN = false;
23866:
23866:
23866:
23866: static constexpr bool has_signaling_NaN = false;
23866:
23866:
23866: static constexpr float_denorm_style has_denorm = denorm_absent;
23866:
23866:
23866:
23866: static constexpr bool has_denorm_loss = false;
23866:
23866:
23866:
23866: static constexpr bool is_iec559 = false;
23866:
23866:
23866:
23866:
23866: static constexpr bool is_bounded = false;
23866: # 288 "/usr/include/c++/10/limits" 3
23866: static constexpr bool is_modulo = false;
23866:
23866:
23866: static constexpr bool traps = false;
23866:
23866:
23866: static constexpr bool tinyness_before = false;
23866:
23866:
23866:
23866:
23866: static constexpr float_round_style round_style =
23866: round_toward_zero;
23866: };
23866: # 311 "/usr/include/c++/10/limits" 3
23866: template<typename _Tp>
23866: struct numeric_limits : public __numeric_limits_base
23866: {
23866:
23866:
23866: static constexpr _Tp
23866: min() noexcept { return _Tp(); }
23866:
23866:
23866: static constexpr _Tp
23866: max() noexcept { return _Tp(); }
23866:
23866:
23866:
23866:
23866: static constexpr _Tp
23866: lowest() noexcept { return _Tp(); }
23866:
23866:
23866:
23866:
23866: static constexpr _Tp
23866: epsilon() noexcept { return _Tp(); }
23866:
23866:
23866: static constexpr _Tp
23866: round_error() noexcept { return _Tp(); }
23866:
23866:
23866: static constexpr _Tp
23866: infinity() noexcept { return _Tp(); }
23866:
23866:
23866:
23866: static constexpr _Tp
23866: quiet_NaN() noexcept { return _Tp(); }
23866:
23866:
23866:
23866: static constexpr _Tp
23866: signaling_NaN() noexcept { return _Tp(); }
23866:
23866:
23866:
23866:
23866: static constexpr _Tp
23866: denorm_min() noexcept { return _Tp(); }
23866: };
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct numeric_limits<const _Tp>
23866: : public numeric_limits<_Tp> { };
23866:
23866: template<typename _Tp>
23866: struct numeric_limits<volatile _Tp>
23866: : public numeric_limits<_Tp> { };
23866:
23866: template<typename _Tp>
23866: struct numeric_limits<const volatile _Tp>
23866: : public numeric_limits<_Tp> { };
23866: # 383 "/usr/include/c++/10/limits" 3
23866: template<>
23866: struct numeric_limits<bool>
23866: {
23866: static constexpr bool is_specialized = true;
23866:
23866: static constexpr bool
23866: min() noexcept { return false; }
23866:
23866: static constexpr bool
23866: max() noexcept { return true; }
23866:
23866:
23866: static constexpr bool
23866: lowest() noexcept { return min(); }
23866:
23866: static constexpr int digits = 1;
23866: static constexpr int digits10 = 0;
23866:
23866: static constexpr int max_digits10 = 0;
23866:
23866: static constexpr bool is_signed = false;
23866: static constexpr bool is_integer = true;
23866: static constexpr bool is_exact = true;
23866: static constexpr int radix = 2;
23866:
23866: static constexpr bool
23866: epsilon() noexcept { return false; }
23866:
23866: static constexpr bool
23866: round_error() noexcept { return false; }
23866:
23866: static constexpr int min_exponent = 0;
23866: static constexpr int min_exponent10 = 0;
23866: static constexpr int max_exponent = 0;
23866: static constexpr int max_exponent10 = 0;
23866:
23866: static constexpr bool has_infinity = false;
23866: static constexpr bool has_quiet_NaN = false;
23866: static constexpr bool has_signaling_NaN = false;
23866: static constexpr float_denorm_style has_denorm
23866: = denorm_absent;
23866: static constexpr bool has_denorm_loss = false;
23866:
23866: static constexpr bool
23866: infinity() noexcept { return false; }
23866:
23866: static constexpr bool
23866: quiet_NaN() noexcept { return false; }
23866:
23866: static constexpr bool
23866: signaling_NaN() noexcept { return false; }
23866:
23866: static constexpr bool
23866: denorm_min() noexcept { return false; }
23866:
23866: static constexpr bool is_iec559 = false;
23866: static constexpr bool is_bounded = true;
23866: static constexpr bool is_modulo = false;
23866:
23866:
23866:
23866:
23866: static constexpr bool traps = true;
23866: static constexpr bool tinyness_before = false;
23866: static constexpr float_round_style round_style
23866: = round_toward_zero;
23866: };
23866:
23866:
23866: template<>
23866: struct numeric_limits<char>
23866: {
23866: static constexpr bool is_specialized = true;
23866:
23866: static constexpr char
23866: min() noexcept { return (((char)(-1) < 0) ? -(((char)(-1) < 0) ? (((((char)1 << ((sizeof(char) * 8 - ((char)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char)0) - 1 : (char)0); }
23866:
23866: static constexpr char
23866: max() noexcept { return (((char)(-1) < 0) ? (((((char)1 << ((sizeof(char) * 8 - ((char)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char)0); }
23866:
23866:
23866: static constexpr char
23866: lowest() noexcept { return min(); }
23866:
23866:
23866: static constexpr int digits = (sizeof(char) * 8 - ((char)(-1) < 0));
23866: static constexpr int digits10 = ((sizeof(char) * 8 - ((char)(-1) < 0)) * 643L / 2136);
23866:
23866: static constexpr int max_digits10 = 0;
23866:
23866: static constexpr bool is_signed = ((char)(-1) < 0);
23866: static constexpr bool is_integer = true;
23866: static constexpr bool is_exact = true;
23866: static constexpr int radix = 2;
23866:
23866: static constexpr char
23866: epsilon() noexcept { return 0; }
23866:
23866: static constexpr char
23866: round_error() noexcept { return 0; }
23866:
23866: static constexpr int min_exponent = 0;
23866: static constexpr int min_exponent10 = 0;
23866: static constexpr int max_exponent = 0;
23866: static constexpr int max_exponent10 = 0;
23866:
23866: static constexpr bool has_infinity = false;
23866: static constexpr bool has_quiet_NaN = false;
23866: static constexpr bool has_signaling_NaN = false;
23866: static constexpr float_denorm_style has_denorm
23866: = denorm_absent;
23866: static constexpr bool has_denorm_loss = false;
23866:
23866: static constexpr
23866: char infinity() noexcept { return char(); }
23866:
23866: static constexpr char
23866: quiet_NaN() noexcept { return char(); }
23866:
23866: static constexpr char
23866: signaling_NaN() noexcept { return char(); }
23866:
23866: static constexpr char
23866: denorm_min() noexcept { return static_cast<char>(0); }
23866:
23866: static constexpr bool is_iec559 = false;
23866: static constexpr bool is_bounded = true;
23866: static constexpr bool is_modulo = !is_signed;
23866:
23866: static constexpr bool traps = true;
23866: static constexpr bool tinyness_before = false;
23866: static constexpr float_round_style round_style
23866: = round_toward_zero;
23866: };
23866:
23866:
23866: template<>
23866: struct numeric_limits<signed char>
23866: {
23866: static constexpr bool is_specialized = true;
23866:
23866: static constexpr signed char
23866: min() noexcept { return -0x7f - 1; }
23866:
23866: static constexpr signed char
23866: max() noexcept { return 0x7f; }
23866:
23866:
23866: static constexpr signed char
23866: lowest() noexcept { return min(); }
23866:
23866:
23866: static constexpr int digits = (sizeof(signed char) * 8 - ((signed char)(-1) < 0));
23866: static constexpr int digits10
23866: = ((sizeof(signed char) * 8 - ((signed char)(-1) < 0)) * 643L / 2136);
23866:
23866: static constexpr int max_digits10 = 0;
23866:
23866: static constexpr bool is_signed = true;
23866: static constexpr bool is_integer = true;
23866: static constexpr bool is_exact = true;
23866: static constexpr int radix = 2;
23866:
23866: static constexpr signed char
23866: epsilon() noexcept { return 0; }
23866:
23866: static constexpr signed char
23866: round_error() noexcept { return 0; }
23866:
23866: static constexpr int min_exponent = 0;
23866: static constexpr int min_exponent10 = 0;
23866: static constexpr int max_exponent = 0;
23866: static constexpr int max_exponent10 = 0;
23866:
23866: static constexpr bool has_infinity = false;
23866: static constexpr bool has_quiet_NaN = false;
23866: static constexpr bool has_signaling_NaN = false;
23866: static constexpr float_denorm_style has_denorm
23866: = denorm_absent;
23866: static constexpr bool has_denorm_loss = false;
23866:
23866: static constexpr signed char
23866: infinity() noexcept { return static_cast<signed char>(0); }
23866:
23866: static constexpr signed char
23866: quiet_NaN() noexcept { return static_cast<signed char>(0); }
23866:
23866: static constexpr signed char
23866: signaling_NaN() noexcept
23866: { return static_cast<signed char>(0); }
23866:
23866: static constexpr signed char
23866: denorm_min() noexcept
23866: { return static_cast<signed char>(0); }
23866:
23866: static constexpr bool is_iec559 = false;
23866: static constexpr bool is_bounded = true;
23866: static constexpr bool is_modulo = false;
23866:
23866: static constexpr bool traps = true;
23866: static constexpr bool tinyness_before = false;
23866: static constexpr float_round_style round_style
23866: = round_toward_zero;
23866: };
23866:
23866:
23866: template<>
23866: struct numeric_limits<unsigned char>
23866: {
23866: static constexpr bool is_specialized = true;
23866:
23866: static constexpr unsigned char
23866: min() noexcept { return 0; }
23866:
23866: static constexpr unsigned char
23866: max() noexcept { return 0x7f * 2U + 1; }
23866:
23866:
23866: static constexpr unsigned char
23866: lowest() noexcept { return min(); }
23866:
23866:
23866: static constexpr int digits
23866: = (sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0));
23866: static constexpr int digits10
23866: = ((sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)) * 643L / 2136);
23866:
23866: static constexpr int max_digits10 = 0;
23866:
23866: static constexpr bool is_signed = false;
23866: static constexpr bool is_integer = true;
23866: static constexpr bool is_exact = true;
23866: static constexpr int radix = 2;
23866:
23866: static constexpr unsigned char
23866: epsilon() noexcept { return 0; }
23866:
23866: static constexpr unsigned char
23866: round_error() noexcept { return 0; }
23866:
23866: static constexpr int min_exponent = 0;
23866: static constexpr int min_exponent10 = 0;
23866: static constexpr int max_exponent = 0;
23866: static constexpr int max_exponent10 = 0;
23866:
23866: static constexpr bool has_infinity = false;
23866: static constexpr bool has_quiet_NaN = false;
23866: static constexpr bool has_signaling_NaN = false;
23866: static constexpr float_denorm_style has_denorm
23866: = denorm_absent;
23866: static constexpr bool has_denorm_loss = false;
23866:
23866: static constexpr unsigned char
23866: infinity() noexcept
23866: { return static_cast<unsigned char>(0); }
23866:
23866: static constexpr unsigned char
23866: quiet_NaN() noexcept
23866: { return static_cast<unsigned char>(0); }
23866:
23866: static constexpr unsigned char
23866: signaling_NaN() noexcept
23866: { return static_cast<unsigned char>(0); }
23866:
23866: static constexpr unsigned char
23866: denorm_min() noexcept
23866: { return static_cast<unsigned char>(0); }
23866:
23866: static constexpr bool is_iec559 = false;
23866: static constexpr bool is_bounded = true;
23866: static constexpr bool is_modulo = true;
23866:
23866: static constexpr bool traps = true;
23866: static constexpr bool tinyness_before = false;
23866: static constexpr float_round_style round_style
23866: = round_toward_zero;
23866: };
23866:
23866:
23866: template<>
23866: struct numeric_limits<wchar_t>
23866: {
23866: static constexpr bool is_specialized = true;
23866:
23866: static constexpr wchar_t
23866: min() noexcept { return (((wchar_t)(-1) < 0) ? -(((wchar_t)(-1) < 0) ? (((((wchar_t)1 << ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(wchar_t)0) - 1 : (wchar_t)0); }
23866:
23866: static constexpr wchar_t
23866: max() noexcept { return (((wchar_t)(-1) < 0) ? (((((wchar_t)1 << ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(wchar_t)0); }
23866:
23866:
23866: static constexpr wchar_t
23866: lowest() noexcept { return min(); }
23866:
23866:
23866: static constexpr int digits = (sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0));
23866: static constexpr int digits10
23866: = ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) * 643L / 2136);
23866:
23866: static constexpr int max_digits10 = 0;
23866:
23866: static constexpr bool is_signed = ((wchar_t)(-1) < 0);
23866: static constexpr bool is_integer = true;
23866: static constexpr bool is_exact = true;
23866: static constexpr int radix = 2;
23866:
23866: static constexpr wchar_t
23866: epsilon() noexcept { return 0; }
23866:
23866: static constexpr wchar_t
23866: round_error() noexcept { return 0; }
23866:
23866: static constexpr int min_exponent = 0;
23866: static constexpr int min_exponent10 = 0;
23866: static constexpr int max_exponent = 0;
23866: static constexpr int max_exponent10 = 0;
23866:
23866: static constexpr bool has_infinity = false;
23866: static constexpr bool has_quiet_NaN = false;
23866: static constexpr bool has_signaling_NaN = false;
23866: static constexpr float_denorm_style has_denorm
23866: = denorm_absent;
23866: static constexpr bool has_denorm_loss = false;
23866:
23866: static constexpr wchar_t
23866: infinity() noexcept { return wchar_t(); }
23866:
23866: static constexpr wchar_t
23866: quiet_NaN() noexcept { return wchar_t(); }
23866:
23866: static constexpr wchar_t
23866: signaling_NaN() noexcept { return wchar_t(); }
23866:
23866: static constexpr wchar_t
23866: denorm_min() noexcept { return wchar_t(); }
23866:
23866: static constexpr bool is_iec559 = false;
23866: static constexpr bool is_bounded = true;
23866: static constexpr bool is_modulo = !is_signed;
23866:
23866: static constexpr bool traps = true;
23866: static constexpr bool tinyness_before = false;
23866: static constexpr float_round_style round_style
23866: = round_toward_zero;
23866: };
23866: # 796 "/usr/include/c++/10/limits" 3
23866: template<>
23866: struct numeric_limits<char16_t>
23866: {
23866: static constexpr bool is_specialized = true;
23866:
23866: static constexpr char16_t
23866: min() noexcept { return (((char16_t)(-1) < 0) ? -(((char16_t)(-1) < 0) ? (((((char16_t)1 << ((sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char16_t)0) - 1 : (char16_t)0); }
23866:
23866: static constexpr char16_t
23866: max() noexcept { return (((char16_t)(-1) < 0) ? (((((char16_t)1 << ((sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char16_t)0); }
23866:
23866: static constexpr char16_t
23866: lowest() noexcept { return min(); }
23866:
23866: static constexpr int digits = (sizeof(char16_t) * 8 - ((char16_t)(-1) < 0));
23866: static constexpr int digits10 = ((sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)) * 643L / 2136);
23866: static constexpr int max_digits10 = 0;
23866: static constexpr bool is_signed = ((char16_t)(-1) < 0);
23866: static constexpr bool is_integer = true;
23866: static constexpr bool is_exact = true;
23866: static constexpr int radix = 2;
23866:
23866: static constexpr char16_t
23866: epsilon() noexcept { return 0; }
23866:
23866: static constexpr char16_t
23866: round_error() noexcept { return 0; }
23866:
23866: static constexpr int min_exponent = 0;
23866: static constexpr int min_exponent10 = 0;
23866: static constexpr int max_exponent = 0;
23866: static constexpr int max_exponent10 = 0;
23866:
23866: static constexpr bool has_infinity = false;
23866: static constexpr bool has_quiet_NaN = false;
23866: static constexpr bool has_signaling_NaN = false;
23866: static constexpr float_denorm_style has_denorm = denorm_absent;
23866: static constexpr bool has_denorm_loss = false;
23866:
23866: static constexpr char16_t
23866: infinity() noexcept { return char16_t(); }
23866:
23866: static constexpr char16_t
23866: quiet_NaN() noexcept { return char16_t(); }
23866:
23866: static constexpr char16_t
23866: signaling_NaN() noexcept { return char16_t(); }
23866:
23866: static constexpr char16_t
23866: denorm_min() noexcept { return char16_t(); }
23866:
23866: static constexpr bool is_iec559 = false;
23866: static constexpr bool is_bounded = true;
23866: static constexpr bool is_modulo = !is_signed;
23866:
23866: static constexpr bool traps = true;
23866: static constexpr bool tinyness_before = false;
23866: static constexpr float_round_style round_style = round_toward_zero;
23866: };
23866:
23866:
23866: template<>
23866: struct numeric_limits<char32_t>
23866: {
23866: static constexpr bool is_specialized = true;
23866:
23866: static constexpr char32_t
23866: min() noexcept { return (((char32_t)(-1) < 0) ? -(((char32_t)(-1) < 0) ? (((((char32_t)1 << ((sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char32_t)0) - 1 : (char32_t)0); }
23866:
23866: static constexpr char32_t
23866: max() noexcept { return (((char32_t)(-1) < 0) ? (((((char32_t)1 << ((sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char32_t)0); }
23866:
23866: static constexpr char32_t
23866: lowest() noexcept { return min(); }
23866:
23866: static constexpr int digits = (sizeof(char32_t) * 8 - ((char32_t)(-1) < 0));
23866: static constexpr int digits10 = ((sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)) * 643L / 2136);
23866: static constexpr int max_digits10 = 0;
23866: static constexpr bool is_signed = ((char32_t)(-1) < 0);
23866: static constexpr bool is_integer = true;
23866: static constexpr bool is_exact = true;
23866: static constexpr int radix = 2;
23866:
23866: static constexpr char32_t
23866: epsilon() noexcept { return 0; }
23866:
23866: static constexpr char32_t
23866: round_error() noexcept { return 0; }
23866:
23866: static constexpr int min_exponent = 0;
23866: static constexpr int min_exponent10 = 0;
23866: static constexpr int max_exponent = 0;
23866: static constexpr int max_exponent10 = 0;
23866:
23866: static constexpr bool has_infinity = false;
23866: static constexpr bool has_quiet_NaN = false;
23866: static constexpr bool has_signaling_NaN = false;
23866: static constexpr float_denorm_style has_denorm = denorm_absent;
23866: static constexpr bool has_denorm_loss = false;
23866:
23866: static constexpr char32_t
23866: infinity() noexcept { return char32_t(); }
23866:
23866: static constexpr char32_t
23866: quiet_NaN() noexcept { return char32_t(); }
23866:
23866: static constexpr char32_t
23866: signaling_NaN() noexcept { return char32_t(); }
23866:
23866: static constexpr char32_t
23866: denorm_min() noexcept { return char32_t(); }
23866:
23866: static constexpr bool is_iec559 = false;
23866: static constexpr bool is_bounded = true;
23866: static constexpr bool is_modulo = !is_signed;
23866:
23866: static constexpr bool traps = true;
23866: static constexpr bool tinyness_before = false;
23866: static constexpr float_round_style round_style = round_toward_zero;
23866: };
23866:
23866:
23866:
23866: template<>
23866: struct numeric_limits<short>
23866: {
23866: static constexpr bool is_specialized = true;
23866:
23866: static constexpr short
23866: min() noexcept { return -0x7fff - 1; }
23866:
23866: static constexpr short
23866: max() noexcept { return 0x7fff; }
23866:
23866:
23866: static constexpr short
23866: lowest() noexcept { return min(); }
23866:
23866:
23866: static constexpr int digits = (sizeof(short) * 8 - ((short)(-1) < 0));
23866: static constexpr int digits10 = ((sizeof(short) * 8 - ((short)(-1) < 0)) * 643L / 2136);
23866:
23866: static constexpr int max_digits10 = 0;
23866:
23866: static constexpr bool is_signed = true;
23866: static constexpr bool is_integer = true;
23866: static constexpr bool is_exact = true;
23866: static constexpr int radix = 2;
23866:
23866: static constexpr short
23866: epsilon() noexcept { return 0; }
23866:
23866: static constexpr short
23866: round_error() noexcept { return 0; }
23866:
23866: static constexpr int min_exponent = 0;
23866: static constexpr int min_exponent10 = 0;
23866: static constexpr int max_exponent = 0;
23866: static constexpr int max_exponent10 = 0;
23866:
23866: static constexpr bool has_infinity = false;
23866: static constexpr bool has_quiet_NaN = false;
23866: static constexpr bool has_signaling_NaN = false;
23866: static constexpr float_denorm_style has_denorm
23866: = denorm_absent;
23866: static constexpr bool has_denorm_loss = false;
23866:
23866: static constexpr short
23866: infinity() noexcept { return short(); }
23866:
23866: static constexpr short
23866: quiet_NaN() noexcept { return short(); }
23866:
23866: static constexpr short
23866: signaling_NaN() noexcept { return short(); }
23866:
23866: static constexpr short
23866: denorm_min() noexcept { return short(); }
23866:
23866: static constexpr bool is_iec559 = false;
23866: static constexpr bool is_bounded = true;
23866: static constexpr bool is_modulo = false;
23866:
23866: static constexpr bool traps = true;
23866: static constexpr bool tinyness_before = false;
23866: static constexpr float_round_style round_style
23866: = round_toward_zero;
23866: };
23866:
23866:
23866: template<>
23866: struct numeric_limits<unsigned short>
23866: {
23866: static constexpr bool is_specialized = true;
23866:
23866: static constexpr unsigned short
23866: min() noexcept { return 0; }
23866:
23866: static constexpr unsigned short
23866: max() noexcept { return 0x7fff * 2U + 1; }
23866:
23866:
23866: static constexpr unsigned short
23866: lowest() noexcept { return min(); }
23866:
23866:
23866: static constexpr int digits
23866: = (sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0));
23866: static constexpr int digits10
23866: = ((sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)) * 643L / 2136);
23866:
23866: static constexpr int max_digits10 = 0;
23866:
23866: static constexpr bool is_signed = false;
23866: static constexpr bool is_integer = true;
23866: static constexpr bool is_exact = true;
23866: static constexpr int radix = 2;
23866:
23866: static constexpr unsigned short
23866: epsilon() noexcept { return 0; }
23866:
23866: static constexpr unsigned short
23866: round_error() noexcept { return 0; }
23866:
23866: static constexpr int min_exponent = 0;
23866: static constexpr int min_exponent10 = 0;
23866: static constexpr int max_exponent = 0;
23866: static constexpr int max_exponent10 = 0;
23866:
23866: static constexpr bool has_infinity = false;
23866: static constexpr bool has_quiet_NaN = false;
23866: static constexpr bool has_signaling_NaN = false;
23866: static constexpr float_denorm_style has_denorm
23866: = denorm_absent;
23866: static constexpr bool has_denorm_loss = false;
23866:
23866: static constexpr unsigned short
23866: infinity() noexcept
23866: { return static_cast<unsigned short>(0); }
23866:
23866: static constexpr unsigned short
23866: quiet_NaN() noexcept
23866: { return static_cast<unsigned short>(0); }
23866:
23866: static constexpr unsigned short
23866: signaling_NaN() noexcept
23866: { return static_cast<unsigned short>(0); }
23866:
23866: static constexpr unsigned short
23866: denorm_min() noexcept
23866: { return static_cast<unsigned short>(0); }
23866:
23866: static constexpr bool is_iec559 = false;
23866: static constexpr bool is_bounded = true;
23866: static constexpr bool is_modulo = true;
23866:
23866: static constexpr bool traps = true;
23866: static constexpr bool tinyness_before = false;
23866: static constexpr float_round_style round_style
23866: = round_toward_zero;
23866: };
23866:
23866:
23866: template<>
23866: struct numeric_limits<int>
23866: {
23866: static constexpr bool is_specialized = true;
23866:
23866: static constexpr int
23866: min() noexcept { return -0x7fffffff - 1; }
23866:
23866: static constexpr int
23866: max() noexcept { return 0x7fffffff; }
23866:
23866:
23866: static constexpr int
23866: lowest() noexcept { return min(); }
23866:
23866:
23866: static constexpr int digits = (sizeof(int) * 8 - ((int)(-1) < 0));
23866: static constexpr int digits10 = ((sizeof(int) * 8 - ((int)(-1) < 0)) * 643L / 2136);
23866:
23866: static constexpr int max_digits10 = 0;
23866:
23866: static constexpr bool is_signed = true;
23866: static constexpr bool is_integer = true;
23866: static constexpr bool is_exact = true;
23866: static constexpr int radix = 2;
23866:
23866: static constexpr int
23866: epsilon() noexcept { return 0; }
23866:
23866: static constexpr int
23866: round_error() noexcept { return 0; }
23866:
23866: static constexpr int min_exponent = 0;
23866: static constexpr int min_exponent10 = 0;
23866: static constexpr int max_exponent = 0;
23866: static constexpr int max_exponent10 = 0;
23866:
23866: static constexpr bool has_infinity = false;
23866: static constexpr bool has_quiet_NaN = false;
23866: static constexpr bool has_signaling_NaN = false;
23866: static constexpr float_denorm_style has_denorm
23866: = denorm_absent;
23866: static constexpr bool has_denorm_loss = false;
23866:
23866: static constexpr int
23866: infinity() noexcept { return static_cast<int>(0); }
23866:
23866: static constexpr int
23866: quiet_NaN() noexcept { return static_cast<int>(0); }
23866:
23866: static constexpr int
23866: signaling_NaN() noexcept { return static_cast<int>(0); }
23866:
23866: static constexpr int
23866: denorm_min() noexcept { return static_cast<int>(0); }
23866:
23866: static constexpr bool is_iec559 = false;
23866: static constexpr bool is_bounded = true;
23866: static constexpr bool is_modulo = false;
23866:
23866: static constexpr bool traps = true;
23866: static constexpr bool tinyness_before = false;
23866: static constexpr float_round_style round_style
23866: = round_toward_zero;
23866: };
23866:
23866:
23866: template<>
23866: struct numeric_limits<unsigned int>
23866: {
23866: static constexpr bool is_specialized = true;
23866:
23866: static constexpr unsigned int
23866: min() noexcept { return 0; }
23866:
23866: static constexpr unsigned int
23866: max() noexcept { return 0x7fffffff * 2U + 1; }
23866:
23866:
23866: static constexpr unsigned int
23866: lowest() noexcept { return min(); }
23866:
23866:
23866: static constexpr int digits
23866: = (sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0));
23866: static constexpr int digits10
23866: = ((sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)) * 643L / 2136);
23866:
23866: static constexpr int max_digits10 = 0;
23866:
23866: static constexpr bool is_signed = false;
23866: static constexpr bool is_integer = true;
23866: static constexpr bool is_exact = true;
23866: static constexpr int radix = 2;
23866:
23866: static constexpr unsigned int
23866: epsilon() noexcept { return 0; }
23866:
23866: static constexpr unsigned int
23866: round_error() noexcept { return 0; }
23866:
23866: static constexpr int min_exponent = 0;
23866: static constexpr int min_exponent10 = 0;
23866: static constexpr int max_exponent = 0;
23866: static constexpr int max_exponent10 = 0;
23866:
23866: static constexpr bool has_infinity = false;
23866: static constexpr bool has_quiet_NaN = false;
23866: static constexpr bool has_signaling_NaN = false;
23866: static constexpr float_denorm_style has_denorm
23866: = denorm_absent;
23866: static constexpr bool has_denorm_loss = false;
23866:
23866: static constexpr unsigned int
23866: infinity() noexcept { return static_cast<unsigned int>(0); }
23866:
23866: static constexpr unsigned int
23866: quiet_NaN() noexcept
23866: { return static_cast<unsigned int>(0); }
23866:
23866: static constexpr unsigned int
23866: signaling_NaN() noexcept
23866: { return static_cast<unsigned int>(0); }
23866:
23866: static constexpr unsigned int
23866: denorm_min() noexcept
23866: { return static_cast<unsigned int>(0); }
23866:
23866: static constexpr bool is_iec559 = false;
23866: static constexpr bool is_bounded = true;
23866: static constexpr bool is_modulo = true;
23866:
23866: static constexpr bool traps = true;
23866: static constexpr bool tinyness_before = false;
23866: static constexpr float_round_style round_style
23866: = round_toward_zero;
23866: };
23866:
23866:
23866: template<>
23866: struct numeric_limits<long>
23866: {
23866: static constexpr bool is_specialized = true;
23866:
23866: static constexpr long
23866: min() noexcept { return -0x7fffffffL - 1; }
23866:
23866: static constexpr long
23866: max() noexcept { return 0x7fffffffL; }
23866:
23866:
23866: static constexpr long
23866: lowest() noexcept { return min(); }
23866:
23866:
23866: static constexpr int digits = (sizeof(long) * 8 - ((long)(-1) < 0));
23866: static constexpr int digits10 = ((sizeof(long) * 8 - ((long)(-1) < 0)) * 643L / 2136);
23866:
23866: static constexpr int max_digits10 = 0;
23866:
23866: static constexpr bool is_signed = true;
23866: static constexpr bool is_integer = true;
23866: static constexpr bool is_exact = true;
23866: static constexpr int radix = 2;
23866:
23866: static constexpr long
23866: epsilon() noexcept { return 0; }
23866:
23866: static constexpr long
23866: round_error() noexcept { return 0; }
23866:
23866: static constexpr int min_exponent = 0;
23866: static constexpr int min_exponent10 = 0;
23866: static constexpr int max_exponent = 0;
23866: static constexpr int max_exponent10 = 0;
23866:
23866: static constexpr bool has_infinity = false;
23866: static constexpr bool has_quiet_NaN = false;
23866: static constexpr bool has_signaling_NaN = false;
23866: static constexpr float_denorm_style has_denorm
23866: = denorm_absent;
23866: static constexpr bool has_denorm_loss = false;
23866:
23866: static constexpr long
23866: infinity() noexcept { return static_cast<long>(0); }
23866:
23866: static constexpr long
23866: quiet_NaN() noexcept { return static_cast<long>(0); }
23866:
23866: static constexpr long
23866: signaling_NaN() noexcept { return static_cast<long>(0); }
23866:
23866: static constexpr long
23866: denorm_min() noexcept { return static_cast<long>(0); }
23866:
23866: static constexpr bool is_iec559 = false;
23866: static constexpr bool is_bounded = true;
23866: static constexpr bool is_modulo = false;
23866:
23866: static constexpr bool traps = true;
23866: static constexpr bool tinyness_before = false;
23866: static constexpr float_round_style round_style
23866: = round_toward_zero;
23866: };
23866:
23866:
23866: template<>
23866: struct numeric_limits<unsigned long>
23866: {
23866: static constexpr bool is_specialized = true;
23866:
23866: static constexpr unsigned long
23866: min() noexcept { return 0; }
23866:
23866: static constexpr unsigned long
23866: max() noexcept { return 0x7fffffffL * 2UL + 1; }
23866:
23866:
23866: static constexpr unsigned long
23866: lowest() noexcept { return min(); }
23866:
23866:
23866: static constexpr int digits
23866: = (sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0));
23866: static constexpr int digits10
23866: = ((sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)) * 643L / 2136);
23866:
23866: static constexpr int max_digits10 = 0;
23866:
23866: static constexpr bool is_signed = false;
23866: static constexpr bool is_integer = true;
23866: static constexpr bool is_exact = true;
23866: static constexpr int radix = 2;
23866:
23866: static constexpr unsigned long
23866: epsilon() noexcept { return 0; }
23866:
23866: static constexpr unsigned long
23866: round_error() noexcept { return 0; }
23866:
23866: static constexpr int min_exponent = 0;
23866: static constexpr int min_exponent10 = 0;
23866: static constexpr int max_exponent = 0;
23866: static constexpr int max_exponent10 = 0;
23866:
23866: static constexpr bool has_infinity = false;
23866: static constexpr bool has_quiet_NaN = false;
23866: static constexpr bool has_signaling_NaN = false;
23866: static constexpr float_denorm_style has_denorm
23866: = denorm_absent;
23866: static constexpr bool has_denorm_loss = false;
23866:
23866: static constexpr unsigned long
23866: infinity() noexcept
23866: { return static_cast<unsigned long>(0); }
23866:
23866: static constexpr unsigned long
23866: quiet_NaN() noexcept
23866: { return static_cast<unsigned long>(0); }
23866:
23866: static constexpr unsigned long
23866: signaling_NaN() noexcept
23866: { return static_cast<unsigned long>(0); }
23866:
23866: static constexpr unsigned long
23866: denorm_min() noexcept
23866: { return static_cast<unsigned long>(0); }
23866:
23866: static constexpr bool is_iec559 = false;
23866: static constexpr bool is_bounded = true;
23866: static constexpr bool is_modulo = true;
23866:
23866: static constexpr bool traps = true;
23866: static constexpr bool tinyness_before = false;
23866: static constexpr float_round_style round_style
23866: = round_toward_zero;
23866: };
23866:
23866:
23866: template<>
23866: struct numeric_limits<long long>
23866: {
23866: static constexpr bool is_specialized = true;
23866:
23866: static constexpr long long
23866: min() noexcept { return -0x7fffffffffffffffLL - 1; }
23866:
23866: static constexpr long long
23866: max() noexcept { return 0x7fffffffffffffffLL; }
23866:
23866:
23866: static constexpr long long
23866: lowest() noexcept { return min(); }
23866:
23866:
23866: static constexpr int digits
23866: = (sizeof(long long) * 8 - ((long long)(-1) < 0));
23866: static constexpr int digits10
23866: = ((sizeof(long long) * 8 - ((long long)(-1) < 0)) * 643L / 2136);
23866:
23866: static constexpr int max_digits10 = 0;
23866:
23866: static constexpr bool is_signed = true;
23866: static constexpr bool is_integer = true;
23866: static constexpr bool is_exact = true;
23866: static constexpr int radix = 2;
23866:
23866: static constexpr long long
23866: epsilon() noexcept { return 0; }
23866:
23866: static constexpr long long
23866: round_error() noexcept { return 0; }
23866:
23866: static constexpr int min_exponent = 0;
23866: static constexpr int min_exponent10 = 0;
23866: static constexpr int max_exponent = 0;
23866: static constexpr int max_exponent10 = 0;
23866:
23866: static constexpr bool has_infinity = false;
23866: static constexpr bool has_quiet_NaN = false;
23866: static constexpr bool has_signaling_NaN = false;
23866: static constexpr float_denorm_style has_denorm
23866: = denorm_absent;
23866: static constexpr bool has_denorm_loss = false;
23866:
23866: static constexpr long long
23866: infinity() noexcept { return static_cast<long long>(0); }
23866:
23866: static constexpr long long
23866: quiet_NaN() noexcept { return static_cast<long long>(0); }
23866:
23866: static constexpr long long
23866: signaling_NaN() noexcept
23866: { return static_cast<long long>(0); }
23866:
23866: static constexpr long long
23866: denorm_min() noexcept { return static_cast<long long>(0); }
23866:
23866: static constexpr bool is_iec559 = false;
23866: static constexpr bool is_bounded = true;
23866: static constexpr bool is_modulo = false;
23866:
23866: static constexpr bool traps = true;
23866: static constexpr bool tinyness_before = false;
23866: static constexpr float_round_style round_style
23866: = round_toward_zero;
23866: };
23866:
23866:
23866: template<>
23866: struct numeric_limits<unsigned long long>
23866: {
23866: static constexpr bool is_specialized = true;
23866:
23866: static constexpr unsigned long long
23866: min() noexcept { return 0; }
23866:
23866: static constexpr unsigned long long
23866: max() noexcept { return 0x7fffffffffffffffLL * 2ULL + 1; }
23866:
23866:
23866: static constexpr unsigned long long
23866: lowest() noexcept { return min(); }
23866:
23866:
23866: static constexpr int digits
23866: = (sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0));
23866: static constexpr int digits10
23866: = ((sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)) * 643L / 2136);
23866:
23866: static constexpr int max_digits10 = 0;
23866:
23866: static constexpr bool is_signed = false;
23866: static constexpr bool is_integer = true;
23866: static constexpr bool is_exact = true;
23866: static constexpr int radix = 2;
23866:
23866: static constexpr unsigned long long
23866: epsilon() noexcept { return 0; }
23866:
23866: static constexpr unsigned long long
23866: round_error() noexcept { return 0; }
23866:
23866: static constexpr int min_exponent = 0;
23866: static constexpr int min_exponent10 = 0;
23866: static constexpr int max_exponent = 0;
23866: static constexpr int max_exponent10 = 0;
23866:
23866: static constexpr bool has_infinity = false;
23866: static constexpr bool has_quiet_NaN = false;
23866: static constexpr bool has_signaling_NaN = false;
23866: static constexpr float_denorm_style has_denorm
23866: = denorm_absent;
23866: static constexpr bool has_denorm_loss = false;
23866:
23866: static constexpr unsigned long long
23866: infinity() noexcept
23866: { return static_cast<unsigned long long>(0); }
23866:
23866: static constexpr unsigned long long
23866: quiet_NaN() noexcept
23866: { return static_cast<unsigned long long>(0); }
23866:
23866: static constexpr unsigned long long
23866: signaling_NaN() noexcept
23866: { return static_cast<unsigned long long>(0); }
23866:
23866: static constexpr unsigned long long
23866: denorm_min() noexcept
23866: { return static_cast<unsigned long long>(0); }
23866:
23866: static constexpr bool is_iec559 = false;
23866: static constexpr bool is_bounded = true;
23866: static constexpr bool is_modulo = true;
23866:
23866: static constexpr bool traps = true;
23866: static constexpr bool tinyness_before = false;
23866: static constexpr float_round_style round_style
23866: = round_toward_zero;
23866: };
23866:
23866: #define __INT_N(TYPE,BITSIZE,EXT,UEXT) template<> struct numeric_limits<TYPE> { static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true; static _GLIBCXX_CONSTEXPR TYPE min() _GLIBCXX_USE_NOEXCEPT { return __glibcxx_min_b (TYPE, BITSIZE); } static _GLIBCXX_CONSTEXPR TYPE max() _GLIBCXX_USE_NOEXCEPT { return __glibcxx_max_b (TYPE, BITSIZE); } static _GLIBCXX_USE_CONSTEXPR int digits = BITSIZE - 1; static _GLIBCXX_USE_CONSTEXPR int digits10 = (BITSIZE - 1) * 643L / 2136; static _GLIBCXX_USE_CONSTEXPR bool is_signed = true; static _GLIBCXX_USE_CONSTEXPR bool is_integer = true; static _GLIBCXX_USE_CONSTEXPR bool is_exact = true; static _GLIBCXX_USE_CONSTEXPR int radix = 2; static _GLIBCXX_CONSTEXPR TYPE epsilon() _GLIBCXX_USE_NOEXCEPT { return 0; } static _GLIBCXX_CONSTEXPR TYPE round_error() _GLIBCXX_USE_NOEXCEPT { return 0; } EXT static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0; static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0; static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0; static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0; static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false; static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false; static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false; static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm = denorm_absent; static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false; static _GLIBCXX_CONSTEXPR TYPE infinity() _GLIBCXX_USE_NOEXCEPT { return static_cast<TYPE>(0); } static _GLIBCXX_CONSTEXPR TYPE quiet_NaN() _GLIBCXX_USE_NOEXCEPT { return static_cast<TYPE>(0); } static _GLIBCXX_CONSTEXPR TYPE signaling_NaN() _GLIBCXX_USE_NOEXCEPT { return static_cast<TYPE>(0); } static _GLIBCXX_CONSTEXPR TYPE denorm_min() _GLIBCXX_USE_NOEXCEPT { return static_cast<TYPE>(0); } static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false; static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true; static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false; static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps; static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false; static _GLIBCXX_USE_CONSTEXPR float_round_style round_style = round_toward_zero; }; template<> struct numeric_limits<unsigned TYPE> { static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true; static _GLIBCXX_CONSTEXPR unsigned TYPE min() _GLIBCXX_USE_NOEXCEPT { return 0; } static _GLIBCXX_CONSTEXPR unsigned TYPE max() _GLIBCXX_USE_NOEXCEPT { return __glibcxx_max_b (unsigned TYPE, BITSIZE); } UEXT static _GLIBCXX_USE_CONSTEXPR int digits = BITSIZE; static _GLIBCXX_USE_CONSTEXPR int digits10 = BITSIZE * 643L / 2136; static _GLIBCXX_USE_CONSTEXPR bool is_signed = false; static _GLIBCXX_USE_CONSTEXPR bool is_integer = true; static _GLIBCXX_USE_CONSTEXPR bool is_exact = true; static _GLIBCXX_USE_CONSTEXPR int radix = 2; static _GLIBCXX_CONSTEXPR unsigned TYPE epsilon() _GLIBCXX_USE_NOEXCEPT { return 0; } static _GLIBCXX_CONSTEXPR unsigned TYPE round_error() _GLIBCXX_USE_NOEXCEPT { return 0; } static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0; static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0; static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0; static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0; static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false; static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false; static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false; static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm = denorm_absent; static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false; static _GLIBCXX_CONSTEXPR unsigned TYPE infinity() _GLIBCXX_USE_NOEXCEPT { return static_cast<unsigned TYPE>(0); } static _GLIBCXX_CONSTEXPR unsigned TYPE quiet_NaN() _GLIBCXX_USE_NOEXCEPT { return static_cast<unsigned TYPE>(0); } static _GLIBCXX_CONSTEXPR unsigned TYPE signaling_NaN() _GLIBCXX_USE_NOEXCEPT { return static_cast<unsigned TYPE>(0); } static _GLIBCXX_CONSTEXPR unsigned TYPE denorm_min() _GLIBCXX_USE_NOEXCEPT { return static_cast<unsigned TYPE>(0); } static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false; static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true; static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true; static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps; static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false; static _GLIBCXX_USE_CONSTEXPR float_round_style round_style = round_toward_zero; };
23866: # 1618 "/usr/include/c++/10/limits" 3
23866: #define __INT_N_201103(TYPE) static constexpr TYPE lowest() noexcept { return min(); } static constexpr int max_digits10 = 0;
23866:
23866:
23866:
23866:
23866: #define __INT_N_U201103(TYPE) static constexpr unsigned TYPE lowest() noexcept { return min(); } static constexpr int max_digits10 = 0;
23866: # 1657 "/usr/include/c++/10/limits" 3
23866: #undef __INT_N
23866: #undef __INT_N_201103
23866: #undef __INT_N_U201103
23866:
23866:
23866:
23866: template<>
23866: struct numeric_limits<float>
23866: {
23866: static constexpr bool is_specialized = true;
23866:
23866: static constexpr float
23866: min() noexcept { return 1.1754943508222875e-38F; }
23866:
23866: static constexpr float
23866: max() noexcept { return 3.4028234663852886e+38F; }
23866:
23866:
23866: static constexpr float
23866: lowest() noexcept { return -3.4028234663852886e+38F; }
23866:
23866:
23866: static constexpr int digits = 24;
23866: static constexpr int digits10 = 6;
23866:
23866: static constexpr int max_digits10
23866: = (2 + (24) * 643L / 2136);
23866:
23866: static constexpr bool is_signed = true;
23866: static constexpr bool is_integer = false;
23866: static constexpr bool is_exact = false;
23866: static constexpr int radix = 2;
23866:
23866: static constexpr float
23866: epsilon() noexcept { return 1.1920928955078125e-7F; }
23866:
23866: static constexpr float
23866: round_error() noexcept { return 0.5F; }
23866:
23866: static constexpr int min_exponent = (-125);
23866: static constexpr int min_exponent10 = (-37);
23866: static constexpr int max_exponent = 128;
23866: static constexpr int max_exponent10 = 38;
23866:
23866: static constexpr bool has_infinity = 1;
23866: static constexpr bool has_quiet_NaN = 1;
23866: static constexpr bool has_signaling_NaN = has_quiet_NaN;
23866: static constexpr float_denorm_style has_denorm
23866: = bool(1) ? denorm_present : denorm_absent;
23866: static constexpr bool has_denorm_loss
23866: = false;
23866:
23866: static constexpr float
23866: infinity() noexcept { return __builtin_huge_valf(); }
23866:
23866: static constexpr float
23866: quiet_NaN() noexcept { return __builtin_nanf(""); }
23866:
23866: static constexpr float
23866: signaling_NaN() noexcept { return __builtin_nansf(""); }
23866:
23866: static constexpr float
23866: denorm_min() noexcept { return 1.4012984643248171e-45F; }
23866:
23866: static constexpr bool is_iec559
23866: = has_infinity && has_quiet_NaN && has_denorm == denorm_present;
23866: static constexpr bool is_bounded = true;
23866: static constexpr bool is_modulo = false;
23866:
23866: static constexpr bool traps = false;
23866: static constexpr bool tinyness_before
23866: = false;
23866: static constexpr float_round_style round_style
23866: = round_to_nearest;
23866: };
23866:
23866: #undef __glibcxx_float_has_denorm_loss
23866: #undef __glibcxx_float_traps
23866: #undef __glibcxx_float_tinyness_before
23866:
23866:
23866: template<>
23866: struct numeric_limits<double>
23866: {
23866: static constexpr bool is_specialized = true;
23866:
23866: static constexpr double
23866: min() noexcept { return double(2.2250738585072014e-308L); }
23866:
23866: static constexpr double
23866: max() noexcept { return double(1.7976931348623157e+308L); }
23866:
23866:
23866: static constexpr double
23866: lowest() noexcept { return -double(1.7976931348623157e+308L); }
23866:
23866:
23866: static constexpr int digits = 53;
23866: static constexpr int digits10 = 15;
23866:
23866: static constexpr int max_digits10
23866: = (2 + (53) * 643L / 2136);
23866:
23866: static constexpr bool is_signed = true;
23866: static constexpr bool is_integer = false;
23866: static constexpr bool is_exact = false;
23866: static constexpr int radix = 2;
23866:
23866: static constexpr double
23866: epsilon() noexcept { return double(2.2204460492503131e-16L); }
23866:
23866: static constexpr double
23866: round_error() noexcept { return 0.5; }
23866:
23866: static constexpr int min_exponent = (-1021);
23866: static constexpr int min_exponent10 = (-307);
23866: static constexpr int max_exponent = 1024;
23866: static constexpr int max_exponent10 = 308;
23866:
23866: static constexpr bool has_infinity = 1;
23866: static constexpr bool has_quiet_NaN = 1;
23866: static constexpr bool has_signaling_NaN = has_quiet_NaN;
23866: static constexpr float_denorm_style has_denorm
23866: = bool(1) ? denorm_present : denorm_absent;
23866: static constexpr bool has_denorm_loss
23866: = false;
23866:
23866: static constexpr double
23866: infinity() noexcept { return __builtin_huge_val(); }
23866:
23866: static constexpr double
23866: quiet_NaN() noexcept { return __builtin_nan(""); }
23866:
23866: static constexpr double
23866: signaling_NaN() noexcept { return __builtin_nans(""); }
23866:
23866: static constexpr double
23866: denorm_min() noexcept { return double(4.9406564584124654e-324L); }
23866:
23866: static constexpr bool is_iec559
23866: = has_infinity && has_quiet_NaN && has_denorm == denorm_present;
23866: static constexpr bool is_bounded = true;
23866: static constexpr bool is_modulo = false;
23866:
23866: static constexpr bool traps = false;
23866: static constexpr bool tinyness_before
23866: = false;
23866: static constexpr float_round_style round_style
23866: = round_to_nearest;
23866: };
23866:
23866: #undef __glibcxx_double_has_denorm_loss
23866: #undef __glibcxx_double_traps
23866: #undef __glibcxx_double_tinyness_before
23866:
23866:
23866: template<>
23866: struct numeric_limits<long double>
23866: {
23866: static constexpr bool is_specialized = true;
23866:
23866: static constexpr long double
23866: min() noexcept { return 2.2250738585072014e-308L; }
23866:
23866: static constexpr long double
23866: max() noexcept { return 1.7976931348623157e+308L; }
23866:
23866:
23866: static constexpr long double
23866: lowest() noexcept { return -1.7976931348623157e+308L; }
23866:
23866:
23866: static constexpr int digits = 53;
23866: static constexpr int digits10 = 15;
23866:
23866: static constexpr int max_digits10
23866: = (2 + (53) * 643L / 2136);
23866:
23866: static constexpr bool is_signed = true;
23866: static constexpr bool is_integer = false;
23866: static constexpr bool is_exact = false;
23866: static constexpr int radix = 2;
23866:
23866: static constexpr long double
23866: epsilon() noexcept { return 2.2204460492503131e-16L; }
23866:
23866: static constexpr long double
23866: round_error() noexcept { return 0.5L; }
23866:
23866: static constexpr int min_exponent = (-1021);
23866: static constexpr int min_exponent10 = (-307);
23866: static constexpr int max_exponent = 1024;
23866: static constexpr int max_exponent10 = 308;
23866:
23866: static constexpr bool has_infinity = 1;
23866: static constexpr bool has_quiet_NaN = 1;
23866: static constexpr bool has_signaling_NaN = has_quiet_NaN;
23866: static constexpr float_denorm_style has_denorm
23866: = bool(1) ? denorm_present : denorm_absent;
23866: static constexpr bool has_denorm_loss
23866: = false;
23866:
23866: static constexpr long double
23866: infinity() noexcept { return __builtin_huge_vall(); }
23866:
23866: static constexpr long double
23866: quiet_NaN() noexcept { return __builtin_nanl(""); }
23866:
23866: static constexpr long double
23866: signaling_NaN() noexcept { return __builtin_nansl(""); }
23866:
23866: static constexpr long double
23866: denorm_min() noexcept { return 4.9406564584124654e-324L; }
23866:
23866: static constexpr bool is_iec559
23866: = has_infinity && has_quiet_NaN && has_denorm == denorm_present;
23866: static constexpr bool is_bounded = true;
23866: static constexpr bool is_modulo = false;
23866:
23866: static constexpr bool traps = false;
23866: static constexpr bool tinyness_before =
23866: false;
23866: static constexpr float_round_style round_style =
23866: round_to_nearest;
23866: };
23866:
23866: #undef __glibcxx_long_double_has_denorm_loss
23866: #undef __glibcxx_long_double_traps
23866: #undef __glibcxx_long_double_tinyness_before
23866:
23866:
23866: }
23866:
23866: #undef __glibcxx_signed
23866: #undef __glibcxx_min
23866: #undef __glibcxx_max
23866: #undef __glibcxx_digits
23866: #undef __glibcxx_digits10
23866: #undef __glibcxx_max_digits10
23866: # 36 "/usr/include/c++/10/bits/uniform_int_dist.h" 2 3
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 57 "/usr/include/c++/10/bits/uniform_int_dist.h" 3
23866: namespace __detail
23866: {
23866:
23866: template<typename _Tp>
23866: inline bool
23866: _Power_of_2(_Tp __x)
23866: {
23866: return ((__x - 1) & __x) == 0;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _IntType = int>
23866: class uniform_int_distribution
23866: {
23866: static_assert(std::is_integral<_IntType>::value,
23866: "template argument must be an integral type");
23866:
23866: public:
23866:
23866: typedef _IntType result_type;
23866:
23866: struct param_type
23866: {
23866: typedef uniform_int_distribution<_IntType> distribution_type;
23866:
23866: param_type() : param_type(0) { }
23866:
23866: explicit
23866: param_type(_IntType __a,
23866: _IntType __b = numeric_limits<_IntType>::max())
23866: : _M_a(__a), _M_b(__b)
23866: {
23866: ;
23866: }
23866:
23866: result_type
23866: a() const
23866: { return _M_a; }
23866:
23866: result_type
23866: b() const
23866: { return _M_b; }
23866:
23866: friend bool
23866: operator==(const param_type& __p1, const param_type& __p2)
23866: { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; }
23866:
23866: friend bool
23866: operator!=(const param_type& __p1, const param_type& __p2)
23866: { return !(__p1 == __p2); }
23866:
23866: private:
23866: _IntType _M_a;
23866: _IntType _M_b;
23866: };
23866:
23866: public:
23866:
23866:
23866:
23866: uniform_int_distribution() : uniform_int_distribution(0) { }
23866:
23866:
23866:
23866:
23866: explicit
23866: uniform_int_distribution(_IntType __a,
23866: _IntType __b = numeric_limits<_IntType>::max())
23866: : _M_param(__a, __b)
23866: { }
23866:
23866: explicit
23866: uniform_int_distribution(const param_type& __p)
23866: : _M_param(__p)
23866: { }
23866:
23866:
23866:
23866:
23866:
23866:
23866: void
23866: reset() { }
23866:
23866: result_type
23866: a() const
23866: { return _M_param.a(); }
23866:
23866: result_type
23866: b() const
23866: { return _M_param.b(); }
23866:
23866:
23866:
23866:
23866: param_type
23866: param() const
23866: { return _M_param; }
23866:
23866:
23866:
23866:
23866:
23866: void
23866: param(const param_type& __param)
23866: { _M_param = __param; }
23866:
23866:
23866:
23866:
23866: result_type
23866: min() const
23866: { return this->a(); }
23866:
23866:
23866:
23866:
23866: result_type
23866: max() const
23866: { return this->b(); }
23866:
23866:
23866:
23866:
23866: template<typename _UniformRandomNumberGenerator>
23866: result_type
23866: operator()(_UniformRandomNumberGenerator& __urng)
23866: { return this->operator()(__urng, _M_param); }
23866:
23866: template<typename _UniformRandomNumberGenerator>
23866: result_type
23866: operator()(_UniformRandomNumberGenerator& __urng,
23866: const param_type& __p);
23866:
23866: template<typename _ForwardIterator,
23866: typename _UniformRandomNumberGenerator>
23866: void
23866: __generate(_ForwardIterator __f, _ForwardIterator __t,
23866: _UniformRandomNumberGenerator& __urng)
23866: { this->__generate(__f, __t, __urng, _M_param); }
23866:
23866: template<typename _ForwardIterator,
23866: typename _UniformRandomNumberGenerator>
23866: void
23866: __generate(_ForwardIterator __f, _ForwardIterator __t,
23866: _UniformRandomNumberGenerator& __urng,
23866: const param_type& __p)
23866: { this->__generate_impl(__f, __t, __urng, __p); }
23866:
23866: template<typename _UniformRandomNumberGenerator>
23866: void
23866: __generate(result_type* __f, result_type* __t,
23866: _UniformRandomNumberGenerator& __urng,
23866: const param_type& __p)
23866: { this->__generate_impl(__f, __t, __urng, __p); }
23866:
23866:
23866:
23866:
23866:
23866: friend bool
23866: operator==(const uniform_int_distribution& __d1,
23866: const uniform_int_distribution& __d2)
23866: { return __d1._M_param == __d2._M_param; }
23866:
23866: private:
23866: template<typename _ForwardIterator,
23866: typename _UniformRandomNumberGenerator>
23866: void
23866: __generate_impl(_ForwardIterator __f, _ForwardIterator __t,
23866: _UniformRandomNumberGenerator& __urng,
23866: const param_type& __p);
23866:
23866: param_type _M_param;
23866: };
23866:
23866: template<typename _IntType>
23866: template<typename _UniformRandomNumberGenerator>
23866: typename uniform_int_distribution<_IntType>::result_type
23866: uniform_int_distribution<_IntType>::
23866: operator()(_UniformRandomNumberGenerator& __urng,
23866: const param_type& __param)
23866: {
23866: typedef typename _UniformRandomNumberGenerator::result_type
23866: _Gresult_type;
23866: typedef typename std::make_unsigned<result_type>::type __utype;
23866: typedef typename std::common_type<_Gresult_type, __utype>::type
23866: __uctype;
23866:
23866: const __uctype __urngmin = __urng.min();
23866: const __uctype __urngmax = __urng.max();
23866: const __uctype __urngrange = __urngmax - __urngmin;
23866: const __uctype __urange
23866: = __uctype(__param.b()) - __uctype(__param.a());
23866:
23866: __uctype __ret;
23866:
23866: if (__urngrange > __urange)
23866: {
23866:
23866: const __uctype __uerange = __urange + 1;
23866: const __uctype __scaling = __urngrange / __uerange;
23866: const __uctype __past = __uerange * __scaling;
23866: do
23866: __ret = __uctype(__urng()) - __urngmin;
23866: while (__ret >= __past);
23866: __ret /= __scaling;
23866: }
23866: else if (__urngrange < __urange)
23866: {
23866: # 287 "/usr/include/c++/10/bits/uniform_int_dist.h" 3
23866: __uctype __tmp;
23866: do
23866: {
23866: const __uctype __uerngrange = __urngrange + 1;
23866: __tmp = (__uerngrange * operator()
23866: (__urng, param_type(0, __urange / __uerngrange)));
23866: __ret = __tmp + (__uctype(__urng()) - __urngmin);
23866: }
23866: while (__ret > __urange || __ret < __tmp);
23866: }
23866: else
23866: __ret = __uctype(__urng()) - __urngmin;
23866:
23866: return __ret + __param.a();
23866: }
23866:
23866:
23866: template<typename _IntType>
23866: template<typename _ForwardIterator,
23866: typename _UniformRandomNumberGenerator>
23866: void
23866: uniform_int_distribution<_IntType>::
23866: __generate_impl(_ForwardIterator __f, _ForwardIterator __t,
23866: _UniformRandomNumberGenerator& __urng,
23866: const param_type& __param)
23866: {
23866:
23866: typedef typename _UniformRandomNumberGenerator::result_type
23866: _Gresult_type;
23866: typedef typename std::make_unsigned<result_type>::type __utype;
23866: typedef typename std::common_type<_Gresult_type, __utype>::type
23866: __uctype;
23866:
23866: const __uctype __urngmin = __urng.min();
23866: const __uctype __urngmax = __urng.max();
23866: const __uctype __urngrange = __urngmax - __urngmin;
23866: const __uctype __urange
23866: = __uctype(__param.b()) - __uctype(__param.a());
23866:
23866: __uctype __ret;
23866:
23866: if (__urngrange > __urange)
23866: {
23866: if (__detail::_Power_of_2(__urngrange + 1)
23866: && __detail::_Power_of_2(__urange + 1))
23866: {
23866: while (__f != __t)
23866: {
23866: __ret = __uctype(__urng()) - __urngmin;
23866: *__f++ = (__ret & __urange) + __param.a();
23866: }
23866: }
23866: else
23866: {
23866:
23866: const __uctype __uerange = __urange + 1;
23866: const __uctype __scaling = __urngrange / __uerange;
23866: const __uctype __past = __uerange * __scaling;
23866: while (__f != __t)
23866: {
23866: do
23866: __ret = __uctype(__urng()) - __urngmin;
23866: while (__ret >= __past);
23866: *__f++ = __ret / __scaling + __param.a();
23866: }
23866: }
23866: }
23866: else if (__urngrange < __urange)
23866: {
23866: # 371 "/usr/include/c++/10/bits/uniform_int_dist.h" 3
23866: __uctype __tmp;
23866: while (__f != __t)
23866: {
23866: do
23866: {
23866: const __uctype __uerngrange = __urngrange + 1;
23866: __tmp = (__uerngrange * operator()
23866: (__urng, param_type(0, __urange / __uerngrange)));
23866: __ret = __tmp + (__uctype(__urng()) - __urngmin);
23866: }
23866: while (__ret > __urange || __ret < __tmp);
23866: *__f++ = __ret;
23866: }
23866: }
23866: else
23866: while (__f != __t)
23866: *__f++ = __uctype(__urng()) - __urngmin + __param.a();
23866: }
23866:
23866:
23866:
23866:
23866: }
23866: # 67 "/usr/include/c++/10/bits/stl_algo.h" 2 3
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: template<typename _Iterator, typename _Compare>
23866:
23866: void
23866: __move_median_to_first(_Iterator __result,_Iterator __a, _Iterator __b,
23866: _Iterator __c, _Compare __comp)
23866: {
23866: if (__comp(__a, __b))
23866: {
23866: if (__comp(__b, __c))
23866: std::iter_swap(__result, __b);
23866: else if (__comp(__a, __c))
23866: std::iter_swap(__result, __c);
23866: else
23866: std::iter_swap(__result, __a);
23866: }
23866: else if (__comp(__a, __c))
23866: std::iter_swap(__result, __a);
23866: else if (__comp(__b, __c))
23866: std::iter_swap(__result, __c);
23866: else
23866: std::iter_swap(__result, __b);
23866: }
23866:
23866:
23866: template<typename _InputIterator, typename _Predicate>
23866:
23866: inline _InputIterator
23866: __find_if_not(_InputIterator __first, _InputIterator __last,
23866: _Predicate __pred)
23866: {
23866: return std::__find_if(__first, __last,
23866: __gnu_cxx::__ops::__negate(__pred),
23866: std::__iterator_category(__first));
23866: }
23866:
23866:
23866:
23866:
23866: template<typename _InputIterator, typename _Predicate, typename _Distance>
23866:
23866: _InputIterator
23866: __find_if_not_n(_InputIterator __first, _Distance& __len, _Predicate __pred)
23866: {
23866: for (; __len; --__len, (void) ++__first)
23866: if (!__pred(__first))
23866: break;
23866: return __first;
23866: }
23866: # 138 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator1, typename _ForwardIterator2,
23866: typename _BinaryPredicate>
23866:
23866: _ForwardIterator1
23866: __search(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
23866: _ForwardIterator2 __first2, _ForwardIterator2 __last2,
23866: _BinaryPredicate __predicate)
23866: {
23866:
23866: if (__first1 == __last1 || __first2 == __last2)
23866: return __first1;
23866:
23866:
23866: _ForwardIterator2 __p1(__first2);
23866: if (++__p1 == __last2)
23866: return std::__find_if(__first1, __last1,
23866: __gnu_cxx::__ops::__iter_comp_iter(__predicate, __first2));
23866:
23866:
23866: _ForwardIterator1 __current = __first1;
23866:
23866: for (;;)
23866: {
23866: __first1 =
23866: std::__find_if(__first1, __last1,
23866: __gnu_cxx::__ops::__iter_comp_iter(__predicate, __first2));
23866:
23866: if (__first1 == __last1)
23866: return __last1;
23866:
23866: _ForwardIterator2 __p = __p1;
23866: __current = __first1;
23866: if (++__current == __last1)
23866: return __last1;
23866:
23866: while (__predicate(__current, __p))
23866: {
23866: if (++__p == __last2)
23866: return __first1;
23866: if (++__current == __last1)
23866: return __last1;
23866: }
23866: ++__first1;
23866: }
23866: return __first1;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _ForwardIterator, typename _Integer,
23866: typename _UnaryPredicate>
23866:
23866: _ForwardIterator
23866: __search_n_aux(_ForwardIterator __first, _ForwardIterator __last,
23866: _Integer __count, _UnaryPredicate __unary_pred,
23866: std::forward_iterator_tag)
23866: {
23866: __first = std::__find_if(__first, __last, __unary_pred);
23866: while (__first != __last)
23866: {
23866: typename iterator_traits<_ForwardIterator>::difference_type
23866: __n = __count;
23866: _ForwardIterator __i = __first;
23866: ++__i;
23866: while (__i != __last && __n != 1 && __unary_pred(__i))
23866: {
23866: ++__i;
23866: --__n;
23866: }
23866: if (__n == 1)
23866: return __first;
23866: if (__i == __last)
23866: return __last;
23866: __first = std::__find_if(++__i, __last, __unary_pred);
23866: }
23866: return __last;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename _RandomAccessIter, typename _Integer,
23866: typename _UnaryPredicate>
23866:
23866: _RandomAccessIter
23866: __search_n_aux(_RandomAccessIter __first, _RandomAccessIter __last,
23866: _Integer __count, _UnaryPredicate __unary_pred,
23866: std::random_access_iterator_tag)
23866: {
23866: typedef typename std::iterator_traits<_RandomAccessIter>::difference_type
23866: _DistanceType;
23866:
23866: _DistanceType __tailSize = __last - __first;
23866: _DistanceType __remainder = __count;
23866:
23866: while (__remainder <= __tailSize)
23866: {
23866: __first += __remainder;
23866: __tailSize -= __remainder;
23866:
23866:
23866: _RandomAccessIter __backTrack = __first;
23866: while (__unary_pred(--__backTrack))
23866: {
23866: if (--__remainder == 0)
23866: return (__first - __count);
23866: }
23866: __remainder = __count + 1 - (__first - __backTrack);
23866: }
23866: return __last;
23866: }
23866:
23866: template<typename _ForwardIterator, typename _Integer,
23866: typename _UnaryPredicate>
23866:
23866: _ForwardIterator
23866: __search_n(_ForwardIterator __first, _ForwardIterator __last,
23866: _Integer __count,
23866: _UnaryPredicate __unary_pred)
23866: {
23866: if (__count <= 0)
23866: return __first;
23866:
23866: if (__count == 1)
23866: return std::__find_if(__first, __last, __unary_pred);
23866:
23866: return std::__search_n_aux(__first, __last, __count, __unary_pred,
23866: std::__iterator_category(__first));
23866: }
23866:
23866:
23866: template<typename _ForwardIterator1, typename _ForwardIterator2,
23866: typename _BinaryPredicate>
23866:
23866: _ForwardIterator1
23866: __find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
23866: _ForwardIterator2 __first2, _ForwardIterator2 __last2,
23866: forward_iterator_tag, forward_iterator_tag,
23866: _BinaryPredicate __comp)
23866: {
23866: if (__first2 == __last2)
23866: return __last1;
23866:
23866: _ForwardIterator1 __result = __last1;
23866: while (1)
23866: {
23866: _ForwardIterator1 __new_result
23866: = std::__search(__first1, __last1, __first2, __last2, __comp);
23866: if (__new_result == __last1)
23866: return __result;
23866: else
23866: {
23866: __result = __new_result;
23866: __first1 = __new_result;
23866: ++__first1;
23866: }
23866: }
23866: }
23866:
23866:
23866: template<typename _BidirectionalIterator1, typename _BidirectionalIterator2,
23866: typename _BinaryPredicate>
23866:
23866: _BidirectionalIterator1
23866: __find_end(_BidirectionalIterator1 __first1,
23866: _BidirectionalIterator1 __last1,
23866: _BidirectionalIterator2 __first2,
23866: _BidirectionalIterator2 __last2,
23866: bidirectional_iterator_tag, bidirectional_iterator_tag,
23866: _BinaryPredicate __comp)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: typedef reverse_iterator<_BidirectionalIterator1> _RevIterator1;
23866: typedef reverse_iterator<_BidirectionalIterator2> _RevIterator2;
23866:
23866: _RevIterator1 __rlast1(__first1);
23866: _RevIterator2 __rlast2(__first2);
23866: _RevIterator1 __rresult = std::__search(_RevIterator1(__last1), __rlast1,
23866: _RevIterator2(__last2), __rlast2,
23866: __comp);
23866:
23866: if (__rresult == __rlast1)
23866: return __last1;
23866: else
23866: {
23866: _BidirectionalIterator1 __result = __rresult.base();
23866: std::advance(__result, -std::distance(__first2, __last2));
23866: return __result;
23866: }
23866: }
23866: # 364 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator1, typename _ForwardIterator2>
23866:
23866: inline _ForwardIterator1
23866: find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
23866: _ForwardIterator2 __first2, _ForwardIterator2 __last2)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: return std::__find_end(__first1, __last1, __first2, __last2,
23866: std::__iterator_category(__first1),
23866: std::__iterator_category(__first2),
23866: __gnu_cxx::__ops::__iter_equal_to_iter());
23866: }
23866: # 413 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator1, typename _ForwardIterator2,
23866: typename _BinaryPredicate>
23866:
23866: inline _ForwardIterator1
23866: find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
23866: _ForwardIterator2 __first2, _ForwardIterator2 __last2,
23866: _BinaryPredicate __comp)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: return std::__find_end(__first1, __last1, __first2, __last2,
23866: std::__iterator_category(__first1),
23866: std::__iterator_category(__first2),
23866: __gnu_cxx::__ops::__iter_comp_iter(__comp));
23866: }
23866: # 449 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator, typename _Predicate>
23866:
23866: inline bool
23866: all_of(_InputIterator __first, _InputIterator __last, _Predicate __pred)
23866: { return __last == std::find_if_not(__first, __last, __pred); }
23866: # 467 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator, typename _Predicate>
23866:
23866: inline bool
23866: none_of(_InputIterator __first, _InputIterator __last, _Predicate __pred)
23866: { return __last == std::find_if(__first, __last, __pred); }
23866: # 486 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator, typename _Predicate>
23866:
23866: inline bool
23866: any_of(_InputIterator __first, _InputIterator __last, _Predicate __pred)
23866: { return !std::none_of(__first, __last, __pred); }
23866: # 502 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator, typename _Predicate>
23866:
23866: inline _InputIterator
23866: find_if_not(_InputIterator __first, _InputIterator __last,
23866: _Predicate __pred)
23866: {
23866:
23866:
23866:
23866:
23866: ;
23866: return std::__find_if_not(__first, __last,
23866: __gnu_cxx::__ops::__pred_iter(__pred));
23866: }
23866: # 527 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator, typename _Predicate>
23866:
23866: inline bool
23866: is_partitioned(_InputIterator __first, _InputIterator __last,
23866: _Predicate __pred)
23866: {
23866: __first = std::find_if_not(__first, __last, __pred);
23866: if (__first == __last)
23866: return true;
23866: ++__first;
23866: return std::none_of(__first, __last, __pred);
23866: }
23866: # 549 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator, typename _Predicate>
23866:
23866: _ForwardIterator
23866: partition_point(_ForwardIterator __first, _ForwardIterator __last,
23866: _Predicate __pred)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: typedef typename iterator_traits<_ForwardIterator>::difference_type
23866: _DistanceType;
23866:
23866: _DistanceType __len = std::distance(__first, __last);
23866:
23866: while (__len > 0)
23866: {
23866: _DistanceType __half = __len >> 1;
23866: _ForwardIterator __middle = __first;
23866: std::advance(__middle, __half);
23866: if (__pred(*__middle))
23866: {
23866: __first = __middle;
23866: ++__first;
23866: __len = __len - __half - 1;
23866: }
23866: else
23866: __len = __half;
23866: }
23866: return __first;
23866: }
23866:
23866:
23866: template<typename _InputIterator, typename _OutputIterator,
23866: typename _Predicate>
23866:
23866: _OutputIterator
23866: __remove_copy_if(_InputIterator __first, _InputIterator __last,
23866: _OutputIterator __result, _Predicate __pred)
23866: {
23866: for (; __first != __last; ++__first)
23866: if (!__pred(__first))
23866: {
23866: *__result = *__first;
23866: ++__result;
23866: }
23866: return __result;
23866: }
23866: # 616 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator, typename _OutputIterator, typename _Tp>
23866:
23866: inline _OutputIterator
23866: remove_copy(_InputIterator __first, _InputIterator __last,
23866: _OutputIterator __result, const _Tp& __value)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__remove_copy_if(__first, __last, __result,
23866: __gnu_cxx::__ops::__iter_equals_val(__value));
23866: }
23866: # 649 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator, typename _OutputIterator,
23866: typename _Predicate>
23866:
23866: inline _OutputIterator
23866: remove_copy_if(_InputIterator __first, _InputIterator __last,
23866: _OutputIterator __result, _Predicate __pred)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__remove_copy_if(__first, __last, __result,
23866: __gnu_cxx::__ops::__pred_iter(__pred));
23866: }
23866: # 684 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator, typename _OutputIterator,
23866: typename _Predicate>
23866:
23866: _OutputIterator
23866: copy_if(_InputIterator __first, _InputIterator __last,
23866: _OutputIterator __result, _Predicate __pred)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: for (; __first != __last; ++__first)
23866: if (__pred(*__first))
23866: {
23866: *__result = *__first;
23866: ++__result;
23866: }
23866: return __result;
23866: }
23866:
23866: template<typename _InputIterator, typename _Size, typename _OutputIterator>
23866:
23866: _OutputIterator
23866: __copy_n_a(_InputIterator __first, _Size __n, _OutputIterator __result)
23866: {
23866: if (__n > 0)
23866: {
23866: while (true)
23866: {
23866: *__result = *__first;
23866: ++__result;
23866: if (--__n > 0)
23866: ++__first;
23866: else
23866: break;
23866: }
23866: }
23866: return __result;
23866: }
23866:
23866: template<typename _CharT, typename _Size>
23866: __enable_if_t<__is_char<_CharT>::__value, _CharT*>
23866: __copy_n_a(istreambuf_iterator<_CharT, char_traits<_CharT>>,
23866: _Size, _CharT*);
23866:
23866: template<typename _InputIterator, typename _Size, typename _OutputIterator>
23866:
23866: _OutputIterator
23866: __copy_n(_InputIterator __first, _Size __n,
23866: _OutputIterator __result, input_iterator_tag)
23866: {
23866: return std::__niter_wrap(__result,
23866: __copy_n_a(__first, __n,
23866: std::__niter_base(__result)));
23866: }
23866:
23866: template<typename _RandomAccessIterator, typename _Size,
23866: typename _OutputIterator>
23866:
23866: inline _OutputIterator
23866: __copy_n(_RandomAccessIterator __first, _Size __n,
23866: _OutputIterator __result, random_access_iterator_tag)
23866: { return std::copy(__first, __first + __n, __result); }
23866: # 765 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator, typename _Size, typename _OutputIterator>
23866:
23866: inline _OutputIterator
23866: copy_n(_InputIterator __first, _Size __n, _OutputIterator __result)
23866: {
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: return std::__copy_n(__first, __n, __result,
23866: std::__iterator_category(__first));
23866: }
23866: # 796 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator, typename _OutputIterator1,
23866: typename _OutputIterator2, typename _Predicate>
23866:
23866: pair<_OutputIterator1, _OutputIterator2>
23866: partition_copy(_InputIterator __first, _InputIterator __last,
23866: _OutputIterator1 __out_true, _OutputIterator2 __out_false,
23866: _Predicate __pred)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: for (; __first != __last; ++__first)
23866: if (__pred(*__first))
23866: {
23866: *__out_true = *__first;
23866: ++__out_true;
23866: }
23866: else
23866: {
23866: *__out_false = *__first;
23866: ++__out_false;
23866: }
23866:
23866: return pair<_OutputIterator1, _OutputIterator2>(__out_true, __out_false);
23866: }
23866:
23866:
23866: template<typename _ForwardIterator, typename _Predicate>
23866:
23866: _ForwardIterator
23866: __remove_if(_ForwardIterator __first, _ForwardIterator __last,
23866: _Predicate __pred)
23866: {
23866: __first = std::__find_if(__first, __last, __pred);
23866: if (__first == __last)
23866: return __first;
23866: _ForwardIterator __result = __first;
23866: ++__first;
23866: for (; __first != __last; ++__first)
23866: if (!__pred(__first))
23866: {
23866: *__result = std::move(*__first);
23866: ++__result;
23866: }
23866: return __result;
23866: }
23866: # 867 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator, typename _Tp>
23866:
23866: inline _ForwardIterator
23866: remove(_ForwardIterator __first, _ForwardIterator __last,
23866: const _Tp& __value)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__remove_if(__first, __last,
23866: __gnu_cxx::__ops::__iter_equals_val(__value));
23866: }
23866: # 901 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator, typename _Predicate>
23866:
23866: inline _ForwardIterator
23866: remove_if(_ForwardIterator __first, _ForwardIterator __last,
23866: _Predicate __pred)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__remove_if(__first, __last,
23866: __gnu_cxx::__ops::__pred_iter(__pred));
23866: }
23866:
23866: template<typename _ForwardIterator, typename _BinaryPredicate>
23866:
23866: _ForwardIterator
23866: __adjacent_find(_ForwardIterator __first, _ForwardIterator __last,
23866: _BinaryPredicate __binary_pred)
23866: {
23866: if (__first == __last)
23866: return __last;
23866: _ForwardIterator __next = __first;
23866: while (++__next != __last)
23866: {
23866: if (__binary_pred(__first, __next))
23866: return __first;
23866: __first = __next;
23866: }
23866: return __last;
23866: }
23866:
23866: template<typename _ForwardIterator, typename _BinaryPredicate>
23866:
23866: _ForwardIterator
23866: __unique(_ForwardIterator __first, _ForwardIterator __last,
23866: _BinaryPredicate __binary_pred)
23866: {
23866:
23866: __first = std::__adjacent_find(__first, __last, __binary_pred);
23866: if (__first == __last)
23866: return __last;
23866:
23866:
23866: _ForwardIterator __dest = __first;
23866: ++__first;
23866: while (++__first != __last)
23866: if (!__binary_pred(__dest, __first))
23866: *++__dest = std::move(*__first);
23866: return ++__dest;
23866: }
23866: # 970 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator>
23866:
23866: inline _ForwardIterator
23866: unique(_ForwardIterator __first, _ForwardIterator __last)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__unique(__first, __last,
23866: __gnu_cxx::__ops::__iter_equal_to_iter());
23866: }
23866: # 1001 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator, typename _BinaryPredicate>
23866:
23866: inline _ForwardIterator
23866: unique(_ForwardIterator __first, _ForwardIterator __last,
23866: _BinaryPredicate __binary_pred)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__unique(__first, __last,
23866: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred));
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _ForwardIterator, typename _OutputIterator,
23866: typename _BinaryPredicate>
23866:
23866: _OutputIterator
23866: __unique_copy(_ForwardIterator __first, _ForwardIterator __last,
23866: _OutputIterator __result, _BinaryPredicate __binary_pred,
23866: forward_iterator_tag, output_iterator_tag)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: _ForwardIterator __next = __first;
23866: *__result = *__first;
23866: while (++__next != __last)
23866: if (!__binary_pred(__first, __next))
23866: {
23866: __first = __next;
23866: *++__result = *__first;
23866: }
23866: return ++__result;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _InputIterator, typename _OutputIterator,
23866: typename _BinaryPredicate>
23866:
23866: _OutputIterator
23866: __unique_copy(_InputIterator __first, _InputIterator __last,
23866: _OutputIterator __result, _BinaryPredicate __binary_pred,
23866: input_iterator_tag, output_iterator_tag)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: typename iterator_traits<_InputIterator>::value_type __value = *__first;
23866: __decltype(__gnu_cxx::__ops::__iter_comp_val(__binary_pred))
23866: __rebound_pred
23866: = __gnu_cxx::__ops::__iter_comp_val(__binary_pred);
23866: *__result = __value;
23866: while (++__first != __last)
23866: if (!__rebound_pred(__first, __value))
23866: {
23866: __value = *__first;
23866: *++__result = __value;
23866: }
23866: return ++__result;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _InputIterator, typename _ForwardIterator,
23866: typename _BinaryPredicate>
23866:
23866: _ForwardIterator
23866: __unique_copy(_InputIterator __first, _InputIterator __last,
23866: _ForwardIterator __result, _BinaryPredicate __binary_pred,
23866: input_iterator_tag, forward_iterator_tag)
23866: {
23866:
23866:
23866:
23866:
23866: *__result = *__first;
23866: while (++__first != __last)
23866: if (!__binary_pred(__result, __first))
23866: *++__result = *__first;
23866: return ++__result;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _BidirectionalIterator>
23866:
23866: void
23866: __reverse(_BidirectionalIterator __first, _BidirectionalIterator __last,
23866: bidirectional_iterator_tag)
23866: {
23866: while (true)
23866: if (__first == __last || __first == --__last)
23866: return;
23866: else
23866: {
23866: std::iter_swap(__first, __last);
23866: ++__first;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _RandomAccessIterator>
23866:
23866: void
23866: __reverse(_RandomAccessIterator __first, _RandomAccessIterator __last,
23866: random_access_iterator_tag)
23866: {
23866: if (__first == __last)
23866: return;
23866: --__last;
23866: while (__first < __last)
23866: {
23866: std::iter_swap(__first, __last);
23866: ++__first;
23866: --__last;
23866: }
23866: }
23866: # 1162 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _BidirectionalIterator>
23866:
23866: inline void
23866: reverse(_BidirectionalIterator __first, _BidirectionalIterator __last)
23866: {
23866:
23866:
23866:
23866: ;
23866: std::__reverse(__first, __last, std::__iterator_category(__first));
23866: }
23866: # 1190 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _BidirectionalIterator, typename _OutputIterator>
23866:
23866: _OutputIterator
23866: reverse_copy(_BidirectionalIterator __first, _BidirectionalIterator __last,
23866: _OutputIterator __result)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: while (__first != __last)
23866: {
23866: --__last;
23866: *__result = *__last;
23866: ++__result;
23866: }
23866: return __result;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename _EuclideanRingElement>
23866:
23866: _EuclideanRingElement
23866: __gcd(_EuclideanRingElement __m, _EuclideanRingElement __n)
23866: {
23866: while (__n != 0)
23866: {
23866: _EuclideanRingElement __t = __m % __n;
23866: __m = __n;
23866: __n = __t;
23866: }
23866: return __m;
23866: }
23866:
23866: inline namespace _V2
23866: {
23866:
23866:
23866: template<typename _ForwardIterator>
23866:
23866: _ForwardIterator
23866: __rotate(_ForwardIterator __first,
23866: _ForwardIterator __middle,
23866: _ForwardIterator __last,
23866: forward_iterator_tag)
23866: {
23866: if (__first == __middle)
23866: return __last;
23866: else if (__last == __middle)
23866: return __first;
23866:
23866: _ForwardIterator __first2 = __middle;
23866: do
23866: {
23866: std::iter_swap(__first, __first2);
23866: ++__first;
23866: ++__first2;
23866: if (__first == __middle)
23866: __middle = __first2;
23866: }
23866: while (__first2 != __last);
23866:
23866: _ForwardIterator __ret = __first;
23866:
23866: __first2 = __middle;
23866:
23866: while (__first2 != __last)
23866: {
23866: std::iter_swap(__first, __first2);
23866: ++__first;
23866: ++__first2;
23866: if (__first == __middle)
23866: __middle = __first2;
23866: else if (__first2 == __last)
23866: __first2 = __middle;
23866: }
23866: return __ret;
23866: }
23866:
23866:
23866: template<typename _BidirectionalIterator>
23866:
23866: _BidirectionalIterator
23866: __rotate(_BidirectionalIterator __first,
23866: _BidirectionalIterator __middle,
23866: _BidirectionalIterator __last,
23866: bidirectional_iterator_tag)
23866: {
23866:
23866:
23866:
23866:
23866: if (__first == __middle)
23866: return __last;
23866: else if (__last == __middle)
23866: return __first;
23866:
23866: std::__reverse(__first, __middle, bidirectional_iterator_tag());
23866: std::__reverse(__middle, __last, bidirectional_iterator_tag());
23866:
23866: while (__first != __middle && __middle != __last)
23866: {
23866: std::iter_swap(__first, --__last);
23866: ++__first;
23866: }
23866:
23866: if (__first == __middle)
23866: {
23866: std::__reverse(__middle, __last, bidirectional_iterator_tag());
23866: return __last;
23866: }
23866: else
23866: {
23866: std::__reverse(__first, __middle, bidirectional_iterator_tag());
23866: return __first;
23866: }
23866: }
23866:
23866:
23866: template<typename _RandomAccessIterator>
23866:
23866: _RandomAccessIterator
23866: __rotate(_RandomAccessIterator __first,
23866: _RandomAccessIterator __middle,
23866: _RandomAccessIterator __last,
23866: random_access_iterator_tag)
23866: {
23866:
23866:
23866:
23866:
23866: if (__first == __middle)
23866: return __last;
23866: else if (__last == __middle)
23866: return __first;
23866:
23866: typedef typename iterator_traits<_RandomAccessIterator>::difference_type
23866: _Distance;
23866: typedef typename iterator_traits<_RandomAccessIterator>::value_type
23866: _ValueType;
23866:
23866: _Distance __n = __last - __first;
23866: _Distance __k = __middle - __first;
23866:
23866: if (__k == __n - __k)
23866: {
23866: std::swap_ranges(__first, __middle, __middle);
23866: return __middle;
23866: }
23866:
23866: _RandomAccessIterator __p = __first;
23866: _RandomAccessIterator __ret = __first + (__last - __middle);
23866:
23866: for (;;)
23866: {
23866: if (__k < __n - __k)
23866: {
23866: if (__is_pod(_ValueType) && __k == 1)
23866: {
23866: _ValueType __t = std::move(*__p);
23866: std::move(__p + 1, __p + __n, __p);
23866: *(__p + __n - 1) = std::move(__t);
23866: return __ret;
23866: }
23866: _RandomAccessIterator __q = __p + __k;
23866: for (_Distance __i = 0; __i < __n - __k; ++ __i)
23866: {
23866: std::iter_swap(__p, __q);
23866: ++__p;
23866: ++__q;
23866: }
23866: __n %= __k;
23866: if (__n == 0)
23866: return __ret;
23866: std::swap(__n, __k);
23866: __k = __n - __k;
23866: }
23866: else
23866: {
23866: __k = __n - __k;
23866: if (__is_pod(_ValueType) && __k == 1)
23866: {
23866: _ValueType __t = std::move(*(__p + __n - 1));
23866: std::move_backward(__p, __p + __n - 1, __p + __n);
23866: *__p = std::move(__t);
23866: return __ret;
23866: }
23866: _RandomAccessIterator __q = __p + __n;
23866: __p = __q - __k;
23866: for (_Distance __i = 0; __i < __n - __k; ++ __i)
23866: {
23866: --__p;
23866: --__q;
23866: std::iter_swap(__p, __q);
23866: }
23866: __n %= __k;
23866: if (__n == 0)
23866: return __ret;
23866: std::swap(__n, __k);
23866: }
23866: }
23866: }
23866: # 1422 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator>
23866:
23866: inline _ForwardIterator
23866: rotate(_ForwardIterator __first, _ForwardIterator __middle,
23866: _ForwardIterator __last)
23866: {
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: return std::__rotate(__first, __middle, __last,
23866: std::__iterator_category(__first));
23866: }
23866:
23866: }
23866: # 1460 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator, typename _OutputIterator>
23866:
23866: inline _OutputIterator
23866: rotate_copy(_ForwardIterator __first, _ForwardIterator __middle,
23866: _ForwardIterator __last, _OutputIterator __result)
23866: {
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: return std::copy(__first, __middle,
23866: std::copy(__middle, __last, __result));
23866: }
23866:
23866:
23866: template<typename _ForwardIterator, typename _Predicate>
23866:
23866: _ForwardIterator
23866: __partition(_ForwardIterator __first, _ForwardIterator __last,
23866: _Predicate __pred, forward_iterator_tag)
23866: {
23866: if (__first == __last)
23866: return __first;
23866:
23866: while (__pred(*__first))
23866: if (++__first == __last)
23866: return __first;
23866:
23866: _ForwardIterator __next = __first;
23866:
23866: while (++__next != __last)
23866: if (__pred(*__next))
23866: {
23866: std::iter_swap(__first, __next);
23866: ++__first;
23866: }
23866:
23866: return __first;
23866: }
23866:
23866:
23866: template<typename _BidirectionalIterator, typename _Predicate>
23866:
23866: _BidirectionalIterator
23866: __partition(_BidirectionalIterator __first, _BidirectionalIterator __last,
23866: _Predicate __pred, bidirectional_iterator_tag)
23866: {
23866: while (true)
23866: {
23866: while (true)
23866: if (__first == __last)
23866: return __first;
23866: else if (__pred(*__first))
23866: ++__first;
23866: else
23866: break;
23866: --__last;
23866: while (true)
23866: if (__first == __last)
23866: return __first;
23866: else if (!bool(__pred(*__last)))
23866: --__last;
23866: else
23866: break;
23866: std::iter_swap(__first, __last);
23866: ++__first;
23866: }
23866: }
23866: # 1540 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator, typename _Pointer, typename _Predicate,
23866: typename _Distance>
23866: _ForwardIterator
23866: __stable_partition_adaptive(_ForwardIterator __first,
23866: _ForwardIterator __last,
23866: _Predicate __pred, _Distance __len,
23866: _Pointer __buffer,
23866: _Distance __buffer_size)
23866: {
23866: if (__len == 1)
23866: return __first;
23866:
23866: if (__len <= __buffer_size)
23866: {
23866: _ForwardIterator __result1 = __first;
23866: _Pointer __result2 = __buffer;
23866:
23866:
23866:
23866:
23866: *__result2 = std::move(*__first);
23866: ++__result2;
23866: ++__first;
23866: for (; __first != __last; ++__first)
23866: if (__pred(__first))
23866: {
23866: *__result1 = std::move(*__first);
23866: ++__result1;
23866: }
23866: else
23866: {
23866: *__result2 = std::move(*__first);
23866: ++__result2;
23866: }
23866:
23866: std::move(__buffer, __result2, __result1);
23866: return __result1;
23866: }
23866:
23866: _ForwardIterator __middle = __first;
23866: std::advance(__middle, __len / 2);
23866: _ForwardIterator __left_split =
23866: std::__stable_partition_adaptive(__first, __middle, __pred,
23866: __len / 2, __buffer,
23866: __buffer_size);
23866:
23866:
23866:
23866: _Distance __right_len = __len - __len / 2;
23866: _ForwardIterator __right_split =
23866: std::__find_if_not_n(__middle, __right_len, __pred);
23866:
23866: if (__right_len)
23866: __right_split =
23866: std::__stable_partition_adaptive(__right_split, __last, __pred,
23866: __right_len,
23866: __buffer, __buffer_size);
23866:
23866: return std::rotate(__left_split, __middle, __right_split);
23866: }
23866:
23866: template<typename _ForwardIterator, typename _Predicate>
23866: _ForwardIterator
23866: __stable_partition(_ForwardIterator __first, _ForwardIterator __last,
23866: _Predicate __pred)
23866: {
23866: __first = std::__find_if_not(__first, __last, __pred);
23866:
23866: if (__first == __last)
23866: return __first;
23866:
23866: typedef typename iterator_traits<_ForwardIterator>::value_type
23866: _ValueType;
23866: typedef typename iterator_traits<_ForwardIterator>::difference_type
23866: _DistanceType;
23866:
23866: _Temporary_buffer<_ForwardIterator, _ValueType>
23866: __buf(__first, std::distance(__first, __last));
23866: return
23866: std::__stable_partition_adaptive(__first, __last, __pred,
23866: _DistanceType(__buf.requested_size()),
23866: __buf.begin(),
23866: _DistanceType(__buf.size()));
23866: }
23866: # 1642 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator, typename _Predicate>
23866: inline _ForwardIterator
23866: stable_partition(_ForwardIterator __first, _ForwardIterator __last,
23866: _Predicate __pred)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__stable_partition(__first, __last,
23866: __gnu_cxx::__ops::__pred_iter(__pred));
23866: }
23866:
23866:
23866: template<typename _RandomAccessIterator, typename _Compare>
23866:
23866: void
23866: __heap_select(_RandomAccessIterator __first,
23866: _RandomAccessIterator __middle,
23866: _RandomAccessIterator __last, _Compare __comp)
23866: {
23866: std::__make_heap(__first, __middle, __comp);
23866: for (_RandomAccessIterator __i = __middle; __i < __last; ++__i)
23866: if (__comp(__i, __first))
23866: std::__pop_heap(__first, __middle, __i, __comp);
23866: }
23866:
23866:
23866:
23866: template<typename _InputIterator, typename _RandomAccessIterator,
23866: typename _Compare>
23866:
23866: _RandomAccessIterator
23866: __partial_sort_copy(_InputIterator __first, _InputIterator __last,
23866: _RandomAccessIterator __result_first,
23866: _RandomAccessIterator __result_last,
23866: _Compare __comp)
23866: {
23866: typedef typename iterator_traits<_InputIterator>::value_type
23866: _InputValueType;
23866: typedef iterator_traits<_RandomAccessIterator> _RItTraits;
23866: typedef typename _RItTraits::difference_type _DistanceType;
23866:
23866: if (__result_first == __result_last)
23866: return __result_last;
23866: _RandomAccessIterator __result_real_last = __result_first;
23866: while (__first != __last && __result_real_last != __result_last)
23866: {
23866: *__result_real_last = *__first;
23866: ++__result_real_last;
23866: ++__first;
23866: }
23866:
23866: std::__make_heap(__result_first, __result_real_last, __comp);
23866: while (__first != __last)
23866: {
23866: if (__comp(__first, __result_first))
23866: std::__adjust_heap(__result_first, _DistanceType(0),
23866: _DistanceType(__result_real_last
23866: - __result_first),
23866: _InputValueType(*__first), __comp);
23866: ++__first;
23866: }
23866: std::__sort_heap(__result_first, __result_real_last, __comp);
23866: return __result_real_last;
23866: }
23866: # 1730 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator, typename _RandomAccessIterator>
23866:
23866: inline _RandomAccessIterator
23866: partial_sort_copy(_InputIterator __first, _InputIterator __last,
23866: _RandomAccessIterator __result_first,
23866: _RandomAccessIterator __result_last)
23866: {
23866: # 1745 "/usr/include/c++/10/bits/stl_algo.h" 3
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866: ;
23866:
23866: return std::__partial_sort_copy(__first, __last,
23866: __result_first, __result_last,
23866: __gnu_cxx::__ops::__iter_less_iter());
23866: }
23866: # 1780 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator, typename _RandomAccessIterator,
23866: typename _Compare>
23866:
23866: inline _RandomAccessIterator
23866: partial_sort_copy(_InputIterator __first, _InputIterator __last,
23866: _RandomAccessIterator __result_first,
23866: _RandomAccessIterator __result_last,
23866: _Compare __comp)
23866: {
23866: # 1797 "/usr/include/c++/10/bits/stl_algo.h" 3
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866: ;
23866:
23866: return std::__partial_sort_copy(__first, __last,
23866: __result_first, __result_last,
23866: __gnu_cxx::__ops::__iter_comp_iter(__comp));
23866: }
23866:
23866:
23866: template<typename _RandomAccessIterator, typename _Compare>
23866:
23866: void
23866: __unguarded_linear_insert(_RandomAccessIterator __last,
23866: _Compare __comp)
23866: {
23866: typename iterator_traits<_RandomAccessIterator>::value_type
23866: __val = std::move(*__last);
23866: _RandomAccessIterator __next = __last;
23866: --__next;
23866: while (__comp(__val, __next))
23866: {
23866: *__last = std::move(*__next);
23866: __last = __next;
23866: --__next;
23866: }
23866: *__last = std::move(__val);
23866: }
23866:
23866:
23866: template<typename _RandomAccessIterator, typename _Compare>
23866:
23866: void
23866: __insertion_sort(_RandomAccessIterator __first,
23866: _RandomAccessIterator __last, _Compare __comp)
23866: {
23866: if (__first == __last) return;
23866:
23866: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i)
23866: {
23866: if (__comp(__i, __first))
23866: {
23866: typename iterator_traits<_RandomAccessIterator>::value_type
23866: __val = std::move(*__i);
23866: std::move_backward(__first, __i, __i + 1);
23866: *__first = std::move(__val);
23866: }
23866: else
23866: std::__unguarded_linear_insert(__i,
23866: __gnu_cxx::__ops::__val_comp_iter(__comp));
23866: }
23866: }
23866:
23866:
23866: template<typename _RandomAccessIterator, typename _Compare>
23866:
23866: inline void
23866: __unguarded_insertion_sort(_RandomAccessIterator __first,
23866: _RandomAccessIterator __last, _Compare __comp)
23866: {
23866: for (_RandomAccessIterator __i = __first; __i != __last; ++__i)
23866: std::__unguarded_linear_insert(__i,
23866: __gnu_cxx::__ops::__val_comp_iter(__comp));
23866: }
23866:
23866:
23866:
23866:
23866:
23866: enum { _S_threshold = 16 };
23866:
23866:
23866: template<typename _RandomAccessIterator, typename _Compare>
23866:
23866: void
23866: __final_insertion_sort(_RandomAccessIterator __first,
23866: _RandomAccessIterator __last, _Compare __comp)
23866: {
23866: if (__last - __first > int(_S_threshold))
23866: {
23866: std::__insertion_sort(__first, __first + int(_S_threshold), __comp);
23866: std::__unguarded_insertion_sort(__first + int(_S_threshold), __last,
23866: __comp);
23866: }
23866: else
23866: std::__insertion_sort(__first, __last, __comp);
23866: }
23866:
23866:
23866: template<typename _RandomAccessIterator, typename _Compare>
23866:
23866: _RandomAccessIterator
23866: __unguarded_partition(_RandomAccessIterator __first,
23866: _RandomAccessIterator __last,
23866: _RandomAccessIterator __pivot, _Compare __comp)
23866: {
23866: while (true)
23866: {
23866: while (__comp(__first, __pivot))
23866: ++__first;
23866: --__last;
23866: while (__comp(__pivot, __last))
23866: --__last;
23866: if (!(__first < __last))
23866: return __first;
23866: std::iter_swap(__first, __last);
23866: ++__first;
23866: }
23866: }
23866:
23866:
23866: template<typename _RandomAccessIterator, typename _Compare>
23866:
23866: inline _RandomAccessIterator
23866: __unguarded_partition_pivot(_RandomAccessIterator __first,
23866: _RandomAccessIterator __last, _Compare __comp)
23866: {
23866: _RandomAccessIterator __mid = __first + (__last - __first) / 2;
23866: std::__move_median_to_first(__first, __first + 1, __mid, __last - 1,
23866: __comp);
23866: return std::__unguarded_partition(__first + 1, __last, __first, __comp);
23866: }
23866:
23866: template<typename _RandomAccessIterator, typename _Compare>
23866:
23866: inline void
23866: __partial_sort(_RandomAccessIterator __first,
23866: _RandomAccessIterator __middle,
23866: _RandomAccessIterator __last,
23866: _Compare __comp)
23866: {
23866: std::__heap_select(__first, __middle, __last, __comp);
23866: std::__sort_heap(__first, __middle, __comp);
23866: }
23866:
23866:
23866: template<typename _RandomAccessIterator, typename _Size, typename _Compare>
23866:
23866: void
23866: __introsort_loop(_RandomAccessIterator __first,
23866: _RandomAccessIterator __last,
23866: _Size __depth_limit, _Compare __comp)
23866: {
23866: while (__last - __first > int(_S_threshold))
23866: {
23866: if (__depth_limit == 0)
23866: {
23866: std::__partial_sort(__first, __last, __last, __comp);
23866: return;
23866: }
23866: --__depth_limit;
23866: _RandomAccessIterator __cut =
23866: std::__unguarded_partition_pivot(__first, __last, __comp);
23866: std::__introsort_loop(__cut, __last, __depth_limit, __comp);
23866: __last = __cut;
23866: }
23866: }
23866:
23866:
23866:
23866: template<typename _RandomAccessIterator, typename _Compare>
23866:
23866: inline void
23866: __sort(_RandomAccessIterator __first, _RandomAccessIterator __last,
23866: _Compare __comp)
23866: {
23866: if (__first != __last)
23866: {
23866: std::__introsort_loop(__first, __last,
23866: std::__lg(__last - __first) * 2,
23866: __comp);
23866: std::__final_insertion_sort(__first, __last, __comp);
23866: }
23866: }
23866:
23866: template<typename _RandomAccessIterator, typename _Size, typename _Compare>
23866:
23866: void
23866: __introselect(_RandomAccessIterator __first, _RandomAccessIterator __nth,
23866: _RandomAccessIterator __last, _Size __depth_limit,
23866: _Compare __comp)
23866: {
23866: while (__last - __first > 3)
23866: {
23866: if (__depth_limit == 0)
23866: {
23866: std::__heap_select(__first, __nth + 1, __last, __comp);
23866:
23866: std::iter_swap(__first, __nth);
23866: return;
23866: }
23866: --__depth_limit;
23866: _RandomAccessIterator __cut =
23866: std::__unguarded_partition_pivot(__first, __last, __comp);
23866: if (__cut <= __nth)
23866: __first = __cut;
23866: else
23866: __last = __cut;
23866: }
23866: std::__insertion_sort(__first, __last, __comp);
23866: }
23866: # 2028 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator, typename _Tp, typename _Compare>
23866:
23866: inline _ForwardIterator
23866: lower_bound(_ForwardIterator __first, _ForwardIterator __last,
23866: const _Tp& __val, _Compare __comp)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__lower_bound(__first, __last, __val,
23866: __gnu_cxx::__ops::__iter_comp_val(__comp));
23866: }
23866:
23866: template<typename _ForwardIterator, typename _Tp, typename _Compare>
23866:
23866: _ForwardIterator
23866: __upper_bound(_ForwardIterator __first, _ForwardIterator __last,
23866: const _Tp& __val, _Compare __comp)
23866: {
23866: typedef typename iterator_traits<_ForwardIterator>::difference_type
23866: _DistanceType;
23866:
23866: _DistanceType __len = std::distance(__first, __last);
23866:
23866: while (__len > 0)
23866: {
23866: _DistanceType __half = __len >> 1;
23866: _ForwardIterator __middle = __first;
23866: std::advance(__middle, __half);
23866: if (__comp(__val, __middle))
23866: __len = __half;
23866: else
23866: {
23866: __first = __middle;
23866: ++__first;
23866: __len = __len - __half - 1;
23866: }
23866: }
23866: return __first;
23866: }
23866: # 2084 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator, typename _Tp>
23866:
23866: inline _ForwardIterator
23866: upper_bound(_ForwardIterator __first, _ForwardIterator __last,
23866: const _Tp& __val)
23866: {
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__upper_bound(__first, __last, __val,
23866: __gnu_cxx::__ops::__val_less_iter());
23866: }
23866: # 2115 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator, typename _Tp, typename _Compare>
23866:
23866: inline _ForwardIterator
23866: upper_bound(_ForwardIterator __first, _ForwardIterator __last,
23866: const _Tp& __val, _Compare __comp)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__upper_bound(__first, __last, __val,
23866: __gnu_cxx::__ops::__val_comp_iter(__comp));
23866: }
23866:
23866: template<typename _ForwardIterator, typename _Tp,
23866: typename _CompareItTp, typename _CompareTpIt>
23866:
23866: pair<_ForwardIterator, _ForwardIterator>
23866: __equal_range(_ForwardIterator __first, _ForwardIterator __last,
23866: const _Tp& __val,
23866: _CompareItTp __comp_it_val, _CompareTpIt __comp_val_it)
23866: {
23866: typedef typename iterator_traits<_ForwardIterator>::difference_type
23866: _DistanceType;
23866:
23866: _DistanceType __len = std::distance(__first, __last);
23866:
23866: while (__len > 0)
23866: {
23866: _DistanceType __half = __len >> 1;
23866: _ForwardIterator __middle = __first;
23866: std::advance(__middle, __half);
23866: if (__comp_it_val(__middle, __val))
23866: {
23866: __first = __middle;
23866: ++__first;
23866: __len = __len - __half - 1;
23866: }
23866: else if (__comp_val_it(__val, __middle))
23866: __len = __half;
23866: else
23866: {
23866: _ForwardIterator __left
23866: = std::__lower_bound(__first, __middle, __val, __comp_it_val);
23866: std::advance(__first, __len);
23866: _ForwardIterator __right
23866: = std::__upper_bound(++__middle, __first, __val, __comp_val_it);
23866: return pair<_ForwardIterator, _ForwardIterator>(__left, __right);
23866: }
23866: }
23866: return pair<_ForwardIterator, _ForwardIterator>(__first, __first);
23866: }
23866: # 2188 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator, typename _Tp>
23866:
23866: inline pair<_ForwardIterator, _ForwardIterator>
23866: equal_range(_ForwardIterator __first, _ForwardIterator __last,
23866: const _Tp& __val)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: return std::__equal_range(__first, __last, __val,
23866: __gnu_cxx::__ops::__iter_less_val(),
23866: __gnu_cxx::__ops::__val_less_iter());
23866: }
23866: # 2225 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator, typename _Tp, typename _Compare>
23866:
23866: inline pair<_ForwardIterator, _ForwardIterator>
23866: equal_range(_ForwardIterator __first, _ForwardIterator __last,
23866: const _Tp& __val, _Compare __comp)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: ;
23866:
23866: return std::__equal_range(__first, __last, __val,
23866: __gnu_cxx::__ops::__iter_comp_val(__comp),
23866: __gnu_cxx::__ops::__val_comp_iter(__comp));
23866: }
23866: # 2259 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator, typename _Tp>
23866:
23866: bool
23866: binary_search(_ForwardIterator __first, _ForwardIterator __last,
23866: const _Tp& __val)
23866: {
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: _ForwardIterator __i
23866: = std::__lower_bound(__first, __last, __val,
23866: __gnu_cxx::__ops::__iter_less_val());
23866: return __i != __last && !(__val < *__i);
23866: }
23866: # 2293 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator, typename _Tp, typename _Compare>
23866:
23866: bool
23866: binary_search(_ForwardIterator __first, _ForwardIterator __last,
23866: const _Tp& __val, _Compare __comp)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: ;
23866:
23866: _ForwardIterator __i
23866: = std::__lower_bound(__first, __last, __val,
23866: __gnu_cxx::__ops::__iter_comp_val(__comp));
23866: return __i != __last && !bool(__comp(__val, *__i));
23866: }
23866:
23866:
23866:
23866:
23866: template<typename _InputIterator1, typename _InputIterator2,
23866: typename _OutputIterator, typename _Compare>
23866: void
23866: __move_merge_adaptive(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2, _InputIterator2 __last2,
23866: _OutputIterator __result, _Compare __comp)
23866: {
23866: while (__first1 != __last1 && __first2 != __last2)
23866: {
23866: if (__comp(__first2, __first1))
23866: {
23866: *__result = std::move(*__first2);
23866: ++__first2;
23866: }
23866: else
23866: {
23866: *__result = std::move(*__first1);
23866: ++__first1;
23866: }
23866: ++__result;
23866: }
23866: if (__first1 != __last1)
23866: std::move(__first1, __last1, __result);
23866: }
23866:
23866:
23866: template<typename _BidirectionalIterator1, typename _BidirectionalIterator2,
23866: typename _BidirectionalIterator3, typename _Compare>
23866: void
23866: __move_merge_adaptive_backward(_BidirectionalIterator1 __first1,
23866: _BidirectionalIterator1 __last1,
23866: _BidirectionalIterator2 __first2,
23866: _BidirectionalIterator2 __last2,
23866: _BidirectionalIterator3 __result,
23866: _Compare __comp)
23866: {
23866: if (__first1 == __last1)
23866: {
23866: std::move_backward(__first2, __last2, __result);
23866: return;
23866: }
23866: else if (__first2 == __last2)
23866: return;
23866:
23866: --__last1;
23866: --__last2;
23866: while (true)
23866: {
23866: if (__comp(__last2, __last1))
23866: {
23866: *--__result = std::move(*__last1);
23866: if (__first1 == __last1)
23866: {
23866: std::move_backward(__first2, ++__last2, __result);
23866: return;
23866: }
23866: --__last1;
23866: }
23866: else
23866: {
23866: *--__result = std::move(*__last2);
23866: if (__first2 == __last2)
23866: return;
23866: --__last2;
23866: }
23866: }
23866: }
23866:
23866:
23866: template<typename _BidirectionalIterator1, typename _BidirectionalIterator2,
23866: typename _Distance>
23866: _BidirectionalIterator1
23866: __rotate_adaptive(_BidirectionalIterator1 __first,
23866: _BidirectionalIterator1 __middle,
23866: _BidirectionalIterator1 __last,
23866: _Distance __len1, _Distance __len2,
23866: _BidirectionalIterator2 __buffer,
23866: _Distance __buffer_size)
23866: {
23866: _BidirectionalIterator2 __buffer_end;
23866: if (__len1 > __len2 && __len2 <= __buffer_size)
23866: {
23866: if (__len2)
23866: {
23866: __buffer_end = std::move(__middle, __last, __buffer);
23866: std::move_backward(__first, __middle, __last);
23866: return std::move(__buffer, __buffer_end, __first);
23866: }
23866: else
23866: return __first;
23866: }
23866: else if (__len1 <= __buffer_size)
23866: {
23866: if (__len1)
23866: {
23866: __buffer_end = std::move(__first, __middle, __buffer);
23866: std::move(__middle, __last, __first);
23866: return std::move_backward(__buffer, __buffer_end, __last);
23866: }
23866: else
23866: return __last;
23866: }
23866: else
23866: return std::rotate(__first, __middle, __last);
23866: }
23866:
23866:
23866: template<typename _BidirectionalIterator, typename _Distance,
23866: typename _Pointer, typename _Compare>
23866: void
23866: __merge_adaptive(_BidirectionalIterator __first,
23866: _BidirectionalIterator __middle,
23866: _BidirectionalIterator __last,
23866: _Distance __len1, _Distance __len2,
23866: _Pointer __buffer, _Distance __buffer_size,
23866: _Compare __comp)
23866: {
23866: if (__len1 <= __len2 && __len1 <= __buffer_size)
23866: {
23866: _Pointer __buffer_end = std::move(__first, __middle, __buffer);
23866: std::__move_merge_adaptive(__buffer, __buffer_end, __middle, __last,
23866: __first, __comp);
23866: }
23866: else if (__len2 <= __buffer_size)
23866: {
23866: _Pointer __buffer_end = std::move(__middle, __last, __buffer);
23866: std::__move_merge_adaptive_backward(__first, __middle, __buffer,
23866: __buffer_end, __last, __comp);
23866: }
23866: else
23866: {
23866: _BidirectionalIterator __first_cut = __first;
23866: _BidirectionalIterator __second_cut = __middle;
23866: _Distance __len11 = 0;
23866: _Distance __len22 = 0;
23866: if (__len1 > __len2)
23866: {
23866: __len11 = __len1 / 2;
23866: std::advance(__first_cut, __len11);
23866: __second_cut
23866: = std::__lower_bound(__middle, __last, *__first_cut,
23866: __gnu_cxx::__ops::__iter_comp_val(__comp));
23866: __len22 = std::distance(__middle, __second_cut);
23866: }
23866: else
23866: {
23866: __len22 = __len2 / 2;
23866: std::advance(__second_cut, __len22);
23866: __first_cut
23866: = std::__upper_bound(__first, __middle, *__second_cut,
23866: __gnu_cxx::__ops::__val_comp_iter(__comp));
23866: __len11 = std::distance(__first, __first_cut);
23866: }
23866:
23866: _BidirectionalIterator __new_middle
23866: = std::__rotate_adaptive(__first_cut, __middle, __second_cut,
23866: __len1 - __len11, __len22, __buffer,
23866: __buffer_size);
23866: std::__merge_adaptive(__first, __first_cut, __new_middle, __len11,
23866: __len22, __buffer, __buffer_size, __comp);
23866: std::__merge_adaptive(__new_middle, __second_cut, __last,
23866: __len1 - __len11,
23866: __len2 - __len22, __buffer,
23866: __buffer_size, __comp);
23866: }
23866: }
23866:
23866:
23866: template<typename _BidirectionalIterator, typename _Distance,
23866: typename _Compare>
23866: void
23866: __merge_without_buffer(_BidirectionalIterator __first,
23866: _BidirectionalIterator __middle,
23866: _BidirectionalIterator __last,
23866: _Distance __len1, _Distance __len2,
23866: _Compare __comp)
23866: {
23866: if (__len1 == 0 || __len2 == 0)
23866: return;
23866:
23866: if (__len1 + __len2 == 2)
23866: {
23866: if (__comp(__middle, __first))
23866: std::iter_swap(__first, __middle);
23866: return;
23866: }
23866:
23866: _BidirectionalIterator __first_cut = __first;
23866: _BidirectionalIterator __second_cut = __middle;
23866: _Distance __len11 = 0;
23866: _Distance __len22 = 0;
23866: if (__len1 > __len2)
23866: {
23866: __len11 = __len1 / 2;
23866: std::advance(__first_cut, __len11);
23866: __second_cut
23866: = std::__lower_bound(__middle, __last, *__first_cut,
23866: __gnu_cxx::__ops::__iter_comp_val(__comp));
23866: __len22 = std::distance(__middle, __second_cut);
23866: }
23866: else
23866: {
23866: __len22 = __len2 / 2;
23866: std::advance(__second_cut, __len22);
23866: __first_cut
23866: = std::__upper_bound(__first, __middle, *__second_cut,
23866: __gnu_cxx::__ops::__val_comp_iter(__comp));
23866: __len11 = std::distance(__first, __first_cut);
23866: }
23866:
23866: _BidirectionalIterator __new_middle
23866: = std::rotate(__first_cut, __middle, __second_cut);
23866: std::__merge_without_buffer(__first, __first_cut, __new_middle,
23866: __len11, __len22, __comp);
23866: std::__merge_without_buffer(__new_middle, __second_cut, __last,
23866: __len1 - __len11, __len2 - __len22, __comp);
23866: }
23866:
23866: template<typename _BidirectionalIterator, typename _Compare>
23866: void
23866: __inplace_merge(_BidirectionalIterator __first,
23866: _BidirectionalIterator __middle,
23866: _BidirectionalIterator __last,
23866: _Compare __comp)
23866: {
23866: typedef typename iterator_traits<_BidirectionalIterator>::value_type
23866: _ValueType;
23866: typedef typename iterator_traits<_BidirectionalIterator>::difference_type
23866: _DistanceType;
23866:
23866: if (__first == __middle || __middle == __last)
23866: return;
23866:
23866: const _DistanceType __len1 = std::distance(__first, __middle);
23866: const _DistanceType __len2 = std::distance(__middle, __last);
23866:
23866: typedef _Temporary_buffer<_BidirectionalIterator, _ValueType> _TmpBuf;
23866: _TmpBuf __buf(__first, __len1 + __len2);
23866:
23866: if (__buf.begin() == 0)
23866: std::__merge_without_buffer
23866: (__first, __middle, __last, __len1, __len2, __comp);
23866: else
23866: std::__merge_adaptive
23866: (__first, __middle, __last, __len1, __len2, __buf.begin(),
23866: _DistanceType(__buf.size()), __comp);
23866: }
23866: # 2583 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _BidirectionalIterator>
23866: inline void
23866: inplace_merge(_BidirectionalIterator __first,
23866: _BidirectionalIterator __middle,
23866: _BidirectionalIterator __last)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866: ;
23866:
23866: std::__inplace_merge(__first, __middle, __last,
23866: __gnu_cxx::__ops::__iter_less_iter());
23866: }
23866: # 2624 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _BidirectionalIterator, typename _Compare>
23866: inline void
23866: inplace_merge(_BidirectionalIterator __first,
23866: _BidirectionalIterator __middle,
23866: _BidirectionalIterator __last,
23866: _Compare __comp)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866: ;
23866:
23866: std::__inplace_merge(__first, __middle, __last,
23866: __gnu_cxx::__ops::__iter_comp_iter(__comp));
23866: }
23866:
23866:
23866:
23866: template<typename _InputIterator, typename _OutputIterator,
23866: typename _Compare>
23866: _OutputIterator
23866: __move_merge(_InputIterator __first1, _InputIterator __last1,
23866: _InputIterator __first2, _InputIterator __last2,
23866: _OutputIterator __result, _Compare __comp)
23866: {
23866: while (__first1 != __last1 && __first2 != __last2)
23866: {
23866: if (__comp(__first2, __first1))
23866: {
23866: *__result = std::move(*__first2);
23866: ++__first2;
23866: }
23866: else
23866: {
23866: *__result = std::move(*__first1);
23866: ++__first1;
23866: }
23866: ++__result;
23866: }
23866: return std::move(__first2, __last2, std::move(__first1, __last1, __result))
23866:
23866: ;
23866: }
23866:
23866: template<typename _RandomAccessIterator1, typename _RandomAccessIterator2,
23866: typename _Distance, typename _Compare>
23866: void
23866: __merge_sort_loop(_RandomAccessIterator1 __first,
23866: _RandomAccessIterator1 __last,
23866: _RandomAccessIterator2 __result, _Distance __step_size,
23866: _Compare __comp)
23866: {
23866: const _Distance __two_step = 2 * __step_size;
23866:
23866: while (__last - __first >= __two_step)
23866: {
23866: __result = std::__move_merge(__first, __first + __step_size,
23866: __first + __step_size,
23866: __first + __two_step,
23866: __result, __comp);
23866: __first += __two_step;
23866: }
23866: __step_size = std::min(_Distance(__last - __first), __step_size);
23866:
23866: std::__move_merge(__first, __first + __step_size,
23866: __first + __step_size, __last, __result, __comp);
23866: }
23866:
23866: template<typename _RandomAccessIterator, typename _Distance,
23866: typename _Compare>
23866:
23866: void
23866: __chunk_insertion_sort(_RandomAccessIterator __first,
23866: _RandomAccessIterator __last,
23866: _Distance __chunk_size, _Compare __comp)
23866: {
23866: while (__last - __first >= __chunk_size)
23866: {
23866: std::__insertion_sort(__first, __first + __chunk_size, __comp);
23866: __first += __chunk_size;
23866: }
23866: std::__insertion_sort(__first, __last, __comp);
23866: }
23866:
23866: enum { _S_chunk_size = 7 };
23866:
23866: template<typename _RandomAccessIterator, typename _Pointer, typename _Compare>
23866: void
23866: __merge_sort_with_buffer(_RandomAccessIterator __first,
23866: _RandomAccessIterator __last,
23866: _Pointer __buffer, _Compare __comp)
23866: {
23866: typedef typename iterator_traits<_RandomAccessIterator>::difference_type
23866: _Distance;
23866:
23866: const _Distance __len = __last - __first;
23866: const _Pointer __buffer_last = __buffer + __len;
23866:
23866: _Distance __step_size = _S_chunk_size;
23866: std::__chunk_insertion_sort(__first, __last, __step_size, __comp);
23866:
23866: while (__step_size < __len)
23866: {
23866: std::__merge_sort_loop(__first, __last, __buffer,
23866: __step_size, __comp);
23866: __step_size *= 2;
23866: std::__merge_sort_loop(__buffer, __buffer_last, __first,
23866: __step_size, __comp);
23866: __step_size *= 2;
23866: }
23866: }
23866:
23866: template<typename _RandomAccessIterator, typename _Pointer,
23866: typename _Distance, typename _Compare>
23866: void
23866: __stable_sort_adaptive(_RandomAccessIterator __first,
23866: _RandomAccessIterator __last,
23866: _Pointer __buffer, _Distance __buffer_size,
23866: _Compare __comp)
23866: {
23866: const _Distance __len = (__last - __first + 1) / 2;
23866: const _RandomAccessIterator __middle = __first + __len;
23866: if (__len > __buffer_size)
23866: {
23866: std::__stable_sort_adaptive(__first, __middle, __buffer,
23866: __buffer_size, __comp);
23866: std::__stable_sort_adaptive(__middle, __last, __buffer,
23866: __buffer_size, __comp);
23866: }
23866: else
23866: {
23866: std::__merge_sort_with_buffer(__first, __middle, __buffer, __comp);
23866: std::__merge_sort_with_buffer(__middle, __last, __buffer, __comp);
23866: }
23866: std::__merge_adaptive(__first, __middle, __last,
23866: _Distance(__middle - __first),
23866: _Distance(__last - __middle),
23866: __buffer, __buffer_size,
23866: __comp);
23866: }
23866:
23866:
23866: template<typename _RandomAccessIterator, typename _Compare>
23866: void
23866: __inplace_stable_sort(_RandomAccessIterator __first,
23866: _RandomAccessIterator __last, _Compare __comp)
23866: {
23866: if (__last - __first < 15)
23866: {
23866: std::__insertion_sort(__first, __last, __comp);
23866: return;
23866: }
23866: _RandomAccessIterator __middle = __first + (__last - __first) / 2;
23866: std::__inplace_stable_sort(__first, __middle, __comp);
23866: std::__inplace_stable_sort(__middle, __last, __comp);
23866: std::__merge_without_buffer(__first, __middle, __last,
23866: __middle - __first,
23866: __last - __middle,
23866: __comp);
23866: }
23866: # 2797 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator1, typename _InputIterator2,
23866: typename _Compare>
23866:
23866: bool
23866: __includes(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2, _InputIterator2 __last2,
23866: _Compare __comp)
23866: {
23866: while (__first1 != __last1 && __first2 != __last2)
23866: if (__comp(__first2, __first1))
23866: return false;
23866: else if (__comp(__first1, __first2))
23866: ++__first1;
23866: else
23866: {
23866: ++__first1;
23866: ++__first2;
23866: }
23866:
23866: return __first2 == __last2;
23866: }
23866: # 2837 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator1, typename _InputIterator2>
23866:
23866: inline bool
23866: includes(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2, _InputIterator2 __last2)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866: ;
23866: ;
23866:
23866: return std::__includes(__first1, __last1, __first2, __last2,
23866: __gnu_cxx::__ops::__iter_less_iter());
23866: }
23866: # 2882 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator1, typename _InputIterator2,
23866: typename _Compare>
23866:
23866: inline bool
23866: includes(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2, _InputIterator2 __last2,
23866: _Compare __comp)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866: ;
23866: ;
23866:
23866: return std::__includes(__first1, __last1, __first2, __last2,
23866: __gnu_cxx::__ops::__iter_comp_iter(__comp));
23866: }
23866: # 2918 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _BidirectionalIterator, typename _Compare>
23866:
23866: bool
23866: __next_permutation(_BidirectionalIterator __first,
23866: _BidirectionalIterator __last, _Compare __comp)
23866: {
23866: if (__first == __last)
23866: return false;
23866: _BidirectionalIterator __i = __first;
23866: ++__i;
23866: if (__i == __last)
23866: return false;
23866: __i = __last;
23866: --__i;
23866:
23866: for(;;)
23866: {
23866: _BidirectionalIterator __ii = __i;
23866: --__i;
23866: if (__comp(__i, __ii))
23866: {
23866: _BidirectionalIterator __j = __last;
23866: while (!__comp(__i, --__j))
23866: {}
23866: std::iter_swap(__i, __j);
23866: std::__reverse(__ii, __last,
23866: std::__iterator_category(__first));
23866: return true;
23866: }
23866: if (__i == __first)
23866: {
23866: std::__reverse(__first, __last,
23866: std::__iterator_category(__first));
23866: return false;
23866: }
23866: }
23866: }
23866: # 2968 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _BidirectionalIterator>
23866:
23866: inline bool
23866: next_permutation(_BidirectionalIterator __first,
23866: _BidirectionalIterator __last)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: return std::__next_permutation
23866: (__first, __last, __gnu_cxx::__ops::__iter_less_iter());
23866: }
23866: # 3001 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _BidirectionalIterator, typename _Compare>
23866:
23866: inline bool
23866: next_permutation(_BidirectionalIterator __first,
23866: _BidirectionalIterator __last, _Compare __comp)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: return std::__next_permutation
23866: (__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp));
23866: }
23866:
23866: template<typename _BidirectionalIterator, typename _Compare>
23866:
23866: bool
23866: __prev_permutation(_BidirectionalIterator __first,
23866: _BidirectionalIterator __last, _Compare __comp)
23866: {
23866: if (__first == __last)
23866: return false;
23866: _BidirectionalIterator __i = __first;
23866: ++__i;
23866: if (__i == __last)
23866: return false;
23866: __i = __last;
23866: --__i;
23866:
23866: for(;;)
23866: {
23866: _BidirectionalIterator __ii = __i;
23866: --__i;
23866: if (__comp(__ii, __i))
23866: {
23866: _BidirectionalIterator __j = __last;
23866: while (!__comp(--__j, __i))
23866: {}
23866: std::iter_swap(__i, __j);
23866: std::__reverse(__ii, __last,
23866: std::__iterator_category(__first));
23866: return true;
23866: }
23866: if (__i == __first)
23866: {
23866: std::__reverse(__first, __last,
23866: std::__iterator_category(__first));
23866: return false;
23866: }
23866: }
23866: }
23866: # 3071 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _BidirectionalIterator>
23866:
23866: inline bool
23866: prev_permutation(_BidirectionalIterator __first,
23866: _BidirectionalIterator __last)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: return std::__prev_permutation(__first, __last,
23866: __gnu_cxx::__ops::__iter_less_iter());
23866: }
23866: # 3104 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _BidirectionalIterator, typename _Compare>
23866:
23866: inline bool
23866: prev_permutation(_BidirectionalIterator __first,
23866: _BidirectionalIterator __last, _Compare __comp)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: return std::__prev_permutation(__first, __last,
23866: __gnu_cxx::__ops::__iter_comp_iter(__comp));
23866: }
23866:
23866:
23866:
23866:
23866: template<typename _InputIterator, typename _OutputIterator,
23866: typename _Predicate, typename _Tp>
23866:
23866: _OutputIterator
23866: __replace_copy_if(_InputIterator __first, _InputIterator __last,
23866: _OutputIterator __result,
23866: _Predicate __pred, const _Tp& __new_value)
23866: {
23866: for (; __first != __last; ++__first, (void)++__result)
23866: if (__pred(__first))
23866: *__result = __new_value;
23866: else
23866: *__result = *__first;
23866: return __result;
23866: }
23866: # 3156 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator, typename _OutputIterator, typename _Tp>
23866:
23866: inline _OutputIterator
23866: replace_copy(_InputIterator __first, _InputIterator __last,
23866: _OutputIterator __result,
23866: const _Tp& __old_value, const _Tp& __new_value)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__replace_copy_if(__first, __last, __result,
23866: __gnu_cxx::__ops::__iter_equals_val(__old_value),
23866: __new_value);
23866: }
23866: # 3191 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator, typename _OutputIterator,
23866: typename _Predicate, typename _Tp>
23866:
23866: inline _OutputIterator
23866: replace_copy_if(_InputIterator __first, _InputIterator __last,
23866: _OutputIterator __result,
23866: _Predicate __pred, const _Tp& __new_value)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__replace_copy_if(__first, __last, __result,
23866: __gnu_cxx::__ops::__pred_iter(__pred),
23866: __new_value);
23866: }
23866: # 3220 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator>
23866:
23866: inline bool
23866: is_sorted(_ForwardIterator __first, _ForwardIterator __last)
23866: { return std::is_sorted_until(__first, __last) == __last; }
23866: # 3235 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator, typename _Compare>
23866:
23866: inline bool
23866: is_sorted(_ForwardIterator __first, _ForwardIterator __last,
23866: _Compare __comp)
23866: { return std::is_sorted_until(__first, __last, __comp) == __last; }
23866:
23866: template<typename _ForwardIterator, typename _Compare>
23866:
23866: _ForwardIterator
23866: __is_sorted_until(_ForwardIterator __first, _ForwardIterator __last,
23866: _Compare __comp)
23866: {
23866: if (__first == __last)
23866: return __last;
23866:
23866: _ForwardIterator __next = __first;
23866: for (++__next; __next != __last; __first = __next, (void)++__next)
23866: if (__comp(__next, __first))
23866: return __next;
23866: return __next;
23866: }
23866: # 3266 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator>
23866:
23866: inline _ForwardIterator
23866: is_sorted_until(_ForwardIterator __first, _ForwardIterator __last)
23866: {
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: return std::__is_sorted_until(__first, __last,
23866: __gnu_cxx::__ops::__iter_less_iter());
23866: }
23866: # 3291 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator, typename _Compare>
23866:
23866: inline _ForwardIterator
23866: is_sorted_until(_ForwardIterator __first, _ForwardIterator __last,
23866: _Compare __comp)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: return std::__is_sorted_until(__first, __last,
23866: __gnu_cxx::__ops::__iter_comp_iter(__comp));
23866: }
23866: # 3317 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _Tp>
23866: constexpr
23866: inline pair<const _Tp&, const _Tp&>
23866: minmax(const _Tp& __a, const _Tp& __b)
23866: {
23866:
23866:
23866:
23866: return __b < __a ? pair<const _Tp&, const _Tp&>(__b, __a)
23866: : pair<const _Tp&, const _Tp&>(__a, __b);
23866: }
23866: # 3338 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _Tp, typename _Compare>
23866: constexpr
23866: inline pair<const _Tp&, const _Tp&>
23866: minmax(const _Tp& __a, const _Tp& __b, _Compare __comp)
23866: {
23866: return __comp(__b, __a) ? pair<const _Tp&, const _Tp&>(__b, __a)
23866: : pair<const _Tp&, const _Tp&>(__a, __b);
23866: }
23866:
23866: template<typename _ForwardIterator, typename _Compare>
23866: constexpr
23866: pair<_ForwardIterator, _ForwardIterator>
23866: __minmax_element(_ForwardIterator __first, _ForwardIterator __last,
23866: _Compare __comp)
23866: {
23866: _ForwardIterator __next = __first;
23866: if (__first == __last
23866: || ++__next == __last)
23866: return std::make_pair(__first, __first);
23866:
23866: _ForwardIterator __min{}, __max{};
23866: if (__comp(__next, __first))
23866: {
23866: __min = __next;
23866: __max = __first;
23866: }
23866: else
23866: {
23866: __min = __first;
23866: __max = __next;
23866: }
23866:
23866: __first = __next;
23866: ++__first;
23866:
23866: while (__first != __last)
23866: {
23866: __next = __first;
23866: if (++__next == __last)
23866: {
23866: if (__comp(__first, __min))
23866: __min = __first;
23866: else if (!__comp(__first, __max))
23866: __max = __first;
23866: break;
23866: }
23866:
23866: if (__comp(__next, __first))
23866: {
23866: if (__comp(__next, __min))
23866: __min = __next;
23866: if (!__comp(__first, __max))
23866: __max = __first;
23866: }
23866: else
23866: {
23866: if (__comp(__first, __min))
23866: __min = __first;
23866: if (!__comp(__next, __max))
23866: __max = __next;
23866: }
23866:
23866: __first = __next;
23866: ++__first;
23866: }
23866:
23866: return std::make_pair(__min, __max);
23866: }
23866: # 3418 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator>
23866: constexpr
23866: inline pair<_ForwardIterator, _ForwardIterator>
23866: minmax_element(_ForwardIterator __first, _ForwardIterator __last)
23866: {
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: return std::__minmax_element(__first, __last,
23866: __gnu_cxx::__ops::__iter_less_iter());
23866: }
23866: # 3446 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator, typename _Compare>
23866: constexpr
23866: inline pair<_ForwardIterator, _ForwardIterator>
23866: minmax_element(_ForwardIterator __first, _ForwardIterator __last,
23866: _Compare __comp)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: return std::__minmax_element(__first, __last,
23866: __gnu_cxx::__ops::__iter_comp_iter(__comp));
23866: }
23866:
23866:
23866: template<typename _Tp>
23866: constexpr
23866: inline _Tp
23866: min(initializer_list<_Tp> __l)
23866: { return *std::min_element(__l.begin(), __l.end()); }
23866:
23866: template<typename _Tp, typename _Compare>
23866: constexpr
23866: inline _Tp
23866: min(initializer_list<_Tp> __l, _Compare __comp)
23866: { return *std::min_element(__l.begin(), __l.end(), __comp); }
23866:
23866: template<typename _Tp>
23866: constexpr
23866: inline _Tp
23866: max(initializer_list<_Tp> __l)
23866: { return *std::max_element(__l.begin(), __l.end()); }
23866:
23866: template<typename _Tp, typename _Compare>
23866: constexpr
23866: inline _Tp
23866: max(initializer_list<_Tp> __l, _Compare __comp)
23866: { return *std::max_element(__l.begin(), __l.end(), __comp); }
23866:
23866: template<typename _Tp>
23866: constexpr
23866: inline pair<_Tp, _Tp>
23866: minmax(initializer_list<_Tp> __l)
23866: {
23866: pair<const _Tp*, const _Tp*> __p =
23866: std::minmax_element(__l.begin(), __l.end());
23866: return std::make_pair(*__p.first, *__p.second);
23866: }
23866:
23866: template<typename _Tp, typename _Compare>
23866: constexpr
23866: inline pair<_Tp, _Tp>
23866: minmax(initializer_list<_Tp> __l, _Compare __comp)
23866: {
23866: pair<const _Tp*, const _Tp*> __p =
23866: std::minmax_element(__l.begin(), __l.end(), __comp);
23866: return std::make_pair(*__p.first, *__p.second);
23866: }
23866: # 3523 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator1, typename _ForwardIterator2,
23866: typename _BinaryPredicate>
23866:
23866: inline bool
23866: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
23866: _ForwardIterator2 __first2, _BinaryPredicate __pred)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__is_permutation(__first1, __last1, __first2,
23866: __gnu_cxx::__ops::__iter_comp_iter(__pred));
23866: }
23866:
23866:
23866: template<typename _ForwardIterator1, typename _ForwardIterator2,
23866: typename _BinaryPredicate>
23866:
23866: bool
23866: __is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
23866: _ForwardIterator2 __first2, _ForwardIterator2 __last2,
23866: _BinaryPredicate __pred)
23866: {
23866: using _Cat1
23866: = typename iterator_traits<_ForwardIterator1>::iterator_category;
23866: using _Cat2
23866: = typename iterator_traits<_ForwardIterator2>::iterator_category;
23866: using _It1_is_RA = is_same<_Cat1, random_access_iterator_tag>;
23866: using _It2_is_RA = is_same<_Cat2, random_access_iterator_tag>;
23866: constexpr bool __ra_iters = _It1_is_RA() && _It2_is_RA();
23866: if (__ra_iters)
23866: {
23866: auto __d1 = std::distance(__first1, __last1);
23866: auto __d2 = std::distance(__first2, __last2);
23866: if (__d1 != __d2)
23866: return false;
23866: }
23866:
23866:
23866:
23866: for (; __first1 != __last1 && __first2 != __last2;
23866: ++__first1, (void)++__first2)
23866: if (!__pred(__first1, __first2))
23866: break;
23866:
23866: if (__ra_iters)
23866: {
23866: if (__first1 == __last1)
23866: return true;
23866: }
23866: else
23866: {
23866: auto __d1 = std::distance(__first1, __last1);
23866: auto __d2 = std::distance(__first2, __last2);
23866: if (__d1 == 0 && __d2 == 0)
23866: return true;
23866: if (__d1 != __d2)
23866: return false;
23866: }
23866:
23866: for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan)
23866: {
23866: if (__scan != std::__find_if(__first1, __scan,
23866: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)))
23866: continue;
23866:
23866: auto __matches = std::__count_if(__first2, __last2,
23866: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan));
23866: if (0 == __matches
23866: || std::__count_if(__scan, __last1,
23866: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan))
23866: != __matches)
23866: return false;
23866: }
23866: return true;
23866: }
23866: # 3618 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator1, typename _ForwardIterator2>
23866:
23866: inline bool
23866: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
23866: _ForwardIterator2 __first2, _ForwardIterator2 __last2)
23866: {
23866: ;
23866: ;
23866:
23866: return
23866: std::__is_permutation(__first1, __last1, __first2, __last2,
23866: __gnu_cxx::__ops::__iter_equal_to_iter());
23866: }
23866: # 3646 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator1, typename _ForwardIterator2,
23866: typename _BinaryPredicate>
23866:
23866: inline bool
23866: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
23866: _ForwardIterator2 __first2, _ForwardIterator2 __last2,
23866: _BinaryPredicate __pred)
23866: {
23866: ;
23866: ;
23866:
23866: return std::__is_permutation(__first1, __last1, __first2, __last2,
23866: __gnu_cxx::__ops::__iter_comp_iter(__pred));
23866: }
23866:
23866:
23866:
23866: #define __cpp_lib_clamp 201603
23866: # 3673 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _Tp>
23866: constexpr const _Tp&
23866: clamp(const _Tp& __val, const _Tp& __lo, const _Tp& __hi)
23866: {
23866: ;
23866: return (__val < __lo) ? __lo : (__hi < __val) ? __hi : __val;
23866: }
23866: # 3691 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _Tp, typename _Compare>
23866: constexpr const _Tp&
23866: clamp(const _Tp& __val, const _Tp& __lo, const _Tp& __hi, _Compare __comp)
23866: {
23866: ;
23866: return __comp(__val, __lo) ? __lo : __comp(__hi, __val) ? __hi : __val;
23866: }
23866: # 3723 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _IntType, typename _UniformRandomBitGenerator>
23866: pair<_IntType, _IntType>
23866: __gen_two_uniform_ints(_IntType __b0, _IntType __b1,
23866: _UniformRandomBitGenerator&& __g)
23866: {
23866: _IntType __x
23866: = uniform_int_distribution<_IntType>{0, (__b0 * __b1) - 1}(__g);
23866: return std::make_pair(__x / __b1, __x % __b1);
23866: }
23866: # 3745 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _RandomAccessIterator,
23866: typename _UniformRandomNumberGenerator>
23866: void
23866: shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last,
23866: _UniformRandomNumberGenerator&& __g)
23866: {
23866:
23866:
23866:
23866: ;
23866:
23866: if (__first == __last)
23866: return;
23866:
23866: typedef typename iterator_traits<_RandomAccessIterator>::difference_type
23866: _DistanceType;
23866:
23866: typedef typename std::make_unsigned<_DistanceType>::type __ud_type;
23866: typedef typename std::uniform_int_distribution<__ud_type> __distr_type;
23866: typedef typename __distr_type::param_type __p_type;
23866:
23866: typedef typename remove_reference<_UniformRandomNumberGenerator>::type
23866: _Gen;
23866: typedef typename common_type<typename _Gen::result_type, __ud_type>::type
23866: __uc_type;
23866:
23866: const __uc_type __urngrange = __g.max() - __g.min();
23866: const __uc_type __urange = __uc_type(__last - __first);
23866:
23866: if (__urngrange / __urange >= __urange)
23866:
23866: {
23866: _RandomAccessIterator __i = __first + 1;
23866:
23866:
23866:
23866:
23866:
23866: if ((__urange % 2) == 0)
23866: {
23866: __distr_type __d{0, 1};
23866: std::iter_swap(__i++, __first + __d(__g));
23866: }
23866:
23866:
23866:
23866:
23866:
23866: while (__i != __last)
23866: {
23866: const __uc_type __swap_range = __uc_type(__i - __first) + 1;
23866:
23866: const pair<__uc_type, __uc_type> __pospos =
23866: __gen_two_uniform_ints(__swap_range, __swap_range + 1, __g);
23866:
23866: std::iter_swap(__i++, __first + __pospos.first);
23866: std::iter_swap(__i++, __first + __pospos.second);
23866: }
23866:
23866: return;
23866: }
23866:
23866: __distr_type __d;
23866:
23866: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i)
23866: std::iter_swap(__i, __first + __d(__g, __p_type(0, __i - __first)));
23866: }
23866:
23866:
23866:
23866:
23866:
23866: # 3830 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator, typename _Function>
23866:
23866: _Function
23866: for_each(_InputIterator __first, _InputIterator __last, _Function __f)
23866: {
23866:
23866:
23866: ;
23866: for (; __first != __last; ++__first)
23866: __f(*__first);
23866: return __f;
23866: }
23866: # 3856 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator, typename _Size, typename _Function>
23866:
23866: _InputIterator
23866: for_each_n(_InputIterator __first, _Size __n, _Function __f)
23866: {
23866: auto __n2 = std::__size_to_integer(__n);
23866: using _Cat = typename iterator_traits<_InputIterator>::iterator_category;
23866: if constexpr (is_base_of_v<random_access_iterator_tag, _Cat>)
23866: {
23866: if (__n2 <= 0)
23866: return __first;
23866: auto __last = __first + __n2;
23866: std::for_each(__first, __last, std::move(__f));
23866: return __last;
23866: }
23866: else
23866: {
23866: while (__n2-->0)
23866: {
23866: __f(*__first);
23866: ++__first;
23866: }
23866: return __first;
23866: }
23866: }
23866: # 3892 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator, typename _Tp>
23866:
23866: inline _InputIterator
23866: find(_InputIterator __first, _InputIterator __last,
23866: const _Tp& __val)
23866: {
23866:
23866:
23866:
23866:
23866: ;
23866: return std::__find_if(__first, __last,
23866: __gnu_cxx::__ops::__iter_equals_val(__val));
23866: }
23866: # 3917 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator, typename _Predicate>
23866:
23866: inline _InputIterator
23866: find_if(_InputIterator __first, _InputIterator __last,
23866: _Predicate __pred)
23866: {
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__find_if(__first, __last,
23866: __gnu_cxx::__ops::__pred_iter(__pred));
23866: }
23866: # 3949 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator, typename _ForwardIterator>
23866:
23866: _InputIterator
23866: find_first_of(_InputIterator __first1, _InputIterator __last1,
23866: _ForwardIterator __first2, _ForwardIterator __last2)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: for (; __first1 != __last1; ++__first1)
23866: for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter)
23866: if (*__first1 == *__iter)
23866: return __first1;
23866: return __last1;
23866: }
23866: # 3990 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator, typename _ForwardIterator,
23866: typename _BinaryPredicate>
23866:
23866: _InputIterator
23866: find_first_of(_InputIterator __first1, _InputIterator __last1,
23866: _ForwardIterator __first2, _ForwardIterator __last2,
23866: _BinaryPredicate __comp)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: for (; __first1 != __last1; ++__first1)
23866: for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter)
23866: if (__comp(*__first1, *__iter))
23866: return __first1;
23866: return __last1;
23866: }
23866: # 4023 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator>
23866:
23866: inline _ForwardIterator
23866: adjacent_find(_ForwardIterator __first, _ForwardIterator __last)
23866: {
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__adjacent_find(__first, __last,
23866: __gnu_cxx::__ops::__iter_equal_to_iter());
23866: }
23866: # 4049 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator, typename _BinaryPredicate>
23866:
23866: inline _ForwardIterator
23866: adjacent_find(_ForwardIterator __first, _ForwardIterator __last,
23866: _BinaryPredicate __binary_pred)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__adjacent_find(__first, __last,
23866: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred));
23866: }
23866: # 4075 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator, typename _Tp>
23866:
23866: inline typename iterator_traits<_InputIterator>::difference_type
23866: count(_InputIterator __first, _InputIterator __last, const _Tp& __value)
23866: {
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__count_if(__first, __last,
23866: __gnu_cxx::__ops::__iter_equals_val(__value));
23866: }
23866: # 4099 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator, typename _Predicate>
23866:
23866: inline typename iterator_traits<_InputIterator>::difference_type
23866: count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred)
23866: {
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__count_if(__first, __last,
23866: __gnu_cxx::__ops::__pred_iter(__pred));
23866: }
23866: # 4140 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator1, typename _ForwardIterator2>
23866:
23866: inline _ForwardIterator1
23866: search(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
23866: _ForwardIterator2 __first2, _ForwardIterator2 __last2)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: return std::__search(__first1, __last1, __first2, __last2,
23866: __gnu_cxx::__ops::__iter_equal_to_iter());
23866: }
23866: # 4180 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator1, typename _ForwardIterator2,
23866: typename _BinaryPredicate>
23866:
23866: inline _ForwardIterator1
23866: search(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
23866: _ForwardIterator2 __first2, _ForwardIterator2 __last2,
23866: _BinaryPredicate __predicate)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: return std::__search(__first1, __last1, __first2, __last2,
23866: __gnu_cxx::__ops::__iter_comp_iter(__predicate));
23866: }
23866: # 4216 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator, typename _Integer, typename _Tp>
23866:
23866: inline _ForwardIterator
23866: search_n(_ForwardIterator __first, _ForwardIterator __last,
23866: _Integer __count, const _Tp& __val)
23866: {
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__search_n(__first, __last, __count,
23866: __gnu_cxx::__ops::__iter_equals_val(__val));
23866: }
23866: # 4250 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator, typename _Integer, typename _Tp,
23866: typename _BinaryPredicate>
23866:
23866: inline _ForwardIterator
23866: search_n(_ForwardIterator __first, _ForwardIterator __last,
23866: _Integer __count, const _Tp& __val,
23866: _BinaryPredicate __binary_pred)
23866: {
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__search_n(__first, __last, __count,
23866: __gnu_cxx::__ops::__iter_comp_val(__binary_pred, __val));
23866: }
23866: # 4276 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator, typename _Searcher>
23866:
23866: inline _ForwardIterator
23866: search(_ForwardIterator __first, _ForwardIterator __last,
23866: const _Searcher& __searcher)
23866: { return __searcher(__first, __last).first; }
23866: # 4300 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator, typename _OutputIterator,
23866: typename _UnaryOperation>
23866:
23866: _OutputIterator
23866: transform(_InputIterator __first, _InputIterator __last,
23866: _OutputIterator __result, _UnaryOperation __unary_op)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: for (; __first != __last; ++__first, (void)++__result)
23866: *__result = __unary_op(*__first);
23866: return __result;
23866: }
23866: # 4338 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator1, typename _InputIterator2,
23866: typename _OutputIterator, typename _BinaryOperation>
23866:
23866: _OutputIterator
23866: transform(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2, _OutputIterator __result,
23866: _BinaryOperation __binary_op)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: for (; __first1 != __last1; ++__first1, (void)++__first2, ++__result)
23866: *__result = __binary_op(*__first1, *__first2);
23866: return __result;
23866: }
23866: # 4372 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator, typename _Tp>
23866:
23866: void
23866: replace(_ForwardIterator __first, _ForwardIterator __last,
23866: const _Tp& __old_value, const _Tp& __new_value)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: for (; __first != __last; ++__first)
23866: if (*__first == __old_value)
23866: *__first = __new_value;
23866: }
23866: # 4405 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator, typename _Predicate, typename _Tp>
23866:
23866: void
23866: replace_if(_ForwardIterator __first, _ForwardIterator __last,
23866: _Predicate __pred, const _Tp& __new_value)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: for (; __first != __last; ++__first)
23866: if (__pred(*__first))
23866: *__first = __new_value;
23866: }
23866: # 4438 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator, typename _Generator>
23866:
23866: void
23866: generate(_ForwardIterator __first, _ForwardIterator __last,
23866: _Generator __gen)
23866: {
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: for (; __first != __last; ++__first)
23866: *__first = __gen();
23866: }
23866: # 4472 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _OutputIterator, typename _Size, typename _Generator>
23866:
23866: _OutputIterator
23866: generate_n(_OutputIterator __first, _Size __n, _Generator __gen)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: typedef __decltype(std::__size_to_integer(__n)) _IntSize;
23866: for (_IntSize __niter = std::__size_to_integer(__n);
23866: __niter > 0; --__niter, (void) ++__first)
23866: *__first = __gen();
23866: return __first;
23866: }
23866: # 4510 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator, typename _OutputIterator>
23866:
23866: inline _OutputIterator
23866: unique_copy(_InputIterator __first, _InputIterator __last,
23866: _OutputIterator __result)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: if (__first == __last)
23866: return __result;
23866: return std::__unique_copy(__first, __last, __result,
23866: __gnu_cxx::__ops::__iter_equal_to_iter(),
23866: std::__iterator_category(__first),
23866: std::__iterator_category(__result));
23866: }
23866: # 4551 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator, typename _OutputIterator,
23866: typename _BinaryPredicate>
23866:
23866: inline _OutputIterator
23866: unique_copy(_InputIterator __first, _InputIterator __last,
23866: _OutputIterator __result,
23866: _BinaryPredicate __binary_pred)
23866: {
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: if (__first == __last)
23866: return __result;
23866: return std::__unique_copy(__first, __last, __result,
23866: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred),
23866: std::__iterator_category(__first),
23866: std::__iterator_category(__result));
23866: }
23866: # 4585 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _RandomAccessIterator>
23866: inline void
23866: random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last)
23866: {
23866:
23866:
23866:
23866: ;
23866:
23866: if (__first != __last)
23866: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i)
23866: {
23866:
23866: _RandomAccessIterator __j = __first
23866: + std::rand() % ((__i - __first) + 1);
23866: if (__i != __j)
23866: std::iter_swap(__i, __j);
23866: }
23866: }
23866: # 4620 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _RandomAccessIterator, typename _RandomNumberGenerator>
23866: void
23866: random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last,
23866:
23866: _RandomNumberGenerator&& __rand)
23866:
23866:
23866:
23866: {
23866:
23866:
23866:
23866: ;
23866:
23866: if (__first == __last)
23866: return;
23866: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i)
23866: {
23866: _RandomAccessIterator __j = __first + __rand((__i - __first) + 1);
23866: if (__i != __j)
23866: std::iter_swap(__i, __j);
23866: }
23866: }
23866: # 4660 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator, typename _Predicate>
23866:
23866: inline _ForwardIterator
23866: partition(_ForwardIterator __first, _ForwardIterator __last,
23866: _Predicate __pred)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: return std::__partition(__first, __last, __pred,
23866: std::__iterator_category(__first));
23866: }
23866: # 4694 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _RandomAccessIterator>
23866:
23866: inline void
23866: partial_sort(_RandomAccessIterator __first,
23866: _RandomAccessIterator __middle,
23866: _RandomAccessIterator __last)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866: ;
23866:
23866: std::__partial_sort(__first, __middle, __last,
23866: __gnu_cxx::__ops::__iter_less_iter());
23866: }
23866: # 4733 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _RandomAccessIterator, typename _Compare>
23866:
23866: inline void
23866: partial_sort(_RandomAccessIterator __first,
23866: _RandomAccessIterator __middle,
23866: _RandomAccessIterator __last,
23866: _Compare __comp)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866: ;
23866:
23866: std::__partial_sort(__first, __middle, __last,
23866: __gnu_cxx::__ops::__iter_comp_iter(__comp));
23866: }
23866: # 4770 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _RandomAccessIterator>
23866:
23866: inline void
23866: nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth,
23866: _RandomAccessIterator __last)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866: ;
23866:
23866: if (__first == __last || __nth == __last)
23866: return;
23866:
23866: std::__introselect(__first, __nth, __last,
23866: std::__lg(__last - __first) * 2,
23866: __gnu_cxx::__ops::__iter_less_iter());
23866: }
23866: # 4810 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _RandomAccessIterator, typename _Compare>
23866:
23866: inline void
23866: nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth,
23866: _RandomAccessIterator __last, _Compare __comp)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866: ;
23866:
23866: if (__first == __last || __nth == __last)
23866: return;
23866:
23866: std::__introselect(__first, __nth, __last,
23866: std::__lg(__last - __first) * 2,
23866: __gnu_cxx::__ops::__iter_comp_iter(__comp));
23866: }
23866: # 4848 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _RandomAccessIterator>
23866:
23866: inline void
23866: sort(_RandomAccessIterator __first, _RandomAccessIterator __last)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter());
23866: }
23866: # 4879 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _RandomAccessIterator, typename _Compare>
23866:
23866: inline void
23866: sort(_RandomAccessIterator __first, _RandomAccessIterator __last,
23866: _Compare __comp)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: std::__sort(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp));
23866: }
23866:
23866: template<typename _InputIterator1, typename _InputIterator2,
23866: typename _OutputIterator, typename _Compare>
23866:
23866: _OutputIterator
23866: __merge(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2, _InputIterator2 __last2,
23866: _OutputIterator __result, _Compare __comp)
23866: {
23866: while (__first1 != __last1 && __first2 != __last2)
23866: {
23866: if (__comp(__first2, __first1))
23866: {
23866: *__result = *__first2;
23866: ++__first2;
23866: }
23866: else
23866: {
23866: *__result = *__first1;
23866: ++__first1;
23866: }
23866: ++__result;
23866: }
23866: return std::copy(__first2, __last2,
23866: std::copy(__first1, __last1, __result));
23866: }
23866: # 4942 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator1, typename _InputIterator2,
23866: typename _OutputIterator>
23866:
23866: inline _OutputIterator
23866: merge(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2, _InputIterator2 __last2,
23866: _OutputIterator __result)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866: ;
23866: ;
23866:
23866: return std::__merge(__first1, __last1,
23866: __first2, __last2, __result,
23866: __gnu_cxx::__ops::__iter_less_iter());
23866: }
23866: # 4993 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator1, typename _InputIterator2,
23866: typename _OutputIterator, typename _Compare>
23866:
23866: inline _OutputIterator
23866: merge(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2, _InputIterator2 __last2,
23866: _OutputIterator __result, _Compare __comp)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866: ;
23866: ;
23866:
23866: return std::__merge(__first1, __last1,
23866: __first2, __last2, __result,
23866: __gnu_cxx::__ops::__iter_comp_iter(__comp));
23866: }
23866:
23866: template<typename _RandomAccessIterator, typename _Compare>
23866: inline void
23866: __stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last,
23866: _Compare __comp)
23866: {
23866: typedef typename iterator_traits<_RandomAccessIterator>::value_type
23866: _ValueType;
23866: typedef typename iterator_traits<_RandomAccessIterator>::difference_type
23866: _DistanceType;
23866:
23866: typedef _Temporary_buffer<_RandomAccessIterator, _ValueType> _TmpBuf;
23866: _TmpBuf __buf(__first, std::distance(__first, __last));
23866:
23866: if (__buf.begin() == 0)
23866: std::__inplace_stable_sort(__first, __last, __comp);
23866: else
23866: std::__stable_sort_adaptive(__first, __last, __buf.begin(),
23866: _DistanceType(__buf.size()), __comp);
23866: }
23866: # 5058 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _RandomAccessIterator>
23866: inline void
23866: stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: std::__stable_sort(__first, __last,
23866: __gnu_cxx::__ops::__iter_less_iter());
23866: }
23866: # 5092 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _RandomAccessIterator, typename _Compare>
23866: inline void
23866: stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last,
23866: _Compare __comp)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: std::__stable_sort(__first, __last,
23866: __gnu_cxx::__ops::__iter_comp_iter(__comp));
23866: }
23866:
23866: template<typename _InputIterator1, typename _InputIterator2,
23866: typename _OutputIterator,
23866: typename _Compare>
23866:
23866: _OutputIterator
23866: __set_union(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2, _InputIterator2 __last2,
23866: _OutputIterator __result, _Compare __comp)
23866: {
23866: while (__first1 != __last1 && __first2 != __last2)
23866: {
23866: if (__comp(__first1, __first2))
23866: {
23866: *__result = *__first1;
23866: ++__first1;
23866: }
23866: else if (__comp(__first2, __first1))
23866: {
23866: *__result = *__first2;
23866: ++__first2;
23866: }
23866: else
23866: {
23866: *__result = *__first1;
23866: ++__first1;
23866: ++__first2;
23866: }
23866: ++__result;
23866: }
23866: return std::copy(__first2, __last2,
23866: std::copy(__first1, __last1, __result));
23866: }
23866: # 5162 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator1, typename _InputIterator2,
23866: typename _OutputIterator>
23866:
23866: inline _OutputIterator
23866: set_union(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2, _InputIterator2 __last2,
23866: _OutputIterator __result)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866: ;
23866: ;
23866:
23866: return std::__set_union(__first1, __last1,
23866: __first2, __last2, __result,
23866: __gnu_cxx::__ops::__iter_less_iter());
23866: }
23866: # 5213 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator1, typename _InputIterator2,
23866: typename _OutputIterator, typename _Compare>
23866:
23866: inline _OutputIterator
23866: set_union(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2, _InputIterator2 __last2,
23866: _OutputIterator __result, _Compare __comp)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866: ;
23866: ;
23866:
23866: return std::__set_union(__first1, __last1,
23866: __first2, __last2, __result,
23866: __gnu_cxx::__ops::__iter_comp_iter(__comp));
23866: }
23866:
23866: template<typename _InputIterator1, typename _InputIterator2,
23866: typename _OutputIterator,
23866: typename _Compare>
23866:
23866: _OutputIterator
23866: __set_intersection(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2, _InputIterator2 __last2,
23866: _OutputIterator __result, _Compare __comp)
23866: {
23866: while (__first1 != __last1 && __first2 != __last2)
23866: if (__comp(__first1, __first2))
23866: ++__first1;
23866: else if (__comp(__first2, __first1))
23866: ++__first2;
23866: else
23866: {
23866: *__result = *__first1;
23866: ++__first1;
23866: ++__first2;
23866: ++__result;
23866: }
23866: return __result;
23866: }
23866: # 5286 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator1, typename _InputIterator2,
23866: typename _OutputIterator>
23866:
23866: inline _OutputIterator
23866: set_intersection(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2, _InputIterator2 __last2,
23866: _OutputIterator __result)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866: ;
23866: ;
23866:
23866: return std::__set_intersection(__first1, __last1,
23866: __first2, __last2, __result,
23866: __gnu_cxx::__ops::__iter_less_iter());
23866: }
23866: # 5336 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator1, typename _InputIterator2,
23866: typename _OutputIterator, typename _Compare>
23866:
23866: inline _OutputIterator
23866: set_intersection(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2, _InputIterator2 __last2,
23866: _OutputIterator __result, _Compare __comp)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866: ;
23866: ;
23866:
23866: return std::__set_intersection(__first1, __last1,
23866: __first2, __last2, __result,
23866: __gnu_cxx::__ops::__iter_comp_iter(__comp));
23866: }
23866:
23866: template<typename _InputIterator1, typename _InputIterator2,
23866: typename _OutputIterator,
23866: typename _Compare>
23866:
23866: _OutputIterator
23866: __set_difference(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2, _InputIterator2 __last2,
23866: _OutputIterator __result, _Compare __comp)
23866: {
23866: while (__first1 != __last1 && __first2 != __last2)
23866: if (__comp(__first1, __first2))
23866: {
23866: *__result = *__first1;
23866: ++__first1;
23866: ++__result;
23866: }
23866: else if (__comp(__first2, __first1))
23866: ++__first2;
23866: else
23866: {
23866: ++__first1;
23866: ++__first2;
23866: }
23866: return std::copy(__first1, __last1, __result);
23866: }
23866: # 5411 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator1, typename _InputIterator2,
23866: typename _OutputIterator>
23866:
23866: inline _OutputIterator
23866: set_difference(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2, _InputIterator2 __last2,
23866: _OutputIterator __result)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866: ;
23866: ;
23866:
23866: return std::__set_difference(__first1, __last1,
23866: __first2, __last2, __result,
23866: __gnu_cxx::__ops::__iter_less_iter());
23866: }
23866: # 5463 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator1, typename _InputIterator2,
23866: typename _OutputIterator, typename _Compare>
23866:
23866: inline _OutputIterator
23866: set_difference(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2, _InputIterator2 __last2,
23866: _OutputIterator __result, _Compare __comp)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866: ;
23866: ;
23866:
23866: return std::__set_difference(__first1, __last1,
23866: __first2, __last2, __result,
23866: __gnu_cxx::__ops::__iter_comp_iter(__comp));
23866: }
23866:
23866: template<typename _InputIterator1, typename _InputIterator2,
23866: typename _OutputIterator,
23866: typename _Compare>
23866:
23866: _OutputIterator
23866: __set_symmetric_difference(_InputIterator1 __first1,
23866: _InputIterator1 __last1,
23866: _InputIterator2 __first2,
23866: _InputIterator2 __last2,
23866: _OutputIterator __result,
23866: _Compare __comp)
23866: {
23866: while (__first1 != __last1 && __first2 != __last2)
23866: if (__comp(__first1, __first2))
23866: {
23866: *__result = *__first1;
23866: ++__first1;
23866: ++__result;
23866: }
23866: else if (__comp(__first2, __first1))
23866: {
23866: *__result = *__first2;
23866: ++__first2;
23866: ++__result;
23866: }
23866: else
23866: {
23866: ++__first1;
23866: ++__first2;
23866: }
23866: return std::copy(__first2, __last2,
23866: std::copy(__first1, __last1, __result));
23866: }
23866: # 5544 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator1, typename _InputIterator2,
23866: typename _OutputIterator>
23866:
23866: inline _OutputIterator
23866: set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2, _InputIterator2 __last2,
23866: _OutputIterator __result)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866: ;
23866: ;
23866:
23866: return std::__set_symmetric_difference(__first1, __last1,
23866: __first2, __last2, __result,
23866: __gnu_cxx::__ops::__iter_less_iter());
23866: }
23866: # 5596 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _InputIterator1, typename _InputIterator2,
23866: typename _OutputIterator, typename _Compare>
23866:
23866: inline _OutputIterator
23866: set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2, _InputIterator2 __last2,
23866: _OutputIterator __result,
23866: _Compare __comp)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866: ;
23866: ;
23866:
23866: return std::__set_symmetric_difference(__first1, __last1,
23866: __first2, __last2, __result,
23866: __gnu_cxx::__ops::__iter_comp_iter(__comp));
23866: }
23866:
23866: template<typename _ForwardIterator, typename _Compare>
23866: constexpr
23866: _ForwardIterator
23866: __min_element(_ForwardIterator __first, _ForwardIterator __last,
23866: _Compare __comp)
23866: {
23866: if (__first == __last)
23866: return __first;
23866: _ForwardIterator __result = __first;
23866: while (++__first != __last)
23866: if (__comp(__first, __result))
23866: __result = __first;
23866: return __result;
23866: }
23866: # 5650 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator>
23866: constexpr
23866: _ForwardIterator
23866: inline min_element(_ForwardIterator __first, _ForwardIterator __last)
23866: {
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: return std::__min_element(__first, __last,
23866: __gnu_cxx::__ops::__iter_less_iter());
23866: }
23866: # 5675 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator, typename _Compare>
23866: constexpr
23866: inline _ForwardIterator
23866: min_element(_ForwardIterator __first, _ForwardIterator __last,
23866: _Compare __comp)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: return std::__min_element(__first, __last,
23866: __gnu_cxx::__ops::__iter_comp_iter(__comp));
23866: }
23866:
23866: template<typename _ForwardIterator, typename _Compare>
23866: constexpr
23866: _ForwardIterator
23866: __max_element(_ForwardIterator __first, _ForwardIterator __last,
23866: _Compare __comp)
23866: {
23866: if (__first == __last) return __first;
23866: _ForwardIterator __result = __first;
23866: while (++__first != __last)
23866: if (__comp(__result, __first))
23866: __result = __first;
23866: return __result;
23866: }
23866: # 5714 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator>
23866: constexpr
23866: inline _ForwardIterator
23866: max_element(_ForwardIterator __first, _ForwardIterator __last)
23866: {
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: return std::__max_element(__first, __last,
23866: __gnu_cxx::__ops::__iter_less_iter());
23866: }
23866: # 5739 "/usr/include/c++/10/bits/stl_algo.h" 3
23866: template<typename _ForwardIterator, typename _Compare>
23866: constexpr
23866: inline _ForwardIterator
23866: max_element(_ForwardIterator __first, _ForwardIterator __last,
23866: _Compare __comp)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: ;
23866:
23866: return std::__max_element(__first, __last,
23866: __gnu_cxx::__ops::__iter_comp_iter(__comp));
23866: }
23866:
23866:
23866:
23866: template<typename _InputIterator, typename _RandomAccessIterator,
23866: typename _Size, typename _UniformRandomBitGenerator>
23866: _RandomAccessIterator
23866: __sample(_InputIterator __first, _InputIterator __last, input_iterator_tag,
23866: _RandomAccessIterator __out, random_access_iterator_tag,
23866: _Size __n, _UniformRandomBitGenerator&& __g)
23866: {
23866: using __distrib_type = uniform_int_distribution<_Size>;
23866: using __param_type = typename __distrib_type::param_type;
23866: __distrib_type __d{};
23866: _Size __sample_sz = 0;
23866: while (__first != __last && __sample_sz != __n)
23866: {
23866: __out[__sample_sz++] = *__first;
23866: ++__first;
23866: }
23866: for (auto __pop_sz = __sample_sz; __first != __last;
23866: ++__first, (void) ++__pop_sz)
23866: {
23866: const auto __k = __d(__g, __param_type{0, __pop_sz});
23866: if (__k < __n)
23866: __out[__k] = *__first;
23866: }
23866: return __out + __sample_sz;
23866: }
23866:
23866:
23866: template<typename _ForwardIterator, typename _OutputIterator, typename _Cat,
23866: typename _Size, typename _UniformRandomBitGenerator>
23866: _OutputIterator
23866: __sample(_ForwardIterator __first, _ForwardIterator __last,
23866: forward_iterator_tag,
23866: _OutputIterator __out, _Cat,
23866: _Size __n, _UniformRandomBitGenerator&& __g)
23866: {
23866: using __distrib_type = uniform_int_distribution<_Size>;
23866: using __param_type = typename __distrib_type::param_type;
23866: using _USize = make_unsigned_t<_Size>;
23866: using _Gen = remove_reference_t<_UniformRandomBitGenerator>;
23866: using __uc_type = common_type_t<typename _Gen::result_type, _USize>;
23866:
23866: if (__first == __last)
23866: return __out;
23866:
23866: __distrib_type __d{};
23866: _Size __unsampled_sz = std::distance(__first, __last);
23866: __n = std::min(__n, __unsampled_sz);
23866:
23866:
23866:
23866:
23866: const __uc_type __urngrange = __g.max() - __g.min();
23866: if (__urngrange / __uc_type(__unsampled_sz) >= __uc_type(__unsampled_sz))
23866:
23866:
23866: {
23866: while (__n != 0 && __unsampled_sz >= 2)
23866: {
23866: const pair<_Size, _Size> __p =
23866: __gen_two_uniform_ints(__unsampled_sz, __unsampled_sz - 1, __g);
23866:
23866: --__unsampled_sz;
23866: if (__p.first < __n)
23866: {
23866: *__out++ = *__first;
23866: --__n;
23866: }
23866:
23866: ++__first;
23866:
23866: if (__n == 0) break;
23866:
23866: --__unsampled_sz;
23866: if (__p.second < __n)
23866: {
23866: *__out++ = *__first;
23866: --__n;
23866: }
23866:
23866: ++__first;
23866: }
23866: }
23866:
23866:
23866:
23866: for (; __n != 0; ++__first)
23866: if (__d(__g, __param_type{0, --__unsampled_sz}) < __n)
23866: {
23866: *__out++ = *__first;
23866: --__n;
23866: }
23866: return __out;
23866: }
23866:
23866:
23866: #define __cpp_lib_sample 201603
23866:
23866: template<typename _PopulationIterator, typename _SampleIterator,
23866: typename _Distance, typename _UniformRandomBitGenerator>
23866: _SampleIterator
23866: sample(_PopulationIterator __first, _PopulationIterator __last,
23866: _SampleIterator __out, _Distance __n,
23866: _UniformRandomBitGenerator&& __g)
23866: {
23866: using __pop_cat = typename
23866: std::iterator_traits<_PopulationIterator>::iterator_category;
23866: using __samp_cat = typename
23866: std::iterator_traits<_SampleIterator>::iterator_category;
23866:
23866: static_assert(
23866: __or_<is_convertible<__pop_cat, forward_iterator_tag>,
23866: is_convertible<__samp_cat, random_access_iterator_tag>>::value,
23866: "output range must use a RandomAccessIterator when input range"
23866: " does not meet the ForwardIterator requirements");
23866:
23866: static_assert(is_integral<_Distance>::value,
23866: "sample size must be an integer type");
23866:
23866: typename iterator_traits<_PopulationIterator>::difference_type __d = __n;
23866: return std::
23866: __sample(__first, __last, __pop_cat{}, __out, __samp_cat{}, __d,
23866: std::forward<_UniformRandomBitGenerator>(__g));
23866: }
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 63 "/usr/include/c++/10/algorithm" 2 3
23866: # 74 "/usr/include/c++/10/algorithm" 3
23866: # 1 "/usr/include/c++/10/pstl/glue_algorithm_defs.h" 1 3
23866: # 11 "/usr/include/c++/10/pstl/glue_algorithm_defs.h" 3
23866: #define _PSTL_GLUE_ALGORITHM_DEFS_H
23866:
23866: # 1 "/usr/include/c++/10/functional" 1 3
23866: # 44 "/usr/include/c++/10/functional" 3
23866: #define _GLIBCXX_FUNCTIONAL 1
23866:
23866:
23866: # 47 "/usr/include/c++/10/functional" 3
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/stl_function.h" 1 3
23866: # 57 "/usr/include/c++/10/bits/stl_function.h" 3
23866: #define _STL_FUNCTION_H 1
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 104 "/usr/include/c++/10/bits/stl_function.h" 3
23866: template<typename _Arg, typename _Result>
23866: struct unary_function
23866: {
23866:
23866: typedef _Arg argument_type;
23866:
23866:
23866: typedef _Result result_type;
23866: };
23866:
23866:
23866:
23866:
23866: template<typename _Arg1, typename _Arg2, typename _Result>
23866: struct binary_function
23866: {
23866:
23866: typedef _Arg1 first_argument_type;
23866:
23866:
23866: typedef _Arg2 second_argument_type;
23866:
23866:
23866: typedef _Result result_type;
23866: };
23866: # 144 "/usr/include/c++/10/bits/stl_function.h" 3
23866: struct __is_transparent;
23866:
23866: template<typename _Tp = void>
23866: struct plus;
23866:
23866: template<typename _Tp = void>
23866: struct minus;
23866:
23866: template<typename _Tp = void>
23866: struct multiplies;
23866:
23866: template<typename _Tp = void>
23866: struct divides;
23866:
23866: template<typename _Tp = void>
23866: struct modulus;
23866:
23866: template<typename _Tp = void>
23866: struct negate;
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct plus : public binary_function<_Tp, _Tp, _Tp>
23866: {
23866: constexpr
23866: _Tp
23866: operator()(const _Tp& __x, const _Tp& __y) const
23866: { return __x + __y; }
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct minus : public binary_function<_Tp, _Tp, _Tp>
23866: {
23866: constexpr
23866: _Tp
23866: operator()(const _Tp& __x, const _Tp& __y) const
23866: { return __x - __y; }
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct multiplies : public binary_function<_Tp, _Tp, _Tp>
23866: {
23866: constexpr
23866: _Tp
23866: operator()(const _Tp& __x, const _Tp& __y) const
23866: { return __x * __y; }
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct divides : public binary_function<_Tp, _Tp, _Tp>
23866: {
23866: constexpr
23866: _Tp
23866: operator()(const _Tp& __x, const _Tp& __y) const
23866: { return __x / __y; }
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct modulus : public binary_function<_Tp, _Tp, _Tp>
23866: {
23866: constexpr
23866: _Tp
23866: operator()(const _Tp& __x, const _Tp& __y) const
23866: { return __x % __y; }
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct negate : public unary_function<_Tp, _Tp>
23866: {
23866: constexpr
23866: _Tp
23866: operator()(const _Tp& __x) const
23866: { return -__x; }
23866: };
23866:
23866:
23866:
23866: #define __cpp_lib_transparent_operators 201510
23866:
23866: template<>
23866: struct plus<void>
23866: {
23866: template <typename _Tp, typename _Up>
23866: constexpr
23866: auto
23866: operator()(_Tp&& __t, _Up&& __u) const
23866: noexcept(noexcept(std::forward<_Tp>(__t) + std::forward<_Up>(__u)))
23866: -> decltype(std::forward<_Tp>(__t) + std::forward<_Up>(__u))
23866: { return std::forward<_Tp>(__t) + std::forward<_Up>(__u); }
23866:
23866: typedef __is_transparent is_transparent;
23866: };
23866:
23866:
23866: template<>
23866: struct minus<void>
23866: {
23866: template <typename _Tp, typename _Up>
23866: constexpr
23866: auto
23866: operator()(_Tp&& __t, _Up&& __u) const
23866: noexcept(noexcept(std::forward<_Tp>(__t) - std::forward<_Up>(__u)))
23866: -> decltype(std::forward<_Tp>(__t) - std::forward<_Up>(__u))
23866: { return std::forward<_Tp>(__t) - std::forward<_Up>(__u); }
23866:
23866: typedef __is_transparent is_transparent;
23866: };
23866:
23866:
23866: template<>
23866: struct multiplies<void>
23866: {
23866: template <typename _Tp, typename _Up>
23866: constexpr
23866: auto
23866: operator()(_Tp&& __t, _Up&& __u) const
23866: noexcept(noexcept(std::forward<_Tp>(__t) * std::forward<_Up>(__u)))
23866: -> decltype(std::forward<_Tp>(__t) * std::forward<_Up>(__u))
23866: { return std::forward<_Tp>(__t) * std::forward<_Up>(__u); }
23866:
23866: typedef __is_transparent is_transparent;
23866: };
23866:
23866:
23866: template<>
23866: struct divides<void>
23866: {
23866: template <typename _Tp, typename _Up>
23866: constexpr
23866: auto
23866: operator()(_Tp&& __t, _Up&& __u) const
23866: noexcept(noexcept(std::forward<_Tp>(__t) / std::forward<_Up>(__u)))
23866: -> decltype(std::forward<_Tp>(__t) / std::forward<_Up>(__u))
23866: { return std::forward<_Tp>(__t) / std::forward<_Up>(__u); }
23866:
23866: typedef __is_transparent is_transparent;
23866: };
23866:
23866:
23866: template<>
23866: struct modulus<void>
23866: {
23866: template <typename _Tp, typename _Up>
23866: constexpr
23866: auto
23866: operator()(_Tp&& __t, _Up&& __u) const
23866: noexcept(noexcept(std::forward<_Tp>(__t) % std::forward<_Up>(__u)))
23866: -> decltype(std::forward<_Tp>(__t) % std::forward<_Up>(__u))
23866: { return std::forward<_Tp>(__t) % std::forward<_Up>(__u); }
23866:
23866: typedef __is_transparent is_transparent;
23866: };
23866:
23866:
23866: template<>
23866: struct negate<void>
23866: {
23866: template <typename _Tp>
23866: constexpr
23866: auto
23866: operator()(_Tp&& __t) const
23866: noexcept(noexcept(-std::forward<_Tp>(__t)))
23866: -> decltype(-std::forward<_Tp>(__t))
23866: { return -std::forward<_Tp>(__t); }
23866:
23866: typedef __is_transparent is_transparent;
23866: };
23866: # 330 "/usr/include/c++/10/bits/stl_function.h" 3
23866: template<typename _Tp = void>
23866: struct equal_to;
23866:
23866: template<typename _Tp = void>
23866: struct not_equal_to;
23866:
23866: template<typename _Tp = void>
23866: struct greater;
23866:
23866: template<typename _Tp = void>
23866: struct less;
23866:
23866: template<typename _Tp = void>
23866: struct greater_equal;
23866:
23866: template<typename _Tp = void>
23866: struct less_equal;
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct equal_to : public binary_function<_Tp, _Tp, bool>
23866: {
23866: constexpr
23866: bool
23866: operator()(const _Tp& __x, const _Tp& __y) const
23866: { return __x == __y; }
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct not_equal_to : public binary_function<_Tp, _Tp, bool>
23866: {
23866: constexpr
23866: bool
23866: operator()(const _Tp& __x, const _Tp& __y) const
23866: { return __x != __y; }
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct greater : public binary_function<_Tp, _Tp, bool>
23866: {
23866: constexpr
23866: bool
23866: operator()(const _Tp& __x, const _Tp& __y) const
23866: { return __x > __y; }
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct less : public binary_function<_Tp, _Tp, bool>
23866: {
23866: constexpr
23866: bool
23866: operator()(const _Tp& __x, const _Tp& __y) const
23866: { return __x < __y; }
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct greater_equal : public binary_function<_Tp, _Tp, bool>
23866: {
23866: constexpr
23866: bool
23866: operator()(const _Tp& __x, const _Tp& __y) const
23866: { return __x >= __y; }
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct less_equal : public binary_function<_Tp, _Tp, bool>
23866: {
23866: constexpr
23866: bool
23866: operator()(const _Tp& __x, const _Tp& __y) const
23866: { return __x <= __y; }
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct greater<_Tp*> : public binary_function<_Tp*, _Tp*, bool>
23866: {
23866: constexpr bool
23866: operator()(_Tp* __x, _Tp* __y) const noexcept
23866: {
23866:
23866:
23866: if (__builtin_is_constant_evaluated())
23866:
23866:
23866:
23866: return __x > __y;
23866:
23866: return (unsigned int)__x > (unsigned int)__y;
23866: }
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct less<_Tp*> : public binary_function<_Tp*, _Tp*, bool>
23866: {
23866: constexpr bool
23866: operator()(_Tp* __x, _Tp* __y) const noexcept
23866: {
23866:
23866:
23866: if (__builtin_is_constant_evaluated())
23866:
23866:
23866:
23866: return __x < __y;
23866:
23866: return (unsigned int)__x < (unsigned int)__y;
23866: }
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct greater_equal<_Tp*> : public binary_function<_Tp*, _Tp*, bool>
23866: {
23866: constexpr bool
23866: operator()(_Tp* __x, _Tp* __y) const noexcept
23866: {
23866:
23866:
23866: if (__builtin_is_constant_evaluated())
23866:
23866:
23866:
23866: return __x >= __y;
23866:
23866: return (unsigned int)__x >= (unsigned int)__y;
23866: }
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct less_equal<_Tp*> : public binary_function<_Tp*, _Tp*, bool>
23866: {
23866: constexpr bool
23866: operator()(_Tp* __x, _Tp* __y) const noexcept
23866: {
23866:
23866:
23866: if (__builtin_is_constant_evaluated())
23866:
23866:
23866:
23866: return __x <= __y;
23866:
23866: return (unsigned int)__x <= (unsigned int)__y;
23866: }
23866: };
23866:
23866:
23866:
23866: template<>
23866: struct equal_to<void>
23866: {
23866: template <typename _Tp, typename _Up>
23866: constexpr auto
23866: operator()(_Tp&& __t, _Up&& __u) const
23866: noexcept(noexcept(std::forward<_Tp>(__t) == std::forward<_Up>(__u)))
23866: -> decltype(std::forward<_Tp>(__t) == std::forward<_Up>(__u))
23866: { return std::forward<_Tp>(__t) == std::forward<_Up>(__u); }
23866:
23866: typedef __is_transparent is_transparent;
23866: };
23866:
23866:
23866: template<>
23866: struct not_equal_to<void>
23866: {
23866: template <typename _Tp, typename _Up>
23866: constexpr auto
23866: operator()(_Tp&& __t, _Up&& __u) const
23866: noexcept(noexcept(std::forward<_Tp>(__t) != std::forward<_Up>(__u)))
23866: -> decltype(std::forward<_Tp>(__t) != std::forward<_Up>(__u))
23866: { return std::forward<_Tp>(__t) != std::forward<_Up>(__u); }
23866:
23866: typedef __is_transparent is_transparent;
23866: };
23866:
23866:
23866: template<>
23866: struct greater<void>
23866: {
23866: template <typename _Tp, typename _Up>
23866: constexpr auto
23866: operator()(_Tp&& __t, _Up&& __u) const
23866: noexcept(noexcept(std::forward<_Tp>(__t) > std::forward<_Up>(__u)))
23866: -> decltype(std::forward<_Tp>(__t) > std::forward<_Up>(__u))
23866: {
23866: return _S_cmp(std::forward<_Tp>(__t), std::forward<_Up>(__u),
23866: __ptr_cmp<_Tp, _Up>{});
23866: }
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr bool
23866: operator()(_Tp* __t, _Up* __u) const noexcept
23866: { return greater<common_type_t<_Tp*, _Up*>>{}(__t, __u); }
23866:
23866: typedef __is_transparent is_transparent;
23866:
23866: private:
23866: template <typename _Tp, typename _Up>
23866: static constexpr decltype(auto)
23866: _S_cmp(_Tp&& __t, _Up&& __u, false_type)
23866: { return std::forward<_Tp>(__t) > std::forward<_Up>(__u); }
23866:
23866: template <typename _Tp, typename _Up>
23866: static constexpr bool
23866: _S_cmp(_Tp&& __t, _Up&& __u, true_type) noexcept
23866: {
23866: return greater<const volatile void*>{}(
23866: static_cast<const volatile void*>(std::forward<_Tp>(__t)),
23866: static_cast<const volatile void*>(std::forward<_Up>(__u)));
23866: }
23866:
23866:
23866: template<typename _Tp, typename _Up, typename = void>
23866: struct __not_overloaded2 : true_type { };
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: struct __not_overloaded2<_Tp, _Up, __void_t<
23866: decltype(std::declval<_Tp>().operator>(std::declval<_Up>()))>>
23866: : false_type { };
23866:
23866:
23866: template<typename _Tp, typename _Up, typename = void>
23866: struct __not_overloaded : __not_overloaded2<_Tp, _Up> { };
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: struct __not_overloaded<_Tp, _Up, __void_t<
23866: decltype(operator>(std::declval<_Tp>(), std::declval<_Up>()))>>
23866: : false_type { };
23866:
23866: template<typename _Tp, typename _Up>
23866: using __ptr_cmp = __and_<__not_overloaded<_Tp, _Up>,
23866: is_convertible<_Tp, const volatile void*>,
23866: is_convertible<_Up, const volatile void*>>;
23866: };
23866:
23866:
23866: template<>
23866: struct less<void>
23866: {
23866: template <typename _Tp, typename _Up>
23866: constexpr auto
23866: operator()(_Tp&& __t, _Up&& __u) const
23866: noexcept(noexcept(std::forward<_Tp>(__t) < std::forward<_Up>(__u)))
23866: -> decltype(std::forward<_Tp>(__t) < std::forward<_Up>(__u))
23866: {
23866: return _S_cmp(std::forward<_Tp>(__t), std::forward<_Up>(__u),
23866: __ptr_cmp<_Tp, _Up>{});
23866: }
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr bool
23866: operator()(_Tp* __t, _Up* __u) const noexcept
23866: { return less<common_type_t<_Tp*, _Up*>>{}(__t, __u); }
23866:
23866: typedef __is_transparent is_transparent;
23866:
23866: private:
23866: template <typename _Tp, typename _Up>
23866: static constexpr decltype(auto)
23866: _S_cmp(_Tp&& __t, _Up&& __u, false_type)
23866: { return std::forward<_Tp>(__t) < std::forward<_Up>(__u); }
23866:
23866: template <typename _Tp, typename _Up>
23866: static constexpr bool
23866: _S_cmp(_Tp&& __t, _Up&& __u, true_type) noexcept
23866: {
23866: return less<const volatile void*>{}(
23866: static_cast<const volatile void*>(std::forward<_Tp>(__t)),
23866: static_cast<const volatile void*>(std::forward<_Up>(__u)));
23866: }
23866:
23866:
23866: template<typename _Tp, typename _Up, typename = void>
23866: struct __not_overloaded2 : true_type { };
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: struct __not_overloaded2<_Tp, _Up, __void_t<
23866: decltype(std::declval<_Tp>().operator<(std::declval<_Up>()))>>
23866: : false_type { };
23866:
23866:
23866: template<typename _Tp, typename _Up, typename = void>
23866: struct __not_overloaded : __not_overloaded2<_Tp, _Up> { };
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: struct __not_overloaded<_Tp, _Up, __void_t<
23866: decltype(operator<(std::declval<_Tp>(), std::declval<_Up>()))>>
23866: : false_type { };
23866:
23866: template<typename _Tp, typename _Up>
23866: using __ptr_cmp = __and_<__not_overloaded<_Tp, _Up>,
23866: is_convertible<_Tp, const volatile void*>,
23866: is_convertible<_Up, const volatile void*>>;
23866: };
23866:
23866:
23866: template<>
23866: struct greater_equal<void>
23866: {
23866: template <typename _Tp, typename _Up>
23866: constexpr auto
23866: operator()(_Tp&& __t, _Up&& __u) const
23866: noexcept(noexcept(std::forward<_Tp>(__t) >= std::forward<_Up>(__u)))
23866: -> decltype(std::forward<_Tp>(__t) >= std::forward<_Up>(__u))
23866: {
23866: return _S_cmp(std::forward<_Tp>(__t), std::forward<_Up>(__u),
23866: __ptr_cmp<_Tp, _Up>{});
23866: }
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr bool
23866: operator()(_Tp* __t, _Up* __u) const noexcept
23866: { return greater_equal<common_type_t<_Tp*, _Up*>>{}(__t, __u); }
23866:
23866: typedef __is_transparent is_transparent;
23866:
23866: private:
23866: template <typename _Tp, typename _Up>
23866: static constexpr decltype(auto)
23866: _S_cmp(_Tp&& __t, _Up&& __u, false_type)
23866: { return std::forward<_Tp>(__t) >= std::forward<_Up>(__u); }
23866:
23866: template <typename _Tp, typename _Up>
23866: static constexpr bool
23866: _S_cmp(_Tp&& __t, _Up&& __u, true_type) noexcept
23866: {
23866: return greater_equal<const volatile void*>{}(
23866: static_cast<const volatile void*>(std::forward<_Tp>(__t)),
23866: static_cast<const volatile void*>(std::forward<_Up>(__u)));
23866: }
23866:
23866:
23866: template<typename _Tp, typename _Up, typename = void>
23866: struct __not_overloaded2 : true_type { };
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: struct __not_overloaded2<_Tp, _Up, __void_t<
23866: decltype(std::declval<_Tp>().operator>=(std::declval<_Up>()))>>
23866: : false_type { };
23866:
23866:
23866: template<typename _Tp, typename _Up, typename = void>
23866: struct __not_overloaded : __not_overloaded2<_Tp, _Up> { };
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: struct __not_overloaded<_Tp, _Up, __void_t<
23866: decltype(operator>=(std::declval<_Tp>(), std::declval<_Up>()))>>
23866: : false_type { };
23866:
23866: template<typename _Tp, typename _Up>
23866: using __ptr_cmp = __and_<__not_overloaded<_Tp, _Up>,
23866: is_convertible<_Tp, const volatile void*>,
23866: is_convertible<_Up, const volatile void*>>;
23866: };
23866:
23866:
23866: template<>
23866: struct less_equal<void>
23866: {
23866: template <typename _Tp, typename _Up>
23866: constexpr auto
23866: operator()(_Tp&& __t, _Up&& __u) const
23866: noexcept(noexcept(std::forward<_Tp>(__t) <= std::forward<_Up>(__u)))
23866: -> decltype(std::forward<_Tp>(__t) <= std::forward<_Up>(__u))
23866: {
23866: return _S_cmp(std::forward<_Tp>(__t), std::forward<_Up>(__u),
23866: __ptr_cmp<_Tp, _Up>{});
23866: }
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr bool
23866: operator()(_Tp* __t, _Up* __u) const noexcept
23866: { return less_equal<common_type_t<_Tp*, _Up*>>{}(__t, __u); }
23866:
23866: typedef __is_transparent is_transparent;
23866:
23866: private:
23866: template <typename _Tp, typename _Up>
23866: static constexpr decltype(auto)
23866: _S_cmp(_Tp&& __t, _Up&& __u, false_type)
23866: { return std::forward<_Tp>(__t) <= std::forward<_Up>(__u); }
23866:
23866: template <typename _Tp, typename _Up>
23866: static constexpr bool
23866: _S_cmp(_Tp&& __t, _Up&& __u, true_type) noexcept
23866: {
23866: return less_equal<const volatile void*>{}(
23866: static_cast<const volatile void*>(std::forward<_Tp>(__t)),
23866: static_cast<const volatile void*>(std::forward<_Up>(__u)));
23866: }
23866:
23866:
23866: template<typename _Tp, typename _Up, typename = void>
23866: struct __not_overloaded2 : true_type { };
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: struct __not_overloaded2<_Tp, _Up, __void_t<
23866: decltype(std::declval<_Tp>().operator<=(std::declval<_Up>()))>>
23866: : false_type { };
23866:
23866:
23866: template<typename _Tp, typename _Up, typename = void>
23866: struct __not_overloaded : __not_overloaded2<_Tp, _Up> { };
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: struct __not_overloaded<_Tp, _Up, __void_t<
23866: decltype(operator<=(std::declval<_Tp>(), std::declval<_Up>()))>>
23866: : false_type { };
23866:
23866: template<typename _Tp, typename _Up>
23866: using __ptr_cmp = __and_<__not_overloaded<_Tp, _Up>,
23866: is_convertible<_Tp, const volatile void*>,
23866: is_convertible<_Up, const volatile void*>>;
23866: };
23866: # 774 "/usr/include/c++/10/bits/stl_function.h" 3
23866: template<typename _Tp = void>
23866: struct logical_and;
23866:
23866: template<typename _Tp = void>
23866: struct logical_or;
23866:
23866: template<typename _Tp = void>
23866: struct logical_not;
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct logical_and : public binary_function<_Tp, _Tp, bool>
23866: {
23866: constexpr
23866: bool
23866: operator()(const _Tp& __x, const _Tp& __y) const
23866: { return __x && __y; }
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct logical_or : public binary_function<_Tp, _Tp, bool>
23866: {
23866: constexpr
23866: bool
23866: operator()(const _Tp& __x, const _Tp& __y) const
23866: { return __x || __y; }
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct logical_not : public unary_function<_Tp, bool>
23866: {
23866: constexpr
23866: bool
23866: operator()(const _Tp& __x) const
23866: { return !__x; }
23866: };
23866:
23866:
23866:
23866: template<>
23866: struct logical_and<void>
23866: {
23866: template <typename _Tp, typename _Up>
23866: constexpr
23866: auto
23866: operator()(_Tp&& __t, _Up&& __u) const
23866: noexcept(noexcept(std::forward<_Tp>(__t) && std::forward<_Up>(__u)))
23866: -> decltype(std::forward<_Tp>(__t) && std::forward<_Up>(__u))
23866: { return std::forward<_Tp>(__t) && std::forward<_Up>(__u); }
23866:
23866: typedef __is_transparent is_transparent;
23866: };
23866:
23866:
23866: template<>
23866: struct logical_or<void>
23866: {
23866: template <typename _Tp, typename _Up>
23866: constexpr
23866: auto
23866: operator()(_Tp&& __t, _Up&& __u) const
23866: noexcept(noexcept(std::forward<_Tp>(__t) || std::forward<_Up>(__u)))
23866: -> decltype(std::forward<_Tp>(__t) || std::forward<_Up>(__u))
23866: { return std::forward<_Tp>(__t) || std::forward<_Up>(__u); }
23866:
23866: typedef __is_transparent is_transparent;
23866: };
23866:
23866:
23866: template<>
23866: struct logical_not<void>
23866: {
23866: template <typename _Tp>
23866: constexpr
23866: auto
23866: operator()(_Tp&& __t) const
23866: noexcept(noexcept(!std::forward<_Tp>(__t)))
23866: -> decltype(!std::forward<_Tp>(__t))
23866: { return !std::forward<_Tp>(__t); }
23866:
23866: typedef __is_transparent is_transparent;
23866: };
23866:
23866:
23866:
23866:
23866: template<typename _Tp = void>
23866: struct bit_and;
23866:
23866: template<typename _Tp = void>
23866: struct bit_or;
23866:
23866: template<typename _Tp = void>
23866: struct bit_xor;
23866:
23866: template<typename _Tp = void>
23866: struct bit_not;
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct bit_and : public binary_function<_Tp, _Tp, _Tp>
23866: {
23866: constexpr
23866: _Tp
23866: operator()(const _Tp& __x, const _Tp& __y) const
23866: { return __x & __y; }
23866: };
23866:
23866: template<typename _Tp>
23866: struct bit_or : public binary_function<_Tp, _Tp, _Tp>
23866: {
23866: constexpr
23866: _Tp
23866: operator()(const _Tp& __x, const _Tp& __y) const
23866: { return __x | __y; }
23866: };
23866:
23866: template<typename _Tp>
23866: struct bit_xor : public binary_function<_Tp, _Tp, _Tp>
23866: {
23866: constexpr
23866: _Tp
23866: operator()(const _Tp& __x, const _Tp& __y) const
23866: { return __x ^ __y; }
23866: };
23866:
23866: template<typename _Tp>
23866: struct bit_not : public unary_function<_Tp, _Tp>
23866: {
23866: constexpr
23866: _Tp
23866: operator()(const _Tp& __x) const
23866: { return ~__x; }
23866: };
23866:
23866:
23866: template <>
23866: struct bit_and<void>
23866: {
23866: template <typename _Tp, typename _Up>
23866: constexpr
23866: auto
23866: operator()(_Tp&& __t, _Up&& __u) const
23866: noexcept(noexcept(std::forward<_Tp>(__t) & std::forward<_Up>(__u)))
23866: -> decltype(std::forward<_Tp>(__t) & std::forward<_Up>(__u))
23866: { return std::forward<_Tp>(__t) & std::forward<_Up>(__u); }
23866:
23866: typedef __is_transparent is_transparent;
23866: };
23866:
23866: template <>
23866: struct bit_or<void>
23866: {
23866: template <typename _Tp, typename _Up>
23866: constexpr
23866: auto
23866: operator()(_Tp&& __t, _Up&& __u) const
23866: noexcept(noexcept(std::forward<_Tp>(__t) | std::forward<_Up>(__u)))
23866: -> decltype(std::forward<_Tp>(__t) | std::forward<_Up>(__u))
23866: { return std::forward<_Tp>(__t) | std::forward<_Up>(__u); }
23866:
23866: typedef __is_transparent is_transparent;
23866: };
23866:
23866: template <>
23866: struct bit_xor<void>
23866: {
23866: template <typename _Tp, typename _Up>
23866: constexpr
23866: auto
23866: operator()(_Tp&& __t, _Up&& __u) const
23866: noexcept(noexcept(std::forward<_Tp>(__t) ^ std::forward<_Up>(__u)))
23866: -> decltype(std::forward<_Tp>(__t) ^ std::forward<_Up>(__u))
23866: { return std::forward<_Tp>(__t) ^ std::forward<_Up>(__u); }
23866:
23866: typedef __is_transparent is_transparent;
23866: };
23866:
23866: template <>
23866: struct bit_not<void>
23866: {
23866: template <typename _Tp>
23866: constexpr
23866: auto
23866: operator()(_Tp&& __t) const
23866: noexcept(noexcept(~std::forward<_Tp>(__t)))
23866: -> decltype(~std::forward<_Tp>(__t))
23866: { return ~std::forward<_Tp>(__t); }
23866:
23866: typedef __is_transparent is_transparent;
23866: };
23866: # 1002 "/usr/include/c++/10/bits/stl_function.h" 3
23866: template<typename _Predicate>
23866: class unary_negate
23866: : public unary_function<typename _Predicate::argument_type, bool>
23866: {
23866: protected:
23866: _Predicate _M_pred;
23866:
23866: public:
23866: constexpr
23866: explicit
23866: unary_negate(const _Predicate& __x) : _M_pred(__x) { }
23866:
23866: constexpr
23866: bool
23866: operator()(const typename _Predicate::argument_type& __x) const
23866: { return !_M_pred(__x); }
23866: };
23866:
23866:
23866: template<typename _Predicate>
23866: constexpr
23866: inline unary_negate<_Predicate>
23866: not1(const _Predicate& __pred)
23866: { return unary_negate<_Predicate>(__pred); }
23866:
23866:
23866: template<typename _Predicate>
23866: class binary_negate
23866: : public binary_function<typename _Predicate::first_argument_type,
23866: typename _Predicate::second_argument_type, bool>
23866: {
23866: protected:
23866: _Predicate _M_pred;
23866:
23866: public:
23866: constexpr
23866: explicit
23866: binary_negate(const _Predicate& __x) : _M_pred(__x) { }
23866:
23866: constexpr
23866: bool
23866: operator()(const typename _Predicate::first_argument_type& __x,
23866: const typename _Predicate::second_argument_type& __y) const
23866: { return !_M_pred(__x, __y); }
23866: };
23866:
23866:
23866: template<typename _Predicate>
23866: constexpr
23866: inline binary_negate<_Predicate>
23866: not2(const _Predicate& __pred)
23866: { return binary_negate<_Predicate>(__pred); }
23866: # 1079 "/usr/include/c++/10/bits/stl_function.h" 3
23866: template<typename _Arg, typename _Result>
23866: class pointer_to_unary_function : public unary_function<_Arg, _Result>
23866: {
23866: protected:
23866: _Result (*_M_ptr)(_Arg);
23866:
23866: public:
23866: pointer_to_unary_function() { }
23866:
23866: explicit
23866: pointer_to_unary_function(_Result (*__x)(_Arg))
23866: : _M_ptr(__x) { }
23866:
23866: _Result
23866: operator()(_Arg __x) const
23866: { return _M_ptr(__x); }
23866: };
23866:
23866:
23866: template<typename _Arg, typename _Result>
23866: inline pointer_to_unary_function<_Arg, _Result>
23866: ptr_fun(_Result (*__x)(_Arg))
23866: { return pointer_to_unary_function<_Arg, _Result>(__x); }
23866:
23866:
23866: template<typename _Arg1, typename _Arg2, typename _Result>
23866: class pointer_to_binary_function
23866: : public binary_function<_Arg1, _Arg2, _Result>
23866: {
23866: protected:
23866: _Result (*_M_ptr)(_Arg1, _Arg2);
23866:
23866: public:
23866: pointer_to_binary_function() { }
23866:
23866: explicit
23866: pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2))
23866: : _M_ptr(__x) { }
23866:
23866: _Result
23866: operator()(_Arg1 __x, _Arg2 __y) const
23866: { return _M_ptr(__x, __y); }
23866: };
23866:
23866:
23866: template<typename _Arg1, typename _Arg2, typename _Result>
23866: inline pointer_to_binary_function<_Arg1, _Arg2, _Result>
23866: ptr_fun(_Result (*__x)(_Arg1, _Arg2))
23866: { return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); }
23866:
23866:
23866: template<typename _Tp>
23866: struct _Identity
23866: : public unary_function<_Tp, _Tp>
23866: {
23866: _Tp&
23866: operator()(_Tp& __x) const
23866: { return __x; }
23866:
23866: const _Tp&
23866: operator()(const _Tp& __x) const
23866: { return __x; }
23866: };
23866:
23866:
23866: template<typename _Tp> struct _Identity<const _Tp> : _Identity<_Tp> { };
23866:
23866: template<typename _Pair>
23866: struct _Select1st
23866: : public unary_function<_Pair, typename _Pair::first_type>
23866: {
23866: typename _Pair::first_type&
23866: operator()(_Pair& __x) const
23866: { return __x.first; }
23866:
23866: const typename _Pair::first_type&
23866: operator()(const _Pair& __x) const
23866: { return __x.first; }
23866:
23866:
23866: template<typename _Pair2>
23866: typename _Pair2::first_type&
23866: operator()(_Pair2& __x) const
23866: { return __x.first; }
23866:
23866: template<typename _Pair2>
23866: const typename _Pair2::first_type&
23866: operator()(const _Pair2& __x) const
23866: { return __x.first; }
23866:
23866: };
23866:
23866: template<typename _Pair>
23866: struct _Select2nd
23866: : public unary_function<_Pair, typename _Pair::second_type>
23866: {
23866: typename _Pair::second_type&
23866: operator()(_Pair& __x) const
23866: { return __x.second; }
23866:
23866: const typename _Pair::second_type&
23866: operator()(const _Pair& __x) const
23866: { return __x.second; }
23866: };
23866: # 1202 "/usr/include/c++/10/bits/stl_function.h" 3
23866: template<typename _Ret, typename _Tp>
23866: class mem_fun_t : public unary_function<_Tp*, _Ret>
23866: {
23866: public:
23866: explicit
23866: mem_fun_t(_Ret (_Tp::*__pf)())
23866: : _M_f(__pf) { }
23866:
23866: _Ret
23866: operator()(_Tp* __p) const
23866: { return (__p->*_M_f)(); }
23866:
23866: private:
23866: _Ret (_Tp::*_M_f)();
23866: };
23866:
23866:
23866:
23866: template<typename _Ret, typename _Tp>
23866: class const_mem_fun_t : public unary_function<const _Tp*, _Ret>
23866: {
23866: public:
23866: explicit
23866: const_mem_fun_t(_Ret (_Tp::*__pf)() const)
23866: : _M_f(__pf) { }
23866:
23866: _Ret
23866: operator()(const _Tp* __p) const
23866: { return (__p->*_M_f)(); }
23866:
23866: private:
23866: _Ret (_Tp::*_M_f)() const;
23866: };
23866:
23866:
23866:
23866: template<typename _Ret, typename _Tp>
23866: class mem_fun_ref_t : public unary_function<_Tp, _Ret>
23866: {
23866: public:
23866: explicit
23866: mem_fun_ref_t(_Ret (_Tp::*__pf)())
23866: : _M_f(__pf) { }
23866:
23866: _Ret
23866: operator()(_Tp& __r) const
23866: { return (__r.*_M_f)(); }
23866:
23866: private:
23866: _Ret (_Tp::*_M_f)();
23866: };
23866:
23866:
23866:
23866: template<typename _Ret, typename _Tp>
23866: class const_mem_fun_ref_t : public unary_function<_Tp, _Ret>
23866: {
23866: public:
23866: explicit
23866: const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const)
23866: : _M_f(__pf) { }
23866:
23866: _Ret
23866: operator()(const _Tp& __r) const
23866: { return (__r.*_M_f)(); }
23866:
23866: private:
23866: _Ret (_Tp::*_M_f)() const;
23866: };
23866:
23866:
23866:
23866: template<typename _Ret, typename _Tp, typename _Arg>
23866: class mem_fun1_t : public binary_function<_Tp*, _Arg, _Ret>
23866: {
23866: public:
23866: explicit
23866: mem_fun1_t(_Ret (_Tp::*__pf)(_Arg))
23866: : _M_f(__pf) { }
23866:
23866: _Ret
23866: operator()(_Tp* __p, _Arg __x) const
23866: { return (__p->*_M_f)(__x); }
23866:
23866: private:
23866: _Ret (_Tp::*_M_f)(_Arg);
23866: };
23866:
23866:
23866:
23866: template<typename _Ret, typename _Tp, typename _Arg>
23866: class const_mem_fun1_t : public binary_function<const _Tp*, _Arg, _Ret>
23866: {
23866: public:
23866: explicit
23866: const_mem_fun1_t(_Ret (_Tp::*__pf)(_Arg) const)
23866: : _M_f(__pf) { }
23866:
23866: _Ret
23866: operator()(const _Tp* __p, _Arg __x) const
23866: { return (__p->*_M_f)(__x); }
23866:
23866: private:
23866: _Ret (_Tp::*_M_f)(_Arg) const;
23866: };
23866:
23866:
23866:
23866: template<typename _Ret, typename _Tp, typename _Arg>
23866: class mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret>
23866: {
23866: public:
23866: explicit
23866: mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg))
23866: : _M_f(__pf) { }
23866:
23866: _Ret
23866: operator()(_Tp& __r, _Arg __x) const
23866: { return (__r.*_M_f)(__x); }
23866:
23866: private:
23866: _Ret (_Tp::*_M_f)(_Arg);
23866: };
23866:
23866:
23866:
23866: template<typename _Ret, typename _Tp, typename _Arg>
23866: class const_mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret>
23866: {
23866: public:
23866: explicit
23866: const_mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg) const)
23866: : _M_f(__pf) { }
23866:
23866: _Ret
23866: operator()(const _Tp& __r, _Arg __x) const
23866: { return (__r.*_M_f)(__x); }
23866:
23866: private:
23866: _Ret (_Tp::*_M_f)(_Arg) const;
23866: };
23866:
23866:
23866:
23866: template<typename _Ret, typename _Tp>
23866: inline mem_fun_t<_Ret, _Tp>
23866: mem_fun(_Ret (_Tp::*__f)())
23866: { return mem_fun_t<_Ret, _Tp>(__f); }
23866:
23866: template<typename _Ret, typename _Tp>
23866: inline const_mem_fun_t<_Ret, _Tp>
23866: mem_fun(_Ret (_Tp::*__f)() const)
23866: { return const_mem_fun_t<_Ret, _Tp>(__f); }
23866:
23866: template<typename _Ret, typename _Tp>
23866: inline mem_fun_ref_t<_Ret, _Tp>
23866: mem_fun_ref(_Ret (_Tp::*__f)())
23866: { return mem_fun_ref_t<_Ret, _Tp>(__f); }
23866:
23866: template<typename _Ret, typename _Tp>
23866: inline const_mem_fun_ref_t<_Ret, _Tp>
23866: mem_fun_ref(_Ret (_Tp::*__f)() const)
23866: { return const_mem_fun_ref_t<_Ret, _Tp>(__f); }
23866:
23866: template<typename _Ret, typename _Tp, typename _Arg>
23866: inline mem_fun1_t<_Ret, _Tp, _Arg>
23866: mem_fun(_Ret (_Tp::*__f)(_Arg))
23866: { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); }
23866:
23866: template<typename _Ret, typename _Tp, typename _Arg>
23866: inline const_mem_fun1_t<_Ret, _Tp, _Arg>
23866: mem_fun(_Ret (_Tp::*__f)(_Arg) const)
23866: { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); }
23866:
23866: template<typename _Ret, typename _Tp, typename _Arg>
23866: inline mem_fun1_ref_t<_Ret, _Tp, _Arg>
23866: mem_fun_ref(_Ret (_Tp::*__f)(_Arg))
23866: { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }
23866:
23866: template<typename _Ret, typename _Tp, typename _Arg>
23866: inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg>
23866: mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const)
23866: { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }
23866:
23866:
23866:
23866:
23866: }
23866:
23866:
23866: # 1 "/usr/include/c++/10/backward/binders.h" 1 3
23866: # 57 "/usr/include/c++/10/backward/binders.h" 3
23866: #define _BACKWARD_BINDERS_H 1
23866:
23866:
23866: #pragma GCC diagnostic push
23866: #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 107 "/usr/include/c++/10/backward/binders.h" 3
23866: template<typename _Operation>
23866: class binder1st
23866: : public unary_function<typename _Operation::second_argument_type,
23866: typename _Operation::result_type>
23866: {
23866: protected:
23866: _Operation op;
23866: typename _Operation::first_argument_type value;
23866:
23866: public:
23866: binder1st(const _Operation& __x,
23866: const typename _Operation::first_argument_type& __y)
23866: : op(__x), value(__y) { }
23866:
23866: typename _Operation::result_type
23866: operator()(const typename _Operation::second_argument_type& __x) const
23866: { return op(value, __x); }
23866:
23866:
23866:
23866: typename _Operation::result_type
23866: operator()(typename _Operation::second_argument_type& __x) const
23866: { return op(value, __x); }
23866: } __attribute__ ((__deprecated__));
23866:
23866:
23866: template<typename _Operation, typename _Tp>
23866: inline binder1st<_Operation>
23866: bind1st(const _Operation& __fn, const _Tp& __x)
23866: {
23866: typedef typename _Operation::first_argument_type _Arg1_type;
23866: return binder1st<_Operation>(__fn, _Arg1_type(__x));
23866: }
23866:
23866:
23866: template<typename _Operation>
23866: class binder2nd
23866: : public unary_function<typename _Operation::first_argument_type,
23866: typename _Operation::result_type>
23866: {
23866: protected:
23866: _Operation op;
23866: typename _Operation::second_argument_type value;
23866:
23866: public:
23866: binder2nd(const _Operation& __x,
23866: const typename _Operation::second_argument_type& __y)
23866: : op(__x), value(__y) { }
23866:
23866: typename _Operation::result_type
23866: operator()(const typename _Operation::first_argument_type& __x) const
23866: { return op(__x, value); }
23866:
23866:
23866:
23866: typename _Operation::result_type
23866: operator()(typename _Operation::first_argument_type& __x) const
23866: { return op(__x, value); }
23866: } __attribute__ ((__deprecated__));
23866:
23866:
23866: template<typename _Operation, typename _Tp>
23866: inline binder2nd<_Operation>
23866: bind2nd(const _Operation& __fn, const _Tp& __x)
23866: {
23866: typedef typename _Operation::second_argument_type _Arg2_type;
23866: return binder2nd<_Operation>(__fn, _Arg2_type(__x));
23866: }
23866:
23866:
23866:
23866: }
23866:
23866: #pragma GCC diagnostic pop
23866: # 1393 "/usr/include/c++/10/bits/stl_function.h" 2 3
23866: # 50 "/usr/include/c++/10/functional" 2 3
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/tuple" 1 3
23866: # 30 "/usr/include/c++/10/tuple" 3
23866: #define _GLIBCXX_TUPLE 1
23866:
23866:
23866: # 33 "/usr/include/c++/10/tuple" 3
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/array" 1 3
23866: # 30 "/usr/include/c++/10/array" 3
23866: #define _GLIBCXX_ARRAY 1
23866:
23866:
23866: # 33 "/usr/include/c++/10/array" 3
23866: # 41 "/usr/include/c++/10/array" 3
23866: # 1 "/usr/include/c++/10/bits/range_access.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/range_access.h" 3
23866: #define _GLIBCXX_RANGE_ACCESS_H 1
23866:
23866:
23866: # 34 "/usr/include/c++/10/bits/range_access.h" 3
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/iterator_concepts.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/iterator_concepts.h" 3
23866: #define _ITERATOR_CONCEPTS_H 1
23866:
23866:
23866: # 34 "/usr/include/c++/10/bits/iterator_concepts.h" 3
23866:
23866: # 1 "/usr/include/c++/10/concepts" 1 3
23866: # 31 "/usr/include/c++/10/concepts" 3
23866: #define _GLIBCXX_CONCEPTS 1
23866: # 36 "/usr/include/c++/10/bits/iterator_concepts.h" 2 3
23866:
23866: # 1 "/usr/include/c++/10/bits/range_cmp.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/range_cmp.h" 3
23866: #define _RANGE_CMP_H 1
23866: # 38 "/usr/include/c++/10/bits/iterator_concepts.h" 2 3
23866: # 38 "/usr/include/c++/10/bits/range_access.h" 2 3
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Container>
23866: inline constexpr auto
23866: begin(_Container& __cont) -> decltype(__cont.begin())
23866: { return __cont.begin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Container>
23866: inline constexpr auto
23866: begin(const _Container& __cont) -> decltype(__cont.begin())
23866: { return __cont.begin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Container>
23866: inline constexpr auto
23866: end(_Container& __cont) -> decltype(__cont.end())
23866: { return __cont.end(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Container>
23866: inline constexpr auto
23866: end(const _Container& __cont) -> decltype(__cont.end())
23866: { return __cont.end(); }
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp, size_t _Nm>
23866: inline constexpr _Tp*
23866: begin(_Tp (&__arr)[_Nm])
23866: { return __arr; }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp, size_t _Nm>
23866: inline constexpr _Tp*
23866: end(_Tp (&__arr)[_Nm])
23866: { return __arr + _Nm; }
23866:
23866:
23866:
23866: template<typename _Tp> class valarray;
23866:
23866: template<typename _Tp> _Tp* begin(valarray<_Tp>&);
23866: template<typename _Tp> const _Tp* begin(const valarray<_Tp>&);
23866: template<typename _Tp> _Tp* end(valarray<_Tp>&);
23866: template<typename _Tp> const _Tp* end(const valarray<_Tp>&);
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Container>
23866: inline constexpr auto
23866: cbegin(const _Container& __cont) noexcept(noexcept(std::begin(__cont)))
23866: -> decltype(std::begin(__cont))
23866: { return std::begin(__cont); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Container>
23866: inline constexpr auto
23866: cend(const _Container& __cont) noexcept(noexcept(std::end(__cont)))
23866: -> decltype(std::end(__cont))
23866: { return std::end(__cont); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Container>
23866: inline constexpr auto
23866: rbegin(_Container& __cont) -> decltype(__cont.rbegin())
23866: { return __cont.rbegin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Container>
23866: inline constexpr auto
23866: rbegin(const _Container& __cont) -> decltype(__cont.rbegin())
23866: { return __cont.rbegin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Container>
23866: inline constexpr auto
23866: rend(_Container& __cont) -> decltype(__cont.rend())
23866: { return __cont.rend(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Container>
23866: inline constexpr auto
23866: rend(const _Container& __cont) -> decltype(__cont.rend())
23866: { return __cont.rend(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp, size_t _Nm>
23866: inline constexpr reverse_iterator<_Tp*>
23866: rbegin(_Tp (&__arr)[_Nm])
23866: { return reverse_iterator<_Tp*>(__arr + _Nm); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp, size_t _Nm>
23866: inline constexpr reverse_iterator<_Tp*>
23866: rend(_Tp (&__arr)[_Nm])
23866: { return reverse_iterator<_Tp*>(__arr); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: inline constexpr reverse_iterator<const _Tp*>
23866: rbegin(initializer_list<_Tp> __il)
23866: { return reverse_iterator<const _Tp*>(__il.end()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: inline constexpr reverse_iterator<const _Tp*>
23866: rend(initializer_list<_Tp> __il)
23866: { return reverse_iterator<const _Tp*>(__il.begin()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Container>
23866: inline constexpr auto
23866: crbegin(const _Container& __cont) -> decltype(std::rbegin(__cont))
23866: { return std::rbegin(__cont); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Container>
23866: inline constexpr auto
23866: crend(const _Container& __cont) -> decltype(std::rend(__cont))
23866: { return std::rend(__cont); }
23866:
23866:
23866:
23866:
23866: #define __cpp_lib_nonmember_container_access 201411
23866:
23866:
23866:
23866:
23866:
23866: template <typename _Container>
23866: constexpr auto
23866: size(const _Container& __cont) noexcept(noexcept(__cont.size()))
23866: -> decltype(__cont.size())
23866: { return __cont.size(); }
23866:
23866:
23866:
23866:
23866: template <typename _Tp, size_t _Nm>
23866: constexpr size_t
23866: size(const _Tp (&)[_Nm]) noexcept
23866: { return _Nm; }
23866:
23866:
23866:
23866:
23866:
23866: template <typename _Container>
23866: [[nodiscard]] constexpr auto
23866: empty(const _Container& __cont) noexcept(noexcept(__cont.empty()))
23866: -> decltype(__cont.empty())
23866: { return __cont.empty(); }
23866:
23866:
23866:
23866:
23866: template <typename _Tp, size_t _Nm>
23866: [[nodiscard]] constexpr bool
23866: empty(const _Tp (&)[_Nm]) noexcept
23866: { return false; }
23866:
23866:
23866:
23866:
23866:
23866: template <typename _Tp>
23866: [[nodiscard]] constexpr bool
23866: empty(initializer_list<_Tp> __il) noexcept
23866: { return __il.size() == 0;}
23866:
23866:
23866:
23866:
23866:
23866: template <typename _Container>
23866: constexpr auto
23866: data(_Container& __cont) noexcept(noexcept(__cont.data()))
23866: -> decltype(__cont.data())
23866: { return __cont.data(); }
23866:
23866:
23866:
23866:
23866:
23866: template <typename _Container>
23866: constexpr auto
23866: data(const _Container& __cont) noexcept(noexcept(__cont.data()))
23866: -> decltype(__cont.data())
23866: { return __cont.data(); }
23866:
23866:
23866:
23866:
23866:
23866: template <typename _Tp, size_t _Nm>
23866: constexpr _Tp*
23866: data(_Tp (&__array)[_Nm]) noexcept
23866: { return __array; }
23866:
23866:
23866:
23866:
23866:
23866: template <typename _Tp>
23866: constexpr const _Tp*
23866: data(initializer_list<_Tp> __il) noexcept
23866: { return __il.begin(); }
23866: # 1153 "/usr/include/c++/10/bits/range_access.h" 3
23866:
23866: }
23866: # 42 "/usr/include/c++/10/array" 2 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: template<typename _Tp, std::size_t _Nm>
23866: struct __array_traits
23866: {
23866: typedef _Tp _Type[_Nm];
23866: typedef __is_swappable<_Tp> _Is_swappable;
23866: typedef __is_nothrow_swappable<_Tp> _Is_nothrow_swappable;
23866:
23866: static constexpr _Tp&
23866: _S_ref(const _Type& __t, std::size_t __n) noexcept
23866: { return const_cast<_Tp&>(__t[__n]); }
23866:
23866: static constexpr _Tp*
23866: _S_ptr(const _Type& __t) noexcept
23866: { return const_cast<_Tp*>(__t); }
23866: };
23866:
23866: template<typename _Tp>
23866: struct __array_traits<_Tp, 0>
23866: {
23866: struct _Type { };
23866: typedef true_type _Is_swappable;
23866: typedef true_type _Is_nothrow_swappable;
23866:
23866: static constexpr _Tp&
23866: _S_ref(const _Type&, std::size_t) noexcept
23866: { return *static_cast<_Tp*>(nullptr); }
23866:
23866: static constexpr _Tp*
23866: _S_ptr(const _Type&) noexcept
23866: { return nullptr; }
23866: };
23866: # 93 "/usr/include/c++/10/array" 3
23866: template<typename _Tp, std::size_t _Nm>
23866: struct array
23866: {
23866: typedef _Tp value_type;
23866: typedef value_type* pointer;
23866: typedef const value_type* const_pointer;
23866: typedef value_type& reference;
23866: typedef const value_type& const_reference;
23866: typedef value_type* iterator;
23866: typedef const value_type* const_iterator;
23866: typedef std::size_t size_type;
23866: typedef std::ptrdiff_t difference_type;
23866: typedef std::reverse_iterator<iterator> reverse_iterator;
23866: typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
23866:
23866:
23866: typedef std::__array_traits<_Tp, _Nm> _AT_Type;
23866: typename _AT_Type::_Type _M_elems;
23866:
23866:
23866:
23866:
23866: void
23866: fill(const value_type& __u)
23866: { std::fill_n(begin(), size(), __u); }
23866:
23866: void
23866: swap(array& __other)
23866: noexcept(_AT_Type::_Is_nothrow_swappable::value)
23866: { std::swap_ranges(begin(), end(), __other.begin()); }
23866:
23866:
23866: constexpr iterator
23866: begin() noexcept
23866: { return iterator(data()); }
23866:
23866: constexpr const_iterator
23866: begin() const noexcept
23866: { return const_iterator(data()); }
23866:
23866: constexpr iterator
23866: end() noexcept
23866: { return iterator(data() + _Nm); }
23866:
23866: constexpr const_iterator
23866: end() const noexcept
23866: { return const_iterator(data() + _Nm); }
23866:
23866: constexpr reverse_iterator
23866: rbegin() noexcept
23866: { return reverse_iterator(end()); }
23866:
23866: constexpr const_reverse_iterator
23866: rbegin() const noexcept
23866: { return const_reverse_iterator(end()); }
23866:
23866: constexpr reverse_iterator
23866: rend() noexcept
23866: { return reverse_iterator(begin()); }
23866:
23866: constexpr const_reverse_iterator
23866: rend() const noexcept
23866: { return const_reverse_iterator(begin()); }
23866:
23866: constexpr const_iterator
23866: cbegin() const noexcept
23866: { return const_iterator(data()); }
23866:
23866: constexpr const_iterator
23866: cend() const noexcept
23866: { return const_iterator(data() + _Nm); }
23866:
23866: constexpr const_reverse_iterator
23866: crbegin() const noexcept
23866: { return const_reverse_iterator(end()); }
23866:
23866: constexpr const_reverse_iterator
23866: crend() const noexcept
23866: { return const_reverse_iterator(begin()); }
23866:
23866:
23866: constexpr size_type
23866: size() const noexcept { return _Nm; }
23866:
23866: constexpr size_type
23866: max_size() const noexcept { return _Nm; }
23866:
23866: [[__nodiscard__]] constexpr bool
23866: empty() const noexcept { return size() == 0; }
23866:
23866:
23866: constexpr reference
23866: operator[](size_type __n) noexcept
23866: { return _AT_Type::_S_ref(_M_elems, __n); }
23866:
23866: constexpr const_reference
23866: operator[](size_type __n) const noexcept
23866: { return _AT_Type::_S_ref(_M_elems, __n); }
23866:
23866: constexpr reference
23866: at(size_type __n)
23866: {
23866: if (__n >= _Nm)
23866: std::__throw_out_of_range_fmt(("array::at: __n (which is %zu) " ">= _Nm (which is %zu)")
23866: ,
23866: __n, _Nm);
23866: return _AT_Type::_S_ref(_M_elems, __n);
23866: }
23866:
23866: constexpr const_reference
23866: at(size_type __n) const
23866: {
23866:
23866:
23866: return __n < _Nm ? _AT_Type::_S_ref(_M_elems, __n)
23866: : (std::__throw_out_of_range_fmt(("array::at: __n (which is %zu) " ">= _Nm (which is %zu)")
23866: ,
23866: __n, _Nm),
23866: _AT_Type::_S_ref(_M_elems, 0));
23866: }
23866:
23866: constexpr reference
23866: front() noexcept
23866: { return *begin(); }
23866:
23866: constexpr const_reference
23866: front() const noexcept
23866: { return _AT_Type::_S_ref(_M_elems, 0); }
23866:
23866: constexpr reference
23866: back() noexcept
23866: { return _Nm ? *(end() - 1) : *end(); }
23866:
23866: constexpr const_reference
23866: back() const noexcept
23866: {
23866: return _Nm ? _AT_Type::_S_ref(_M_elems, _Nm - 1)
23866: : _AT_Type::_S_ref(_M_elems, 0);
23866: }
23866:
23866: constexpr pointer
23866: data() noexcept
23866: { return _AT_Type::_S_ptr(_M_elems); }
23866:
23866: constexpr const_pointer
23866: data() const noexcept
23866: { return _AT_Type::_S_ptr(_M_elems); }
23866: };
23866:
23866:
23866: template<typename _Tp, typename... _Up>
23866: array(_Tp, _Up...)
23866: -> array<enable_if_t<(is_same_v<_Tp, _Up> && ...), _Tp>,
23866: 1 + sizeof...(_Up)>;
23866:
23866:
23866:
23866: template<typename _Tp, std::size_t _Nm>
23866:
23866: inline bool
23866: operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
23866: { return std::equal(__one.begin(), __one.end(), __two.begin()); }
23866: # 279 "/usr/include/c++/10/array" 3
23866: template<typename _Tp, std::size_t _Nm>
23866:
23866: inline bool
23866: operator!=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
23866: { return !(__one == __two); }
23866:
23866: template<typename _Tp, std::size_t _Nm>
23866:
23866: inline bool
23866: operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b)
23866: {
23866: return std::lexicographical_compare(__a.begin(), __a.end(),
23866: __b.begin(), __b.end());
23866: }
23866:
23866: template<typename _Tp, std::size_t _Nm>
23866:
23866: inline bool
23866: operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
23866: { return __two < __one; }
23866:
23866: template<typename _Tp, std::size_t _Nm>
23866:
23866: inline bool
23866: operator<=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
23866: { return !(__one > __two); }
23866:
23866: template<typename _Tp, std::size_t _Nm>
23866:
23866: inline bool
23866: operator>=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
23866: { return !(__one < __two); }
23866:
23866:
23866:
23866: template<typename _Tp, std::size_t _Nm>
23866:
23866: inline
23866:
23866:
23866: typename enable_if<
23866: std::__array_traits<_Tp, _Nm>::_Is_swappable::value
23866: >::type
23866:
23866:
23866:
23866: swap(array<_Tp, _Nm>& __one, array<_Tp, _Nm>& __two)
23866: noexcept(noexcept(__one.swap(__two)))
23866: { __one.swap(__two); }
23866:
23866:
23866: template<typename _Tp, std::size_t _Nm>
23866: typename enable_if<
23866: !std::__array_traits<_Tp, _Nm>::_Is_swappable::value>::type
23866: swap(array<_Tp, _Nm>&, array<_Tp, _Nm>&) = delete;
23866:
23866:
23866: template<std::size_t _Int, typename _Tp, std::size_t _Nm>
23866: constexpr _Tp&
23866: get(array<_Tp, _Nm>& __arr) noexcept
23866: {
23866: static_assert(_Int < _Nm, "array index is within bounds");
23866: return std::__array_traits<_Tp, _Nm>::
23866: _S_ref(__arr._M_elems, _Int);
23866: }
23866:
23866: template<std::size_t _Int, typename _Tp, std::size_t _Nm>
23866: constexpr _Tp&&
23866: get(array<_Tp, _Nm>&& __arr) noexcept
23866: {
23866: static_assert(_Int < _Nm, "array index is within bounds");
23866: return std::move(std::get<_Int>(__arr));
23866: }
23866:
23866: template<std::size_t _Int, typename _Tp, std::size_t _Nm>
23866: constexpr const _Tp&
23866: get(const array<_Tp, _Nm>& __arr) noexcept
23866: {
23866: static_assert(_Int < _Nm, "array index is within bounds");
23866: return std::__array_traits<_Tp, _Nm>::
23866: _S_ref(__arr._M_elems, _Int);
23866: }
23866:
23866: template<std::size_t _Int, typename _Tp, std::size_t _Nm>
23866: constexpr const _Tp&&
23866: get(const array<_Tp, _Nm>&& __arr) noexcept
23866: {
23866: static_assert(_Int < _Nm, "array index is within bounds");
23866: return std::move(std::get<_Int>(__arr));
23866: }
23866: # 408 "/usr/include/c++/10/array" 3
23866:
23866: }
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct tuple_size;
23866:
23866:
23866: template<typename _Tp, std::size_t _Nm>
23866: struct tuple_size<std::array<_Tp, _Nm>>
23866: : public integral_constant<std::size_t, _Nm> { };
23866:
23866:
23866: template<std::size_t _Int, typename _Tp>
23866: struct tuple_element;
23866:
23866:
23866: template<std::size_t _Int, typename _Tp, std::size_t _Nm>
23866: struct tuple_element<_Int, std::array<_Tp, _Nm>>
23866: {
23866: static_assert(_Int < _Nm, "index is out of bounds");
23866: typedef _Tp type;
23866: };
23866:
23866: template<typename _Tp, std::size_t _Nm>
23866: struct __is_tuple_like_impl<std::array<_Tp, _Nm>> : true_type
23866: { };
23866:
23866:
23866: }
23866: # 40 "/usr/include/c++/10/tuple" 2 3
23866: # 1 "/usr/include/c++/10/bits/uses_allocator.h" 1 3
23866: # 26 "/usr/include/c++/10/bits/uses_allocator.h" 3
23866: #define _USES_ALLOCATOR_H 1
23866: # 35 "/usr/include/c++/10/bits/uses_allocator.h" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: struct __erased_type { };
23866:
23866:
23866:
23866:
23866: template<typename _Alloc, typename _Tp>
23866: using __is_erased_or_convertible
23866: = __or_<is_convertible<_Alloc, _Tp>, is_same<_Tp, __erased_type>>;
23866:
23866:
23866: struct allocator_arg_t { explicit allocator_arg_t() = default; };
23866:
23866: inline constexpr allocator_arg_t allocator_arg =
23866: allocator_arg_t();
23866:
23866: template<typename _Tp, typename _Alloc, typename = __void_t<>>
23866: struct __uses_allocator_helper
23866: : false_type { };
23866:
23866: template<typename _Tp, typename _Alloc>
23866: struct __uses_allocator_helper<_Tp, _Alloc,
23866: __void_t<typename _Tp::allocator_type>>
23866: : __is_erased_or_convertible<_Alloc, typename _Tp::allocator_type>::type
23866: { };
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: struct uses_allocator
23866: : __uses_allocator_helper<_Tp, _Alloc>::type
23866: { };
23866:
23866: struct __uses_alloc_base { };
23866:
23866: struct __uses_alloc0 : __uses_alloc_base
23866: {
23866: struct _Sink { void operator=(const void*) { } } _M_a;
23866: };
23866:
23866: template<typename _Alloc>
23866: struct __uses_alloc1 : __uses_alloc_base { const _Alloc* _M_a; };
23866:
23866: template<typename _Alloc>
23866: struct __uses_alloc2 : __uses_alloc_base { const _Alloc* _M_a; };
23866:
23866: template<bool, typename _Tp, typename _Alloc, typename... _Args>
23866: struct __uses_alloc;
23866:
23866: template<typename _Tp, typename _Alloc, typename... _Args>
23866: struct __uses_alloc<true, _Tp, _Alloc, _Args...>
23866: : conditional<
23866: is_constructible<_Tp, allocator_arg_t, const _Alloc&, _Args...>::value,
23866: __uses_alloc1<_Alloc>,
23866: __uses_alloc2<_Alloc>>::type
23866: {
23866:
23866:
23866: static_assert(__or_<
23866: is_constructible<_Tp, allocator_arg_t, const _Alloc&, _Args...>,
23866: is_constructible<_Tp, _Args..., const _Alloc&>>::value,
23866: "construction with an allocator must be possible"
23866: " if uses_allocator is true");
23866: };
23866:
23866: template<typename _Tp, typename _Alloc, typename... _Args>
23866: struct __uses_alloc<false, _Tp, _Alloc, _Args...>
23866: : __uses_alloc0 { };
23866:
23866: template<typename _Tp, typename _Alloc, typename... _Args>
23866: using __uses_alloc_t =
23866: __uses_alloc<uses_allocator<_Tp, _Alloc>::value, _Tp, _Alloc, _Args...>;
23866:
23866: template<typename _Tp, typename _Alloc, typename... _Args>
23866:
23866: inline __uses_alloc_t<_Tp, _Alloc, _Args...>
23866: __use_alloc(const _Alloc& __a)
23866: {
23866: __uses_alloc_t<_Tp, _Alloc, _Args...> __ret;
23866: __ret._M_a = std::__addressof(__a);
23866: return __ret;
23866: }
23866:
23866: template<typename _Tp, typename _Alloc, typename... _Args>
23866: void
23866: __use_alloc(const _Alloc&&) = delete;
23866:
23866:
23866: template <typename _Tp, typename _Alloc>
23866: inline constexpr bool uses_allocator_v =
23866: uses_allocator<_Tp, _Alloc>::value;
23866:
23866:
23866: template<template<typename...> class _Predicate,
23866: typename _Tp, typename _Alloc, typename... _Args>
23866: struct __is_uses_allocator_predicate
23866: : conditional<uses_allocator<_Tp, _Alloc>::value,
23866: __or_<_Predicate<_Tp, allocator_arg_t, _Alloc, _Args...>,
23866: _Predicate<_Tp, _Args..., _Alloc>>,
23866: _Predicate<_Tp, _Args...>>::type { };
23866:
23866: template<typename _Tp, typename _Alloc, typename... _Args>
23866: struct __is_uses_allocator_constructible
23866: : __is_uses_allocator_predicate<is_constructible, _Tp, _Alloc, _Args...>
23866: { };
23866:
23866:
23866: template<typename _Tp, typename _Alloc, typename... _Args>
23866: inline constexpr bool __is_uses_allocator_constructible_v =
23866: __is_uses_allocator_constructible<_Tp, _Alloc, _Args...>::value;
23866:
23866:
23866: template<typename _Tp, typename _Alloc, typename... _Args>
23866: struct __is_nothrow_uses_allocator_constructible
23866: : __is_uses_allocator_predicate<is_nothrow_constructible,
23866: _Tp, _Alloc, _Args...>
23866: { };
23866:
23866:
23866:
23866: template<typename _Tp, typename _Alloc, typename... _Args>
23866: inline constexpr bool
23866: __is_nothrow_uses_allocator_constructible_v =
23866: __is_nothrow_uses_allocator_constructible<_Tp, _Alloc, _Args...>::value;
23866:
23866:
23866: template<typename _Tp, typename... _Args>
23866: void __uses_allocator_construct_impl(__uses_alloc0 __a, _Tp* __ptr,
23866: _Args&&... __args)
23866: { ::new ((void*)__ptr) _Tp(std::forward<_Args>(__args)...); }
23866:
23866: template<typename _Tp, typename _Alloc, typename... _Args>
23866: void __uses_allocator_construct_impl(__uses_alloc1<_Alloc> __a, _Tp* __ptr,
23866: _Args&&... __args)
23866: {
23866: ::new ((void*)__ptr) _Tp(allocator_arg, *__a._M_a,
23866: std::forward<_Args>(__args)...);
23866: }
23866:
23866: template<typename _Tp, typename _Alloc, typename... _Args>
23866: void __uses_allocator_construct_impl(__uses_alloc2<_Alloc> __a, _Tp* __ptr,
23866: _Args&&... __args)
23866: { ::new ((void*)__ptr) _Tp(std::forward<_Args>(__args)..., *__a._M_a); }
23866:
23866: template<typename _Tp, typename _Alloc, typename... _Args>
23866: void __uses_allocator_construct(const _Alloc& __a, _Tp* __ptr,
23866: _Args&&... __args)
23866: {
23866: std::__uses_allocator_construct_impl(
23866: std::__use_alloc<_Tp, _Alloc, _Args...>(__a), __ptr,
23866: std::forward<_Args>(__args)...);
23866: }
23866:
23866:
23866: }
23866: # 41 "/usr/include/c++/10/tuple" 2 3
23866: # 1 "/usr/include/c++/10/bits/invoke.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/invoke.h" 3
23866: #define _GLIBCXX_INVOKE_H 1
23866:
23866:
23866: # 34 "/usr/include/c++/10/bits/invoke.h" 3
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 52 "/usr/include/c++/10/bits/invoke.h" 3
23866: template<typename _Tp, typename _Up = typename __inv_unwrap<_Tp>::type>
23866: constexpr _Up&&
23866: __invfwd(typename remove_reference<_Tp>::type& __t) noexcept
23866: { return static_cast<_Up&&>(__t); }
23866:
23866: template<typename _Res, typename _Fn, typename... _Args>
23866: constexpr _Res
23866: __invoke_impl(__invoke_other, _Fn&& __f, _Args&&... __args)
23866: { return std::forward<_Fn>(__f)(std::forward<_Args>(__args)...); }
23866:
23866: template<typename _Res, typename _MemFun, typename _Tp, typename... _Args>
23866: constexpr _Res
23866: __invoke_impl(__invoke_memfun_ref, _MemFun&& __f, _Tp&& __t,
23866: _Args&&... __args)
23866: { return (__invfwd<_Tp>(__t).*__f)(std::forward<_Args>(__args)...); }
23866:
23866: template<typename _Res, typename _MemFun, typename _Tp, typename... _Args>
23866: constexpr _Res
23866: __invoke_impl(__invoke_memfun_deref, _MemFun&& __f, _Tp&& __t,
23866: _Args&&... __args)
23866: {
23866: return ((*std::forward<_Tp>(__t)).*__f)(std::forward<_Args>(__args)...);
23866: }
23866:
23866: template<typename _Res, typename _MemPtr, typename _Tp>
23866: constexpr _Res
23866: __invoke_impl(__invoke_memobj_ref, _MemPtr&& __f, _Tp&& __t)
23866: { return __invfwd<_Tp>(__t).*__f; }
23866:
23866: template<typename _Res, typename _MemPtr, typename _Tp>
23866: constexpr _Res
23866: __invoke_impl(__invoke_memobj_deref, _MemPtr&& __f, _Tp&& __t)
23866: { return (*std::forward<_Tp>(__t)).*__f; }
23866:
23866:
23866: template<typename _Callable, typename... _Args>
23866: constexpr typename __invoke_result<_Callable, _Args...>::type
23866: __invoke(_Callable&& __fn, _Args&&... __args)
23866: noexcept(__is_nothrow_invocable<_Callable, _Args...>::value)
23866: {
23866: using __result = __invoke_result<_Callable, _Args...>;
23866: using __type = typename __result::type;
23866: using __tag = typename __result::__invoke_type;
23866: return std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn),
23866: std::forward<_Args>(__args)...);
23866: }
23866:
23866:
23866:
23866: template<typename _Res, typename _Callable, typename... _Args>
23866: constexpr enable_if_t<is_invocable_r_v<_Res, _Callable, _Args...>, _Res>
23866: __invoke_r(_Callable&& __fn, _Args&&... __args)
23866: noexcept(is_nothrow_invocable_r_v<_Res, _Callable, _Args...>)
23866: {
23866: using __result = __invoke_result<_Callable, _Args...>;
23866: using __type = typename __result::type;
23866: using __tag = typename __result::__invoke_type;
23866: if constexpr (is_void_v<_Res>)
23866: std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn),
23866: std::forward<_Args>(__args)...);
23866: else
23866: return std::__invoke_impl<__type>(__tag{},
23866: std::forward<_Callable>(__fn),
23866: std::forward<_Args>(__args)...);
23866: }
23866: # 158 "/usr/include/c++/10/bits/invoke.h" 3
23866:
23866: }
23866: # 42 "/usr/include/c++/10/tuple" 2 3
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename... _Elements>
23866: class tuple;
23866:
23866: template<typename _Tp>
23866: struct __is_empty_non_tuple : is_empty<_Tp> { };
23866:
23866:
23866: template<typename _El0, typename... _El>
23866: struct __is_empty_non_tuple<tuple<_El0, _El...>> : false_type { };
23866:
23866:
23866: template<typename _Tp>
23866: using __empty_not_final
23866: = typename conditional<__is_final(_Tp), false_type,
23866: __is_empty_non_tuple<_Tp>>::type;
23866:
23866: template<std::size_t _Idx, typename _Head,
23866: bool = __empty_not_final<_Head>::value>
23866: struct _Head_base;
23866:
23866: template<std::size_t _Idx, typename _Head>
23866: struct _Head_base<_Idx, _Head, true>
23866: : public _Head
23866: {
23866: constexpr _Head_base()
23866: : _Head() { }
23866:
23866: constexpr _Head_base(const _Head& __h)
23866: : _Head(__h) { }
23866:
23866: constexpr _Head_base(const _Head_base&) = default;
23866: constexpr _Head_base(_Head_base&&) = default;
23866:
23866: template<typename _UHead>
23866: constexpr _Head_base(_UHead&& __h)
23866: : _Head(std::forward<_UHead>(__h)) { }
23866:
23866: _Head_base(allocator_arg_t, __uses_alloc0)
23866: : _Head() { }
23866:
23866: template<typename _Alloc>
23866: _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a)
23866: : _Head(allocator_arg, *__a._M_a) { }
23866:
23866: template<typename _Alloc>
23866: _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a)
23866: : _Head(*__a._M_a) { }
23866:
23866: template<typename _UHead>
23866: _Head_base(__uses_alloc0, _UHead&& __uhead)
23866: : _Head(std::forward<_UHead>(__uhead)) { }
23866:
23866: template<typename _Alloc, typename _UHead>
23866: _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead)
23866: : _Head(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) { }
23866:
23866: template<typename _Alloc, typename _UHead>
23866: _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead)
23866: : _Head(std::forward<_UHead>(__uhead), *__a._M_a) { }
23866:
23866: static constexpr _Head&
23866: _M_head(_Head_base& __b) noexcept { return __b; }
23866:
23866: static constexpr const _Head&
23866: _M_head(const _Head_base& __b) noexcept { return __b; }
23866: };
23866:
23866: template<std::size_t _Idx, typename _Head>
23866: struct _Head_base<_Idx, _Head, false>
23866: {
23866: constexpr _Head_base()
23866: : _M_head_impl() { }
23866:
23866: constexpr _Head_base(const _Head& __h)
23866: : _M_head_impl(__h) { }
23866:
23866: constexpr _Head_base(const _Head_base&) = default;
23866: constexpr _Head_base(_Head_base&&) = default;
23866:
23866: template<typename _UHead>
23866: constexpr _Head_base(_UHead&& __h)
23866: : _M_head_impl(std::forward<_UHead>(__h)) { }
23866:
23866:
23866: _Head_base(allocator_arg_t, __uses_alloc0)
23866: : _M_head_impl() { }
23866:
23866: template<typename _Alloc>
23866: _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a)
23866: : _M_head_impl(allocator_arg, *__a._M_a) { }
23866:
23866: template<typename _Alloc>
23866: _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a)
23866: : _M_head_impl(*__a._M_a) { }
23866:
23866: template<typename _UHead>
23866:
23866: _Head_base(__uses_alloc0, _UHead&& __uhead)
23866: : _M_head_impl(std::forward<_UHead>(__uhead)) { }
23866:
23866: template<typename _Alloc, typename _UHead>
23866: _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead)
23866: : _M_head_impl(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead))
23866: { }
23866:
23866: template<typename _Alloc, typename _UHead>
23866: _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead)
23866: : _M_head_impl(std::forward<_UHead>(__uhead), *__a._M_a) { }
23866:
23866: static constexpr _Head&
23866: _M_head(_Head_base& __b) noexcept { return __b._M_head_impl; }
23866:
23866: static constexpr const _Head&
23866: _M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; }
23866:
23866: _Head _M_head_impl;
23866: };
23866: # 182 "/usr/include/c++/10/tuple" 3
23866: template<std::size_t _Idx, typename... _Elements>
23866: struct _Tuple_impl;
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<std::size_t _Idx, typename _Head, typename... _Tail>
23866: struct _Tuple_impl<_Idx, _Head, _Tail...>
23866: : public _Tuple_impl<_Idx + 1, _Tail...>,
23866: private _Head_base<_Idx, _Head>
23866: {
23866: template<std::size_t, typename...> friend class _Tuple_impl;
23866:
23866: typedef _Tuple_impl<_Idx + 1, _Tail...> _Inherited;
23866: typedef _Head_base<_Idx, _Head> _Base;
23866:
23866: static constexpr _Head&
23866: _M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); }
23866:
23866: static constexpr const _Head&
23866: _M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); }
23866:
23866: static constexpr _Inherited&
23866: _M_tail(_Tuple_impl& __t) noexcept { return __t; }
23866:
23866: static constexpr const _Inherited&
23866: _M_tail(const _Tuple_impl& __t) noexcept { return __t; }
23866:
23866: constexpr _Tuple_impl()
23866: : _Inherited(), _Base() { }
23866:
23866: explicit
23866: constexpr _Tuple_impl(const _Head& __head, const _Tail&... __tail)
23866: : _Inherited(__tail...), _Base(__head) { }
23866:
23866: template<typename _UHead, typename... _UTail, typename = typename
23866: enable_if<sizeof...(_Tail) == sizeof...(_UTail)>::type>
23866: explicit
23866: constexpr _Tuple_impl(_UHead&& __head, _UTail&&... __tail)
23866: : _Inherited(std::forward<_UTail>(__tail)...),
23866: _Base(std::forward<_UHead>(__head)) { }
23866:
23866: constexpr _Tuple_impl(const _Tuple_impl&) = default;
23866:
23866:
23866:
23866: _Tuple_impl& operator=(const _Tuple_impl&) = delete;
23866:
23866: constexpr
23866: _Tuple_impl(_Tuple_impl&& __in)
23866: noexcept(__and_<is_nothrow_move_constructible<_Head>,
23866: is_nothrow_move_constructible<_Inherited>>::value)
23866: : _Inherited(std::move(_M_tail(__in))),
23866: _Base(std::forward<_Head>(_M_head(__in))) { }
23866:
23866: template<typename... _UElements>
23866: constexpr _Tuple_impl(const _Tuple_impl<_Idx, _UElements...>& __in)
23866: : _Inherited(_Tuple_impl<_Idx, _UElements...>::_M_tail(__in)),
23866: _Base(_Tuple_impl<_Idx, _UElements...>::_M_head(__in)) { }
23866:
23866: template<typename _UHead, typename... _UTails>
23866: constexpr _Tuple_impl(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in)
23866: : _Inherited(std::move
23866: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))),
23866: _Base(std::forward<_UHead>
23866: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) { }
23866:
23866: template<typename _Alloc>
23866:
23866: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a)
23866: : _Inherited(__tag, __a),
23866: _Base(__tag, __use_alloc<_Head>(__a)) { }
23866:
23866: template<typename _Alloc>
23866: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
23866: const _Head& __head, const _Tail&... __tail)
23866: : _Inherited(__tag, __a, __tail...),
23866: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), __head) { }
23866:
23866: template<typename _Alloc, typename _UHead, typename... _UTail,
23866: typename = typename enable_if<sizeof...(_Tail)
23866: == sizeof...(_UTail)>::type>
23866:
23866: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
23866: _UHead&& __head, _UTail&&... __tail)
23866: : _Inherited(__tag, __a, std::forward<_UTail>(__tail)...),
23866: _Base(__use_alloc<_Head, _Alloc, _UHead>(__a),
23866: std::forward<_UHead>(__head)) { }
23866:
23866: template<typename _Alloc>
23866:
23866: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
23866: const _Tuple_impl& __in)
23866: : _Inherited(__tag, __a, _M_tail(__in)),
23866: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), _M_head(__in)) { }
23866:
23866: template<typename _Alloc>
23866:
23866: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
23866: _Tuple_impl&& __in)
23866: : _Inherited(__tag, __a, std::move(_M_tail(__in))),
23866: _Base(__use_alloc<_Head, _Alloc, _Head>(__a),
23866: std::forward<_Head>(_M_head(__in))) { }
23866:
23866: template<typename _Alloc, typename _UHead, typename... _UTails>
23866:
23866: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
23866: const _Tuple_impl<_Idx, _UHead, _UTails...>& __in)
23866: : _Inherited(__tag, __a,
23866: _Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in)),
23866: _Base(__use_alloc<_Head, _Alloc, const _UHead&>(__a),
23866: _Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)) { }
23866:
23866: template<typename _Alloc, typename _UHead, typename... _UTails>
23866:
23866: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
23866: _Tuple_impl<_Idx, _UHead, _UTails...>&& __in)
23866: : _Inherited(__tag, __a, std::move
23866: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))),
23866: _Base(__use_alloc<_Head, _Alloc, _UHead>(__a),
23866: std::forward<_UHead>
23866: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) { }
23866:
23866: template<typename... _UElements>
23866:
23866: void
23866: _M_assign(const _Tuple_impl<_Idx, _UElements...>& __in)
23866: {
23866: _M_head(*this) = _Tuple_impl<_Idx, _UElements...>::_M_head(__in);
23866: _M_tail(*this)._M_assign(
23866: _Tuple_impl<_Idx, _UElements...>::_M_tail(__in));
23866: }
23866:
23866: template<typename _UHead, typename... _UTails>
23866:
23866: void
23866: _M_assign(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in)
23866: {
23866: _M_head(*this) = std::forward<_UHead>
23866: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in));
23866: _M_tail(*this)._M_assign(
23866: std::move(_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in)));
23866: }
23866:
23866: protected:
23866:
23866: void
23866: _M_swap(_Tuple_impl& __in)
23866: {
23866: using std::swap;
23866: swap(_M_head(*this), _M_head(__in));
23866: _Inherited::_M_swap(_M_tail(__in));
23866: }
23866: };
23866:
23866:
23866: template<std::size_t _Idx, typename _Head>
23866: struct _Tuple_impl<_Idx, _Head>
23866: : private _Head_base<_Idx, _Head>
23866: {
23866: template<std::size_t, typename...> friend class _Tuple_impl;
23866:
23866: typedef _Head_base<_Idx, _Head> _Base;
23866:
23866: static constexpr _Head&
23866: _M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); }
23866:
23866: static constexpr const _Head&
23866: _M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); }
23866:
23866: constexpr _Tuple_impl()
23866: : _Base() { }
23866:
23866: explicit
23866: constexpr _Tuple_impl(const _Head& __head)
23866: : _Base(__head) { }
23866:
23866: template<typename _UHead>
23866: explicit
23866: constexpr _Tuple_impl(_UHead&& __head)
23866: : _Base(std::forward<_UHead>(__head)) { }
23866:
23866: constexpr _Tuple_impl(const _Tuple_impl&) = default;
23866:
23866:
23866:
23866: _Tuple_impl& operator=(const _Tuple_impl&) = delete;
23866:
23866: constexpr
23866: _Tuple_impl(_Tuple_impl&& __in)
23866: noexcept(is_nothrow_move_constructible<_Head>::value)
23866: : _Base(std::forward<_Head>(_M_head(__in))) { }
23866:
23866: template<typename _UHead>
23866: constexpr _Tuple_impl(const _Tuple_impl<_Idx, _UHead>& __in)
23866: : _Base(_Tuple_impl<_Idx, _UHead>::_M_head(__in)) { }
23866:
23866: template<typename _UHead>
23866: constexpr _Tuple_impl(_Tuple_impl<_Idx, _UHead>&& __in)
23866: : _Base(std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in)))
23866: { }
23866:
23866: template<typename _Alloc>
23866:
23866: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a)
23866: : _Base(__tag, __use_alloc<_Head>(__a)) { }
23866:
23866: template<typename _Alloc>
23866: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
23866: const _Head& __head)
23866: : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), __head) { }
23866:
23866: template<typename _Alloc, typename _UHead>
23866:
23866: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
23866: _UHead&& __head)
23866: : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a),
23866: std::forward<_UHead>(__head)) { }
23866:
23866: template<typename _Alloc>
23866:
23866: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
23866: const _Tuple_impl& __in)
23866: : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), _M_head(__in)) { }
23866:
23866: template<typename _Alloc>
23866:
23866: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
23866: _Tuple_impl&& __in)
23866: : _Base(__use_alloc<_Head, _Alloc, _Head>(__a),
23866: std::forward<_Head>(_M_head(__in))) { }
23866:
23866: template<typename _Alloc, typename _UHead>
23866:
23866: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
23866: const _Tuple_impl<_Idx, _UHead>& __in)
23866: : _Base(__use_alloc<_Head, _Alloc, const _UHead&>(__a),
23866: _Tuple_impl<_Idx, _UHead>::_M_head(__in)) { }
23866:
23866: template<typename _Alloc, typename _UHead>
23866:
23866: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
23866: _Tuple_impl<_Idx, _UHead>&& __in)
23866: : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a),
23866: std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in)))
23866: { }
23866:
23866: template<typename _UHead>
23866:
23866: void
23866: _M_assign(const _Tuple_impl<_Idx, _UHead>& __in)
23866: {
23866: _M_head(*this) = _Tuple_impl<_Idx, _UHead>::_M_head(__in);
23866: }
23866:
23866: template<typename _UHead>
23866:
23866: void
23866: _M_assign(_Tuple_impl<_Idx, _UHead>&& __in)
23866: {
23866: _M_head(*this)
23866: = std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in));
23866: }
23866:
23866: protected:
23866:
23866: void
23866: _M_swap(_Tuple_impl& __in)
23866: {
23866: using std::swap;
23866: swap(_M_head(*this), _M_head(__in));
23866: }
23866: };
23866:
23866:
23866:
23866: template<bool, typename... _Types>
23866: struct _TupleConstraints
23866: {
23866:
23866:
23866:
23866: template<typename... _UTypes>
23866: static constexpr bool __is_implicitly_constructible()
23866: {
23866: return __and_<is_constructible<_Types, _UTypes>...,
23866: is_convertible<_UTypes, _Types>...
23866: >::value;
23866: }
23866:
23866:
23866:
23866:
23866: template<typename... _UTypes>
23866: static constexpr bool __is_explicitly_constructible()
23866: {
23866: return __and_<is_constructible<_Types, _UTypes>...,
23866: __not_<__and_<is_convertible<_UTypes, _Types>...>>
23866: >::value;
23866: }
23866:
23866: static constexpr bool __is_implicitly_default_constructible()
23866: {
23866: return __and_<std::__is_implicitly_default_constructible<_Types>...
23866: >::value;
23866: }
23866:
23866: static constexpr bool __is_explicitly_default_constructible()
23866: {
23866: return __and_<is_default_constructible<_Types>...,
23866: __not_<__and_<
23866: std::__is_implicitly_default_constructible<_Types>...>
23866: >>::value;
23866: }
23866: };
23866:
23866:
23866:
23866: template<typename... _Types>
23866: struct _TupleConstraints<false, _Types...>
23866: {
23866: template<typename... _UTypes>
23866: static constexpr bool __is_implicitly_constructible()
23866: { return false; }
23866:
23866: template<typename... _UTypes>
23866: static constexpr bool __is_explicitly_constructible()
23866: { return false; }
23866: };
23866:
23866:
23866: template<typename... _Elements>
23866: class tuple : public _Tuple_impl<0, _Elements...>
23866: {
23866: typedef _Tuple_impl<0, _Elements...> _Inherited;
23866:
23866: template<bool _Cond>
23866: using _TCC = _TupleConstraints<_Cond, _Elements...>;
23866:
23866:
23866: template<bool _Dummy>
23866: using _ImplicitDefaultCtor = __enable_if_t<
23866: _TCC<_Dummy>::__is_implicitly_default_constructible(),
23866: bool>;
23866:
23866:
23866: template<bool _Dummy>
23866: using _ExplicitDefaultCtor = __enable_if_t<
23866: _TCC<_Dummy>::__is_explicitly_default_constructible(),
23866: bool>;
23866:
23866:
23866: template<bool _Cond, typename... _Args>
23866: using _ImplicitCtor = __enable_if_t<
23866: _TCC<_Cond>::template __is_implicitly_constructible<_Args...>(),
23866: bool>;
23866:
23866:
23866: template<bool _Cond, typename... _Args>
23866: using _ExplicitCtor = __enable_if_t<
23866: _TCC<_Cond>::template __is_explicitly_constructible<_Args...>(),
23866: bool>;
23866:
23866: template<typename... _UElements>
23866: static constexpr
23866: __enable_if_t<sizeof...(_UElements) == sizeof...(_Elements), bool>
23866: __assignable()
23866: { return __and_<is_assignable<_Elements&, _UElements>...>::value; }
23866:
23866:
23866: template<typename... _UElements>
23866: static constexpr bool __nothrow_assignable()
23866: {
23866: return
23866: __and_<is_nothrow_assignable<_Elements&, _UElements>...>::value;
23866: }
23866:
23866:
23866: template<typename... _UElements>
23866: static constexpr bool __nothrow_constructible()
23866: {
23866: return
23866: __and_<is_nothrow_constructible<_Elements, _UElements>...>::value;
23866: }
23866:
23866:
23866: template<typename _Up>
23866: static constexpr bool __valid_args()
23866: {
23866: return sizeof...(_Elements) == 1
23866: && !is_same<tuple, __remove_cvref_t<_Up>>::value;
23866: }
23866:
23866:
23866: template<typename, typename, typename... _Tail>
23866: static constexpr bool __valid_args()
23866: { return (sizeof...(_Tail) + 2) == sizeof...(_Elements); }
23866: # 591 "/usr/include/c++/10/tuple" 3
23866: template<typename _Tuple, typename = tuple,
23866: typename = __remove_cvref_t<_Tuple>>
23866: struct _UseOtherCtor
23866: : false_type
23866: { };
23866:
23866:
23866: template<typename _Tuple, typename _Tp, typename _Up>
23866: struct _UseOtherCtor<_Tuple, tuple<_Tp>, tuple<_Up>>
23866: : __or_<is_convertible<_Tuple, _Tp>, is_constructible<_Tp, _Tuple>>
23866: { };
23866:
23866:
23866: template<typename _Tuple, typename _Tp>
23866: struct _UseOtherCtor<_Tuple, tuple<_Tp>, tuple<_Tp>>
23866: : true_type
23866: { };
23866:
23866:
23866:
23866:
23866: template<typename _Tuple>
23866: static constexpr bool __use_other_ctor()
23866: { return _UseOtherCtor<_Tuple>::value; }
23866:
23866: public:
23866: template<typename _Dummy = void,
23866: _ImplicitDefaultCtor<is_void<_Dummy>::value> = true>
23866: constexpr
23866: tuple()
23866: noexcept(__and_<is_nothrow_default_constructible<_Elements>...>::value)
23866: : _Inherited() { }
23866:
23866: template<typename _Dummy = void,
23866: _ExplicitDefaultCtor<is_void<_Dummy>::value> = false>
23866: explicit constexpr
23866: tuple()
23866: noexcept(__and_<is_nothrow_default_constructible<_Elements>...>::value)
23866: : _Inherited() { }
23866:
23866: template<bool _NotEmpty = (sizeof...(_Elements) >= 1),
23866: _ImplicitCtor<_NotEmpty, const _Elements&...> = true>
23866: constexpr
23866: tuple(const _Elements&... __elements)
23866: noexcept(__nothrow_constructible<const _Elements&...>())
23866: : _Inherited(__elements...) { }
23866:
23866: template<bool _NotEmpty = (sizeof...(_Elements) >= 1),
23866: _ExplicitCtor<_NotEmpty, const _Elements&...> = false>
23866: explicit constexpr
23866: tuple(const _Elements&... __elements)
23866: noexcept(__nothrow_constructible<const _Elements&...>())
23866: : _Inherited(__elements...) { }
23866:
23866: template<typename... _UElements,
23866: bool _Valid = __valid_args<_UElements...>(),
23866: _ImplicitCtor<_Valid, _UElements...> = true>
23866: constexpr
23866: tuple(_UElements&&... __elements)
23866: noexcept(__nothrow_constructible<_UElements...>())
23866: : _Inherited(std::forward<_UElements>(__elements)...) { }
23866:
23866: template<typename... _UElements,
23866: bool _Valid = __valid_args<_UElements...>(),
23866: _ExplicitCtor<_Valid, _UElements...> = false>
23866: explicit constexpr
23866: tuple(_UElements&&... __elements)
23866: noexcept(__nothrow_constructible<_UElements...>())
23866: : _Inherited(std::forward<_UElements>(__elements)...) { }
23866:
23866: constexpr tuple(const tuple&) = default;
23866:
23866: constexpr tuple(tuple&&) = default;
23866:
23866: template<typename... _UElements,
23866: bool _Valid = (sizeof...(_Elements) == sizeof...(_UElements))
23866: && !__use_other_ctor<const tuple<_UElements...>&>(),
23866: _ImplicitCtor<_Valid, const _UElements&...> = true>
23866: constexpr
23866: tuple(const tuple<_UElements...>& __in)
23866: noexcept(__nothrow_constructible<const _UElements&...>())
23866: : _Inherited(static_cast<const _Tuple_impl<0, _UElements...>&>(__in))
23866: { }
23866:
23866: template<typename... _UElements,
23866: bool _Valid = (sizeof...(_Elements) == sizeof...(_UElements))
23866: && !__use_other_ctor<const tuple<_UElements...>&>(),
23866: _ExplicitCtor<_Valid, const _UElements&...> = false>
23866: explicit constexpr
23866: tuple(const tuple<_UElements...>& __in)
23866: noexcept(__nothrow_constructible<const _UElements&...>())
23866: : _Inherited(static_cast<const _Tuple_impl<0, _UElements...>&>(__in))
23866: { }
23866:
23866: template<typename... _UElements,
23866: bool _Valid = (sizeof...(_Elements) == sizeof...(_UElements))
23866: && !__use_other_ctor<tuple<_UElements...>&&>(),
23866: _ImplicitCtor<_Valid, _UElements...> = true>
23866: constexpr
23866: tuple(tuple<_UElements...>&& __in)
23866: noexcept(__nothrow_constructible<_UElements...>())
23866: : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) { }
23866:
23866: template<typename... _UElements,
23866: bool _Valid = (sizeof...(_Elements) == sizeof...(_UElements))
23866: && !__use_other_ctor<tuple<_UElements...>&&>(),
23866: _ExplicitCtor<_Valid, _UElements...> = false>
23866: explicit constexpr
23866: tuple(tuple<_UElements...>&& __in)
23866: noexcept(__nothrow_constructible<_UElements...>())
23866: : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) { }
23866:
23866:
23866:
23866: template<typename _Alloc,
23866: _ImplicitDefaultCtor<is_object<_Alloc>::value> = true>
23866:
23866: tuple(allocator_arg_t __tag, const _Alloc& __a)
23866: : _Inherited(__tag, __a) { }
23866:
23866: template<typename _Alloc, bool _NotEmpty = (sizeof...(_Elements) >= 1),
23866: _ImplicitCtor<_NotEmpty, const _Elements&...> = true>
23866:
23866: tuple(allocator_arg_t __tag, const _Alloc& __a,
23866: const _Elements&... __elements)
23866: : _Inherited(__tag, __a, __elements...) { }
23866:
23866: template<typename _Alloc, bool _NotEmpty = (sizeof...(_Elements) >= 1),
23866: _ExplicitCtor<_NotEmpty, const _Elements&...> = false>
23866:
23866: explicit
23866: tuple(allocator_arg_t __tag, const _Alloc& __a,
23866: const _Elements&... __elements)
23866: : _Inherited(__tag, __a, __elements...) { }
23866:
23866: template<typename _Alloc, typename... _UElements,
23866: bool _Valid = __valid_args<_UElements...>(),
23866: _ImplicitCtor<_Valid, _UElements...> = true>
23866:
23866: tuple(allocator_arg_t __tag, const _Alloc& __a,
23866: _UElements&&... __elements)
23866: : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...)
23866: { }
23866:
23866: template<typename _Alloc, typename... _UElements,
23866: bool _Valid = __valid_args<_UElements...>(),
23866: _ExplicitCtor<_Valid, _UElements...> = false>
23866:
23866: explicit
23866: tuple(allocator_arg_t __tag, const _Alloc& __a,
23866: _UElements&&... __elements)
23866: : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...)
23866: { }
23866:
23866: template<typename _Alloc>
23866:
23866: tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in)
23866: : _Inherited(__tag, __a, static_cast<const _Inherited&>(__in)) { }
23866:
23866: template<typename _Alloc>
23866:
23866: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in)
23866: : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { }
23866:
23866: template<typename _Alloc, typename... _UElements,
23866: bool _Valid = (sizeof...(_Elements) == sizeof...(_UElements))
23866: && !__use_other_ctor<const tuple<_UElements...>&>(),
23866: _ImplicitCtor<_Valid, const _UElements&...> = true>
23866:
23866: tuple(allocator_arg_t __tag, const _Alloc& __a,
23866: const tuple<_UElements...>& __in)
23866: : _Inherited(__tag, __a,
23866: static_cast<const _Tuple_impl<0, _UElements...>&>(__in))
23866: { }
23866:
23866: template<typename _Alloc, typename... _UElements,
23866: bool _Valid = (sizeof...(_Elements) == sizeof...(_UElements))
23866: && !__use_other_ctor<const tuple<_UElements...>&>(),
23866: _ExplicitCtor<_Valid, const _UElements&...> = false>
23866:
23866: explicit
23866: tuple(allocator_arg_t __tag, const _Alloc& __a,
23866: const tuple<_UElements...>& __in)
23866: : _Inherited(__tag, __a,
23866: static_cast<const _Tuple_impl<0, _UElements...>&>(__in))
23866: { }
23866:
23866: template<typename _Alloc, typename... _UElements,
23866: bool _Valid = (sizeof...(_Elements) == sizeof...(_UElements))
23866: && !__use_other_ctor<tuple<_UElements...>&&>(),
23866: _ImplicitCtor<_Valid, _UElements...> = true>
23866:
23866: tuple(allocator_arg_t __tag, const _Alloc& __a,
23866: tuple<_UElements...>&& __in)
23866: : _Inherited(__tag, __a,
23866: static_cast<_Tuple_impl<0, _UElements...>&&>(__in))
23866: { }
23866:
23866: template<typename _Alloc, typename... _UElements,
23866: bool _Valid = (sizeof...(_Elements) == sizeof...(_UElements))
23866: && !__use_other_ctor<tuple<_UElements...>&&>(),
23866: _ExplicitCtor<_Valid, _UElements...> = false>
23866:
23866: explicit
23866: tuple(allocator_arg_t __tag, const _Alloc& __a,
23866: tuple<_UElements...>&& __in)
23866: : _Inherited(__tag, __a,
23866: static_cast<_Tuple_impl<0, _UElements...>&&>(__in))
23866: { }
23866:
23866:
23866:
23866:
23866: tuple&
23866: operator=(typename conditional<__assignable<const _Elements&...>(),
23866: const tuple&,
23866: const __nonesuch&>::type __in)
23866: noexcept(__nothrow_assignable<const _Elements&...>())
23866: {
23866: this->_M_assign(__in);
23866: return *this;
23866: }
23866:
23866:
23866: tuple&
23866: operator=(typename conditional<__assignable<_Elements...>(),
23866: tuple&&,
23866: __nonesuch&&>::type __in)
23866: noexcept(__nothrow_assignable<_Elements...>())
23866: {
23866: this->_M_assign(std::move(__in));
23866: return *this;
23866: }
23866:
23866: template<typename... _UElements>
23866:
23866: __enable_if_t<__assignable<const _UElements&...>(), tuple&>
23866: operator=(const tuple<_UElements...>& __in)
23866: noexcept(__nothrow_assignable<const _UElements&...>())
23866: {
23866: this->_M_assign(__in);
23866: return *this;
23866: }
23866:
23866: template<typename... _UElements>
23866:
23866: __enable_if_t<__assignable<_UElements...>(), tuple&>
23866: operator=(tuple<_UElements...>&& __in)
23866: noexcept(__nothrow_assignable<_UElements...>())
23866: {
23866: this->_M_assign(std::move(__in));
23866: return *this;
23866: }
23866:
23866:
23866:
23866: void
23866: swap(tuple& __in)
23866: noexcept(__and_<__is_nothrow_swappable<_Elements>...>::value)
23866: { _Inherited::_M_swap(__in); }
23866: };
23866:
23866:
23866: template<typename... _UTypes>
23866: tuple(_UTypes...) -> tuple<_UTypes...>;
23866: template<typename _T1, typename _T2>
23866: tuple(pair<_T1, _T2>) -> tuple<_T1, _T2>;
23866: template<typename _Alloc, typename... _UTypes>
23866: tuple(allocator_arg_t, _Alloc, _UTypes...) -> tuple<_UTypes...>;
23866: template<typename _Alloc, typename _T1, typename _T2>
23866: tuple(allocator_arg_t, _Alloc, pair<_T1, _T2>) -> tuple<_T1, _T2>;
23866: template<typename _Alloc, typename... _UTypes>
23866: tuple(allocator_arg_t, _Alloc, tuple<_UTypes...>) -> tuple<_UTypes...>;
23866:
23866:
23866:
23866: template<>
23866: class tuple<>
23866: {
23866: public:
23866: void swap(tuple&) noexcept { }
23866:
23866:
23866: tuple() = default;
23866:
23866: template<typename _Alloc>
23866:
23866: tuple(allocator_arg_t, const _Alloc&) noexcept { }
23866: template<typename _Alloc>
23866:
23866: tuple(allocator_arg_t, const _Alloc&, const tuple&) noexcept { }
23866: };
23866:
23866:
23866:
23866: template<typename _T1, typename _T2>
23866: class tuple<_T1, _T2> : public _Tuple_impl<0, _T1, _T2>
23866: {
23866: typedef _Tuple_impl<0, _T1, _T2> _Inherited;
23866:
23866:
23866: template<bool _Dummy, typename _U1, typename _U2>
23866: using _ImplicitDefaultCtor = __enable_if_t<
23866: _TupleConstraints<_Dummy, _U1, _U2>::
23866: __is_implicitly_default_constructible(),
23866: bool>;
23866:
23866:
23866: template<bool _Dummy, typename _U1, typename _U2>
23866: using _ExplicitDefaultCtor = __enable_if_t<
23866: _TupleConstraints<_Dummy, _U1, _U2>::
23866: __is_explicitly_default_constructible(),
23866: bool>;
23866:
23866: template<bool _Dummy>
23866: using _TCC = _TupleConstraints<_Dummy, _T1, _T2>;
23866:
23866:
23866: template<bool _Cond, typename _U1, typename _U2>
23866: using _ImplicitCtor = __enable_if_t<
23866: _TCC<_Cond>::template __is_implicitly_constructible<_U1, _U2>(),
23866: bool>;
23866:
23866:
23866: template<bool _Cond, typename _U1, typename _U2>
23866: using _ExplicitCtor = __enable_if_t<
23866: _TCC<_Cond>::template __is_explicitly_constructible<_U1, _U2>(),
23866: bool>;
23866:
23866: template<typename _U1, typename _U2>
23866: static constexpr bool __assignable()
23866: {
23866: return __and_<is_assignable<_T1&, _U1>,
23866: is_assignable<_T2&, _U2>>::value;
23866: }
23866:
23866: template<typename _U1, typename _U2>
23866: static constexpr bool __nothrow_assignable()
23866: {
23866: return __and_<is_nothrow_assignable<_T1&, _U1>,
23866: is_nothrow_assignable<_T2&, _U2>>::value;
23866: }
23866:
23866: template<typename _U1, typename _U2>
23866: static constexpr bool __nothrow_constructible()
23866: {
23866: return __and_<is_nothrow_constructible<_T1, _U1>,
23866: is_nothrow_constructible<_T2, _U2>>::value;
23866: }
23866:
23866: static constexpr bool __nothrow_default_constructible()
23866: {
23866: return __and_<is_nothrow_default_constructible<_T1>,
23866: is_nothrow_default_constructible<_T2>>::value;
23866: }
23866:
23866: template<typename _U1>
23866: static constexpr bool __is_alloc_arg()
23866: { return is_same<__remove_cvref_t<_U1>, allocator_arg_t>::value; }
23866:
23866: public:
23866: template<bool _Dummy = true,
23866: _ImplicitDefaultCtor<_Dummy, _T1, _T2> = true>
23866: constexpr
23866: tuple()
23866: noexcept(__nothrow_default_constructible())
23866: : _Inherited() { }
23866:
23866: template<bool _Dummy = true,
23866: _ExplicitDefaultCtor<_Dummy, _T1, _T2> = false>
23866: explicit constexpr
23866: tuple()
23866: noexcept(__nothrow_default_constructible())
23866: : _Inherited() { }
23866:
23866: template<bool _Dummy = true,
23866: _ImplicitCtor<_Dummy, const _T1&, const _T2&> = true>
23866: constexpr
23866: tuple(const _T1& __a1, const _T2& __a2)
23866: noexcept(__nothrow_constructible<const _T1&, const _T2&>())
23866: : _Inherited(__a1, __a2) { }
23866:
23866: template<bool _Dummy = true,
23866: _ExplicitCtor<_Dummy, const _T1&, const _T2&> = false>
23866: explicit constexpr
23866: tuple(const _T1& __a1, const _T2& __a2)
23866: noexcept(__nothrow_constructible<const _T1&, const _T2&>())
23866: : _Inherited(__a1, __a2) { }
23866:
23866: template<typename _U1, typename _U2,
23866: _ImplicitCtor<!__is_alloc_arg<_U1>(), _U1, _U2> = true>
23866: constexpr
23866: tuple(_U1&& __a1, _U2&& __a2)
23866: noexcept(__nothrow_constructible<_U1, _U2>())
23866: : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) { }
23866:
23866: template<typename _U1, typename _U2,
23866: _ExplicitCtor<!__is_alloc_arg<_U1>(), _U1, _U2> = false>
23866: explicit constexpr
23866: tuple(_U1&& __a1, _U2&& __a2)
23866: noexcept(__nothrow_constructible<_U1, _U2>())
23866: : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) { }
23866:
23866: constexpr tuple(const tuple&) = default;
23866:
23866: constexpr tuple(tuple&&) = default;
23866:
23866: template<typename _U1, typename _U2,
23866: _ImplicitCtor<true, const _U1&, const _U2&> = true>
23866: constexpr
23866: tuple(const tuple<_U1, _U2>& __in)
23866: noexcept(__nothrow_constructible<const _U1&, const _U2&>())
23866: : _Inherited(static_cast<const _Tuple_impl<0, _U1, _U2>&>(__in)) { }
23866:
23866: template<typename _U1, typename _U2,
23866: _ExplicitCtor<true, const _U1&, const _U2&> = false>
23866: explicit constexpr
23866: tuple(const tuple<_U1, _U2>& __in)
23866: noexcept(__nothrow_constructible<const _U1&, const _U2&>())
23866: : _Inherited(static_cast<const _Tuple_impl<0, _U1, _U2>&>(__in)) { }
23866:
23866: template<typename _U1, typename _U2,
23866: _ImplicitCtor<true, _U1, _U2> = true>
23866: constexpr
23866: tuple(tuple<_U1, _U2>&& __in)
23866: noexcept(__nothrow_constructible<_U1, _U2>())
23866: : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) { }
23866:
23866: template<typename _U1, typename _U2,
23866: _ExplicitCtor<true, _U1, _U2> = false>
23866: explicit constexpr
23866: tuple(tuple<_U1, _U2>&& __in)
23866: noexcept(__nothrow_constructible<_U1, _U2>())
23866: : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) { }
23866:
23866: template<typename _U1, typename _U2,
23866: _ImplicitCtor<true, const _U1&, const _U2&> = true>
23866: constexpr
23866: tuple(const pair<_U1, _U2>& __in)
23866: noexcept(__nothrow_constructible<const _U1&, const _U2&>())
23866: : _Inherited(__in.first, __in.second) { }
23866:
23866: template<typename _U1, typename _U2,
23866: _ExplicitCtor<true, const _U1&, const _U2&> = false>
23866: explicit constexpr
23866: tuple(const pair<_U1, _U2>& __in)
23866: noexcept(__nothrow_constructible<const _U1&, const _U2&>())
23866: : _Inherited(__in.first, __in.second) { }
23866:
23866: template<typename _U1, typename _U2,
23866: _ImplicitCtor<true, _U1, _U2> = true>
23866: constexpr
23866: tuple(pair<_U1, _U2>&& __in)
23866: noexcept(__nothrow_constructible<_U1, _U2>())
23866: : _Inherited(std::forward<_U1>(__in.first),
23866: std::forward<_U2>(__in.second)) { }
23866:
23866: template<typename _U1, typename _U2,
23866: _ExplicitCtor<true, _U1, _U2> = false>
23866: explicit constexpr
23866: tuple(pair<_U1, _U2>&& __in)
23866: noexcept(__nothrow_constructible<_U1, _U2>())
23866: : _Inherited(std::forward<_U1>(__in.first),
23866: std::forward<_U2>(__in.second)) { }
23866:
23866:
23866:
23866: template<typename _Alloc,
23866: _ImplicitDefaultCtor<is_object<_Alloc>::value, _T1, _T2> = true>
23866:
23866: tuple(allocator_arg_t __tag, const _Alloc& __a)
23866: : _Inherited(__tag, __a) { }
23866:
23866: template<typename _Alloc, bool _Dummy = true,
23866: _ImplicitCtor<_Dummy, const _T1&, const _T2&> = true>
23866:
23866: tuple(allocator_arg_t __tag, const _Alloc& __a,
23866: const _T1& __a1, const _T2& __a2)
23866: : _Inherited(__tag, __a, __a1, __a2) { }
23866:
23866: template<typename _Alloc, bool _Dummy = true,
23866: _ExplicitCtor<_Dummy, const _T1&, const _T2&> = false>
23866: explicit
23866:
23866: tuple(allocator_arg_t __tag, const _Alloc& __a,
23866: const _T1& __a1, const _T2& __a2)
23866: : _Inherited(__tag, __a, __a1, __a2) { }
23866:
23866: template<typename _Alloc, typename _U1, typename _U2,
23866: _ImplicitCtor<true, _U1, _U2> = true>
23866:
23866: tuple(allocator_arg_t __tag, const _Alloc& __a, _U1&& __a1, _U2&& __a2)
23866: : _Inherited(__tag, __a, std::forward<_U1>(__a1),
23866: std::forward<_U2>(__a2)) { }
23866:
23866: template<typename _Alloc, typename _U1, typename _U2,
23866: _ExplicitCtor<true, _U1, _U2> = false>
23866: explicit
23866:
23866: tuple(allocator_arg_t __tag, const _Alloc& __a,
23866: _U1&& __a1, _U2&& __a2)
23866: : _Inherited(__tag, __a, std::forward<_U1>(__a1),
23866: std::forward<_U2>(__a2)) { }
23866:
23866: template<typename _Alloc>
23866:
23866: tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in)
23866: : _Inherited(__tag, __a, static_cast<const _Inherited&>(__in)) { }
23866:
23866: template<typename _Alloc>
23866:
23866: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in)
23866: : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { }
23866:
23866: template<typename _Alloc, typename _U1, typename _U2,
23866: _ImplicitCtor<true, const _U1&, const _U2&> = true>
23866:
23866: tuple(allocator_arg_t __tag, const _Alloc& __a,
23866: const tuple<_U1, _U2>& __in)
23866: : _Inherited(__tag, __a,
23866: static_cast<const _Tuple_impl<0, _U1, _U2>&>(__in))
23866: { }
23866:
23866: template<typename _Alloc, typename _U1, typename _U2,
23866: _ExplicitCtor<true, const _U1&, const _U2&> = false>
23866: explicit
23866:
23866: tuple(allocator_arg_t __tag, const _Alloc& __a,
23866: const tuple<_U1, _U2>& __in)
23866: : _Inherited(__tag, __a,
23866: static_cast<const _Tuple_impl<0, _U1, _U2>&>(__in))
23866: { }
23866:
23866: template<typename _Alloc, typename _U1, typename _U2,
23866: _ImplicitCtor<true, _U1, _U2> = true>
23866:
23866: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple<_U1, _U2>&& __in)
23866: : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in))
23866: { }
23866:
23866: template<typename _Alloc, typename _U1, typename _U2,
23866: _ExplicitCtor<true, _U1, _U2> = false>
23866: explicit
23866:
23866: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple<_U1, _U2>&& __in)
23866: : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in))
23866: { }
23866:
23866: template<typename _Alloc, typename _U1, typename _U2,
23866: _ImplicitCtor<true, const _U1&, const _U2&> = true>
23866:
23866: tuple(allocator_arg_t __tag, const _Alloc& __a,
23866: const pair<_U1, _U2>& __in)
23866: : _Inherited(__tag, __a, __in.first, __in.second) { }
23866:
23866: template<typename _Alloc, typename _U1, typename _U2,
23866: _ExplicitCtor<true, const _U1&, const _U2&> = false>
23866: explicit
23866:
23866: tuple(allocator_arg_t __tag, const _Alloc& __a,
23866: const pair<_U1, _U2>& __in)
23866: : _Inherited(__tag, __a, __in.first, __in.second) { }
23866:
23866: template<typename _Alloc, typename _U1, typename _U2,
23866: _ImplicitCtor<true, _U1, _U2> = true>
23866:
23866: tuple(allocator_arg_t __tag, const _Alloc& __a, pair<_U1, _U2>&& __in)
23866: : _Inherited(__tag, __a, std::forward<_U1>(__in.first),
23866: std::forward<_U2>(__in.second)) { }
23866:
23866: template<typename _Alloc, typename _U1, typename _U2,
23866: _ExplicitCtor<true, _U1, _U2> = false>
23866: explicit
23866:
23866: tuple(allocator_arg_t __tag, const _Alloc& __a, pair<_U1, _U2>&& __in)
23866: : _Inherited(__tag, __a, std::forward<_U1>(__in.first),
23866: std::forward<_U2>(__in.second)) { }
23866:
23866:
23866:
23866:
23866: tuple&
23866: operator=(typename conditional<__assignable<const _T1&, const _T2&>(),
23866: const tuple&,
23866: const __nonesuch&>::type __in)
23866: noexcept(__nothrow_assignable<const _T1&, const _T2&>())
23866: {
23866: this->_M_assign(__in);
23866: return *this;
23866: }
23866:
23866:
23866: tuple&
23866: operator=(typename conditional<__assignable<_T1, _T2>(),
23866: tuple&&,
23866: __nonesuch&&>::type __in)
23866: noexcept(__nothrow_assignable<_T1, _T2>())
23866: {
23866: this->_M_assign(std::move(__in));
23866: return *this;
23866: }
23866:
23866: template<typename _U1, typename _U2>
23866:
23866: __enable_if_t<__assignable<const _U1&, const _U2&>(), tuple&>
23866: operator=(const tuple<_U1, _U2>& __in)
23866: noexcept(__nothrow_assignable<const _U1&, const _U2&>())
23866: {
23866: this->_M_assign(__in);
23866: return *this;
23866: }
23866:
23866: template<typename _U1, typename _U2>
23866:
23866: __enable_if_t<__assignable<_U1, _U2>(), tuple&>
23866: operator=(tuple<_U1, _U2>&& __in)
23866: noexcept(__nothrow_assignable<_U1, _U2>())
23866: {
23866: this->_M_assign(std::move(__in));
23866: return *this;
23866: }
23866:
23866: template<typename _U1, typename _U2>
23866:
23866: __enable_if_t<__assignable<const _U1&, const _U2&>(), tuple&>
23866: operator=(const pair<_U1, _U2>& __in)
23866: noexcept(__nothrow_assignable<const _U1&, const _U2&>())
23866: {
23866: this->_M_head(*this) = __in.first;
23866: this->_M_tail(*this)._M_head(*this) = __in.second;
23866: return *this;
23866: }
23866:
23866: template<typename _U1, typename _U2>
23866:
23866: __enable_if_t<__assignable<_U1, _U2>(), tuple&>
23866: operator=(pair<_U1, _U2>&& __in)
23866: noexcept(__nothrow_assignable<_U1, _U2>())
23866: {
23866: this->_M_head(*this) = std::forward<_U1>(__in.first);
23866: this->_M_tail(*this)._M_head(*this) = std::forward<_U2>(__in.second);
23866: return *this;
23866: }
23866:
23866:
23866: void
23866: swap(tuple& __in)
23866: noexcept(__and_<__is_nothrow_swappable<_T1>,
23866: __is_nothrow_swappable<_T2>>::value)
23866: { _Inherited::_M_swap(__in); }
23866: };
23866:
23866:
23866:
23866: template<typename... _Elements>
23866: struct tuple_size<tuple<_Elements...>>
23866: : public integral_constant<std::size_t, sizeof...(_Elements)> { };
23866:
23866:
23866: template <typename _Tp>
23866: inline constexpr size_t tuple_size_v = tuple_size<_Tp>::value;
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<std::size_t __i, typename _Head, typename... _Tail>
23866: struct tuple_element<__i, tuple<_Head, _Tail...> >
23866: : tuple_element<__i - 1, tuple<_Tail...> > { };
23866:
23866:
23866:
23866:
23866: template<typename _Head, typename... _Tail>
23866: struct tuple_element<0, tuple<_Head, _Tail...> >
23866: {
23866: typedef _Head type;
23866: };
23866:
23866:
23866:
23866:
23866: template<size_t __i>
23866: struct tuple_element<__i, tuple<>>
23866: {
23866: static_assert(__i < tuple_size<tuple<>>::value,
23866: "tuple index is in range");
23866: };
23866:
23866: template<std::size_t __i, typename _Head, typename... _Tail>
23866: constexpr _Head&
23866: __get_helper(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept
23866: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); }
23866:
23866: template<std::size_t __i, typename _Head, typename... _Tail>
23866: constexpr const _Head&
23866: __get_helper(const _Tuple_impl<__i, _Head, _Tail...>& __t) noexcept
23866: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); }
23866:
23866:
23866: template<std::size_t __i, typename... _Elements>
23866: constexpr __tuple_element_t<__i, tuple<_Elements...>>&
23866: get(tuple<_Elements...>& __t) noexcept
23866: { return std::__get_helper<__i>(__t); }
23866:
23866:
23866: template<std::size_t __i, typename... _Elements>
23866: constexpr const __tuple_element_t<__i, tuple<_Elements...>>&
23866: get(const tuple<_Elements...>& __t) noexcept
23866: { return std::__get_helper<__i>(__t); }
23866:
23866:
23866: template<std::size_t __i, typename... _Elements>
23866: constexpr __tuple_element_t<__i, tuple<_Elements...>>&&
23866: get(tuple<_Elements...>&& __t) noexcept
23866: {
23866: typedef __tuple_element_t<__i, tuple<_Elements...>> __element_type;
23866: return std::forward<__element_type&&>(std::get<__i>(__t));
23866: }
23866:
23866:
23866: template<std::size_t __i, typename... _Elements>
23866: constexpr const __tuple_element_t<__i, tuple<_Elements...>>&&
23866: get(const tuple<_Elements...>&& __t) noexcept
23866: {
23866: typedef __tuple_element_t<__i, tuple<_Elements...>> __element_type;
23866: return std::forward<const __element_type&&>(std::get<__i>(__t));
23866: }
23866:
23866:
23866:
23866: #define __cpp_lib_tuples_by_type 201304
23866:
23866: template<typename _Head, size_t __i, typename... _Tail>
23866: constexpr _Head&
23866: __get_helper2(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept
23866: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); }
23866:
23866: template<typename _Head, size_t __i, typename... _Tail>
23866: constexpr const _Head&
23866: __get_helper2(const _Tuple_impl<__i, _Head, _Tail...>& __t) noexcept
23866: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); }
23866:
23866:
23866: template <typename _Tp, typename... _Types>
23866: constexpr _Tp&
23866: get(tuple<_Types...>& __t) noexcept
23866: { return std::__get_helper2<_Tp>(__t); }
23866:
23866:
23866: template <typename _Tp, typename... _Types>
23866: constexpr _Tp&&
23866: get(tuple<_Types...>&& __t) noexcept
23866: { return std::forward<_Tp&&>(std::__get_helper2<_Tp>(__t)); }
23866:
23866:
23866: template <typename _Tp, typename... _Types>
23866: constexpr const _Tp&
23866: get(const tuple<_Types...>& __t) noexcept
23866: { return std::__get_helper2<_Tp>(__t); }
23866:
23866:
23866:
23866: template <typename _Tp, typename... _Types>
23866: constexpr const _Tp&&
23866: get(const tuple<_Types...>&& __t) noexcept
23866: { return std::forward<const _Tp&&>(std::__get_helper2<_Tp>(__t)); }
23866:
23866:
23866:
23866: template<typename _Tp, typename _Up, size_t __i, size_t __size>
23866: struct __tuple_compare
23866: {
23866: static constexpr bool
23866: __eq(const _Tp& __t, const _Up& __u)
23866: {
23866: return bool(std::get<__i>(__t) == std::get<__i>(__u))
23866: && __tuple_compare<_Tp, _Up, __i + 1, __size>::__eq(__t, __u);
23866: }
23866:
23866: static constexpr bool
23866: __less(const _Tp& __t, const _Up& __u)
23866: {
23866: return bool(std::get<__i>(__t) < std::get<__i>(__u))
23866: || (!bool(std::get<__i>(__u) < std::get<__i>(__t))
23866: && __tuple_compare<_Tp, _Up, __i + 1, __size>::__less(__t, __u));
23866: }
23866: };
23866:
23866: template<typename _Tp, typename _Up, size_t __size>
23866: struct __tuple_compare<_Tp, _Up, __size, __size>
23866: {
23866: static constexpr bool
23866: __eq(const _Tp&, const _Up&) { return true; }
23866:
23866: static constexpr bool
23866: __less(const _Tp&, const _Up&) { return false; }
23866: };
23866:
23866: template<typename... _TElements, typename... _UElements>
23866: constexpr bool
23866: operator==(const tuple<_TElements...>& __t,
23866: const tuple<_UElements...>& __u)
23866: {
23866: static_assert(sizeof...(_TElements) == sizeof...(_UElements),
23866: "tuple objects can only be compared if they have equal sizes.");
23866: using __compare = __tuple_compare<tuple<_TElements...>,
23866: tuple<_UElements...>,
23866: 0, sizeof...(_TElements)>;
23866: return __compare::__eq(__t, __u);
23866: }
23866: # 1433 "/usr/include/c++/10/tuple" 3
23866: template<typename... _TElements, typename... _UElements>
23866: constexpr bool
23866: operator<(const tuple<_TElements...>& __t,
23866: const tuple<_UElements...>& __u)
23866: {
23866: static_assert(sizeof...(_TElements) == sizeof...(_UElements),
23866: "tuple objects can only be compared if they have equal sizes.");
23866: using __compare = __tuple_compare<tuple<_TElements...>,
23866: tuple<_UElements...>,
23866: 0, sizeof...(_TElements)>;
23866: return __compare::__less(__t, __u);
23866: }
23866:
23866: template<typename... _TElements, typename... _UElements>
23866: constexpr bool
23866: operator!=(const tuple<_TElements...>& __t,
23866: const tuple<_UElements...>& __u)
23866: { return !(__t == __u); }
23866:
23866: template<typename... _TElements, typename... _UElements>
23866: constexpr bool
23866: operator>(const tuple<_TElements...>& __t,
23866: const tuple<_UElements...>& __u)
23866: { return __u < __t; }
23866:
23866: template<typename... _TElements, typename... _UElements>
23866: constexpr bool
23866: operator<=(const tuple<_TElements...>& __t,
23866: const tuple<_UElements...>& __u)
23866: { return !(__u < __t); }
23866:
23866: template<typename... _TElements, typename... _UElements>
23866: constexpr bool
23866: operator>=(const tuple<_TElements...>& __t,
23866: const tuple<_UElements...>& __u)
23866: { return !(__t < __u); }
23866:
23866:
23866:
23866: template<typename... _Elements>
23866: constexpr tuple<typename __decay_and_strip<_Elements>::__type...>
23866: make_tuple(_Elements&&... __args)
23866: {
23866: typedef tuple<typename __decay_and_strip<_Elements>::__type...>
23866: __result_type;
23866: return __result_type(std::forward<_Elements>(__args)...);
23866: }
23866:
23866:
23866:
23866:
23866: template<typename... _Elements>
23866: constexpr tuple<_Elements&&...>
23866: forward_as_tuple(_Elements&&... __args) noexcept
23866: { return tuple<_Elements&&...>(std::forward<_Elements>(__args)...); }
23866:
23866: template<size_t, typename, typename, size_t>
23866: struct __make_tuple_impl;
23866:
23866: template<size_t _Idx, typename _Tuple, typename... _Tp, size_t _Nm>
23866: struct __make_tuple_impl<_Idx, tuple<_Tp...>, _Tuple, _Nm>
23866: : __make_tuple_impl<_Idx + 1,
23866: tuple<_Tp..., __tuple_element_t<_Idx, _Tuple>>,
23866: _Tuple, _Nm>
23866: { };
23866:
23866: template<std::size_t _Nm, typename _Tuple, typename... _Tp>
23866: struct __make_tuple_impl<_Nm, tuple<_Tp...>, _Tuple, _Nm>
23866: {
23866: typedef tuple<_Tp...> __type;
23866: };
23866:
23866: template<typename _Tuple>
23866: struct __do_make_tuple
23866: : __make_tuple_impl<0, tuple<>, _Tuple, std::tuple_size<_Tuple>::value>
23866: { };
23866:
23866:
23866: template<typename _Tuple>
23866: struct __make_tuple
23866: : public __do_make_tuple<__remove_cvref_t<_Tuple>>
23866: { };
23866:
23866:
23866: template<typename...>
23866: struct __combine_tuples;
23866:
23866: template<>
23866: struct __combine_tuples<>
23866: {
23866: typedef tuple<> __type;
23866: };
23866:
23866: template<typename... _Ts>
23866: struct __combine_tuples<tuple<_Ts...>>
23866: {
23866: typedef tuple<_Ts...> __type;
23866: };
23866:
23866: template<typename... _T1s, typename... _T2s, typename... _Rem>
23866: struct __combine_tuples<tuple<_T1s...>, tuple<_T2s...>, _Rem...>
23866: {
23866: typedef typename __combine_tuples<tuple<_T1s..., _T2s...>,
23866: _Rem...>::__type __type;
23866: };
23866:
23866:
23866: template<typename... _Tpls>
23866: struct __tuple_cat_result
23866: {
23866: typedef typename __combine_tuples
23866: <typename __make_tuple<_Tpls>::__type...>::__type __type;
23866: };
23866:
23866:
23866:
23866: template<typename...>
23866: struct __make_1st_indices;
23866:
23866: template<>
23866: struct __make_1st_indices<>
23866: {
23866: typedef std::_Index_tuple<> __type;
23866: };
23866:
23866: template<typename _Tp, typename... _Tpls>
23866: struct __make_1st_indices<_Tp, _Tpls...>
23866: {
23866: typedef typename std::_Build_index_tuple<std::tuple_size<
23866: typename std::remove_reference<_Tp>::type>::value>::__type __type;
23866: };
23866:
23866:
23866:
23866:
23866: template<typename _Ret, typename _Indices, typename... _Tpls>
23866: struct __tuple_concater;
23866:
23866: template<typename _Ret, std::size_t... _Is, typename _Tp, typename... _Tpls>
23866: struct __tuple_concater<_Ret, std::_Index_tuple<_Is...>, _Tp, _Tpls...>
23866: {
23866: template<typename... _Us>
23866: static constexpr _Ret
23866: _S_do(_Tp&& __tp, _Tpls&&... __tps, _Us&&... __us)
23866: {
23866: typedef typename __make_1st_indices<_Tpls...>::__type __idx;
23866: typedef __tuple_concater<_Ret, __idx, _Tpls...> __next;
23866: return __next::_S_do(std::forward<_Tpls>(__tps)...,
23866: std::forward<_Us>(__us)...,
23866: std::get<_Is>(std::forward<_Tp>(__tp))...);
23866: }
23866: };
23866:
23866: template<typename _Ret>
23866: struct __tuple_concater<_Ret, std::_Index_tuple<>>
23866: {
23866: template<typename... _Us>
23866: static constexpr _Ret
23866: _S_do(_Us&&... __us)
23866: {
23866: return _Ret(std::forward<_Us>(__us)...);
23866: }
23866: };
23866:
23866:
23866: template<typename... _Tpls, typename = typename
23866: enable_if<__and_<__is_tuple_like<_Tpls>...>::value>::type>
23866: constexpr auto
23866: tuple_cat(_Tpls&&... __tpls)
23866: -> typename __tuple_cat_result<_Tpls...>::__type
23866: {
23866: typedef typename __tuple_cat_result<_Tpls...>::__type __ret;
23866: typedef typename __make_1st_indices<_Tpls...>::__type __idx;
23866: typedef __tuple_concater<__ret, __idx, _Tpls...> __concater;
23866: return __concater::_S_do(std::forward<_Tpls>(__tpls)...);
23866: }
23866:
23866:
23866:
23866:
23866: template<typename... _Elements>
23866: constexpr tuple<_Elements&...>
23866: tie(_Elements&... __args) noexcept
23866: { return tuple<_Elements&...>(__args...); }
23866:
23866:
23866: template<typename... _Elements>
23866:
23866: inline
23866:
23866:
23866: typename enable_if<__and_<__is_swappable<_Elements>...>::value
23866: >::type
23866:
23866:
23866:
23866: swap(tuple<_Elements...>& __x, tuple<_Elements...>& __y)
23866: noexcept(noexcept(__x.swap(__y)))
23866: { __x.swap(__y); }
23866:
23866:
23866: template<typename... _Elements>
23866:
23866: typename enable_if<!__and_<__is_swappable<_Elements>...>::value>::type
23866: swap(tuple<_Elements...>&, tuple<_Elements...>&) = delete;
23866:
23866:
23866:
23866:
23866:
23866:
23866: struct _Swallow_assign
23866: {
23866: template<class _Tp>
23866: constexpr const _Swallow_assign&
23866: operator=(const _Tp&) const
23866: { return *this; }
23866: };
23866:
23866:
23866:
23866: inline constexpr _Swallow_assign ignore{};
23866:
23866:
23866: template<typename... _Types, typename _Alloc>
23866: struct uses_allocator<tuple<_Types...>, _Alloc> : true_type { };
23866: # 1669 "/usr/include/c++/10/tuple" 3
23866: template<class _T1, class _T2>
23866: template<typename... _Args1, typename... _Args2>
23866:
23866: inline
23866: pair<_T1, _T2>::
23866: pair(piecewise_construct_t,
23866: tuple<_Args1...> __first, tuple<_Args2...> __second)
23866: : pair(__first, __second,
23866: typename _Build_index_tuple<sizeof...(_Args1)>::__type(),
23866: typename _Build_index_tuple<sizeof...(_Args2)>::__type())
23866: { }
23866:
23866: template<class _T1, class _T2>
23866: template<typename... _Args1, std::size_t... _Indexes1,
23866: typename... _Args2, std::size_t... _Indexes2>
23866: inline
23866: pair<_T1, _T2>::
23866: pair(tuple<_Args1...>& __tuple1, tuple<_Args2...>& __tuple2,
23866: _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>)
23866: : first(std::forward<_Args1>(std::get<_Indexes1>(__tuple1))...),
23866: second(std::forward<_Args2>(std::get<_Indexes2>(__tuple2))...)
23866: { }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<template<typename...> class _Trait, typename _Tp, typename _Tuple>
23866: inline constexpr bool __unpack_std_tuple = false;
23866:
23866: template<template<typename...> class _Trait, typename _Tp, typename... _Up>
23866: inline constexpr bool __unpack_std_tuple<_Trait, _Tp, tuple<_Up...>>
23866: = _Trait<_Tp, _Up...>::value;
23866:
23866: template<template<typename...> class _Trait, typename _Tp, typename... _Up>
23866: inline constexpr bool __unpack_std_tuple<_Trait, _Tp, tuple<_Up...>&>
23866: = _Trait<_Tp, _Up&...>::value;
23866:
23866: template<template<typename...> class _Trait, typename _Tp, typename... _Up>
23866: inline constexpr bool __unpack_std_tuple<_Trait, _Tp, const tuple<_Up...>>
23866: = _Trait<_Tp, const _Up...>::value;
23866:
23866: template<template<typename...> class _Trait, typename _Tp, typename... _Up>
23866: inline constexpr bool __unpack_std_tuple<_Trait, _Tp, const tuple<_Up...>&>
23866: = _Trait<_Tp, const _Up&...>::value;
23866:
23866: #define __cpp_lib_apply 201603
23866:
23866: template <typename _Fn, typename _Tuple, size_t... _Idx>
23866: constexpr decltype(auto)
23866: __apply_impl(_Fn&& __f, _Tuple&& __t, index_sequence<_Idx...>)
23866: {
23866: return std::__invoke(std::forward<_Fn>(__f),
23866: std::get<_Idx>(std::forward<_Tuple>(__t))...);
23866: }
23866:
23866: template <typename _Fn, typename _Tuple>
23866: constexpr decltype(auto)
23866: apply(_Fn&& __f, _Tuple&& __t)
23866: noexcept(__unpack_std_tuple<is_nothrow_invocable, _Fn, _Tuple>)
23866: {
23866: using _Indices
23866: = make_index_sequence<tuple_size_v<remove_reference_t<_Tuple>>>;
23866: return std::__apply_impl(std::forward<_Fn>(__f),
23866: std::forward<_Tuple>(__t),
23866: _Indices{});
23866: }
23866:
23866: #define __cpp_lib_make_from_tuple 201606
23866:
23866: template <typename _Tp, typename _Tuple, size_t... _Idx>
23866: constexpr _Tp
23866: __make_from_tuple_impl(_Tuple&& __t, index_sequence<_Idx...>)
23866: { return _Tp(std::get<_Idx>(std::forward<_Tuple>(__t))...); }
23866:
23866: template <typename _Tp, typename _Tuple>
23866: constexpr _Tp
23866: make_from_tuple(_Tuple&& __t)
23866: noexcept(__unpack_std_tuple<is_nothrow_constructible, _Tp, _Tuple>)
23866: {
23866: return __make_from_tuple_impl<_Tp>(
23866: std::forward<_Tuple>(__t),
23866: make_index_sequence<tuple_size_v<remove_reference_t<_Tuple>>>{});
23866: }
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 55 "/usr/include/c++/10/functional" 2 3
23866:
23866: # 1 "/usr/include/c++/10/bits/functional_hash.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/functional_hash.h" 3
23866: #define _FUNCTIONAL_HASH_H 1
23866:
23866:
23866: # 34 "/usr/include/c++/10/bits/functional_hash.h" 3
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 49 "/usr/include/c++/10/bits/functional_hash.h" 3
23866: template<typename _Result, typename _Arg>
23866: struct __hash_base
23866: {
23866: typedef _Result result_type [[__deprecated__]];
23866: typedef _Arg argument_type [[__deprecated__]];
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct hash;
23866:
23866: template<typename _Tp, typename = void>
23866: struct __poison_hash
23866: {
23866: static constexpr bool __enable_hash_call = false;
23866: private:
23866:
23866: __poison_hash(__poison_hash&&);
23866: ~__poison_hash();
23866: };
23866:
23866: template<typename _Tp>
23866: struct __poison_hash<_Tp, __void_t<decltype(hash<_Tp>()(declval<_Tp>()))>>
23866: {
23866: static constexpr bool __enable_hash_call = true;
23866: };
23866:
23866:
23866: template<typename _Tp, bool = is_enum<_Tp>::value>
23866: struct __hash_enum
23866: {
23866: private:
23866:
23866: __hash_enum(__hash_enum&&);
23866: ~__hash_enum();
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct __hash_enum<_Tp, true> : public __hash_base<size_t, _Tp>
23866: {
23866: size_t
23866: operator()(_Tp __val) const noexcept
23866: {
23866: using __type = typename underlying_type<_Tp>::type;
23866: return hash<__type>{}(static_cast<__type>(__val));
23866: }
23866: };
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct hash : __hash_enum<_Tp>
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct hash<_Tp*> : public __hash_base<size_t, _Tp*>
23866: {
23866: size_t
23866: operator()(_Tp* __p) const noexcept
23866: { return reinterpret_cast<size_t>(__p); }
23866: };
23866:
23866:
23866: #define _Cxx_hashtable_define_trivial_hash(_Tp) template<> struct hash<_Tp> : public __hash_base<size_t, _Tp> { size_t operator()(_Tp __val) const noexcept { return static_cast<size_t>(__val); } };
23866: # 124 "/usr/include/c++/10/bits/functional_hash.h" 3
23866: template<> struct hash<bool> : public __hash_base<size_t, bool> { size_t operator()(bool __val) const noexcept { return static_cast<size_t>(__val); } };
23866:
23866:
23866: template<> struct hash<char> : public __hash_base<size_t, char> { size_t operator()(char __val) const noexcept { return static_cast<size_t>(__val); } };
23866:
23866:
23866: template<> struct hash<signed char> : public __hash_base<size_t, signed char> { size_t operator()(signed char __val) const noexcept { return static_cast<size_t>(__val); } };
23866:
23866:
23866: template<> struct hash<unsigned char> : public __hash_base<size_t, unsigned char> { size_t operator()(unsigned char __val) const noexcept { return static_cast<size_t>(__val); } };
23866:
23866:
23866: template<> struct hash<wchar_t> : public __hash_base<size_t, wchar_t> { size_t operator()(wchar_t __val) const noexcept { return static_cast<size_t>(__val); } };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<> struct hash<char16_t> : public __hash_base<size_t, char16_t> { size_t operator()(char16_t __val) const noexcept { return static_cast<size_t>(__val); } };
23866:
23866:
23866: template<> struct hash<char32_t> : public __hash_base<size_t, char32_t> { size_t operator()(char32_t __val) const noexcept { return static_cast<size_t>(__val); } };
23866:
23866:
23866: template<> struct hash<short> : public __hash_base<size_t, short> { size_t operator()(short __val) const noexcept { return static_cast<size_t>(__val); } };
23866:
23866:
23866: template<> struct hash<int> : public __hash_base<size_t, int> { size_t operator()(int __val) const noexcept { return static_cast<size_t>(__val); } };
23866:
23866:
23866: template<> struct hash<long> : public __hash_base<size_t, long> { size_t operator()(long __val) const noexcept { return static_cast<size_t>(__val); } };
23866:
23866:
23866: template<> struct hash<long long> : public __hash_base<size_t, long long> { size_t operator()(long long __val) const noexcept { return static_cast<size_t>(__val); } };
23866:
23866:
23866: template<> struct hash<unsigned short> : public __hash_base<size_t, unsigned short> { size_t operator()(unsigned short __val) const noexcept { return static_cast<size_t>(__val); } };
23866:
23866:
23866: template<> struct hash<unsigned int> : public __hash_base<size_t, unsigned int> { size_t operator()(unsigned int __val) const noexcept { return static_cast<size_t>(__val); } };
23866:
23866:
23866: template<> struct hash<unsigned long> : public __hash_base<size_t, unsigned long> { size_t operator()(unsigned long __val) const noexcept { return static_cast<size_t>(__val); } };
23866:
23866:
23866: template<> struct hash<unsigned long long> : public __hash_base<size_t, unsigned long long> { size_t operator()(unsigned long long __val) const noexcept { return static_cast<size_t>(__val); } };
23866: # 190 "/usr/include/c++/10/bits/functional_hash.h" 3
23866: #undef _Cxx_hashtable_define_trivial_hash
23866:
23866: struct _Hash_impl
23866: {
23866: static size_t
23866: hash(const void* __ptr, size_t __clength,
23866: size_t __seed = static_cast<size_t>(0xc70f6907UL))
23866: { return _Hash_bytes(__ptr, __clength, __seed); }
23866:
23866: template<typename _Tp>
23866: static size_t
23866: hash(const _Tp& __val)
23866: { return hash(&__val, sizeof(__val)); }
23866:
23866: template<typename _Tp>
23866: static size_t
23866: __hash_combine(const _Tp& __val, size_t __hash)
23866: { return hash(&__val, sizeof(__val), __hash); }
23866: };
23866:
23866:
23866: struct _Fnv_hash_impl
23866: {
23866: static size_t
23866: hash(const void* __ptr, size_t __clength,
23866: size_t __seed = static_cast<size_t>(2166136261UL))
23866: { return _Fnv_hash_bytes(__ptr, __clength, __seed); }
23866:
23866: template<typename _Tp>
23866: static size_t
23866: hash(const _Tp& __val)
23866: { return hash(&__val, sizeof(__val)); }
23866:
23866: template<typename _Tp>
23866: static size_t
23866: __hash_combine(const _Tp& __val, size_t __hash)
23866: { return hash(&__val, sizeof(__val), __hash); }
23866: };
23866:
23866:
23866: template<>
23866: struct hash<float> : public __hash_base<size_t, float>
23866: {
23866: size_t
23866: operator()(float __val) const noexcept
23866: {
23866:
23866: return __val != 0.0f ? std::_Hash_impl::hash(__val) : 0;
23866: }
23866: };
23866:
23866:
23866: template<>
23866: struct hash<double> : public __hash_base<size_t, double>
23866: {
23866: size_t
23866: operator()(double __val) const noexcept
23866: {
23866:
23866: return __val != 0.0 ? std::_Hash_impl::hash(__val) : 0;
23866: }
23866: };
23866:
23866:
23866: template<>
23866: struct hash<long double>
23866: : public __hash_base<size_t, long double>
23866: {
23866: __attribute__ ((__pure__)) size_t
23866: operator()(long double __val) const noexcept;
23866: };
23866:
23866:
23866: template<>
23866: struct hash<nullptr_t> : public __hash_base<size_t, nullptr_t>
23866: {
23866: size_t
23866: operator()(nullptr_t) const noexcept
23866: { return 0; }
23866: };
23866: # 278 "/usr/include/c++/10/bits/functional_hash.h" 3
23866: template<typename _Hash>
23866: struct __is_fast_hash : public std::true_type
23866: { };
23866:
23866: template<>
23866: struct __is_fast_hash<hash<long double>> : public std::false_type
23866: { };
23866:
23866:
23866: }
23866: # 57 "/usr/include/c++/10/functional" 2 3
23866:
23866: # 1 "/usr/include/c++/10/bits/refwrap.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/refwrap.h" 3
23866: #define _GLIBCXX_REFWRAP_H 1
23866:
23866:
23866: # 34 "/usr/include/c++/10/bits/refwrap.h" 3
23866: # 43 "/usr/include/c++/10/bits/refwrap.h" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 54 "/usr/include/c++/10/bits/refwrap.h" 3
23866: template<typename _Res, typename... _ArgTypes>
23866: struct _Maybe_unary_or_binary_function { };
23866:
23866:
23866: template<typename _Res, typename _T1>
23866: struct _Maybe_unary_or_binary_function<_Res, _T1>
23866: : std::unary_function<_T1, _Res> { };
23866:
23866:
23866: template<typename _Res, typename _T1, typename _T2>
23866: struct _Maybe_unary_or_binary_function<_Res, _T1, _T2>
23866: : std::binary_function<_T1, _T2, _Res> { };
23866:
23866: template<typename _Signature>
23866: struct _Mem_fn_traits;
23866:
23866: template<typename _Res, typename _Class, typename... _ArgTypes>
23866: struct _Mem_fn_traits_base
23866: {
23866: using __result_type = _Res;
23866: using __maybe_type
23866: = _Maybe_unary_or_binary_function<_Res, _Class*, _ArgTypes...>;
23866: using __arity = integral_constant<size_t, sizeof...(_ArgTypes)>;
23866: };
23866:
23866: #define _GLIBCXX_MEM_FN_TRAITS2(_CV,_REF,_LVAL,_RVAL) template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) _CV _REF> : _Mem_fn_traits_base<_Res, _CV _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) _CV _REF> : _Mem_fn_traits_base<_Res, _CV _Class, _ArgTypes...> { using __vararg = true_type; };
23866: # 93 "/usr/include/c++/10/bits/refwrap.h" 3
23866: #define _GLIBCXX_MEM_FN_TRAITS(_REF,_LVAL,_RVAL) _GLIBCXX_MEM_FN_TRAITS2( , _REF, _LVAL, _RVAL) _GLIBCXX_MEM_FN_TRAITS2(const , _REF, _LVAL, _RVAL) _GLIBCXX_MEM_FN_TRAITS2(volatile , _REF, _LVAL, _RVAL) _GLIBCXX_MEM_FN_TRAITS2(const volatile, _REF, _LVAL, _RVAL)
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) > : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) > : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const > : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const > : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile > : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile > : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile > : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile > : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; };
23866: template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) &> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) &> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const &> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const &> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile &> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile &> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile &> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile &> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; };
23866: template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) &&> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) &&> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const &&> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const &&> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile &&> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile &&> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile &&> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile &&> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; };
23866:
23866:
23866: template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) noexcept> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) noexcept> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const noexcept> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const noexcept> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile noexcept> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile noexcept> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile noexcept> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile noexcept> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; };
23866: template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) & noexcept> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) & noexcept> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const & noexcept> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const & noexcept> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile & noexcept> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile & noexcept> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile & noexcept> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile & noexcept> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; };
23866: template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) && noexcept> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) && noexcept> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const && noexcept> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const && noexcept> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile && noexcept> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile && noexcept> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile && noexcept> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile && noexcept> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; };
23866:
23866:
23866: #undef _GLIBCXX_MEM_FN_TRAITS
23866: #undef _GLIBCXX_MEM_FN_TRAITS2
23866:
23866:
23866: template<typename _Functor, typename = __void_t<>>
23866: struct _Maybe_get_result_type
23866: { };
23866:
23866: template<typename _Functor>
23866: struct _Maybe_get_result_type<_Functor,
23866: __void_t<typename _Functor::result_type>>
23866: { typedef typename _Functor::result_type result_type; };
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Functor>
23866: struct _Weak_result_type_impl
23866: : _Maybe_get_result_type<_Functor>
23866: { };
23866:
23866:
23866: template<typename _Res, typename... _ArgTypes , bool _NE>
23866: struct _Weak_result_type_impl<_Res(_ArgTypes...) noexcept (_NE)>
23866: { typedef _Res result_type; };
23866:
23866:
23866: template<typename _Res, typename... _ArgTypes , bool _NE>
23866: struct _Weak_result_type_impl<_Res(_ArgTypes......) noexcept (_NE)>
23866: { typedef _Res result_type; };
23866:
23866:
23866: template<typename _Res, typename... _ArgTypes , bool _NE>
23866: struct _Weak_result_type_impl<_Res(*)(_ArgTypes...) noexcept (_NE)>
23866: { typedef _Res result_type; };
23866:
23866:
23866: template<typename _Res, typename... _ArgTypes , bool _NE>
23866: struct
23866: _Weak_result_type_impl<_Res(*)(_ArgTypes......) noexcept (_NE)>
23866: { typedef _Res result_type; };
23866:
23866:
23866: template<typename _Functor,
23866: bool = is_member_function_pointer<_Functor>::value>
23866: struct _Weak_result_type_memfun
23866: : _Weak_result_type_impl<_Functor>
23866: { };
23866:
23866:
23866: template<typename _MemFunPtr>
23866: struct _Weak_result_type_memfun<_MemFunPtr, true>
23866: {
23866: using result_type = typename _Mem_fn_traits<_MemFunPtr>::__result_type;
23866: };
23866:
23866:
23866: template<typename _Func, typename _Class>
23866: struct _Weak_result_type_memfun<_Func _Class::*, false>
23866: { };
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Functor>
23866: struct _Weak_result_type
23866: : _Weak_result_type_memfun<typename remove_cv<_Functor>::type>
23866: { };
23866:
23866:
23866:
23866: template<typename _Tp, typename = __void_t<>>
23866: struct _Refwrap_base_arg1
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct _Refwrap_base_arg1<_Tp,
23866: __void_t<typename _Tp::argument_type>>
23866: {
23866: typedef typename _Tp::argument_type argument_type;
23866: };
23866:
23866:
23866: template<typename _Tp, typename = __void_t<>>
23866: struct _Refwrap_base_arg2
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct _Refwrap_base_arg2<_Tp,
23866: __void_t<typename _Tp::first_argument_type,
23866: typename _Tp::second_argument_type>>
23866: {
23866: typedef typename _Tp::first_argument_type first_argument_type;
23866: typedef typename _Tp::second_argument_type second_argument_type;
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct _Reference_wrapper_base
23866: : _Weak_result_type<_Tp>, _Refwrap_base_arg1<_Tp>, _Refwrap_base_arg2<_Tp>
23866: { };
23866:
23866:
23866: template<typename _Res, typename _T1 , bool _NE>
23866: struct _Reference_wrapper_base<_Res(_T1) noexcept (_NE)>
23866: : unary_function<_T1, _Res>
23866: { };
23866:
23866: template<typename _Res, typename _T1>
23866: struct _Reference_wrapper_base<_Res(_T1) const>
23866: : unary_function<_T1, _Res>
23866: { };
23866:
23866: template<typename _Res, typename _T1>
23866: struct _Reference_wrapper_base<_Res(_T1) volatile>
23866: : unary_function<_T1, _Res>
23866: { };
23866:
23866: template<typename _Res, typename _T1>
23866: struct _Reference_wrapper_base<_Res(_T1) const volatile>
23866: : unary_function<_T1, _Res>
23866: { };
23866:
23866:
23866: template<typename _Res, typename _T1, typename _T2 , bool _NE>
23866: struct _Reference_wrapper_base<_Res(_T1, _T2) noexcept (_NE)>
23866: : binary_function<_T1, _T2, _Res>
23866: { };
23866:
23866: template<typename _Res, typename _T1, typename _T2>
23866: struct _Reference_wrapper_base<_Res(_T1, _T2) const>
23866: : binary_function<_T1, _T2, _Res>
23866: { };
23866:
23866: template<typename _Res, typename _T1, typename _T2>
23866: struct _Reference_wrapper_base<_Res(_T1, _T2) volatile>
23866: : binary_function<_T1, _T2, _Res>
23866: { };
23866:
23866: template<typename _Res, typename _T1, typename _T2>
23866: struct _Reference_wrapper_base<_Res(_T1, _T2) const volatile>
23866: : binary_function<_T1, _T2, _Res>
23866: { };
23866:
23866:
23866: template<typename _Res, typename _T1 , bool _NE>
23866: struct _Reference_wrapper_base<_Res(*)(_T1) noexcept (_NE)>
23866: : unary_function<_T1, _Res>
23866: { };
23866:
23866:
23866: template<typename _Res, typename _T1, typename _T2 , bool _NE>
23866: struct _Reference_wrapper_base<_Res(*)(_T1, _T2) noexcept (_NE)>
23866: : binary_function<_T1, _T2, _Res>
23866: { };
23866:
23866: template<typename _Tp, bool = is_member_function_pointer<_Tp>::value>
23866: struct _Reference_wrapper_base_memfun
23866: : _Reference_wrapper_base<_Tp>
23866: { };
23866:
23866: template<typename _MemFunPtr>
23866: struct _Reference_wrapper_base_memfun<_MemFunPtr, true>
23866: : _Mem_fn_traits<_MemFunPtr>::__maybe_type
23866: {
23866: using result_type = typename _Mem_fn_traits<_MemFunPtr>::__result_type;
23866: };
23866: # 293 "/usr/include/c++/10/bits/refwrap.h" 3
23866: template<typename _Tp>
23866: class reference_wrapper
23866:
23866:
23866:
23866: : public _Reference_wrapper_base_memfun<typename remove_cv<_Tp>::type>
23866:
23866: {
23866: _Tp* _M_data;
23866:
23866:
23866: static _Tp* _S_fun(_Tp& __r) noexcept { return std::__addressof(__r); }
23866:
23866: static void _S_fun(_Tp&&) = delete;
23866:
23866: template<typename _Up, typename _Up2 = __remove_cvref_t<_Up>>
23866: using __not_same
23866: = typename enable_if<!is_same<reference_wrapper, _Up2>::value>::type;
23866:
23866: public:
23866: typedef _Tp type;
23866:
23866:
23866:
23866:
23866: template<typename _Up, typename = __not_same<_Up>, typename
23866: = decltype(reference_wrapper::_S_fun(std::declval<_Up>()))>
23866:
23866: reference_wrapper(_Up&& __uref)
23866: noexcept(noexcept(reference_wrapper::_S_fun(std::declval<_Up>())))
23866: : _M_data(reference_wrapper::_S_fun(std::forward<_Up>(__uref)))
23866: { }
23866:
23866: reference_wrapper(const reference_wrapper&) = default;
23866:
23866: reference_wrapper&
23866: operator=(const reference_wrapper&) = default;
23866:
23866:
23866: operator _Tp&() const noexcept
23866: { return this->get(); }
23866:
23866:
23866: _Tp&
23866: get() const noexcept
23866: { return *_M_data; }
23866:
23866: template<typename... _Args>
23866:
23866: typename result_of<_Tp&(_Args&&...)>::type
23866: operator()(_Args&&... __args) const
23866: {
23866:
23866:
23866:
23866:
23866: return std::__invoke(get(), std::forward<_Args>(__args)...);
23866: }
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: reference_wrapper(_Tp&) -> reference_wrapper<_Tp>;
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866:
23866: inline reference_wrapper<_Tp>
23866: ref(_Tp& __t) noexcept
23866: { return reference_wrapper<_Tp>(__t); }
23866:
23866:
23866: template<typename _Tp>
23866:
23866: inline reference_wrapper<const _Tp>
23866: cref(const _Tp& __t) noexcept
23866: { return reference_wrapper<const _Tp>(__t); }
23866:
23866: template<typename _Tp>
23866: void ref(const _Tp&&) = delete;
23866:
23866: template<typename _Tp>
23866: void cref(const _Tp&&) = delete;
23866:
23866:
23866: template<typename _Tp>
23866:
23866: inline reference_wrapper<_Tp>
23866: ref(reference_wrapper<_Tp> __t) noexcept
23866: { return __t; }
23866:
23866:
23866: template<typename _Tp>
23866:
23866: inline reference_wrapper<const _Tp>
23866: cref(reference_wrapper<_Tp> __t) noexcept
23866: { return { __t.get() }; }
23866:
23866:
23866:
23866:
23866: }
23866: # 59 "/usr/include/c++/10/functional" 2 3
23866: # 1 "/usr/include/c++/10/bits/std_function.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/std_function.h" 3
23866: #define _GLIBCXX_STD_FUNCTION_H 1
23866:
23866:
23866: # 34 "/usr/include/c++/10/bits/std_function.h" 3
23866: # 47 "/usr/include/c++/10/bits/std_function.h" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: class bad_function_call : public std::exception
23866: {
23866: public:
23866: virtual ~bad_function_call() noexcept;
23866:
23866: const char* what() const noexcept;
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct __is_location_invariant
23866: : is_trivially_copyable<_Tp>::type
23866: { };
23866:
23866: class _Undefined_class;
23866:
23866: union _Nocopy_types
23866: {
23866: void* _M_object;
23866: const void* _M_const_object;
23866: void (*_M_function_pointer)();
23866: void (_Undefined_class::*_M_member_pointer)();
23866: };
23866:
23866: union [[gnu::may_alias]] _Any_data
23866: {
23866: void* _M_access() { return &_M_pod_data[0]; }
23866: const void* _M_access() const { return &_M_pod_data[0]; }
23866:
23866: template<typename _Tp>
23866: _Tp&
23866: _M_access()
23866: { return *static_cast<_Tp*>(_M_access()); }
23866:
23866: template<typename _Tp>
23866: const _Tp&
23866: _M_access() const
23866: { return *static_cast<const _Tp*>(_M_access()); }
23866:
23866: _Nocopy_types _M_unused;
23866: char _M_pod_data[sizeof(_Nocopy_types)];
23866: };
23866:
23866: enum _Manager_operation
23866: {
23866: __get_type_info,
23866: __get_functor_ptr,
23866: __clone_functor,
23866: __destroy_functor
23866: };
23866:
23866: template<typename _Signature>
23866: class function;
23866:
23866:
23866: class _Function_base
23866: {
23866: public:
23866: static const size_t _M_max_size = sizeof(_Nocopy_types);
23866: static const size_t _M_max_align = __alignof__(_Nocopy_types);
23866:
23866: template<typename _Functor>
23866: class _Base_manager
23866: {
23866: protected:
23866: static const bool __stored_locally =
23866: (__is_location_invariant<_Functor>::value
23866: && sizeof(_Functor) <= _M_max_size
23866: && __alignof__(_Functor) <= _M_max_align
23866: && (_M_max_align % __alignof__(_Functor) == 0));
23866:
23866: typedef integral_constant<bool, __stored_locally> _Local_storage;
23866:
23866:
23866: static _Functor*
23866: _M_get_pointer(const _Any_data& __source)
23866: {
23866: if constexpr (__stored_locally)
23866: {
23866: const _Functor& __f = __source._M_access<_Functor>();
23866: return const_cast<_Functor*>(std::__addressof(__f));
23866: }
23866: else
23866: return __source._M_access<_Functor*>();
23866: }
23866:
23866:
23866:
23866: static void
23866: _M_clone(_Any_data& __dest, const _Any_data& __source, true_type)
23866: {
23866: ::new (__dest._M_access()) _Functor(__source._M_access<_Functor>());
23866: }
23866:
23866:
23866:
23866: static void
23866: _M_clone(_Any_data& __dest, const _Any_data& __source, false_type)
23866: {
23866: __dest._M_access<_Functor*>() =
23866: new _Functor(*__source._M_access<const _Functor*>());
23866: }
23866:
23866:
23866:
23866: static void
23866: _M_destroy(_Any_data& __victim, true_type)
23866: {
23866: __victim._M_access<_Functor>().~_Functor();
23866: }
23866:
23866:
23866: static void
23866: _M_destroy(_Any_data& __victim, false_type)
23866: {
23866: delete __victim._M_access<_Functor*>();
23866: }
23866:
23866: public:
23866: static bool
23866: _M_manager(_Any_data& __dest, const _Any_data& __source,
23866: _Manager_operation __op)
23866: {
23866: switch (__op)
23866: {
23866:
23866: case __get_type_info:
23866: __dest._M_access<const type_info*>() = &typeid(_Functor);
23866: break;
23866:
23866: case __get_functor_ptr:
23866: __dest._M_access<_Functor*>() = _M_get_pointer(__source);
23866: break;
23866:
23866: case __clone_functor:
23866: _M_clone(__dest, __source, _Local_storage());
23866: break;
23866:
23866: case __destroy_functor:
23866: _M_destroy(__dest, _Local_storage());
23866: break;
23866: }
23866: return false;
23866: }
23866:
23866: static void
23866: _M_init_functor(_Any_data& __functor, _Functor&& __f)
23866: { _M_init_functor(__functor, std::move(__f), _Local_storage()); }
23866:
23866: template<typename _Signature>
23866: static bool
23866: _M_not_empty_function(const function<_Signature>& __f)
23866: { return static_cast<bool>(__f); }
23866:
23866: template<typename _Tp>
23866: static bool
23866: _M_not_empty_function(_Tp* __fp)
23866: { return __fp != nullptr; }
23866:
23866: template<typename _Class, typename _Tp>
23866: static bool
23866: _M_not_empty_function(_Tp _Class::* __mp)
23866: { return __mp != nullptr; }
23866:
23866: template<typename _Tp>
23866: static bool
23866: _M_not_empty_function(const _Tp&)
23866: { return true; }
23866:
23866: private:
23866: static void
23866: _M_init_functor(_Any_data& __functor, _Functor&& __f, true_type)
23866: { ::new (__functor._M_access()) _Functor(std::move(__f)); }
23866:
23866: static void
23866: _M_init_functor(_Any_data& __functor, _Functor&& __f, false_type)
23866: { __functor._M_access<_Functor*>() = new _Functor(std::move(__f)); }
23866: };
23866:
23866: _Function_base() : _M_manager(nullptr) { }
23866:
23866: ~_Function_base()
23866: {
23866: if (_M_manager)
23866: _M_manager(_M_functor, _M_functor, __destroy_functor);
23866: }
23866:
23866: bool _M_empty() const { return !_M_manager; }
23866:
23866: typedef bool (*_Manager_type)(_Any_data&, const _Any_data&,
23866: _Manager_operation);
23866:
23866: _Any_data _M_functor;
23866: _Manager_type _M_manager;
23866: };
23866:
23866: template<typename _Signature, typename _Functor>
23866: class _Function_handler;
23866:
23866: template<typename _Res, typename _Functor, typename... _ArgTypes>
23866: class _Function_handler<_Res(_ArgTypes...), _Functor>
23866: : public _Function_base::_Base_manager<_Functor>
23866: {
23866: typedef _Function_base::_Base_manager<_Functor> _Base;
23866:
23866: public:
23866: static bool
23866: _M_manager(_Any_data& __dest, const _Any_data& __source,
23866: _Manager_operation __op)
23866: {
23866: switch (__op)
23866: {
23866:
23866: case __get_type_info:
23866: __dest._M_access<const type_info*>() = &typeid(_Functor);
23866: break;
23866:
23866: case __get_functor_ptr:
23866: __dest._M_access<_Functor*>() = _Base::_M_get_pointer(__source);
23866: break;
23866:
23866: default:
23866: _Base::_M_manager(__dest, __source, __op);
23866: }
23866: return false;
23866: }
23866:
23866: static _Res
23866: _M_invoke(const _Any_data& __functor, _ArgTypes&&... __args)
23866: {
23866: return std::__invoke_r<_Res>(*_Base::_M_get_pointer(__functor),
23866: std::forward<_ArgTypes>(__args)...);
23866: }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Res, typename... _ArgTypes>
23866: class function<_Res(_ArgTypes...)>
23866: : public _Maybe_unary_or_binary_function<_Res, _ArgTypes...>,
23866: private _Function_base
23866: {
23866: template<typename _Func,
23866: typename _Res2 = __invoke_result<_Func&, _ArgTypes...>>
23866: struct _Callable
23866: : __is_invocable_impl<_Res2, _Res>::type
23866: { };
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct _Callable<function, _Tp> : false_type { };
23866:
23866: template<typename _Cond, typename _Tp>
23866: using _Requires = typename enable_if<_Cond::value, _Tp>::type;
23866:
23866: public:
23866: typedef _Res result_type;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: function() noexcept
23866: : _Function_base() { }
23866:
23866:
23866:
23866:
23866:
23866: function(nullptr_t) noexcept
23866: : _Function_base() { }
23866: # 348 "/usr/include/c++/10/bits/std_function.h" 3
23866: function(const function& __x);
23866: # 357 "/usr/include/c++/10/bits/std_function.h" 3
23866: function(function&& __x) noexcept : _Function_base()
23866: {
23866: __x.swap(*this);
23866: }
23866: # 378 "/usr/include/c++/10/bits/std_function.h" 3
23866: template<typename _Functor,
23866: typename = _Requires<__not_<is_same<_Functor, function>>, void>,
23866: typename = _Requires<_Callable<_Functor>, void>>
23866: function(_Functor);
23866: # 395 "/usr/include/c++/10/bits/std_function.h" 3
23866: function&
23866: operator=(const function& __x)
23866: {
23866: function(__x).swap(*this);
23866: return *this;
23866: }
23866: # 413 "/usr/include/c++/10/bits/std_function.h" 3
23866: function&
23866: operator=(function&& __x) noexcept
23866: {
23866: function(std::move(__x)).swap(*this);
23866: return *this;
23866: }
23866: # 427 "/usr/include/c++/10/bits/std_function.h" 3
23866: function&
23866: operator=(nullptr_t) noexcept
23866: {
23866: if (_M_manager)
23866: {
23866: _M_manager(_M_functor, _M_functor, __destroy_functor);
23866: _M_manager = nullptr;
23866: _M_invoker = nullptr;
23866: }
23866: return *this;
23866: }
23866: # 455 "/usr/include/c++/10/bits/std_function.h" 3
23866: template<typename _Functor>
23866: _Requires<_Callable<typename decay<_Functor>::type>, function&>
23866: operator=(_Functor&& __f)
23866: {
23866: function(std::forward<_Functor>(__f)).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: template<typename _Functor>
23866: function&
23866: operator=(reference_wrapper<_Functor> __f) noexcept
23866: {
23866: function(__f).swap(*this);
23866: return *this;
23866: }
23866: # 481 "/usr/include/c++/10/bits/std_function.h" 3
23866: void swap(function& __x) noexcept
23866: {
23866: std::swap(_M_functor, __x._M_functor);
23866: std::swap(_M_manager, __x._M_manager);
23866: std::swap(_M_invoker, __x._M_invoker);
23866: }
23866: # 498 "/usr/include/c++/10/bits/std_function.h" 3
23866: explicit operator bool() const noexcept
23866: { return !_M_empty(); }
23866: # 511 "/usr/include/c++/10/bits/std_function.h" 3
23866: _Res operator()(_ArgTypes... __args) const;
23866: # 524 "/usr/include/c++/10/bits/std_function.h" 3
23866: const type_info& target_type() const noexcept;
23866: # 537 "/usr/include/c++/10/bits/std_function.h" 3
23866: template<typename _Functor> _Functor* target() noexcept;
23866:
23866: template<typename _Functor> const _Functor* target() const noexcept;
23866:
23866:
23866:
23866: private:
23866: using _Invoker_type = _Res (*)(const _Any_data&, _ArgTypes&&...);
23866: _Invoker_type _M_invoker;
23866: };
23866:
23866:
23866: template<typename>
23866: struct __function_guide_helper
23866: { };
23866:
23866: template<typename _Res, typename _Tp, bool _Nx, typename... _Args>
23866: struct __function_guide_helper<
23866: _Res (_Tp::*) (_Args...) noexcept(_Nx)
23866: >
23866: { using type = _Res(_Args...); };
23866:
23866: template<typename _Res, typename _Tp, bool _Nx, typename... _Args>
23866: struct __function_guide_helper<
23866: _Res (_Tp::*) (_Args...) & noexcept(_Nx)
23866: >
23866: { using type = _Res(_Args...); };
23866:
23866: template<typename _Res, typename _Tp, bool _Nx, typename... _Args>
23866: struct __function_guide_helper<
23866: _Res (_Tp::*) (_Args...) const noexcept(_Nx)
23866: >
23866: { using type = _Res(_Args...); };
23866:
23866: template<typename _Res, typename _Tp, bool _Nx, typename... _Args>
23866: struct __function_guide_helper<
23866: _Res (_Tp::*) (_Args...) const & noexcept(_Nx)
23866: >
23866: { using type = _Res(_Args...); };
23866:
23866: template<typename _Res, typename... _ArgTypes>
23866: function(_Res(*)(_ArgTypes...)) -> function<_Res(_ArgTypes...)>;
23866:
23866: template<typename _Functor, typename _Signature = typename
23866: __function_guide_helper<decltype(&_Functor::operator())>::type>
23866: function(_Functor) -> function<_Signature>;
23866:
23866:
23866:
23866: template<typename _Res, typename... _ArgTypes>
23866: function<_Res(_ArgTypes...)>::
23866: function(const function& __x)
23866: : _Function_base()
23866: {
23866: if (static_cast<bool>(__x))
23866: {
23866: __x._M_manager(_M_functor, __x._M_functor, __clone_functor);
23866: _M_invoker = __x._M_invoker;
23866: _M_manager = __x._M_manager;
23866: }
23866: }
23866:
23866: template<typename _Res, typename... _ArgTypes>
23866: template<typename _Functor, typename, typename>
23866: function<_Res(_ArgTypes...)>::
23866: function(_Functor __f)
23866: : _Function_base()
23866: {
23866: typedef _Function_handler<_Res(_ArgTypes...), _Functor> _My_handler;
23866:
23866: if (_My_handler::_M_not_empty_function(__f))
23866: {
23866: _My_handler::_M_init_functor(_M_functor, std::move(__f));
23866: _M_invoker = &_My_handler::_M_invoke;
23866: _M_manager = &_My_handler::_M_manager;
23866: }
23866: }
23866:
23866: template<typename _Res, typename... _ArgTypes>
23866: _Res
23866: function<_Res(_ArgTypes...)>::
23866: operator()(_ArgTypes... __args) const
23866: {
23866: if (_M_empty())
23866: __throw_bad_function_call();
23866: return _M_invoker(_M_functor, std::forward<_ArgTypes>(__args)...);
23866: }
23866:
23866:
23866: template<typename _Res, typename... _ArgTypes>
23866: const type_info&
23866: function<_Res(_ArgTypes...)>::
23866: target_type() const noexcept
23866: {
23866: if (_M_manager)
23866: {
23866: _Any_data __typeinfo_result;
23866: _M_manager(__typeinfo_result, _M_functor, __get_type_info);
23866: return *__typeinfo_result._M_access<const type_info*>();
23866: }
23866: else
23866: return typeid(void);
23866: }
23866:
23866: template<typename _Res, typename... _ArgTypes>
23866: template<typename _Functor>
23866: _Functor*
23866: function<_Res(_ArgTypes...)>::
23866: target() noexcept
23866: {
23866: const function* __const_this = this;
23866: const _Functor* __func = __const_this->template target<_Functor>();
23866: return const_cast<_Functor*>(__func);
23866: }
23866:
23866: template<typename _Res, typename... _ArgTypes>
23866: template<typename _Functor>
23866: const _Functor*
23866: function<_Res(_ArgTypes...)>::
23866: target() const noexcept
23866: {
23866: if (typeid(_Functor) == target_type() && _M_manager)
23866: {
23866: _Any_data __ptr;
23866: _M_manager(__ptr, _M_functor, __get_functor_ptr);
23866: return __ptr._M_access<const _Functor*>();
23866: }
23866: else
23866: return nullptr;
23866: }
23866: # 678 "/usr/include/c++/10/bits/std_function.h" 3
23866: template<typename _Res, typename... _Args>
23866: inline bool
23866: operator==(const function<_Res(_Args...)>& __f, nullptr_t) noexcept
23866: { return !static_cast<bool>(__f); }
23866:
23866:
23866:
23866: template<typename _Res, typename... _Args>
23866: inline bool
23866: operator==(nullptr_t, const function<_Res(_Args...)>& __f) noexcept
23866: { return !static_cast<bool>(__f); }
23866: # 697 "/usr/include/c++/10/bits/std_function.h" 3
23866: template<typename _Res, typename... _Args>
23866: inline bool
23866: operator!=(const function<_Res(_Args...)>& __f, nullptr_t) noexcept
23866: { return static_cast<bool>(__f); }
23866:
23866:
23866: template<typename _Res, typename... _Args>
23866: inline bool
23866: operator!=(nullptr_t, const function<_Res(_Args...)>& __f) noexcept
23866: { return static_cast<bool>(__f); }
23866: # 718 "/usr/include/c++/10/bits/std_function.h" 3
23866: template<typename _Res, typename... _Args>
23866: inline void
23866: swap(function<_Res(_Args...)>& __x, function<_Res(_Args...)>& __y) noexcept
23866: { __x.swap(__y); }
23866:
23866:
23866: namespace __detail::__variant
23866: {
23866: template<typename> struct _Never_valueless_alt;
23866:
23866:
23866:
23866: template<typename _Signature>
23866: struct _Never_valueless_alt<std::function<_Signature>>
23866: : std::true_type
23866: { };
23866: }
23866:
23866:
23866:
23866: }
23866: # 60 "/usr/include/c++/10/functional" 2 3
23866:
23866: # 1 "/usr/include/c++/10/unordered_map" 1 3
23866: # 30 "/usr/include/c++/10/unordered_map" 3
23866: #define _GLIBCXX_UNORDERED_MAP 1
23866:
23866:
23866: # 33 "/usr/include/c++/10/unordered_map" 3
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/allocator.h" 1 3
23866: # 44 "/usr/include/c++/10/bits/allocator.h" 3
23866: #define _ALLOCATOR_H 1
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++allocator.h" 1 3
23866: # 31 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++allocator.h" 3
23866: #define _GLIBCXX_CXX_ALLOCATOR_H 1
23866:
23866: # 1 "/usr/include/c++/10/ext/new_allocator.h" 1 3
23866: # 30 "/usr/include/c++/10/ext/new_allocator.h" 3
23866: #define _NEW_ALLOCATOR_H 1
23866: # 40 "/usr/include/c++/10/ext/new_allocator.h" 3
23866: namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 54 "/usr/include/c++/10/ext/new_allocator.h" 3
23866: template<typename _Tp>
23866: class new_allocator
23866: {
23866: public:
23866: typedef _Tp value_type;
23866: typedef std::size_t size_type;
23866: typedef std::ptrdiff_t difference_type;
23866:
23866: typedef _Tp* pointer;
23866: typedef const _Tp* const_pointer;
23866: typedef _Tp& reference;
23866: typedef const _Tp& const_reference;
23866:
23866: template<typename _Tp1>
23866: struct rebind
23866: { typedef new_allocator<_Tp1> other; };
23866:
23866:
23866:
23866:
23866:
23866: typedef std::true_type propagate_on_container_move_assignment;
23866:
23866:
23866:
23866: new_allocator() noexcept { }
23866:
23866:
23866: new_allocator(const new_allocator&) noexcept { }
23866:
23866: template<typename _Tp1>
23866:
23866: new_allocator(const new_allocator<_Tp1>&) noexcept { }
23866:
23866:
23866: ~new_allocator() noexcept { }
23866:
23866: pointer
23866: address(reference __x) const noexcept
23866: { return std::__addressof(__x); }
23866:
23866: const_pointer
23866: address(const_reference __x) const noexcept
23866: { return std::__addressof(__x); }
23866:
23866:
23866:
23866:
23866: [[__nodiscard__]] _Tp*
23866: allocate(size_type __n, const void* = static_cast<const void*>(0))
23866: {
23866: if (__n > this->_M_max_size())
23866: std::__throw_bad_alloc();
23866:
23866:
23866: if (alignof(_Tp) > 8)
23866: {
23866: std::align_val_t __al = std::align_val_t(alignof(_Tp));
23866: return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp), __al));
23866: }
23866:
23866: return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp)));
23866: }
23866:
23866:
23866: void
23866: deallocate(_Tp* __p, size_type __t)
23866: {
23866:
23866: if (alignof(_Tp) > 8)
23866: {
23866: ::operator delete(__p,
23866:
23866: __t * sizeof(_Tp),
23866:
23866: std::align_val_t(alignof(_Tp)));
23866: return;
23866: }
23866:
23866: ::operator delete(__p
23866:
23866: , __t * sizeof(_Tp)
23866:
23866: );
23866: }
23866:
23866:
23866: size_type
23866: max_size() const noexcept
23866: { return _M_max_size(); }
23866:
23866:
23866: template<typename _Up, typename... _Args>
23866: void
23866: construct(_Up* __p, _Args&&... __args)
23866: noexcept(std::is_nothrow_constructible<_Up, _Args...>::value)
23866: { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); }
23866:
23866: template<typename _Up>
23866: void
23866: destroy(_Up* __p)
23866: noexcept(std::is_nothrow_destructible<_Up>::value)
23866: { __p->~_Up(); }
23866: # 169 "/usr/include/c++/10/ext/new_allocator.h" 3
23866: template<typename _Up>
23866: friend bool
23866: operator==(const new_allocator&, const new_allocator<_Up>&)
23866: noexcept
23866: { return true; }
23866:
23866:
23866: template<typename _Up>
23866: friend bool
23866: operator!=(const new_allocator&, const new_allocator<_Up>&)
23866: noexcept
23866: { return false; }
23866:
23866:
23866: private:
23866: constexpr size_type
23866: _M_max_size() const noexcept
23866: {
23866:
23866: return std::size_t(0x7fffffff) / sizeof(_Tp);
23866:
23866:
23866:
23866: }
23866: };
23866:
23866:
23866: }
23866: # 34 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++allocator.h" 2 3
23866:
23866:
23866: namespace std
23866: {
23866: # 47 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++allocator.h" 3
23866: template<typename _Tp>
23866: using __allocator_base = __gnu_cxx::new_allocator<_Tp>;
23866: }
23866: # 47 "/usr/include/c++/10/bits/allocator.h" 2 3
23866: # 1 "/usr/include/c++/10/bits/memoryfwd.h" 1 3
23866: # 44 "/usr/include/c++/10/bits/memoryfwd.h" 3
23866: #define _MEMORYFWD_H 1
23866:
23866:
23866: # 47 "/usr/include/c++/10/bits/memoryfwd.h" 3
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 63 "/usr/include/c++/10/bits/memoryfwd.h" 3
23866: template<typename>
23866: class allocator;
23866:
23866:
23866: template<>
23866: class allocator<void>;
23866:
23866:
23866:
23866:
23866: template<typename, typename>
23866: struct uses_allocator;
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 48 "/usr/include/c++/10/bits/allocator.h" 2 3
23866:
23866:
23866:
23866:
23866: #define __cpp_lib_incomplete_container_elements 201505
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<>
23866: class allocator<void>
23866: {
23866: public:
23866: typedef void value_type;
23866: typedef size_t size_type;
23866: typedef ptrdiff_t difference_type;
23866:
23866: typedef void* pointer;
23866: typedef const void* const_pointer;
23866:
23866: template<typename _Tp1>
23866: struct rebind
23866: { typedef allocator<_Tp1> other; };
23866: # 89 "/usr/include/c++/10/bits/allocator.h" 3
23866: typedef true_type propagate_on_container_move_assignment;
23866:
23866: typedef true_type is_always_equal;
23866:
23866: template<typename _Up, typename... _Args>
23866: void
23866: construct(_Up* __p, _Args&&... __args)
23866: noexcept(std::is_nothrow_constructible<_Up, _Args...>::value)
23866: { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); }
23866:
23866: template<typename _Up>
23866: void
23866: destroy(_Up* __p)
23866: noexcept(std::is_nothrow_destructible<_Up>::value)
23866: { __p->~_Up(); }
23866:
23866: };
23866: # 115 "/usr/include/c++/10/bits/allocator.h" 3
23866: template<typename _Tp>
23866: class allocator : public __allocator_base<_Tp>
23866: {
23866: public:
23866: typedef _Tp value_type;
23866: typedef size_t size_type;
23866: typedef ptrdiff_t difference_type;
23866:
23866: typedef _Tp* pointer;
23866: typedef const _Tp* const_pointer;
23866: typedef _Tp& reference;
23866: typedef const _Tp& const_reference;
23866:
23866: template<typename _Tp1>
23866: struct rebind
23866: { typedef allocator<_Tp1> other; };
23866:
23866:
23866:
23866:
23866:
23866: typedef true_type propagate_on_container_move_assignment;
23866:
23866: typedef true_type is_always_equal;
23866:
23866:
23866:
23866:
23866:
23866: allocator() noexcept { }
23866:
23866:
23866: allocator(const allocator& __a) noexcept
23866: : __allocator_base<_Tp>(__a) { }
23866:
23866:
23866:
23866: allocator& operator=(const allocator&) = default;
23866:
23866:
23866: template<typename _Tp1>
23866:
23866: allocator(const allocator<_Tp1>&) noexcept { }
23866:
23866:
23866:
23866:
23866: ~allocator() noexcept { }
23866: # 191 "/usr/include/c++/10/bits/allocator.h" 3
23866: friend bool
23866: operator==(const allocator&, const allocator&) noexcept
23866: { return true; }
23866:
23866:
23866: friend bool
23866: operator!=(const allocator&, const allocator&) noexcept
23866: { return false; }
23866:
23866:
23866:
23866: };
23866:
23866: template<typename _T1, typename _T2>
23866: inline bool
23866: operator==(const allocator<_T1>&, const allocator<_T2>&)
23866: noexcept
23866: { return true; }
23866:
23866:
23866: template<typename _T1, typename _T2>
23866: inline bool
23866: operator!=(const allocator<_T1>&, const allocator<_T2>&)
23866: noexcept
23866: { return false; }
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: class allocator<const _Tp>
23866: {
23866: public:
23866: typedef _Tp value_type;
23866: template<typename _Up> allocator(const allocator<_Up>&) { }
23866: };
23866:
23866: template<typename _Tp>
23866: class allocator<volatile _Tp>
23866: {
23866: public:
23866: typedef _Tp value_type;
23866: template<typename _Up> allocator(const allocator<_Up>&) { }
23866: };
23866:
23866: template<typename _Tp>
23866: class allocator<const volatile _Tp>
23866: {
23866: public:
23866: typedef _Tp value_type;
23866: template<typename _Up> allocator(const allocator<_Up>&) { }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern template class allocator<char>;
23866: extern template class allocator<wchar_t>;
23866:
23866:
23866:
23866: #undef __allocator_base
23866:
23866:
23866: template<typename _Alloc, bool = __is_empty(_Alloc)>
23866: struct __alloc_swap
23866: { static void _S_do_it(_Alloc&, _Alloc&) noexcept { } };
23866:
23866: template<typename _Alloc>
23866: struct __alloc_swap<_Alloc, false>
23866: {
23866: static void
23866: _S_do_it(_Alloc& __one, _Alloc& __two) noexcept
23866: {
23866:
23866: if (__one != __two)
23866: swap(__one, __two);
23866: }
23866: };
23866:
23866:
23866: template<typename _Alloc, bool = __is_empty(_Alloc)>
23866: struct __alloc_neq
23866: {
23866: static bool
23866: _S_do_it(const _Alloc&, const _Alloc&)
23866: { return false; }
23866: };
23866:
23866: template<typename _Alloc>
23866: struct __alloc_neq<_Alloc, false>
23866: {
23866: static bool
23866: _S_do_it(const _Alloc& __one, const _Alloc& __two)
23866: { return __one != __two; }
23866: };
23866:
23866:
23866: template<typename _Tp, bool
23866: = __or_<is_copy_constructible<typename _Tp::value_type>,
23866: is_nothrow_move_constructible<typename _Tp::value_type>>::value>
23866: struct __shrink_to_fit_aux
23866: { static bool _S_do_it(_Tp&) noexcept { return false; } };
23866:
23866: template<typename _Tp>
23866: struct __shrink_to_fit_aux<_Tp, true>
23866: {
23866: static bool
23866: _S_do_it(_Tp& __c) noexcept
23866: {
23866:
23866: try
23866: {
23866: _Tp(__make_move_if_noexcept_iterator(__c.begin()),
23866: __make_move_if_noexcept_iterator(__c.end()),
23866: __c.get_allocator()).swap(__c);
23866: return true;
23866: }
23866: catch(...)
23866: { return false; }
23866:
23866:
23866:
23866: }
23866: };
23866:
23866:
23866:
23866: }
23866: # 41 "/usr/include/c++/10/unordered_map" 2 3
23866: # 1 "/usr/include/c++/10/ext/alloc_traits.h" 1 3
23866: # 30 "/usr/include/c++/10/ext/alloc_traits.h" 3
23866: #define _EXT_ALLOC_TRAITS_H 1
23866:
23866:
23866: # 33 "/usr/include/c++/10/ext/alloc_traits.h" 3
23866:
23866: # 1 "/usr/include/c++/10/bits/alloc_traits.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/alloc_traits.h" 3
23866: #define _ALLOC_TRAITS_H 1
23866: # 41 "/usr/include/c++/10/bits/alloc_traits.h" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: #define __cpp_lib_allocator_traits_is_always_equal 201411
23866:
23866: struct __allocator_traits_base
23866: {
23866: template<typename _Tp, typename _Up, typename = void>
23866: struct __rebind : __replace_first_arg<_Tp, _Up> { };
23866:
23866: template<typename _Tp, typename _Up>
23866: struct __rebind<_Tp, _Up,
23866: __void_t<typename _Tp::template rebind<_Up>::other>>
23866: { using type = typename _Tp::template rebind<_Up>::other; };
23866:
23866: protected:
23866: template<typename _Tp>
23866: using __pointer = typename _Tp::pointer;
23866: template<typename _Tp>
23866: using __c_pointer = typename _Tp::const_pointer;
23866: template<typename _Tp>
23866: using __v_pointer = typename _Tp::void_pointer;
23866: template<typename _Tp>
23866: using __cv_pointer = typename _Tp::const_void_pointer;
23866: template<typename _Tp>
23866: using __pocca = typename _Tp::propagate_on_container_copy_assignment;
23866: template<typename _Tp>
23866: using __pocma = typename _Tp::propagate_on_container_move_assignment;
23866: template<typename _Tp>
23866: using __pocs = typename _Tp::propagate_on_container_swap;
23866: template<typename _Tp>
23866: using __equal = typename _Tp::is_always_equal;
23866: };
23866:
23866: template<typename _Alloc, typename _Up>
23866: using __alloc_rebind
23866: = typename __allocator_traits_base::template __rebind<_Alloc, _Up>::type;
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Alloc>
23866: struct allocator_traits : __allocator_traits_base
23866: {
23866:
23866: typedef _Alloc allocator_type;
23866:
23866: typedef typename _Alloc::value_type value_type;
23866:
23866:
23866:
23866:
23866:
23866:
23866: using pointer = __detected_or_t<value_type*, __pointer, _Alloc>;
23866:
23866: private:
23866:
23866: template<template<typename> class _Func, typename _Tp, typename = void>
23866: struct _Ptr
23866: {
23866: using type = typename pointer_traits<pointer>::template rebind<_Tp>;
23866: };
23866:
23866: template<template<typename> class _Func, typename _Tp>
23866: struct _Ptr<_Func, _Tp, __void_t<_Func<_Alloc>>>
23866: {
23866: using type = _Func<_Alloc>;
23866: };
23866:
23866:
23866: template<typename _A2, typename _PtrT, typename = void>
23866: struct _Diff
23866: { using type = typename pointer_traits<_PtrT>::difference_type; };
23866:
23866: template<typename _A2, typename _PtrT>
23866: struct _Diff<_A2, _PtrT, __void_t<typename _A2::difference_type>>
23866: { using type = typename _A2::difference_type; };
23866:
23866:
23866: template<typename _A2, typename _DiffT, typename = void>
23866: struct _Size : make_unsigned<_DiffT> { };
23866:
23866: template<typename _A2, typename _DiffT>
23866: struct _Size<_A2, _DiffT, __void_t<typename _A2::size_type>>
23866: { using type = typename _A2::size_type; };
23866:
23866: public:
23866:
23866:
23866:
23866:
23866:
23866:
23866: using const_pointer = typename _Ptr<__c_pointer, const value_type>::type;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: using void_pointer = typename _Ptr<__v_pointer, void>::type;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: using const_void_pointer = typename _Ptr<__cv_pointer, const void>::type;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: using difference_type = typename _Diff<_Alloc, pointer>::type;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: using size_type = typename _Size<_Alloc, difference_type>::type;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: using propagate_on_container_copy_assignment
23866: = __detected_or_t<false_type, __pocca, _Alloc>;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: using propagate_on_container_move_assignment
23866: = __detected_or_t<false_type, __pocma, _Alloc>;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: using propagate_on_container_swap
23866: = __detected_or_t<false_type, __pocs, _Alloc>;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: using is_always_equal
23866: = __detected_or_t<typename is_empty<_Alloc>::type, __equal, _Alloc>;
23866:
23866: template<typename _Tp>
23866: using rebind_alloc = __alloc_rebind<_Alloc, _Tp>;
23866: template<typename _Tp>
23866: using rebind_traits = allocator_traits<rebind_alloc<_Tp>>;
23866:
23866: private:
23866: template<typename _Alloc2>
23866: static constexpr auto
23866: _S_allocate(_Alloc2& __a, size_type __n, const_void_pointer __hint, int)
23866: -> decltype(__a.allocate(__n, __hint))
23866: { return __a.allocate(__n, __hint); }
23866:
23866: template<typename _Alloc2>
23866: static constexpr pointer
23866: _S_allocate(_Alloc2& __a, size_type __n, const_void_pointer, ...)
23866: { return __a.allocate(__n); }
23866:
23866: template<typename _Tp, typename... _Args>
23866: struct __construct_helper
23866: {
23866: template<typename _Alloc2,
23866: typename = decltype(std::declval<_Alloc2*>()->construct(
23866: std::declval<_Tp*>(), std::declval<_Args>()...))>
23866: static true_type __test(int);
23866:
23866: template<typename>
23866: static false_type __test(...);
23866:
23866: using type = decltype(__test<_Alloc>(0));
23866: };
23866:
23866: template<typename _Tp, typename... _Args>
23866: using __has_construct
23866: = typename __construct_helper<_Tp, _Args...>::type;
23866:
23866: template<typename _Tp, typename... _Args>
23866: static constexpr _Require<__has_construct<_Tp, _Args...>>
23866: _S_construct(_Alloc& __a, _Tp* __p, _Args&&... __args)
23866: noexcept(noexcept(__a.construct(__p, std::forward<_Args>(__args)...)))
23866: { __a.construct(__p, std::forward<_Args>(__args)...); }
23866:
23866: template<typename _Tp, typename... _Args>
23866: static constexpr
23866: _Require<__and_<__not_<__has_construct<_Tp, _Args...>>,
23866: is_constructible<_Tp, _Args...>>>
23866: _S_construct(_Alloc&, _Tp* __p, _Args&&... __args)
23866: noexcept(std::is_nothrow_constructible<_Tp, _Args...>::value)
23866: {
23866:
23866: ::new((void*)__p) _Tp(std::forward<_Args>(__args)...);
23866:
23866:
23866:
23866: }
23866:
23866: template<typename _Alloc2, typename _Tp>
23866: static constexpr auto
23866: _S_destroy(_Alloc2& __a, _Tp* __p, int)
23866: noexcept(noexcept(__a.destroy(__p)))
23866: -> decltype(__a.destroy(__p))
23866: { __a.destroy(__p); }
23866:
23866: template<typename _Alloc2, typename _Tp>
23866: static constexpr void
23866: _S_destroy(_Alloc2&, _Tp* __p, ...)
23866: noexcept(std::is_nothrow_destructible<_Tp>::value)
23866: { std::_Destroy(__p); }
23866:
23866: template<typename _Alloc2>
23866: static constexpr auto
23866: _S_max_size(_Alloc2& __a, int)
23866: -> decltype(__a.max_size())
23866: { return __a.max_size(); }
23866:
23866: template<typename _Alloc2>
23866: static constexpr size_type
23866: _S_max_size(_Alloc2&, ...)
23866: {
23866:
23866:
23866: return __gnu_cxx::__numeric_traits<size_type>::__max
23866: / sizeof(value_type);
23866: }
23866:
23866: template<typename _Alloc2>
23866: static constexpr auto
23866: _S_select(_Alloc2& __a, int)
23866: -> decltype(__a.select_on_container_copy_construction())
23866: { return __a.select_on_container_copy_construction(); }
23866:
23866: template<typename _Alloc2>
23866: static constexpr _Alloc2
23866: _S_select(_Alloc2& __a, ...)
23866: { return __a; }
23866:
23866: public:
23866: # 312 "/usr/include/c++/10/bits/alloc_traits.h" 3
23866: [[__nodiscard__]] static pointer
23866: allocate(_Alloc& __a, size_type __n)
23866: { return __a.allocate(__n); }
23866: # 327 "/usr/include/c++/10/bits/alloc_traits.h" 3
23866: [[__nodiscard__]] static pointer
23866: allocate(_Alloc& __a, size_type __n, const_void_pointer __hint)
23866: { return _S_allocate(__a, __n, __hint, 0); }
23866: # 339 "/usr/include/c++/10/bits/alloc_traits.h" 3
23866: static void
23866: deallocate(_Alloc& __a, pointer __p, size_type __n)
23866: { __a.deallocate(__p, __n); }
23866: # 354 "/usr/include/c++/10/bits/alloc_traits.h" 3
23866: template<typename _Tp, typename... _Args>
23866: static auto
23866: construct(_Alloc& __a, _Tp* __p, _Args&&... __args)
23866: noexcept(noexcept(_S_construct(__a, __p,
23866: std::forward<_Args>(__args)...)))
23866: -> decltype(_S_construct(__a, __p, std::forward<_Args>(__args)...))
23866: { _S_construct(__a, __p, std::forward<_Args>(__args)...); }
23866: # 370 "/usr/include/c++/10/bits/alloc_traits.h" 3
23866: template<typename _Tp>
23866: static void
23866: destroy(_Alloc& __a, _Tp* __p)
23866: noexcept(noexcept(_S_destroy(__a, __p, 0)))
23866: { _S_destroy(__a, __p, 0); }
23866: # 384 "/usr/include/c++/10/bits/alloc_traits.h" 3
23866: static size_type
23866: max_size(const _Alloc& __a) noexcept
23866: { return _S_max_size(__a, 0); }
23866: # 396 "/usr/include/c++/10/bits/alloc_traits.h" 3
23866: static _Alloc
23866: select_on_container_copy_construction(const _Alloc& __rhs)
23866: { return _S_select(__rhs, 0); }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct allocator_traits<allocator<_Tp>>
23866: {
23866:
23866: using allocator_type = allocator<_Tp>;
23866:
23866:
23866: using value_type = _Tp;
23866:
23866:
23866: using pointer = _Tp*;
23866:
23866:
23866: using const_pointer = const _Tp*;
23866:
23866:
23866: using void_pointer = void*;
23866:
23866:
23866: using const_void_pointer = const void*;
23866:
23866:
23866: using difference_type = std::ptrdiff_t;
23866:
23866:
23866: using size_type = std::size_t;
23866:
23866:
23866: using propagate_on_container_copy_assignment = false_type;
23866:
23866:
23866: using propagate_on_container_move_assignment = true_type;
23866:
23866:
23866: using propagate_on_container_swap = false_type;
23866:
23866:
23866: using is_always_equal = true_type;
23866:
23866: template<typename _Up>
23866: using rebind_alloc = allocator<_Up>;
23866:
23866: template<typename _Up>
23866: using rebind_traits = allocator_traits<allocator<_Up>>;
23866: # 458 "/usr/include/c++/10/bits/alloc_traits.h" 3
23866: [[__nodiscard__]] static pointer
23866: allocate(allocator_type& __a, size_type __n)
23866: { return __a.allocate(__n); }
23866: # 472 "/usr/include/c++/10/bits/alloc_traits.h" 3
23866: [[__nodiscard__]] static pointer
23866: allocate(allocator_type& __a, size_type __n, const_void_pointer __hint)
23866: {
23866:
23866: return __a.allocate(__n, __hint);
23866:
23866:
23866:
23866: }
23866: # 490 "/usr/include/c++/10/bits/alloc_traits.h" 3
23866: static void
23866: deallocate(allocator_type& __a, pointer __p, size_type __n)
23866: { __a.deallocate(__p, __n); }
23866: # 505 "/usr/include/c++/10/bits/alloc_traits.h" 3
23866: template<typename _Up, typename... _Args>
23866: static void
23866: construct(allocator_type& __a __attribute__((__unused__)), _Up* __p,
23866: _Args&&... __args)
23866: noexcept(std::is_nothrow_constructible<_Up, _Args...>::value)
23866: {
23866:
23866: __a.construct(__p, std::forward<_Args>(__args)...);
23866:
23866:
23866:
23866: }
23866: # 525 "/usr/include/c++/10/bits/alloc_traits.h" 3
23866: template<typename _Up>
23866: static void
23866: destroy(allocator_type& __a __attribute__((__unused__)), _Up* __p)
23866: noexcept(is_nothrow_destructible<_Up>::value)
23866: {
23866:
23866: __a.destroy(__p);
23866:
23866:
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: static size_type
23866: max_size(const allocator_type& __a __attribute__((__unused__))) noexcept
23866: {
23866:
23866: return __a.max_size();
23866:
23866:
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: static allocator_type
23866: select_on_container_copy_construction(const allocator_type& __rhs)
23866: { return __rhs; }
23866: };
23866: # 574 "/usr/include/c++/10/bits/alloc_traits.h" 3
23866: template<typename _Alloc>
23866: constexpr inline void
23866: __alloc_on_copy(_Alloc& __one, const _Alloc& __two)
23866: {
23866: typedef allocator_traits<_Alloc> __traits;
23866: typedef typename __traits::propagate_on_container_copy_assignment __pocca;
23866:
23866: if constexpr (__pocca::value)
23866: __one = __two;
23866:
23866:
23866:
23866: }
23866:
23866: template<typename _Alloc>
23866: constexpr _Alloc
23866: __alloc_on_copy(const _Alloc& __a)
23866: {
23866: typedef allocator_traits<_Alloc> __traits;
23866: return __traits::select_on_container_copy_construction(__a);
23866: }
23866: # 606 "/usr/include/c++/10/bits/alloc_traits.h" 3
23866: template<typename _Alloc>
23866: constexpr inline void
23866: __alloc_on_move(_Alloc& __one, _Alloc& __two)
23866: {
23866: typedef allocator_traits<_Alloc> __traits;
23866: typedef typename __traits::propagate_on_container_move_assignment __pocma;
23866:
23866: if constexpr (__pocma::value)
23866: __one = std::move(__two);
23866:
23866:
23866:
23866: }
23866: # 633 "/usr/include/c++/10/bits/alloc_traits.h" 3
23866: template<typename _Alloc>
23866: constexpr inline void
23866: __alloc_on_swap(_Alloc& __one, _Alloc& __two)
23866: {
23866: typedef allocator_traits<_Alloc> __traits;
23866: typedef typename __traits::propagate_on_container_swap __pocs;
23866:
23866: if constexpr (__pocs::value)
23866: {
23866: using std::swap;
23866: swap(__one, __two);
23866: }
23866:
23866:
23866:
23866: }
23866:
23866: template<typename _Alloc, typename _Tp,
23866: typename _ValueT = __remove_cvref_t<typename _Alloc::value_type>,
23866: typename = void>
23866: struct __is_alloc_insertable_impl
23866: : false_type
23866: { };
23866:
23866: template<typename _Alloc, typename _Tp, typename _ValueT>
23866: struct __is_alloc_insertable_impl<_Alloc, _Tp, _ValueT,
23866: __void_t<decltype(allocator_traits<_Alloc>::construct(
23866: std::declval<_Alloc&>(), std::declval<_ValueT*>(),
23866: std::declval<_Tp>()))>>
23866: : true_type
23866: { };
23866:
23866:
23866:
23866:
23866: template<typename _Alloc>
23866: struct __is_copy_insertable
23866: : __is_alloc_insertable_impl<_Alloc,
23866: typename _Alloc::value_type const&>::type
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct __is_copy_insertable<allocator<_Tp>>
23866: : is_copy_constructible<_Tp>
23866: { };
23866:
23866:
23866:
23866:
23866: template<typename _Alloc>
23866: struct __is_move_insertable
23866: : __is_alloc_insertable_impl<_Alloc, typename _Alloc::value_type>::type
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct __is_move_insertable<allocator<_Tp>>
23866: : is_move_constructible<_Tp>
23866: { };
23866:
23866:
23866: template<typename _Alloc, typename = void>
23866: struct __is_allocator : false_type { };
23866:
23866: template<typename _Alloc>
23866: struct __is_allocator<_Alloc,
23866: __void_t<typename _Alloc::value_type,
23866: decltype(std::declval<_Alloc&>().allocate(size_t{}))>>
23866: : true_type { };
23866:
23866: template<typename _Alloc>
23866: using _RequireAllocator
23866: = typename enable_if<__is_allocator<_Alloc>::value, _Alloc>::type;
23866:
23866: template<typename _Alloc>
23866: using _RequireNotAllocator
23866: = typename enable_if<!__is_allocator<_Alloc>::value, _Alloc>::type;
23866: # 719 "/usr/include/c++/10/bits/alloc_traits.h" 3
23866: template<typename _ForwardIterator, typename _Allocator>
23866: void
23866: _Destroy(_ForwardIterator __first, _ForwardIterator __last,
23866: _Allocator& __alloc)
23866: {
23866: for (; __first != __last; ++__first)
23866:
23866:
23866:
23866: allocator_traits<_Allocator>::destroy(__alloc,
23866: std::__addressof(*__first));
23866:
23866: }
23866:
23866: template<typename _ForwardIterator, typename _Tp>
23866: inline void
23866: _Destroy(_ForwardIterator __first, _ForwardIterator __last,
23866: allocator<_Tp>&)
23866: {
23866: _Destroy(__first, __last);
23866: }
23866:
23866:
23866: }
23866: # 35 "/usr/include/c++/10/ext/alloc_traits.h" 2 3
23866:
23866:
23866:
23866:
23866: namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Alloc, typename = typename _Alloc::value_type>
23866: struct __alloc_traits
23866:
23866: : std::allocator_traits<_Alloc>
23866:
23866: {
23866: typedef _Alloc allocator_type;
23866:
23866: typedef std::allocator_traits<_Alloc> _Base_type;
23866: typedef typename _Base_type::value_type value_type;
23866: typedef typename _Base_type::pointer pointer;
23866: typedef typename _Base_type::const_pointer const_pointer;
23866: typedef typename _Base_type::size_type size_type;
23866: typedef typename _Base_type::difference_type difference_type;
23866:
23866: typedef value_type& reference;
23866: typedef const value_type& const_reference;
23866: using _Base_type::allocate;
23866: using _Base_type::deallocate;
23866: using _Base_type::construct;
23866: using _Base_type::destroy;
23866: using _Base_type::max_size;
23866:
23866: private:
23866: template<typename _Ptr>
23866: using __is_custom_pointer
23866: = std::__and_<std::is_same<pointer, _Ptr>,
23866: std::__not_<std::is_pointer<_Ptr>>>;
23866:
23866: public:
23866:
23866: template<typename _Ptr, typename... _Args>
23866: static constexpr
23866: std::__enable_if_t<__is_custom_pointer<_Ptr>::value>
23866: construct(_Alloc& __a, _Ptr __p, _Args&&... __args)
23866: noexcept(noexcept(_Base_type::construct(__a, std::__to_address(__p),
23866: std::forward<_Args>(__args)...)))
23866: {
23866: _Base_type::construct(__a, std::__to_address(__p),
23866: std::forward<_Args>(__args)...);
23866: }
23866:
23866:
23866: template<typename _Ptr>
23866: static constexpr
23866: std::__enable_if_t<__is_custom_pointer<_Ptr>::value>
23866: destroy(_Alloc& __a, _Ptr __p)
23866: noexcept(noexcept(_Base_type::destroy(__a, std::__to_address(__p))))
23866: { _Base_type::destroy(__a, std::__to_address(__p)); }
23866:
23866: static constexpr _Alloc _S_select_on_copy(const _Alloc& __a)
23866: { return _Base_type::select_on_container_copy_construction(__a); }
23866:
23866: static constexpr void _S_on_swap(_Alloc& __a, _Alloc& __b)
23866: { std::__alloc_on_swap(__a, __b); }
23866:
23866: static constexpr bool _S_propagate_on_copy_assign()
23866: { return _Base_type::propagate_on_container_copy_assignment::value; }
23866:
23866: static constexpr bool _S_propagate_on_move_assign()
23866: { return _Base_type::propagate_on_container_move_assignment::value; }
23866:
23866: static constexpr bool _S_propagate_on_swap()
23866: { return _Base_type::propagate_on_container_swap::value; }
23866:
23866: static constexpr bool _S_always_equal()
23866: { return _Base_type::is_always_equal::value; }
23866:
23866: static constexpr bool _S_nothrow_move()
23866: { return _S_propagate_on_move_assign() || _S_always_equal(); }
23866:
23866: template<typename _Tp>
23866: struct rebind
23866: { typedef typename _Base_type::template rebind_alloc<_Tp> other; };
23866: # 166 "/usr/include/c++/10/ext/alloc_traits.h" 3
23866: };
23866:
23866:
23866: }
23866: # 42 "/usr/include/c++/10/unordered_map" 2 3
23866: # 1 "/usr/include/c++/10/ext/aligned_buffer.h" 1 3
23866: # 30 "/usr/include/c++/10/ext/aligned_buffer.h" 3
23866: #define _ALIGNED_BUFFER_H 1
23866:
23866:
23866: # 33 "/usr/include/c++/10/ext/aligned_buffer.h" 3
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace __gnu_cxx
23866: {
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct __aligned_membuf
23866: {
23866:
23866:
23866:
23866:
23866:
23866: struct _Tp2 { _Tp _M_t; };
23866:
23866: alignas(__alignof__(_Tp2::_M_t)) unsigned char _M_storage[sizeof(_Tp)];
23866:
23866: __aligned_membuf() = default;
23866:
23866:
23866: __aligned_membuf(std::nullptr_t) { }
23866:
23866: void*
23866: _M_addr() noexcept
23866: { return static_cast<void*>(&_M_storage); }
23866:
23866: const void*
23866: _M_addr() const noexcept
23866: { return static_cast<const void*>(&_M_storage); }
23866:
23866: _Tp*
23866: _M_ptr() noexcept
23866: { return static_cast<_Tp*>(_M_addr()); }
23866:
23866: const _Tp*
23866: _M_ptr() const noexcept
23866: { return static_cast<const _Tp*>(_M_addr()); }
23866: };
23866: # 89 "/usr/include/c++/10/ext/aligned_buffer.h" 3
23866: template<typename _Tp>
23866: struct __aligned_buffer
23866: : std::aligned_storage<sizeof(_Tp), __alignof__(_Tp)>
23866: {
23866: typename
23866: std::aligned_storage<sizeof(_Tp), __alignof__(_Tp)>::type _M_storage;
23866:
23866: __aligned_buffer() = default;
23866:
23866:
23866: __aligned_buffer(std::nullptr_t) { }
23866:
23866: void*
23866: _M_addr() noexcept
23866: {
23866: return static_cast<void*>(&_M_storage);
23866: }
23866:
23866: const void*
23866: _M_addr() const noexcept
23866: {
23866: return static_cast<const void*>(&_M_storage);
23866: }
23866:
23866: _Tp*
23866: _M_ptr() noexcept
23866: { return static_cast<_Tp*>(_M_addr()); }
23866:
23866: const _Tp*
23866: _M_ptr() const noexcept
23866: { return static_cast<const _Tp*>(_M_addr()); }
23866: };
23866:
23866:
23866: }
23866: # 43 "/usr/include/c++/10/unordered_map" 2 3
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/hashtable.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/hashtable.h" 3
23866: #define _HASHTABLE_H 1
23866:
23866:
23866: # 34 "/usr/include/c++/10/bits/hashtable.h" 3
23866:
23866: # 1 "/usr/include/c++/10/bits/hashtable_policy.h" 1 3
23866: # 32 "/usr/include/c++/10/bits/hashtable_policy.h" 3
23866: #define _HASHTABLE_POLICY_H 1
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: template<typename _Key, typename _Value, typename _Alloc,
23866: typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash,
23866: typename _RehashPolicy, typename _Traits>
23866: class _Hashtable;
23866:
23866: namespace __detail
23866: {
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Key, typename _Value,
23866: typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _Traits>
23866: struct _Hashtable_base;
23866:
23866:
23866:
23866: template<class _Iterator>
23866: inline typename std::iterator_traits<_Iterator>::difference_type
23866: __distance_fw(_Iterator __first, _Iterator __last,
23866: std::input_iterator_tag)
23866: { return __first != __last ? 1 : 0; }
23866:
23866: template<class _Iterator>
23866: inline typename std::iterator_traits<_Iterator>::difference_type
23866: __distance_fw(_Iterator __first, _Iterator __last,
23866: std::forward_iterator_tag)
23866: { return std::distance(__first, __last); }
23866:
23866: template<class _Iterator>
23866: inline typename std::iterator_traits<_Iterator>::difference_type
23866: __distance_fw(_Iterator __first, _Iterator __last)
23866: { return __distance_fw(__first, __last,
23866: std::__iterator_category(__first)); }
23866:
23866: struct _Identity
23866: {
23866: template<typename _Tp>
23866: _Tp&&
23866: operator()(_Tp&& __x) const
23866: { return std::forward<_Tp>(__x); }
23866: };
23866:
23866: struct _Select1st
23866: {
23866: template<typename _Tp>
23866: auto
23866: operator()(_Tp&& __x) const
23866: -> decltype(std::get<0>(std::forward<_Tp>(__x)))
23866: { return std::get<0>(std::forward<_Tp>(__x)); }
23866: };
23866:
23866: template<typename _NodeAlloc>
23866: struct _Hashtable_alloc;
23866:
23866:
23866:
23866: template<typename _NodeAlloc>
23866: struct _ReuseOrAllocNode
23866: {
23866: private:
23866: using __node_alloc_type = _NodeAlloc;
23866: using __hashtable_alloc = _Hashtable_alloc<__node_alloc_type>;
23866: using __node_alloc_traits =
23866: typename __hashtable_alloc::__node_alloc_traits;
23866: using __node_type = typename __hashtable_alloc::__node_type;
23866:
23866: public:
23866: _ReuseOrAllocNode(__node_type* __nodes, __hashtable_alloc& __h)
23866: : _M_nodes(__nodes), _M_h(__h) { }
23866: _ReuseOrAllocNode(const _ReuseOrAllocNode&) = delete;
23866:
23866: ~_ReuseOrAllocNode()
23866: { _M_h._M_deallocate_nodes(_M_nodes); }
23866:
23866: template<typename _Arg>
23866: __node_type*
23866: operator()(_Arg&& __arg) const
23866: {
23866: if (_M_nodes)
23866: {
23866: __node_type* __node = _M_nodes;
23866: _M_nodes = _M_nodes->_M_next();
23866: __node->_M_nxt = nullptr;
23866: auto& __a = _M_h._M_node_allocator();
23866: __node_alloc_traits::destroy(__a, __node->_M_valptr());
23866: try
23866: {
23866: __node_alloc_traits::construct(__a, __node->_M_valptr(),
23866: std::forward<_Arg>(__arg));
23866: }
23866: catch(...)
23866: {
23866: _M_h._M_deallocate_node_ptr(__node);
23866: throw;
23866: }
23866: return __node;
23866: }
23866: return _M_h._M_allocate_node(std::forward<_Arg>(__arg));
23866: }
23866:
23866: private:
23866: mutable __node_type* _M_nodes;
23866: __hashtable_alloc& _M_h;
23866: };
23866:
23866:
23866:
23866: template<typename _NodeAlloc>
23866: struct _AllocNode
23866: {
23866: private:
23866: using __hashtable_alloc = _Hashtable_alloc<_NodeAlloc>;
23866: using __node_type = typename __hashtable_alloc::__node_type;
23866:
23866: public:
23866: _AllocNode(__hashtable_alloc& __h)
23866: : _M_h(__h) { }
23866:
23866: template<typename _Arg>
23866: __node_type*
23866: operator()(_Arg&& __arg) const
23866: { return _M_h._M_allocate_node(std::forward<_Arg>(__arg)); }
23866:
23866: private:
23866: __hashtable_alloc& _M_h;
23866: };
23866: # 198 "/usr/include/c++/10/bits/hashtable_policy.h" 3
23866: template<bool _Cache_hash_code, bool _Constant_iterators, bool _Unique_keys>
23866: struct _Hashtable_traits
23866: {
23866: using __hash_cached = __bool_constant<_Cache_hash_code>;
23866: using __constant_iterators = __bool_constant<_Constant_iterators>;
23866: using __unique_keys = __bool_constant<_Unique_keys>;
23866: };
23866: # 214 "/usr/include/c++/10/bits/hashtable_policy.h" 3
23866: struct _Hash_node_base
23866: {
23866: _Hash_node_base* _M_nxt;
23866:
23866: _Hash_node_base() noexcept : _M_nxt() { }
23866:
23866: _Hash_node_base(_Hash_node_base* __next) noexcept : _M_nxt(__next) { }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Value>
23866: struct _Hash_node_value_base : _Hash_node_base
23866: {
23866: typedef _Value value_type;
23866:
23866: __gnu_cxx::__aligned_buffer<_Value> _M_storage;
23866:
23866: _Value*
23866: _M_valptr() noexcept
23866: { return _M_storage._M_ptr(); }
23866:
23866: const _Value*
23866: _M_valptr() const noexcept
23866: { return _M_storage._M_ptr(); }
23866:
23866: _Value&
23866: _M_v() noexcept
23866: { return *_M_valptr(); }
23866:
23866: const _Value&
23866: _M_v() const noexcept
23866: { return *_M_valptr(); }
23866: };
23866:
23866:
23866:
23866:
23866: template<typename _Value, bool _Cache_hash_code>
23866: struct _Hash_node;
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Value>
23866: struct _Hash_node<_Value, true> : _Hash_node_value_base<_Value>
23866: {
23866: std::size_t _M_hash_code;
23866:
23866: _Hash_node*
23866: _M_next() const noexcept
23866: { return static_cast<_Hash_node*>(this->_M_nxt); }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Value>
23866: struct _Hash_node<_Value, false> : _Hash_node_value_base<_Value>
23866: {
23866: _Hash_node*
23866: _M_next() const noexcept
23866: { return static_cast<_Hash_node*>(this->_M_nxt); }
23866: };
23866:
23866:
23866: template<typename _Value, bool _Cache_hash_code>
23866: struct _Node_iterator_base
23866: {
23866: using __node_type = _Hash_node<_Value, _Cache_hash_code>;
23866:
23866: __node_type* _M_cur;
23866:
23866: _Node_iterator_base(__node_type* __p) noexcept
23866: : _M_cur(__p) { }
23866:
23866: void
23866: _M_incr() noexcept
23866: { _M_cur = _M_cur->_M_next(); }
23866: };
23866:
23866: template<typename _Value, bool _Cache_hash_code>
23866: inline bool
23866: operator==(const _Node_iterator_base<_Value, _Cache_hash_code>& __x,
23866: const _Node_iterator_base<_Value, _Cache_hash_code >& __y)
23866: noexcept
23866: { return __x._M_cur == __y._M_cur; }
23866:
23866: template<typename _Value, bool _Cache_hash_code>
23866: inline bool
23866: operator!=(const _Node_iterator_base<_Value, _Cache_hash_code>& __x,
23866: const _Node_iterator_base<_Value, _Cache_hash_code>& __y)
23866: noexcept
23866: { return __x._M_cur != __y._M_cur; }
23866:
23866:
23866: template<typename _Value, bool __constant_iterators, bool __cache>
23866: struct _Node_iterator
23866: : public _Node_iterator_base<_Value, __cache>
23866: {
23866: private:
23866: using __base_type = _Node_iterator_base<_Value, __cache>;
23866: using __node_type = typename __base_type::__node_type;
23866:
23866: public:
23866: typedef _Value value_type;
23866: typedef std::ptrdiff_t difference_type;
23866: typedef std::forward_iterator_tag iterator_category;
23866:
23866: using pointer = typename std::conditional<__constant_iterators,
23866: const _Value*, _Value*>::type;
23866:
23866: using reference = typename std::conditional<__constant_iterators,
23866: const _Value&, _Value&>::type;
23866:
23866: _Node_iterator() noexcept
23866: : __base_type(0) { }
23866:
23866: explicit
23866: _Node_iterator(__node_type* __p) noexcept
23866: : __base_type(__p) { }
23866:
23866: reference
23866: operator*() const noexcept
23866: { return this->_M_cur->_M_v(); }
23866:
23866: pointer
23866: operator->() const noexcept
23866: { return this->_M_cur->_M_valptr(); }
23866:
23866: _Node_iterator&
23866: operator++() noexcept
23866: {
23866: this->_M_incr();
23866: return *this;
23866: }
23866:
23866: _Node_iterator
23866: operator++(int) noexcept
23866: {
23866: _Node_iterator __tmp(*this);
23866: this->_M_incr();
23866: return __tmp;
23866: }
23866: };
23866:
23866:
23866: template<typename _Value, bool __constant_iterators, bool __cache>
23866: struct _Node_const_iterator
23866: : public _Node_iterator_base<_Value, __cache>
23866: {
23866: private:
23866: using __base_type = _Node_iterator_base<_Value, __cache>;
23866: using __node_type = typename __base_type::__node_type;
23866:
23866: public:
23866: typedef _Value value_type;
23866: typedef std::ptrdiff_t difference_type;
23866: typedef std::forward_iterator_tag iterator_category;
23866:
23866: typedef const _Value* pointer;
23866: typedef const _Value& reference;
23866:
23866: _Node_const_iterator() noexcept
23866: : __base_type(0) { }
23866:
23866: explicit
23866: _Node_const_iterator(__node_type* __p) noexcept
23866: : __base_type(__p) { }
23866:
23866: _Node_const_iterator(const _Node_iterator<_Value, __constant_iterators,
23866: __cache>& __x) noexcept
23866: : __base_type(__x._M_cur) { }
23866:
23866: reference
23866: operator*() const noexcept
23866: { return this->_M_cur->_M_v(); }
23866:
23866: pointer
23866: operator->() const noexcept
23866: { return this->_M_cur->_M_valptr(); }
23866:
23866: _Node_const_iterator&
23866: operator++() noexcept
23866: {
23866: this->_M_incr();
23866: return *this;
23866: }
23866:
23866: _Node_const_iterator
23866: operator++(int) noexcept
23866: {
23866: _Node_const_iterator __tmp(*this);
23866: this->_M_incr();
23866: return __tmp;
23866: }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: struct _Mod_range_hashing
23866: {
23866: typedef std::size_t first_argument_type;
23866: typedef std::size_t second_argument_type;
23866: typedef std::size_t result_type;
23866:
23866: result_type
23866: operator()(first_argument_type __num,
23866: second_argument_type __den) const noexcept
23866: { return __num % __den; }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: struct _Default_ranged_hash { };
23866:
23866:
23866:
23866: struct _Prime_rehash_policy
23866: {
23866: using __has_load_factor = true_type;
23866:
23866: _Prime_rehash_policy(float __z = 1.0) noexcept
23866: : _M_max_load_factor(__z), _M_next_resize(0) { }
23866:
23866: float
23866: max_load_factor() const noexcept
23866: { return _M_max_load_factor; }
23866:
23866:
23866: std::size_t
23866: _M_next_bkt(std::size_t __n) const;
23866:
23866:
23866: std::size_t
23866: _M_bkt_for_elements(std::size_t __n) const
23866: { return __builtin_ceill(__n / (long double)_M_max_load_factor); }
23866:
23866:
23866:
23866:
23866:
23866: std::pair<bool, std::size_t>
23866: _M_need_rehash(std::size_t __n_bkt, std::size_t __n_elt,
23866: std::size_t __n_ins) const;
23866:
23866: typedef std::size_t _State;
23866:
23866: _State
23866: _M_state() const
23866: { return _M_next_resize; }
23866:
23866: void
23866: _M_reset() noexcept
23866: { _M_next_resize = 0; }
23866:
23866: void
23866: _M_reset(_State __state)
23866: { _M_next_resize = __state; }
23866:
23866: static const std::size_t _S_growth_factor = 2;
23866:
23866: float _M_max_load_factor;
23866: mutable std::size_t _M_next_resize;
23866: };
23866:
23866:
23866: struct _Mask_range_hashing
23866: {
23866: typedef std::size_t first_argument_type;
23866: typedef std::size_t second_argument_type;
23866: typedef std::size_t result_type;
23866:
23866: result_type
23866: operator()(first_argument_type __num,
23866: second_argument_type __den) const noexcept
23866: { return __num & (__den - 1); }
23866: };
23866:
23866:
23866: inline std::size_t
23866: __clp2(std::size_t __n) noexcept
23866: {
23866:
23866: if (__n < 2)
23866: return __n;
23866: const unsigned __lz = sizeof(size_t) > sizeof(long)
23866: ? __builtin_clzll(__n - 1ull)
23866: : __builtin_clzl(__n - 1ul);
23866:
23866: return (size_t(1) << (numeric_limits<size_t>::digits - __lz - 1)) << 1;
23866: }
23866:
23866:
23866:
23866: struct _Power2_rehash_policy
23866: {
23866: using __has_load_factor = true_type;
23866:
23866: _Power2_rehash_policy(float __z = 1.0) noexcept
23866: : _M_max_load_factor(__z), _M_next_resize(0) { }
23866:
23866: float
23866: max_load_factor() const noexcept
23866: { return _M_max_load_factor; }
23866:
23866:
23866:
23866: std::size_t
23866: _M_next_bkt(std::size_t __n) noexcept
23866: {
23866: if (__n == 0)
23866:
23866:
23866:
23866: return 1;
23866:
23866: const auto __max_width = std::min<size_t>(sizeof(size_t), 8);
23866: const auto __max_bkt = size_t(1) << (__max_width * 8 - 1);
23866: std::size_t __res = __clp2(__n);
23866:
23866: if (__res == 0)
23866: __res = __max_bkt;
23866: else if (__res == 1)
23866:
23866:
23866:
23866: __res = 2;
23866:
23866: if (__res == __max_bkt)
23866:
23866:
23866:
23866: _M_next_resize = numeric_limits<size_t>::max();
23866: else
23866: _M_next_resize
23866: = __builtin_floorl(__res * (long double)_M_max_load_factor);
23866:
23866: return __res;
23866: }
23866:
23866:
23866: std::size_t
23866: _M_bkt_for_elements(std::size_t __n) const noexcept
23866: { return __builtin_ceill(__n / (long double)_M_max_load_factor); }
23866:
23866:
23866:
23866:
23866:
23866: std::pair<bool, std::size_t>
23866: _M_need_rehash(std::size_t __n_bkt, std::size_t __n_elt,
23866: std::size_t __n_ins) noexcept
23866: {
23866: if (__n_elt + __n_ins > _M_next_resize)
23866: {
23866:
23866:
23866:
23866: long double __min_bkts
23866: = std::max<std::size_t>(__n_elt + __n_ins, _M_next_resize ? 0 : 11)
23866: / (long double)_M_max_load_factor;
23866: if (__min_bkts >= __n_bkt)
23866: return { true,
23866: _M_next_bkt(std::max<std::size_t>(__builtin_floorl(__min_bkts) + 1,
23866: __n_bkt * _S_growth_factor)) };
23866:
23866: _M_next_resize
23866: = __builtin_floorl(__n_bkt * (long double)_M_max_load_factor);
23866: return { false, 0 };
23866: }
23866: else
23866: return { false, 0 };
23866: }
23866:
23866: typedef std::size_t _State;
23866:
23866: _State
23866: _M_state() const noexcept
23866: { return _M_next_resize; }
23866:
23866: void
23866: _M_reset() noexcept
23866: { _M_next_resize = 0; }
23866:
23866: void
23866: _M_reset(_State __state) noexcept
23866: { _M_next_resize = __state; }
23866:
23866: static const std::size_t _S_growth_factor = 2;
23866:
23866: float _M_max_load_factor;
23866: std::size_t _M_next_resize;
23866: };
23866: # 640 "/usr/include/c++/10/bits/hashtable_policy.h" 3
23866: template<typename _Key, typename _Value, typename _Alloc,
23866: typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash,
23866: typename _RehashPolicy, typename _Traits,
23866: bool _Unique_keys = _Traits::__unique_keys::value>
23866: struct _Map_base { };
23866:
23866:
23866: template<typename _Key, typename _Pair, typename _Alloc, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash,
23866: typename _RehashPolicy, typename _Traits>
23866: struct _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits, false>
23866: {
23866: using mapped_type = typename std::tuple_element<1, _Pair>::type;
23866: };
23866:
23866:
23866: template<typename _Key, typename _Pair, typename _Alloc, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash,
23866: typename _RehashPolicy, typename _Traits>
23866: struct _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits, true>
23866: {
23866: private:
23866: using __hashtable_base = __detail::_Hashtable_base<_Key, _Pair,
23866: _Select1st,
23866: _Equal, _H1, _H2, _Hash,
23866: _Traits>;
23866:
23866: using __hashtable = _Hashtable<_Key, _Pair, _Alloc,
23866: _Select1st, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>;
23866:
23866: using __hash_code = typename __hashtable_base::__hash_code;
23866: using __node_type = typename __hashtable_base::__node_type;
23866:
23866: public:
23866: using key_type = typename __hashtable_base::key_type;
23866: using iterator = typename __hashtable_base::iterator;
23866: using mapped_type = typename std::tuple_element<1, _Pair>::type;
23866:
23866: mapped_type&
23866: operator[](const key_type& __k);
23866:
23866: mapped_type&
23866: operator[](key_type&& __k);
23866:
23866:
23866:
23866: mapped_type&
23866: at(const key_type& __k);
23866:
23866: const mapped_type&
23866: at(const key_type& __k) const;
23866: };
23866:
23866: template<typename _Key, typename _Pair, typename _Alloc, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash,
23866: typename _RehashPolicy, typename _Traits>
23866: auto
23866: _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits, true>::
23866: operator[](const key_type& __k)
23866: -> mapped_type&
23866: {
23866: __hashtable* __h = static_cast<__hashtable*>(this);
23866: __hash_code __code = __h->_M_hash_code(__k);
23866: std::size_t __bkt = __h->_M_bucket_index(__k, __code);
23866: if (__node_type* __node = __h->_M_find_node(__bkt, __k, __code))
23866: return __node->_M_v().second;
23866:
23866: typename __hashtable::_Scoped_node __node {
23866: __h,
23866: std::piecewise_construct,
23866: std::tuple<const key_type&>(__k),
23866: std::tuple<>()
23866: };
23866: auto __pos
23866: = __h->_M_insert_unique_node(__k, __bkt, __code, __node._M_node);
23866: __node._M_node = nullptr;
23866: return __pos->second;
23866: }
23866:
23866: template<typename _Key, typename _Pair, typename _Alloc, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash,
23866: typename _RehashPolicy, typename _Traits>
23866: auto
23866: _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits, true>::
23866: operator[](key_type&& __k)
23866: -> mapped_type&
23866: {
23866: __hashtable* __h = static_cast<__hashtable*>(this);
23866: __hash_code __code = __h->_M_hash_code(__k);
23866: std::size_t __bkt = __h->_M_bucket_index(__k, __code);
23866: if (__node_type* __node = __h->_M_find_node(__bkt, __k, __code))
23866: return __node->_M_v().second;
23866:
23866: typename __hashtable::_Scoped_node __node {
23866: __h,
23866: std::piecewise_construct,
23866: std::forward_as_tuple(std::move(__k)),
23866: std::tuple<>()
23866: };
23866: auto __pos
23866: = __h->_M_insert_unique_node(__k, __bkt, __code, __node._M_node);
23866: __node._M_node = nullptr;
23866: return __pos->second;
23866: }
23866:
23866: template<typename _Key, typename _Pair, typename _Alloc, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash,
23866: typename _RehashPolicy, typename _Traits>
23866: auto
23866: _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits, true>::
23866: at(const key_type& __k)
23866: -> mapped_type&
23866: {
23866: __hashtable* __h = static_cast<__hashtable*>(this);
23866: __hash_code __code = __h->_M_hash_code(__k);
23866: std::size_t __bkt = __h->_M_bucket_index(__k, __code);
23866: __node_type* __p = __h->_M_find_node(__bkt, __k, __code);
23866:
23866: if (!__p)
23866: __throw_out_of_range(("_Map_base::at"));
23866: return __p->_M_v().second;
23866: }
23866:
23866: template<typename _Key, typename _Pair, typename _Alloc, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash,
23866: typename _RehashPolicy, typename _Traits>
23866: auto
23866: _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits, true>::
23866: at(const key_type& __k) const
23866: -> const mapped_type&
23866: {
23866: const __hashtable* __h = static_cast<const __hashtable*>(this);
23866: __hash_code __code = __h->_M_hash_code(__k);
23866: std::size_t __bkt = __h->_M_bucket_index(__k, __code);
23866: __node_type* __p = __h->_M_find_node(__bkt, __k, __code);
23866:
23866: if (!__p)
23866: __throw_out_of_range(("_Map_base::at"));
23866: return __p->_M_v().second;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Key, typename _Value, typename _Alloc,
23866: typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash,
23866: typename _RehashPolicy, typename _Traits>
23866: struct _Insert_base
23866: {
23866: protected:
23866: using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey,
23866: _Equal, _H1, _H2, _Hash,
23866: _RehashPolicy, _Traits>;
23866:
23866: using __hashtable_base = _Hashtable_base<_Key, _Value, _ExtractKey,
23866: _Equal, _H1, _H2, _Hash,
23866: _Traits>;
23866:
23866: using value_type = typename __hashtable_base::value_type;
23866: using iterator = typename __hashtable_base::iterator;
23866: using const_iterator = typename __hashtable_base::const_iterator;
23866: using size_type = typename __hashtable_base::size_type;
23866:
23866: using __unique_keys = typename __hashtable_base::__unique_keys;
23866: using __ireturn_type = typename __hashtable_base::__ireturn_type;
23866: using __node_type = _Hash_node<_Value, _Traits::__hash_cached::value>;
23866: using __node_alloc_type = __alloc_rebind<_Alloc, __node_type>;
23866: using __node_gen_type = _AllocNode<__node_alloc_type>;
23866:
23866: __hashtable&
23866: _M_conjure_hashtable()
23866: { return *(static_cast<__hashtable*>(this)); }
23866:
23866: template<typename _InputIterator, typename _NodeGetter>
23866: void
23866: _M_insert_range(_InputIterator __first, _InputIterator __last,
23866: const _NodeGetter&, true_type);
23866:
23866: template<typename _InputIterator, typename _NodeGetter>
23866: void
23866: _M_insert_range(_InputIterator __first, _InputIterator __last,
23866: const _NodeGetter&, false_type);
23866:
23866: public:
23866: __ireturn_type
23866: insert(const value_type& __v)
23866: {
23866: __hashtable& __h = _M_conjure_hashtable();
23866: __node_gen_type __node_gen(__h);
23866: return __h._M_insert(__v, __node_gen, __unique_keys());
23866: }
23866:
23866: iterator
23866: insert(const_iterator __hint, const value_type& __v)
23866: {
23866: __hashtable& __h = _M_conjure_hashtable();
23866: __node_gen_type __node_gen(__h);
23866: return __h._M_insert(__hint, __v, __node_gen, __unique_keys());
23866: }
23866:
23866: void
23866: insert(initializer_list<value_type> __l)
23866: { this->insert(__l.begin(), __l.end()); }
23866:
23866: template<typename _InputIterator>
23866: void
23866: insert(_InputIterator __first, _InputIterator __last)
23866: {
23866: __hashtable& __h = _M_conjure_hashtable();
23866: __node_gen_type __node_gen(__h);
23866: return _M_insert_range(__first, __last, __node_gen, __unique_keys());
23866: }
23866: };
23866:
23866: template<typename _Key, typename _Value, typename _Alloc,
23866: typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash,
23866: typename _RehashPolicy, typename _Traits>
23866: template<typename _InputIterator, typename _NodeGetter>
23866: void
23866: _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash,
23866: _RehashPolicy, _Traits>::
23866: _M_insert_range(_InputIterator __first, _InputIterator __last,
23866: const _NodeGetter& __node_gen, true_type)
23866: {
23866: size_type __n_elt = __detail::__distance_fw(__first, __last);
23866: if (__n_elt == 0)
23866: return;
23866:
23866: __hashtable& __h = _M_conjure_hashtable();
23866: for (; __first != __last; ++__first)
23866: {
23866: if (__h._M_insert(*__first, __node_gen, __unique_keys(),
23866: __n_elt).second)
23866: __n_elt = 1;
23866: else if (__n_elt != 1)
23866: --__n_elt;
23866: }
23866: }
23866:
23866: template<typename _Key, typename _Value, typename _Alloc,
23866: typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash,
23866: typename _RehashPolicy, typename _Traits>
23866: template<typename _InputIterator, typename _NodeGetter>
23866: void
23866: _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash,
23866: _RehashPolicy, _Traits>::
23866: _M_insert_range(_InputIterator __first, _InputIterator __last,
23866: const _NodeGetter& __node_gen, false_type)
23866: {
23866: using __rehash_type = typename __hashtable::__rehash_type;
23866: using __rehash_state = typename __hashtable::__rehash_state;
23866: using pair_type = std::pair<bool, std::size_t>;
23866:
23866: size_type __n_elt = __detail::__distance_fw(__first, __last);
23866: if (__n_elt == 0)
23866: return;
23866:
23866: __hashtable& __h = _M_conjure_hashtable();
23866: __rehash_type& __rehash = __h._M_rehash_policy;
23866: const __rehash_state& __saved_state = __rehash._M_state();
23866: pair_type __do_rehash = __rehash._M_need_rehash(__h._M_bucket_count,
23866: __h._M_element_count,
23866: __n_elt);
23866:
23866: if (__do_rehash.first)
23866: __h._M_rehash(__do_rehash.second, __saved_state);
23866:
23866: for (; __first != __last; ++__first)
23866: __h._M_insert(*__first, __node_gen, __unique_keys());
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Key, typename _Value, typename _Alloc,
23866: typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash,
23866: typename _RehashPolicy, typename _Traits,
23866: bool _Constant_iterators = _Traits::__constant_iterators::value>
23866: struct _Insert;
23866:
23866:
23866: template<typename _Key, typename _Value, typename _Alloc,
23866: typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash,
23866: typename _RehashPolicy, typename _Traits>
23866: struct _Insert<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash,
23866: _RehashPolicy, _Traits, true>
23866: : public _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>
23866: {
23866: using __base_type = _Insert_base<_Key, _Value, _Alloc, _ExtractKey,
23866: _Equal, _H1, _H2, _Hash,
23866: _RehashPolicy, _Traits>;
23866:
23866: using __hashtable_base = _Hashtable_base<_Key, _Value, _ExtractKey,
23866: _Equal, _H1, _H2, _Hash,
23866: _Traits>;
23866:
23866: using value_type = typename __base_type::value_type;
23866: using iterator = typename __base_type::iterator;
23866: using const_iterator = typename __base_type::const_iterator;
23866:
23866: using __unique_keys = typename __base_type::__unique_keys;
23866: using __ireturn_type = typename __hashtable_base::__ireturn_type;
23866: using __hashtable = typename __base_type::__hashtable;
23866: using __node_gen_type = typename __base_type::__node_gen_type;
23866:
23866: using __base_type::insert;
23866:
23866: __ireturn_type
23866: insert(value_type&& __v)
23866: {
23866: __hashtable& __h = this->_M_conjure_hashtable();
23866: __node_gen_type __node_gen(__h);
23866: return __h._M_insert(std::move(__v), __node_gen, __unique_keys());
23866: }
23866:
23866: iterator
23866: insert(const_iterator __hint, value_type&& __v)
23866: {
23866: __hashtable& __h = this->_M_conjure_hashtable();
23866: __node_gen_type __node_gen(__h);
23866: return __h._M_insert(__hint, std::move(__v), __node_gen,
23866: __unique_keys());
23866: }
23866: };
23866:
23866:
23866: template<typename _Key, typename _Value, typename _Alloc,
23866: typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash,
23866: typename _RehashPolicy, typename _Traits>
23866: struct _Insert<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash,
23866: _RehashPolicy, _Traits, false>
23866: : public _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>
23866: {
23866: using __base_type = _Insert_base<_Key, _Value, _Alloc, _ExtractKey,
23866: _Equal, _H1, _H2, _Hash,
23866: _RehashPolicy, _Traits>;
23866: using value_type = typename __base_type::value_type;
23866: using iterator = typename __base_type::iterator;
23866: using const_iterator = typename __base_type::const_iterator;
23866:
23866: using __unique_keys = typename __base_type::__unique_keys;
23866: using __hashtable = typename __base_type::__hashtable;
23866: using __ireturn_type = typename __base_type::__ireturn_type;
23866:
23866: using __base_type::insert;
23866:
23866: template<typename _Pair>
23866: using __is_cons = std::is_constructible<value_type, _Pair&&>;
23866:
23866: template<typename _Pair>
23866: using _IFcons = std::enable_if<__is_cons<_Pair>::value>;
23866:
23866: template<typename _Pair>
23866: using _IFconsp = typename _IFcons<_Pair>::type;
23866:
23866: template<typename _Pair, typename = _IFconsp<_Pair>>
23866: __ireturn_type
23866: insert(_Pair&& __v)
23866: {
23866: __hashtable& __h = this->_M_conjure_hashtable();
23866: return __h._M_emplace(__unique_keys(), std::forward<_Pair>(__v));
23866: }
23866:
23866: template<typename _Pair, typename = _IFconsp<_Pair>>
23866: iterator
23866: insert(const_iterator __hint, _Pair&& __v)
23866: {
23866: __hashtable& __h = this->_M_conjure_hashtable();
23866: return __h._M_emplace(__hint, __unique_keys(),
23866: std::forward<_Pair>(__v));
23866: }
23866: };
23866:
23866: template<typename _Policy>
23866: using __has_load_factor = typename _Policy::__has_load_factor;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Key, typename _Value, typename _Alloc,
23866: typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash,
23866: typename _RehashPolicy, typename _Traits,
23866: typename =
23866: __detected_or_t<false_type, __has_load_factor, _RehashPolicy>>
23866: struct _Rehash_base;
23866:
23866:
23866: template<typename _Key, typename _Value, typename _Alloc,
23866: typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash,
23866: typename _RehashPolicy, typename _Traits>
23866: struct _Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits,
23866: false_type>
23866: {
23866: };
23866:
23866:
23866: template<typename _Key, typename _Value, typename _Alloc,
23866: typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash,
23866: typename _RehashPolicy, typename _Traits>
23866: struct _Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits,
23866: true_type>
23866: {
23866: using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey,
23866: _Equal, _H1, _H2, _Hash,
23866: _RehashPolicy, _Traits>;
23866:
23866: float
23866: max_load_factor() const noexcept
23866: {
23866: const __hashtable* __this = static_cast<const __hashtable*>(this);
23866: return __this->__rehash_policy().max_load_factor();
23866: }
23866:
23866: void
23866: max_load_factor(float __z)
23866: {
23866: __hashtable* __this = static_cast<__hashtable*>(this);
23866: __this->__rehash_policy(_RehashPolicy(__z));
23866: }
23866:
23866: void
23866: reserve(std::size_t __n)
23866: {
23866: __hashtable* __this = static_cast<__hashtable*>(this);
23866: __this->rehash(__this->__rehash_policy()._M_bkt_for_elements(__n));
23866: }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<int _Nm, typename _Tp,
23866: bool __use_ebo = !__is_final(_Tp) && __is_empty(_Tp)>
23866: struct _Hashtable_ebo_helper;
23866:
23866:
23866: template<int _Nm, typename _Tp>
23866: struct _Hashtable_ebo_helper<_Nm, _Tp, true>
23866: : private _Tp
23866: {
23866: _Hashtable_ebo_helper() = default;
23866:
23866: template<typename _OtherTp>
23866: _Hashtable_ebo_helper(_OtherTp&& __tp)
23866: : _Tp(std::forward<_OtherTp>(__tp))
23866: { }
23866:
23866: const _Tp& _M_cget() const { return static_cast<const _Tp&>(*this); }
23866: _Tp& _M_get() { return static_cast<_Tp&>(*this); }
23866: };
23866:
23866:
23866: template<int _Nm, typename _Tp>
23866: struct _Hashtable_ebo_helper<_Nm, _Tp, false>
23866: {
23866: _Hashtable_ebo_helper() = default;
23866:
23866: template<typename _OtherTp>
23866: _Hashtable_ebo_helper(_OtherTp&& __tp)
23866: : _M_tp(std::forward<_OtherTp>(__tp))
23866: { }
23866:
23866: const _Tp& _M_cget() const { return _M_tp; }
23866: _Tp& _M_get() { return _M_tp; }
23866:
23866: private:
23866: _Tp _M_tp;
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Key, typename _Value, typename _ExtractKey,
23866: typename _H1, typename _H2, typename _Hash,
23866: bool __cache_hash_code>
23866: struct _Local_iterator_base;
23866: # 1172 "/usr/include/c++/10/bits/hashtable_policy.h" 3
23866: template<typename _Key, typename _Value, typename _ExtractKey,
23866: typename _H1, typename _H2, typename _Hash,
23866: bool __cache_hash_code>
23866: struct _Hash_code_base;
23866:
23866:
23866:
23866: template<typename _Key, typename _Value, typename _ExtractKey,
23866: typename _H1, typename _H2, typename _Hash>
23866: struct _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash, false>
23866: : private _Hashtable_ebo_helper<0, _ExtractKey>,
23866: private _Hashtable_ebo_helper<1, _Hash>
23866: {
23866: private:
23866: using __ebo_extract_key = _Hashtable_ebo_helper<0, _ExtractKey>;
23866: using __ebo_hash = _Hashtable_ebo_helper<1, _Hash>;
23866:
23866: protected:
23866: typedef void* __hash_code;
23866: typedef _Hash_node<_Value, false> __node_type;
23866:
23866:
23866:
23866: _Hash_code_base() = default;
23866:
23866: _Hash_code_base(const _ExtractKey& __ex, const _H1&, const _H2&,
23866: const _Hash& __h)
23866: : __ebo_extract_key(__ex), __ebo_hash(__h) { }
23866:
23866: __hash_code
23866: _M_hash_code(const _Key& __key) const
23866: { return 0; }
23866:
23866: std::size_t
23866: _M_bucket_index(const _Key& __k, __hash_code,
23866: std::size_t __bkt_count) const
23866: { return _M_ranged_hash()(__k, __bkt_count); }
23866:
23866: std::size_t
23866: _M_bucket_index(const __node_type* __p, std::size_t __bkt_count) const
23866: noexcept( noexcept(declval<const _Hash&>()(declval<const _Key&>(),
23866: (std::size_t)0)) )
23866: { return _M_ranged_hash()(_M_extract()(__p->_M_v()), __bkt_count); }
23866:
23866: void
23866: _M_store_code(__node_type*, __hash_code) const
23866: { }
23866:
23866: void
23866: _M_copy_code(__node_type*, const __node_type*) const
23866: { }
23866:
23866: void
23866: _M_swap(_Hash_code_base& __x)
23866: {
23866: std::swap(__ebo_extract_key::_M_get(),
23866: __x.__ebo_extract_key::_M_get());
23866: std::swap(__ebo_hash::_M_get(), __x.__ebo_hash::_M_get());
23866: }
23866:
23866: const _ExtractKey&
23866: _M_extract() const { return __ebo_extract_key::_M_cget(); }
23866:
23866: const _Hash&
23866: _M_ranged_hash() const { return __ebo_hash::_M_cget(); }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Key, typename _Value, typename _ExtractKey,
23866: typename _H1, typename _H2, typename _Hash>
23866: struct _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash, true>;
23866:
23866:
23866:
23866:
23866: template<typename _Key, typename _Value, typename _ExtractKey,
23866: typename _H1, typename _H2>
23866: struct _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2,
23866: _Default_ranged_hash, false>
23866: : private _Hashtable_ebo_helper<0, _ExtractKey>,
23866: private _Hashtable_ebo_helper<1, _H1>,
23866: private _Hashtable_ebo_helper<2, _H2>
23866: {
23866: private:
23866: using __ebo_extract_key = _Hashtable_ebo_helper<0, _ExtractKey>;
23866: using __ebo_h1 = _Hashtable_ebo_helper<1, _H1>;
23866: using __ebo_h2 = _Hashtable_ebo_helper<2, _H2>;
23866:
23866:
23866: friend struct _Local_iterator_base<_Key, _Value, _ExtractKey, _H1, _H2,
23866: _Default_ranged_hash, false>;
23866:
23866: public:
23866: typedef _H1 hasher;
23866:
23866: hasher
23866: hash_function() const
23866: { return _M_h1(); }
23866:
23866: protected:
23866: typedef std::size_t __hash_code;
23866: typedef _Hash_node<_Value, false> __node_type;
23866:
23866:
23866:
23866: _Hash_code_base() = default;
23866:
23866: _Hash_code_base(const _ExtractKey& __ex,
23866: const _H1& __h1, const _H2& __h2,
23866: const _Default_ranged_hash&)
23866: : __ebo_extract_key(__ex), __ebo_h1(__h1), __ebo_h2(__h2) { }
23866:
23866: __hash_code
23866: _M_hash_code(const _Key& __k) const
23866: {
23866: static_assert(__is_invocable<const _H1&, const _Key&>{},
23866: "hash function must be invocable with an argument of key type");
23866: return _M_h1()(__k);
23866: }
23866:
23866: std::size_t
23866: _M_bucket_index(const _Key&, __hash_code __c,
23866: std::size_t __bkt_count) const
23866: { return _M_h2()(__c, __bkt_count); }
23866:
23866: std::size_t
23866: _M_bucket_index(const __node_type* __p, std::size_t __bkt_count) const
23866: noexcept( noexcept(declval<const _H1&>()(declval<const _Key&>()))
23866: && noexcept(declval<const _H2&>()((__hash_code)0,
23866: (std::size_t)0)) )
23866: { return _M_h2()(_M_h1()(_M_extract()(__p->_M_v())), __bkt_count); }
23866:
23866: void
23866: _M_store_code(__node_type*, __hash_code) const
23866: { }
23866:
23866: void
23866: _M_copy_code(__node_type*, const __node_type*) const
23866: { }
23866:
23866: void
23866: _M_swap(_Hash_code_base& __x)
23866: {
23866: std::swap(__ebo_extract_key::_M_get(),
23866: __x.__ebo_extract_key::_M_get());
23866: std::swap(__ebo_h1::_M_get(), __x.__ebo_h1::_M_get());
23866: std::swap(__ebo_h2::_M_get(), __x.__ebo_h2::_M_get());
23866: }
23866:
23866: const _ExtractKey&
23866: _M_extract() const { return __ebo_extract_key::_M_cget(); }
23866:
23866: const _H1&
23866: _M_h1() const { return __ebo_h1::_M_cget(); }
23866:
23866: const _H2&
23866: _M_h2() const { return __ebo_h2::_M_cget(); }
23866: };
23866:
23866:
23866:
23866:
23866: template<typename _Key, typename _Value, typename _ExtractKey,
23866: typename _H1, typename _H2>
23866: struct _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2,
23866: _Default_ranged_hash, true>
23866: : private _Hashtable_ebo_helper<0, _ExtractKey>,
23866: private _Hashtable_ebo_helper<1, _H1>,
23866: private _Hashtable_ebo_helper<2, _H2>
23866: {
23866: private:
23866:
23866: friend struct _Local_iterator_base<_Key, _Value, _ExtractKey, _H1, _H2,
23866: _Default_ranged_hash, true>;
23866:
23866: using __ebo_extract_key = _Hashtable_ebo_helper<0, _ExtractKey>;
23866: using __ebo_h1 = _Hashtable_ebo_helper<1, _H1>;
23866: using __ebo_h2 = _Hashtable_ebo_helper<2, _H2>;
23866:
23866: public:
23866: typedef _H1 hasher;
23866:
23866: hasher
23866: hash_function() const
23866: { return _M_h1(); }
23866:
23866: protected:
23866: typedef std::size_t __hash_code;
23866: typedef _Hash_node<_Value, true> __node_type;
23866:
23866:
23866: _Hash_code_base() = default;
23866: _Hash_code_base(const _ExtractKey& __ex,
23866: const _H1& __h1, const _H2& __h2,
23866: const _Default_ranged_hash&)
23866: : __ebo_extract_key(__ex), __ebo_h1(__h1), __ebo_h2(__h2) { }
23866:
23866: __hash_code
23866: _M_hash_code(const _Key& __k) const
23866: {
23866: static_assert(__is_invocable<const _H1&, const _Key&>{},
23866: "hash function must be invocable with an argument of key type");
23866: return _M_h1()(__k);
23866: }
23866:
23866: std::size_t
23866: _M_bucket_index(const _Key&, __hash_code __c,
23866: std::size_t __bkt_count) const
23866: { return _M_h2()(__c, __bkt_count); }
23866:
23866: std::size_t
23866: _M_bucket_index(const __node_type* __p, std::size_t __bkt_count) const
23866: noexcept( noexcept(declval<const _H2&>()((__hash_code)0,
23866: (std::size_t)0)) )
23866: { return _M_h2()(__p->_M_hash_code, __bkt_count); }
23866:
23866: void
23866: _M_store_code(__node_type* __n, __hash_code __c) const
23866: { __n->_M_hash_code = __c; }
23866:
23866: void
23866: _M_copy_code(__node_type* __to, const __node_type* __from) const
23866: { __to->_M_hash_code = __from->_M_hash_code; }
23866:
23866: void
23866: _M_swap(_Hash_code_base& __x)
23866: {
23866: std::swap(__ebo_extract_key::_M_get(),
23866: __x.__ebo_extract_key::_M_get());
23866: std::swap(__ebo_h1::_M_get(), __x.__ebo_h1::_M_get());
23866: std::swap(__ebo_h2::_M_get(), __x.__ebo_h2::_M_get());
23866: }
23866:
23866: const _ExtractKey&
23866: _M_extract() const { return __ebo_extract_key::_M_cget(); }
23866:
23866: const _H1&
23866: _M_h1() const { return __ebo_h1::_M_cget(); }
23866:
23866: const _H2&
23866: _M_h2() const { return __ebo_h2::_M_cget(); }
23866: };
23866:
23866:
23866: template<typename _Key, typename _Value, typename _ExtractKey,
23866: typename _H1, typename _H2, typename _Hash>
23866: struct _Local_iterator_base<_Key, _Value, _ExtractKey,
23866: _H1, _H2, _Hash, true>
23866: : private _Hashtable_ebo_helper<0, _H2>
23866: {
23866: protected:
23866: using __base_type = _Hashtable_ebo_helper<0, _H2>;
23866: using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey,
23866: _H1, _H2, _Hash, true>;
23866:
23866: _Local_iterator_base() = default;
23866: _Local_iterator_base(const __hash_code_base& __base,
23866: _Hash_node<_Value, true>* __p,
23866: std::size_t __bkt, std::size_t __bkt_count)
23866: : __base_type(__base._M_h2()),
23866: _M_cur(__p), _M_bucket(__bkt), _M_bucket_count(__bkt_count) { }
23866:
23866: void
23866: _M_incr()
23866: {
23866: _M_cur = _M_cur->_M_next();
23866: if (_M_cur)
23866: {
23866: std::size_t __bkt
23866: = __base_type::_M_get()(_M_cur->_M_hash_code,
23866: _M_bucket_count);
23866: if (__bkt != _M_bucket)
23866: _M_cur = nullptr;
23866: }
23866: }
23866:
23866: _Hash_node<_Value, true>* _M_cur;
23866: std::size_t _M_bucket;
23866: std::size_t _M_bucket_count;
23866:
23866: public:
23866: const void*
23866: _M_curr() const { return _M_cur; }
23866:
23866: std::size_t
23866: _M_get_bucket() const { return _M_bucket; }
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp, bool _IsEmpty = std::is_empty<_Tp>::value>
23866: struct _Hash_code_storage
23866: {
23866: __gnu_cxx::__aligned_buffer<_Tp> _M_storage;
23866:
23866: _Tp*
23866: _M_h() { return _M_storage._M_ptr(); }
23866:
23866: const _Tp*
23866: _M_h() const { return _M_storage._M_ptr(); }
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: struct _Hash_code_storage<_Tp, true>
23866: {
23866: static_assert( std::is_empty<_Tp>::value, "Type must be empty" );
23866:
23866:
23866:
23866: _Tp*
23866: _M_h() { return reinterpret_cast<_Tp*>(this); }
23866:
23866: const _Tp*
23866: _M_h() const { return reinterpret_cast<const _Tp*>(this); }
23866: };
23866:
23866: template<typename _Key, typename _Value, typename _ExtractKey,
23866: typename _H1, typename _H2, typename _Hash>
23866: using __hash_code_for_local_iter
23866: = _Hash_code_storage<_Hash_code_base<_Key, _Value, _ExtractKey,
23866: _H1, _H2, _Hash, false>>;
23866:
23866:
23866: template<typename _Key, typename _Value, typename _ExtractKey,
23866: typename _H1, typename _H2, typename _Hash>
23866: struct _Local_iterator_base<_Key, _Value, _ExtractKey,
23866: _H1, _H2, _Hash, false>
23866: : __hash_code_for_local_iter<_Key, _Value, _ExtractKey, _H1, _H2, _Hash>
23866: {
23866: protected:
23866: using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey,
23866: _H1, _H2, _Hash, false>;
23866:
23866: _Local_iterator_base() : _M_bucket_count(-1) { }
23866:
23866: _Local_iterator_base(const __hash_code_base& __base,
23866: _Hash_node<_Value, false>* __p,
23866: std::size_t __bkt, std::size_t __bkt_count)
23866: : _M_cur(__p), _M_bucket(__bkt), _M_bucket_count(__bkt_count)
23866: { _M_init(__base); }
23866:
23866: ~_Local_iterator_base()
23866: {
23866: if (_M_bucket_count != -1)
23866: _M_destroy();
23866: }
23866:
23866: _Local_iterator_base(const _Local_iterator_base& __iter)
23866: : _M_cur(__iter._M_cur), _M_bucket(__iter._M_bucket),
23866: _M_bucket_count(__iter._M_bucket_count)
23866: {
23866: if (_M_bucket_count != -1)
23866: _M_init(*__iter._M_h());
23866: }
23866:
23866: _Local_iterator_base&
23866: operator=(const _Local_iterator_base& __iter)
23866: {
23866: if (_M_bucket_count != -1)
23866: _M_destroy();
23866: _M_cur = __iter._M_cur;
23866: _M_bucket = __iter._M_bucket;
23866: _M_bucket_count = __iter._M_bucket_count;
23866: if (_M_bucket_count != -1)
23866: _M_init(*__iter._M_h());
23866: return *this;
23866: }
23866:
23866: void
23866: _M_incr()
23866: {
23866: _M_cur = _M_cur->_M_next();
23866: if (_M_cur)
23866: {
23866: std::size_t __bkt = this->_M_h()->_M_bucket_index(_M_cur,
23866: _M_bucket_count);
23866: if (__bkt != _M_bucket)
23866: _M_cur = nullptr;
23866: }
23866: }
23866:
23866: _Hash_node<_Value, false>* _M_cur;
23866: std::size_t _M_bucket;
23866: std::size_t _M_bucket_count;
23866:
23866: void
23866: _M_init(const __hash_code_base& __base)
23866: { ::new(this->_M_h()) __hash_code_base(__base); }
23866:
23866: void
23866: _M_destroy() { this->_M_h()->~__hash_code_base(); }
23866:
23866: public:
23866: const void*
23866: _M_curr() const { return _M_cur; }
23866:
23866: std::size_t
23866: _M_get_bucket() const { return _M_bucket; }
23866: };
23866:
23866: template<typename _Key, typename _Value, typename _ExtractKey,
23866: typename _H1, typename _H2, typename _Hash, bool __cache>
23866: inline bool
23866: operator==(const _Local_iterator_base<_Key, _Value, _ExtractKey,
23866: _H1, _H2, _Hash, __cache>& __x,
23866: const _Local_iterator_base<_Key, _Value, _ExtractKey,
23866: _H1, _H2, _Hash, __cache>& __y)
23866: { return __x._M_curr() == __y._M_curr(); }
23866:
23866: template<typename _Key, typename _Value, typename _ExtractKey,
23866: typename _H1, typename _H2, typename _Hash, bool __cache>
23866: inline bool
23866: operator!=(const _Local_iterator_base<_Key, _Value, _ExtractKey,
23866: _H1, _H2, _Hash, __cache>& __x,
23866: const _Local_iterator_base<_Key, _Value, _ExtractKey,
23866: _H1, _H2, _Hash, __cache>& __y)
23866: { return __x._M_curr() != __y._M_curr(); }
23866:
23866:
23866: template<typename _Key, typename _Value, typename _ExtractKey,
23866: typename _H1, typename _H2, typename _Hash,
23866: bool __constant_iterators, bool __cache>
23866: struct _Local_iterator
23866: : public _Local_iterator_base<_Key, _Value, _ExtractKey,
23866: _H1, _H2, _Hash, __cache>
23866: {
23866: private:
23866: using __base_type = _Local_iterator_base<_Key, _Value, _ExtractKey,
23866: _H1, _H2, _Hash, __cache>;
23866: using __hash_code_base = typename __base_type::__hash_code_base;
23866: public:
23866: typedef _Value value_type;
23866: typedef typename std::conditional<__constant_iterators,
23866: const _Value*, _Value*>::type
23866: pointer;
23866: typedef typename std::conditional<__constant_iterators,
23866: const _Value&, _Value&>::type
23866: reference;
23866: typedef std::ptrdiff_t difference_type;
23866: typedef std::forward_iterator_tag iterator_category;
23866:
23866: _Local_iterator() = default;
23866:
23866: _Local_iterator(const __hash_code_base& __base,
23866: _Hash_node<_Value, __cache>* __n,
23866: std::size_t __bkt, std::size_t __bkt_count)
23866: : __base_type(__base, __n, __bkt, __bkt_count)
23866: { }
23866:
23866: reference
23866: operator*() const
23866: { return this->_M_cur->_M_v(); }
23866:
23866: pointer
23866: operator->() const
23866: { return this->_M_cur->_M_valptr(); }
23866:
23866: _Local_iterator&
23866: operator++()
23866: {
23866: this->_M_incr();
23866: return *this;
23866: }
23866:
23866: _Local_iterator
23866: operator++(int)
23866: {
23866: _Local_iterator __tmp(*this);
23866: this->_M_incr();
23866: return __tmp;
23866: }
23866: };
23866:
23866:
23866: template<typename _Key, typename _Value, typename _ExtractKey,
23866: typename _H1, typename _H2, typename _Hash,
23866: bool __constant_iterators, bool __cache>
23866: struct _Local_const_iterator
23866: : public _Local_iterator_base<_Key, _Value, _ExtractKey,
23866: _H1, _H2, _Hash, __cache>
23866: {
23866: private:
23866: using __base_type = _Local_iterator_base<_Key, _Value, _ExtractKey,
23866: _H1, _H2, _Hash, __cache>;
23866: using __hash_code_base = typename __base_type::__hash_code_base;
23866:
23866: public:
23866: typedef _Value value_type;
23866: typedef const _Value* pointer;
23866: typedef const _Value& reference;
23866: typedef std::ptrdiff_t difference_type;
23866: typedef std::forward_iterator_tag iterator_category;
23866:
23866: _Local_const_iterator() = default;
23866:
23866: _Local_const_iterator(const __hash_code_base& __base,
23866: _Hash_node<_Value, __cache>* __n,
23866: std::size_t __bkt, std::size_t __bkt_count)
23866: : __base_type(__base, __n, __bkt, __bkt_count)
23866: { }
23866:
23866: _Local_const_iterator(const _Local_iterator<_Key, _Value, _ExtractKey,
23866: _H1, _H2, _Hash,
23866: __constant_iterators,
23866: __cache>& __x)
23866: : __base_type(__x)
23866: { }
23866:
23866: reference
23866: operator*() const
23866: { return this->_M_cur->_M_v(); }
23866:
23866: pointer
23866: operator->() const
23866: { return this->_M_cur->_M_valptr(); }
23866:
23866: _Local_const_iterator&
23866: operator++()
23866: {
23866: this->_M_incr();
23866: return *this;
23866: }
23866:
23866: _Local_const_iterator
23866: operator++(int)
23866: {
23866: _Local_const_iterator __tmp(*this);
23866: this->_M_incr();
23866: return __tmp;
23866: }
23866: };
23866: # 1722 "/usr/include/c++/10/bits/hashtable_policy.h" 3
23866: template<typename _Key, typename _Value,
23866: typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _Traits>
23866: struct _Hashtable_base
23866: : public _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash,
23866: _Traits::__hash_cached::value>,
23866: private _Hashtable_ebo_helper<0, _Equal>
23866: {
23866: public:
23866: typedef _Key key_type;
23866: typedef _Value value_type;
23866: typedef _Equal key_equal;
23866: typedef std::size_t size_type;
23866: typedef std::ptrdiff_t difference_type;
23866:
23866: using __traits_type = _Traits;
23866: using __hash_cached = typename __traits_type::__hash_cached;
23866: using __constant_iterators = typename __traits_type::__constant_iterators;
23866: using __unique_keys = typename __traits_type::__unique_keys;
23866:
23866: using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey,
23866: _H1, _H2, _Hash,
23866: __hash_cached::value>;
23866:
23866: using __hash_code = typename __hash_code_base::__hash_code;
23866: using __node_type = typename __hash_code_base::__node_type;
23866:
23866: using iterator = __detail::_Node_iterator<value_type,
23866: __constant_iterators::value,
23866: __hash_cached::value>;
23866:
23866: using const_iterator = __detail::_Node_const_iterator<value_type,
23866: __constant_iterators::value,
23866: __hash_cached::value>;
23866:
23866: using local_iterator = __detail::_Local_iterator<key_type, value_type,
23866: _ExtractKey, _H1, _H2, _Hash,
23866: __constant_iterators::value,
23866: __hash_cached::value>;
23866:
23866: using const_local_iterator = __detail::_Local_const_iterator<key_type,
23866: value_type,
23866: _ExtractKey, _H1, _H2, _Hash,
23866: __constant_iterators::value,
23866: __hash_cached::value>;
23866:
23866: using __ireturn_type = typename std::conditional<__unique_keys::value,
23866: std::pair<iterator, bool>,
23866: iterator>::type;
23866: private:
23866: using _EqualEBO = _Hashtable_ebo_helper<0, _Equal>;
23866:
23866: template<typename _NodeT>
23866: struct _Equal_hash_code
23866: {
23866: static bool
23866: _S_equals(__hash_code, const _NodeT&)
23866: { return true; }
23866: };
23866:
23866: template<typename _Ptr2>
23866: struct _Equal_hash_code<_Hash_node<_Ptr2, true>>
23866: {
23866: static bool
23866: _S_equals(__hash_code __c, const _Hash_node<_Ptr2, true>& __n)
23866: { return __c == __n._M_hash_code; }
23866: };
23866:
23866: protected:
23866: _Hashtable_base() = default;
23866: _Hashtable_base(const _ExtractKey& __ex, const _H1& __h1, const _H2& __h2,
23866: const _Hash& __hash, const _Equal& __eq)
23866: : __hash_code_base(__ex, __h1, __h2, __hash), _EqualEBO(__eq)
23866: { }
23866:
23866: bool
23866: _M_equals(const _Key& __k, __hash_code __c, __node_type* __n) const
23866: {
23866: static_assert(__is_invocable<const _Equal&, const _Key&, const _Key&>{},
23866: "key equality predicate must be invocable with two arguments of "
23866: "key type");
23866: return _Equal_hash_code<__node_type>::_S_equals(__c, *__n)
23866: && _M_eq()(__k, this->_M_extract()(__n->_M_v()));
23866: }
23866:
23866: void
23866: _M_swap(_Hashtable_base& __x)
23866: {
23866: __hash_code_base::_M_swap(__x);
23866: std::swap(_EqualEBO::_M_get(), __x._EqualEBO::_M_get());
23866: }
23866:
23866: const _Equal&
23866: _M_eq() const { return _EqualEBO::_M_cget(); }
23866: };
23866: # 1826 "/usr/include/c++/10/bits/hashtable_policy.h" 3
23866: template<typename _Key, typename _Value, typename _Alloc,
23866: typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash,
23866: typename _RehashPolicy, typename _Traits,
23866: bool _Unique_keys = _Traits::__unique_keys::value>
23866: struct _Equality;
23866:
23866:
23866: template<typename _Key, typename _Value, typename _Alloc,
23866: typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash,
23866: typename _RehashPolicy, typename _Traits>
23866: struct _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits, true>
23866: {
23866: using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>;
23866:
23866: bool
23866: _M_equal(const __hashtable&) const;
23866: };
23866:
23866: template<typename _Key, typename _Value, typename _Alloc,
23866: typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash,
23866: typename _RehashPolicy, typename _Traits>
23866: bool
23866: _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits, true>::
23866: _M_equal(const __hashtable& __other) const
23866: {
23866: using __node_base = typename __hashtable::__node_base;
23866: using __node_type = typename __hashtable::__node_type;
23866: const __hashtable* __this = static_cast<const __hashtable*>(this);
23866: if (__this->size() != __other.size())
23866: return false;
23866:
23866: for (auto __itx = __this->begin(); __itx != __this->end(); ++__itx)
23866: {
23866: std::size_t __ybkt = __other._M_bucket_index(__itx._M_cur);
23866: __node_base* __prev_n = __other._M_buckets[__ybkt];
23866: if (!__prev_n)
23866: return false;
23866:
23866: for (__node_type* __n = static_cast<__node_type*>(__prev_n->_M_nxt);;
23866: __n = __n->_M_next())
23866: {
23866: if (__n->_M_v() == *__itx)
23866: break;
23866:
23866: if (!__n->_M_nxt
23866: || __other._M_bucket_index(__n->_M_next()) != __ybkt)
23866: return false;
23866: }
23866: }
23866:
23866: return true;
23866: }
23866:
23866:
23866: template<typename _Key, typename _Value, typename _Alloc,
23866: typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash,
23866: typename _RehashPolicy, typename _Traits>
23866: struct _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits, false>
23866: {
23866: using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>;
23866:
23866: bool
23866: _M_equal(const __hashtable&) const;
23866: };
23866:
23866: template<typename _Key, typename _Value, typename _Alloc,
23866: typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash,
23866: typename _RehashPolicy, typename _Traits>
23866: bool
23866: _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits, false>::
23866: _M_equal(const __hashtable& __other) const
23866: {
23866: using __node_base = typename __hashtable::__node_base;
23866: using __node_type = typename __hashtable::__node_type;
23866: const __hashtable* __this = static_cast<const __hashtable*>(this);
23866: if (__this->size() != __other.size())
23866: return false;
23866:
23866: for (auto __itx = __this->begin(); __itx != __this->end();)
23866: {
23866: std::size_t __x_count = 1;
23866: auto __itx_end = __itx;
23866: for (++__itx_end; __itx_end != __this->end()
23866: && __this->key_eq()(_ExtractKey()(*__itx),
23866: _ExtractKey()(*__itx_end));
23866: ++__itx_end)
23866: ++__x_count;
23866:
23866: std::size_t __ybkt = __other._M_bucket_index(__itx._M_cur);
23866: __node_base* __y_prev_n = __other._M_buckets[__ybkt];
23866: if (!__y_prev_n)
23866: return false;
23866:
23866: __node_type* __y_n = static_cast<__node_type*>(__y_prev_n->_M_nxt);
23866: for (;; __y_n = __y_n->_M_next())
23866: {
23866: if (__this->key_eq()(_ExtractKey()(__y_n->_M_v()),
23866: _ExtractKey()(*__itx)))
23866: break;
23866:
23866: if (!__y_n->_M_nxt
23866: || __other._M_bucket_index(__y_n->_M_next()) != __ybkt)
23866: return false;
23866: }
23866:
23866: typename __hashtable::const_iterator __ity(__y_n);
23866: for (auto __ity_end = __ity; __ity_end != __other.end(); ++__ity_end)
23866: if (--__x_count == 0)
23866: break;
23866:
23866: if (__x_count != 0)
23866: return false;
23866:
23866: if (!std::is_permutation(__itx, __itx_end, __ity))
23866: return false;
23866:
23866: __itx = __itx_end;
23866: }
23866: return true;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename _NodeAlloc>
23866: struct _Hashtable_alloc : private _Hashtable_ebo_helper<0, _NodeAlloc>
23866: {
23866: private:
23866: using __ebo_node_alloc = _Hashtable_ebo_helper<0, _NodeAlloc>;
23866: public:
23866: using __node_type = typename _NodeAlloc::value_type;
23866: using __node_alloc_type = _NodeAlloc;
23866:
23866: using __node_alloc_traits = __gnu_cxx::__alloc_traits<__node_alloc_type>;
23866:
23866: using __value_alloc_traits = typename __node_alloc_traits::template
23866: rebind_traits<typename __node_type::value_type>;
23866:
23866: using __node_base = __detail::_Hash_node_base;
23866: using __bucket_type = __node_base*;
23866: using __bucket_alloc_type =
23866: __alloc_rebind<__node_alloc_type, __bucket_type>;
23866: using __bucket_alloc_traits = std::allocator_traits<__bucket_alloc_type>;
23866:
23866: _Hashtable_alloc() = default;
23866: _Hashtable_alloc(const _Hashtable_alloc&) = default;
23866: _Hashtable_alloc(_Hashtable_alloc&&) = default;
23866:
23866: template<typename _Alloc>
23866: _Hashtable_alloc(_Alloc&& __a)
23866: : __ebo_node_alloc(std::forward<_Alloc>(__a))
23866: { }
23866:
23866: __node_alloc_type&
23866: _M_node_allocator()
23866: { return __ebo_node_alloc::_M_get(); }
23866:
23866: const __node_alloc_type&
23866: _M_node_allocator() const
23866: { return __ebo_node_alloc::_M_cget(); }
23866:
23866:
23866: template<typename... _Args>
23866: __node_type*
23866: _M_allocate_node(_Args&&... __args);
23866:
23866:
23866: void
23866: _M_deallocate_node(__node_type* __n);
23866:
23866:
23866: void
23866: _M_deallocate_node_ptr(__node_type* __n);
23866:
23866:
23866:
23866: void
23866: _M_deallocate_nodes(__node_type* __n);
23866:
23866: __bucket_type*
23866: _M_allocate_buckets(std::size_t __bkt_count);
23866:
23866: void
23866: _M_deallocate_buckets(__bucket_type*, std::size_t __bkt_count);
23866: };
23866:
23866:
23866:
23866: template<typename _NodeAlloc>
23866: template<typename... _Args>
23866: auto
23866: _Hashtable_alloc<_NodeAlloc>::_M_allocate_node(_Args&&... __args)
23866: -> __node_type*
23866: {
23866: auto __nptr = __node_alloc_traits::allocate(_M_node_allocator(), 1);
23866: __node_type* __n = std::__to_address(__nptr);
23866: try
23866: {
23866: ::new ((void*)__n) __node_type;
23866: __node_alloc_traits::construct(_M_node_allocator(),
23866: __n->_M_valptr(),
23866: std::forward<_Args>(__args)...);
23866: return __n;
23866: }
23866: catch(...)
23866: {
23866: __node_alloc_traits::deallocate(_M_node_allocator(), __nptr, 1);
23866: throw;
23866: }
23866: }
23866:
23866: template<typename _NodeAlloc>
23866: void
23866: _Hashtable_alloc<_NodeAlloc>::_M_deallocate_node(__node_type* __n)
23866: {
23866: __node_alloc_traits::destroy(_M_node_allocator(), __n->_M_valptr());
23866: _M_deallocate_node_ptr(__n);
23866: }
23866:
23866: template<typename _NodeAlloc>
23866: void
23866: _Hashtable_alloc<_NodeAlloc>::_M_deallocate_node_ptr(__node_type* __n)
23866: {
23866: typedef typename __node_alloc_traits::pointer _Ptr;
23866: auto __ptr = std::pointer_traits<_Ptr>::pointer_to(*__n);
23866: __n->~__node_type();
23866: __node_alloc_traits::deallocate(_M_node_allocator(), __ptr, 1);
23866: }
23866:
23866: template<typename _NodeAlloc>
23866: void
23866: _Hashtable_alloc<_NodeAlloc>::_M_deallocate_nodes(__node_type* __n)
23866: {
23866: while (__n)
23866: {
23866: __node_type* __tmp = __n;
23866: __n = __n->_M_next();
23866: _M_deallocate_node(__tmp);
23866: }
23866: }
23866:
23866: template<typename _NodeAlloc>
23866: typename _Hashtable_alloc<_NodeAlloc>::__bucket_type*
23866: _Hashtable_alloc<_NodeAlloc>::_M_allocate_buckets(std::size_t __bkt_count)
23866: {
23866: __bucket_alloc_type __alloc(_M_node_allocator());
23866:
23866: auto __ptr = __bucket_alloc_traits::allocate(__alloc, __bkt_count);
23866: __bucket_type* __p = std::__to_address(__ptr);
23866: __builtin_memset(__p, 0, __bkt_count * sizeof(__bucket_type));
23866: return __p;
23866: }
23866:
23866: template<typename _NodeAlloc>
23866: void
23866: _Hashtable_alloc<_NodeAlloc>::_M_deallocate_buckets(__bucket_type* __bkts,
23866: std::size_t __bkt_count)
23866: {
23866: typedef typename __bucket_alloc_traits::pointer _Ptr;
23866: auto __ptr = std::pointer_traits<_Ptr>::pointer_to(*__bkts);
23866: __bucket_alloc_type __alloc(_M_node_allocator());
23866: __bucket_alloc_traits::deallocate(__alloc, __ptr, __bkt_count);
23866: }
23866:
23866:
23866: }
23866:
23866: }
23866: # 36 "/usr/include/c++/10/bits/hashtable.h" 2 3
23866:
23866: # 1 "/usr/include/c++/10/bits/node_handle.h" 1 3
23866: # 32 "/usr/include/c++/10/bits/node_handle.h" 3
23866: #define _NODE_HANDLE 1
23866:
23866:
23866: # 35 "/usr/include/c++/10/bits/node_handle.h" 3
23866:
23866:
23866: #define __cpp_lib_node_extract 201606
23866:
23866: # 1 "/usr/include/c++/10/optional" 1 3
23866: # 30 "/usr/include/c++/10/optional" 3
23866: #define _GLIBCXX_OPTIONAL 1
23866:
23866:
23866: # 33 "/usr/include/c++/10/optional" 3
23866: # 43 "/usr/include/c++/10/optional" 3
23866: # 1 "/usr/include/c++/10/bits/enable_special_members.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/enable_special_members.h" 3
23866: #define _ENABLE_SPECIAL_MEMBERS_H 1
23866:
23866:
23866: # 34 "/usr/include/c++/10/bits/enable_special_members.h" 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: struct _Enable_default_constructor_tag
23866: {
23866: explicit constexpr _Enable_default_constructor_tag() = default;
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<bool _Switch, typename _Tag = void>
23866: struct _Enable_default_constructor
23866: {
23866: constexpr _Enable_default_constructor() noexcept = default;
23866: constexpr _Enable_default_constructor(_Enable_default_constructor const&)
23866: noexcept = default;
23866: constexpr _Enable_default_constructor(_Enable_default_constructor&&)
23866: noexcept = default;
23866: _Enable_default_constructor&
23866: operator=(_Enable_default_constructor const&) noexcept = default;
23866: _Enable_default_constructor&
23866: operator=(_Enable_default_constructor&&) noexcept = default;
23866:
23866:
23866: constexpr explicit
23866: _Enable_default_constructor(_Enable_default_constructor_tag) { }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<bool _Switch, typename _Tag = void>
23866: struct _Enable_destructor { };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<bool _Copy, bool _CopyAssignment,
23866: bool _Move, bool _MoveAssignment,
23866: typename _Tag = void>
23866: struct _Enable_copy_move { };
23866: # 93 "/usr/include/c++/10/bits/enable_special_members.h" 3
23866: template<bool _Default, bool _Destructor,
23866: bool _Copy, bool _CopyAssignment,
23866: bool _Move, bool _MoveAssignment,
23866: typename _Tag = void>
23866: struct _Enable_special_members
23866: : private _Enable_default_constructor<_Default, _Tag>,
23866: private _Enable_destructor<_Destructor, _Tag>,
23866: private _Enable_copy_move<_Copy, _CopyAssignment,
23866: _Move, _MoveAssignment,
23866: _Tag>
23866: { };
23866:
23866:
23866:
23866: template<typename _Tag>
23866: struct _Enable_default_constructor<false, _Tag>
23866: {
23866: constexpr _Enable_default_constructor() noexcept = delete;
23866: constexpr _Enable_default_constructor(_Enable_default_constructor const&)
23866: noexcept = default;
23866: constexpr _Enable_default_constructor(_Enable_default_constructor&&)
23866: noexcept = default;
23866: _Enable_default_constructor&
23866: operator=(_Enable_default_constructor const&) noexcept = default;
23866: _Enable_default_constructor&
23866: operator=(_Enable_default_constructor&&) noexcept = default;
23866:
23866:
23866: constexpr explicit
23866: _Enable_default_constructor(_Enable_default_constructor_tag) { }
23866: };
23866:
23866: template<typename _Tag>
23866: struct _Enable_destructor<false, _Tag>
23866: { ~_Enable_destructor() noexcept = delete; };
23866:
23866: template<typename _Tag>
23866: struct _Enable_copy_move<false, true, true, true, _Tag>
23866: {
23866: constexpr _Enable_copy_move() noexcept = default;
23866: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete;
23866: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move const&) noexcept = default;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move&&) noexcept = default;
23866: };
23866:
23866: template<typename _Tag>
23866: struct _Enable_copy_move<true, false, true, true, _Tag>
23866: {
23866: constexpr _Enable_copy_move() noexcept = default;
23866: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default;
23866: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move const&) noexcept = delete;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move&&) noexcept = default;
23866: };
23866:
23866: template<typename _Tag>
23866: struct _Enable_copy_move<false, false, true, true, _Tag>
23866: {
23866: constexpr _Enable_copy_move() noexcept = default;
23866: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete;
23866: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move const&) noexcept = delete;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move&&) noexcept = default;
23866: };
23866:
23866: template<typename _Tag>
23866: struct _Enable_copy_move<true, true, false, true, _Tag>
23866: {
23866: constexpr _Enable_copy_move() noexcept = default;
23866: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default;
23866: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move const&) noexcept = default;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move&&) noexcept = default;
23866: };
23866:
23866: template<typename _Tag>
23866: struct _Enable_copy_move<false, true, false, true, _Tag>
23866: {
23866: constexpr _Enable_copy_move() noexcept = default;
23866: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete;
23866: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move const&) noexcept = default;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move&&) noexcept = default;
23866: };
23866:
23866: template<typename _Tag>
23866: struct _Enable_copy_move<true, false, false, true, _Tag>
23866: {
23866: constexpr _Enable_copy_move() noexcept = default;
23866: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default;
23866: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move const&) noexcept = delete;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move&&) noexcept = default;
23866: };
23866:
23866: template<typename _Tag>
23866: struct _Enable_copy_move<false, false, false, true, _Tag>
23866: {
23866: constexpr _Enable_copy_move() noexcept = default;
23866: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete;
23866: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move const&) noexcept = delete;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move&&) noexcept = default;
23866: };
23866:
23866: template<typename _Tag>
23866: struct _Enable_copy_move<true, true, true, false, _Tag>
23866: {
23866: constexpr _Enable_copy_move() noexcept = default;
23866: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default;
23866: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move const&) noexcept = default;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move&&) noexcept = delete;
23866: };
23866:
23866: template<typename _Tag>
23866: struct _Enable_copy_move<false, true, true, false, _Tag>
23866: {
23866: constexpr _Enable_copy_move() noexcept = default;
23866: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete;
23866: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move const&) noexcept = default;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move&&) noexcept = delete;
23866: };
23866:
23866: template<typename _Tag>
23866: struct _Enable_copy_move<true, false, true, false, _Tag>
23866: {
23866: constexpr _Enable_copy_move() noexcept = default;
23866: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default;
23866: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move const&) noexcept = delete;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move&&) noexcept = delete;
23866: };
23866:
23866: template<typename _Tag>
23866: struct _Enable_copy_move<false, false, true, false, _Tag>
23866: {
23866: constexpr _Enable_copy_move() noexcept = default;
23866: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete;
23866: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move const&) noexcept = delete;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move&&) noexcept = delete;
23866: };
23866:
23866: template<typename _Tag>
23866: struct _Enable_copy_move<true, true, false, false, _Tag>
23866: {
23866: constexpr _Enable_copy_move() noexcept = default;
23866: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default;
23866: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move const&) noexcept = default;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move&&) noexcept = delete;
23866: };
23866:
23866: template<typename _Tag>
23866: struct _Enable_copy_move<false, true, false, false, _Tag>
23866: {
23866: constexpr _Enable_copy_move() noexcept = default;
23866: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete;
23866: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move const&) noexcept = default;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move&&) noexcept = delete;
23866: };
23866:
23866: template<typename _Tag>
23866: struct _Enable_copy_move<true, false, false, false, _Tag>
23866: {
23866: constexpr _Enable_copy_move() noexcept = default;
23866: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default;
23866: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move const&) noexcept = delete;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move&&) noexcept = delete;
23866: };
23866:
23866: template<typename _Tag>
23866: struct _Enable_copy_move<false, false, false, false, _Tag>
23866: {
23866: constexpr _Enable_copy_move() noexcept = default;
23866: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete;
23866: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move const&) noexcept = delete;
23866: _Enable_copy_move&
23866: operator=(_Enable_copy_move&&) noexcept = delete;
23866: };
23866:
23866:
23866: }
23866: # 44 "/usr/include/c++/10/optional" 2 3
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __cpp_lib_optional 201606L
23866:
23866: template<typename _Tp>
23866: class optional;
23866:
23866:
23866: struct nullopt_t
23866: {
23866:
23866:
23866:
23866:
23866:
23866: enum class _Construct { _Token };
23866:
23866:
23866: explicit constexpr nullopt_t(_Construct) { }
23866: };
23866:
23866:
23866: inline constexpr nullopt_t nullopt { nullopt_t::_Construct::_Token };
23866:
23866:
23866:
23866:
23866:
23866:
23866: class bad_optional_access : public exception
23866: {
23866: public:
23866: bad_optional_access() { }
23866:
23866: virtual const char* what() const noexcept override
23866: { return "bad optional access"; }
23866:
23866: virtual ~bad_optional_access() noexcept = default;
23866: };
23866:
23866: void
23866: __throw_bad_optional_access()
23866: __attribute__((__noreturn__));
23866:
23866:
23866: inline void
23866: __throw_bad_optional_access()
23866: { (throw (bad_optional_access())); }
23866:
23866:
23866:
23866: template <typename _Tp>
23866: struct _Optional_payload_base
23866: {
23866: using _Stored_type = remove_const_t<_Tp>;
23866:
23866: _Optional_payload_base() = default;
23866: ~_Optional_payload_base() = default;
23866:
23866: template<typename... _Args>
23866: constexpr
23866: _Optional_payload_base(in_place_t __tag, _Args&&... __args)
23866: : _M_payload(__tag, std::forward<_Args>(__args)...),
23866: _M_engaged(true)
23866: { }
23866:
23866: template<typename _Up, typename... _Args>
23866: constexpr
23866: _Optional_payload_base(std::initializer_list<_Up> __il,
23866: _Args&&... __args)
23866: : _M_payload(__il, std::forward<_Args>(__args)...),
23866: _M_engaged(true)
23866: { }
23866:
23866:
23866:
23866: constexpr
23866: _Optional_payload_base(bool __engaged,
23866: const _Optional_payload_base& __other)
23866: {
23866: if (__other._M_engaged)
23866: this->_M_construct(__other._M_get());
23866: }
23866:
23866:
23866:
23866: constexpr
23866: _Optional_payload_base(bool __engaged,
23866: _Optional_payload_base&& __other)
23866: {
23866: if (__other._M_engaged)
23866: this->_M_construct(std::move(__other._M_get()));
23866: }
23866:
23866:
23866:
23866: _Optional_payload_base(const _Optional_payload_base&) = default;
23866:
23866:
23866:
23866: _Optional_payload_base(_Optional_payload_base&&) = default;
23866:
23866: _Optional_payload_base&
23866: operator=(const _Optional_payload_base&) = default;
23866:
23866: _Optional_payload_base&
23866: operator=(_Optional_payload_base&&) = default;
23866:
23866:
23866: constexpr void
23866: _M_copy_assign(const _Optional_payload_base& __other)
23866: {
23866: if (this->_M_engaged && __other._M_engaged)
23866: this->_M_get() = __other._M_get();
23866: else
23866: {
23866: if (__other._M_engaged)
23866: this->_M_construct(__other._M_get());
23866: else
23866: this->_M_reset();
23866: }
23866: }
23866:
23866:
23866: constexpr void
23866: _M_move_assign(_Optional_payload_base&& __other)
23866: noexcept(__and_v<is_nothrow_move_constructible<_Tp>,
23866: is_nothrow_move_assignable<_Tp>>)
23866: {
23866: if (this->_M_engaged && __other._M_engaged)
23866: this->_M_get() = std::move(__other._M_get());
23866: else
23866: {
23866: if (__other._M_engaged)
23866: this->_M_construct(std::move(__other._M_get()));
23866: else
23866: this->_M_reset();
23866: }
23866: }
23866:
23866: struct _Empty_byte { };
23866:
23866: template<typename _Up, bool = is_trivially_destructible_v<_Up>>
23866: union _Storage
23866: {
23866: constexpr _Storage() noexcept : _M_empty() { }
23866:
23866: template<typename... _Args>
23866: constexpr
23866: _Storage(in_place_t, _Args&&... __args)
23866: : _M_value(std::forward<_Args>(__args)...)
23866: { }
23866:
23866: template<typename _Vp, typename... _Args>
23866: constexpr
23866: _Storage(std::initializer_list<_Vp> __il, _Args&&... __args)
23866: : _M_value(__il, std::forward<_Args>(__args)...)
23866: { }
23866:
23866: _Empty_byte _M_empty;
23866: _Up _M_value;
23866: };
23866:
23866: template<typename _Up>
23866: union _Storage<_Up, false>
23866: {
23866: constexpr _Storage() noexcept : _M_empty() { }
23866:
23866: template<typename... _Args>
23866: constexpr
23866: _Storage(in_place_t, _Args&&... __args)
23866: : _M_value(std::forward<_Args>(__args)...)
23866: { }
23866:
23866: template<typename _Vp, typename... _Args>
23866: constexpr
23866: _Storage(std::initializer_list<_Vp> __il, _Args&&... __args)
23866: : _M_value(__il, std::forward<_Args>(__args)...)
23866: { }
23866:
23866:
23866: ~_Storage() { }
23866:
23866: _Empty_byte _M_empty;
23866: _Up _M_value;
23866: };
23866:
23866: _Storage<_Stored_type> _M_payload;
23866:
23866: bool _M_engaged = false;
23866:
23866: template<typename... _Args>
23866: void
23866: _M_construct(_Args&&... __args)
23866: noexcept(is_nothrow_constructible_v<_Stored_type, _Args...>)
23866: {
23866: ::new ((void *) std::__addressof(this->_M_payload))
23866: _Stored_type(std::forward<_Args>(__args)...);
23866: this->_M_engaged = true;
23866: }
23866:
23866: constexpr void
23866: _M_destroy() noexcept
23866: {
23866: _M_engaged = false;
23866: _M_payload._M_value.~_Stored_type();
23866: }
23866:
23866:
23866:
23866:
23866:
23866: constexpr _Tp&
23866: _M_get() noexcept
23866: { return this->_M_payload._M_value; }
23866:
23866: constexpr const _Tp&
23866: _M_get() const noexcept
23866: { return this->_M_payload._M_value; }
23866:
23866:
23866: constexpr void
23866: _M_reset() noexcept
23866: {
23866: if (this->_M_engaged)
23866: _M_destroy();
23866: }
23866: };
23866:
23866:
23866: template <typename _Tp,
23866: bool =
23866: is_trivially_destructible_v<_Tp>,
23866: bool =
23866: is_trivially_copy_assignable_v<_Tp>
23866: && is_trivially_copy_constructible_v<_Tp>,
23866: bool =
23866: is_trivially_move_assignable_v<_Tp>
23866: && is_trivially_move_constructible_v<_Tp>>
23866: struct _Optional_payload;
23866:
23866:
23866: template <typename _Tp>
23866: struct _Optional_payload<_Tp, true, true, true>
23866: : _Optional_payload_base<_Tp>
23866: {
23866: using _Optional_payload_base<_Tp>::_Optional_payload_base;
23866:
23866: _Optional_payload() = default;
23866: };
23866:
23866:
23866: template <typename _Tp>
23866: struct _Optional_payload<_Tp, true, false, true>
23866: : _Optional_payload_base<_Tp>
23866: {
23866: using _Optional_payload_base<_Tp>::_Optional_payload_base;
23866:
23866: _Optional_payload() = default;
23866: ~_Optional_payload() = default;
23866: _Optional_payload(const _Optional_payload&) = default;
23866: _Optional_payload(_Optional_payload&&) = default;
23866: _Optional_payload& operator=(_Optional_payload&&) = default;
23866:
23866:
23866: constexpr
23866: _Optional_payload&
23866: operator=(const _Optional_payload& __other)
23866: {
23866: this->_M_copy_assign(__other);
23866: return *this;
23866: }
23866: };
23866:
23866:
23866: template <typename _Tp>
23866: struct _Optional_payload<_Tp, true, true, false>
23866: : _Optional_payload_base<_Tp>
23866: {
23866: using _Optional_payload_base<_Tp>::_Optional_payload_base;
23866:
23866: _Optional_payload() = default;
23866: ~_Optional_payload() = default;
23866: _Optional_payload(const _Optional_payload&) = default;
23866: _Optional_payload(_Optional_payload&&) = default;
23866: _Optional_payload& operator=(const _Optional_payload&) = default;
23866:
23866:
23866: constexpr
23866: _Optional_payload&
23866: operator=(_Optional_payload&& __other)
23866: noexcept(__and_v<is_nothrow_move_constructible<_Tp>,
23866: is_nothrow_move_assignable<_Tp>>)
23866: {
23866: this->_M_move_assign(std::move(__other));
23866: return *this;
23866: }
23866: };
23866:
23866:
23866: template <typename _Tp>
23866: struct _Optional_payload<_Tp, true, false, false>
23866: : _Optional_payload_base<_Tp>
23866: {
23866: using _Optional_payload_base<_Tp>::_Optional_payload_base;
23866:
23866: _Optional_payload() = default;
23866: ~_Optional_payload() = default;
23866: _Optional_payload(const _Optional_payload&) = default;
23866: _Optional_payload(_Optional_payload&&) = default;
23866:
23866:
23866: constexpr
23866: _Optional_payload&
23866: operator=(const _Optional_payload& __other)
23866: {
23866: this->_M_copy_assign(__other);
23866: return *this;
23866: }
23866:
23866:
23866: constexpr
23866: _Optional_payload&
23866: operator=(_Optional_payload&& __other)
23866: noexcept(__and_v<is_nothrow_move_constructible<_Tp>,
23866: is_nothrow_move_assignable<_Tp>>)
23866: {
23866: this->_M_move_assign(std::move(__other));
23866: return *this;
23866: }
23866: };
23866:
23866:
23866: template <typename _Tp, bool _Copy, bool _Move>
23866: struct _Optional_payload<_Tp, false, _Copy, _Move>
23866: : _Optional_payload<_Tp, true, false, false>
23866: {
23866:
23866: using _Optional_payload<_Tp, true, false, false>::_Optional_payload;
23866: _Optional_payload() = default;
23866: _Optional_payload(const _Optional_payload&) = default;
23866: _Optional_payload(_Optional_payload&&) = default;
23866: _Optional_payload& operator=(const _Optional_payload&) = default;
23866: _Optional_payload& operator=(_Optional_payload&&) = default;
23866:
23866:
23866: ~_Optional_payload() { this->_M_reset(); }
23866: };
23866:
23866:
23866:
23866: template<typename _Tp, typename _Dp>
23866: class _Optional_base_impl
23866: {
23866: protected:
23866: using _Stored_type = remove_const_t<_Tp>;
23866:
23866:
23866:
23866: template<typename... _Args>
23866: void
23866: _M_construct(_Args&&... __args)
23866: noexcept(is_nothrow_constructible_v<_Stored_type, _Args...>)
23866: {
23866: ::new
23866: (std::__addressof(static_cast<_Dp*>(this)->_M_payload._M_payload))
23866: _Stored_type(std::forward<_Args>(__args)...);
23866: static_cast<_Dp*>(this)->_M_payload._M_engaged = true;
23866: }
23866:
23866: void
23866: _M_destruct() noexcept
23866: { static_cast<_Dp*>(this)->_M_payload._M_destroy(); }
23866:
23866:
23866: constexpr void
23866: _M_reset() noexcept
23866: { static_cast<_Dp*>(this)->_M_payload._M_reset(); }
23866:
23866: constexpr bool _M_is_engaged() const noexcept
23866: { return static_cast<const _Dp*>(this)->_M_payload._M_engaged; }
23866:
23866:
23866: constexpr _Tp&
23866: _M_get() noexcept
23866: {
23866: ;
23866: return static_cast<_Dp*>(this)->_M_payload._M_get();
23866: }
23866:
23866: constexpr const _Tp&
23866: _M_get() const noexcept
23866: {
23866: ;
23866: return static_cast<const _Dp*>(this)->_M_payload._M_get();
23866: }
23866: };
23866: # 471 "/usr/include/c++/10/optional" 3
23866: template<typename _Tp,
23866: bool = is_trivially_copy_constructible_v<_Tp>,
23866: bool = is_trivially_move_constructible_v<_Tp>>
23866: struct _Optional_base
23866: : _Optional_base_impl<_Tp, _Optional_base<_Tp>>
23866: {
23866:
23866: constexpr _Optional_base() = default;
23866:
23866:
23866: template<typename... _Args,
23866: enable_if_t<is_constructible_v<_Tp, _Args&&...>, bool> = false>
23866: constexpr explicit _Optional_base(in_place_t, _Args&&... __args)
23866: : _M_payload(in_place,
23866: std::forward<_Args>(__args)...) { }
23866:
23866: template<typename _Up, typename... _Args,
23866: enable_if_t<is_constructible_v<_Tp,
23866: initializer_list<_Up>&,
23866: _Args&&...>, bool> = false>
23866: constexpr explicit _Optional_base(in_place_t,
23866: initializer_list<_Up> __il,
23866: _Args&&... __args)
23866: : _M_payload(in_place,
23866: __il, std::forward<_Args>(__args)...)
23866: { }
23866:
23866:
23866: constexpr _Optional_base(const _Optional_base& __other)
23866: : _M_payload(__other._M_payload._M_engaged,
23866: __other._M_payload)
23866: { }
23866:
23866: constexpr _Optional_base(_Optional_base&& __other)
23866: noexcept(is_nothrow_move_constructible_v<_Tp>)
23866: : _M_payload(__other._M_payload._M_engaged,
23866: std::move(__other._M_payload))
23866: { }
23866:
23866:
23866: _Optional_base& operator=(const _Optional_base&) = default;
23866: _Optional_base& operator=(_Optional_base&&) = default;
23866:
23866: _Optional_payload<_Tp> _M_payload;
23866: };
23866:
23866: template<typename _Tp>
23866: struct _Optional_base<_Tp, false, true>
23866: : _Optional_base_impl<_Tp, _Optional_base<_Tp>>
23866: {
23866:
23866: constexpr _Optional_base() = default;
23866:
23866:
23866: template<typename... _Args,
23866: enable_if_t<is_constructible_v<_Tp, _Args&&...>, bool> = false>
23866: constexpr explicit _Optional_base(in_place_t, _Args&&... __args)
23866: : _M_payload(in_place,
23866: std::forward<_Args>(__args)...) { }
23866:
23866: template<typename _Up, typename... _Args,
23866: enable_if_t<is_constructible_v<_Tp,
23866: initializer_list<_Up>&,
23866: _Args&&...>, bool> = false>
23866: constexpr explicit _Optional_base(in_place_t,
23866: initializer_list<_Up> __il,
23866: _Args&&... __args)
23866: : _M_payload(in_place,
23866: __il, std::forward<_Args>(__args)...)
23866: { }
23866:
23866:
23866: constexpr _Optional_base(const _Optional_base& __other)
23866: : _M_payload(__other._M_payload._M_engaged,
23866: __other._M_payload)
23866: { }
23866:
23866: constexpr _Optional_base(_Optional_base&& __other) = default;
23866:
23866:
23866: _Optional_base& operator=(const _Optional_base&) = default;
23866: _Optional_base& operator=(_Optional_base&&) = default;
23866:
23866: _Optional_payload<_Tp> _M_payload;
23866: };
23866:
23866: template<typename _Tp>
23866: struct _Optional_base<_Tp, true, false>
23866: : _Optional_base_impl<_Tp, _Optional_base<_Tp>>
23866: {
23866:
23866: constexpr _Optional_base() = default;
23866:
23866:
23866: template<typename... _Args,
23866: enable_if_t<is_constructible_v<_Tp, _Args&&...>, bool> = false>
23866: constexpr explicit _Optional_base(in_place_t, _Args&&... __args)
23866: : _M_payload(in_place,
23866: std::forward<_Args>(__args)...) { }
23866:
23866: template<typename _Up, typename... _Args,
23866: enable_if_t<is_constructible_v<_Tp,
23866: initializer_list<_Up>&,
23866: _Args&&...>, bool> = false>
23866: constexpr explicit _Optional_base(in_place_t,
23866: initializer_list<_Up> __il,
23866: _Args&&... __args)
23866: : _M_payload(in_place,
23866: __il, std::forward<_Args>(__args)...)
23866: { }
23866:
23866:
23866: constexpr _Optional_base(const _Optional_base& __other) = default;
23866:
23866: constexpr _Optional_base(_Optional_base&& __other)
23866: noexcept(is_nothrow_move_constructible_v<_Tp>)
23866: : _M_payload(__other._M_payload._M_engaged,
23866: std::move(__other._M_payload))
23866: { }
23866:
23866:
23866: _Optional_base& operator=(const _Optional_base&) = default;
23866: _Optional_base& operator=(_Optional_base&&) = default;
23866:
23866: _Optional_payload<_Tp> _M_payload;
23866: };
23866:
23866: template<typename _Tp>
23866: struct _Optional_base<_Tp, true, true>
23866: : _Optional_base_impl<_Tp, _Optional_base<_Tp>>
23866: {
23866:
23866: constexpr _Optional_base() = default;
23866:
23866:
23866: template<typename... _Args,
23866: enable_if_t<is_constructible_v<_Tp, _Args&&...>, bool> = false>
23866: constexpr explicit _Optional_base(in_place_t, _Args&&... __args)
23866: : _M_payload(in_place,
23866: std::forward<_Args>(__args)...) { }
23866:
23866: template<typename _Up, typename... _Args,
23866: enable_if_t<is_constructible_v<_Tp,
23866: initializer_list<_Up>&,
23866: _Args&&...>, bool> = false>
23866: constexpr explicit _Optional_base(in_place_t,
23866: initializer_list<_Up> __il,
23866: _Args&&... __args)
23866: : _M_payload(in_place,
23866: __il, std::forward<_Args>(__args)...)
23866: { }
23866:
23866:
23866: constexpr _Optional_base(const _Optional_base& __other) = default;
23866: constexpr _Optional_base(_Optional_base&& __other) = default;
23866:
23866:
23866: _Optional_base& operator=(const _Optional_base&) = default;
23866: _Optional_base& operator=(_Optional_base&&) = default;
23866:
23866: _Optional_payload<_Tp> _M_payload;
23866: };
23866:
23866: template<typename _Tp>
23866: class optional;
23866:
23866: template<typename _Tp, typename _Up>
23866: using __converts_from_optional =
23866: __or_<is_constructible<_Tp, const optional<_Up>&>,
23866: is_constructible<_Tp, optional<_Up>&>,
23866: is_constructible<_Tp, const optional<_Up>&&>,
23866: is_constructible<_Tp, optional<_Up>&&>,
23866: is_convertible<const optional<_Up>&, _Tp>,
23866: is_convertible<optional<_Up>&, _Tp>,
23866: is_convertible<const optional<_Up>&&, _Tp>,
23866: is_convertible<optional<_Up>&&, _Tp>>;
23866:
23866: template<typename _Tp, typename _Up>
23866: using __assigns_from_optional =
23866: __or_<is_assignable<_Tp&, const optional<_Up>&>,
23866: is_assignable<_Tp&, optional<_Up>&>,
23866: is_assignable<_Tp&, const optional<_Up>&&>,
23866: is_assignable<_Tp&, optional<_Up>&&>>;
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: class optional
23866: : private _Optional_base<_Tp>,
23866: private _Enable_copy_move<
23866:
23866: is_copy_constructible_v<_Tp>,
23866:
23866: __and_v<is_copy_constructible<_Tp>, is_copy_assignable<_Tp>>,
23866:
23866: is_move_constructible_v<_Tp>,
23866:
23866: __and_v<is_move_constructible<_Tp>, is_move_assignable<_Tp>>,
23866:
23866: optional<_Tp>>
23866: {
23866: static_assert(!is_same_v<remove_cv_t<_Tp>, nullopt_t>);
23866: static_assert(!is_same_v<remove_cv_t<_Tp>, in_place_t>);
23866: static_assert(!is_reference_v<_Tp>);
23866:
23866: private:
23866: using _Base = _Optional_base<_Tp>;
23866:
23866:
23866: template<typename _Up>
23866: using __not_self = __not_<is_same<optional, __remove_cvref_t<_Up>>>;
23866: template<typename _Up>
23866: using __not_tag = __not_<is_same<in_place_t, __remove_cvref_t<_Up>>>;
23866: template<typename... _Cond>
23866: using _Requires = enable_if_t<__and_v<_Cond...>, bool>;
23866:
23866: public:
23866: using value_type = _Tp;
23866:
23866: constexpr optional() = default;
23866:
23866: constexpr optional(nullopt_t) noexcept { }
23866:
23866:
23866: template<typename _Up = _Tp,
23866: _Requires<__not_self<_Up>, __not_tag<_Up>,
23866: is_constructible<_Tp, _Up&&>,
23866: is_convertible<_Up&&, _Tp>> = true>
23866: constexpr
23866: optional(_Up&& __t)
23866: : _Base(std::in_place, std::forward<_Up>(__t)) { }
23866:
23866: template<typename _Up = _Tp,
23866: _Requires<__not_self<_Up>, __not_tag<_Up>,
23866: is_constructible<_Tp, _Up&&>,
23866: __not_<is_convertible<_Up&&, _Tp>>> = false>
23866: explicit constexpr
23866: optional(_Up&& __t)
23866: : _Base(std::in_place, std::forward<_Up>(__t)) { }
23866:
23866: template<typename _Up,
23866: _Requires<__not_<is_same<_Tp, _Up>>,
23866: is_constructible<_Tp, const _Up&>,
23866: is_convertible<const _Up&, _Tp>,
23866: __not_<__converts_from_optional<_Tp, _Up>>> = true>
23866: constexpr
23866: optional(const optional<_Up>& __t)
23866: {
23866: if (__t)
23866: emplace(*__t);
23866: }
23866:
23866: template<typename _Up,
23866: _Requires<__not_<is_same<_Tp, _Up>>,
23866: is_constructible<_Tp, const _Up&>,
23866: __not_<is_convertible<const _Up&, _Tp>>,
23866: __not_<__converts_from_optional<_Tp, _Up>>> = false>
23866: explicit constexpr
23866: optional(const optional<_Up>& __t)
23866: {
23866: if (__t)
23866: emplace(*__t);
23866: }
23866:
23866: template <typename _Up,
23866: _Requires<__not_<is_same<_Tp, _Up>>,
23866: is_constructible<_Tp, _Up&&>,
23866: is_convertible<_Up&&, _Tp>,
23866: __not_<__converts_from_optional<_Tp, _Up>>> = true>
23866: constexpr
23866: optional(optional<_Up>&& __t)
23866: {
23866: if (__t)
23866: emplace(std::move(*__t));
23866: }
23866:
23866: template <typename _Up,
23866: _Requires<__not_<is_same<_Tp, _Up>>,
23866: is_constructible<_Tp, _Up&&>,
23866: __not_<is_convertible<_Up&&, _Tp>>,
23866: __not_<__converts_from_optional<_Tp, _Up>>> = false>
23866: explicit constexpr
23866: optional(optional<_Up>&& __t)
23866: {
23866: if (__t)
23866: emplace(std::move(*__t));
23866: }
23866:
23866: template<typename... _Args,
23866: _Requires<is_constructible<_Tp, _Args&&...>> = false>
23866: explicit constexpr
23866: optional(in_place_t, _Args&&... __args)
23866: : _Base(std::in_place, std::forward<_Args>(__args)...) { }
23866:
23866: template<typename _Up, typename... _Args,
23866: _Requires<is_constructible<_Tp,
23866: initializer_list<_Up>&,
23866: _Args&&...>> = false>
23866: explicit constexpr
23866: optional(in_place_t, initializer_list<_Up> __il, _Args&&... __args)
23866: : _Base(std::in_place, __il, std::forward<_Args>(__args)...) { }
23866:
23866:
23866: optional&
23866: operator=(nullopt_t) noexcept
23866: {
23866: this->_M_reset();
23866: return *this;
23866: }
23866:
23866: template<typename _Up = _Tp>
23866: enable_if_t<__and_v<__not_self<_Up>,
23866: __not_<__and_<is_scalar<_Tp>,
23866: is_same<_Tp, decay_t<_Up>>>>,
23866: is_constructible<_Tp, _Up>,
23866: is_assignable<_Tp&, _Up>>,
23866: optional&>
23866: operator=(_Up&& __u)
23866: {
23866: if (this->_M_is_engaged())
23866: this->_M_get() = std::forward<_Up>(__u);
23866: else
23866: this->_M_construct(std::forward<_Up>(__u));
23866:
23866: return *this;
23866: }
23866:
23866: template<typename _Up>
23866: enable_if_t<__and_v<__not_<is_same<_Tp, _Up>>,
23866: is_constructible<_Tp, const _Up&>,
23866: is_assignable<_Tp&, _Up>,
23866: __not_<__converts_from_optional<_Tp, _Up>>,
23866: __not_<__assigns_from_optional<_Tp, _Up>>>,
23866: optional&>
23866: operator=(const optional<_Up>& __u)
23866: {
23866: if (__u)
23866: {
23866: if (this->_M_is_engaged())
23866: this->_M_get() = *__u;
23866: else
23866: this->_M_construct(*__u);
23866: }
23866: else
23866: {
23866: this->_M_reset();
23866: }
23866: return *this;
23866: }
23866:
23866: template<typename _Up>
23866: enable_if_t<__and_v<__not_<is_same<_Tp, _Up>>,
23866: is_constructible<_Tp, _Up>,
23866: is_assignable<_Tp&, _Up>,
23866: __not_<__converts_from_optional<_Tp, _Up>>,
23866: __not_<__assigns_from_optional<_Tp, _Up>>>,
23866: optional&>
23866: operator=(optional<_Up>&& __u)
23866: {
23866: if (__u)
23866: {
23866: if (this->_M_is_engaged())
23866: this->_M_get() = std::move(*__u);
23866: else
23866: this->_M_construct(std::move(*__u));
23866: }
23866: else
23866: {
23866: this->_M_reset();
23866: }
23866:
23866: return *this;
23866: }
23866:
23866: template<typename... _Args>
23866: enable_if_t<is_constructible_v<_Tp, _Args&&...>, _Tp&>
23866: emplace(_Args&&... __args)
23866: {
23866: this->_M_reset();
23866: this->_M_construct(std::forward<_Args>(__args)...);
23866: return this->_M_get();
23866: }
23866:
23866: template<typename _Up, typename... _Args>
23866: enable_if_t<is_constructible_v<_Tp, initializer_list<_Up>&,
23866: _Args&&...>, _Tp&>
23866: emplace(initializer_list<_Up> __il, _Args&&... __args)
23866: {
23866: this->_M_reset();
23866: this->_M_construct(__il, std::forward<_Args>(__args)...);
23866: return this->_M_get();
23866: }
23866:
23866:
23866:
23866:
23866: void
23866: swap(optional& __other)
23866: noexcept(is_nothrow_move_constructible_v<_Tp>
23866: && is_nothrow_swappable_v<_Tp>)
23866: {
23866: using std::swap;
23866:
23866: if (this->_M_is_engaged() && __other._M_is_engaged())
23866: swap(this->_M_get(), __other._M_get());
23866: else if (this->_M_is_engaged())
23866: {
23866: __other._M_construct(std::move(this->_M_get()));
23866: this->_M_destruct();
23866: }
23866: else if (__other._M_is_engaged())
23866: {
23866: this->_M_construct(std::move(__other._M_get()));
23866: __other._M_destruct();
23866: }
23866: }
23866:
23866:
23866: constexpr const _Tp*
23866: operator->() const
23866: { return std::__addressof(this->_M_get()); }
23866:
23866: constexpr _Tp*
23866: operator->()
23866: { return std::__addressof(this->_M_get()); }
23866:
23866: constexpr const _Tp&
23866: operator*() const&
23866: { return this->_M_get(); }
23866:
23866: constexpr _Tp&
23866: operator*()&
23866: { return this->_M_get(); }
23866:
23866: constexpr _Tp&&
23866: operator*()&&
23866: { return std::move(this->_M_get()); }
23866:
23866: constexpr const _Tp&&
23866: operator*() const&&
23866: { return std::move(this->_M_get()); }
23866:
23866: constexpr explicit operator bool() const noexcept
23866: { return this->_M_is_engaged(); }
23866:
23866: constexpr bool has_value() const noexcept
23866: { return this->_M_is_engaged(); }
23866:
23866: constexpr const _Tp&
23866: value() const&
23866: {
23866: return this->_M_is_engaged()
23866: ? this->_M_get()
23866: : (__throw_bad_optional_access(), this->_M_get());
23866: }
23866:
23866: constexpr _Tp&
23866: value()&
23866: {
23866: return this->_M_is_engaged()
23866: ? this->_M_get()
23866: : (__throw_bad_optional_access(), this->_M_get());
23866: }
23866:
23866: constexpr _Tp&&
23866: value()&&
23866: {
23866: return this->_M_is_engaged()
23866: ? std::move(this->_M_get())
23866: : (__throw_bad_optional_access(), std::move(this->_M_get()));
23866: }
23866:
23866: constexpr const _Tp&&
23866: value() const&&
23866: {
23866: return this->_M_is_engaged()
23866: ? std::move(this->_M_get())
23866: : (__throw_bad_optional_access(), std::move(this->_M_get()));
23866: }
23866:
23866: template<typename _Up>
23866: constexpr _Tp
23866: value_or(_Up&& __u) const&
23866: {
23866: static_assert(is_copy_constructible_v<_Tp>);
23866: static_assert(is_convertible_v<_Up&&, _Tp>);
23866:
23866: return this->_M_is_engaged()
23866: ? this->_M_get() : static_cast<_Tp>(std::forward<_Up>(__u));
23866: }
23866:
23866: template<typename _Up>
23866: constexpr _Tp
23866: value_or(_Up&& __u) &&
23866: {
23866: static_assert(is_move_constructible_v<_Tp>);
23866: static_assert(is_convertible_v<_Up&&, _Tp>);
23866:
23866: return this->_M_is_engaged()
23866: ? std::move(this->_M_get())
23866: : static_cast<_Tp>(std::forward<_Up>(__u));
23866: }
23866:
23866: void reset() noexcept { this->_M_reset(); }
23866: };
23866:
23866: template<typename _Tp>
23866: using __optional_relop_t =
23866: enable_if_t<is_convertible<_Tp, bool>::value, bool>;
23866:
23866: template<typename _Tp, typename _Up>
23866: using __optional_eq_t = __optional_relop_t<
23866: decltype(std::declval<const _Tp&>() == std::declval<const _Up&>())
23866: >;
23866:
23866: template<typename _Tp, typename _Up>
23866: using __optional_ne_t = __optional_relop_t<
23866: decltype(std::declval<const _Tp&>() != std::declval<const _Up&>())
23866: >;
23866:
23866: template<typename _Tp, typename _Up>
23866: using __optional_lt_t = __optional_relop_t<
23866: decltype(std::declval<const _Tp&>() < std::declval<const _Up&>())
23866: >;
23866:
23866: template<typename _Tp, typename _Up>
23866: using __optional_gt_t = __optional_relop_t<
23866: decltype(std::declval<const _Tp&>() > std::declval<const _Up&>())
23866: >;
23866:
23866: template<typename _Tp, typename _Up>
23866: using __optional_le_t = __optional_relop_t<
23866: decltype(std::declval<const _Tp&>() <= std::declval<const _Up&>())
23866: >;
23866:
23866: template<typename _Tp, typename _Up>
23866: using __optional_ge_t = __optional_relop_t<
23866: decltype(std::declval<const _Tp&>() >= std::declval<const _Up&>())
23866: >;
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr auto
23866: operator==(const optional<_Tp>& __lhs, const optional<_Up>& __rhs)
23866: -> __optional_eq_t<_Tp, _Up>
23866: {
23866: return static_cast<bool>(__lhs) == static_cast<bool>(__rhs)
23866: && (!__lhs || *__lhs == *__rhs);
23866: }
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr auto
23866: operator!=(const optional<_Tp>& __lhs, const optional<_Up>& __rhs)
23866: -> __optional_ne_t<_Tp, _Up>
23866: {
23866: return static_cast<bool>(__lhs) != static_cast<bool>(__rhs)
23866: || (static_cast<bool>(__lhs) && *__lhs != *__rhs);
23866: }
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr auto
23866: operator<(const optional<_Tp>& __lhs, const optional<_Up>& __rhs)
23866: -> __optional_lt_t<_Tp, _Up>
23866: {
23866: return static_cast<bool>(__rhs) && (!__lhs || *__lhs < *__rhs);
23866: }
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr auto
23866: operator>(const optional<_Tp>& __lhs, const optional<_Up>& __rhs)
23866: -> __optional_gt_t<_Tp, _Up>
23866: {
23866: return static_cast<bool>(__lhs) && (!__rhs || *__lhs > *__rhs);
23866: }
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr auto
23866: operator<=(const optional<_Tp>& __lhs, const optional<_Up>& __rhs)
23866: -> __optional_le_t<_Tp, _Up>
23866: {
23866: return !__lhs || (static_cast<bool>(__rhs) && *__lhs <= *__rhs);
23866: }
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr auto
23866: operator>=(const optional<_Tp>& __lhs, const optional<_Up>& __rhs)
23866: -> __optional_ge_t<_Tp, _Up>
23866: {
23866: return !__rhs || (static_cast<bool>(__lhs) && *__lhs >= *__rhs);
23866: }
23866: # 1073 "/usr/include/c++/10/optional" 3
23866: template<typename _Tp>
23866: constexpr bool
23866: operator==(const optional<_Tp>& __lhs, nullopt_t) noexcept
23866: { return !__lhs; }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr bool
23866: operator==(nullopt_t, const optional<_Tp>& __rhs) noexcept
23866: { return !__rhs; }
23866:
23866: template<typename _Tp>
23866: constexpr bool
23866: operator!=(const optional<_Tp>& __lhs, nullopt_t) noexcept
23866: { return static_cast<bool>(__lhs); }
23866:
23866: template<typename _Tp>
23866: constexpr bool
23866: operator!=(nullopt_t, const optional<_Tp>& __rhs) noexcept
23866: { return static_cast<bool>(__rhs); }
23866:
23866: template<typename _Tp>
23866: constexpr bool
23866: operator<(const optional<_Tp>& , nullopt_t) noexcept
23866: { return false; }
23866:
23866: template<typename _Tp>
23866: constexpr bool
23866: operator<(nullopt_t, const optional<_Tp>& __rhs) noexcept
23866: { return static_cast<bool>(__rhs); }
23866:
23866: template<typename _Tp>
23866: constexpr bool
23866: operator>(const optional<_Tp>& __lhs, nullopt_t) noexcept
23866: { return static_cast<bool>(__lhs); }
23866:
23866: template<typename _Tp>
23866: constexpr bool
23866: operator>(nullopt_t, const optional<_Tp>& ) noexcept
23866: { return false; }
23866:
23866: template<typename _Tp>
23866: constexpr bool
23866: operator<=(const optional<_Tp>& __lhs, nullopt_t) noexcept
23866: { return !__lhs; }
23866:
23866: template<typename _Tp>
23866: constexpr bool
23866: operator<=(nullopt_t, const optional<_Tp>& ) noexcept
23866: { return true; }
23866:
23866: template<typename _Tp>
23866: constexpr bool
23866: operator>=(const optional<_Tp>& , nullopt_t) noexcept
23866: { return true; }
23866:
23866: template<typename _Tp>
23866: constexpr bool
23866: operator>=(nullopt_t, const optional<_Tp>& __rhs) noexcept
23866: { return !__rhs; }
23866:
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr auto
23866: operator==(const optional<_Tp>& __lhs, const _Up& __rhs)
23866: -> __optional_eq_t<_Tp, _Up>
23866: { return __lhs && *__lhs == __rhs; }
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr auto
23866: operator==(const _Up& __lhs, const optional<_Tp>& __rhs)
23866: -> __optional_eq_t<_Up, _Tp>
23866: { return __rhs && __lhs == *__rhs; }
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr auto
23866: operator!=(const optional<_Tp>& __lhs, const _Up& __rhs)
23866: -> __optional_ne_t<_Tp, _Up>
23866: { return !__lhs || *__lhs != __rhs; }
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr auto
23866: operator!=(const _Up& __lhs, const optional<_Tp>& __rhs)
23866: -> __optional_ne_t<_Up, _Tp>
23866: { return !__rhs || __lhs != *__rhs; }
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr auto
23866: operator<(const optional<_Tp>& __lhs, const _Up& __rhs)
23866: -> __optional_lt_t<_Tp, _Up>
23866: { return !__lhs || *__lhs < __rhs; }
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr auto
23866: operator<(const _Up& __lhs, const optional<_Tp>& __rhs)
23866: -> __optional_lt_t<_Up, _Tp>
23866: { return __rhs && __lhs < *__rhs; }
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr auto
23866: operator>(const optional<_Tp>& __lhs, const _Up& __rhs)
23866: -> __optional_gt_t<_Tp, _Up>
23866: { return __lhs && *__lhs > __rhs; }
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr auto
23866: operator>(const _Up& __lhs, const optional<_Tp>& __rhs)
23866: -> __optional_gt_t<_Up, _Tp>
23866: { return !__rhs || __lhs > *__rhs; }
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr auto
23866: operator<=(const optional<_Tp>& __lhs, const _Up& __rhs)
23866: -> __optional_le_t<_Tp, _Up>
23866: { return !__lhs || *__lhs <= __rhs; }
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr auto
23866: operator<=(const _Up& __lhs, const optional<_Tp>& __rhs)
23866: -> __optional_le_t<_Up, _Tp>
23866: { return __rhs && __lhs <= *__rhs; }
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr auto
23866: operator>=(const optional<_Tp>& __lhs, const _Up& __rhs)
23866: -> __optional_ge_t<_Tp, _Up>
23866: { return __lhs && *__lhs >= __rhs; }
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr auto
23866: operator>=(const _Up& __lhs, const optional<_Tp>& __rhs)
23866: -> __optional_ge_t<_Up, _Tp>
23866: { return !__rhs || __lhs >= *__rhs; }
23866: # 1224 "/usr/include/c++/10/optional" 3
23866: template<typename _Tp>
23866: inline enable_if_t<is_move_constructible_v<_Tp> && is_swappable_v<_Tp>>
23866: swap(optional<_Tp>& __lhs, optional<_Tp>& __rhs)
23866: noexcept(noexcept(__lhs.swap(__rhs)))
23866: { __lhs.swap(__rhs); }
23866:
23866: template<typename _Tp>
23866: enable_if_t<!(is_move_constructible_v<_Tp> && is_swappable_v<_Tp>)>
23866: swap(optional<_Tp>&, optional<_Tp>&) = delete;
23866:
23866: template<typename _Tp>
23866: constexpr optional<decay_t<_Tp>>
23866: make_optional(_Tp&& __t)
23866: { return optional<decay_t<_Tp>> { std::forward<_Tp>(__t) }; }
23866:
23866: template<typename _Tp, typename ..._Args>
23866: constexpr optional<_Tp>
23866: make_optional(_Args&&... __args)
23866: { return optional<_Tp> { in_place, std::forward<_Args>(__args)... }; }
23866:
23866: template<typename _Tp, typename _Up, typename ..._Args>
23866: constexpr optional<_Tp>
23866: make_optional(initializer_list<_Up> __il, _Args&&... __args)
23866: { return optional<_Tp> { in_place, __il, std::forward<_Args>(__args)... }; }
23866:
23866:
23866:
23866: template<typename _Tp, typename _Up = remove_const_t<_Tp>,
23866: bool = __poison_hash<_Up>::__enable_hash_call>
23866: struct __optional_hash_call_base
23866: {
23866: size_t
23866: operator()(const optional<_Tp>& __t) const
23866: noexcept(noexcept(hash<_Up>{}(*__t)))
23866: {
23866:
23866:
23866: constexpr size_t __magic_disengaged_hash = static_cast<size_t>(-3333);
23866: return __t ? hash<_Up>{}(*__t) : __magic_disengaged_hash;
23866: }
23866: };
23866:
23866: template<typename _Tp, typename _Up>
23866: struct __optional_hash_call_base<_Tp, _Up, false> {};
23866:
23866: template<typename _Tp>
23866: struct hash<optional<_Tp>>
23866: : private __poison_hash<remove_const_t<_Tp>>,
23866: public __optional_hash_call_base<_Tp>
23866: {
23866: using result_type [[__deprecated__]] = size_t;
23866: using argument_type [[__deprecated__]] = optional<_Tp>;
23866: };
23866:
23866: template<typename _Tp>
23866: struct __is_fast_hash<hash<optional<_Tp>>> : __is_fast_hash<hash<_Tp>>
23866: { };
23866:
23866:
23866:
23866:
23866: template <typename _Tp> optional(_Tp) -> optional<_Tp>;
23866:
23866:
23866:
23866: }
23866: # 40 "/usr/include/c++/10/bits/node_handle.h" 2 3
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: template<typename _Val, typename _NodeAlloc>
23866: class _Node_handle_common
23866: {
23866: using _AllocTraits = allocator_traits<_NodeAlloc>;
23866:
23866: public:
23866: using allocator_type = __alloc_rebind<_NodeAlloc, _Val>;
23866:
23866: allocator_type
23866: get_allocator() const noexcept
23866: {
23866: ;
23866: return allocator_type(*_M_alloc);
23866: }
23866:
23866: explicit operator bool() const noexcept { return _M_ptr != nullptr; }
23866:
23866: [[nodiscard]] bool empty() const noexcept { return _M_ptr == nullptr; }
23866:
23866: protected:
23866: constexpr _Node_handle_common() noexcept : _M_ptr(), _M_alloc() {}
23866:
23866: ~_Node_handle_common() { _M_destroy(); }
23866:
23866: _Node_handle_common(_Node_handle_common&& __nh) noexcept
23866: : _M_ptr(__nh._M_ptr), _M_alloc(std::move(__nh._M_alloc))
23866: {
23866: __nh._M_ptr = nullptr;
23866: __nh._M_alloc = nullopt;
23866: }
23866:
23866: _Node_handle_common&
23866: operator=(_Node_handle_common&& __nh) noexcept
23866: {
23866: _M_destroy();
23866: _M_ptr = __nh._M_ptr;
23866: if constexpr (is_move_assignable_v<_NodeAlloc>)
23866: {
23866: if (_AllocTraits::propagate_on_container_move_assignment::value
23866: || !this->_M_alloc)
23866: this->_M_alloc = std::move(__nh._M_alloc);
23866: else
23866: {
23866: ;
23866: }
23866: }
23866: else
23866: {
23866: ;
23866: }
23866: __nh._M_ptr = nullptr;
23866: __nh._M_alloc = nullopt;
23866: return *this;
23866: }
23866:
23866: _Node_handle_common(typename _AllocTraits::pointer __ptr,
23866: const _NodeAlloc& __alloc)
23866: : _M_ptr(__ptr), _M_alloc(__alloc) { }
23866:
23866: void
23866: _M_swap(_Node_handle_common& __nh) noexcept
23866: {
23866: using std::swap;
23866: swap(_M_ptr, __nh._M_ptr);
23866: if (_AllocTraits::propagate_on_container_swap::value
23866: || !_M_alloc || !__nh._M_alloc)
23866: _M_alloc.swap(__nh._M_alloc);
23866: else
23866: {
23866: ;
23866: }
23866: }
23866:
23866: private:
23866: void
23866: _M_destroy() noexcept
23866: {
23866: if (_M_ptr != nullptr)
23866: {
23866: allocator_type __alloc(*_M_alloc);
23866: allocator_traits<allocator_type>::destroy(__alloc,
23866: _M_ptr->_M_valptr());
23866: _AllocTraits::deallocate(*_M_alloc, _M_ptr, 1);
23866: }
23866: }
23866:
23866: protected:
23866: typename _AllocTraits::pointer _M_ptr;
23866: private:
23866: optional<_NodeAlloc> _M_alloc;
23866:
23866: template<typename _Key2, typename _Value2, typename _KeyOfValue,
23866: typename _Compare, typename _ValueAlloc>
23866: friend class _Rb_tree;
23866: };
23866:
23866:
23866: template<typename _Key, typename _Value, typename _NodeAlloc>
23866: class _Node_handle : public _Node_handle_common<_Value, _NodeAlloc>
23866: {
23866: public:
23866: constexpr _Node_handle() noexcept = default;
23866: ~_Node_handle() = default;
23866: _Node_handle(_Node_handle&&) noexcept = default;
23866:
23866: _Node_handle&
23866: operator=(_Node_handle&&) noexcept = default;
23866:
23866: using key_type = _Key;
23866: using mapped_type = typename _Value::second_type;
23866:
23866: key_type&
23866: key() const noexcept
23866: {
23866: ;
23866: return *_M_pkey;
23866: }
23866:
23866: mapped_type&
23866: mapped() const noexcept
23866: {
23866: ;
23866: return *_M_pmapped;
23866: }
23866:
23866: void
23866: swap(_Node_handle& __nh) noexcept
23866: {
23866: this->_M_swap(__nh);
23866: using std::swap;
23866: swap(_M_pkey, __nh._M_pkey);
23866: swap(_M_pmapped, __nh._M_pmapped);
23866: }
23866:
23866: friend void
23866: swap(_Node_handle& __x, _Node_handle& __y)
23866: noexcept(noexcept(__x.swap(__y)))
23866: { __x.swap(__y); }
23866:
23866: private:
23866: using _AllocTraits = allocator_traits<_NodeAlloc>;
23866:
23866: _Node_handle(typename _AllocTraits::pointer __ptr,
23866: const _NodeAlloc& __alloc)
23866: : _Node_handle_common<_Value, _NodeAlloc>(__ptr, __alloc)
23866: {
23866: if (__ptr)
23866: {
23866: auto& __key = const_cast<_Key&>(__ptr->_M_valptr()->first);
23866: _M_pkey = _S_pointer_to(__key);
23866: _M_pmapped = _S_pointer_to(__ptr->_M_valptr()->second);
23866: }
23866: else
23866: {
23866: _M_pkey = nullptr;
23866: _M_pmapped = nullptr;
23866: }
23866: }
23866:
23866: template<typename _Tp>
23866: using __pointer
23866: = __ptr_rebind<typename _AllocTraits::pointer,
23866: remove_reference_t<_Tp>>;
23866:
23866: __pointer<_Key> _M_pkey = nullptr;
23866: __pointer<typename _Value::second_type> _M_pmapped = nullptr;
23866:
23866: template<typename _Tp>
23866: __pointer<_Tp>
23866: _S_pointer_to(_Tp& __obj)
23866: { return pointer_traits<__pointer<_Tp>>::pointer_to(__obj); }
23866:
23866: const key_type&
23866: _M_key() const noexcept { return key(); }
23866:
23866: template<typename _Key2, typename _Value2, typename _KeyOfValue,
23866: typename _Compare, typename _ValueAlloc>
23866: friend class _Rb_tree;
23866:
23866: template<typename _Key2, typename _Value2, typename _ValueAlloc,
23866: typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash,
23866: typename _RehashPolicy, typename _Traits>
23866: friend class _Hashtable;
23866: };
23866:
23866:
23866: template<typename _Value, typename _NodeAlloc>
23866: class _Node_handle<_Value, _Value, _NodeAlloc>
23866: : public _Node_handle_common<_Value, _NodeAlloc>
23866: {
23866: public:
23866: constexpr _Node_handle() noexcept = default;
23866: ~_Node_handle() = default;
23866: _Node_handle(_Node_handle&&) noexcept = default;
23866:
23866: _Node_handle&
23866: operator=(_Node_handle&&) noexcept = default;
23866:
23866: using value_type = _Value;
23866:
23866: value_type&
23866: value() const noexcept
23866: {
23866: ;
23866: return *this->_M_ptr->_M_valptr();
23866: }
23866:
23866: void
23866: swap(_Node_handle& __nh) noexcept
23866: { this->_M_swap(__nh); }
23866:
23866: friend void
23866: swap(_Node_handle& __x, _Node_handle& __y)
23866: noexcept(noexcept(__x.swap(__y)))
23866: { __x.swap(__y); }
23866:
23866: private:
23866: using _AllocTraits = allocator_traits<_NodeAlloc>;
23866:
23866: _Node_handle(typename _AllocTraits::pointer __ptr,
23866: const _NodeAlloc& __alloc)
23866: : _Node_handle_common<_Value, _NodeAlloc>(__ptr, __alloc) { }
23866:
23866: const value_type&
23866: _M_key() const noexcept { return value(); }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: friend class _Rb_tree;
23866:
23866: template<typename _Key2, typename _Value2, typename _ValueAlloc,
23866: typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash,
23866: typename _RehashPolicy, typename _Traits>
23866: friend class _Hashtable;
23866: };
23866:
23866:
23866: template<typename _Iterator, typename _NodeHandle>
23866: struct _Node_insert_return
23866: {
23866: _Iterator position = _Iterator();
23866: bool inserted = false;
23866: _NodeHandle node;
23866: };
23866:
23866:
23866: }
23866: # 38 "/usr/include/c++/10/bits/hashtable.h" 2 3
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: template<typename _Tp, typename _Hash>
23866: using __cache_default
23866: = __not_<__and_<
23866: __is_fast_hash<_Hash>,
23866:
23866: __is_nothrow_invocable<const _Hash&, const _Tp&>>>;
23866: # 169 "/usr/include/c++/10/bits/hashtable.h" 3
23866: template<typename _Key, typename _Value, typename _Alloc,
23866: typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash,
23866: typename _RehashPolicy, typename _Traits>
23866: class _Hashtable
23866: : public __detail::_Hashtable_base<_Key, _Value, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _Traits>,
23866: public __detail::_Map_base<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>,
23866: public __detail::_Insert<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>,
23866: public __detail::_Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>,
23866: public __detail::_Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>,
23866: private __detail::_Hashtable_alloc<
23866: __alloc_rebind<_Alloc,
23866: __detail::_Hash_node<_Value,
23866: _Traits::__hash_cached::value>>>
23866: {
23866: static_assert(is_same<typename remove_cv<_Value>::type, _Value>::value,
23866: "unordered container must have a non-const, non-volatile value_type");
23866:
23866: static_assert(is_same<typename _Alloc::value_type, _Value>{},
23866: "unordered container must have the same value_type as its allocator");
23866:
23866:
23866: using __traits_type = _Traits;
23866: using __hash_cached = typename __traits_type::__hash_cached;
23866: using __node_type = __detail::_Hash_node<_Value, __hash_cached::value>;
23866: using __node_alloc_type = __alloc_rebind<_Alloc, __node_type>;
23866:
23866: using __hashtable_alloc = __detail::_Hashtable_alloc<__node_alloc_type>;
23866:
23866: using __value_alloc_traits =
23866: typename __hashtable_alloc::__value_alloc_traits;
23866: using __node_alloc_traits =
23866: typename __hashtable_alloc::__node_alloc_traits;
23866: using __node_base = typename __hashtable_alloc::__node_base;
23866: using __bucket_type = typename __hashtable_alloc::__bucket_type;
23866:
23866: public:
23866: typedef _Key key_type;
23866: typedef _Value value_type;
23866: typedef _Alloc allocator_type;
23866: typedef _Equal key_equal;
23866:
23866:
23866:
23866: typedef typename __value_alloc_traits::pointer pointer;
23866: typedef typename __value_alloc_traits::const_pointer const_pointer;
23866: typedef value_type& reference;
23866: typedef const value_type& const_reference;
23866:
23866: private:
23866: using __rehash_type = _RehashPolicy;
23866: using __rehash_state = typename __rehash_type::_State;
23866:
23866: using __constant_iterators = typename __traits_type::__constant_iterators;
23866: using __unique_keys = typename __traits_type::__unique_keys;
23866:
23866: using __key_extract = typename std::conditional<
23866: __constant_iterators::value,
23866: __detail::_Identity,
23866: __detail::_Select1st>::type;
23866:
23866: using __hashtable_base = __detail::
23866: _Hashtable_base<_Key, _Value, _ExtractKey,
23866: _Equal, _H1, _H2, _Hash, _Traits>;
23866:
23866: using __hash_code_base = typename __hashtable_base::__hash_code_base;
23866: using __hash_code = typename __hashtable_base::__hash_code;
23866: using __ireturn_type = typename __hashtable_base::__ireturn_type;
23866:
23866: using __map_base = __detail::_Map_base<_Key, _Value, _Alloc, _ExtractKey,
23866: _Equal, _H1, _H2, _Hash,
23866: _RehashPolicy, _Traits>;
23866:
23866: using __rehash_base = __detail::_Rehash_base<_Key, _Value, _Alloc,
23866: _ExtractKey, _Equal,
23866: _H1, _H2, _Hash,
23866: _RehashPolicy, _Traits>;
23866:
23866: using __eq_base = __detail::_Equality<_Key, _Value, _Alloc, _ExtractKey,
23866: _Equal, _H1, _H2, _Hash,
23866: _RehashPolicy, _Traits>;
23866:
23866: using __reuse_or_alloc_node_gen_t =
23866: __detail::_ReuseOrAllocNode<__node_alloc_type>;
23866: using __alloc_node_gen_t =
23866: __detail::_AllocNode<__node_alloc_type>;
23866:
23866:
23866: struct _Scoped_node
23866: {
23866:
23866: _Scoped_node(__node_type* __n, __hashtable_alloc* __h)
23866: : _M_h(__h), _M_node(__n) { }
23866:
23866:
23866: template<typename... _Args>
23866: _Scoped_node(__hashtable_alloc* __h, _Args&&... __args)
23866: : _M_h(__h),
23866: _M_node(__h->_M_allocate_node(std::forward<_Args>(__args)...))
23866: { }
23866:
23866:
23866: ~_Scoped_node() { if (_M_node) _M_h->_M_deallocate_node(_M_node); };
23866:
23866: _Scoped_node(const _Scoped_node&) = delete;
23866: _Scoped_node& operator=(const _Scoped_node&) = delete;
23866:
23866: __hashtable_alloc* _M_h;
23866: __node_type* _M_node;
23866: };
23866:
23866: template<typename _Ht>
23866: static constexpr
23866: typename conditional<std::is_lvalue_reference<_Ht>::value,
23866: const value_type&, value_type&&>::type
23866: __fwd_value_for(value_type& __val) noexcept
23866: { return std::move(__val); }
23866:
23866:
23866: template<typename _Cond>
23866: using __if_hash_cached = __or_<__not_<__hash_cached>, _Cond>;
23866:
23866: template<typename _Cond>
23866: using __if_hash_not_cached = __or_<__hash_cached, _Cond>;
23866:
23866:
23866:
23866:
23866:
23866: struct __hash_code_base_access : __hash_code_base
23866: { using __hash_code_base::_M_bucket_index; };
23866:
23866:
23866:
23866: static_assert(noexcept(declval<const __hash_code_base_access&>()
23866: ._M_bucket_index((const __node_type*)nullptr,
23866: (std::size_t)0)),
23866: "Cache the hash code or qualify your functors involved"
23866: " in hash code and bucket index computation with noexcept");
23866:
23866:
23866:
23866: static_assert(__if_hash_cached<is_default_constructible<_H2>>::value,
23866: "Functor used to map hash code to bucket index"
23866: " must be default constructible");
23866:
23866: template<typename _Keya, typename _Valuea, typename _Alloca,
23866: typename _ExtractKeya, typename _Equala,
23866: typename _H1a, typename _H2a, typename _Hasha,
23866: typename _RehashPolicya, typename _Traitsa,
23866: bool _Unique_keysa>
23866: friend struct __detail::_Map_base;
23866:
23866: template<typename _Keya, typename _Valuea, typename _Alloca,
23866: typename _ExtractKeya, typename _Equala,
23866: typename _H1a, typename _H2a, typename _Hasha,
23866: typename _RehashPolicya, typename _Traitsa>
23866: friend struct __detail::_Insert_base;
23866:
23866: template<typename _Keya, typename _Valuea, typename _Alloca,
23866: typename _ExtractKeya, typename _Equala,
23866: typename _H1a, typename _H2a, typename _Hasha,
23866: typename _RehashPolicya, typename _Traitsa,
23866: bool _Constant_iteratorsa>
23866: friend struct __detail::_Insert;
23866:
23866: template<typename _Keya, typename _Valuea, typename _Alloca,
23866: typename _ExtractKeya, typename _Equala,
23866: typename _H1a, typename _H2a, typename _Hasha,
23866: typename _RehashPolicya, typename _Traitsa,
23866: bool _Unique_keysa>
23866: friend struct __detail::_Equality;
23866:
23866: public:
23866: using size_type = typename __hashtable_base::size_type;
23866: using difference_type = typename __hashtable_base::difference_type;
23866:
23866: using iterator = typename __hashtable_base::iterator;
23866: using const_iterator = typename __hashtable_base::const_iterator;
23866:
23866: using local_iterator = typename __hashtable_base::local_iterator;
23866: using const_local_iterator = typename __hashtable_base::
23866: const_local_iterator;
23866:
23866:
23866: using node_type = _Node_handle<_Key, _Value, __node_alloc_type>;
23866: using insert_return_type = _Node_insert_return<iterator, node_type>;
23866:
23866:
23866: private:
23866: __bucket_type* _M_buckets = &_M_single_bucket;
23866: size_type _M_bucket_count = 1;
23866: __node_base _M_before_begin;
23866: size_type _M_element_count = 0;
23866: _RehashPolicy _M_rehash_policy;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: __bucket_type _M_single_bucket = nullptr;
23866:
23866: bool
23866: _M_uses_single_bucket(__bucket_type* __bkts) const
23866: { return __builtin_expect(__bkts == &_M_single_bucket, false); }
23866:
23866: bool
23866: _M_uses_single_bucket() const
23866: { return _M_uses_single_bucket(_M_buckets); }
23866:
23866: __hashtable_alloc&
23866: _M_base_alloc() { return *this; }
23866:
23866: __bucket_type*
23866: _M_allocate_buckets(size_type __bkt_count)
23866: {
23866: if (__builtin_expect(__bkt_count == 1, false))
23866: {
23866: _M_single_bucket = nullptr;
23866: return &_M_single_bucket;
23866: }
23866:
23866: return __hashtable_alloc::_M_allocate_buckets(__bkt_count);
23866: }
23866:
23866: void
23866: _M_deallocate_buckets(__bucket_type* __bkts, size_type __bkt_count)
23866: {
23866: if (_M_uses_single_bucket(__bkts))
23866: return;
23866:
23866: __hashtable_alloc::_M_deallocate_buckets(__bkts, __bkt_count);
23866: }
23866:
23866: void
23866: _M_deallocate_buckets()
23866: { _M_deallocate_buckets(_M_buckets, _M_bucket_count); }
23866:
23866:
23866:
23866: __node_type*
23866: _M_bucket_begin(size_type __bkt) const;
23866:
23866: __node_type*
23866: _M_begin() const
23866: { return static_cast<__node_type*>(_M_before_begin._M_nxt); }
23866:
23866:
23866:
23866: template<typename _Ht>
23866: void
23866: _M_assign_elements(_Ht&&);
23866:
23866: template<typename _Ht, typename _NodeGenerator>
23866: void
23866: _M_assign(_Ht&&, const _NodeGenerator&);
23866:
23866: void
23866: _M_move_assign(_Hashtable&&, true_type);
23866:
23866: void
23866: _M_move_assign(_Hashtable&&, false_type);
23866:
23866: void
23866: _M_reset() noexcept;
23866:
23866: _Hashtable(const _H1& __h1, const _H2& __h2, const _Hash& __h,
23866: const _Equal& __eq, const _ExtractKey& __exk,
23866: const allocator_type& __a)
23866: : __hashtable_base(__exk, __h1, __h2, __h, __eq),
23866: __hashtable_alloc(__node_alloc_type(__a))
23866: { }
23866:
23866: public:
23866:
23866: _Hashtable() = default;
23866: _Hashtable(size_type __bkt_count_hint,
23866: const _H1&, const _H2&, const _Hash&,
23866: const _Equal&, const _ExtractKey&,
23866: const allocator_type&);
23866:
23866: template<typename _InputIterator>
23866: _Hashtable(_InputIterator __first, _InputIterator __last,
23866: size_type __bkt_count_hint,
23866: const _H1&, const _H2&, const _Hash&,
23866: const _Equal&, const _ExtractKey&,
23866: const allocator_type&);
23866:
23866: _Hashtable(const _Hashtable&);
23866:
23866: _Hashtable(_Hashtable&&) noexcept;
23866:
23866: _Hashtable(const _Hashtable&, const allocator_type&);
23866:
23866: _Hashtable(_Hashtable&&, const allocator_type&);
23866:
23866:
23866: explicit
23866: _Hashtable(const allocator_type& __a)
23866: : __hashtable_alloc(__node_alloc_type(__a))
23866: { }
23866:
23866: explicit
23866: _Hashtable(size_type __bkt_count_hint,
23866: const _H1& __hf = _H1(),
23866: const key_equal& __eql = key_equal(),
23866: const allocator_type& __a = allocator_type())
23866: : _Hashtable(__bkt_count_hint, __hf, _H2(), _Hash(), __eql,
23866: __key_extract(), __a)
23866: { }
23866:
23866: template<typename _InputIterator>
23866: _Hashtable(_InputIterator __f, _InputIterator __l,
23866: size_type __bkt_count_hint = 0,
23866: const _H1& __hf = _H1(),
23866: const key_equal& __eql = key_equal(),
23866: const allocator_type& __a = allocator_type())
23866: : _Hashtable(__f, __l, __bkt_count_hint, __hf, _H2(), _Hash(), __eql,
23866: __key_extract(), __a)
23866: { }
23866:
23866: _Hashtable(initializer_list<value_type> __l,
23866: size_type __bkt_count_hint = 0,
23866: const _H1& __hf = _H1(),
23866: const key_equal& __eql = key_equal(),
23866: const allocator_type& __a = allocator_type())
23866: : _Hashtable(__l.begin(), __l.end(), __bkt_count_hint,
23866: __hf, _H2(), _Hash(), __eql,
23866: __key_extract(), __a)
23866: { }
23866:
23866: _Hashtable&
23866: operator=(const _Hashtable& __ht);
23866:
23866: _Hashtable&
23866: operator=(_Hashtable&& __ht)
23866: noexcept(__node_alloc_traits::_S_nothrow_move()
23866: && is_nothrow_move_assignable<_H1>::value
23866: && is_nothrow_move_assignable<_Equal>::value)
23866: {
23866: constexpr bool __move_storage =
23866: __node_alloc_traits::_S_propagate_on_move_assign()
23866: || __node_alloc_traits::_S_always_equal();
23866: _M_move_assign(std::move(__ht), __bool_constant<__move_storage>());
23866: return *this;
23866: }
23866:
23866: _Hashtable&
23866: operator=(initializer_list<value_type> __l)
23866: {
23866: __reuse_or_alloc_node_gen_t __roan(_M_begin(), *this);
23866: _M_before_begin._M_nxt = nullptr;
23866: clear();
23866: this->_M_insert_range(__l.begin(), __l.end(), __roan, __unique_keys());
23866: return *this;
23866: }
23866:
23866: ~_Hashtable() noexcept;
23866:
23866: void
23866: swap(_Hashtable&)
23866: noexcept(__and_<__is_nothrow_swappable<_H1>,
23866: __is_nothrow_swappable<_Equal>>::value);
23866:
23866:
23866: iterator
23866: begin() noexcept
23866: { return iterator(_M_begin()); }
23866:
23866: const_iterator
23866: begin() const noexcept
23866: { return const_iterator(_M_begin()); }
23866:
23866: iterator
23866: end() noexcept
23866: { return iterator(nullptr); }
23866:
23866: const_iterator
23866: end() const noexcept
23866: { return const_iterator(nullptr); }
23866:
23866: const_iterator
23866: cbegin() const noexcept
23866: { return const_iterator(_M_begin()); }
23866:
23866: const_iterator
23866: cend() const noexcept
23866: { return const_iterator(nullptr); }
23866:
23866: size_type
23866: size() const noexcept
23866: { return _M_element_count; }
23866:
23866: [[__nodiscard__]] bool
23866: empty() const noexcept
23866: { return size() == 0; }
23866:
23866: allocator_type
23866: get_allocator() const noexcept
23866: { return allocator_type(this->_M_node_allocator()); }
23866:
23866: size_type
23866: max_size() const noexcept
23866: { return __node_alloc_traits::max_size(this->_M_node_allocator()); }
23866:
23866:
23866: key_equal
23866: key_eq() const
23866: { return this->_M_eq(); }
23866:
23866:
23866:
23866:
23866: size_type
23866: bucket_count() const noexcept
23866: { return _M_bucket_count; }
23866:
23866: size_type
23866: max_bucket_count() const noexcept
23866: { return max_size(); }
23866:
23866: size_type
23866: bucket_size(size_type __bkt) const
23866: { return std::distance(begin(__bkt), end(__bkt)); }
23866:
23866: size_type
23866: bucket(const key_type& __k) const
23866: { return _M_bucket_index(__k, this->_M_hash_code(__k)); }
23866:
23866: local_iterator
23866: begin(size_type __bkt)
23866: {
23866: return local_iterator(*this, _M_bucket_begin(__bkt),
23866: __bkt, _M_bucket_count);
23866: }
23866:
23866: local_iterator
23866: end(size_type __bkt)
23866: { return local_iterator(*this, nullptr, __bkt, _M_bucket_count); }
23866:
23866: const_local_iterator
23866: begin(size_type __bkt) const
23866: {
23866: return const_local_iterator(*this, _M_bucket_begin(__bkt),
23866: __bkt, _M_bucket_count);
23866: }
23866:
23866: const_local_iterator
23866: end(size_type __bkt) const
23866: { return const_local_iterator(*this, nullptr, __bkt, _M_bucket_count); }
23866:
23866:
23866: const_local_iterator
23866: cbegin(size_type __bkt) const
23866: {
23866: return const_local_iterator(*this, _M_bucket_begin(__bkt),
23866: __bkt, _M_bucket_count);
23866: }
23866:
23866: const_local_iterator
23866: cend(size_type __bkt) const
23866: { return const_local_iterator(*this, nullptr, __bkt, _M_bucket_count); }
23866:
23866: float
23866: load_factor() const noexcept
23866: {
23866: return static_cast<float>(size()) / static_cast<float>(bucket_count());
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const _RehashPolicy&
23866: __rehash_policy() const
23866: { return _M_rehash_policy; }
23866:
23866: void
23866: __rehash_policy(const _RehashPolicy& __pol)
23866: { _M_rehash_policy = __pol; }
23866:
23866:
23866: iterator
23866: find(const key_type& __k);
23866:
23866: const_iterator
23866: find(const key_type& __k) const;
23866:
23866: size_type
23866: count(const key_type& __k) const;
23866:
23866: std::pair<iterator, iterator>
23866: equal_range(const key_type& __k);
23866:
23866: std::pair<const_iterator, const_iterator>
23866: equal_range(const key_type& __k) const;
23866:
23866: protected:
23866:
23866: size_type
23866: _M_bucket_index(__node_type* __n) const noexcept
23866: { return __hash_code_base::_M_bucket_index(__n, _M_bucket_count); }
23866:
23866: size_type
23866: _M_bucket_index(const key_type& __k, __hash_code __c) const
23866: { return __hash_code_base::_M_bucket_index(__k, __c, _M_bucket_count); }
23866:
23866:
23866:
23866: __node_base*
23866: _M_find_before_node(size_type, const key_type&, __hash_code) const;
23866:
23866: __node_type*
23866: _M_find_node(size_type __bkt, const key_type& __key,
23866: __hash_code __c) const
23866: {
23866: __node_base* __before_n = _M_find_before_node(__bkt, __key, __c);
23866: if (__before_n)
23866: return static_cast<__node_type*>(__before_n->_M_nxt);
23866: return nullptr;
23866: }
23866:
23866:
23866: void
23866: _M_insert_bucket_begin(size_type, __node_type*);
23866:
23866:
23866: void
23866: _M_remove_bucket_begin(size_type __bkt, __node_type* __next_n,
23866: size_type __next_bkt);
23866:
23866:
23866: __node_base*
23866: _M_get_previous_node(size_type __bkt, __node_base* __n);
23866:
23866:
23866:
23866:
23866: iterator
23866: _M_insert_unique_node(const key_type& __k, size_type __bkt,
23866: __hash_code __code, __node_type* __n,
23866: size_type __n_elt = 1);
23866:
23866:
23866:
23866: iterator
23866: _M_insert_multi_node(__node_type* __hint, const key_type& __k,
23866: __hash_code __code, __node_type* __n);
23866:
23866: template<typename... _Args>
23866: std::pair<iterator, bool>
23866: _M_emplace(true_type, _Args&&... __args);
23866:
23866: template<typename... _Args>
23866: iterator
23866: _M_emplace(false_type __uk, _Args&&... __args)
23866: { return _M_emplace(cend(), __uk, std::forward<_Args>(__args)...); }
23866:
23866:
23866: template<typename... _Args>
23866: iterator
23866: _M_emplace(const_iterator, true_type __uk, _Args&&... __args)
23866: { return _M_emplace(__uk, std::forward<_Args>(__args)...).first; }
23866:
23866: template<typename... _Args>
23866: iterator
23866: _M_emplace(const_iterator, false_type, _Args&&... __args);
23866:
23866: template<typename _Arg, typename _NodeGenerator>
23866: std::pair<iterator, bool>
23866: _M_insert(_Arg&&, const _NodeGenerator&, true_type, size_type = 1);
23866:
23866: template<typename _Arg, typename _NodeGenerator>
23866: iterator
23866: _M_insert(_Arg&& __arg, const _NodeGenerator& __node_gen,
23866: false_type __uk)
23866: {
23866: return _M_insert(cend(), std::forward<_Arg>(__arg), __node_gen,
23866: __uk);
23866: }
23866:
23866:
23866: template<typename _Arg, typename _NodeGenerator>
23866: iterator
23866: _M_insert(const_iterator, _Arg&& __arg,
23866: const _NodeGenerator& __node_gen, true_type __uk)
23866: {
23866: return
23866: _M_insert(std::forward<_Arg>(__arg), __node_gen, __uk).first;
23866: }
23866:
23866:
23866: template<typename _Arg, typename _NodeGenerator>
23866: iterator
23866: _M_insert(const_iterator, _Arg&&,
23866: const _NodeGenerator&, false_type);
23866:
23866: size_type
23866: _M_erase(true_type, const key_type&);
23866:
23866: size_type
23866: _M_erase(false_type, const key_type&);
23866:
23866: iterator
23866: _M_erase(size_type __bkt, __node_base* __prev_n, __node_type* __n);
23866:
23866: public:
23866:
23866: template<typename... _Args>
23866: __ireturn_type
23866: emplace(_Args&&... __args)
23866: { return _M_emplace(__unique_keys(), std::forward<_Args>(__args)...); }
23866:
23866: template<typename... _Args>
23866: iterator
23866: emplace_hint(const_iterator __hint, _Args&&... __args)
23866: {
23866: return _M_emplace(__hint, __unique_keys(),
23866: std::forward<_Args>(__args)...);
23866: }
23866:
23866:
23866:
23866:
23866: iterator
23866: erase(const_iterator);
23866:
23866:
23866: iterator
23866: erase(iterator __it)
23866: { return erase(const_iterator(__it)); }
23866:
23866: size_type
23866: erase(const key_type& __k)
23866: { return _M_erase(__unique_keys(), __k); }
23866:
23866: iterator
23866: erase(const_iterator, const_iterator);
23866:
23866: void
23866: clear() noexcept;
23866:
23866:
23866:
23866: void rehash(size_type __bkt_count);
23866:
23866:
23866:
23866:
23866:
23866:
23866: insert_return_type
23866: _M_reinsert_node(node_type&& __nh)
23866: {
23866: insert_return_type __ret;
23866: if (__nh.empty())
23866: __ret.position = end();
23866: else
23866: {
23866: ;
23866:
23866: const key_type& __k = __nh._M_key();
23866: __hash_code __code = this->_M_hash_code(__k);
23866: size_type __bkt = _M_bucket_index(__k, __code);
23866: if (__node_type* __n = _M_find_node(__bkt, __k, __code))
23866: {
23866: __ret.node = std::move(__nh);
23866: __ret.position = iterator(__n);
23866: __ret.inserted = false;
23866: }
23866: else
23866: {
23866: __ret.position
23866: = _M_insert_unique_node(__k, __bkt, __code, __nh._M_ptr);
23866: __nh._M_ptr = nullptr;
23866: __ret.inserted = true;
23866: }
23866: }
23866: return __ret;
23866: }
23866:
23866:
23866: iterator
23866: _M_reinsert_node_multi(const_iterator __hint, node_type&& __nh)
23866: {
23866: if (__nh.empty())
23866: return end();
23866:
23866: ;
23866:
23866: const key_type& __k = __nh._M_key();
23866: auto __code = this->_M_hash_code(__k);
23866: auto __ret
23866: = _M_insert_multi_node(__hint._M_cur, __k, __code, __nh._M_ptr);
23866: __nh._M_ptr = nullptr;
23866: return __ret;
23866: }
23866:
23866: private:
23866: node_type
23866: _M_extract_node(size_t __bkt, __node_base* __prev_n)
23866: {
23866: __node_type* __n = static_cast<__node_type*>(__prev_n->_M_nxt);
23866: if (__prev_n == _M_buckets[__bkt])
23866: _M_remove_bucket_begin(__bkt, __n->_M_next(),
23866: __n->_M_nxt ? _M_bucket_index(__n->_M_next()) : 0);
23866: else if (__n->_M_nxt)
23866: {
23866: size_type __next_bkt = _M_bucket_index(__n->_M_next());
23866: if (__next_bkt != __bkt)
23866: _M_buckets[__next_bkt] = __prev_n;
23866: }
23866:
23866: __prev_n->_M_nxt = __n->_M_nxt;
23866: __n->_M_nxt = nullptr;
23866: --_M_element_count;
23866: return { __n, this->_M_node_allocator() };
23866: }
23866:
23866: public:
23866:
23866: node_type
23866: extract(const_iterator __pos)
23866: {
23866: size_t __bkt = _M_bucket_index(__pos._M_cur);
23866: return _M_extract_node(__bkt,
23866: _M_get_previous_node(__bkt, __pos._M_cur));
23866: }
23866:
23866:
23866: node_type
23866: extract(const _Key& __k)
23866: {
23866: node_type __nh;
23866: __hash_code __code = this->_M_hash_code(__k);
23866: std::size_t __bkt = _M_bucket_index(__k, __code);
23866: if (__node_base* __prev_node = _M_find_before_node(__bkt, __k, __code))
23866: __nh = _M_extract_node(__bkt, __prev_node);
23866: return __nh;
23866: }
23866:
23866:
23866: template<typename _Compatible_Hashtable>
23866: void
23866: _M_merge_unique(_Compatible_Hashtable& __src) noexcept
23866: {
23866: static_assert(is_same_v<typename _Compatible_Hashtable::node_type,
23866: node_type>, "Node types are compatible");
23866: ;
23866:
23866: auto __n_elt = __src.size();
23866: for (auto __i = __src.begin(), __end = __src.end(); __i != __end;)
23866: {
23866: auto __pos = __i++;
23866: const key_type& __k = this->_M_extract()(*__pos);
23866: __hash_code __code = this->_M_hash_code(__k);
23866: size_type __bkt = _M_bucket_index(__k, __code);
23866: if (_M_find_node(__bkt, __k, __code) == nullptr)
23866: {
23866: auto __nh = __src.extract(__pos);
23866: _M_insert_unique_node(__k, __bkt, __code, __nh._M_ptr,
23866: __n_elt);
23866: __nh._M_ptr = nullptr;
23866: __n_elt = 1;
23866: }
23866: else if (__n_elt != 1)
23866: --__n_elt;
23866: }
23866: }
23866:
23866:
23866: template<typename _Compatible_Hashtable>
23866: void
23866: _M_merge_multi(_Compatible_Hashtable& __src) noexcept
23866: {
23866: static_assert(is_same_v<typename _Compatible_Hashtable::node_type,
23866: node_type>, "Node types are compatible");
23866: ;
23866:
23866: this->reserve(size() + __src.size());
23866: for (auto __i = __src.begin(), __end = __src.end(); __i != __end;)
23866: _M_reinsert_node_multi(cend(), __src.extract(__i++));
23866: }
23866:
23866:
23866: private:
23866:
23866: void _M_rehash_aux(size_type __bkt_count, true_type);
23866:
23866:
23866: void _M_rehash_aux(size_type __bkt_count, false_type);
23866:
23866:
23866:
23866: void _M_rehash(size_type __bkt_count, const __rehash_state& __state);
23866: };
23866:
23866:
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: auto
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: _M_bucket_begin(size_type __bkt) const
23866: -> __node_type*
23866: {
23866: __node_base* __n = _M_buckets[__bkt];
23866: return __n ? static_cast<__node_type*>(__n->_M_nxt) : nullptr;
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: _Hashtable(size_type __bkt_count_hint,
23866: const _H1& __h1, const _H2& __h2, const _Hash& __h,
23866: const _Equal& __eq, const _ExtractKey& __exk,
23866: const allocator_type& __a)
23866: : _Hashtable(__h1, __h2, __h, __eq, __exk, __a)
23866: {
23866: auto __bkt_count = _M_rehash_policy._M_next_bkt(__bkt_count_hint);
23866: if (__bkt_count > _M_bucket_count)
23866: {
23866: _M_buckets = _M_allocate_buckets(__bkt_count);
23866: _M_bucket_count = __bkt_count;
23866: }
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: template<typename _InputIterator>
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: _Hashtable(_InputIterator __f, _InputIterator __l,
23866: size_type __bkt_count_hint,
23866: const _H1& __h1, const _H2& __h2, const _Hash& __h,
23866: const _Equal& __eq, const _ExtractKey& __exk,
23866: const allocator_type& __a)
23866: : _Hashtable(__h1, __h2, __h, __eq, __exk, __a)
23866: {
23866: auto __nb_elems = __detail::__distance_fw(__f, __l);
23866: auto __bkt_count =
23866: _M_rehash_policy._M_next_bkt(
23866: std::max(_M_rehash_policy._M_bkt_for_elements(__nb_elems),
23866: __bkt_count_hint));
23866:
23866: if (__bkt_count > _M_bucket_count)
23866: {
23866: _M_buckets = _M_allocate_buckets(__bkt_count);
23866: _M_bucket_count = __bkt_count;
23866: }
23866:
23866: for (; __f != __l; ++__f)
23866: this->insert(*__f);
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: auto
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: operator=(const _Hashtable& __ht)
23866: -> _Hashtable&
23866: {
23866: if (&__ht == this)
23866: return *this;
23866:
23866: if (__node_alloc_traits::_S_propagate_on_copy_assign())
23866: {
23866: auto& __this_alloc = this->_M_node_allocator();
23866: auto& __that_alloc = __ht._M_node_allocator();
23866: if (!__node_alloc_traits::_S_always_equal()
23866: && __this_alloc != __that_alloc)
23866: {
23866:
23866: this->_M_deallocate_nodes(_M_begin());
23866: _M_before_begin._M_nxt = nullptr;
23866: _M_deallocate_buckets();
23866: _M_buckets = nullptr;
23866: std::__alloc_on_copy(__this_alloc, __that_alloc);
23866: __hashtable_base::operator=(__ht);
23866: _M_bucket_count = __ht._M_bucket_count;
23866: _M_element_count = __ht._M_element_count;
23866: _M_rehash_policy = __ht._M_rehash_policy;
23866: __alloc_node_gen_t __alloc_node_gen(*this);
23866: try
23866: {
23866: _M_assign(__ht, __alloc_node_gen);
23866: }
23866: catch(...)
23866: {
23866:
23866:
23866: _M_reset();
23866: throw;
23866: }
23866: return *this;
23866: }
23866: std::__alloc_on_copy(__this_alloc, __that_alloc);
23866: }
23866:
23866:
23866: _M_assign_elements(__ht);
23866: return *this;
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: template<typename _Ht>
23866: void
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: _M_assign_elements(_Ht&& __ht)
23866: {
23866: __bucket_type* __former_buckets = nullptr;
23866: std::size_t __former_bucket_count = _M_bucket_count;
23866: const __rehash_state& __former_state = _M_rehash_policy._M_state();
23866:
23866: if (_M_bucket_count != __ht._M_bucket_count)
23866: {
23866: __former_buckets = _M_buckets;
23866: _M_buckets = _M_allocate_buckets(__ht._M_bucket_count);
23866: _M_bucket_count = __ht._M_bucket_count;
23866: }
23866: else
23866: __builtin_memset(_M_buckets, 0,
23866: _M_bucket_count * sizeof(__bucket_type));
23866:
23866: try
23866: {
23866: __hashtable_base::operator=(std::forward<_Ht>(__ht));
23866: _M_element_count = __ht._M_element_count;
23866: _M_rehash_policy = __ht._M_rehash_policy;
23866: __reuse_or_alloc_node_gen_t __roan(_M_begin(), *this);
23866: _M_before_begin._M_nxt = nullptr;
23866: _M_assign(std::forward<_Ht>(__ht), __roan);
23866: if (__former_buckets)
23866: _M_deallocate_buckets(__former_buckets, __former_bucket_count);
23866: }
23866: catch(...)
23866: {
23866: if (__former_buckets)
23866: {
23866:
23866: _M_deallocate_buckets();
23866: _M_rehash_policy._M_reset(__former_state);
23866: _M_buckets = __former_buckets;
23866: _M_bucket_count = __former_bucket_count;
23866: }
23866: __builtin_memset(_M_buckets, 0,
23866: _M_bucket_count * sizeof(__bucket_type));
23866: throw;
23866: }
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: template<typename _Ht, typename _NodeGenerator>
23866: void
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: _M_assign(_Ht&& __ht, const _NodeGenerator& __node_gen)
23866: {
23866: __bucket_type* __buckets = nullptr;
23866: if (!_M_buckets)
23866: _M_buckets = __buckets = _M_allocate_buckets(_M_bucket_count);
23866:
23866: try
23866: {
23866: if (!__ht._M_before_begin._M_nxt)
23866: return;
23866:
23866:
23866:
23866: __node_type* __ht_n = __ht._M_begin();
23866: __node_type* __this_n
23866: = __node_gen(__fwd_value_for<_Ht>(__ht_n->_M_v()));
23866: this->_M_copy_code(__this_n, __ht_n);
23866: _M_before_begin._M_nxt = __this_n;
23866: _M_buckets[_M_bucket_index(__this_n)] = &_M_before_begin;
23866:
23866:
23866: __node_base* __prev_n = __this_n;
23866: for (__ht_n = __ht_n->_M_next(); __ht_n; __ht_n = __ht_n->_M_next())
23866: {
23866: __this_n = __node_gen(__fwd_value_for<_Ht>(__ht_n->_M_v()));
23866: __prev_n->_M_nxt = __this_n;
23866: this->_M_copy_code(__this_n, __ht_n);
23866: size_type __bkt = _M_bucket_index(__this_n);
23866: if (!_M_buckets[__bkt])
23866: _M_buckets[__bkt] = __prev_n;
23866: __prev_n = __this_n;
23866: }
23866: }
23866: catch(...)
23866: {
23866: clear();
23866: if (__buckets)
23866: _M_deallocate_buckets();
23866: throw;
23866: }
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: void
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: _M_reset() noexcept
23866: {
23866: _M_rehash_policy._M_reset();
23866: _M_bucket_count = 1;
23866: _M_single_bucket = nullptr;
23866: _M_buckets = &_M_single_bucket;
23866: _M_before_begin._M_nxt = nullptr;
23866: _M_element_count = 0;
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: void
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: _M_move_assign(_Hashtable&& __ht, true_type)
23866: {
23866: this->_M_deallocate_nodes(_M_begin());
23866: _M_deallocate_buckets();
23866: __hashtable_base::operator=(std::move(__ht));
23866: _M_rehash_policy = __ht._M_rehash_policy;
23866: if (!__ht._M_uses_single_bucket())
23866: _M_buckets = __ht._M_buckets;
23866: else
23866: {
23866: _M_buckets = &_M_single_bucket;
23866: _M_single_bucket = __ht._M_single_bucket;
23866: }
23866: _M_bucket_count = __ht._M_bucket_count;
23866: _M_before_begin._M_nxt = __ht._M_before_begin._M_nxt;
23866: _M_element_count = __ht._M_element_count;
23866: std::__alloc_on_move(this->_M_node_allocator(), __ht._M_node_allocator());
23866:
23866:
23866:
23866: if (_M_begin())
23866: _M_buckets[_M_bucket_index(_M_begin())] = &_M_before_begin;
23866: __ht._M_reset();
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: void
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: _M_move_assign(_Hashtable&& __ht, false_type)
23866: {
23866: if (__ht._M_node_allocator() == this->_M_node_allocator())
23866: _M_move_assign(std::move(__ht), true_type());
23866: else
23866: {
23866:
23866: _M_assign_elements(std::move(__ht));
23866: __ht.clear();
23866: }
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: _Hashtable(const _Hashtable& __ht)
23866: : __hashtable_base(__ht),
23866: __map_base(__ht),
23866: __rehash_base(__ht),
23866: __hashtable_alloc(
23866: __node_alloc_traits::_S_select_on_copy(__ht._M_node_allocator())),
23866: _M_buckets(nullptr),
23866: _M_bucket_count(__ht._M_bucket_count),
23866: _M_element_count(__ht._M_element_count),
23866: _M_rehash_policy(__ht._M_rehash_policy)
23866: {
23866: __alloc_node_gen_t __alloc_node_gen(*this);
23866: _M_assign(__ht, __alloc_node_gen);
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: _Hashtable(_Hashtable&& __ht) noexcept
23866: : __hashtable_base(__ht),
23866: __map_base(__ht),
23866: __rehash_base(__ht),
23866: __hashtable_alloc(std::move(__ht._M_base_alloc())),
23866: _M_buckets(__ht._M_buckets),
23866: _M_bucket_count(__ht._M_bucket_count),
23866: _M_before_begin(__ht._M_before_begin._M_nxt),
23866: _M_element_count(__ht._M_element_count),
23866: _M_rehash_policy(__ht._M_rehash_policy)
23866: {
23866:
23866: if (__ht._M_uses_single_bucket())
23866: {
23866: _M_buckets = &_M_single_bucket;
23866: _M_single_bucket = __ht._M_single_bucket;
23866: }
23866:
23866:
23866:
23866: if (_M_begin())
23866: _M_buckets[_M_bucket_index(_M_begin())] = &_M_before_begin;
23866:
23866: __ht._M_reset();
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: _Hashtable(const _Hashtable& __ht, const allocator_type& __a)
23866: : __hashtable_base(__ht),
23866: __map_base(__ht),
23866: __rehash_base(__ht),
23866: __hashtable_alloc(__node_alloc_type(__a)),
23866: _M_buckets(),
23866: _M_bucket_count(__ht._M_bucket_count),
23866: _M_element_count(__ht._M_element_count),
23866: _M_rehash_policy(__ht._M_rehash_policy)
23866: {
23866: __alloc_node_gen_t __alloc_node_gen(*this);
23866: _M_assign(__ht, __alloc_node_gen);
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: _Hashtable(_Hashtable&& __ht, const allocator_type& __a)
23866: : __hashtable_base(__ht),
23866: __map_base(__ht),
23866: __rehash_base(__ht),
23866: __hashtable_alloc(__node_alloc_type(__a)),
23866: _M_buckets(nullptr),
23866: _M_bucket_count(__ht._M_bucket_count),
23866: _M_element_count(__ht._M_element_count),
23866: _M_rehash_policy(__ht._M_rehash_policy)
23866: {
23866: if (__ht._M_node_allocator() == this->_M_node_allocator())
23866: {
23866: if (__ht._M_uses_single_bucket())
23866: {
23866: _M_buckets = &_M_single_bucket;
23866: _M_single_bucket = __ht._M_single_bucket;
23866: }
23866: else
23866: _M_buckets = __ht._M_buckets;
23866:
23866: _M_before_begin._M_nxt = __ht._M_before_begin._M_nxt;
23866:
23866:
23866: if (_M_begin())
23866: _M_buckets[_M_bucket_index(_M_begin())] = &_M_before_begin;
23866: __ht._M_reset();
23866: }
23866: else
23866: {
23866: __alloc_node_gen_t __alloc_gen(*this);
23866:
23866: using _Fwd_Ht = typename
23866: conditional<__move_if_noexcept_cond<value_type>::value,
23866: const _Hashtable&, _Hashtable&&>::type;
23866: _M_assign(std::forward<_Fwd_Ht>(__ht), __alloc_gen);
23866: __ht.clear();
23866: }
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: ~_Hashtable() noexcept
23866: {
23866: clear();
23866: _M_deallocate_buckets();
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: void
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: swap(_Hashtable& __x)
23866: noexcept(__and_<__is_nothrow_swappable<_H1>,
23866: __is_nothrow_swappable<_Equal>>::value)
23866: {
23866:
23866:
23866:
23866: this->_M_swap(__x);
23866:
23866: std::__alloc_on_swap(this->_M_node_allocator(), __x._M_node_allocator());
23866: std::swap(_M_rehash_policy, __x._M_rehash_policy);
23866:
23866:
23866: if (this->_M_uses_single_bucket())
23866: {
23866: if (!__x._M_uses_single_bucket())
23866: {
23866: _M_buckets = __x._M_buckets;
23866: __x._M_buckets = &__x._M_single_bucket;
23866: }
23866: }
23866: else if (__x._M_uses_single_bucket())
23866: {
23866: __x._M_buckets = _M_buckets;
23866: _M_buckets = &_M_single_bucket;
23866: }
23866: else
23866: std::swap(_M_buckets, __x._M_buckets);
23866:
23866: std::swap(_M_bucket_count, __x._M_bucket_count);
23866: std::swap(_M_before_begin._M_nxt, __x._M_before_begin._M_nxt);
23866: std::swap(_M_element_count, __x._M_element_count);
23866: std::swap(_M_single_bucket, __x._M_single_bucket);
23866:
23866:
23866:
23866: if (_M_begin())
23866: _M_buckets[_M_bucket_index(_M_begin())] = &_M_before_begin;
23866:
23866: if (__x._M_begin())
23866: __x._M_buckets[__x._M_bucket_index(__x._M_begin())]
23866: = &__x._M_before_begin;
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: auto
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: find(const key_type& __k)
23866: -> iterator
23866: {
23866: __hash_code __code = this->_M_hash_code(__k);
23866: std::size_t __bkt = _M_bucket_index(__k, __code);
23866: __node_type* __p = _M_find_node(__bkt, __k, __code);
23866: return __p ? iterator(__p) : end();
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: auto
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: find(const key_type& __k) const
23866: -> const_iterator
23866: {
23866: __hash_code __code = this->_M_hash_code(__k);
23866: std::size_t __bkt = _M_bucket_index(__k, __code);
23866: __node_type* __p = _M_find_node(__bkt, __k, __code);
23866: return __p ? const_iterator(__p) : end();
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: auto
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: count(const key_type& __k) const
23866: -> size_type
23866: {
23866: __hash_code __code = this->_M_hash_code(__k);
23866: std::size_t __bkt = _M_bucket_index(__k, __code);
23866: __node_type* __p = _M_bucket_begin(__bkt);
23866: if (!__p)
23866: return 0;
23866:
23866: std::size_t __result = 0;
23866: for (;; __p = __p->_M_next())
23866: {
23866: if (this->_M_equals(__k, __code, __p))
23866: ++__result;
23866: else if (__result)
23866:
23866:
23866:
23866: break;
23866: if (!__p->_M_nxt || _M_bucket_index(__p->_M_next()) != __bkt)
23866: break;
23866: }
23866: return __result;
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: auto
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: equal_range(const key_type& __k)
23866: -> pair<iterator, iterator>
23866: {
23866: __hash_code __code = this->_M_hash_code(__k);
23866: std::size_t __bkt = _M_bucket_index(__k, __code);
23866: __node_type* __p = _M_find_node(__bkt, __k, __code);
23866:
23866: if (__p)
23866: {
23866: __node_type* __p1 = __p->_M_next();
23866: while (__p1 && _M_bucket_index(__p1) == __bkt
23866: && this->_M_equals(__k, __code, __p1))
23866: __p1 = __p1->_M_next();
23866:
23866: return std::make_pair(iterator(__p), iterator(__p1));
23866: }
23866: else
23866: return std::make_pair(end(), end());
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: auto
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: equal_range(const key_type& __k) const
23866: -> pair<const_iterator, const_iterator>
23866: {
23866: __hash_code __code = this->_M_hash_code(__k);
23866: std::size_t __bkt = _M_bucket_index(__k, __code);
23866: __node_type* __p = _M_find_node(__bkt, __k, __code);
23866:
23866: if (__p)
23866: {
23866: __node_type* __p1 = __p->_M_next();
23866: while (__p1 && _M_bucket_index(__p1) == __bkt
23866: && this->_M_equals(__k, __code, __p1))
23866: __p1 = __p1->_M_next();
23866:
23866: return std::make_pair(const_iterator(__p), const_iterator(__p1));
23866: }
23866: else
23866: return std::make_pair(end(), end());
23866: }
23866:
23866:
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: auto
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: _M_find_before_node(size_type __bkt, const key_type& __k,
23866: __hash_code __code) const
23866: -> __node_base*
23866: {
23866: __node_base* __prev_p = _M_buckets[__bkt];
23866: if (!__prev_p)
23866: return nullptr;
23866:
23866: for (__node_type* __p = static_cast<__node_type*>(__prev_p->_M_nxt);;
23866: __p = __p->_M_next())
23866: {
23866: if (this->_M_equals(__k, __code, __p))
23866: return __prev_p;
23866:
23866: if (!__p->_M_nxt || _M_bucket_index(__p->_M_next()) != __bkt)
23866: break;
23866: __prev_p = __p;
23866: }
23866: return nullptr;
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: void
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: _M_insert_bucket_begin(size_type __bkt, __node_type* __node)
23866: {
23866: if (_M_buckets[__bkt])
23866: {
23866:
23866:
23866: __node->_M_nxt = _M_buckets[__bkt]->_M_nxt;
23866: _M_buckets[__bkt]->_M_nxt = __node;
23866: }
23866: else
23866: {
23866:
23866:
23866:
23866: __node->_M_nxt = _M_before_begin._M_nxt;
23866: _M_before_begin._M_nxt = __node;
23866: if (__node->_M_nxt)
23866:
23866:
23866: _M_buckets[_M_bucket_index(__node->_M_next())] = __node;
23866: _M_buckets[__bkt] = &_M_before_begin;
23866: }
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: void
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: _M_remove_bucket_begin(size_type __bkt, __node_type* __next,
23866: size_type __next_bkt)
23866: {
23866: if (!__next || __next_bkt != __bkt)
23866: {
23866:
23866:
23866: if (__next)
23866: _M_buckets[__next_bkt] = _M_buckets[__bkt];
23866:
23866:
23866: if (&_M_before_begin == _M_buckets[__bkt])
23866: _M_before_begin._M_nxt = __next;
23866: _M_buckets[__bkt] = nullptr;
23866: }
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: auto
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: _M_get_previous_node(size_type __bkt, __node_base* __n)
23866: -> __node_base*
23866: {
23866: __node_base* __prev_n = _M_buckets[__bkt];
23866: while (__prev_n->_M_nxt != __n)
23866: __prev_n = __prev_n->_M_nxt;
23866: return __prev_n;
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: template<typename... _Args>
23866: auto
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: _M_emplace(true_type, _Args&&... __args)
23866: -> pair<iterator, bool>
23866: {
23866:
23866: _Scoped_node __node { this, std::forward<_Args>(__args)... };
23866: const key_type& __k = this->_M_extract()(__node._M_node->_M_v());
23866: __hash_code __code = this->_M_hash_code(__k);
23866: size_type __bkt = _M_bucket_index(__k, __code);
23866: if (__node_type* __p = _M_find_node(__bkt, __k, __code))
23866:
23866: return std::make_pair(iterator(__p), false);
23866:
23866:
23866: auto __pos = _M_insert_unique_node(__k, __bkt, __code, __node._M_node);
23866: __node._M_node = nullptr;
23866: return { __pos, true };
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: template<typename... _Args>
23866: auto
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: _M_emplace(const_iterator __hint, false_type, _Args&&... __args)
23866: -> iterator
23866: {
23866:
23866: _Scoped_node __node { this, std::forward<_Args>(__args)... };
23866: const key_type& __k = this->_M_extract()(__node._M_node->_M_v());
23866:
23866: __hash_code __code = this->_M_hash_code(__k);
23866: auto __pos
23866: = _M_insert_multi_node(__hint._M_cur, __k, __code, __node._M_node);
23866: __node._M_node = nullptr;
23866: return __pos;
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: auto
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: _M_insert_unique_node(const key_type& __k, size_type __bkt,
23866: __hash_code __code, __node_type* __node,
23866: size_type __n_elt)
23866: -> iterator
23866: {
23866: const __rehash_state& __saved_state = _M_rehash_policy._M_state();
23866: std::pair<bool, std::size_t> __do_rehash
23866: = _M_rehash_policy._M_need_rehash(_M_bucket_count, _M_element_count,
23866: __n_elt);
23866:
23866: if (__do_rehash.first)
23866: {
23866: _M_rehash(__do_rehash.second, __saved_state);
23866: __bkt = _M_bucket_index(__k, __code);
23866: }
23866:
23866: this->_M_store_code(__node, __code);
23866:
23866:
23866: _M_insert_bucket_begin(__bkt, __node);
23866: ++_M_element_count;
23866: return iterator(__node);
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: auto
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: _M_insert_multi_node(__node_type* __hint, const key_type& __k,
23866: __hash_code __code, __node_type* __node)
23866: -> iterator
23866: {
23866: const __rehash_state& __saved_state = _M_rehash_policy._M_state();
23866: std::pair<bool, std::size_t> __do_rehash
23866: = _M_rehash_policy._M_need_rehash(_M_bucket_count, _M_element_count, 1);
23866:
23866: if (__do_rehash.first)
23866: _M_rehash(__do_rehash.second, __saved_state);
23866:
23866: this->_M_store_code(__node, __code);
23866: size_type __bkt = _M_bucket_index(__k, __code);
23866:
23866:
23866:
23866: __node_base* __prev
23866: = __builtin_expect(__hint != nullptr, false)
23866: && this->_M_equals(__k, __code, __hint)
23866: ? __hint
23866: : _M_find_before_node(__bkt, __k, __code);
23866: if (__prev)
23866: {
23866:
23866: __node->_M_nxt = __prev->_M_nxt;
23866: __prev->_M_nxt = __node;
23866: if (__builtin_expect(__prev == __hint, false))
23866:
23866:
23866: if (__node->_M_nxt
23866: && !this->_M_equals(__k, __code, __node->_M_next()))
23866: {
23866: size_type __next_bkt = _M_bucket_index(__node->_M_next());
23866: if (__next_bkt != __bkt)
23866: _M_buckets[__next_bkt] = __node;
23866: }
23866: }
23866: else
23866:
23866:
23866:
23866: _M_insert_bucket_begin(__bkt, __node);
23866: ++_M_element_count;
23866: return iterator(__node);
23866: }
23866:
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: template<typename _Arg, typename _NodeGenerator>
23866: auto
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: _M_insert(_Arg&& __v, const _NodeGenerator& __node_gen, true_type,
23866: size_type __n_elt)
23866: -> pair<iterator, bool>
23866: {
23866: const key_type& __k = this->_M_extract()(__v);
23866: __hash_code __code = this->_M_hash_code(__k);
23866: size_type __bkt = _M_bucket_index(__k, __code);
23866:
23866: if (__node_type* __node = _M_find_node(__bkt, __k, __code))
23866: return { iterator(__node), false };
23866:
23866: _Scoped_node __node{ __node_gen(std::forward<_Arg>(__v)), this };
23866: auto __pos
23866: = _M_insert_unique_node(__k, __bkt, __code, __node._M_node, __n_elt);
23866: __node._M_node = nullptr;
23866: return { __pos, true };
23866: }
23866:
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: template<typename _Arg, typename _NodeGenerator>
23866: auto
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: _M_insert(const_iterator __hint, _Arg&& __v,
23866: const _NodeGenerator& __node_gen, false_type)
23866: -> iterator
23866: {
23866:
23866:
23866: __hash_code __code = this->_M_hash_code(this->_M_extract()(__v));
23866:
23866:
23866: _Scoped_node __node{ __node_gen(std::forward<_Arg>(__v)), this };
23866: const key_type& __k = this->_M_extract()(__node._M_node->_M_v());
23866: auto __pos
23866: = _M_insert_multi_node(__hint._M_cur, __k, __code, __node._M_node);
23866: __node._M_node = nullptr;
23866: return __pos;
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: auto
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: erase(const_iterator __it)
23866: -> iterator
23866: {
23866: __node_type* __n = __it._M_cur;
23866: std::size_t __bkt = _M_bucket_index(__n);
23866:
23866:
23866:
23866:
23866: __node_base* __prev_n = _M_get_previous_node(__bkt, __n);
23866: return _M_erase(__bkt, __prev_n, __n);
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: auto
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: _M_erase(size_type __bkt, __node_base* __prev_n, __node_type* __n)
23866: -> iterator
23866: {
23866: if (__prev_n == _M_buckets[__bkt])
23866: _M_remove_bucket_begin(__bkt, __n->_M_next(),
23866: __n->_M_nxt ? _M_bucket_index(__n->_M_next()) : 0);
23866: else if (__n->_M_nxt)
23866: {
23866: size_type __next_bkt = _M_bucket_index(__n->_M_next());
23866: if (__next_bkt != __bkt)
23866: _M_buckets[__next_bkt] = __prev_n;
23866: }
23866:
23866: __prev_n->_M_nxt = __n->_M_nxt;
23866: iterator __result(__n->_M_next());
23866: this->_M_deallocate_node(__n);
23866: --_M_element_count;
23866:
23866: return __result;
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: auto
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: _M_erase(true_type, const key_type& __k)
23866: -> size_type
23866: {
23866: __hash_code __code = this->_M_hash_code(__k);
23866: std::size_t __bkt = _M_bucket_index(__k, __code);
23866:
23866:
23866: __node_base* __prev_n = _M_find_before_node(__bkt, __k, __code);
23866: if (!__prev_n)
23866: return 0;
23866:
23866:
23866: __node_type* __n = static_cast<__node_type*>(__prev_n->_M_nxt);
23866: _M_erase(__bkt, __prev_n, __n);
23866: return 1;
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: auto
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: _M_erase(false_type, const key_type& __k)
23866: -> size_type
23866: {
23866: __hash_code __code = this->_M_hash_code(__k);
23866: std::size_t __bkt = _M_bucket_index(__k, __code);
23866:
23866:
23866: __node_base* __prev_n = _M_find_before_node(__bkt, __k, __code);
23866: if (!__prev_n)
23866: return 0;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: __node_type* __n = static_cast<__node_type*>(__prev_n->_M_nxt);
23866: __node_type* __n_last = __n;
23866: std::size_t __n_last_bkt = __bkt;
23866: do
23866: {
23866: __n_last = __n_last->_M_next();
23866: if (!__n_last)
23866: break;
23866: __n_last_bkt = _M_bucket_index(__n_last);
23866: }
23866: while (__n_last_bkt == __bkt && this->_M_equals(__k, __code, __n_last));
23866:
23866:
23866: size_type __result = 0;
23866: do
23866: {
23866: __node_type* __p = __n->_M_next();
23866: this->_M_deallocate_node(__n);
23866: __n = __p;
23866: ++__result;
23866: --_M_element_count;
23866: }
23866: while (__n != __n_last);
23866:
23866: if (__prev_n == _M_buckets[__bkt])
23866: _M_remove_bucket_begin(__bkt, __n_last, __n_last_bkt);
23866: else if (__n_last && __n_last_bkt != __bkt)
23866: _M_buckets[__n_last_bkt] = __prev_n;
23866: __prev_n->_M_nxt = __n_last;
23866: return __result;
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: auto
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: erase(const_iterator __first, const_iterator __last)
23866: -> iterator
23866: {
23866: __node_type* __n = __first._M_cur;
23866: __node_type* __last_n = __last._M_cur;
23866: if (__n == __last_n)
23866: return iterator(__n);
23866:
23866: std::size_t __bkt = _M_bucket_index(__n);
23866:
23866: __node_base* __prev_n = _M_get_previous_node(__bkt, __n);
23866: bool __is_bucket_begin = __n == _M_bucket_begin(__bkt);
23866: std::size_t __n_bkt = __bkt;
23866: for (;;)
23866: {
23866: do
23866: {
23866: __node_type* __tmp = __n;
23866: __n = __n->_M_next();
23866: this->_M_deallocate_node(__tmp);
23866: --_M_element_count;
23866: if (!__n)
23866: break;
23866: __n_bkt = _M_bucket_index(__n);
23866: }
23866: while (__n != __last_n && __n_bkt == __bkt);
23866: if (__is_bucket_begin)
23866: _M_remove_bucket_begin(__bkt, __n, __n_bkt);
23866: if (__n == __last_n)
23866: break;
23866: __is_bucket_begin = true;
23866: __bkt = __n_bkt;
23866: }
23866:
23866: if (__n && (__n_bkt != __bkt || __is_bucket_begin))
23866: _M_buckets[__n_bkt] = __prev_n;
23866: __prev_n->_M_nxt = __n;
23866: return iterator(__n);
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: void
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: clear() noexcept
23866: {
23866: this->_M_deallocate_nodes(_M_begin());
23866: __builtin_memset(_M_buckets, 0, _M_bucket_count * sizeof(__bucket_type));
23866: _M_element_count = 0;
23866: _M_before_begin._M_nxt = nullptr;
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: void
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: rehash(size_type __bkt_count)
23866: {
23866: const __rehash_state& __saved_state = _M_rehash_policy._M_state();
23866: __bkt_count
23866: = std::max(_M_rehash_policy._M_bkt_for_elements(_M_element_count + 1),
23866: __bkt_count);
23866: __bkt_count = _M_rehash_policy._M_next_bkt(__bkt_count);
23866:
23866: if (__bkt_count != _M_bucket_count)
23866: _M_rehash(__bkt_count, __saved_state);
23866: else
23866:
23866:
23866: _M_rehash_policy._M_reset(__saved_state);
23866: }
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: void
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: _M_rehash(size_type __bkt_count, const __rehash_state& __state)
23866: {
23866: try
23866: {
23866: _M_rehash_aux(__bkt_count, __unique_keys());
23866: }
23866: catch(...)
23866: {
23866:
23866:
23866: _M_rehash_policy._M_reset(__state);
23866: throw;
23866: }
23866: }
23866:
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: void
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: _M_rehash_aux(size_type __bkt_count, true_type)
23866: {
23866: __bucket_type* __new_buckets = _M_allocate_buckets(__bkt_count);
23866: __node_type* __p = _M_begin();
23866: _M_before_begin._M_nxt = nullptr;
23866: std::size_t __bbegin_bkt = 0;
23866: while (__p)
23866: {
23866: __node_type* __next = __p->_M_next();
23866: std::size_t __bkt
23866: = __hash_code_base::_M_bucket_index(__p, __bkt_count);
23866: if (!__new_buckets[__bkt])
23866: {
23866: __p->_M_nxt = _M_before_begin._M_nxt;
23866: _M_before_begin._M_nxt = __p;
23866: __new_buckets[__bkt] = &_M_before_begin;
23866: if (__p->_M_nxt)
23866: __new_buckets[__bbegin_bkt] = __p;
23866: __bbegin_bkt = __bkt;
23866: }
23866: else
23866: {
23866: __p->_M_nxt = __new_buckets[__bkt]->_M_nxt;
23866: __new_buckets[__bkt]->_M_nxt = __p;
23866: }
23866: __p = __next;
23866: }
23866:
23866: _M_deallocate_buckets();
23866: _M_bucket_count = __bkt_count;
23866: _M_buckets = __new_buckets;
23866: }
23866:
23866:
23866:
23866: template<typename _Key, typename _Value,
23866: typename _Alloc, typename _ExtractKey, typename _Equal,
23866: typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
23866: typename _Traits>
23866: void
23866: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
23866: _H1, _H2, _Hash, _RehashPolicy, _Traits>::
23866: _M_rehash_aux(size_type __bkt_count, false_type)
23866: {
23866: __bucket_type* __new_buckets = _M_allocate_buckets(__bkt_count);
23866:
23866: __node_type* __p = _M_begin();
23866: _M_before_begin._M_nxt = nullptr;
23866: std::size_t __bbegin_bkt = 0;
23866: std::size_t __prev_bkt = 0;
23866: __node_type* __prev_p = nullptr;
23866: bool __check_bucket = false;
23866:
23866: while (__p)
23866: {
23866: __node_type* __next = __p->_M_next();
23866: std::size_t __bkt
23866: = __hash_code_base::_M_bucket_index(__p, __bkt_count);
23866:
23866: if (__prev_p && __prev_bkt == __bkt)
23866: {
23866:
23866:
23866:
23866: __p->_M_nxt = __prev_p->_M_nxt;
23866: __prev_p->_M_nxt = __p;
23866:
23866:
23866:
23866:
23866:
23866:
23866: __check_bucket = true;
23866: }
23866: else
23866: {
23866: if (__check_bucket)
23866: {
23866:
23866:
23866: if (__prev_p->_M_nxt)
23866: {
23866: std::size_t __next_bkt
23866: = __hash_code_base::_M_bucket_index(__prev_p->_M_next(),
23866: __bkt_count);
23866: if (__next_bkt != __prev_bkt)
23866: __new_buckets[__next_bkt] = __prev_p;
23866: }
23866: __check_bucket = false;
23866: }
23866:
23866: if (!__new_buckets[__bkt])
23866: {
23866: __p->_M_nxt = _M_before_begin._M_nxt;
23866: _M_before_begin._M_nxt = __p;
23866: __new_buckets[__bkt] = &_M_before_begin;
23866: if (__p->_M_nxt)
23866: __new_buckets[__bbegin_bkt] = __p;
23866: __bbegin_bkt = __bkt;
23866: }
23866: else
23866: {
23866: __p->_M_nxt = __new_buckets[__bkt]->_M_nxt;
23866: __new_buckets[__bkt]->_M_nxt = __p;
23866: }
23866: }
23866: __prev_p = __p;
23866: __prev_bkt = __bkt;
23866: __p = __next;
23866: }
23866:
23866: if (__check_bucket && __prev_p->_M_nxt)
23866: {
23866: std::size_t __next_bkt
23866: = __hash_code_base::_M_bucket_index(__prev_p->_M_next(),
23866: __bkt_count);
23866: if (__next_bkt != __prev_bkt)
23866: __new_buckets[__next_bkt] = __prev_p;
23866: }
23866:
23866: _M_deallocate_buckets();
23866: _M_bucket_count = __bkt_count;
23866: _M_buckets = __new_buckets;
23866: }
23866:
23866:
23866: template<typename, typename, typename> class _Hash_merge_helper { };
23866:
23866:
23866:
23866:
23866: template<typename _Hash>
23866: using _RequireNotAllocatorOrIntegral
23866: = __enable_if_t<!__or_<is_integral<_Hash>, __is_allocator<_Hash>>::value>;
23866:
23866:
23866:
23866: }
23866: # 47 "/usr/include/c++/10/unordered_map" 2 3
23866: # 1 "/usr/include/c++/10/bits/unordered_map.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: #define _UNORDERED_MAP_H
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866: template<bool _Cache>
23866: using __umap_traits = __detail::_Hashtable_traits<_Cache, false, true>;
23866:
23866: template<typename _Key,
23866: typename _Tp,
23866: typename _Hash = hash<_Key>,
23866: typename _Pred = std::equal_to<_Key>,
23866: typename _Alloc = std::allocator<std::pair<const _Key, _Tp> >,
23866: typename _Tr = __umap_traits<__cache_default<_Key, _Hash>::value>>
23866: using __umap_hashtable = _Hashtable<_Key, std::pair<const _Key, _Tp>,
23866: _Alloc, __detail::_Select1st,
23866: _Pred, _Hash,
23866: __detail::_Mod_range_hashing,
23866: __detail::_Default_ranged_hash,
23866: __detail::_Prime_rehash_policy, _Tr>;
23866:
23866:
23866: template<bool _Cache>
23866: using __ummap_traits = __detail::_Hashtable_traits<_Cache, false, false>;
23866:
23866: template<typename _Key,
23866: typename _Tp,
23866: typename _Hash = hash<_Key>,
23866: typename _Pred = std::equal_to<_Key>,
23866: typename _Alloc = std::allocator<std::pair<const _Key, _Tp> >,
23866: typename _Tr = __ummap_traits<__cache_default<_Key, _Hash>::value>>
23866: using __ummap_hashtable = _Hashtable<_Key, std::pair<const _Key, _Tp>,
23866: _Alloc, __detail::_Select1st,
23866: _Pred, _Hash,
23866: __detail::_Mod_range_hashing,
23866: __detail::_Default_ranged_hash,
23866: __detail::_Prime_rehash_policy, _Tr>;
23866:
23866: template<class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
23866: class unordered_multimap;
23866: # 98 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: template<typename _Key, typename _Tp,
23866: typename _Hash = hash<_Key>,
23866: typename _Pred = equal_to<_Key>,
23866: typename _Alloc = allocator<std::pair<const _Key, _Tp>>>
23866: class unordered_map
23866: {
23866: typedef __umap_hashtable<_Key, _Tp, _Hash, _Pred, _Alloc> _Hashtable;
23866: _Hashtable _M_h;
23866:
23866: public:
23866:
23866:
23866:
23866: typedef typename _Hashtable::key_type key_type;
23866: typedef typename _Hashtable::value_type value_type;
23866: typedef typename _Hashtable::mapped_type mapped_type;
23866: typedef typename _Hashtable::hasher hasher;
23866: typedef typename _Hashtable::key_equal key_equal;
23866: typedef typename _Hashtable::allocator_type allocator_type;
23866:
23866:
23866:
23866:
23866: typedef typename _Hashtable::pointer pointer;
23866: typedef typename _Hashtable::const_pointer const_pointer;
23866: typedef typename _Hashtable::reference reference;
23866: typedef typename _Hashtable::const_reference const_reference;
23866: typedef typename _Hashtable::iterator iterator;
23866: typedef typename _Hashtable::const_iterator const_iterator;
23866: typedef typename _Hashtable::local_iterator local_iterator;
23866: typedef typename _Hashtable::const_local_iterator const_local_iterator;
23866: typedef typename _Hashtable::size_type size_type;
23866: typedef typename _Hashtable::difference_type difference_type;
23866:
23866:
23866:
23866: using node_type = typename _Hashtable::node_type;
23866: using insert_return_type = typename _Hashtable::insert_return_type;
23866:
23866:
23866:
23866:
23866:
23866: unordered_map() = default;
23866: # 150 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: explicit
23866: unordered_map(size_type __n,
23866: const hasher& __hf = hasher(),
23866: const key_equal& __eql = key_equal(),
23866: const allocator_type& __a = allocator_type())
23866: : _M_h(__n, __hf, __eql, __a)
23866: { }
23866: # 171 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: template<typename _InputIterator>
23866: unordered_map(_InputIterator __first, _InputIterator __last,
23866: size_type __n = 0,
23866: const hasher& __hf = hasher(),
23866: const key_equal& __eql = key_equal(),
23866: const allocator_type& __a = allocator_type())
23866: : _M_h(__first, __last, __n, __hf, __eql, __a)
23866: { }
23866:
23866:
23866: unordered_map(const unordered_map&) = default;
23866:
23866:
23866: unordered_map(unordered_map&&) = default;
23866:
23866:
23866:
23866:
23866:
23866: explicit
23866: unordered_map(const allocator_type& __a)
23866: : _M_h(__a)
23866: { }
23866:
23866:
23866:
23866:
23866:
23866:
23866: unordered_map(const unordered_map& __umap,
23866: const allocator_type& __a)
23866: : _M_h(__umap._M_h, __a)
23866: { }
23866:
23866:
23866:
23866:
23866:
23866:
23866: unordered_map(unordered_map&& __umap,
23866: const allocator_type& __a)
23866: : _M_h(std::move(__umap._M_h), __a)
23866: { }
23866: # 226 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: unordered_map(initializer_list<value_type> __l,
23866: size_type __n = 0,
23866: const hasher& __hf = hasher(),
23866: const key_equal& __eql = key_equal(),
23866: const allocator_type& __a = allocator_type())
23866: : _M_h(__l, __n, __hf, __eql, __a)
23866: { }
23866:
23866: unordered_map(size_type __n, const allocator_type& __a)
23866: : unordered_map(__n, hasher(), key_equal(), __a)
23866: { }
23866:
23866: unordered_map(size_type __n, const hasher& __hf,
23866: const allocator_type& __a)
23866: : unordered_map(__n, __hf, key_equal(), __a)
23866: { }
23866:
23866: template<typename _InputIterator>
23866: unordered_map(_InputIterator __first, _InputIterator __last,
23866: size_type __n,
23866: const allocator_type& __a)
23866: : unordered_map(__first, __last, __n, hasher(), key_equal(), __a)
23866: { }
23866:
23866: template<typename _InputIterator>
23866: unordered_map(_InputIterator __first, _InputIterator __last,
23866: size_type __n, const hasher& __hf,
23866: const allocator_type& __a)
23866: : unordered_map(__first, __last, __n, __hf, key_equal(), __a)
23866: { }
23866:
23866: unordered_map(initializer_list<value_type> __l,
23866: size_type __n,
23866: const allocator_type& __a)
23866: : unordered_map(__l, __n, hasher(), key_equal(), __a)
23866: { }
23866:
23866: unordered_map(initializer_list<value_type> __l,
23866: size_type __n, const hasher& __hf,
23866: const allocator_type& __a)
23866: : unordered_map(__l, __n, __hf, key_equal(), __a)
23866: { }
23866:
23866:
23866: unordered_map&
23866: operator=(const unordered_map&) = default;
23866:
23866:
23866: unordered_map&
23866: operator=(unordered_map&&) = default;
23866: # 288 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: unordered_map&
23866: operator=(initializer_list<value_type> __l)
23866: {
23866: _M_h = __l;
23866: return *this;
23866: }
23866:
23866:
23866: allocator_type
23866: get_allocator() const noexcept
23866: { return _M_h.get_allocator(); }
23866:
23866:
23866:
23866:
23866: [[__nodiscard__]] bool
23866: empty() const noexcept
23866: { return _M_h.empty(); }
23866:
23866:
23866: size_type
23866: size() const noexcept
23866: { return _M_h.size(); }
23866:
23866:
23866: size_type
23866: max_size() const noexcept
23866: { return _M_h.max_size(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: iterator
23866: begin() noexcept
23866: { return _M_h.begin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_iterator
23866: begin() const noexcept
23866: { return _M_h.begin(); }
23866:
23866: const_iterator
23866: cbegin() const noexcept
23866: { return _M_h.begin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: iterator
23866: end() noexcept
23866: { return _M_h.end(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_iterator
23866: end() const noexcept
23866: { return _M_h.end(); }
23866:
23866: const_iterator
23866: cend() const noexcept
23866: { return _M_h.end(); }
23866: # 385 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: template<typename... _Args>
23866: std::pair<iterator, bool>
23866: emplace(_Args&&... __args)
23866: { return _M_h.emplace(std::forward<_Args>(__args)...); }
23866: # 416 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: template<typename... _Args>
23866: iterator
23866: emplace_hint(const_iterator __pos, _Args&&... __args)
23866: { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); }
23866:
23866:
23866:
23866: node_type
23866: extract(const_iterator __pos)
23866: {
23866: ;
23866: return _M_h.extract(__pos);
23866: }
23866:
23866:
23866: node_type
23866: extract(const key_type& __key)
23866: { return _M_h.extract(__key); }
23866:
23866:
23866: insert_return_type
23866: insert(node_type&& __nh)
23866: { return _M_h._M_reinsert_node(std::move(__nh)); }
23866:
23866:
23866: iterator
23866: insert(const_iterator, node_type&& __nh)
23866: { return _M_h._M_reinsert_node(std::move(__nh)).position; }
23866:
23866: #define __cpp_lib_unordered_map_try_emplace 201411
23866: # 468 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: template <typename... _Args>
23866: pair<iterator, bool>
23866: try_emplace(const key_type& __k, _Args&&... __args)
23866: {
23866: iterator __i = find(__k);
23866: if (__i == end())
23866: {
23866: __i = emplace(std::piecewise_construct,
23866: std::forward_as_tuple(__k),
23866: std::forward_as_tuple(
23866: std::forward<_Args>(__args)...))
23866: .first;
23866: return {__i, true};
23866: }
23866: return {__i, false};
23866: }
23866:
23866:
23866: template <typename... _Args>
23866: pair<iterator, bool>
23866: try_emplace(key_type&& __k, _Args&&... __args)
23866: {
23866: iterator __i = find(__k);
23866: if (__i == end())
23866: {
23866: __i = emplace(std::piecewise_construct,
23866: std::forward_as_tuple(std::move(__k)),
23866: std::forward_as_tuple(
23866: std::forward<_Args>(__args)...))
23866: .first;
23866: return {__i, true};
23866: }
23866: return {__i, false};
23866: }
23866: # 531 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: template <typename... _Args>
23866: iterator
23866: try_emplace(const_iterator __hint, const key_type& __k,
23866: _Args&&... __args)
23866: {
23866: iterator __i = find(__k);
23866: if (__i == end())
23866: __i = emplace_hint(__hint, std::piecewise_construct,
23866: std::forward_as_tuple(__k),
23866: std::forward_as_tuple(
23866: std::forward<_Args>(__args)...));
23866: return __i;
23866: }
23866:
23866:
23866: template <typename... _Args>
23866: iterator
23866: try_emplace(const_iterator __hint, key_type&& __k, _Args&&... __args)
23866: {
23866: iterator __i = find(__k);
23866: if (__i == end())
23866: __i = emplace_hint(__hint, std::piecewise_construct,
23866: std::forward_as_tuple(std::move(__k)),
23866: std::forward_as_tuple(
23866: std::forward<_Args>(__args)...));
23866: return __i;
23866: }
23866: # 578 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: std::pair<iterator, bool>
23866: insert(const value_type& __x)
23866: { return _M_h.insert(__x); }
23866:
23866:
23866:
23866: std::pair<iterator, bool>
23866: insert(value_type&& __x)
23866: { return _M_h.insert(std::move(__x)); }
23866:
23866: template<typename _Pair>
23866: __enable_if_t<is_constructible<value_type, _Pair&&>::value,
23866: pair<iterator, bool>>
23866: insert(_Pair&& __x)
23866: { return _M_h.emplace(std::forward<_Pair>(__x)); }
23866: # 617 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: iterator
23866: insert(const_iterator __hint, const value_type& __x)
23866: { return _M_h.insert(__hint, __x); }
23866:
23866:
23866:
23866: iterator
23866: insert(const_iterator __hint, value_type&& __x)
23866: { return _M_h.insert(__hint, std::move(__x)); }
23866:
23866: template<typename _Pair>
23866: __enable_if_t<is_constructible<value_type, _Pair&&>::value, iterator>
23866: insert(const_iterator __hint, _Pair&& __x)
23866: { return _M_h.emplace_hint(__hint, std::forward<_Pair>(__x)); }
23866: # 642 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: template<typename _InputIterator>
23866: void
23866: insert(_InputIterator __first, _InputIterator __last)
23866: { _M_h.insert(__first, __last); }
23866: # 654 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: void
23866: insert(initializer_list<value_type> __l)
23866: { _M_h.insert(__l); }
23866: # 680 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: template <typename _Obj>
23866: pair<iterator, bool>
23866: insert_or_assign(const key_type& __k, _Obj&& __obj)
23866: {
23866: iterator __i = find(__k);
23866: if (__i == end())
23866: {
23866: __i = emplace(std::piecewise_construct,
23866: std::forward_as_tuple(__k),
23866: std::forward_as_tuple(std::forward<_Obj>(__obj)))
23866: .first;
23866: return {__i, true};
23866: }
23866: (*__i).second = std::forward<_Obj>(__obj);
23866: return {__i, false};
23866: }
23866:
23866:
23866: template <typename _Obj>
23866: pair<iterator, bool>
23866: insert_or_assign(key_type&& __k, _Obj&& __obj)
23866: {
23866: iterator __i = find(__k);
23866: if (__i == end())
23866: {
23866: __i = emplace(std::piecewise_construct,
23866: std::forward_as_tuple(std::move(__k)),
23866: std::forward_as_tuple(std::forward<_Obj>(__obj)))
23866: .first;
23866: return {__i, true};
23866: }
23866: (*__i).second = std::forward<_Obj>(__obj);
23866: return {__i, false};
23866: }
23866: # 741 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: template <typename _Obj>
23866: iterator
23866: insert_or_assign(const_iterator __hint, const key_type& __k,
23866: _Obj&& __obj)
23866: {
23866: iterator __i = find(__k);
23866: if (__i == end())
23866: {
23866: return emplace_hint(__hint, std::piecewise_construct,
23866: std::forward_as_tuple(__k),
23866: std::forward_as_tuple(
23866: std::forward<_Obj>(__obj)));
23866: }
23866: (*__i).second = std::forward<_Obj>(__obj);
23866: return __i;
23866: }
23866:
23866:
23866: template <typename _Obj>
23866: iterator
23866: insert_or_assign(const_iterator __hint, key_type&& __k, _Obj&& __obj)
23866: {
23866: iterator __i = find(__k);
23866: if (__i == end())
23866: {
23866: return emplace_hint(__hint, std::piecewise_construct,
23866: std::forward_as_tuple(std::move(__k)),
23866: std::forward_as_tuple(
23866: std::forward<_Obj>(__obj)));
23866: }
23866: (*__i).second = std::forward<_Obj>(__obj);
23866: return __i;
23866: }
23866: # 790 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: iterator
23866: erase(const_iterator __position)
23866: { return _M_h.erase(__position); }
23866:
23866:
23866: iterator
23866: erase(iterator __position)
23866: { return _M_h.erase(__position); }
23866: # 812 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: size_type
23866: erase(const key_type& __x)
23866: { return _M_h.erase(__x); }
23866: # 830 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: iterator
23866: erase(const_iterator __first, const_iterator __last)
23866: { return _M_h.erase(__first, __last); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: void
23866: clear() noexcept
23866: { _M_h.clear(); }
23866: # 854 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: void
23866: swap(unordered_map& __x)
23866: noexcept( noexcept(_M_h.swap(__x._M_h)) )
23866: { _M_h.swap(__x._M_h); }
23866:
23866:
23866: template<typename, typename, typename>
23866: friend class std::_Hash_merge_helper;
23866:
23866: template<typename _H2, typename _P2>
23866: void
23866: merge(unordered_map<_Key, _Tp, _H2, _P2, _Alloc>& __source)
23866: {
23866: using _Merge_helper = _Hash_merge_helper<unordered_map, _H2, _P2>;
23866: _M_h._M_merge_unique(_Merge_helper::_S_get_table(__source));
23866: }
23866:
23866: template<typename _H2, typename _P2>
23866: void
23866: merge(unordered_map<_Key, _Tp, _H2, _P2, _Alloc>&& __source)
23866: { merge(__source); }
23866:
23866: template<typename _H2, typename _P2>
23866: void
23866: merge(unordered_multimap<_Key, _Tp, _H2, _P2, _Alloc>& __source)
23866: {
23866: using _Merge_helper = _Hash_merge_helper<unordered_map, _H2, _P2>;
23866: _M_h._M_merge_unique(_Merge_helper::_S_get_table(__source));
23866: }
23866:
23866: template<typename _H2, typename _P2>
23866: void
23866: merge(unordered_multimap<_Key, _Tp, _H2, _P2, _Alloc>&& __source)
23866: { merge(__source); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: hasher
23866: hash_function() const
23866: { return _M_h.hash_function(); }
23866:
23866:
23866:
23866: key_equal
23866: key_eq() const
23866: { return _M_h.key_eq(); }
23866: # 918 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: iterator
23866: find(const key_type& __x)
23866: { return _M_h.find(__x); }
23866:
23866: const_iterator
23866: find(const key_type& __x) const
23866: { return _M_h.find(__x); }
23866: # 936 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: size_type
23866: count(const key_type& __x) const
23866: { return _M_h.count(__x); }
23866: # 960 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: std::pair<iterator, iterator>
23866: equal_range(const key_type& __x)
23866: { return _M_h.equal_range(__x); }
23866:
23866: std::pair<const_iterator, const_iterator>
23866: equal_range(const key_type& __x) const
23866: { return _M_h.equal_range(__x); }
23866: # 982 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: mapped_type&
23866: operator[](const key_type& __k)
23866: { return _M_h[__k]; }
23866:
23866: mapped_type&
23866: operator[](key_type&& __k)
23866: { return _M_h[std::move(__k)]; }
23866: # 999 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: mapped_type&
23866: at(const key_type& __k)
23866: { return _M_h.at(__k); }
23866:
23866: const mapped_type&
23866: at(const key_type& __k) const
23866: { return _M_h.at(__k); }
23866:
23866:
23866:
23866:
23866:
23866: size_type
23866: bucket_count() const noexcept
23866: { return _M_h.bucket_count(); }
23866:
23866:
23866: size_type
23866: max_bucket_count() const noexcept
23866: { return _M_h.max_bucket_count(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: size_type
23866: bucket_size(size_type __n) const
23866: { return _M_h.bucket_size(__n); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: size_type
23866: bucket(const key_type& __key) const
23866: { return _M_h.bucket(__key); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: local_iterator
23866: begin(size_type __n)
23866: { return _M_h.begin(__n); }
23866: # 1055 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: const_local_iterator
23866: begin(size_type __n) const
23866: { return _M_h.begin(__n); }
23866:
23866: const_local_iterator
23866: cbegin(size_type __n) const
23866: { return _M_h.cbegin(__n); }
23866: # 1070 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: local_iterator
23866: end(size_type __n)
23866: { return _M_h.end(__n); }
23866: # 1081 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: const_local_iterator
23866: end(size_type __n) const
23866: { return _M_h.end(__n); }
23866:
23866: const_local_iterator
23866: cend(size_type __n) const
23866: { return _M_h.cend(__n); }
23866:
23866:
23866:
23866:
23866:
23866: float
23866: load_factor() const noexcept
23866: { return _M_h.load_factor(); }
23866:
23866:
23866:
23866: float
23866: max_load_factor() const noexcept
23866: { return _M_h.max_load_factor(); }
23866:
23866:
23866:
23866:
23866:
23866: void
23866: max_load_factor(float __z)
23866: { _M_h.max_load_factor(__z); }
23866: # 1118 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: void
23866: rehash(size_type __n)
23866: { _M_h.rehash(__n); }
23866: # 1129 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: void
23866: reserve(size_type __n)
23866: { _M_h.reserve(__n); }
23866:
23866: template<typename _Key1, typename _Tp1, typename _Hash1, typename _Pred1,
23866: typename _Alloc1>
23866: friend bool
23866: operator==(const unordered_map<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>&,
23866: const unordered_map<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>&);
23866: };
23866:
23866:
23866:
23866: template<typename _InputIterator,
23866: typename _Hash = hash<__iter_key_t<_InputIterator>>,
23866: typename _Pred = equal_to<__iter_key_t<_InputIterator>>,
23866: typename _Allocator = allocator<__iter_to_alloc_t<_InputIterator>>,
23866: typename = _RequireInputIter<_InputIterator>,
23866: typename = _RequireNotAllocatorOrIntegral<_Hash>,
23866: typename = _RequireNotAllocator<_Pred>,
23866: typename = _RequireAllocator<_Allocator>>
23866: unordered_map(_InputIterator, _InputIterator,
23866: typename unordered_map<int, int>::size_type = {},
23866: _Hash = _Hash(), _Pred = _Pred(), _Allocator = _Allocator())
23866: -> unordered_map<__iter_key_t<_InputIterator>,
23866: __iter_val_t<_InputIterator>,
23866: _Hash, _Pred, _Allocator>;
23866:
23866: template<typename _Key, typename _Tp, typename _Hash = hash<_Key>,
23866: typename _Pred = equal_to<_Key>,
23866: typename _Allocator = allocator<pair<const _Key, _Tp>>,
23866: typename = _RequireNotAllocatorOrIntegral<_Hash>,
23866: typename = _RequireNotAllocator<_Pred>,
23866: typename = _RequireAllocator<_Allocator>>
23866: unordered_map(initializer_list<pair<_Key, _Tp>>,
23866: typename unordered_map<int, int>::size_type = {},
23866: _Hash = _Hash(), _Pred = _Pred(), _Allocator = _Allocator())
23866: -> unordered_map<_Key, _Tp, _Hash, _Pred, _Allocator>;
23866:
23866: template<typename _InputIterator, typename _Allocator,
23866: typename = _RequireInputIter<_InputIterator>,
23866: typename = _RequireAllocator<_Allocator>>
23866: unordered_map(_InputIterator, _InputIterator,
23866: typename unordered_map<int, int>::size_type, _Allocator)
23866: -> unordered_map<__iter_key_t<_InputIterator>,
23866: __iter_val_t<_InputIterator>,
23866: hash<__iter_key_t<_InputIterator>>,
23866: equal_to<__iter_key_t<_InputIterator>>,
23866: _Allocator>;
23866:
23866: template<typename _InputIterator, typename _Allocator,
23866: typename = _RequireInputIter<_InputIterator>,
23866: typename = _RequireAllocator<_Allocator>>
23866: unordered_map(_InputIterator, _InputIterator, _Allocator)
23866: -> unordered_map<__iter_key_t<_InputIterator>,
23866: __iter_val_t<_InputIterator>,
23866: hash<__iter_key_t<_InputIterator>>,
23866: equal_to<__iter_key_t<_InputIterator>>,
23866: _Allocator>;
23866:
23866: template<typename _InputIterator, typename _Hash, typename _Allocator,
23866: typename = _RequireInputIter<_InputIterator>,
23866: typename = _RequireNotAllocatorOrIntegral<_Hash>,
23866: typename = _RequireAllocator<_Allocator>>
23866: unordered_map(_InputIterator, _InputIterator,
23866: typename unordered_map<int, int>::size_type,
23866: _Hash, _Allocator)
23866: -> unordered_map<__iter_key_t<_InputIterator>,
23866: __iter_val_t<_InputIterator>, _Hash,
23866: equal_to<__iter_key_t<_InputIterator>>, _Allocator>;
23866:
23866: template<typename _Key, typename _Tp, typename _Allocator,
23866: typename = _RequireAllocator<_Allocator>>
23866: unordered_map(initializer_list<pair<_Key, _Tp>>,
23866: typename unordered_map<int, int>::size_type,
23866: _Allocator)
23866: -> unordered_map<_Key, _Tp, hash<_Key>, equal_to<_Key>, _Allocator>;
23866:
23866: template<typename _Key, typename _Tp, typename _Allocator,
23866: typename = _RequireAllocator<_Allocator>>
23866: unordered_map(initializer_list<pair<_Key, _Tp>>, _Allocator)
23866: -> unordered_map<_Key, _Tp, hash<_Key>, equal_to<_Key>, _Allocator>;
23866:
23866: template<typename _Key, typename _Tp, typename _Hash, typename _Allocator,
23866: typename = _RequireNotAllocatorOrIntegral<_Hash>,
23866: typename = _RequireAllocator<_Allocator>>
23866: unordered_map(initializer_list<pair<_Key, _Tp>>,
23866: typename unordered_map<int, int>::size_type,
23866: _Hash, _Allocator)
23866: -> unordered_map<_Key, _Tp, _Hash, equal_to<_Key>, _Allocator>;
23866: # 1245 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: template<typename _Key, typename _Tp,
23866: typename _Hash = hash<_Key>,
23866: typename _Pred = equal_to<_Key>,
23866: typename _Alloc = allocator<std::pair<const _Key, _Tp>>>
23866: class unordered_multimap
23866: {
23866: typedef __ummap_hashtable<_Key, _Tp, _Hash, _Pred, _Alloc> _Hashtable;
23866: _Hashtable _M_h;
23866:
23866: public:
23866:
23866:
23866:
23866: typedef typename _Hashtable::key_type key_type;
23866: typedef typename _Hashtable::value_type value_type;
23866: typedef typename _Hashtable::mapped_type mapped_type;
23866: typedef typename _Hashtable::hasher hasher;
23866: typedef typename _Hashtable::key_equal key_equal;
23866: typedef typename _Hashtable::allocator_type allocator_type;
23866:
23866:
23866:
23866:
23866: typedef typename _Hashtable::pointer pointer;
23866: typedef typename _Hashtable::const_pointer const_pointer;
23866: typedef typename _Hashtable::reference reference;
23866: typedef typename _Hashtable::const_reference const_reference;
23866: typedef typename _Hashtable::iterator iterator;
23866: typedef typename _Hashtable::const_iterator const_iterator;
23866: typedef typename _Hashtable::local_iterator local_iterator;
23866: typedef typename _Hashtable::const_local_iterator const_local_iterator;
23866: typedef typename _Hashtable::size_type size_type;
23866: typedef typename _Hashtable::difference_type difference_type;
23866:
23866:
23866:
23866: using node_type = typename _Hashtable::node_type;
23866:
23866:
23866:
23866:
23866:
23866: unordered_multimap() = default;
23866: # 1296 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: explicit
23866: unordered_multimap(size_type __n,
23866: const hasher& __hf = hasher(),
23866: const key_equal& __eql = key_equal(),
23866: const allocator_type& __a = allocator_type())
23866: : _M_h(__n, __hf, __eql, __a)
23866: { }
23866: # 1317 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: template<typename _InputIterator>
23866: unordered_multimap(_InputIterator __first, _InputIterator __last,
23866: size_type __n = 0,
23866: const hasher& __hf = hasher(),
23866: const key_equal& __eql = key_equal(),
23866: const allocator_type& __a = allocator_type())
23866: : _M_h(__first, __last, __n, __hf, __eql, __a)
23866: { }
23866:
23866:
23866: unordered_multimap(const unordered_multimap&) = default;
23866:
23866:
23866: unordered_multimap(unordered_multimap&&) = default;
23866:
23866:
23866:
23866:
23866:
23866: explicit
23866: unordered_multimap(const allocator_type& __a)
23866: : _M_h(__a)
23866: { }
23866:
23866:
23866:
23866:
23866:
23866:
23866: unordered_multimap(const unordered_multimap& __ummap,
23866: const allocator_type& __a)
23866: : _M_h(__ummap._M_h, __a)
23866: { }
23866:
23866:
23866:
23866:
23866:
23866:
23866: unordered_multimap(unordered_multimap&& __ummap,
23866: const allocator_type& __a)
23866: : _M_h(std::move(__ummap._M_h), __a)
23866: { }
23866: # 1372 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: unordered_multimap(initializer_list<value_type> __l,
23866: size_type __n = 0,
23866: const hasher& __hf = hasher(),
23866: const key_equal& __eql = key_equal(),
23866: const allocator_type& __a = allocator_type())
23866: : _M_h(__l, __n, __hf, __eql, __a)
23866: { }
23866:
23866: unordered_multimap(size_type __n, const allocator_type& __a)
23866: : unordered_multimap(__n, hasher(), key_equal(), __a)
23866: { }
23866:
23866: unordered_multimap(size_type __n, const hasher& __hf,
23866: const allocator_type& __a)
23866: : unordered_multimap(__n, __hf, key_equal(), __a)
23866: { }
23866:
23866: template<typename _InputIterator>
23866: unordered_multimap(_InputIterator __first, _InputIterator __last,
23866: size_type __n,
23866: const allocator_type& __a)
23866: : unordered_multimap(__first, __last, __n, hasher(), key_equal(), __a)
23866: { }
23866:
23866: template<typename _InputIterator>
23866: unordered_multimap(_InputIterator __first, _InputIterator __last,
23866: size_type __n, const hasher& __hf,
23866: const allocator_type& __a)
23866: : unordered_multimap(__first, __last, __n, __hf, key_equal(), __a)
23866: { }
23866:
23866: unordered_multimap(initializer_list<value_type> __l,
23866: size_type __n,
23866: const allocator_type& __a)
23866: : unordered_multimap(__l, __n, hasher(), key_equal(), __a)
23866: { }
23866:
23866: unordered_multimap(initializer_list<value_type> __l,
23866: size_type __n, const hasher& __hf,
23866: const allocator_type& __a)
23866: : unordered_multimap(__l, __n, __hf, key_equal(), __a)
23866: { }
23866:
23866:
23866: unordered_multimap&
23866: operator=(const unordered_multimap&) = default;
23866:
23866:
23866: unordered_multimap&
23866: operator=(unordered_multimap&&) = default;
23866: # 1434 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: unordered_multimap&
23866: operator=(initializer_list<value_type> __l)
23866: {
23866: _M_h = __l;
23866: return *this;
23866: }
23866:
23866:
23866: allocator_type
23866: get_allocator() const noexcept
23866: { return _M_h.get_allocator(); }
23866:
23866:
23866:
23866:
23866: [[__nodiscard__]] bool
23866: empty() const noexcept
23866: { return _M_h.empty(); }
23866:
23866:
23866: size_type
23866: size() const noexcept
23866: { return _M_h.size(); }
23866:
23866:
23866: size_type
23866: max_size() const noexcept
23866: { return _M_h.max_size(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: iterator
23866: begin() noexcept
23866: { return _M_h.begin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_iterator
23866: begin() const noexcept
23866: { return _M_h.begin(); }
23866:
23866: const_iterator
23866: cbegin() const noexcept
23866: { return _M_h.begin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: iterator
23866: end() noexcept
23866: { return _M_h.end(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_iterator
23866: end() const noexcept
23866: { return _M_h.end(); }
23866:
23866: const_iterator
23866: cend() const noexcept
23866: { return _M_h.end(); }
23866: # 1526 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: template<typename... _Args>
23866: iterator
23866: emplace(_Args&&... __args)
23866: { return _M_h.emplace(std::forward<_Args>(__args)...); }
23866: # 1553 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: template<typename... _Args>
23866: iterator
23866: emplace_hint(const_iterator __pos, _Args&&... __args)
23866: { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); }
23866: # 1568 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: iterator
23866: insert(const value_type& __x)
23866: { return _M_h.insert(__x); }
23866:
23866: iterator
23866: insert(value_type&& __x)
23866: { return _M_h.insert(std::move(__x)); }
23866:
23866: template<typename _Pair>
23866: __enable_if_t<is_constructible<value_type, _Pair&&>::value, iterator>
23866: insert(_Pair&& __x)
23866: { return _M_h.emplace(std::forward<_Pair>(__x)); }
23866: # 1602 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: iterator
23866: insert(const_iterator __hint, const value_type& __x)
23866: { return _M_h.insert(__hint, __x); }
23866:
23866:
23866:
23866: iterator
23866: insert(const_iterator __hint, value_type&& __x)
23866: { return _M_h.insert(__hint, std::move(__x)); }
23866:
23866: template<typename _Pair>
23866: __enable_if_t<is_constructible<value_type, _Pair&&>::value, iterator>
23866: insert(const_iterator __hint, _Pair&& __x)
23866: { return _M_h.emplace_hint(__hint, std::forward<_Pair>(__x)); }
23866: # 1627 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: template<typename _InputIterator>
23866: void
23866: insert(_InputIterator __first, _InputIterator __last)
23866: { _M_h.insert(__first, __last); }
23866: # 1640 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: void
23866: insert(initializer_list<value_type> __l)
23866: { _M_h.insert(__l); }
23866:
23866:
23866:
23866: node_type
23866: extract(const_iterator __pos)
23866: {
23866: ;
23866: return _M_h.extract(__pos);
23866: }
23866:
23866:
23866: node_type
23866: extract(const key_type& __key)
23866: { return _M_h.extract(__key); }
23866:
23866:
23866: iterator
23866: insert(node_type&& __nh)
23866: { return _M_h._M_reinsert_node_multi(cend(), std::move(__nh)); }
23866:
23866:
23866: iterator
23866: insert(const_iterator __hint, node_type&& __nh)
23866: { return _M_h._M_reinsert_node_multi(__hint, std::move(__nh)); }
23866: # 1683 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: iterator
23866: erase(const_iterator __position)
23866: { return _M_h.erase(__position); }
23866:
23866:
23866: iterator
23866: erase(iterator __position)
23866: { return _M_h.erase(__position); }
23866: # 1704 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: size_type
23866: erase(const key_type& __x)
23866: { return _M_h.erase(__x); }
23866: # 1723 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: iterator
23866: erase(const_iterator __first, const_iterator __last)
23866: { return _M_h.erase(__first, __last); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: void
23866: clear() noexcept
23866: { _M_h.clear(); }
23866: # 1747 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: void
23866: swap(unordered_multimap& __x)
23866: noexcept( noexcept(_M_h.swap(__x._M_h)) )
23866: { _M_h.swap(__x._M_h); }
23866:
23866:
23866: template<typename, typename, typename>
23866: friend class std::_Hash_merge_helper;
23866:
23866: template<typename _H2, typename _P2>
23866: void
23866: merge(unordered_multimap<_Key, _Tp, _H2, _P2, _Alloc>& __source)
23866: {
23866: using _Merge_helper
23866: = _Hash_merge_helper<unordered_multimap, _H2, _P2>;
23866: _M_h._M_merge_multi(_Merge_helper::_S_get_table(__source));
23866: }
23866:
23866: template<typename _H2, typename _P2>
23866: void
23866: merge(unordered_multimap<_Key, _Tp, _H2, _P2, _Alloc>&& __source)
23866: { merge(__source); }
23866:
23866: template<typename _H2, typename _P2>
23866: void
23866: merge(unordered_map<_Key, _Tp, _H2, _P2, _Alloc>& __source)
23866: {
23866: using _Merge_helper
23866: = _Hash_merge_helper<unordered_multimap, _H2, _P2>;
23866: _M_h._M_merge_multi(_Merge_helper::_S_get_table(__source));
23866: }
23866:
23866: template<typename _H2, typename _P2>
23866: void
23866: merge(unordered_map<_Key, _Tp, _H2, _P2, _Alloc>&& __source)
23866: { merge(__source); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: hasher
23866: hash_function() const
23866: { return _M_h.hash_function(); }
23866:
23866:
23866:
23866: key_equal
23866: key_eq() const
23866: { return _M_h.key_eq(); }
23866: # 1813 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: iterator
23866: find(const key_type& __x)
23866: { return _M_h.find(__x); }
23866:
23866: const_iterator
23866: find(const key_type& __x) const
23866: { return _M_h.find(__x); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: size_type
23866: count(const key_type& __x) const
23866: { return _M_h.count(__x); }
23866: # 1849 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: std::pair<iterator, iterator>
23866: equal_range(const key_type& __x)
23866: { return _M_h.equal_range(__x); }
23866:
23866: std::pair<const_iterator, const_iterator>
23866: equal_range(const key_type& __x) const
23866: { return _M_h.equal_range(__x); }
23866:
23866:
23866:
23866:
23866:
23866: size_type
23866: bucket_count() const noexcept
23866: { return _M_h.bucket_count(); }
23866:
23866:
23866: size_type
23866: max_bucket_count() const noexcept
23866: { return _M_h.max_bucket_count(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: size_type
23866: bucket_size(size_type __n) const
23866: { return _M_h.bucket_size(__n); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: size_type
23866: bucket(const key_type& __key) const
23866: { return _M_h.bucket(__key); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: local_iterator
23866: begin(size_type __n)
23866: { return _M_h.begin(__n); }
23866: # 1905 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: const_local_iterator
23866: begin(size_type __n) const
23866: { return _M_h.begin(__n); }
23866:
23866: const_local_iterator
23866: cbegin(size_type __n) const
23866: { return _M_h.cbegin(__n); }
23866: # 1920 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: local_iterator
23866: end(size_type __n)
23866: { return _M_h.end(__n); }
23866: # 1931 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: const_local_iterator
23866: end(size_type __n) const
23866: { return _M_h.end(__n); }
23866:
23866: const_local_iterator
23866: cend(size_type __n) const
23866: { return _M_h.cend(__n); }
23866:
23866:
23866:
23866:
23866:
23866: float
23866: load_factor() const noexcept
23866: { return _M_h.load_factor(); }
23866:
23866:
23866:
23866: float
23866: max_load_factor() const noexcept
23866: { return _M_h.max_load_factor(); }
23866:
23866:
23866:
23866:
23866:
23866: void
23866: max_load_factor(float __z)
23866: { _M_h.max_load_factor(__z); }
23866: # 1968 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: void
23866: rehash(size_type __n)
23866: { _M_h.rehash(__n); }
23866: # 1979 "/usr/include/c++/10/bits/unordered_map.h" 3
23866: void
23866: reserve(size_type __n)
23866: { _M_h.reserve(__n); }
23866:
23866: template<typename _Key1, typename _Tp1, typename _Hash1, typename _Pred1,
23866: typename _Alloc1>
23866: friend bool
23866: operator==(const unordered_multimap<_Key1, _Tp1,
23866: _Hash1, _Pred1, _Alloc1>&,
23866: const unordered_multimap<_Key1, _Tp1,
23866: _Hash1, _Pred1, _Alloc1>&);
23866: };
23866:
23866:
23866:
23866: template<typename _InputIterator,
23866: typename _Hash = hash<__iter_key_t<_InputIterator>>,
23866: typename _Pred = equal_to<__iter_key_t<_InputIterator>>,
23866: typename _Allocator = allocator<__iter_to_alloc_t<_InputIterator>>,
23866: typename = _RequireInputIter<_InputIterator>,
23866: typename = _RequireNotAllocatorOrIntegral<_Hash>,
23866: typename = _RequireNotAllocator<_Pred>,
23866: typename = _RequireAllocator<_Allocator>>
23866: unordered_multimap(_InputIterator, _InputIterator,
23866: unordered_multimap<int, int>::size_type = {},
23866: _Hash = _Hash(), _Pred = _Pred(),
23866: _Allocator = _Allocator())
23866: -> unordered_multimap<__iter_key_t<_InputIterator>,
23866: __iter_val_t<_InputIterator>, _Hash, _Pred,
23866: _Allocator>;
23866:
23866: template<typename _Key, typename _Tp, typename _Hash = hash<_Key>,
23866: typename _Pred = equal_to<_Key>,
23866: typename _Allocator = allocator<pair<const _Key, _Tp>>,
23866: typename = _RequireNotAllocatorOrIntegral<_Hash>,
23866: typename = _RequireNotAllocator<_Pred>,
23866: typename = _RequireAllocator<_Allocator>>
23866: unordered_multimap(initializer_list<pair<_Key, _Tp>>,
23866: unordered_multimap<int, int>::size_type = {},
23866: _Hash = _Hash(), _Pred = _Pred(),
23866: _Allocator = _Allocator())
23866: -> unordered_multimap<_Key, _Tp, _Hash, _Pred, _Allocator>;
23866:
23866: template<typename _InputIterator, typename _Allocator,
23866: typename = _RequireInputIter<_InputIterator>,
23866: typename = _RequireAllocator<_Allocator>>
23866: unordered_multimap(_InputIterator, _InputIterator,
23866: unordered_multimap<int, int>::size_type, _Allocator)
23866: -> unordered_multimap<__iter_key_t<_InputIterator>,
23866: __iter_val_t<_InputIterator>,
23866: hash<__iter_key_t<_InputIterator>>,
23866: equal_to<__iter_key_t<_InputIterator>>, _Allocator>;
23866:
23866: template<typename _InputIterator, typename _Allocator,
23866: typename = _RequireInputIter<_InputIterator>,
23866: typename = _RequireAllocator<_Allocator>>
23866: unordered_multimap(_InputIterator, _InputIterator, _Allocator)
23866: -> unordered_multimap<__iter_key_t<_InputIterator>,
23866: __iter_val_t<_InputIterator>,
23866: hash<__iter_key_t<_InputIterator>>,
23866: equal_to<__iter_key_t<_InputIterator>>, _Allocator>;
23866:
23866: template<typename _InputIterator, typename _Hash, typename _Allocator,
23866: typename = _RequireInputIter<_InputIterator>,
23866: typename = _RequireNotAllocatorOrIntegral<_Hash>,
23866: typename = _RequireAllocator<_Allocator>>
23866: unordered_multimap(_InputIterator, _InputIterator,
23866: unordered_multimap<int, int>::size_type, _Hash,
23866: _Allocator)
23866: -> unordered_multimap<__iter_key_t<_InputIterator>,
23866: __iter_val_t<_InputIterator>, _Hash,
23866: equal_to<__iter_key_t<_InputIterator>>, _Allocator>;
23866:
23866: template<typename _Key, typename _Tp, typename _Allocator,
23866: typename = _RequireAllocator<_Allocator>>
23866: unordered_multimap(initializer_list<pair<_Key, _Tp>>,
23866: unordered_multimap<int, int>::size_type,
23866: _Allocator)
23866: -> unordered_multimap<_Key, _Tp, hash<_Key>, equal_to<_Key>, _Allocator>;
23866:
23866: template<typename _Key, typename _Tp, typename _Allocator,
23866: typename = _RequireAllocator<_Allocator>>
23866: unordered_multimap(initializer_list<pair<_Key, _Tp>>, _Allocator)
23866: -> unordered_multimap<_Key, _Tp, hash<_Key>, equal_to<_Key>, _Allocator>;
23866:
23866: template<typename _Key, typename _Tp, typename _Hash, typename _Allocator,
23866: typename = _RequireNotAllocatorOrIntegral<_Hash>,
23866: typename = _RequireAllocator<_Allocator>>
23866: unordered_multimap(initializer_list<pair<_Key, _Tp>>,
23866: unordered_multimap<int, int>::size_type,
23866: _Hash, _Allocator)
23866: -> unordered_multimap<_Key, _Tp, _Hash, equal_to<_Key>, _Allocator>;
23866:
23866:
23866:
23866: template<class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
23866: inline void
23866: swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
23866: unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
23866: noexcept(noexcept(__x.swap(__y)))
23866: { __x.swap(__y); }
23866:
23866: template<class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
23866: inline void
23866: swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
23866: unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
23866: noexcept(noexcept(__x.swap(__y)))
23866: { __x.swap(__y); }
23866:
23866: template<class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
23866: inline bool
23866: operator==(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
23866: const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
23866: { return __x._M_h._M_equal(__y._M_h); }
23866:
23866:
23866: template<class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
23866: inline bool
23866: operator!=(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
23866: const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
23866: { return !(__x == __y); }
23866:
23866:
23866: template<class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
23866: inline bool
23866: operator==(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
23866: const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
23866: { return __x._M_h._M_equal(__y._M_h); }
23866:
23866:
23866: template<class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
23866: inline bool
23866: operator!=(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
23866: const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
23866: { return !(__x == __y); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Key, typename _Val, typename _Hash1, typename _Eq1,
23866: typename _Alloc, typename _Hash2, typename _Eq2>
23866: struct _Hash_merge_helper<
23866: std::unordered_map<_Key, _Val, _Hash1, _Eq1, _Alloc>,
23866: _Hash2, _Eq2>
23866: {
23866: private:
23866: template<typename... _Tp>
23866: using unordered_map = std::unordered_map<_Tp...>;
23866: template<typename... _Tp>
23866: using unordered_multimap = std::unordered_multimap<_Tp...>;
23866:
23866: friend unordered_map<_Key, _Val, _Hash1, _Eq1, _Alloc>;
23866:
23866: static auto&
23866: _S_get_table(unordered_map<_Key, _Val, _Hash2, _Eq2, _Alloc>& __map)
23866: { return __map._M_h; }
23866:
23866: static auto&
23866: _S_get_table(unordered_multimap<_Key, _Val, _Hash2, _Eq2, _Alloc>& __map)
23866: { return __map._M_h; }
23866: };
23866:
23866:
23866: template<typename _Key, typename _Val, typename _Hash1, typename _Eq1,
23866: typename _Alloc, typename _Hash2, typename _Eq2>
23866: struct _Hash_merge_helper<
23866: std::unordered_multimap<_Key, _Val, _Hash1, _Eq1, _Alloc>,
23866: _Hash2, _Eq2>
23866: {
23866: private:
23866: template<typename... _Tp>
23866: using unordered_map = std::unordered_map<_Tp...>;
23866: template<typename... _Tp>
23866: using unordered_multimap = std::unordered_multimap<_Tp...>;
23866:
23866: friend unordered_multimap<_Key, _Val, _Hash1, _Eq1, _Alloc>;
23866:
23866: static auto&
23866: _S_get_table(unordered_map<_Key, _Val, _Hash2, _Eq2, _Alloc>& __map)
23866: { return __map._M_h; }
23866:
23866: static auto&
23866: _S_get_table(unordered_multimap<_Key, _Val, _Hash2, _Eq2, _Alloc>& __map)
23866: { return __map._M_h; }
23866: };
23866:
23866:
23866:
23866: }
23866: # 48 "/usr/include/c++/10/unordered_map" 2 3
23866:
23866: # 1 "/usr/include/c++/10/bits/erase_if.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/erase_if.h" 3
23866: #define _GLIBCXX_ERASE_IF_H 1
23866:
23866:
23866: # 34 "/usr/include/c++/10/bits/erase_if.h" 3
23866:
23866:
23866:
23866: namespace std
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace __detail
23866: {
23866: template<typename _Container, typename _Predicate>
23866: typename _Container::size_type
23866: __erase_nodes_if(_Container& __cont, _Predicate __pred)
23866: {
23866: typename _Container::size_type __num = 0;
23866: for (auto __iter = __cont.begin(), __last = __cont.end();
23866: __iter != __last;)
23866: {
23866: if (__pred(*__iter))
23866: {
23866: __iter = __cont.erase(__iter);
23866: ++__num;
23866: }
23866: else
23866: ++__iter;
23866: }
23866: return __num;
23866: }
23866: }
23866:
23866:
23866: }
23866: # 50 "/usr/include/c++/10/unordered_map" 2 3
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: namespace pmr
23866: {
23866: template<typename _Tp> class polymorphic_allocator;
23866: template<typename _Key, typename _Tp, typename _Hash = std::hash<_Key>,
23866: typename _Pred = std::equal_to<_Key>>
23866: using unordered_map
23866: = std::unordered_map<_Key, _Tp, _Hash, _Pred,
23866: polymorphic_allocator<pair<const _Key, _Tp>>>;
23866: template<typename _Key, typename _Tp, typename _Hash = std::hash<_Key>,
23866: typename _Pred = std::equal_to<_Key>>
23866: using unordered_multimap
23866: = std::unordered_multimap<_Key, _Tp, _Hash, _Pred,
23866: polymorphic_allocator<pair<const _Key, _Tp>>>;
23866: }
23866:
23866: }
23866: # 62 "/usr/include/c++/10/functional" 2 3
23866: # 1 "/usr/include/c++/10/vector" 1 3
23866: # 56 "/usr/include/c++/10/vector" 3
23866: #define _GLIBCXX_VECTOR 1
23866:
23866:
23866: # 59 "/usr/include/c++/10/vector" 3
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/stl_uninitialized.h" 1 3
23866: # 57 "/usr/include/c++/10/bits/stl_uninitialized.h" 3
23866: #define _STL_UNINITIALIZED_H 1
23866: # 69 "/usr/include/c++/10/bits/stl_uninitialized.h" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<bool _TrivialValueTypes>
23866: struct __uninitialized_copy
23866: {
23866: template<typename _InputIterator, typename _ForwardIterator>
23866: static _ForwardIterator
23866: __uninit_copy(_InputIterator __first, _InputIterator __last,
23866: _ForwardIterator __result)
23866: {
23866: _ForwardIterator __cur = __result;
23866: try
23866: {
23866: for (; __first != __last; ++__first, (void)++__cur)
23866: std::_Construct(std::__addressof(*__cur), *__first);
23866: return __cur;
23866: }
23866: catch(...)
23866: {
23866: std::_Destroy(__result, __cur);
23866: throw;
23866: }
23866: }
23866: };
23866:
23866: template<>
23866: struct __uninitialized_copy<true>
23866: {
23866: template<typename _InputIterator, typename _ForwardIterator>
23866: static _ForwardIterator
23866: __uninit_copy(_InputIterator __first, _InputIterator __last,
23866: _ForwardIterator __result)
23866: { return std::copy(__first, __last, __result); }
23866: };
23866: # 123 "/usr/include/c++/10/bits/stl_uninitialized.h" 3
23866: template<typename _InputIterator, typename _ForwardIterator>
23866: inline _ForwardIterator
23866: uninitialized_copy(_InputIterator __first, _InputIterator __last,
23866: _ForwardIterator __result)
23866: {
23866: typedef typename iterator_traits<_InputIterator>::value_type
23866: _ValueType1;
23866: typedef typename iterator_traits<_ForwardIterator>::value_type
23866: _ValueType2;
23866:
23866:
23866:
23866:
23866:
23866: static_assert(is_constructible<_ValueType2, decltype(*__first)>::value,
23866: "result type must be constructible from value type of input range");
23866:
23866: typedef typename iterator_traits<_InputIterator>::reference _RefType1;
23866: typedef typename iterator_traits<_ForwardIterator>::reference _RefType2;
23866:
23866:
23866: const bool __assignable = is_assignable<_RefType2, _RefType1>::value;
23866:
23866:
23866: return std::__uninitialized_copy<__is_trivial(_ValueType1)
23866: && __is_trivial(_ValueType2)
23866: && __assignable>::
23866: __uninit_copy(__first, __last, __result);
23866: }
23866:
23866:
23866:
23866: template<bool _TrivialValueType>
23866: struct __uninitialized_fill
23866: {
23866: template<typename _ForwardIterator, typename _Tp>
23866: static void
23866: __uninit_fill(_ForwardIterator __first, _ForwardIterator __last,
23866: const _Tp& __x)
23866: {
23866: _ForwardIterator __cur = __first;
23866: try
23866: {
23866: for (; __cur != __last; ++__cur)
23866: std::_Construct(std::__addressof(*__cur), __x);
23866: }
23866: catch(...)
23866: {
23866: std::_Destroy(__first, __cur);
23866: throw;
23866: }
23866: }
23866: };
23866:
23866: template<>
23866: struct __uninitialized_fill<true>
23866: {
23866: template<typename _ForwardIterator, typename _Tp>
23866: static void
23866: __uninit_fill(_ForwardIterator __first, _ForwardIterator __last,
23866: const _Tp& __x)
23866: { std::fill(__first, __last, __x); }
23866: };
23866: # 198 "/usr/include/c++/10/bits/stl_uninitialized.h" 3
23866: template<typename _ForwardIterator, typename _Tp>
23866: inline void
23866: uninitialized_fill(_ForwardIterator __first, _ForwardIterator __last,
23866: const _Tp& __x)
23866: {
23866: typedef typename iterator_traits<_ForwardIterator>::value_type
23866: _ValueType;
23866:
23866:
23866:
23866:
23866:
23866: static_assert(is_constructible<_ValueType, const _Tp&>::value,
23866: "result type must be constructible from input type");
23866:
23866:
23866:
23866: const bool __assignable = is_copy_assignable<_ValueType>::value;
23866:
23866:
23866: std::__uninitialized_fill<__is_trivial(_ValueType) && __assignable>::
23866: __uninit_fill(__first, __last, __x);
23866: }
23866:
23866:
23866:
23866: template<bool _TrivialValueType>
23866: struct __uninitialized_fill_n
23866: {
23866: template<typename _ForwardIterator, typename _Size, typename _Tp>
23866: static _ForwardIterator
23866: __uninit_fill_n(_ForwardIterator __first, _Size __n,
23866: const _Tp& __x)
23866: {
23866: _ForwardIterator __cur = __first;
23866: try
23866: {
23866: for (; __n > 0; --__n, (void) ++__cur)
23866: std::_Construct(std::__addressof(*__cur), __x);
23866: return __cur;
23866: }
23866: catch(...)
23866: {
23866: std::_Destroy(__first, __cur);
23866: throw;
23866: }
23866: }
23866: };
23866:
23866: template<>
23866: struct __uninitialized_fill_n<true>
23866: {
23866: template<typename _ForwardIterator, typename _Size, typename _Tp>
23866: static _ForwardIterator
23866: __uninit_fill_n(_ForwardIterator __first, _Size __n,
23866: const _Tp& __x)
23866: { return std::fill_n(__first, __n, __x); }
23866: };
23866: # 270 "/usr/include/c++/10/bits/stl_uninitialized.h" 3
23866: template<typename _ForwardIterator, typename _Size, typename _Tp>
23866: inline _ForwardIterator
23866: uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x)
23866: {
23866: typedef typename iterator_traits<_ForwardIterator>::value_type
23866: _ValueType;
23866:
23866:
23866:
23866:
23866:
23866: static_assert(is_constructible<_ValueType, const _Tp&>::value,
23866: "result type must be constructible from input type");
23866:
23866:
23866:
23866: const bool __assignable = is_copy_assignable<_ValueType>::value;
23866:
23866: return __uninitialized_fill_n<__is_trivial(_ValueType) && __assignable>::
23866: __uninit_fill_n(__first, __n, __x);
23866: }
23866: # 300 "/usr/include/c++/10/bits/stl_uninitialized.h" 3
23866: template<typename _InputIterator, typename _ForwardIterator,
23866: typename _Allocator>
23866: _ForwardIterator
23866: __uninitialized_copy_a(_InputIterator __first, _InputIterator __last,
23866: _ForwardIterator __result, _Allocator& __alloc)
23866: {
23866: _ForwardIterator __cur = __result;
23866: try
23866: {
23866: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits;
23866: for (; __first != __last; ++__first, (void)++__cur)
23866: __traits::construct(__alloc, std::__addressof(*__cur), *__first);
23866: return __cur;
23866: }
23866: catch(...)
23866: {
23866: std::_Destroy(__result, __cur, __alloc);
23866: throw;
23866: }
23866: }
23866:
23866: template<typename _InputIterator, typename _ForwardIterator, typename _Tp>
23866: inline _ForwardIterator
23866: __uninitialized_copy_a(_InputIterator __first, _InputIterator __last,
23866: _ForwardIterator __result, allocator<_Tp>&)
23866: { return std::uninitialized_copy(__first, __last, __result); }
23866:
23866: template<typename _InputIterator, typename _ForwardIterator,
23866: typename _Allocator>
23866: inline _ForwardIterator
23866: __uninitialized_move_a(_InputIterator __first, _InputIterator __last,
23866: _ForwardIterator __result, _Allocator& __alloc)
23866: {
23866: return std::__uninitialized_copy_a(std::make_move_iterator(__first),
23866: std::make_move_iterator(__last),
23866: __result, __alloc);
23866: }
23866:
23866: template<typename _InputIterator, typename _ForwardIterator,
23866: typename _Allocator>
23866: inline _ForwardIterator
23866: __uninitialized_move_if_noexcept_a(_InputIterator __first,
23866: _InputIterator __last,
23866: _ForwardIterator __result,
23866: _Allocator& __alloc)
23866: {
23866: return std::__uninitialized_copy_a
23866: (std::__make_move_if_noexcept_iterator(__first),
23866: std::__make_move_if_noexcept_iterator(__last), __result, __alloc);
23866: }
23866:
23866: template<typename _ForwardIterator, typename _Tp, typename _Allocator>
23866: void
23866: __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last,
23866: const _Tp& __x, _Allocator& __alloc)
23866: {
23866: _ForwardIterator __cur = __first;
23866: try
23866: {
23866: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits;
23866: for (; __cur != __last; ++__cur)
23866: __traits::construct(__alloc, std::__addressof(*__cur), __x);
23866: }
23866: catch(...)
23866: {
23866: std::_Destroy(__first, __cur, __alloc);
23866: throw;
23866: }
23866: }
23866:
23866: template<typename _ForwardIterator, typename _Tp, typename _Tp2>
23866: inline void
23866: __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last,
23866: const _Tp& __x, allocator<_Tp2>&)
23866: { std::uninitialized_fill(__first, __last, __x); }
23866:
23866: template<typename _ForwardIterator, typename _Size, typename _Tp,
23866: typename _Allocator>
23866: _ForwardIterator
23866: __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n,
23866: const _Tp& __x, _Allocator& __alloc)
23866: {
23866: _ForwardIterator __cur = __first;
23866: try
23866: {
23866: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits;
23866: for (; __n > 0; --__n, (void) ++__cur)
23866: __traits::construct(__alloc, std::__addressof(*__cur), __x);
23866: return __cur;
23866: }
23866: catch(...)
23866: {
23866: std::_Destroy(__first, __cur, __alloc);
23866: throw;
23866: }
23866: }
23866:
23866: template<typename _ForwardIterator, typename _Size, typename _Tp,
23866: typename _Tp2>
23866: inline _ForwardIterator
23866: __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n,
23866: const _Tp& __x, allocator<_Tp2>&)
23866: { return std::uninitialized_fill_n(__first, __n, __x); }
23866: # 414 "/usr/include/c++/10/bits/stl_uninitialized.h" 3
23866: template<typename _InputIterator1, typename _InputIterator2,
23866: typename _ForwardIterator, typename _Allocator>
23866: inline _ForwardIterator
23866: __uninitialized_copy_move(_InputIterator1 __first1,
23866: _InputIterator1 __last1,
23866: _InputIterator2 __first2,
23866: _InputIterator2 __last2,
23866: _ForwardIterator __result,
23866: _Allocator& __alloc)
23866: {
23866: _ForwardIterator __mid = std::__uninitialized_copy_a(__first1, __last1,
23866: __result,
23866: __alloc);
23866: try
23866: {
23866: return std::__uninitialized_move_a(__first2, __last2, __mid, __alloc);
23866: }
23866: catch(...)
23866: {
23866: std::_Destroy(__result, __mid, __alloc);
23866: throw;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename _InputIterator1, typename _InputIterator2,
23866: typename _ForwardIterator, typename _Allocator>
23866: inline _ForwardIterator
23866: __uninitialized_move_copy(_InputIterator1 __first1,
23866: _InputIterator1 __last1,
23866: _InputIterator2 __first2,
23866: _InputIterator2 __last2,
23866: _ForwardIterator __result,
23866: _Allocator& __alloc)
23866: {
23866: _ForwardIterator __mid = std::__uninitialized_move_a(__first1, __last1,
23866: __result,
23866: __alloc);
23866: try
23866: {
23866: return std::__uninitialized_copy_a(__first2, __last2, __mid, __alloc);
23866: }
23866: catch(...)
23866: {
23866: std::_Destroy(__result, __mid, __alloc);
23866: throw;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866: template<typename _ForwardIterator, typename _Tp, typename _InputIterator,
23866: typename _Allocator>
23866: inline _ForwardIterator
23866: __uninitialized_fill_move(_ForwardIterator __result, _ForwardIterator __mid,
23866: const _Tp& __x, _InputIterator __first,
23866: _InputIterator __last, _Allocator& __alloc)
23866: {
23866: std::__uninitialized_fill_a(__result, __mid, __x, __alloc);
23866: try
23866: {
23866: return std::__uninitialized_move_a(__first, __last, __mid, __alloc);
23866: }
23866: catch(...)
23866: {
23866: std::_Destroy(__result, __mid, __alloc);
23866: throw;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866: template<typename _InputIterator, typename _ForwardIterator, typename _Tp,
23866: typename _Allocator>
23866: inline void
23866: __uninitialized_move_fill(_InputIterator __first1, _InputIterator __last1,
23866: _ForwardIterator __first2,
23866: _ForwardIterator __last2, const _Tp& __x,
23866: _Allocator& __alloc)
23866: {
23866: _ForwardIterator __mid2 = std::__uninitialized_move_a(__first1, __last1,
23866: __first2,
23866: __alloc);
23866: try
23866: {
23866: std::__uninitialized_fill_a(__mid2, __last2, __x, __alloc);
23866: }
23866: catch(...)
23866: {
23866: std::_Destroy(__first2, __mid2, __alloc);
23866: throw;
23866: }
23866: }
23866: # 521 "/usr/include/c++/10/bits/stl_uninitialized.h" 3
23866: template<bool _TrivialValueType>
23866: struct __uninitialized_default_1
23866: {
23866: template<typename _ForwardIterator>
23866: static void
23866: __uninit_default(_ForwardIterator __first, _ForwardIterator __last)
23866: {
23866: _ForwardIterator __cur = __first;
23866: try
23866: {
23866: for (; __cur != __last; ++__cur)
23866: std::_Construct(std::__addressof(*__cur));
23866: }
23866: catch(...)
23866: {
23866: std::_Destroy(__first, __cur);
23866: throw;
23866: }
23866: }
23866: };
23866:
23866: template<>
23866: struct __uninitialized_default_1<true>
23866: {
23866: template<typename _ForwardIterator>
23866: static void
23866: __uninit_default(_ForwardIterator __first, _ForwardIterator __last)
23866: {
23866: typedef typename iterator_traits<_ForwardIterator>::value_type
23866: _ValueType;
23866:
23866: std::fill(__first, __last, _ValueType());
23866: }
23866: };
23866:
23866: template<bool _TrivialValueType>
23866: struct __uninitialized_default_n_1
23866: {
23866: template<typename _ForwardIterator, typename _Size>
23866: static _ForwardIterator
23866: __uninit_default_n(_ForwardIterator __first, _Size __n)
23866: {
23866: _ForwardIterator __cur = __first;
23866: try
23866: {
23866: for (; __n > 0; --__n, (void) ++__cur)
23866: std::_Construct(std::__addressof(*__cur));
23866: return __cur;
23866: }
23866: catch(...)
23866: {
23866: std::_Destroy(__first, __cur);
23866: throw;
23866: }
23866: }
23866: };
23866:
23866: template<>
23866: struct __uninitialized_default_n_1<true>
23866: {
23866: template<typename _ForwardIterator, typename _Size>
23866: static _ForwardIterator
23866: __uninit_default_n(_ForwardIterator __first, _Size __n)
23866: {
23866: typedef typename iterator_traits<_ForwardIterator>::value_type
23866: _ValueType;
23866:
23866: return std::fill_n(__first, __n, _ValueType());
23866: }
23866: };
23866:
23866:
23866:
23866:
23866: template<typename _ForwardIterator>
23866: inline void
23866: __uninitialized_default(_ForwardIterator __first,
23866: _ForwardIterator __last)
23866: {
23866: typedef typename iterator_traits<_ForwardIterator>::value_type
23866: _ValueType;
23866:
23866: const bool __assignable = is_copy_assignable<_ValueType>::value;
23866:
23866: std::__uninitialized_default_1<__is_trivial(_ValueType)
23866: && __assignable>::
23866: __uninit_default(__first, __last);
23866: }
23866:
23866:
23866:
23866: template<typename _ForwardIterator, typename _Size>
23866: inline _ForwardIterator
23866: __uninitialized_default_n(_ForwardIterator __first, _Size __n)
23866: {
23866: typedef typename iterator_traits<_ForwardIterator>::value_type
23866: _ValueType;
23866:
23866: const bool __assignable = is_copy_assignable<_ValueType>::value;
23866:
23866: return __uninitialized_default_n_1<__is_trivial(_ValueType)
23866: && __assignable>::
23866: __uninit_default_n(__first, __n);
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename _ForwardIterator, typename _Allocator>
23866: void
23866: __uninitialized_default_a(_ForwardIterator __first,
23866: _ForwardIterator __last,
23866: _Allocator& __alloc)
23866: {
23866: _ForwardIterator __cur = __first;
23866: try
23866: {
23866: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits;
23866: for (; __cur != __last; ++__cur)
23866: __traits::construct(__alloc, std::__addressof(*__cur));
23866: }
23866: catch(...)
23866: {
23866: std::_Destroy(__first, __cur, __alloc);
23866: throw;
23866: }
23866: }
23866:
23866: template<typename _ForwardIterator, typename _Tp>
23866: inline void
23866: __uninitialized_default_a(_ForwardIterator __first,
23866: _ForwardIterator __last,
23866: allocator<_Tp>&)
23866: { std::__uninitialized_default(__first, __last); }
23866:
23866:
23866:
23866:
23866:
23866: template<typename _ForwardIterator, typename _Size, typename _Allocator>
23866: _ForwardIterator
23866: __uninitialized_default_n_a(_ForwardIterator __first, _Size __n,
23866: _Allocator& __alloc)
23866: {
23866: _ForwardIterator __cur = __first;
23866: try
23866: {
23866: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits;
23866: for (; __n > 0; --__n, (void) ++__cur)
23866: __traits::construct(__alloc, std::__addressof(*__cur));
23866: return __cur;
23866: }
23866: catch(...)
23866: {
23866: std::_Destroy(__first, __cur, __alloc);
23866: throw;
23866: }
23866: }
23866:
23866: template<typename _ForwardIterator, typename _Size, typename _Tp>
23866: inline _ForwardIterator
23866: __uninitialized_default_n_a(_ForwardIterator __first, _Size __n,
23866: allocator<_Tp>&)
23866: { return std::__uninitialized_default_n(__first, __n); }
23866:
23866: template<bool _TrivialValueType>
23866: struct __uninitialized_default_novalue_1
23866: {
23866: template<typename _ForwardIterator>
23866: static void
23866: __uninit_default_novalue(_ForwardIterator __first,
23866: _ForwardIterator __last)
23866: {
23866: _ForwardIterator __cur = __first;
23866: try
23866: {
23866: for (; __cur != __last; ++__cur)
23866: std::_Construct_novalue(std::__addressof(*__cur));
23866: }
23866: catch(...)
23866: {
23866: std::_Destroy(__first, __cur);
23866: throw;
23866: }
23866: }
23866: };
23866:
23866: template<>
23866: struct __uninitialized_default_novalue_1<true>
23866: {
23866: template<typename _ForwardIterator>
23866: static void
23866: __uninit_default_novalue(_ForwardIterator __first,
23866: _ForwardIterator __last)
23866: {
23866: }
23866: };
23866:
23866: template<bool _TrivialValueType>
23866: struct __uninitialized_default_novalue_n_1
23866: {
23866: template<typename _ForwardIterator, typename _Size>
23866: static _ForwardIterator
23866: __uninit_default_novalue_n(_ForwardIterator __first, _Size __n)
23866: {
23866: _ForwardIterator __cur = __first;
23866: try
23866: {
23866: for (; __n > 0; --__n, (void) ++__cur)
23866: std::_Construct_novalue(std::__addressof(*__cur));
23866: return __cur;
23866: }
23866: catch(...)
23866: {
23866: std::_Destroy(__first, __cur);
23866: throw;
23866: }
23866: }
23866: };
23866:
23866: template<>
23866: struct __uninitialized_default_novalue_n_1<true>
23866: {
23866: template<typename _ForwardIterator, typename _Size>
23866: static _ForwardIterator
23866: __uninit_default_novalue_n(_ForwardIterator __first, _Size __n)
23866: { return std::next(__first, __n); }
23866: };
23866:
23866:
23866:
23866:
23866: template<typename _ForwardIterator>
23866: inline void
23866: __uninitialized_default_novalue(_ForwardIterator __first,
23866: _ForwardIterator __last)
23866: {
23866: typedef typename iterator_traits<_ForwardIterator>::value_type
23866: _ValueType;
23866:
23866: std::__uninitialized_default_novalue_1<
23866: is_trivially_default_constructible<_ValueType>::value>::
23866: __uninit_default_novalue(__first, __last);
23866: }
23866:
23866:
23866:
23866: template<typename _ForwardIterator, typename _Size>
23866: inline _ForwardIterator
23866: __uninitialized_default_novalue_n(_ForwardIterator __first, _Size __n)
23866: {
23866: typedef typename iterator_traits<_ForwardIterator>::value_type
23866: _ValueType;
23866:
23866: return __uninitialized_default_novalue_n_1<
23866: is_trivially_default_constructible<_ValueType>::value>::
23866: __uninit_default_novalue_n(__first, __n);
23866: }
23866:
23866: template<typename _InputIterator, typename _Size,
23866: typename _ForwardIterator>
23866: _ForwardIterator
23866: __uninitialized_copy_n(_InputIterator __first, _Size __n,
23866: _ForwardIterator __result, input_iterator_tag)
23866: {
23866: _ForwardIterator __cur = __result;
23866: try
23866: {
23866: for (; __n > 0; --__n, (void) ++__first, ++__cur)
23866: std::_Construct(std::__addressof(*__cur), *__first);
23866: return __cur;
23866: }
23866: catch(...)
23866: {
23866: std::_Destroy(__result, __cur);
23866: throw;
23866: }
23866: }
23866:
23866: template<typename _RandomAccessIterator, typename _Size,
23866: typename _ForwardIterator>
23866: inline _ForwardIterator
23866: __uninitialized_copy_n(_RandomAccessIterator __first, _Size __n,
23866: _ForwardIterator __result,
23866: random_access_iterator_tag)
23866: { return std::uninitialized_copy(__first, __first + __n, __result); }
23866:
23866: template<typename _InputIterator, typename _Size,
23866: typename _ForwardIterator>
23866: pair<_InputIterator, _ForwardIterator>
23866: __uninitialized_copy_n_pair(_InputIterator __first, _Size __n,
23866: _ForwardIterator __result, input_iterator_tag)
23866: {
23866: _ForwardIterator __cur = __result;
23866: try
23866: {
23866: for (; __n > 0; --__n, (void) ++__first, ++__cur)
23866: std::_Construct(std::__addressof(*__cur), *__first);
23866: return {__first, __cur};
23866: }
23866: catch(...)
23866: {
23866: std::_Destroy(__result, __cur);
23866: throw;
23866: }
23866: }
23866:
23866: template<typename _RandomAccessIterator, typename _Size,
23866: typename _ForwardIterator>
23866: inline pair<_RandomAccessIterator, _ForwardIterator>
23866: __uninitialized_copy_n_pair(_RandomAccessIterator __first, _Size __n,
23866: _ForwardIterator __result,
23866: random_access_iterator_tag)
23866: {
23866: auto __second_res = uninitialized_copy(__first, __first + __n, __result);
23866: auto __first_res = std::next(__first, __n);
23866: return {__first_res, __second_res};
23866: }
23866: # 852 "/usr/include/c++/10/bits/stl_uninitialized.h" 3
23866: template<typename _InputIterator, typename _Size, typename _ForwardIterator>
23866: inline _ForwardIterator
23866: uninitialized_copy_n(_InputIterator __first, _Size __n,
23866: _ForwardIterator __result)
23866: { return std::__uninitialized_copy_n(__first, __n, __result,
23866: std::__iterator_category(__first)); }
23866:
23866:
23866: template<typename _InputIterator, typename _Size, typename _ForwardIterator>
23866: inline pair<_InputIterator, _ForwardIterator>
23866: __uninitialized_copy_n_pair(_InputIterator __first, _Size __n,
23866: _ForwardIterator __result)
23866: {
23866: return
23866: std::__uninitialized_copy_n_pair(__first, __n, __result,
23866: std::__iterator_category(__first));
23866: }
23866:
23866:
23866:
23866:
23866: #define __cpp_lib_raw_memory_algorithms 201606L
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <typename _ForwardIterator>
23866: inline void
23866: uninitialized_default_construct(_ForwardIterator __first,
23866: _ForwardIterator __last)
23866: {
23866: __uninitialized_default_novalue(__first, __last);
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <typename _ForwardIterator, typename _Size>
23866: inline _ForwardIterator
23866: uninitialized_default_construct_n(_ForwardIterator __first, _Size __count)
23866: {
23866: return __uninitialized_default_novalue_n(__first, __count);
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <typename _ForwardIterator>
23866: inline void
23866: uninitialized_value_construct(_ForwardIterator __first,
23866: _ForwardIterator __last)
23866: {
23866: return __uninitialized_default(__first, __last);
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <typename _ForwardIterator, typename _Size>
23866: inline _ForwardIterator
23866: uninitialized_value_construct_n(_ForwardIterator __first, _Size __count)
23866: {
23866: return __uninitialized_default_n(__first, __count);
23866: }
23866: # 934 "/usr/include/c++/10/bits/stl_uninitialized.h" 3
23866: template <typename _InputIterator, typename _ForwardIterator>
23866: inline _ForwardIterator
23866: uninitialized_move(_InputIterator __first, _InputIterator __last,
23866: _ForwardIterator __result)
23866: {
23866: return std::uninitialized_copy
23866: (std::make_move_iterator(__first),
23866: std::make_move_iterator(__last), __result);
23866: }
23866: # 951 "/usr/include/c++/10/bits/stl_uninitialized.h" 3
23866: template <typename _InputIterator, typename _Size, typename _ForwardIterator>
23866: inline pair<_InputIterator, _ForwardIterator>
23866: uninitialized_move_n(_InputIterator __first, _Size __count,
23866: _ForwardIterator __result)
23866: {
23866: auto __res = std::__uninitialized_copy_n_pair
23866: (std::make_move_iterator(__first),
23866: __count, __result);
23866: return {__res.first.base(), __res.second};
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp, typename _Up, typename _Allocator>
23866: inline void
23866: __relocate_object_a(_Tp* __restrict __dest, _Up* __restrict __orig,
23866: _Allocator& __alloc)
23866: noexcept(noexcept(std::allocator_traits<_Allocator>::construct(__alloc,
23866: __dest, std::move(*__orig)))
23866: && noexcept(std::allocator_traits<_Allocator>::destroy(
23866: __alloc, std::__addressof(*__orig))))
23866: {
23866: typedef std::allocator_traits<_Allocator> __traits;
23866: __traits::construct(__alloc, __dest, std::move(*__orig));
23866: __traits::destroy(__alloc, std::__addressof(*__orig));
23866: }
23866:
23866:
23866:
23866: template<typename _Tp, typename = void>
23866: struct __is_bitwise_relocatable
23866: : is_trivial<_Tp> { };
23866:
23866: template <typename _Tp, typename _Up>
23866: inline __enable_if_t<std::__is_bitwise_relocatable<_Tp>::value, _Tp*>
23866: __relocate_a_1(_Tp* __first, _Tp* __last,
23866: _Tp* __result, allocator<_Up>&) noexcept
23866: {
23866: ptrdiff_t __count = __last - __first;
23866: if (__count > 0)
23866: __builtin_memmove(__result, __first, __count * sizeof(_Tp));
23866: return __result + __count;
23866: }
23866:
23866: template <typename _InputIterator, typename _ForwardIterator,
23866: typename _Allocator>
23866: inline _ForwardIterator
23866: __relocate_a_1(_InputIterator __first, _InputIterator __last,
23866: _ForwardIterator __result, _Allocator& __alloc)
23866: noexcept(noexcept(std::__relocate_object_a(std::addressof(*__result),
23866: std::addressof(*__first),
23866: __alloc)))
23866: {
23866: typedef typename iterator_traits<_InputIterator>::value_type
23866: _ValueType;
23866: typedef typename iterator_traits<_ForwardIterator>::value_type
23866: _ValueType2;
23866: static_assert(std::is_same<_ValueType, _ValueType2>::value,
23866: "relocation is only possible for values of the same type");
23866: _ForwardIterator __cur = __result;
23866: for (; __first != __last; ++__first, (void)++__cur)
23866: std::__relocate_object_a(std::__addressof(*__cur),
23866: std::__addressof(*__first), __alloc);
23866: return __cur;
23866: }
23866:
23866: template <typename _InputIterator, typename _ForwardIterator,
23866: typename _Allocator>
23866: inline _ForwardIterator
23866: __relocate_a(_InputIterator __first, _InputIterator __last,
23866: _ForwardIterator __result, _Allocator& __alloc)
23866: noexcept(noexcept(__relocate_a_1(std::__niter_base(__first),
23866: std::__niter_base(__last),
23866: std::__niter_base(__result), __alloc)))
23866: {
23866: return __relocate_a_1(std::__niter_base(__first),
23866: std::__niter_base(__last),
23866: std::__niter_base(__result), __alloc);
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 67 "/usr/include/c++/10/vector" 2 3
23866: # 1 "/usr/include/c++/10/bits/stl_vector.h" 1 3
23866: # 57 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: #define _STL_VECTOR_H 1
23866: # 77 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: struct _Vector_base
23866: {
23866: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template
23866: rebind<_Tp>::other _Tp_alloc_type;
23866: typedef typename __gnu_cxx::__alloc_traits<_Tp_alloc_type>::pointer
23866: pointer;
23866:
23866: struct _Vector_impl_data
23866: {
23866: pointer _M_start;
23866: pointer _M_finish;
23866: pointer _M_end_of_storage;
23866:
23866: _Vector_impl_data() noexcept
23866: : _M_start(), _M_finish(), _M_end_of_storage()
23866: { }
23866:
23866:
23866: _Vector_impl_data(_Vector_impl_data&& __x) noexcept
23866: : _M_start(__x._M_start), _M_finish(__x._M_finish),
23866: _M_end_of_storage(__x._M_end_of_storage)
23866: { __x._M_start = __x._M_finish = __x._M_end_of_storage = pointer(); }
23866:
23866:
23866: void
23866: _M_copy_data(_Vector_impl_data const& __x) noexcept
23866: {
23866: _M_start = __x._M_start;
23866: _M_finish = __x._M_finish;
23866: _M_end_of_storage = __x._M_end_of_storage;
23866: }
23866:
23866: void
23866: _M_swap_data(_Vector_impl_data& __x) noexcept
23866: {
23866:
23866:
23866: _Vector_impl_data __tmp;
23866: __tmp._M_copy_data(*this);
23866: _M_copy_data(__x);
23866: __x._M_copy_data(__tmp);
23866: }
23866: };
23866:
23866: struct _Vector_impl
23866: : public _Tp_alloc_type, public _Vector_impl_data
23866: {
23866: _Vector_impl() noexcept(is_nothrow_default_constructible<_Tp_alloc_type>::value)
23866:
23866: : _Tp_alloc_type()
23866: { }
23866:
23866: _Vector_impl(_Tp_alloc_type const& __a) noexcept
23866: : _Tp_alloc_type(__a)
23866: { }
23866:
23866:
23866:
23866:
23866: _Vector_impl(_Vector_impl&& __x) noexcept
23866: : _Tp_alloc_type(std::move(__x)), _Vector_impl_data(std::move(__x))
23866: { }
23866:
23866: _Vector_impl(_Tp_alloc_type&& __a) noexcept
23866: : _Tp_alloc_type(std::move(__a))
23866: { }
23866:
23866: _Vector_impl(_Tp_alloc_type&& __a, _Vector_impl&& __rv) noexcept
23866: : _Tp_alloc_type(std::move(__a)), _Vector_impl_data(std::move(__rv))
23866: { }
23866: # 264 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: #define _GLIBCXX_ASAN_ANNOTATE_REINIT
23866: #define _GLIBCXX_ASAN_ANNOTATE_GROW(n)
23866: #define _GLIBCXX_ASAN_ANNOTATE_GREW(n)
23866: #define _GLIBCXX_ASAN_ANNOTATE_SHRINK(n)
23866: #define _GLIBCXX_ASAN_ANNOTATE_BEFORE_DEALLOC
23866:
23866: };
23866:
23866: public:
23866: typedef _Alloc allocator_type;
23866:
23866: _Tp_alloc_type&
23866: _M_get_Tp_allocator() noexcept
23866: { return this->_M_impl; }
23866:
23866: const _Tp_alloc_type&
23866: _M_get_Tp_allocator() const noexcept
23866: { return this->_M_impl; }
23866:
23866: allocator_type
23866: get_allocator() const noexcept
23866: { return allocator_type(_M_get_Tp_allocator()); }
23866:
23866:
23866: _Vector_base() = default;
23866:
23866:
23866:
23866:
23866: _Vector_base(const allocator_type& __a) noexcept
23866: : _M_impl(__a) { }
23866:
23866:
23866:
23866: _Vector_base(size_t __n)
23866: : _M_impl()
23866: { _M_create_storage(__n); }
23866:
23866:
23866: _Vector_base(size_t __n, const allocator_type& __a)
23866: : _M_impl(__a)
23866: { _M_create_storage(__n); }
23866:
23866:
23866: _Vector_base(_Vector_base&&) = default;
23866:
23866:
23866:
23866: _Vector_base(_Tp_alloc_type&& __a) noexcept
23866: : _M_impl(std::move(__a)) { }
23866:
23866: _Vector_base(_Vector_base&& __x, const allocator_type& __a)
23866: : _M_impl(__a)
23866: {
23866: if (__x.get_allocator() == __a)
23866: this->_M_impl._M_swap_data(__x._M_impl);
23866: else
23866: {
23866: size_t __n = __x._M_impl._M_finish - __x._M_impl._M_start;
23866: _M_create_storage(__n);
23866: }
23866: }
23866:
23866:
23866: _Vector_base(const allocator_type& __a, _Vector_base&& __x)
23866: : _M_impl(_Tp_alloc_type(__a), std::move(__x._M_impl))
23866: { }
23866:
23866:
23866: ~_Vector_base() noexcept
23866: {
23866: _M_deallocate(_M_impl._M_start,
23866: _M_impl._M_end_of_storage - _M_impl._M_start);
23866: }
23866:
23866: public:
23866: _Vector_impl _M_impl;
23866:
23866: pointer
23866: _M_allocate(size_t __n)
23866: {
23866: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tr;
23866: return __n != 0 ? _Tr::allocate(_M_impl, __n) : pointer();
23866: }
23866:
23866: void
23866: _M_deallocate(pointer __p, size_t __n)
23866: {
23866: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tr;
23866: if (__p)
23866: _Tr::deallocate(_M_impl, __p, __n);
23866: }
23866:
23866: protected:
23866: void
23866: _M_create_storage(size_t __n)
23866: {
23866: this->_M_impl._M_start = this->_M_allocate(__n);
23866: this->_M_impl._M_finish = this->_M_impl._M_start;
23866: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
23866: }
23866: };
23866: # 388 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
23866: class vector : protected _Vector_base<_Tp, _Alloc>
23866: {
23866: # 401 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: static_assert(is_same<typename remove_cv<_Tp>::type, _Tp>::value,
23866: "std::vector must have a non-const, non-volatile value_type");
23866:
23866: static_assert(is_same<typename _Alloc::value_type, _Tp>::value,
23866: "std::vector must have the same value_type as its allocator");
23866:
23866:
23866:
23866: typedef _Vector_base<_Tp, _Alloc> _Base;
23866: typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
23866: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Alloc_traits;
23866:
23866: public:
23866: typedef _Tp value_type;
23866: typedef typename _Base::pointer pointer;
23866: typedef typename _Alloc_traits::const_pointer const_pointer;
23866: typedef typename _Alloc_traits::reference reference;
23866: typedef typename _Alloc_traits::const_reference const_reference;
23866: typedef __gnu_cxx::__normal_iterator<pointer, vector> iterator;
23866: typedef __gnu_cxx::__normal_iterator<const_pointer, vector>
23866: const_iterator;
23866: typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
23866: typedef std::reverse_iterator<iterator> reverse_iterator;
23866: typedef size_t size_type;
23866: typedef ptrdiff_t difference_type;
23866: typedef _Alloc allocator_type;
23866:
23866: private:
23866:
23866: static constexpr bool
23866: _S_nothrow_relocate(true_type)
23866: {
23866: return noexcept(std::__relocate_a(std::declval<pointer>(),
23866: std::declval<pointer>(),
23866: std::declval<pointer>(),
23866: std::declval<_Tp_alloc_type&>()));
23866: }
23866:
23866: static constexpr bool
23866: _S_nothrow_relocate(false_type)
23866: { return false; }
23866:
23866: static constexpr bool
23866: _S_use_relocate()
23866: {
23866:
23866:
23866:
23866: return _S_nothrow_relocate(__is_move_insertable<_Tp_alloc_type>{});
23866: }
23866:
23866: static pointer
23866: _S_do_relocate(pointer __first, pointer __last, pointer __result,
23866: _Tp_alloc_type& __alloc, true_type) noexcept
23866: {
23866: return std::__relocate_a(__first, __last, __result, __alloc);
23866: }
23866:
23866: static pointer
23866: _S_do_relocate(pointer, pointer, pointer __result,
23866: _Tp_alloc_type&, false_type) noexcept
23866: { return __result; }
23866:
23866: static pointer
23866: _S_relocate(pointer __first, pointer __last, pointer __result,
23866: _Tp_alloc_type& __alloc) noexcept
23866: {
23866: using __do_it = __bool_constant<_S_use_relocate()>;
23866: return _S_do_relocate(__first, __last, __result, __alloc, __do_it{});
23866: }
23866:
23866:
23866: protected:
23866: using _Base::_M_allocate;
23866: using _Base::_M_deallocate;
23866: using _Base::_M_impl;
23866: using _Base::_M_get_Tp_allocator;
23866:
23866: public:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: vector() = default;
23866: # 496 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: explicit
23866: vector(const allocator_type& __a) noexcept
23866: : _Base(__a) { }
23866: # 509 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: explicit
23866: vector(size_type __n, const allocator_type& __a = allocator_type())
23866: : _Base(_S_check_init_len(__n, __a), __a)
23866: { _M_default_initialize(__n); }
23866: # 522 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: vector(size_type __n, const value_type& __value,
23866: const allocator_type& __a = allocator_type())
23866: : _Base(_S_check_init_len(__n, __a), __a)
23866: { _M_fill_initialize(__n, __value); }
23866: # 553 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: vector(const vector& __x)
23866: : _Base(__x.size(),
23866: _Alloc_traits::_S_select_on_copy(__x._M_get_Tp_allocator()))
23866: {
23866: this->_M_impl._M_finish =
23866: std::__uninitialized_copy_a(__x.begin(), __x.end(),
23866: this->_M_impl._M_start,
23866: _M_get_Tp_allocator());
23866: }
23866: # 572 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: vector(vector&&) noexcept = default;
23866:
23866:
23866: vector(const vector& __x, const allocator_type& __a)
23866: : _Base(__x.size(), __a)
23866: {
23866: this->_M_impl._M_finish =
23866: std::__uninitialized_copy_a(__x.begin(), __x.end(),
23866: this->_M_impl._M_start,
23866: _M_get_Tp_allocator());
23866: }
23866:
23866: private:
23866: vector(vector&& __rv, const allocator_type& __m, true_type) noexcept
23866: : _Base(__m, std::move(__rv))
23866: { }
23866:
23866: vector(vector&& __rv, const allocator_type& __m, false_type)
23866: : _Base(__m)
23866: {
23866: if (__rv.get_allocator() == __m)
23866: this->_M_impl._M_swap_data(__rv._M_impl);
23866: else if (!__rv.empty())
23866: {
23866: this->_M_create_storage(__rv.size());
23866: this->_M_impl._M_finish =
23866: std::__uninitialized_move_a(__rv.begin(), __rv.end(),
23866: this->_M_impl._M_start,
23866: _M_get_Tp_allocator());
23866: __rv.clear();
23866: }
23866: }
23866:
23866: public:
23866:
23866: vector(vector&& __rv, const allocator_type& __m)
23866: noexcept( noexcept(
23866: vector(std::declval<vector&&>(), std::declval<const allocator_type&>(),
23866: std::declval<typename _Alloc_traits::is_always_equal>())) )
23866: : vector(std::move(__rv), __m, typename _Alloc_traits::is_always_equal{})
23866: { }
23866: # 625 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: vector(initializer_list<value_type> __l,
23866: const allocator_type& __a = allocator_type())
23866: : _Base(__a)
23866: {
23866: _M_range_initialize(__l.begin(), __l.end(),
23866: random_access_iterator_tag());
23866: }
23866: # 651 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: template<typename _InputIterator,
23866: typename = std::_RequireInputIter<_InputIterator>>
23866: vector(_InputIterator __first, _InputIterator __last,
23866: const allocator_type& __a = allocator_type())
23866: : _Base(__a)
23866: {
23866: _M_range_initialize(__first, __last,
23866: std::__iterator_category(__first));
23866: }
23866: # 678 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: ~vector() noexcept
23866: {
23866: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
23866: _M_get_Tp_allocator());
23866: ;
23866: }
23866: # 694 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: vector&
23866: operator=(const vector& __x);
23866: # 708 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: vector&
23866: operator=(vector&& __x) noexcept(_Alloc_traits::_S_nothrow_move())
23866: {
23866: constexpr bool __move_storage =
23866: _Alloc_traits::_S_propagate_on_move_assign()
23866: || _Alloc_traits::_S_always_equal();
23866: _M_move_assign(std::move(__x), __bool_constant<__move_storage>());
23866: return *this;
23866: }
23866: # 729 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: vector&
23866: operator=(initializer_list<value_type> __l)
23866: {
23866: this->_M_assign_aux(__l.begin(), __l.end(),
23866: random_access_iterator_tag());
23866: return *this;
23866: }
23866: # 748 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: void
23866: assign(size_type __n, const value_type& __val)
23866: { _M_fill_assign(__n, __val); }
23866: # 765 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: template<typename _InputIterator,
23866: typename = std::_RequireInputIter<_InputIterator>>
23866: void
23866: assign(_InputIterator __first, _InputIterator __last)
23866: { _M_assign_dispatch(__first, __last, __false_type()); }
23866: # 793 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: void
23866: assign(initializer_list<value_type> __l)
23866: {
23866: this->_M_assign_aux(__l.begin(), __l.end(),
23866: random_access_iterator_tag());
23866: }
23866:
23866:
23866:
23866: using _Base::get_allocator;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: iterator
23866: begin() noexcept
23866: { return iterator(this->_M_impl._M_start); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_iterator
23866: begin() const noexcept
23866: { return const_iterator(this->_M_impl._M_start); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: iterator
23866: end() noexcept
23866: { return iterator(this->_M_impl._M_finish); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_iterator
23866: end() const noexcept
23866: { return const_iterator(this->_M_impl._M_finish); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: reverse_iterator
23866: rbegin() noexcept
23866: { return reverse_iterator(end()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_reverse_iterator
23866: rbegin() const noexcept
23866: { return const_reverse_iterator(end()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: reverse_iterator
23866: rend() noexcept
23866: { return reverse_iterator(begin()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_reverse_iterator
23866: rend() const noexcept
23866: { return const_reverse_iterator(begin()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_iterator
23866: cbegin() const noexcept
23866: { return const_iterator(this->_M_impl._M_start); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_iterator
23866: cend() const noexcept
23866: { return const_iterator(this->_M_impl._M_finish); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_reverse_iterator
23866: crbegin() const noexcept
23866: { return const_reverse_iterator(end()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_reverse_iterator
23866: crend() const noexcept
23866: { return const_reverse_iterator(begin()); }
23866:
23866:
23866:
23866:
23866: size_type
23866: size() const noexcept
23866: { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); }
23866:
23866:
23866: size_type
23866: max_size() const noexcept
23866: { return _S_max_size(_M_get_Tp_allocator()); }
23866: # 936 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: void
23866: resize(size_type __new_size)
23866: {
23866: if (__new_size > size())
23866: _M_default_append(__new_size - size());
23866: else if (__new_size < size())
23866: _M_erase_at_end(this->_M_impl._M_start + __new_size);
23866: }
23866: # 956 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: void
23866: resize(size_type __new_size, const value_type& __x)
23866: {
23866: if (__new_size > size())
23866: _M_fill_insert(end(), __new_size - size(), __x);
23866: else if (__new_size < size())
23866: _M_erase_at_end(this->_M_impl._M_start + __new_size);
23866: }
23866: # 988 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: void
23866: shrink_to_fit()
23866: { _M_shrink_to_fit(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: size_type
23866: capacity() const noexcept
23866: { return size_type(this->_M_impl._M_end_of_storage
23866: - this->_M_impl._M_start); }
23866:
23866:
23866:
23866:
23866:
23866: [[__nodiscard__]] bool
23866: empty() const noexcept
23866: { return begin() == end(); }
23866: # 1027 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: void
23866: reserve(size_type __n);
23866: # 1042 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: reference
23866: operator[](size_type __n) noexcept
23866: {
23866: ;
23866: return *(this->_M_impl._M_start + __n);
23866: }
23866: # 1060 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: const_reference
23866: operator[](size_type __n) const noexcept
23866: {
23866: ;
23866: return *(this->_M_impl._M_start + __n);
23866: }
23866:
23866: protected:
23866:
23866: void
23866: _M_range_check(size_type __n) const
23866: {
23866: if (__n >= this->size())
23866: __throw_out_of_range_fmt(("vector::_M_range_check: __n " "(which is %zu) >= this->size() " "(which is %zu)")
23866:
23866: ,
23866: __n, this->size());
23866: }
23866:
23866: public:
23866: # 1091 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: reference
23866: at(size_type __n)
23866: {
23866: _M_range_check(__n);
23866: return (*this)[__n];
23866: }
23866: # 1109 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: const_reference
23866: at(size_type __n) const
23866: {
23866: _M_range_check(__n);
23866: return (*this)[__n];
23866: }
23866:
23866:
23866:
23866:
23866:
23866: reference
23866: front() noexcept
23866: {
23866: ;
23866: return *begin();
23866: }
23866:
23866:
23866:
23866:
23866:
23866: const_reference
23866: front() const noexcept
23866: {
23866: ;
23866: return *begin();
23866: }
23866:
23866:
23866:
23866:
23866:
23866: reference
23866: back() noexcept
23866: {
23866: ;
23866: return *(end() - 1);
23866: }
23866:
23866:
23866:
23866:
23866:
23866: const_reference
23866: back() const noexcept
23866: {
23866: ;
23866: return *(end() - 1);
23866: }
23866: # 1167 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: _Tp*
23866: data() noexcept
23866: { return _M_data_ptr(this->_M_impl._M_start); }
23866:
23866: const _Tp*
23866: data() const noexcept
23866: { return _M_data_ptr(this->_M_impl._M_start); }
23866: # 1186 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: void
23866: push_back(const value_type& __x)
23866: {
23866: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
23866: {
23866: ;
23866: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish,
23866: __x);
23866: ++this->_M_impl._M_finish;
23866: ;
23866: }
23866: else
23866: _M_realloc_insert(end(), __x);
23866: }
23866:
23866:
23866: void
23866: push_back(value_type&& __x)
23866: { emplace_back(std::move(__x)); }
23866:
23866: template<typename... _Args>
23866:
23866: reference
23866:
23866:
23866:
23866: emplace_back(_Args&&... __args);
23866: # 1224 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: void
23866: pop_back() noexcept
23866: {
23866: ;
23866: --this->_M_impl._M_finish;
23866: _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish);
23866: ;
23866: }
23866: # 1246 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: template<typename... _Args>
23866: iterator
23866: emplace(const_iterator __position, _Args&&... __args)
23866: { return _M_emplace_aux(__position, std::forward<_Args>(__args)...); }
23866: # 1262 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: iterator
23866: insert(const_iterator __position, const value_type& __x);
23866: # 1292 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: iterator
23866: insert(const_iterator __position, value_type&& __x)
23866: { return _M_insert_rval(__position, std::move(__x)); }
23866: # 1309 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: iterator
23866: insert(const_iterator __position, initializer_list<value_type> __l)
23866: {
23866: auto __offset = __position - cbegin();
23866: _M_range_insert(begin() + __offset, __l.begin(), __l.end(),
23866: std::random_access_iterator_tag());
23866: return begin() + __offset;
23866: }
23866: # 1334 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: iterator
23866: insert(const_iterator __position, size_type __n, const value_type& __x)
23866: {
23866: difference_type __offset = __position - cbegin();
23866: _M_fill_insert(begin() + __offset, __n, __x);
23866: return begin() + __offset;
23866: }
23866: # 1376 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: template<typename _InputIterator,
23866: typename = std::_RequireInputIter<_InputIterator>>
23866: iterator
23866: insert(const_iterator __position, _InputIterator __first,
23866: _InputIterator __last)
23866: {
23866: difference_type __offset = __position - cbegin();
23866: _M_insert_dispatch(begin() + __offset,
23866: __first, __last, __false_type());
23866: return begin() + __offset;
23866: }
23866: # 1428 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: iterator
23866:
23866: erase(const_iterator __position)
23866: { return _M_erase(begin() + (__position - cbegin())); }
23866: # 1455 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: iterator
23866:
23866: erase(const_iterator __first, const_iterator __last)
23866: {
23866: const auto __beg = begin();
23866: const auto __cbeg = cbegin();
23866: return _M_erase(__beg + (__first - __cbeg), __beg + (__last - __cbeg));
23866: }
23866: # 1479 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: void
23866: swap(vector& __x) noexcept
23866: {
23866:
23866:
23866: ;
23866:
23866: this->_M_impl._M_swap_data(__x._M_impl);
23866: _Alloc_traits::_S_on_swap(_M_get_Tp_allocator(),
23866: __x._M_get_Tp_allocator());
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: void
23866: clear() noexcept
23866: { _M_erase_at_end(this->_M_impl._M_start); }
23866:
23866: protected:
23866:
23866:
23866:
23866:
23866: template<typename _ForwardIterator>
23866: pointer
23866: _M_allocate_and_copy(size_type __n,
23866: _ForwardIterator __first, _ForwardIterator __last)
23866: {
23866: pointer __result = this->_M_allocate(__n);
23866: try
23866: {
23866: std::__uninitialized_copy_a(__first, __last, __result,
23866: _M_get_Tp_allocator());
23866: return __result;
23866: }
23866: catch(...)
23866: {
23866: _M_deallocate(__result, __n);
23866: throw;
23866: }
23866: }
23866: # 1556 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: template<typename _InputIterator>
23866: void
23866: _M_range_initialize(_InputIterator __first, _InputIterator __last,
23866: std::input_iterator_tag)
23866: {
23866: try {
23866: for (; __first != __last; ++__first)
23866:
23866: emplace_back(*__first);
23866:
23866:
23866:
23866: } catch(...) {
23866: clear();
23866: throw;
23866: }
23866: }
23866:
23866:
23866: template<typename _ForwardIterator>
23866: void
23866: _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last,
23866: std::forward_iterator_tag)
23866: {
23866: const size_type __n = std::distance(__first, __last);
23866: this->_M_impl._M_start
23866: = this->_M_allocate(_S_check_init_len(__n, _M_get_Tp_allocator()));
23866: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
23866: this->_M_impl._M_finish =
23866: std::__uninitialized_copy_a(__first, __last,
23866: this->_M_impl._M_start,
23866: _M_get_Tp_allocator());
23866: }
23866:
23866:
23866:
23866: void
23866: _M_fill_initialize(size_type __n, const value_type& __value)
23866: {
23866: this->_M_impl._M_finish =
23866: std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value,
23866: _M_get_Tp_allocator());
23866: }
23866:
23866:
23866:
23866: void
23866: _M_default_initialize(size_type __n)
23866: {
23866: this->_M_impl._M_finish =
23866: std::__uninitialized_default_n_a(this->_M_impl._M_start, __n,
23866: _M_get_Tp_allocator());
23866: }
23866: # 1618 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: template<typename _Integer>
23866: void
23866: _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
23866: { _M_fill_assign(__n, __val); }
23866:
23866:
23866: template<typename _InputIterator>
23866: void
23866: _M_assign_dispatch(_InputIterator __first, _InputIterator __last,
23866: __false_type)
23866: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); }
23866:
23866:
23866: template<typename _InputIterator>
23866: void
23866: _M_assign_aux(_InputIterator __first, _InputIterator __last,
23866: std::input_iterator_tag);
23866:
23866:
23866: template<typename _ForwardIterator>
23866: void
23866: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
23866: std::forward_iterator_tag);
23866:
23866:
23866:
23866: void
23866: _M_fill_assign(size_type __n, const value_type& __val);
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Integer>
23866: void
23866: _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val,
23866: __true_type)
23866: { _M_fill_insert(__pos, __n, __val); }
23866:
23866:
23866: template<typename _InputIterator>
23866: void
23866: _M_insert_dispatch(iterator __pos, _InputIterator __first,
23866: _InputIterator __last, __false_type)
23866: {
23866: _M_range_insert(__pos, __first, __last,
23866: std::__iterator_category(__first));
23866: }
23866:
23866:
23866: template<typename _InputIterator>
23866: void
23866: _M_range_insert(iterator __pos, _InputIterator __first,
23866: _InputIterator __last, std::input_iterator_tag);
23866:
23866:
23866: template<typename _ForwardIterator>
23866: void
23866: _M_range_insert(iterator __pos, _ForwardIterator __first,
23866: _ForwardIterator __last, std::forward_iterator_tag);
23866:
23866:
23866:
23866: void
23866: _M_fill_insert(iterator __pos, size_type __n, const value_type& __x);
23866:
23866:
23866:
23866: void
23866: _M_default_append(size_type __n);
23866:
23866: bool
23866: _M_shrink_to_fit();
23866: # 1705 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: struct _Temporary_value
23866: {
23866: template<typename... _Args>
23866: explicit
23866: _Temporary_value(vector* __vec, _Args&&... __args) : _M_this(__vec)
23866: {
23866: _Alloc_traits::construct(_M_this->_M_impl, _M_ptr(),
23866: std::forward<_Args>(__args)...);
23866: }
23866:
23866: ~_Temporary_value()
23866: { _Alloc_traits::destroy(_M_this->_M_impl, _M_ptr()); }
23866:
23866: value_type&
23866: _M_val() { return *_M_ptr(); }
23866:
23866: private:
23866: _Tp*
23866: _M_ptr() { return reinterpret_cast<_Tp*>(&__buf); }
23866:
23866: vector* _M_this;
23866: typename aligned_storage<sizeof(_Tp), alignof(_Tp)>::type __buf;
23866: };
23866:
23866:
23866:
23866: template<typename _Arg>
23866: void
23866: _M_insert_aux(iterator __position, _Arg&& __arg);
23866:
23866: template<typename... _Args>
23866: void
23866: _M_realloc_insert(iterator __position, _Args&&... __args);
23866:
23866:
23866: iterator
23866: _M_insert_rval(const_iterator __position, value_type&& __v);
23866:
23866:
23866: template<typename... _Args>
23866: iterator
23866: _M_emplace_aux(const_iterator __position, _Args&&... __args);
23866:
23866:
23866: iterator
23866: _M_emplace_aux(const_iterator __position, value_type&& __v)
23866: { return _M_insert_rval(__position, std::move(__v)); }
23866:
23866:
23866:
23866: size_type
23866: _M_check_len(size_type __n, const char* __s) const
23866: {
23866: if (max_size() - size() < __n)
23866: __throw_length_error((__s));
23866:
23866: const size_type __len = size() + (std::max)(size(), __n);
23866: return (__len < size() || __len > max_size()) ? max_size() : __len;
23866: }
23866:
23866:
23866: static size_type
23866: _S_check_init_len(size_type __n, const allocator_type& __a)
23866: {
23866: if (__n > _S_max_size(_Tp_alloc_type(__a)))
23866: __throw_length_error(
23866: ("cannot create std::vector larger than max_size()"));
23866: return __n;
23866: }
23866:
23866: static size_type
23866: _S_max_size(const _Tp_alloc_type& __a) noexcept
23866: {
23866:
23866:
23866:
23866: const size_t __diffmax
23866: = __gnu_cxx::__numeric_traits<ptrdiff_t>::__max / sizeof(_Tp);
23866: const size_t __allocmax = _Alloc_traits::max_size(__a);
23866: return (std::min)(__diffmax, __allocmax);
23866: }
23866:
23866:
23866:
23866:
23866:
23866: void
23866: _M_erase_at_end(pointer __pos) noexcept
23866: {
23866: if (size_type __n = this->_M_impl._M_finish - __pos)
23866: {
23866: std::_Destroy(__pos, this->_M_impl._M_finish,
23866: _M_get_Tp_allocator());
23866: this->_M_impl._M_finish = __pos;
23866: ;
23866: }
23866: }
23866:
23866: iterator
23866: _M_erase(iterator __position);
23866:
23866: iterator
23866: _M_erase(iterator __first, iterator __last);
23866:
23866:
23866: private:
23866:
23866:
23866:
23866: void
23866: _M_move_assign(vector&& __x, true_type) noexcept
23866: {
23866: vector __tmp(get_allocator());
23866: this->_M_impl._M_swap_data(__x._M_impl);
23866: __tmp._M_impl._M_swap_data(__x._M_impl);
23866: std::__alloc_on_move(_M_get_Tp_allocator(), __x._M_get_Tp_allocator());
23866: }
23866:
23866:
23866:
23866: void
23866: _M_move_assign(vector&& __x, false_type)
23866: {
23866: if (__x._M_get_Tp_allocator() == this->_M_get_Tp_allocator())
23866: _M_move_assign(std::move(__x), true_type());
23866: else
23866: {
23866:
23866:
23866: this->_M_assign_aux(std::make_move_iterator(__x.begin()),
23866: std::make_move_iterator(__x.end()),
23866: std::random_access_iterator_tag());
23866: __x.clear();
23866: }
23866: }
23866:
23866:
23866: template<typename _Up>
23866: _Up*
23866: _M_data_ptr(_Up* __ptr) const noexcept
23866: { return __ptr; }
23866:
23866:
23866: template<typename _Ptr>
23866: typename std::pointer_traits<_Ptr>::element_type*
23866: _M_data_ptr(_Ptr __ptr) const
23866: { return empty() ? nullptr : std::__to_address(__ptr); }
23866: # 1868 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: };
23866:
23866:
23866: template<typename _InputIterator, typename _ValT
23866: = typename iterator_traits<_InputIterator>::value_type,
23866: typename _Allocator = allocator<_ValT>,
23866: typename = _RequireInputIter<_InputIterator>,
23866: typename = _RequireAllocator<_Allocator>>
23866: vector(_InputIterator, _InputIterator, _Allocator = _Allocator())
23866: -> vector<_ValT, _Allocator>;
23866: # 1890 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: template<typename _Tp, typename _Alloc>
23866: inline bool
23866: operator==(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
23866: { return (__x.size() == __y.size()
23866: && std::equal(__x.begin(), __x.end(), __y.begin())); }
23866: # 1928 "/usr/include/c++/10/bits/stl_vector.h" 3
23866: template<typename _Tp, typename _Alloc>
23866: inline bool
23866: operator<(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
23866: { return std::lexicographical_compare(__x.begin(), __x.end(),
23866: __y.begin(), __y.end()); }
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: inline bool
23866: operator!=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
23866: { return !(__x == __y); }
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: inline bool
23866: operator>(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
23866: { return __y < __x; }
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: inline bool
23866: operator<=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
23866: { return !(__y < __x); }
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: inline bool
23866: operator>=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
23866: { return !(__x < __y); }
23866:
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: inline void
23866: swap(vector<_Tp, _Alloc>& __x, vector<_Tp, _Alloc>& __y)
23866: noexcept(noexcept(__x.swap(__y)))
23866: { __x.swap(__y); }
23866:
23866:
23866:
23866:
23866: namespace __detail::__variant
23866: {
23866: template<typename> struct _Never_valueless_alt;
23866:
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: struct _Never_valueless_alt<std::vector<_Tp, _Alloc>>
23866: : std::is_nothrow_move_assignable<std::vector<_Tp, _Alloc>>
23866: { };
23866: }
23866:
23866:
23866:
23866: }
23866: # 68 "/usr/include/c++/10/vector" 2 3
23866: # 1 "/usr/include/c++/10/bits/stl_bvector.h" 1 3
23866: # 57 "/usr/include/c++/10/bits/stl_bvector.h" 3
23866: #define _STL_BVECTOR_H 1
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: typedef unsigned long _Bit_type;
23866: enum { _S_word_bit = int(8 * sizeof(_Bit_type)) };
23866:
23866: struct _Bit_reference
23866: {
23866: _Bit_type * _M_p;
23866: _Bit_type _M_mask;
23866:
23866: _Bit_reference(_Bit_type * __x, _Bit_type __y)
23866: : _M_p(__x), _M_mask(__y) { }
23866:
23866: _Bit_reference() noexcept : _M_p(0), _M_mask(0) { }
23866:
23866:
23866: _Bit_reference(const _Bit_reference&) = default;
23866:
23866:
23866: operator bool() const noexcept
23866: { return !!(*_M_p & _M_mask); }
23866:
23866: _Bit_reference&
23866: operator=(bool __x) noexcept
23866: {
23866: if (__x)
23866: *_M_p |= _M_mask;
23866: else
23866: *_M_p &= ~_M_mask;
23866: return *this;
23866: }
23866:
23866: _Bit_reference&
23866: operator=(const _Bit_reference& __x) noexcept
23866: { return *this = bool(__x); }
23866:
23866: bool
23866: operator==(const _Bit_reference& __x) const
23866: { return bool(*this) == bool(__x); }
23866:
23866: bool
23866: operator<(const _Bit_reference& __x) const
23866: { return !bool(*this) && bool(__x); }
23866:
23866: void
23866: flip() noexcept
23866: { *_M_p ^= _M_mask; }
23866: };
23866:
23866:
23866: inline void
23866: swap(_Bit_reference __x, _Bit_reference __y) noexcept
23866: {
23866: bool __tmp = __x;
23866: __x = __y;
23866: __y = __tmp;
23866: }
23866:
23866: inline void
23866: swap(_Bit_reference __x, bool& __y) noexcept
23866: {
23866: bool __tmp = __x;
23866: __x = __y;
23866: __y = __tmp;
23866: }
23866:
23866: inline void
23866: swap(bool& __x, _Bit_reference __y) noexcept
23866: {
23866: bool __tmp = __x;
23866: __x = __y;
23866: __y = __tmp;
23866: }
23866:
23866:
23866: struct _Bit_iterator_base
23866: : public std::iterator<std::random_access_iterator_tag, bool>
23866: {
23866: _Bit_type * _M_p;
23866: unsigned int _M_offset;
23866:
23866: _Bit_iterator_base(_Bit_type * __x, unsigned int __y)
23866: : _M_p(__x), _M_offset(__y) { }
23866:
23866: void
23866: _M_bump_up()
23866: {
23866: if (_M_offset++ == int(_S_word_bit) - 1)
23866: {
23866: _M_offset = 0;
23866: ++_M_p;
23866: }
23866: }
23866:
23866: void
23866: _M_bump_down()
23866: {
23866: if (_M_offset-- == 0)
23866: {
23866: _M_offset = int(_S_word_bit) - 1;
23866: --_M_p;
23866: }
23866: }
23866:
23866: void
23866: _M_incr(ptrdiff_t __i)
23866: {
23866: difference_type __n = __i + _M_offset;
23866: _M_p += __n / int(_S_word_bit);
23866: __n = __n % int(_S_word_bit);
23866: if (__n < 0)
23866: {
23866: __n += int(_S_word_bit);
23866: --_M_p;
23866: }
23866: _M_offset = static_cast<unsigned int>(__n);
23866: }
23866:
23866: friend bool
23866: operator==(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y)
23866: { return __x._M_p == __y._M_p && __x._M_offset == __y._M_offset; }
23866: # 199 "/usr/include/c++/10/bits/stl_bvector.h" 3
23866: friend bool
23866: operator<(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y)
23866: {
23866: return __x._M_p < __y._M_p
23866: || (__x._M_p == __y._M_p && __x._M_offset < __y._M_offset);
23866: }
23866:
23866: friend bool
23866: operator!=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y)
23866: { return !(__x == __y); }
23866:
23866: friend bool
23866: operator>(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y)
23866: { return __y < __x; }
23866:
23866: friend bool
23866: operator<=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y)
23866: { return !(__y < __x); }
23866:
23866: friend bool
23866: operator>=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y)
23866: { return !(__x < __y); }
23866:
23866:
23866: friend ptrdiff_t
23866: operator-(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y)
23866: {
23866: return (int(_S_word_bit) * (__x._M_p - __y._M_p)
23866: + __x._M_offset - __y._M_offset);
23866: }
23866: };
23866:
23866: struct _Bit_iterator : public _Bit_iterator_base
23866: {
23866: typedef _Bit_reference reference;
23866:
23866:
23866:
23866: typedef _Bit_reference* pointer;
23866:
23866: typedef _Bit_iterator iterator;
23866:
23866: _Bit_iterator() : _Bit_iterator_base(0, 0) { }
23866:
23866: _Bit_iterator(_Bit_type * __x, unsigned int __y)
23866: : _Bit_iterator_base(__x, __y) { }
23866:
23866: iterator
23866: _M_const_cast() const
23866: { return *this; }
23866:
23866: reference
23866: operator*() const
23866: { return reference(_M_p, 1UL << _M_offset); }
23866:
23866: iterator&
23866: operator++()
23866: {
23866: _M_bump_up();
23866: return *this;
23866: }
23866:
23866: iterator
23866: operator++(int)
23866: {
23866: iterator __tmp = *this;
23866: _M_bump_up();
23866: return __tmp;
23866: }
23866:
23866: iterator&
23866: operator--()
23866: {
23866: _M_bump_down();
23866: return *this;
23866: }
23866:
23866: iterator
23866: operator--(int)
23866: {
23866: iterator __tmp = *this;
23866: _M_bump_down();
23866: return __tmp;
23866: }
23866:
23866: iterator&
23866: operator+=(difference_type __i)
23866: {
23866: _M_incr(__i);
23866: return *this;
23866: }
23866:
23866: iterator&
23866: operator-=(difference_type __i)
23866: {
23866: *this += -__i;
23866: return *this;
23866: }
23866:
23866: reference
23866: operator[](difference_type __i) const
23866: { return *(*this + __i); }
23866:
23866: friend iterator
23866: operator+(const iterator& __x, difference_type __n)
23866: {
23866: iterator __tmp = __x;
23866: __tmp += __n;
23866: return __tmp;
23866: }
23866:
23866: friend iterator
23866: operator+(difference_type __n, const iterator& __x)
23866: { return __x + __n; }
23866:
23866: friend iterator
23866: operator-(const iterator& __x, difference_type __n)
23866: {
23866: iterator __tmp = __x;
23866: __tmp -= __n;
23866: return __tmp;
23866: }
23866: };
23866:
23866: struct _Bit_const_iterator : public _Bit_iterator_base
23866: {
23866: typedef bool reference;
23866: typedef bool const_reference;
23866:
23866:
23866:
23866: typedef const bool* pointer;
23866:
23866: typedef _Bit_const_iterator const_iterator;
23866:
23866: _Bit_const_iterator() : _Bit_iterator_base(0, 0) { }
23866:
23866: _Bit_const_iterator(_Bit_type * __x, unsigned int __y)
23866: : _Bit_iterator_base(__x, __y) { }
23866:
23866: _Bit_const_iterator(const _Bit_iterator& __x)
23866: : _Bit_iterator_base(__x._M_p, __x._M_offset) { }
23866:
23866: _Bit_iterator
23866: _M_const_cast() const
23866: { return _Bit_iterator(_M_p, _M_offset); }
23866:
23866: const_reference
23866: operator*() const
23866: { return _Bit_reference(_M_p, 1UL << _M_offset); }
23866:
23866: const_iterator&
23866: operator++()
23866: {
23866: _M_bump_up();
23866: return *this;
23866: }
23866:
23866: const_iterator
23866: operator++(int)
23866: {
23866: const_iterator __tmp = *this;
23866: _M_bump_up();
23866: return __tmp;
23866: }
23866:
23866: const_iterator&
23866: operator--()
23866: {
23866: _M_bump_down();
23866: return *this;
23866: }
23866:
23866: const_iterator
23866: operator--(int)
23866: {
23866: const_iterator __tmp = *this;
23866: _M_bump_down();
23866: return __tmp;
23866: }
23866:
23866: const_iterator&
23866: operator+=(difference_type __i)
23866: {
23866: _M_incr(__i);
23866: return *this;
23866: }
23866:
23866: const_iterator&
23866: operator-=(difference_type __i)
23866: {
23866: *this += -__i;
23866: return *this;
23866: }
23866:
23866: const_reference
23866: operator[](difference_type __i) const
23866: { return *(*this + __i); }
23866:
23866: friend const_iterator
23866: operator+(const const_iterator& __x, difference_type __n)
23866: {
23866: const_iterator __tmp = __x;
23866: __tmp += __n;
23866: return __tmp;
23866: }
23866:
23866: friend const_iterator
23866: operator-(const const_iterator& __x, difference_type __n)
23866: {
23866: const_iterator __tmp = __x;
23866: __tmp -= __n;
23866: return __tmp;
23866: }
23866:
23866: friend const_iterator
23866: operator+(difference_type __n, const const_iterator& __x)
23866: { return __x + __n; }
23866: };
23866:
23866: inline void
23866: __fill_bvector(_Bit_type * __v,
23866: unsigned int __first, unsigned int __last, bool __x)
23866: {
23866: const _Bit_type __fmask = ~0ul << __first;
23866: const _Bit_type __lmask = ~0ul >> (_S_word_bit - __last);
23866: const _Bit_type __mask = __fmask & __lmask;
23866:
23866: if (__x)
23866: *__v |= __mask;
23866: else
23866: *__v &= ~__mask;
23866: }
23866:
23866: inline void
23866: fill(_Bit_iterator __first, _Bit_iterator __last, const bool& __x)
23866: {
23866: if (__first._M_p != __last._M_p)
23866: {
23866: _Bit_type* __first_p = __first._M_p;
23866: if (__first._M_offset != 0)
23866: __fill_bvector(__first_p++, __first._M_offset, _S_word_bit, __x);
23866:
23866: __builtin_memset(__first_p, __x ? ~0 : 0,
23866: (__last._M_p - __first_p) * sizeof(_Bit_type));
23866:
23866: if (__last._M_offset != 0)
23866: __fill_bvector(__last._M_p, 0, __last._M_offset, __x);
23866: }
23866: else if (__first._M_offset != __last._M_offset)
23866: __fill_bvector(__first._M_p, __first._M_offset, __last._M_offset, __x);
23866: }
23866:
23866: template<typename _Alloc>
23866: struct _Bvector_base
23866: {
23866: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template
23866: rebind<_Bit_type>::other _Bit_alloc_type;
23866: typedef typename __gnu_cxx::__alloc_traits<_Bit_alloc_type>
23866: _Bit_alloc_traits;
23866: typedef typename _Bit_alloc_traits::pointer _Bit_pointer;
23866:
23866: struct _Bvector_impl_data
23866: {
23866: _Bit_iterator _M_start;
23866: _Bit_iterator _M_finish;
23866: _Bit_pointer _M_end_of_storage;
23866:
23866: _Bvector_impl_data() noexcept
23866: : _M_start(), _M_finish(), _M_end_of_storage()
23866: { }
23866:
23866:
23866: _Bvector_impl_data(_Bvector_impl_data&& __x) noexcept
23866: : _M_start(__x._M_start), _M_finish(__x._M_finish)
23866: , _M_end_of_storage(__x._M_end_of_storage)
23866: { __x._M_reset(); }
23866:
23866: void
23866: _M_move_data(_Bvector_impl_data&& __x) noexcept
23866: {
23866: this->_M_start = __x._M_start;
23866: this->_M_finish = __x._M_finish;
23866: this->_M_end_of_storage = __x._M_end_of_storage;
23866: __x._M_reset();
23866: }
23866:
23866:
23866: void
23866: _M_reset() noexcept
23866: {
23866: _M_start = _M_finish = _Bit_iterator();
23866: _M_end_of_storage = _Bit_pointer();
23866: }
23866: };
23866:
23866: struct _Bvector_impl
23866: : public _Bit_alloc_type, public _Bvector_impl_data
23866: {
23866: public:
23866: _Bvector_impl() noexcept(is_nothrow_default_constructible<_Bit_alloc_type>::value)
23866:
23866: : _Bit_alloc_type()
23866: { }
23866:
23866: _Bvector_impl(const _Bit_alloc_type& __a) noexcept
23866: : _Bit_alloc_type(__a)
23866: { }
23866:
23866:
23866: _Bvector_impl(_Bvector_impl&&) = default;
23866:
23866:
23866: _Bit_type*
23866: _M_end_addr() const noexcept
23866: {
23866: if (this->_M_end_of_storage)
23866: return std::__addressof(this->_M_end_of_storage[-1]) + 1;
23866: return 0;
23866: }
23866: };
23866:
23866: public:
23866: typedef _Alloc allocator_type;
23866:
23866: _Bit_alloc_type&
23866: _M_get_Bit_allocator() noexcept
23866: { return this->_M_impl; }
23866:
23866: const _Bit_alloc_type&
23866: _M_get_Bit_allocator() const noexcept
23866: { return this->_M_impl; }
23866:
23866: allocator_type
23866: get_allocator() const noexcept
23866: { return allocator_type(_M_get_Bit_allocator()); }
23866:
23866:
23866: _Bvector_base() = default;
23866:
23866:
23866:
23866:
23866: _Bvector_base(const allocator_type& __a)
23866: : _M_impl(__a) { }
23866:
23866:
23866: _Bvector_base(_Bvector_base&&) = default;
23866:
23866:
23866: ~_Bvector_base()
23866: { this->_M_deallocate(); }
23866:
23866: protected:
23866: _Bvector_impl _M_impl;
23866:
23866: _Bit_pointer
23866: _M_allocate(size_t __n)
23866: { return _Bit_alloc_traits::allocate(_M_impl, _S_nword(__n)); }
23866:
23866: void
23866: _M_deallocate()
23866: {
23866: if (_M_impl._M_start._M_p)
23866: {
23866: const size_t __n = _M_impl._M_end_addr() - _M_impl._M_start._M_p;
23866: _Bit_alloc_traits::deallocate(_M_impl,
23866: _M_impl._M_end_of_storage - __n,
23866: __n);
23866: _M_impl._M_reset();
23866: }
23866: }
23866:
23866:
23866: void
23866: _M_move_data(_Bvector_base&& __x) noexcept
23866: { _M_impl._M_move_data(std::move(__x._M_impl)); }
23866:
23866:
23866: static size_t
23866: _S_nword(size_t __n)
23866: { return (__n + int(_S_word_bit) - 1) / int(_S_word_bit); }
23866: };
23866:
23866:
23866:
23866: }
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: # 614 "/usr/include/c++/10/bits/stl_bvector.h" 3
23866: template<typename _Alloc>
23866: class vector<bool, _Alloc> : protected _Bvector_base<_Alloc>
23866: {
23866: typedef _Bvector_base<_Alloc> _Base;
23866: typedef typename _Base::_Bit_pointer _Bit_pointer;
23866: typedef typename _Base::_Bit_alloc_traits _Bit_alloc_traits;
23866:
23866:
23866: friend struct std::hash<vector>;
23866:
23866:
23866: public:
23866: typedef bool value_type;
23866: typedef size_t size_type;
23866: typedef ptrdiff_t difference_type;
23866: typedef _Bit_reference reference;
23866: typedef bool const_reference;
23866: typedef _Bit_reference* pointer;
23866: typedef const bool* const_pointer;
23866: typedef _Bit_iterator iterator;
23866: typedef _Bit_const_iterator const_iterator;
23866: typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
23866: typedef std::reverse_iterator<iterator> reverse_iterator;
23866: typedef _Alloc allocator_type;
23866:
23866: allocator_type
23866: get_allocator() const
23866: { return _Base::get_allocator(); }
23866:
23866: protected:
23866: using _Base::_M_allocate;
23866: using _Base::_M_deallocate;
23866: using _Base::_S_nword;
23866: using _Base::_M_get_Bit_allocator;
23866:
23866: public:
23866:
23866: vector() = default;
23866:
23866:
23866:
23866:
23866: explicit
23866: vector(const allocator_type& __a)
23866: : _Base(__a) { }
23866:
23866:
23866: explicit
23866: vector(size_type __n, const allocator_type& __a = allocator_type())
23866: : vector(__n, false, __a)
23866: { }
23866:
23866: vector(size_type __n, const bool& __value,
23866: const allocator_type& __a = allocator_type())
23866:
23866:
23866:
23866:
23866:
23866: : _Base(__a)
23866: {
23866: _M_initialize(__n);
23866: _M_initialize_value(__value);
23866: }
23866:
23866: vector(const vector& __x)
23866: : _Base(_Bit_alloc_traits::_S_select_on_copy(__x._M_get_Bit_allocator()))
23866: {
23866: _M_initialize(__x.size());
23866: _M_copy_aligned(__x.begin(), __x.end(), this->_M_impl._M_start);
23866: }
23866:
23866:
23866: vector(vector&&) = default;
23866:
23866: vector(vector&& __x, const allocator_type& __a)
23866: noexcept(_Bit_alloc_traits::_S_always_equal())
23866: : _Base(__a)
23866: {
23866: if (__x.get_allocator() == __a)
23866: this->_M_move_data(std::move(__x));
23866: else
23866: {
23866: _M_initialize(__x.size());
23866: _M_copy_aligned(__x.begin(), __x.end(), begin());
23866: __x.clear();
23866: }
23866: }
23866:
23866: vector(const vector& __x, const allocator_type& __a)
23866: : _Base(__a)
23866: {
23866: _M_initialize(__x.size());
23866: _M_copy_aligned(__x.begin(), __x.end(), this->_M_impl._M_start);
23866: }
23866:
23866: vector(initializer_list<bool> __l,
23866: const allocator_type& __a = allocator_type())
23866: : _Base(__a)
23866: {
23866: _M_initialize_range(__l.begin(), __l.end(),
23866: random_access_iterator_tag());
23866: }
23866:
23866:
23866:
23866: template<typename _InputIterator,
23866: typename = std::_RequireInputIter<_InputIterator>>
23866: vector(_InputIterator __first, _InputIterator __last,
23866: const allocator_type& __a = allocator_type())
23866: : _Base(__a)
23866: { _M_initialize_dispatch(__first, __last, __false_type()); }
23866: # 737 "/usr/include/c++/10/bits/stl_bvector.h" 3
23866: ~vector() noexcept { }
23866:
23866: vector&
23866: operator=(const vector& __x)
23866: {
23866: if (&__x == this)
23866: return *this;
23866:
23866: if (_Bit_alloc_traits::_S_propagate_on_copy_assign())
23866: {
23866: if (this->_M_get_Bit_allocator() != __x._M_get_Bit_allocator())
23866: {
23866: this->_M_deallocate();
23866: std::__alloc_on_copy(_M_get_Bit_allocator(),
23866: __x._M_get_Bit_allocator());
23866: _M_initialize(__x.size());
23866: }
23866: else
23866: std::__alloc_on_copy(_M_get_Bit_allocator(),
23866: __x._M_get_Bit_allocator());
23866: }
23866:
23866: if (__x.size() > capacity())
23866: {
23866: this->_M_deallocate();
23866: _M_initialize(__x.size());
23866: }
23866: this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(),
23866: begin());
23866: return *this;
23866: }
23866:
23866:
23866: vector&
23866: operator=(vector&& __x) noexcept(_Bit_alloc_traits::_S_nothrow_move())
23866: {
23866: if (_Bit_alloc_traits::_S_propagate_on_move_assign()
23866: || this->_M_get_Bit_allocator() == __x._M_get_Bit_allocator())
23866: {
23866: this->_M_deallocate();
23866: this->_M_move_data(std::move(__x));
23866: std::__alloc_on_move(_M_get_Bit_allocator(),
23866: __x._M_get_Bit_allocator());
23866: }
23866: else
23866: {
23866: if (__x.size() > capacity())
23866: {
23866: this->_M_deallocate();
23866: _M_initialize(__x.size());
23866: }
23866: this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(),
23866: begin());
23866: __x.clear();
23866: }
23866: return *this;
23866: }
23866:
23866: vector&
23866: operator=(initializer_list<bool> __l)
23866: {
23866: this->assign (__l.begin(), __l.end());
23866: return *this;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: void
23866: assign(size_type __n, const bool& __x)
23866: { _M_fill_assign(__n, __x); }
23866:
23866:
23866: template<typename _InputIterator,
23866: typename = std::_RequireInputIter<_InputIterator>>
23866: void
23866: assign(_InputIterator __first, _InputIterator __last)
23866: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); }
23866: # 828 "/usr/include/c++/10/bits/stl_bvector.h" 3
23866: void
23866: assign(initializer_list<bool> __l)
23866: { _M_assign_aux(__l.begin(), __l.end(), random_access_iterator_tag()); }
23866:
23866:
23866: iterator
23866: begin() noexcept
23866: { return iterator(this->_M_impl._M_start._M_p, 0); }
23866:
23866: const_iterator
23866: begin() const noexcept
23866: { return const_iterator(this->_M_impl._M_start._M_p, 0); }
23866:
23866: iterator
23866: end() noexcept
23866: { return this->_M_impl._M_finish; }
23866:
23866: const_iterator
23866: end() const noexcept
23866: { return this->_M_impl._M_finish; }
23866:
23866: reverse_iterator
23866: rbegin() noexcept
23866: { return reverse_iterator(end()); }
23866:
23866: const_reverse_iterator
23866: rbegin() const noexcept
23866: { return const_reverse_iterator(end()); }
23866:
23866: reverse_iterator
23866: rend() noexcept
23866: { return reverse_iterator(begin()); }
23866:
23866: const_reverse_iterator
23866: rend() const noexcept
23866: { return const_reverse_iterator(begin()); }
23866:
23866:
23866: const_iterator
23866: cbegin() const noexcept
23866: { return const_iterator(this->_M_impl._M_start._M_p, 0); }
23866:
23866: const_iterator
23866: cend() const noexcept
23866: { return this->_M_impl._M_finish; }
23866:
23866: const_reverse_iterator
23866: crbegin() const noexcept
23866: { return const_reverse_iterator(end()); }
23866:
23866: const_reverse_iterator
23866: crend() const noexcept
23866: { return const_reverse_iterator(begin()); }
23866:
23866:
23866: size_type
23866: size() const noexcept
23866: { return size_type(end() - begin()); }
23866:
23866: size_type
23866: max_size() const noexcept
23866: {
23866: const size_type __isize =
23866: __gnu_cxx::__numeric_traits<difference_type>::__max
23866: - int(_S_word_bit) + 1;
23866: const size_type __asize
23866: = _Bit_alloc_traits::max_size(_M_get_Bit_allocator());
23866: return (__asize <= __isize / int(_S_word_bit)
23866: ? __asize * int(_S_word_bit) : __isize);
23866: }
23866:
23866: size_type
23866: capacity() const noexcept
23866: { return size_type(const_iterator(this->_M_impl._M_end_addr(), 0)
23866: - begin()); }
23866:
23866: [[__nodiscard__]] bool
23866: empty() const noexcept
23866: { return begin() == end(); }
23866:
23866: reference
23866: operator[](size_type __n)
23866: {
23866: return *iterator(this->_M_impl._M_start._M_p
23866: + __n / int(_S_word_bit), __n % int(_S_word_bit));
23866: }
23866:
23866: const_reference
23866: operator[](size_type __n) const
23866: {
23866: return *const_iterator(this->_M_impl._M_start._M_p
23866: + __n / int(_S_word_bit), __n % int(_S_word_bit));
23866: }
23866:
23866: protected:
23866: void
23866: _M_range_check(size_type __n) const
23866: {
23866: if (__n >= this->size())
23866: __throw_out_of_range_fmt(("vector<bool>::_M_range_check: __n " "(which is %zu) >= this->size() " "(which is %zu)")
23866:
23866: ,
23866: __n, this->size());
23866: }
23866:
23866: public:
23866: reference
23866: at(size_type __n)
23866: { _M_range_check(__n); return (*this)[__n]; }
23866:
23866: const_reference
23866: at(size_type __n) const
23866: { _M_range_check(__n); return (*this)[__n]; }
23866:
23866: void
23866: reserve(size_type __n)
23866: {
23866: if (__n > max_size())
23866: __throw_length_error(("vector::reserve"));
23866: if (capacity() < __n)
23866: _M_reallocate(__n);
23866: }
23866:
23866: reference
23866: front()
23866: { return *begin(); }
23866:
23866: const_reference
23866: front() const
23866: { return *begin(); }
23866:
23866: reference
23866: back()
23866: { return *(end() - 1); }
23866:
23866: const_reference
23866: back() const
23866: { return *(end() - 1); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: void
23866: data() noexcept { }
23866:
23866: void
23866: push_back(bool __x)
23866: {
23866: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr())
23866: *this->_M_impl._M_finish++ = __x;
23866: else
23866: _M_insert_aux(end(), __x);
23866: }
23866:
23866: void
23866: swap(vector& __x) noexcept
23866: {
23866: std::swap(this->_M_impl._M_start, __x._M_impl._M_start);
23866: std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish);
23866: std::swap(this->_M_impl._M_end_of_storage,
23866: __x._M_impl._M_end_of_storage);
23866: _Bit_alloc_traits::_S_on_swap(_M_get_Bit_allocator(),
23866: __x._M_get_Bit_allocator());
23866: }
23866:
23866:
23866: static void
23866: swap(reference __x, reference __y) noexcept
23866: {
23866: bool __tmp = __x;
23866: __x = __y;
23866: __y = __tmp;
23866: }
23866:
23866: iterator
23866:
23866: insert(const_iterator __position, const bool& __x = bool())
23866:
23866:
23866:
23866: {
23866: const difference_type __n = __position - begin();
23866: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr()
23866: && __position == end())
23866: *this->_M_impl._M_finish++ = __x;
23866: else
23866: _M_insert_aux(__position._M_const_cast(), __x);
23866: return begin() + __n;
23866: }
23866:
23866:
23866: template<typename _InputIterator,
23866: typename = std::_RequireInputIter<_InputIterator>>
23866: iterator
23866: insert(const_iterator __position,
23866: _InputIterator __first, _InputIterator __last)
23866: {
23866: difference_type __offset = __position - cbegin();
23866: _M_insert_dispatch(__position._M_const_cast(),
23866: __first, __last, __false_type());
23866: return begin() + __offset;
23866: }
23866: # 1044 "/usr/include/c++/10/bits/stl_bvector.h" 3
23866: iterator
23866: insert(const_iterator __position, size_type __n, const bool& __x)
23866: {
23866: difference_type __offset = __position - cbegin();
23866: _M_fill_insert(__position._M_const_cast(), __n, __x);
23866: return begin() + __offset;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: iterator
23866: insert(const_iterator __p, initializer_list<bool> __l)
23866: { return this->insert(__p, __l.begin(), __l.end()); }
23866:
23866:
23866: void
23866: pop_back()
23866: { --this->_M_impl._M_finish; }
23866:
23866: iterator
23866:
23866: erase(const_iterator __position)
23866:
23866:
23866:
23866: { return _M_erase(__position._M_const_cast()); }
23866:
23866: iterator
23866:
23866: erase(const_iterator __first, const_iterator __last)
23866:
23866:
23866:
23866: { return _M_erase(__first._M_const_cast(), __last._M_const_cast()); }
23866:
23866: void
23866: resize(size_type __new_size, bool __x = bool())
23866: {
23866: if (__new_size < size())
23866: _M_erase_at_end(begin() + difference_type(__new_size));
23866: else
23866: insert(end(), __new_size - size(), __x);
23866: }
23866:
23866:
23866: void
23866: shrink_to_fit()
23866: { _M_shrink_to_fit(); }
23866:
23866:
23866: void
23866: flip() noexcept
23866: {
23866: _Bit_type * const __end = this->_M_impl._M_end_addr();
23866: for (_Bit_type * __p = this->_M_impl._M_start._M_p; __p != __end; ++__p)
23866: *__p = ~*__p;
23866: }
23866:
23866: void
23866: clear() noexcept
23866: { _M_erase_at_end(begin()); }
23866:
23866:
23866: template<typename... _Args>
23866:
23866: reference
23866:
23866:
23866:
23866: emplace_back(_Args&&... __args)
23866: {
23866: push_back(bool(__args...));
23866:
23866: return back();
23866:
23866: }
23866:
23866: template<typename... _Args>
23866: iterator
23866: emplace(const_iterator __pos, _Args&&... __args)
23866: { return insert(__pos, bool(__args...)); }
23866:
23866:
23866: protected:
23866:
23866: iterator
23866: _M_copy_aligned(const_iterator __first, const_iterator __last,
23866: iterator __result)
23866: {
23866: _Bit_type* __q = std::copy(__first._M_p, __last._M_p, __result._M_p);
23866: return std::copy(const_iterator(__last._M_p, 0), __last,
23866: iterator(__q, 0));
23866: }
23866:
23866: void
23866: _M_initialize(size_type __n)
23866: {
23866: if (__n)
23866: {
23866: _Bit_pointer __q = this->_M_allocate(__n);
23866: this->_M_impl._M_end_of_storage = __q + _S_nword(__n);
23866: this->_M_impl._M_start = iterator(std::__addressof(*__q), 0);
23866: }
23866: else
23866: {
23866: this->_M_impl._M_end_of_storage = _Bit_pointer();
23866: this->_M_impl._M_start = iterator(0, 0);
23866: }
23866: this->_M_impl._M_finish = this->_M_impl._M_start + difference_type(__n);
23866:
23866: }
23866:
23866: void
23866: _M_initialize_value(bool __x)
23866: {
23866: if (_Bit_type* __p = this->_M_impl._M_start._M_p)
23866: __builtin_memset(__p, __x ? ~0 : 0,
23866: (this->_M_impl._M_end_addr() - __p)
23866: * sizeof(_Bit_type));
23866: }
23866:
23866: void
23866: _M_reallocate(size_type __n);
23866:
23866:
23866: bool
23866: _M_shrink_to_fit();
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Integer>
23866: void
23866: _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type)
23866: {
23866: _M_initialize(static_cast<size_type>(__n));
23866: _M_initialize_value(__x);
23866: }
23866:
23866: template<typename _InputIterator>
23866: void
23866: _M_initialize_dispatch(_InputIterator __first, _InputIterator __last,
23866: __false_type)
23866: { _M_initialize_range(__first, __last,
23866: std::__iterator_category(__first)); }
23866:
23866: template<typename _InputIterator>
23866: void
23866: _M_initialize_range(_InputIterator __first, _InputIterator __last,
23866: std::input_iterator_tag)
23866: {
23866: for (; __first != __last; ++__first)
23866: push_back(*__first);
23866: }
23866:
23866: template<typename _ForwardIterator>
23866: void
23866: _M_initialize_range(_ForwardIterator __first, _ForwardIterator __last,
23866: std::forward_iterator_tag)
23866: {
23866: const size_type __n = std::distance(__first, __last);
23866: _M_initialize(__n);
23866: std::copy(__first, __last, this->_M_impl._M_start);
23866: }
23866: # 1230 "/usr/include/c++/10/bits/stl_bvector.h" 3
23866: void
23866: _M_fill_assign(size_t __n, bool __x)
23866: {
23866: if (__n > size())
23866: {
23866: _M_initialize_value(__x);
23866: insert(end(), __n - size(), __x);
23866: }
23866: else
23866: {
23866: _M_erase_at_end(begin() + __n);
23866: _M_initialize_value(__x);
23866: }
23866: }
23866:
23866: template<typename _InputIterator>
23866: void
23866: _M_assign_aux(_InputIterator __first, _InputIterator __last,
23866: std::input_iterator_tag)
23866: {
23866: iterator __cur = begin();
23866: for (; __first != __last && __cur != end(); ++__cur, (void)++__first)
23866: *__cur = *__first;
23866: if (__first == __last)
23866: _M_erase_at_end(__cur);
23866: else
23866: insert(end(), __first, __last);
23866: }
23866:
23866: template<typename _ForwardIterator>
23866: void
23866: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
23866: std::forward_iterator_tag)
23866: {
23866: const size_type __len = std::distance(__first, __last);
23866: if (__len < size())
23866: _M_erase_at_end(std::copy(__first, __last, begin()));
23866: else
23866: {
23866: _ForwardIterator __mid = __first;
23866: std::advance(__mid, size());
23866: std::copy(__first, __mid, begin());
23866: insert(end(), __mid, __last);
23866: }
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Integer>
23866: void
23866: _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x,
23866: __true_type)
23866: { _M_fill_insert(__pos, __n, __x); }
23866:
23866: template<typename _InputIterator>
23866: void
23866: _M_insert_dispatch(iterator __pos,
23866: _InputIterator __first, _InputIterator __last,
23866: __false_type)
23866: { _M_insert_range(__pos, __first, __last,
23866: std::__iterator_category(__first)); }
23866:
23866: void
23866: _M_fill_insert(iterator __position, size_type __n, bool __x);
23866:
23866: template<typename _InputIterator>
23866: void
23866: _M_insert_range(iterator __pos, _InputIterator __first,
23866: _InputIterator __last, std::input_iterator_tag)
23866: {
23866: for (; __first != __last; ++__first)
23866: {
23866: __pos = insert(__pos, *__first);
23866: ++__pos;
23866: }
23866: }
23866:
23866: template<typename _ForwardIterator>
23866: void
23866: _M_insert_range(iterator __position, _ForwardIterator __first,
23866: _ForwardIterator __last, std::forward_iterator_tag);
23866:
23866: void
23866: _M_insert_aux(iterator __position, bool __x);
23866:
23866: size_type
23866: _M_check_len(size_type __n, const char* __s) const
23866: {
23866: if (max_size() - size() < __n)
23866: __throw_length_error((__s));
23866:
23866: const size_type __len = size() + std::max(size(), __n);
23866: return (__len < size() || __len > max_size()) ? max_size() : __len;
23866: }
23866:
23866: void
23866: _M_erase_at_end(iterator __pos)
23866: { this->_M_impl._M_finish = __pos; }
23866:
23866: iterator
23866: _M_erase(iterator __pos);
23866:
23866: iterator
23866: _M_erase(iterator __first, iterator __last);
23866: };
23866:
23866:
23866:
23866: }
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866: template<typename _Alloc>
23866: struct hash<std::vector<bool, _Alloc>>
23866: : public __hash_base<size_t, std::vector<bool, _Alloc>>
23866: {
23866: size_t
23866: operator()(const std::vector<bool, _Alloc>&) const noexcept;
23866: };
23866:
23866:
23866: }
23866: # 69 "/usr/include/c++/10/vector" 2 3
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/vector.tcc" 1 3
23866: # 57 "/usr/include/c++/10/bits/vector.tcc" 3
23866: #define _VECTOR_TCC 1
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: void
23866: vector<_Tp, _Alloc>::
23866: reserve(size_type __n)
23866: {
23866: if (__n > this->max_size())
23866: __throw_length_error(("vector::reserve"));
23866: if (this->capacity() < __n)
23866: {
23866: const size_type __old_size = size();
23866: pointer __tmp;
23866:
23866: if constexpr (_S_use_relocate())
23866: {
23866: __tmp = this->_M_allocate(__n);
23866: _S_relocate(this->_M_impl._M_start, this->_M_impl._M_finish,
23866: __tmp, _M_get_Tp_allocator());
23866: }
23866: else
23866:
23866: {
23866: __tmp = _M_allocate_and_copy(__n,
23866: std::__make_move_if_noexcept_iterator(this->_M_impl._M_start),
23866: std::__make_move_if_noexcept_iterator(this->_M_impl._M_finish));
23866: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
23866: _M_get_Tp_allocator());
23866: }
23866: ;
23866: _M_deallocate(this->_M_impl._M_start,
23866: this->_M_impl._M_end_of_storage
23866: - this->_M_impl._M_start);
23866: this->_M_impl._M_start = __tmp;
23866: this->_M_impl._M_finish = __tmp + __old_size;
23866: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
23866: }
23866: }
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: template<typename... _Args>
23866:
23866: typename vector<_Tp, _Alloc>::reference
23866:
23866:
23866:
23866: vector<_Tp, _Alloc>::
23866: emplace_back(_Args&&... __args)
23866: {
23866: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
23866: {
23866: ;
23866: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish,
23866: std::forward<_Args>(__args)...);
23866: ++this->_M_impl._M_finish;
23866: ;
23866: }
23866: else
23866: _M_realloc_insert(end(), std::forward<_Args>(__args)...);
23866:
23866: return back();
23866:
23866: }
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: typename vector<_Tp, _Alloc>::iterator
23866: vector<_Tp, _Alloc>::
23866:
23866: insert(const_iterator __position, const value_type& __x)
23866:
23866:
23866:
23866: {
23866: const size_type __n = __position - begin();
23866: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
23866: if (__position == end())
23866: {
23866: ;
23866: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish,
23866: __x);
23866: ++this->_M_impl._M_finish;
23866: ;
23866: }
23866: else
23866: {
23866:
23866: const auto __pos = begin() + (__position - cbegin());
23866:
23866:
23866: _Temporary_value __x_copy(this, __x);
23866: _M_insert_aux(__pos, std::move(__x_copy._M_val()));
23866:
23866:
23866:
23866: }
23866: else
23866:
23866: _M_realloc_insert(begin() + (__position - cbegin()), __x);
23866:
23866:
23866:
23866:
23866: return iterator(this->_M_impl._M_start + __n);
23866: }
23866:
23866: template<typename _Tp, typename _Alloc>
23866: typename vector<_Tp, _Alloc>::iterator
23866: vector<_Tp, _Alloc>::
23866: _M_erase(iterator __position)
23866: {
23866: if (__position + 1 != end())
23866: std::move(__position + 1, end(), __position);
23866: --this->_M_impl._M_finish;
23866: _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish);
23866: ;
23866: return __position;
23866: }
23866:
23866: template<typename _Tp, typename _Alloc>
23866: typename vector<_Tp, _Alloc>::iterator
23866: vector<_Tp, _Alloc>::
23866: _M_erase(iterator __first, iterator __last)
23866: {
23866: if (__first != __last)
23866: {
23866: if (__last != end())
23866: std::move(__last, end(), __first);
23866: _M_erase_at_end(__first.base() + (end() - __last));
23866: }
23866: return __first;
23866: }
23866:
23866: template<typename _Tp, typename _Alloc>
23866: vector<_Tp, _Alloc>&
23866: vector<_Tp, _Alloc>::
23866: operator=(const vector<_Tp, _Alloc>& __x)
23866: {
23866: if (&__x != this)
23866: {
23866: ;
23866:
23866: if (_Alloc_traits::_S_propagate_on_copy_assign())
23866: {
23866: if (!_Alloc_traits::_S_always_equal()
23866: && _M_get_Tp_allocator() != __x._M_get_Tp_allocator())
23866: {
23866:
23866: this->clear();
23866: _M_deallocate(this->_M_impl._M_start,
23866: this->_M_impl._M_end_of_storage
23866: - this->_M_impl._M_start);
23866: this->_M_impl._M_start = nullptr;
23866: this->_M_impl._M_finish = nullptr;
23866: this->_M_impl._M_end_of_storage = nullptr;
23866: }
23866: std::__alloc_on_copy(_M_get_Tp_allocator(),
23866: __x._M_get_Tp_allocator());
23866: }
23866:
23866: const size_type __xlen = __x.size();
23866: if (__xlen > capacity())
23866: {
23866: pointer __tmp = _M_allocate_and_copy(__xlen, __x.begin(),
23866: __x.end());
23866: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
23866: _M_get_Tp_allocator());
23866: _M_deallocate(this->_M_impl._M_start,
23866: this->_M_impl._M_end_of_storage
23866: - this->_M_impl._M_start);
23866: this->_M_impl._M_start = __tmp;
23866: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __xlen;
23866: }
23866: else if (size() >= __xlen)
23866: {
23866: std::_Destroy(std::copy(__x.begin(), __x.end(), begin()),
23866: end(), _M_get_Tp_allocator());
23866: }
23866: else
23866: {
23866: std::copy(__x._M_impl._M_start, __x._M_impl._M_start + size(),
23866: this->_M_impl._M_start);
23866: std::__uninitialized_copy_a(__x._M_impl._M_start + size(),
23866: __x._M_impl._M_finish,
23866: this->_M_impl._M_finish,
23866: _M_get_Tp_allocator());
23866: }
23866: this->_M_impl._M_finish = this->_M_impl._M_start + __xlen;
23866: }
23866: return *this;
23866: }
23866:
23866: template<typename _Tp, typename _Alloc>
23866: void
23866: vector<_Tp, _Alloc>::
23866: _M_fill_assign(size_t __n, const value_type& __val)
23866: {
23866: if (__n > capacity())
23866: {
23866: vector __tmp(__n, __val, _M_get_Tp_allocator());
23866: __tmp._M_impl._M_swap_data(this->_M_impl);
23866: }
23866: else if (__n > size())
23866: {
23866: std::fill(begin(), end(), __val);
23866: const size_type __add = __n - size();
23866: ;
23866: this->_M_impl._M_finish =
23866: std::__uninitialized_fill_n_a(this->_M_impl._M_finish,
23866: __add, __val, _M_get_Tp_allocator());
23866: ;
23866: }
23866: else
23866: _M_erase_at_end(std::fill_n(this->_M_impl._M_start, __n, __val));
23866: }
23866:
23866: template<typename _Tp, typename _Alloc>
23866: template<typename _InputIterator>
23866: void
23866: vector<_Tp, _Alloc>::
23866: _M_assign_aux(_InputIterator __first, _InputIterator __last,
23866: std::input_iterator_tag)
23866: {
23866: pointer __cur(this->_M_impl._M_start);
23866: for (; __first != __last && __cur != this->_M_impl._M_finish;
23866: ++__cur, (void)++__first)
23866: *__cur = *__first;
23866: if (__first == __last)
23866: _M_erase_at_end(__cur);
23866: else
23866: _M_range_insert(end(), __first, __last,
23866: std::__iterator_category(__first));
23866: }
23866:
23866: template<typename _Tp, typename _Alloc>
23866: template<typename _ForwardIterator>
23866: void
23866: vector<_Tp, _Alloc>::
23866: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
23866: std::forward_iterator_tag)
23866: {
23866: const size_type __len = std::distance(__first, __last);
23866:
23866: if (__len > capacity())
23866: {
23866: _S_check_init_len(__len, _M_get_Tp_allocator());
23866: pointer __tmp(_M_allocate_and_copy(__len, __first, __last));
23866: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
23866: _M_get_Tp_allocator());
23866: ;
23866: _M_deallocate(this->_M_impl._M_start,
23866: this->_M_impl._M_end_of_storage
23866: - this->_M_impl._M_start);
23866: this->_M_impl._M_start = __tmp;
23866: this->_M_impl._M_finish = this->_M_impl._M_start + __len;
23866: this->_M_impl._M_end_of_storage = this->_M_impl._M_finish;
23866: }
23866: else if (size() >= __len)
23866: _M_erase_at_end(std::copy(__first, __last, this->_M_impl._M_start));
23866: else
23866: {
23866: _ForwardIterator __mid = __first;
23866: std::advance(__mid, size());
23866: std::copy(__first, __mid, this->_M_impl._M_start);
23866: const size_type __attribute__((__unused__)) __n = __len - size();
23866: ;
23866: this->_M_impl._M_finish =
23866: std::__uninitialized_copy_a(__mid, __last,
23866: this->_M_impl._M_finish,
23866: _M_get_Tp_allocator());
23866: ;
23866: }
23866: }
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: auto
23866: vector<_Tp, _Alloc>::
23866: _M_insert_rval(const_iterator __position, value_type&& __v) -> iterator
23866: {
23866: const auto __n = __position - cbegin();
23866: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
23866: if (__position == cend())
23866: {
23866: ;
23866: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish,
23866: std::move(__v));
23866: ++this->_M_impl._M_finish;
23866: ;
23866: }
23866: else
23866: _M_insert_aux(begin() + __n, std::move(__v));
23866: else
23866: _M_realloc_insert(begin() + __n, std::move(__v));
23866:
23866: return iterator(this->_M_impl._M_start + __n);
23866: }
23866:
23866: template<typename _Tp, typename _Alloc>
23866: template<typename... _Args>
23866: auto
23866: vector<_Tp, _Alloc>::
23866: _M_emplace_aux(const_iterator __position, _Args&&... __args)
23866: -> iterator
23866: {
23866: const auto __n = __position - cbegin();
23866: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
23866: if (__position == cend())
23866: {
23866: ;
23866: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish,
23866: std::forward<_Args>(__args)...);
23866: ++this->_M_impl._M_finish;
23866: ;
23866: }
23866: else
23866: {
23866:
23866:
23866:
23866: _Temporary_value __tmp(this, std::forward<_Args>(__args)...);
23866: _M_insert_aux(begin() + __n, std::move(__tmp._M_val()));
23866: }
23866: else
23866: _M_realloc_insert(begin() + __n, std::forward<_Args>(__args)...);
23866:
23866: return iterator(this->_M_impl._M_start + __n);
23866: }
23866:
23866: template<typename _Tp, typename _Alloc>
23866: template<typename _Arg>
23866: void
23866: vector<_Tp, _Alloc>::
23866: _M_insert_aux(iterator __position, _Arg&& __arg)
23866:
23866:
23866:
23866:
23866:
23866:
23866: {
23866: ;
23866: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish,
23866: std::move(*(this->_M_impl._M_finish - 1)));
23866: ++this->_M_impl._M_finish;
23866: ;
23866:
23866:
23866:
23866: std::move_backward(__position.base(), this->_M_impl._M_finish - 2, this->_M_impl._M_finish - 1)
23866:
23866: ;
23866:
23866:
23866:
23866: *__position = std::forward<_Arg>(__arg);
23866:
23866: }
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: template<typename... _Args>
23866: void
23866: vector<_Tp, _Alloc>::
23866: _M_realloc_insert(iterator __position, _Args&&... __args)
23866:
23866:
23866:
23866:
23866:
23866:
23866: {
23866: const size_type __len =
23866: _M_check_len(size_type(1), "vector::_M_realloc_insert");
23866: pointer __old_start = this->_M_impl._M_start;
23866: pointer __old_finish = this->_M_impl._M_finish;
23866: const size_type __elems_before = __position - begin();
23866: pointer __new_start(this->_M_allocate(__len));
23866: pointer __new_finish(__new_start);
23866: try
23866: {
23866:
23866:
23866:
23866:
23866:
23866: _Alloc_traits::construct(this->_M_impl,
23866: __new_start + __elems_before,
23866:
23866: std::forward<_Args>(__args)...);
23866:
23866:
23866:
23866: __new_finish = pointer();
23866:
23866:
23866: if constexpr (_S_use_relocate())
23866: {
23866: __new_finish = _S_relocate(__old_start, __position.base(),
23866: __new_start, _M_get_Tp_allocator());
23866:
23866: ++__new_finish;
23866:
23866: __new_finish = _S_relocate(__position.base(), __old_finish,
23866: __new_finish, _M_get_Tp_allocator());
23866: }
23866: else
23866:
23866: {
23866: __new_finish
23866: = std::__uninitialized_move_if_noexcept_a
23866: (__old_start, __position.base(),
23866: __new_start, _M_get_Tp_allocator());
23866:
23866: ++__new_finish;
23866:
23866: __new_finish
23866: = std::__uninitialized_move_if_noexcept_a
23866: (__position.base(), __old_finish,
23866: __new_finish, _M_get_Tp_allocator());
23866: }
23866: }
23866: catch(...)
23866: {
23866: if (!__new_finish)
23866: _Alloc_traits::destroy(this->_M_impl,
23866: __new_start + __elems_before);
23866: else
23866: std::_Destroy(__new_start, __new_finish, _M_get_Tp_allocator());
23866: _M_deallocate(__new_start, __len);
23866: throw;
23866: }
23866:
23866: if constexpr (!_S_use_relocate())
23866:
23866: std::_Destroy(__old_start, __old_finish, _M_get_Tp_allocator());
23866: ;
23866: _M_deallocate(__old_start,
23866: this->_M_impl._M_end_of_storage - __old_start);
23866: this->_M_impl._M_start = __new_start;
23866: this->_M_impl._M_finish = __new_finish;
23866: this->_M_impl._M_end_of_storage = __new_start + __len;
23866: }
23866:
23866: template<typename _Tp, typename _Alloc>
23866: void
23866: vector<_Tp, _Alloc>::
23866: _M_fill_insert(iterator __position, size_type __n, const value_type& __x)
23866: {
23866: if (__n != 0)
23866: {
23866: if (size_type(this->_M_impl._M_end_of_storage
23866: - this->_M_impl._M_finish) >= __n)
23866: {
23866:
23866:
23866:
23866: _Temporary_value __tmp(this, __x);
23866: value_type& __x_copy = __tmp._M_val();
23866:
23866: const size_type __elems_after = end() - __position;
23866: pointer __old_finish(this->_M_impl._M_finish);
23866: if (__elems_after > __n)
23866: {
23866: ;
23866: std::__uninitialized_move_a(this->_M_impl._M_finish - __n,
23866: this->_M_impl._M_finish,
23866: this->_M_impl._M_finish,
23866: _M_get_Tp_allocator());
23866: this->_M_impl._M_finish += __n;
23866: ;
23866: std::move_backward(__position.base(), __old_finish - __n, __old_finish)
23866: ;
23866: std::fill(__position.base(), __position.base() + __n,
23866: __x_copy);
23866: }
23866: else
23866: {
23866: ;
23866: this->_M_impl._M_finish =
23866: std::__uninitialized_fill_n_a(this->_M_impl._M_finish,
23866: __n - __elems_after,
23866: __x_copy,
23866: _M_get_Tp_allocator());
23866: ;
23866: std::__uninitialized_move_a(__position.base(), __old_finish,
23866: this->_M_impl._M_finish,
23866: _M_get_Tp_allocator());
23866: this->_M_impl._M_finish += __elems_after;
23866: ;
23866: std::fill(__position.base(), __old_finish, __x_copy);
23866: }
23866: }
23866: else
23866: {
23866: const size_type __len =
23866: _M_check_len(__n, "vector::_M_fill_insert");
23866: const size_type __elems_before = __position - begin();
23866: pointer __new_start(this->_M_allocate(__len));
23866: pointer __new_finish(__new_start);
23866: try
23866: {
23866:
23866: std::__uninitialized_fill_n_a(__new_start + __elems_before,
23866: __n, __x,
23866: _M_get_Tp_allocator());
23866: __new_finish = pointer();
23866:
23866: __new_finish
23866: = std::__uninitialized_move_if_noexcept_a
23866: (this->_M_impl._M_start, __position.base(),
23866: __new_start, _M_get_Tp_allocator());
23866:
23866: __new_finish += __n;
23866:
23866: __new_finish
23866: = std::__uninitialized_move_if_noexcept_a
23866: (__position.base(), this->_M_impl._M_finish,
23866: __new_finish, _M_get_Tp_allocator());
23866: }
23866: catch(...)
23866: {
23866: if (!__new_finish)
23866: std::_Destroy(__new_start + __elems_before,
23866: __new_start + __elems_before + __n,
23866: _M_get_Tp_allocator());
23866: else
23866: std::_Destroy(__new_start, __new_finish,
23866: _M_get_Tp_allocator());
23866: _M_deallocate(__new_start, __len);
23866: throw;
23866: }
23866: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
23866: _M_get_Tp_allocator());
23866: ;
23866: _M_deallocate(this->_M_impl._M_start,
23866: this->_M_impl._M_end_of_storage
23866: - this->_M_impl._M_start);
23866: this->_M_impl._M_start = __new_start;
23866: this->_M_impl._M_finish = __new_finish;
23866: this->_M_impl._M_end_of_storage = __new_start + __len;
23866: }
23866: }
23866: }
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: void
23866: vector<_Tp, _Alloc>::
23866: _M_default_append(size_type __n)
23866: {
23866: if (__n != 0)
23866: {
23866: const size_type __size = size();
23866: size_type __navail = size_type(this->_M_impl._M_end_of_storage
23866: - this->_M_impl._M_finish);
23866:
23866: if (__size > max_size() || __navail > max_size() - __size)
23866: __builtin_unreachable();
23866:
23866: if (__navail >= __n)
23866: {
23866: ;
23866: this->_M_impl._M_finish =
23866: std::__uninitialized_default_n_a(this->_M_impl._M_finish,
23866: __n, _M_get_Tp_allocator());
23866: ;
23866: }
23866: else
23866: {
23866: const size_type __len =
23866: _M_check_len(__n, "vector::_M_default_append");
23866: pointer __new_start(this->_M_allocate(__len));
23866: if constexpr (_S_use_relocate())
23866: {
23866: try
23866: {
23866: std::__uninitialized_default_n_a(__new_start + __size,
23866: __n, _M_get_Tp_allocator());
23866: }
23866: catch(...)
23866: {
23866: _M_deallocate(__new_start, __len);
23866: throw;
23866: }
23866: _S_relocate(this->_M_impl._M_start, this->_M_impl._M_finish,
23866: __new_start, _M_get_Tp_allocator());
23866: }
23866: else
23866: {
23866: pointer __destroy_from = pointer();
23866: try
23866: {
23866: std::__uninitialized_default_n_a(__new_start + __size,
23866: __n, _M_get_Tp_allocator());
23866: __destroy_from = __new_start + __size;
23866: std::__uninitialized_move_if_noexcept_a(
23866: this->_M_impl._M_start, this->_M_impl._M_finish,
23866: __new_start, _M_get_Tp_allocator());
23866: }
23866: catch(...)
23866: {
23866: if (__destroy_from)
23866: std::_Destroy(__destroy_from, __destroy_from + __n,
23866: _M_get_Tp_allocator());
23866: _M_deallocate(__new_start, __len);
23866: throw;
23866: }
23866: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
23866: _M_get_Tp_allocator());
23866: }
23866: ;
23866: _M_deallocate(this->_M_impl._M_start,
23866: this->_M_impl._M_end_of_storage
23866: - this->_M_impl._M_start);
23866: this->_M_impl._M_start = __new_start;
23866: this->_M_impl._M_finish = __new_start + __size + __n;
23866: this->_M_impl._M_end_of_storage = __new_start + __len;
23866: }
23866: }
23866: }
23866:
23866: template<typename _Tp, typename _Alloc>
23866: bool
23866: vector<_Tp, _Alloc>::
23866: _M_shrink_to_fit()
23866: {
23866: if (capacity() == size())
23866: return false;
23866: ;
23866: return std::__shrink_to_fit_aux<vector>::_S_do_it(*this);
23866: }
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: template<typename _InputIterator>
23866: void
23866: vector<_Tp, _Alloc>::
23866: _M_range_insert(iterator __pos, _InputIterator __first,
23866: _InputIterator __last, std::input_iterator_tag)
23866: {
23866: if (__pos == end())
23866: {
23866: for (; __first != __last; ++__first)
23866: insert(end(), *__first);
23866: }
23866: else if (__first != __last)
23866: {
23866: vector __tmp(__first, __last, _M_get_Tp_allocator());
23866: insert(__pos,
23866: std::make_move_iterator(__tmp.begin()),
23866: std::make_move_iterator(__tmp.end()));
23866: }
23866: }
23866:
23866: template<typename _Tp, typename _Alloc>
23866: template<typename _ForwardIterator>
23866: void
23866: vector<_Tp, _Alloc>::
23866: _M_range_insert(iterator __position, _ForwardIterator __first,
23866: _ForwardIterator __last, std::forward_iterator_tag)
23866: {
23866: if (__first != __last)
23866: {
23866: const size_type __n = std::distance(__first, __last);
23866: if (size_type(this->_M_impl._M_end_of_storage
23866: - this->_M_impl._M_finish) >= __n)
23866: {
23866: const size_type __elems_after = end() - __position;
23866: pointer __old_finish(this->_M_impl._M_finish);
23866: if (__elems_after > __n)
23866: {
23866: ;
23866: std::__uninitialized_move_a(this->_M_impl._M_finish - __n,
23866: this->_M_impl._M_finish,
23866: this->_M_impl._M_finish,
23866: _M_get_Tp_allocator());
23866: this->_M_impl._M_finish += __n;
23866: ;
23866: std::move_backward(__position.base(), __old_finish - __n, __old_finish)
23866: ;
23866: std::copy(__first, __last, __position);
23866: }
23866: else
23866: {
23866: _ForwardIterator __mid = __first;
23866: std::advance(__mid, __elems_after);
23866: ;
23866: std::__uninitialized_copy_a(__mid, __last,
23866: this->_M_impl._M_finish,
23866: _M_get_Tp_allocator());
23866: this->_M_impl._M_finish += __n - __elems_after;
23866: ;
23866: std::__uninitialized_move_a(__position.base(),
23866: __old_finish,
23866: this->_M_impl._M_finish,
23866: _M_get_Tp_allocator());
23866: this->_M_impl._M_finish += __elems_after;
23866: ;
23866: std::copy(__first, __mid, __position);
23866: }
23866: }
23866: else
23866: {
23866: const size_type __len =
23866: _M_check_len(__n, "vector::_M_range_insert");
23866: pointer __new_start(this->_M_allocate(__len));
23866: pointer __new_finish(__new_start);
23866: try
23866: {
23866: __new_finish
23866: = std::__uninitialized_move_if_noexcept_a
23866: (this->_M_impl._M_start, __position.base(),
23866: __new_start, _M_get_Tp_allocator());
23866: __new_finish
23866: = std::__uninitialized_copy_a(__first, __last,
23866: __new_finish,
23866: _M_get_Tp_allocator());
23866: __new_finish
23866: = std::__uninitialized_move_if_noexcept_a
23866: (__position.base(), this->_M_impl._M_finish,
23866: __new_finish, _M_get_Tp_allocator());
23866: }
23866: catch(...)
23866: {
23866: std::_Destroy(__new_start, __new_finish,
23866: _M_get_Tp_allocator());
23866: _M_deallocate(__new_start, __len);
23866: throw;
23866: }
23866: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
23866: _M_get_Tp_allocator());
23866: ;
23866: _M_deallocate(this->_M_impl._M_start,
23866: this->_M_impl._M_end_of_storage
23866: - this->_M_impl._M_start);
23866: this->_M_impl._M_start = __new_start;
23866: this->_M_impl._M_finish = __new_finish;
23866: this->_M_impl._M_end_of_storage = __new_start + __len;
23866: }
23866: }
23866: }
23866:
23866:
23866:
23866: template<typename _Alloc>
23866: void
23866: vector<bool, _Alloc>::
23866: _M_reallocate(size_type __n)
23866: {
23866: _Bit_pointer __q = this->_M_allocate(__n);
23866: iterator __start(std::__addressof(*__q), 0);
23866: iterator __finish(_M_copy_aligned(begin(), end(), __start));
23866: this->_M_deallocate();
23866: this->_M_impl._M_start = __start;
23866: this->_M_impl._M_finish = __finish;
23866: this->_M_impl._M_end_of_storage = __q + _S_nword(__n);
23866: }
23866:
23866: template<typename _Alloc>
23866: void
23866: vector<bool, _Alloc>::
23866: _M_fill_insert(iterator __position, size_type __n, bool __x)
23866: {
23866: if (__n == 0)
23866: return;
23866: if (capacity() - size() >= __n)
23866: {
23866: std::copy_backward(__position, end(),
23866: this->_M_impl._M_finish + difference_type(__n));
23866: std::fill(__position, __position + difference_type(__n), __x);
23866: this->_M_impl._M_finish += difference_type(__n);
23866: }
23866: else
23866: {
23866: const size_type __len =
23866: _M_check_len(__n, "vector<bool>::_M_fill_insert");
23866: _Bit_pointer __q = this->_M_allocate(__len);
23866: iterator __start(std::__addressof(*__q), 0);
23866: iterator __i = _M_copy_aligned(begin(), __position, __start);
23866: std::fill(__i, __i + difference_type(__n), __x);
23866: iterator __finish = std::copy(__position, end(),
23866: __i + difference_type(__n));
23866: this->_M_deallocate();
23866: this->_M_impl._M_end_of_storage = __q + _S_nword(__len);
23866: this->_M_impl._M_start = __start;
23866: this->_M_impl._M_finish = __finish;
23866: }
23866: }
23866:
23866: template<typename _Alloc>
23866: template<typename _ForwardIterator>
23866: void
23866: vector<bool, _Alloc>::
23866: _M_insert_range(iterator __position, _ForwardIterator __first,
23866: _ForwardIterator __last, std::forward_iterator_tag)
23866: {
23866: if (__first != __last)
23866: {
23866: size_type __n = std::distance(__first, __last);
23866: if (capacity() - size() >= __n)
23866: {
23866: std::copy_backward(__position, end(),
23866: this->_M_impl._M_finish
23866: + difference_type(__n));
23866: std::copy(__first, __last, __position);
23866: this->_M_impl._M_finish += difference_type(__n);
23866: }
23866: else
23866: {
23866: const size_type __len =
23866: _M_check_len(__n, "vector<bool>::_M_insert_range");
23866: _Bit_pointer __q = this->_M_allocate(__len);
23866: iterator __start(std::__addressof(*__q), 0);
23866: iterator __i = _M_copy_aligned(begin(), __position, __start);
23866: __i = std::copy(__first, __last, __i);
23866: iterator __finish = std::copy(__position, end(), __i);
23866: this->_M_deallocate();
23866: this->_M_impl._M_end_of_storage = __q + _S_nword(__len);
23866: this->_M_impl._M_start = __start;
23866: this->_M_impl._M_finish = __finish;
23866: }
23866: }
23866: }
23866:
23866: template<typename _Alloc>
23866: void
23866: vector<bool, _Alloc>::
23866: _M_insert_aux(iterator __position, bool __x)
23866: {
23866: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr())
23866: {
23866: std::copy_backward(__position, this->_M_impl._M_finish,
23866: this->_M_impl._M_finish + 1);
23866: *__position = __x;
23866: ++this->_M_impl._M_finish;
23866: }
23866: else
23866: {
23866: const size_type __len =
23866: _M_check_len(size_type(1), "vector<bool>::_M_insert_aux");
23866: _Bit_pointer __q = this->_M_allocate(__len);
23866: iterator __start(std::__addressof(*__q), 0);
23866: iterator __i = _M_copy_aligned(begin(), __position, __start);
23866: *__i++ = __x;
23866: iterator __finish = std::copy(__position, end(), __i);
23866: this->_M_deallocate();
23866: this->_M_impl._M_end_of_storage = __q + _S_nword(__len);
23866: this->_M_impl._M_start = __start;
23866: this->_M_impl._M_finish = __finish;
23866: }
23866: }
23866:
23866: template<typename _Alloc>
23866: typename vector<bool, _Alloc>::iterator
23866: vector<bool, _Alloc>::
23866: _M_erase(iterator __position)
23866: {
23866: if (__position + 1 != end())
23866: std::copy(__position + 1, end(), __position);
23866: --this->_M_impl._M_finish;
23866: return __position;
23866: }
23866:
23866: template<typename _Alloc>
23866: typename vector<bool, _Alloc>::iterator
23866: vector<bool, _Alloc>::
23866: _M_erase(iterator __first, iterator __last)
23866: {
23866: if (__first != __last)
23866: _M_erase_at_end(std::copy(__last, end(), __first));
23866: return __first;
23866: }
23866:
23866:
23866: template<typename _Alloc>
23866: bool
23866: vector<bool, _Alloc>::
23866: _M_shrink_to_fit()
23866: {
23866: if (capacity() - size() < int(_S_word_bit))
23866: return false;
23866: try
23866: {
23866: _M_reallocate(size());
23866: return true;
23866: }
23866: catch(...)
23866: { return false; }
23866: }
23866:
23866:
23866:
23866:
23866: }
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: template<typename _Alloc>
23866: size_t
23866: hash<std::vector<bool, _Alloc>>::
23866: operator()(const std::vector<bool, _Alloc>& __b) const noexcept
23866: {
23866: size_t __hash = 0;
23866: using std::_S_word_bit;
23866: using std::_Bit_type;
23866:
23866: const size_t __words = __b.size() / _S_word_bit;
23866: if (__words)
23866: {
23866: const size_t __clength = __words * sizeof(_Bit_type);
23866: __hash = std::_Hash_impl::hash(__b._M_impl._M_start._M_p, __clength);
23866: }
23866:
23866: const size_t __extrabits = __b.size() % _S_word_bit;
23866: if (__extrabits)
23866: {
23866: _Bit_type __hiword = *__b._M_impl._M_finish._M_p;
23866: __hiword &= ~((~static_cast<_Bit_type>(0)) << __extrabits);
23866:
23866: const size_t __clength
23866: = (__extrabits + 8 - 1) / 8;
23866: if (__words)
23866: __hash = std::_Hash_impl::hash(&__hiword, __clength, __hash);
23866: else
23866: __hash = std::_Hash_impl::hash(&__hiword, __clength);
23866: }
23866:
23866: return __hash;
23866: }
23866:
23866:
23866: }
23866:
23866:
23866:
23866: #undef _GLIBCXX_ASAN_ANNOTATE_REINIT
23866: #undef _GLIBCXX_ASAN_ANNOTATE_GROW
23866: #undef _GLIBCXX_ASAN_ANNOTATE_GREW
23866: #undef _GLIBCXX_ASAN_ANNOTATE_SHRINK
23866: # 73 "/usr/include/c++/10/vector" 2 3
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: namespace pmr {
23866: template<typename _Tp> class polymorphic_allocator;
23866: template<typename _Tp>
23866: using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 63 "/usr/include/c++/10/functional" 2 3
23866: # 72 "/usr/include/c++/10/functional" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: #define __cpp_lib_invoke 201411L
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Callable, typename... _Args>
23866: inline invoke_result_t<_Callable, _Args...>
23866: invoke(_Callable&& __fn, _Args&&... __args)
23866: noexcept(is_nothrow_invocable_v<_Callable, _Args...>)
23866: {
23866: return std::__invoke(std::forward<_Callable>(__fn),
23866: std::forward<_Args>(__args)...);
23866: }
23866:
23866:
23866: template<typename _MemFunPtr,
23866: bool __is_mem_fn = is_member_function_pointer<_MemFunPtr>::value>
23866: class _Mem_fn_base
23866: : public _Mem_fn_traits<_MemFunPtr>::__maybe_type
23866: {
23866: using _Traits = _Mem_fn_traits<_MemFunPtr>;
23866:
23866: using _Arity = typename _Traits::__arity;
23866: using _Varargs = typename _Traits::__vararg;
23866:
23866: template<typename _Func, typename... _BoundArgs>
23866: friend struct _Bind_check_arity;
23866:
23866: _MemFunPtr _M_pmf;
23866:
23866: public:
23866:
23866: using result_type = typename _Traits::__result_type;
23866:
23866: explicit constexpr
23866: _Mem_fn_base(_MemFunPtr __pmf) noexcept : _M_pmf(__pmf) { }
23866:
23866: template<typename... _Args>
23866:
23866: auto
23866: operator()(_Args&&... __args) const
23866: noexcept(noexcept(
23866: std::__invoke(_M_pmf, std::forward<_Args>(__args)...)))
23866: -> decltype(std::__invoke(_M_pmf, std::forward<_Args>(__args)...))
23866: { return std::__invoke(_M_pmf, std::forward<_Args>(__args)...); }
23866: };
23866:
23866:
23866: template<typename _MemObjPtr>
23866: class _Mem_fn_base<_MemObjPtr, false>
23866: {
23866: using _Arity = integral_constant<size_t, 0>;
23866: using _Varargs = false_type;
23866:
23866: template<typename _Func, typename... _BoundArgs>
23866: friend struct _Bind_check_arity;
23866:
23866: _MemObjPtr _M_pm;
23866:
23866: public:
23866: explicit constexpr
23866: _Mem_fn_base(_MemObjPtr __pm) noexcept : _M_pm(__pm) { }
23866:
23866: template<typename _Tp>
23866:
23866: auto
23866: operator()(_Tp&& __obj) const
23866: noexcept(noexcept(std::__invoke(_M_pm, std::forward<_Tp>(__obj))))
23866: -> decltype(std::__invoke(_M_pm, std::forward<_Tp>(__obj)))
23866: { return std::__invoke(_M_pm, std::forward<_Tp>(__obj)); }
23866: };
23866:
23866: template<typename _MemberPointer>
23866: struct _Mem_fn;
23866:
23866: template<typename _Res, typename _Class>
23866: struct _Mem_fn<_Res _Class::*>
23866: : _Mem_fn_base<_Res _Class::*>
23866: {
23866: using _Mem_fn_base<_Res _Class::*>::_Mem_fn_base;
23866: };
23866: # 167 "/usr/include/c++/10/functional" 3
23866: template<typename _Tp, typename _Class>
23866:
23866: inline _Mem_fn<_Tp _Class::*>
23866: mem_fn(_Tp _Class::* __pm) noexcept
23866: {
23866: return _Mem_fn<_Tp _Class::*>(__pm);
23866: }
23866: # 183 "/usr/include/c++/10/functional" 3
23866: template<typename _Tp>
23866: struct is_bind_expression
23866: : public false_type { };
23866: # 194 "/usr/include/c++/10/functional" 3
23866: template<typename _Tp>
23866: struct is_placeholder
23866: : public integral_constant<int, 0>
23866: { };
23866:
23866:
23866: template <typename _Tp> inline constexpr bool is_bind_expression_v
23866: = is_bind_expression<_Tp>::value;
23866: template <typename _Tp> inline constexpr int is_placeholder_v
23866: = is_placeholder<_Tp>::value;
23866:
23866:
23866:
23866:
23866:
23866: template<int _Num> struct _Placeholder { };
23866:
23866:
23866:
23866:
23866:
23866: namespace placeholders
23866: {
23866:
23866:
23866:
23866:
23866: extern const _Placeholder<1> _1;
23866: extern const _Placeholder<2> _2;
23866: extern const _Placeholder<3> _3;
23866: extern const _Placeholder<4> _4;
23866: extern const _Placeholder<5> _5;
23866: extern const _Placeholder<6> _6;
23866: extern const _Placeholder<7> _7;
23866: extern const _Placeholder<8> _8;
23866: extern const _Placeholder<9> _9;
23866: extern const _Placeholder<10> _10;
23866: extern const _Placeholder<11> _11;
23866: extern const _Placeholder<12> _12;
23866: extern const _Placeholder<13> _13;
23866: extern const _Placeholder<14> _14;
23866: extern const _Placeholder<15> _15;
23866: extern const _Placeholder<16> _16;
23866: extern const _Placeholder<17> _17;
23866: extern const _Placeholder<18> _18;
23866: extern const _Placeholder<19> _19;
23866: extern const _Placeholder<20> _20;
23866: extern const _Placeholder<21> _21;
23866: extern const _Placeholder<22> _22;
23866: extern const _Placeholder<23> _23;
23866: extern const _Placeholder<24> _24;
23866: extern const _Placeholder<25> _25;
23866: extern const _Placeholder<26> _26;
23866: extern const _Placeholder<27> _27;
23866: extern const _Placeholder<28> _28;
23866: extern const _Placeholder<29> _29;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<int _Num>
23866: struct is_placeholder<_Placeholder<_Num> >
23866: : public integral_constant<int, _Num>
23866: { };
23866:
23866: template<int _Num>
23866: struct is_placeholder<const _Placeholder<_Num> >
23866: : public integral_constant<int, _Num>
23866: { };
23866:
23866:
23866:
23866: template<std::size_t __i, typename _Tuple>
23866: using _Safe_tuple_element_t
23866: = typename enable_if<(__i < tuple_size<_Tuple>::value),
23866: tuple_element<__i, _Tuple>>::type::type;
23866: # 285 "/usr/include/c++/10/functional" 3
23866: template<typename _Arg,
23866: bool _IsBindExp = is_bind_expression<_Arg>::value,
23866: bool _IsPlaceholder = (is_placeholder<_Arg>::value > 0)>
23866: class _Mu;
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: class _Mu<reference_wrapper<_Tp>, false, false>
23866: {
23866: public:
23866:
23866:
23866:
23866:
23866: template<typename _CVRef, typename _Tuple>
23866:
23866: _Tp&
23866: operator()(_CVRef& __arg, _Tuple&) const volatile
23866: { return __arg.get(); }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Arg>
23866: class _Mu<_Arg, true, false>
23866: {
23866: public:
23866: template<typename _CVArg, typename... _Args>
23866:
23866: auto
23866: operator()(_CVArg& __arg,
23866: tuple<_Args...>& __tuple) const volatile
23866: -> decltype(__arg(declval<_Args>()...))
23866: {
23866:
23866: typedef typename _Build_index_tuple<sizeof...(_Args)>::__type
23866: _Indexes;
23866: return this->__call(__arg, __tuple, _Indexes());
23866: }
23866:
23866: private:
23866:
23866:
23866: template<typename _CVArg, typename... _Args, std::size_t... _Indexes>
23866:
23866: auto
23866: __call(_CVArg& __arg, tuple<_Args...>& __tuple,
23866: const _Index_tuple<_Indexes...>&) const volatile
23866: -> decltype(__arg(declval<_Args>()...))
23866: {
23866: return __arg(std::get<_Indexes>(std::move(__tuple))...);
23866: }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Arg>
23866: class _Mu<_Arg, false, true>
23866: {
23866: public:
23866: template<typename _Tuple>
23866:
23866: _Safe_tuple_element_t<(is_placeholder<_Arg>::value - 1), _Tuple>&&
23866: operator()(const volatile _Arg&, _Tuple& __tuple) const volatile
23866: {
23866: return
23866: ::std::get<(is_placeholder<_Arg>::value - 1)>(std::move(__tuple));
23866: }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Arg>
23866: class _Mu<_Arg, false, false>
23866: {
23866: public:
23866: template<typename _CVArg, typename _Tuple>
23866:
23866: _CVArg&&
23866: operator()(_CVArg&& __arg, _Tuple&) const volatile
23866: { return std::forward<_CVArg>(__arg); }
23866: };
23866:
23866:
23866: template<std::size_t _Ind, typename... _Tp>
23866: inline auto
23866: __volget(volatile tuple<_Tp...>& __tuple)
23866: -> __tuple_element_t<_Ind, tuple<_Tp...>> volatile&
23866: { return std::get<_Ind>(const_cast<tuple<_Tp...>&>(__tuple)); }
23866:
23866:
23866: template<std::size_t _Ind, typename... _Tp>
23866: inline auto
23866: __volget(const volatile tuple<_Tp...>& __tuple)
23866: -> __tuple_element_t<_Ind, tuple<_Tp...>> const volatile&
23866: { return std::get<_Ind>(const_cast<const tuple<_Tp...>&>(__tuple)); }
23866:
23866:
23866: template<typename _Signature>
23866: struct _Bind;
23866:
23866: template<typename _Functor, typename... _Bound_args>
23866: class _Bind<_Functor(_Bound_args...)>
23866: : public _Weak_result_type<_Functor>
23866: {
23866: typedef typename _Build_index_tuple<sizeof...(_Bound_args)>::__type
23866: _Bound_indexes;
23866:
23866: _Functor _M_f;
23866: tuple<_Bound_args...> _M_bound_args;
23866:
23866:
23866: template<typename _Result, typename... _Args, std::size_t... _Indexes>
23866:
23866: _Result
23866: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>)
23866: {
23866: return std::__invoke(_M_f,
23866: _Mu<_Bound_args>()(std::get<_Indexes>(_M_bound_args), __args)...
23866: );
23866: }
23866:
23866:
23866: template<typename _Result, typename... _Args, std::size_t... _Indexes>
23866:
23866: _Result
23866: __call_c(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) const
23866: {
23866: return std::__invoke(_M_f,
23866: _Mu<_Bound_args>()(std::get<_Indexes>(_M_bound_args), __args)...
23866: );
23866: }
23866:
23866:
23866: template<typename _Result, typename... _Args, std::size_t... _Indexes>
23866: _Result
23866: __call_v(tuple<_Args...>&& __args,
23866: _Index_tuple<_Indexes...>) volatile
23866: {
23866: return std::__invoke(_M_f,
23866: _Mu<_Bound_args>()(__volget<_Indexes>(_M_bound_args), __args)...
23866: );
23866: }
23866:
23866:
23866: template<typename _Result, typename... _Args, std::size_t... _Indexes>
23866: _Result
23866: __call_c_v(tuple<_Args...>&& __args,
23866: _Index_tuple<_Indexes...>) const volatile
23866: {
23866: return std::__invoke(_M_f,
23866: _Mu<_Bound_args>()(__volget<_Indexes>(_M_bound_args), __args)...
23866: );
23866: }
23866:
23866: template<typename _BoundArg, typename _CallArgs>
23866: using _Mu_type = decltype(
23866: _Mu<typename remove_cv<_BoundArg>::type>()(
23866: std::declval<_BoundArg&>(), std::declval<_CallArgs&>()) );
23866:
23866: template<typename _Fn, typename _CallArgs, typename... _BArgs>
23866: using _Res_type_impl
23866: = typename result_of< _Fn&(_Mu_type<_BArgs, _CallArgs>&&...) >::type;
23866:
23866: template<typename _CallArgs>
23866: using _Res_type = _Res_type_impl<_Functor, _CallArgs, _Bound_args...>;
23866:
23866: template<typename _CallArgs>
23866: using __dependent = typename
23866: enable_if<bool(tuple_size<_CallArgs>::value+1), _Functor>::type;
23866:
23866: template<typename _CallArgs, template<class> class __cv_quals>
23866: using _Res_type_cv = _Res_type_impl<
23866: typename __cv_quals<__dependent<_CallArgs>>::type,
23866: _CallArgs,
23866: typename __cv_quals<_Bound_args>::type...>;
23866:
23866: public:
23866: template<typename... _Args>
23866: explicit
23866: _Bind(const _Functor& __f, _Args&&... __args)
23866: : _M_f(__f), _M_bound_args(std::forward<_Args>(__args)...)
23866: { }
23866:
23866: template<typename... _Args>
23866: explicit
23866: _Bind(_Functor&& __f, _Args&&... __args)
23866: : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
23866: { }
23866:
23866: _Bind(const _Bind&) = default;
23866: _Bind(_Bind&&) = default;
23866:
23866:
23866: template<typename... _Args,
23866: typename _Result = _Res_type<tuple<_Args...>>>
23866:
23866: _Result
23866: operator()(_Args&&... __args)
23866: {
23866: return this->__call<_Result>(
23866: std::forward_as_tuple(std::forward<_Args>(__args)...),
23866: _Bound_indexes());
23866: }
23866:
23866:
23866: template<typename... _Args,
23866: typename _Result = _Res_type_cv<tuple<_Args...>, add_const>>
23866:
23866: _Result
23866: operator()(_Args&&... __args) const
23866: {
23866: return this->__call_c<_Result>(
23866: std::forward_as_tuple(std::forward<_Args>(__args)...),
23866: _Bound_indexes());
23866: }
23866:
23866:
23866: #define _GLIBCXX_DEPR_BIND [[deprecated("std::bind does not support volatile in C++17")]]
23866:
23866:
23866:
23866:
23866:
23866: template<typename... _Args,
23866: typename _Result = _Res_type_cv<tuple<_Args...>, add_volatile>>
23866: [[deprecated("std::bind does not support volatile in C++17")]]
23866: _Result
23866: operator()(_Args&&... __args) volatile
23866: {
23866: return this->__call_v<_Result>(
23866: std::forward_as_tuple(std::forward<_Args>(__args)...),
23866: _Bound_indexes());
23866: }
23866:
23866:
23866: template<typename... _Args,
23866: typename _Result = _Res_type_cv<tuple<_Args...>, add_cv>>
23866: [[deprecated("std::bind does not support volatile in C++17")]]
23866: _Result
23866: operator()(_Args&&... __args) const volatile
23866: {
23866: return this->__call_c_v<_Result>(
23866: std::forward_as_tuple(std::forward<_Args>(__args)...),
23866: _Bound_indexes());
23866: }
23866: };
23866:
23866:
23866: template<typename _Result, typename _Signature>
23866: struct _Bind_result;
23866:
23866: template<typename _Result, typename _Functor, typename... _Bound_args>
23866: class _Bind_result<_Result, _Functor(_Bound_args...)>
23866: {
23866: typedef typename _Build_index_tuple<sizeof...(_Bound_args)>::__type
23866: _Bound_indexes;
23866:
23866: _Functor _M_f;
23866: tuple<_Bound_args...> _M_bound_args;
23866:
23866:
23866: template<typename _Res, typename... _Args, std::size_t... _Indexes>
23866:
23866: _Res
23866: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>)
23866: {
23866: return std::__invoke_r<_Res>(_M_f, _Mu<_Bound_args>()
23866: (std::get<_Indexes>(_M_bound_args), __args)...);
23866: }
23866:
23866:
23866: template<typename _Res, typename... _Args, std::size_t... _Indexes>
23866:
23866: _Res
23866: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) const
23866: {
23866: return std::__invoke_r<_Res>(_M_f, _Mu<_Bound_args>()
23866: (std::get<_Indexes>(_M_bound_args), __args)...);
23866: }
23866:
23866:
23866: template<typename _Res, typename... _Args, std::size_t... _Indexes>
23866:
23866: _Res
23866: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) volatile
23866: {
23866: return std::__invoke_r<_Res>(_M_f, _Mu<_Bound_args>()
23866: (__volget<_Indexes>(_M_bound_args), __args)...);
23866: }
23866:
23866:
23866: template<typename _Res, typename... _Args, std::size_t... _Indexes>
23866:
23866: _Res
23866: __call(tuple<_Args...>&& __args,
23866: _Index_tuple<_Indexes...>) const volatile
23866: {
23866: return std::__invoke_r<_Res>(_M_f, _Mu<_Bound_args>()
23866: (__volget<_Indexes>(_M_bound_args), __args)...);
23866: }
23866:
23866: public:
23866: typedef _Result result_type;
23866:
23866: template<typename... _Args>
23866: explicit
23866: _Bind_result(const _Functor& __f, _Args&&... __args)
23866: : _M_f(__f), _M_bound_args(std::forward<_Args>(__args)...)
23866: { }
23866:
23866: template<typename... _Args>
23866: explicit
23866: _Bind_result(_Functor&& __f, _Args&&... __args)
23866: : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
23866: { }
23866:
23866: _Bind_result(const _Bind_result&) = default;
23866: _Bind_result(_Bind_result&&) = default;
23866:
23866:
23866: template<typename... _Args>
23866:
23866: result_type
23866: operator()(_Args&&... __args)
23866: {
23866: return this->__call<_Result>(
23866: std::forward_as_tuple(std::forward<_Args>(__args)...),
23866: _Bound_indexes());
23866: }
23866:
23866:
23866: template<typename... _Args>
23866:
23866: result_type
23866: operator()(_Args&&... __args) const
23866: {
23866: return this->__call<_Result>(
23866: std::forward_as_tuple(std::forward<_Args>(__args)...),
23866: _Bound_indexes());
23866: }
23866:
23866:
23866: template<typename... _Args>
23866: [[deprecated("std::bind does not support volatile in C++17")]]
23866: result_type
23866: operator()(_Args&&... __args) volatile
23866: {
23866: return this->__call<_Result>(
23866: std::forward_as_tuple(std::forward<_Args>(__args)...),
23866: _Bound_indexes());
23866: }
23866:
23866:
23866: template<typename... _Args>
23866: [[deprecated("std::bind does not support volatile in C++17")]]
23866: result_type
23866: operator()(_Args&&... __args) const volatile
23866: {
23866: return this->__call<_Result>(
23866: std::forward_as_tuple(std::forward<_Args>(__args)...),
23866: _Bound_indexes());
23866: }
23866: };
23866: #undef _GLIBCXX_DEPR_BIND
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Signature>
23866: struct is_bind_expression<_Bind<_Signature> >
23866: : public true_type { };
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Signature>
23866: struct is_bind_expression<const _Bind<_Signature> >
23866: : public true_type { };
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Signature>
23866: struct is_bind_expression<volatile _Bind<_Signature> >
23866: : public true_type { };
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Signature>
23866: struct is_bind_expression<const volatile _Bind<_Signature>>
23866: : public true_type { };
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Result, typename _Signature>
23866: struct is_bind_expression<_Bind_result<_Result, _Signature>>
23866: : public true_type { };
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Result, typename _Signature>
23866: struct is_bind_expression<const _Bind_result<_Result, _Signature>>
23866: : public true_type { };
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Result, typename _Signature>
23866: struct is_bind_expression<volatile _Bind_result<_Result, _Signature>>
23866: : public true_type { };
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Result, typename _Signature>
23866: struct is_bind_expression<const volatile _Bind_result<_Result, _Signature>>
23866: : public true_type { };
23866:
23866: template<typename _Func, typename... _BoundArgs>
23866: struct _Bind_check_arity { };
23866:
23866: template<typename _Ret, typename... _Args, typename... _BoundArgs>
23866: struct _Bind_check_arity<_Ret (*)(_Args...), _BoundArgs...>
23866: {
23866: static_assert(sizeof...(_BoundArgs) == sizeof...(_Args),
23866: "Wrong number of arguments for function");
23866: };
23866:
23866: template<typename _Ret, typename... _Args, typename... _BoundArgs>
23866: struct _Bind_check_arity<_Ret (*)(_Args......), _BoundArgs...>
23866: {
23866: static_assert(sizeof...(_BoundArgs) >= sizeof...(_Args),
23866: "Wrong number of arguments for function");
23866: };
23866:
23866: template<typename _Tp, typename _Class, typename... _BoundArgs>
23866: struct _Bind_check_arity<_Tp _Class::*, _BoundArgs...>
23866: {
23866: using _Arity = typename _Mem_fn<_Tp _Class::*>::_Arity;
23866: using _Varargs = typename _Mem_fn<_Tp _Class::*>::_Varargs;
23866: static_assert(_Varargs::value
23866: ? sizeof...(_BoundArgs) >= _Arity::value + 1
23866: : sizeof...(_BoundArgs) == _Arity::value + 1,
23866: "Wrong number of arguments for pointer-to-member");
23866: };
23866:
23866:
23866:
23866:
23866: template<typename _Tp, typename _Tp2 = typename decay<_Tp>::type>
23866: using __is_socketlike = __or_<is_integral<_Tp2>, is_enum<_Tp2>>;
23866:
23866: template<bool _SocketLike, typename _Func, typename... _BoundArgs>
23866: struct _Bind_helper
23866: : _Bind_check_arity<typename decay<_Func>::type, _BoundArgs...>
23866: {
23866: typedef typename decay<_Func>::type __func_type;
23866: typedef _Bind<__func_type(typename decay<_BoundArgs>::type...)> type;
23866: };
23866:
23866:
23866:
23866:
23866: template<typename _Func, typename... _BoundArgs>
23866: struct _Bind_helper<true, _Func, _BoundArgs...>
23866: { };
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Func, typename... _BoundArgs>
23866: inline typename
23866: _Bind_helper<__is_socketlike<_Func>::value, _Func, _BoundArgs...>::type
23866: bind(_Func&& __f, _BoundArgs&&... __args)
23866: {
23866: typedef _Bind_helper<false, _Func, _BoundArgs...> __helper_type;
23866: return typename __helper_type::type(std::forward<_Func>(__f),
23866: std::forward<_BoundArgs>(__args)...);
23866: }
23866:
23866: template<typename _Result, typename _Func, typename... _BoundArgs>
23866: struct _Bindres_helper
23866: : _Bind_check_arity<typename decay<_Func>::type, _BoundArgs...>
23866: {
23866: typedef typename decay<_Func>::type __functor_type;
23866: typedef _Bind_result<_Result,
23866: __functor_type(typename decay<_BoundArgs>::type...)>
23866: type;
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Result, typename _Func, typename... _BoundArgs>
23866: inline
23866: typename _Bindres_helper<_Result, _Func, _BoundArgs...>::type
23866: bind(_Func&& __f, _BoundArgs&&... __args)
23866: {
23866: typedef _Bindres_helper<_Result, _Func, _BoundArgs...> __helper_type;
23866: return typename __helper_type::type(std::forward<_Func>(__f),
23866: std::forward<_BoundArgs>(__args)...);
23866: }
23866: # 918 "/usr/include/c++/10/functional" 3
23866: template<typename _Fn>
23866: class _Not_fn
23866: {
23866: template<typename _Fn2, typename... _Args>
23866: using __inv_res_t = typename __invoke_result<_Fn2, _Args...>::type;
23866:
23866: template<typename _Tp>
23866: static decltype(!std::declval<_Tp>())
23866: _S_not() noexcept(noexcept(!std::declval<_Tp>()));
23866:
23866: public:
23866: template<typename _Fn2>
23866: constexpr
23866: _Not_fn(_Fn2&& __fn, int)
23866: : _M_fn(std::forward<_Fn2>(__fn)) { }
23866:
23866: _Not_fn(const _Not_fn& __fn) = default;
23866: _Not_fn(_Not_fn&& __fn) = default;
23866: ~_Not_fn() = default;
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_NOT_FN_CALL_OP(_QUALS) template<typename... _Args> _GLIBCXX20_CONSTEXPR decltype(_S_not<__inv_res_t<_Fn _QUALS, _Args...>>()) operator()(_Args&&... __args) _QUALS noexcept(__is_nothrow_invocable<_Fn _QUALS, _Args...>::value && noexcept(_S_not<__inv_res_t<_Fn _QUALS, _Args...>>())) { return !std::__invoke(std::forward< _Fn _QUALS >(_M_fn), std::forward<_Args>(__args)...); }
23866: # 952 "/usr/include/c++/10/functional" 3
23866: template<typename... _Args> decltype(_S_not<__inv_res_t<_Fn &, _Args...>>()) operator()(_Args&&... __args) & noexcept(__is_nothrow_invocable<_Fn &, _Args...>::value && noexcept(_S_not<__inv_res_t<_Fn &, _Args...>>())) { return !std::__invoke(std::forward< _Fn & >(_M_fn), std::forward<_Args>(__args)...); }
23866: template<typename... _Args> decltype(_S_not<__inv_res_t<_Fn const &, _Args...>>()) operator()(_Args&&... __args) const & noexcept(__is_nothrow_invocable<_Fn const &, _Args...>::value && noexcept(_S_not<__inv_res_t<_Fn const &, _Args...>>())) { return !std::__invoke(std::forward< _Fn const & >(_M_fn), std::forward<_Args>(__args)...); }
23866: template<typename... _Args> decltype(_S_not<__inv_res_t<_Fn &&, _Args...>>()) operator()(_Args&&... __args) && noexcept(__is_nothrow_invocable<_Fn &&, _Args...>::value && noexcept(_S_not<__inv_res_t<_Fn &&, _Args...>>())) { return !std::__invoke(std::forward< _Fn && >(_M_fn), std::forward<_Args>(__args)...); }
23866: template<typename... _Args> decltype(_S_not<__inv_res_t<_Fn const &&, _Args...>>()) operator()(_Args&&... __args) const && noexcept(__is_nothrow_invocable<_Fn const &&, _Args...>::value && noexcept(_S_not<__inv_res_t<_Fn const &&, _Args...>>())) { return !std::__invoke(std::forward< _Fn const && >(_M_fn), std::forward<_Args>(__args)...); }
23866: #undef _GLIBCXX_NOT_FN_CALL_OP
23866:
23866: private:
23866: _Fn _M_fn;
23866: };
23866:
23866: template<typename _Tp, typename _Pred>
23866: struct __is_byte_like : false_type { };
23866:
23866: template<typename _Tp>
23866: struct __is_byte_like<_Tp, equal_to<_Tp>>
23866: : __bool_constant<sizeof(_Tp) == 1 && is_integral<_Tp>::value> { };
23866:
23866: template<typename _Tp>
23866: struct __is_byte_like<_Tp, equal_to<void>>
23866: : __bool_constant<sizeof(_Tp) == 1 && is_integral<_Tp>::value> { };
23866:
23866:
23866:
23866: enum class byte : unsigned char;
23866:
23866: template<>
23866: struct __is_byte_like<byte, equal_to<byte>>
23866: : true_type { };
23866:
23866: template<>
23866: struct __is_byte_like<byte, equal_to<void>>
23866: : true_type { };
23866:
23866: #define __cpp_lib_not_fn 201603
23866:
23866: template<typename _Fn>
23866:
23866: inline auto
23866: not_fn(_Fn&& __fn)
23866: noexcept(std::is_nothrow_constructible<std::decay_t<_Fn>, _Fn&&>::value)
23866: {
23866: return _Not_fn<std::decay_t<_Fn>>{std::forward<_Fn>(__fn), 0};
23866: }
23866:
23866:
23866: #define __cpp_lib_boyer_moore_searcher 201603
23866:
23866: template<typename _ForwardIterator1, typename _BinaryPredicate = equal_to<>>
23866: class default_searcher
23866: {
23866: public:
23866:
23866: default_searcher(_ForwardIterator1 __pat_first,
23866: _ForwardIterator1 __pat_last,
23866: _BinaryPredicate __pred = _BinaryPredicate())
23866: : _M_m(__pat_first, __pat_last, std::move(__pred))
23866: { }
23866:
23866: template<typename _ForwardIterator2>
23866:
23866: pair<_ForwardIterator2, _ForwardIterator2>
23866: operator()(_ForwardIterator2 __first, _ForwardIterator2 __last) const
23866: {
23866: _ForwardIterator2 __first_ret =
23866: std::search(__first, __last, std::get<0>(_M_m), std::get<1>(_M_m),
23866: std::get<2>(_M_m));
23866: auto __ret = std::make_pair(__first_ret, __first_ret);
23866: if (__ret.first != __last)
23866: std::advance(__ret.second, std::distance(std::get<0>(_M_m),
23866: std::get<1>(_M_m)));
23866: return __ret;
23866: }
23866:
23866: private:
23866: tuple<_ForwardIterator1, _ForwardIterator1, _BinaryPredicate> _M_m;
23866: };
23866:
23866: template<typename _Key, typename _Tp, typename _Hash, typename _Pred>
23866: struct __boyer_moore_map_base
23866: {
23866: template<typename _RAIter>
23866: __boyer_moore_map_base(_RAIter __pat, size_t __patlen,
23866: _Hash&& __hf, _Pred&& __pred)
23866: : _M_bad_char{ __patlen, std::move(__hf), std::move(__pred) }
23866: {
23866: if (__patlen > 0)
23866: for (__diff_type __i = 0; __i < __patlen - 1; ++__i)
23866: _M_bad_char[__pat[__i]] = __patlen - 1 - __i;
23866: }
23866:
23866: using __diff_type = _Tp;
23866:
23866: __diff_type
23866: _M_lookup(_Key __key, __diff_type __not_found) const
23866: {
23866: auto __iter = _M_bad_char.find(__key);
23866: if (__iter == _M_bad_char.end())
23866: return __not_found;
23866: return __iter->second;
23866: }
23866:
23866: _Pred
23866: _M_pred() const { return _M_bad_char.key_eq(); }
23866:
23866: std::unordered_map<_Key, _Tp, _Hash, _Pred> _M_bad_char;
23866: };
23866:
23866: template<typename _Tp, size_t _Len, typename _Pred>
23866: struct __boyer_moore_array_base
23866: {
23866: template<typename _RAIter, typename _Unused>
23866: __boyer_moore_array_base(_RAIter __pat, size_t __patlen,
23866: _Unused&&, _Pred&& __pred)
23866: : _M_bad_char{ std::array<_Tp, _Len>{}, std::move(__pred) }
23866: {
23866: std::get<0>(_M_bad_char).fill(__patlen);
23866: if (__patlen > 0)
23866: for (__diff_type __i = 0; __i < __patlen - 1; ++__i)
23866: {
23866: auto __ch = __pat[__i];
23866: using _UCh = make_unsigned_t<decltype(__ch)>;
23866: auto __uch = static_cast<_UCh>(__ch);
23866: std::get<0>(_M_bad_char)[__uch] = __patlen - 1 - __i;
23866: }
23866: }
23866:
23866: using __diff_type = _Tp;
23866:
23866: template<typename _Key>
23866: __diff_type
23866: _M_lookup(_Key __key, __diff_type __not_found) const
23866: {
23866: auto __ukey = static_cast<make_unsigned_t<_Key>>(__key);
23866: if (__ukey >= _Len)
23866: return __not_found;
23866: return std::get<0>(_M_bad_char)[__ukey];
23866: }
23866:
23866: const _Pred&
23866: _M_pred() const { return std::get<1>(_M_bad_char); }
23866:
23866: tuple<std::array<_Tp, _Len>, _Pred> _M_bad_char;
23866: };
23866:
23866:
23866:
23866: template<typename _RAIter, typename _Hash, typename _Pred,
23866: typename _Val = typename iterator_traits<_RAIter>::value_type,
23866: typename _Diff = typename iterator_traits<_RAIter>::difference_type>
23866: using __boyer_moore_base_t
23866: = conditional_t<__is_byte_like<_Val, _Pred>::value,
23866: __boyer_moore_array_base<_Diff, 256, _Pred>,
23866: __boyer_moore_map_base<_Val, _Diff, _Hash, _Pred>>;
23866:
23866: template<typename _RAIter, typename _Hash
23866: = hash<typename iterator_traits<_RAIter>::value_type>,
23866: typename _BinaryPredicate = equal_to<>>
23866: class boyer_moore_searcher
23866: : __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate>
23866: {
23866: using _Base = __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate>;
23866: using typename _Base::__diff_type;
23866:
23866: public:
23866: boyer_moore_searcher(_RAIter __pat_first, _RAIter __pat_last,
23866: _Hash __hf = _Hash(),
23866: _BinaryPredicate __pred = _BinaryPredicate());
23866:
23866: template<typename _RandomAccessIterator2>
23866: pair<_RandomAccessIterator2, _RandomAccessIterator2>
23866: operator()(_RandomAccessIterator2 __first,
23866: _RandomAccessIterator2 __last) const;
23866:
23866: private:
23866: bool
23866: _M_is_prefix(_RAIter __word, __diff_type __len,
23866: __diff_type __pos)
23866: {
23866: const auto& __pred = this->_M_pred();
23866: __diff_type __suffixlen = __len - __pos;
23866: for (__diff_type __i = 0; __i < __suffixlen; ++__i)
23866: if (!__pred(__word[__i], __word[__pos + __i]))
23866: return false;
23866: return true;
23866: }
23866:
23866: __diff_type
23866: _M_suffix_length(_RAIter __word, __diff_type __len,
23866: __diff_type __pos)
23866: {
23866: const auto& __pred = this->_M_pred();
23866: __diff_type __i = 0;
23866: while (__pred(__word[__pos - __i], __word[__len - 1 - __i])
23866: && __i < __pos)
23866: {
23866: ++__i;
23866: }
23866: return __i;
23866: }
23866:
23866: template<typename _Tp>
23866: __diff_type
23866: _M_bad_char_shift(_Tp __c) const
23866: { return this->_M_lookup(__c, _M_pat_end - _M_pat); }
23866:
23866: _RAIter _M_pat;
23866: _RAIter _M_pat_end;
23866: std::vector<__diff_type> _M_good_suffix;
23866: };
23866:
23866: template<typename _RAIter, typename _Hash
23866: = hash<typename iterator_traits<_RAIter>::value_type>,
23866: typename _BinaryPredicate = equal_to<>>
23866: class boyer_moore_horspool_searcher
23866: : __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate>
23866: {
23866: using _Base = __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate>;
23866: using typename _Base::__diff_type;
23866:
23866: public:
23866: boyer_moore_horspool_searcher(_RAIter __pat,
23866: _RAIter __pat_end,
23866: _Hash __hf = _Hash(),
23866: _BinaryPredicate __pred
23866: = _BinaryPredicate())
23866: : _Base(__pat, __pat_end - __pat, std::move(__hf), std::move(__pred)),
23866: _M_pat(__pat), _M_pat_end(__pat_end)
23866: { }
23866:
23866: template<typename _RandomAccessIterator2>
23866: pair<_RandomAccessIterator2, _RandomAccessIterator2>
23866: operator()(_RandomAccessIterator2 __first,
23866: _RandomAccessIterator2 __last) const
23866: {
23866: const auto& __pred = this->_M_pred();
23866: auto __patlen = _M_pat_end - _M_pat;
23866: if (__patlen == 0)
23866: return std::make_pair(__first, __first);
23866: auto __len = __last - __first;
23866: while (__len >= __patlen)
23866: {
23866: for (auto __scan = __patlen - 1;
23866: __pred(__first[__scan], _M_pat[__scan]); --__scan)
23866: if (__scan == 0)
23866: return std::make_pair(__first, __first + __patlen);
23866: auto __shift = _M_bad_char_shift(__first[__patlen - 1]);
23866: __len -= __shift;
23866: __first += __shift;
23866: }
23866: return std::make_pair(__last, __last);
23866: }
23866:
23866: private:
23866: template<typename _Tp>
23866: __diff_type
23866: _M_bad_char_shift(_Tp __c) const
23866: { return this->_M_lookup(__c, _M_pat_end - _M_pat); }
23866:
23866: _RAIter _M_pat;
23866: _RAIter _M_pat_end;
23866: };
23866:
23866: template<typename _RAIter, typename _Hash, typename _BinaryPredicate>
23866: boyer_moore_searcher<_RAIter, _Hash, _BinaryPredicate>::
23866: boyer_moore_searcher(_RAIter __pat, _RAIter __pat_end,
23866: _Hash __hf, _BinaryPredicate __pred)
23866: : _Base(__pat, __pat_end - __pat, std::move(__hf), std::move(__pred)),
23866: _M_pat(__pat), _M_pat_end(__pat_end), _M_good_suffix(__pat_end - __pat)
23866: {
23866: auto __patlen = __pat_end - __pat;
23866: if (__patlen == 0)
23866: return;
23866: __diff_type __last_prefix = __patlen - 1;
23866: for (__diff_type __p = __patlen - 1; __p >= 0; --__p)
23866: {
23866: if (_M_is_prefix(__pat, __patlen, __p + 1))
23866: __last_prefix = __p + 1;
23866: _M_good_suffix[__p] = __last_prefix + (__patlen - 1 - __p);
23866: }
23866: for (__diff_type __p = 0; __p < __patlen - 1; ++__p)
23866: {
23866: auto __slen = _M_suffix_length(__pat, __patlen, __p);
23866: auto __pos = __patlen - 1 - __slen;
23866: if (!__pred(__pat[__p - __slen], __pat[__pos]))
23866: _M_good_suffix[__pos] = __patlen - 1 - __p + __slen;
23866: }
23866: }
23866:
23866: template<typename _RAIter, typename _Hash, typename _BinaryPredicate>
23866: template<typename _RandomAccessIterator2>
23866: pair<_RandomAccessIterator2, _RandomAccessIterator2>
23866: boyer_moore_searcher<_RAIter, _Hash, _BinaryPredicate>::
23866: operator()(_RandomAccessIterator2 __first,
23866: _RandomAccessIterator2 __last) const
23866: {
23866: auto __patlen = _M_pat_end - _M_pat;
23866: if (__patlen == 0)
23866: return std::make_pair(__first, __first);
23866: const auto& __pred = this->_M_pred();
23866: __diff_type __i = __patlen - 1;
23866: auto __stringlen = __last - __first;
23866: while (__i < __stringlen)
23866: {
23866: __diff_type __j = __patlen - 1;
23866: while (__j >= 0 && __pred(__first[__i], _M_pat[__j]))
23866: {
23866: --__i;
23866: --__j;
23866: }
23866: if (__j < 0)
23866: {
23866: const auto __match = __first + __i + 1;
23866: return std::make_pair(__match, __match + __patlen);
23866: }
23866: __i += std::max(_M_bad_char_shift(__first[__i]),
23866: _M_good_suffix[__j]);
23866: }
23866: return std::make_pair(__last, __last);
23866: }
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 14 "/usr/include/c++/10/pstl/glue_algorithm_defs.h" 2 3
23866:
23866: # 1 "/usr/include/c++/10/pstl/execution_defs.h" 1 3
23866: # 11 "/usr/include/c++/10/pstl/execution_defs.h" 3
23866: #define _PSTL_EXECUTION_POLICY_DEFS_H
23866:
23866:
23866:
23866: namespace __pstl
23866: {
23866: namespace execution
23866: {
23866: inline namespace v1
23866: {
23866:
23866:
23866: class sequenced_policy
23866: {
23866: public:
23866:
23866: static constexpr std::false_type
23866: __allow_unsequenced()
23866: {
23866: return std::false_type{};
23866: }
23866: static constexpr std::false_type
23866: __allow_vector()
23866: {
23866: return std::false_type{};
23866: }
23866: static constexpr std::false_type
23866: __allow_parallel()
23866: {
23866: return std::false_type{};
23866: }
23866: };
23866:
23866:
23866: class parallel_policy
23866: {
23866: public:
23866:
23866: static constexpr std::false_type
23866: __allow_unsequenced()
23866: {
23866: return std::false_type{};
23866: }
23866: static constexpr std::false_type
23866: __allow_vector()
23866: {
23866: return std::false_type{};
23866: }
23866: static constexpr std::true_type
23866: __allow_parallel()
23866: {
23866: return std::true_type{};
23866: }
23866: };
23866:
23866:
23866: class parallel_unsequenced_policy
23866: {
23866: public:
23866:
23866: static constexpr std::true_type
23866: __allow_unsequenced()
23866: {
23866: return std::true_type{};
23866: }
23866: static constexpr std::true_type
23866: __allow_vector()
23866: {
23866: return std::true_type{};
23866: }
23866: static constexpr std::true_type
23866: __allow_parallel()
23866: {
23866: return std::true_type{};
23866: }
23866: };
23866:
23866: class unsequenced_policy
23866: {
23866: public:
23866:
23866: static constexpr std::true_type
23866: __allow_unsequenced()
23866: {
23866: return std::true_type{};
23866: }
23866: static constexpr std::true_type
23866: __allow_vector()
23866: {
23866: return std::true_type{};
23866: }
23866: static constexpr std::false_type
23866: __allow_parallel()
23866: {
23866: return std::false_type{};
23866: }
23866: };
23866:
23866:
23866: constexpr sequenced_policy seq{};
23866: constexpr parallel_policy par{};
23866: constexpr parallel_unsequenced_policy par_unseq{};
23866: constexpr unsequenced_policy unseq{};
23866:
23866:
23866: template <class _Tp>
23866: struct is_execution_policy : std::false_type
23866: {
23866: };
23866:
23866: template <>
23866: struct is_execution_policy<__pstl::execution::sequenced_policy> : std::true_type
23866: {
23866: };
23866: template <>
23866: struct is_execution_policy<__pstl::execution::parallel_policy> : std::true_type
23866: {
23866: };
23866: template <>
23866: struct is_execution_policy<__pstl::execution::parallel_unsequenced_policy> : std::true_type
23866: {
23866: };
23866: template <>
23866: struct is_execution_policy<__pstl::execution::unsequenced_policy> : std::true_type
23866: {
23866: };
23866:
23866:
23866: template <class _Tp>
23866: constexpr bool is_execution_policy_v = __pstl::execution::is_execution_policy<_Tp>::value;
23866:
23866:
23866: }
23866: }
23866:
23866: namespace __internal
23866: {
23866: template <class _ExecPolicy, class _Tp>
23866:
23866: using __enable_if_execution_policy =
23866: typename std::enable_if<__pstl::execution::is_execution_policy<std::__remove_cvref_t<_ExecPolicy>>::value,
23866: _Tp>::type;
23866:
23866:
23866:
23866:
23866:
23866: }
23866:
23866: }
23866: # 16 "/usr/include/c++/10/pstl/glue_algorithm_defs.h" 2 3
23866:
23866: namespace std
23866: {
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Predicate>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool>
23866: any_of(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Predicate>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool>
23866: all_of(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Predicate>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool>
23866: none_of(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Function>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void>
23866: for_each(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Function __f);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Size, class _Function>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: for_each_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size __n, _Function __f);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Predicate>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: find_if(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Predicate>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: find_if_not(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Tp>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: find(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __value);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator1>
23866: find_end(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __s_first,
23866: _ForwardIterator2 __s_last, _BinaryPredicate __pred);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator1>
23866: find_end(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __s_first,
23866: _ForwardIterator2 __s_last);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator1>
23866: find_first_of(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last,
23866: _ForwardIterator2 __s_first, _ForwardIterator2 __s_last, _BinaryPredicate __pred);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator1>
23866: find_first_of(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last,
23866: _ForwardIterator2 __s_first, _ForwardIterator2 __s_last);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: adjacent_find(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _BinaryPredicate>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: adjacent_find(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _BinaryPredicate __pred);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Tp>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy,
23866: typename iterator_traits<_ForwardIterator>::difference_type>
23866: count(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __value);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Predicate>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy,
23866: typename iterator_traits<_ForwardIterator>::difference_type>
23866: count_if(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator1>
23866: search(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __s_first,
23866: _ForwardIterator2 __s_last, _BinaryPredicate __pred);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator1>
23866: search(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __s_first,
23866: _ForwardIterator2 __s_last);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Size, class _Tp, class _BinaryPredicate>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: search_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Size __count,
23866: const _Tp& __value, _BinaryPredicate __pred);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Size, class _Tp>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: search_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Size __count,
23866: const _Tp& __value);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
23866: copy(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __result);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _Size, class _ForwardIterator2>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
23866: copy_n(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _Size __n, _ForwardIterator2 __result);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Predicate>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
23866: copy_if(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 result,
23866: _Predicate __pred);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
23866: swap_ranges(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1,
23866: _ForwardIterator2 __first2);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _UnaryOperation>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
23866: transform(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __result,
23866: _UnaryOperation __op);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _ForwardIterator,
23866: class _BinaryOperation>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: transform(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2,
23866: _ForwardIterator __result, _BinaryOperation __op);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _UnaryPredicate, class _Tp>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void>
23866: replace_if(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _UnaryPredicate __pred,
23866: const _Tp& __new_value);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Tp>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void>
23866: replace(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __old_value,
23866: const _Tp& __new_value);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _UnaryPredicate, class _Tp>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
23866: replace_copy_if(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last,
23866: _ForwardIterator2 __result, _UnaryPredicate __pred, const _Tp& __new_value);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Tp>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
23866: replace_copy(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __result,
23866: const _Tp& __old_value, const _Tp& __new_value);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Tp>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void>
23866: fill(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __value);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Size, class _Tp>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: fill_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size __count, const _Tp& __value);
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Generator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void>
23866: generate(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Generator __g);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Size, class _Generator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: generate_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size count, _Generator __g);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Predicate>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
23866: remove_copy_if(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last,
23866: _ForwardIterator2 __result, _Predicate __pred);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Tp>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
23866: remove_copy(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __result,
23866: const _Tp& __value);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _UnaryPredicate>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: remove_if(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _UnaryPredicate __pred);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Tp>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: remove(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __value);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _BinaryPredicate>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: unique(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _BinaryPredicate __pred);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: unique(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
23866: unique_copy(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __result,
23866: _BinaryPredicate __pred);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
23866: unique_copy(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __result);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _BidirectionalIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void>
23866: reverse(_ExecutionPolicy&& __exec, _BidirectionalIterator __first, _BidirectionalIterator __last);
23866:
23866: template <class _ExecutionPolicy, class _BidirectionalIterator, class _ForwardIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: reverse_copy(_ExecutionPolicy&& __exec, _BidirectionalIterator __first, _BidirectionalIterator __last,
23866: _ForwardIterator __d_first);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: rotate(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
23866: rotate_copy(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __middle, _ForwardIterator1 __last,
23866: _ForwardIterator2 __result);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _UnaryPredicate>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool>
23866: is_partitioned(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _UnaryPredicate __pred);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _UnaryPredicate>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: partition(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _UnaryPredicate __pred);
23866:
23866: template <class _ExecutionPolicy, class _BidirectionalIterator, class _UnaryPredicate>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _BidirectionalIterator>
23866: stable_partition(_ExecutionPolicy&& __exec, _BidirectionalIterator __first, _BidirectionalIterator __last,
23866: _UnaryPredicate __pred);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _ForwardIterator1, class _ForwardIterator2,
23866: class _UnaryPredicate>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, std::pair<_ForwardIterator1, _ForwardIterator2>>
23866: partition_copy(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last,
23866: _ForwardIterator1 __out_true, _ForwardIterator2 __out_false, _UnaryPredicate __pred);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _RandomAccessIterator, class _Compare>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void>
23866: sort(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp);
23866:
23866: template <class _ExecutionPolicy, class _RandomAccessIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void>
23866: sort(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _RandomAccessIterator, class _Compare>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void>
23866: stable_sort(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp);
23866:
23866: template <class _ExecutionPolicy, class _RandomAccessIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void>
23866: stable_sort(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, std::pair<_ForwardIterator1, _ForwardIterator2>>
23866: mismatch(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2,
23866: _ForwardIterator2 __last2, _BinaryPredicate __pred);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, std::pair<_ForwardIterator1, _ForwardIterator2>>
23866: mismatch(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2,
23866: _BinaryPredicate __pred);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, std::pair<_ForwardIterator1, _ForwardIterator2>>
23866: mismatch(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2,
23866: _ForwardIterator2 __last2);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, std::pair<_ForwardIterator1, _ForwardIterator2>>
23866: mismatch(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool>
23866: equal(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2,
23866: _BinaryPredicate __p);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool>
23866: equal(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool>
23866: equal(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2,
23866: _ForwardIterator2 __last2, _BinaryPredicate __p);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool>
23866: equal(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2,
23866: _ForwardIterator2 __last2);
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
23866: move(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __d_first);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _RandomAccessIterator, class _Compare>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void>
23866: partial_sort(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __middle,
23866: _RandomAccessIterator __last, _Compare __comp);
23866:
23866: template <class _ExecutionPolicy, class _RandomAccessIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void>
23866: partial_sort(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __middle,
23866: _RandomAccessIterator __last);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _RandomAccessIterator, class _Compare>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _RandomAccessIterator>
23866: partial_sort_copy(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last,
23866: _RandomAccessIterator __d_first, _RandomAccessIterator __d_last, _Compare __comp);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _RandomAccessIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _RandomAccessIterator>
23866: partial_sort_copy(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last,
23866: _RandomAccessIterator __d_first, _RandomAccessIterator __d_last);
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Compare>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: is_sorted_until(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Compare __comp);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: is_sorted_until(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Compare>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool>
23866: is_sorted(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Compare __comp);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool>
23866: is_sorted(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _RandomAccessIterator, class _Compare>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void>
23866: nth_element(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __nth,
23866: _RandomAccessIterator __last, _Compare __comp);
23866:
23866: template <class _ExecutionPolicy, class _RandomAccessIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void>
23866: nth_element(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __nth,
23866: _RandomAccessIterator __last);
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _ForwardIterator,
23866: class _Compare>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: merge(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2,
23866: _ForwardIterator2 __last2, _ForwardIterator __d_first, _Compare __comp);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _ForwardIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: merge(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2,
23866: _ForwardIterator2 __last2, _ForwardIterator __d_first);
23866:
23866: template <class _ExecutionPolicy, class _BidirectionalIterator, class _Compare>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void>
23866: inplace_merge(_ExecutionPolicy&& __exec, _BidirectionalIterator __first, _BidirectionalIterator __middle,
23866: _BidirectionalIterator __last, _Compare __comp);
23866:
23866: template <class _ExecutionPolicy, class _BidirectionalIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void>
23866: inplace_merge(_ExecutionPolicy&& __exec, _BidirectionalIterator __first, _BidirectionalIterator __middle,
23866: _BidirectionalIterator __last);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Compare>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool>
23866: includes(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2,
23866: _ForwardIterator2 __last2, _Compare __comp);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool>
23866: includes(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2,
23866: _ForwardIterator2 __last2);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _ForwardIterator,
23866: class _Compare>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: set_union(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2,
23866: _ForwardIterator2 __last2, _ForwardIterator __result, _Compare __comp);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _ForwardIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: set_union(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2,
23866: _ForwardIterator2 __last2, _ForwardIterator __result);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _ForwardIterator,
23866: class _Compare>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: set_intersection(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1,
23866: _ForwardIterator2 __first2, _ForwardIterator2 __last2, _ForwardIterator __result, _Compare __comp);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _ForwardIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: set_intersection(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1,
23866: _ForwardIterator2 __first2, _ForwardIterator2 __last2, _ForwardIterator __result);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _ForwardIterator,
23866: class _Compare>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: set_difference(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1,
23866: _ForwardIterator2 __first2, _ForwardIterator2 __last2, _ForwardIterator __result, _Compare __comp);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _ForwardIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: set_difference(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1,
23866: _ForwardIterator2 __first2, _ForwardIterator2 __last2, _ForwardIterator __result);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _ForwardIterator,
23866: class _Compare>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: set_symmetric_difference(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1,
23866: _ForwardIterator2 __first2, _ForwardIterator2 __last2, _ForwardIterator result,
23866: _Compare __comp);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _ForwardIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: set_symmetric_difference(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1,
23866: _ForwardIterator2 __first2, _ForwardIterator2 __last2, _ForwardIterator __result);
23866:
23866:
23866: template <class _ExecutionPolicy, class _RandomAccessIterator, class _Compare>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _RandomAccessIterator>
23866: is_heap_until(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp);
23866:
23866: template <class _ExecutionPolicy, class _RandomAccessIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _RandomAccessIterator>
23866: is_heap_until(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last);
23866:
23866: template <class _ExecutionPolicy, class _RandomAccessIterator, class _Compare>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool>
23866: is_heap(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp);
23866:
23866: template <class _ExecutionPolicy, class _RandomAccessIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool>
23866: is_heap(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Compare>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: min_element(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Compare __comp);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: min_element(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Compare>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: max_element(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Compare __comp);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: max_element(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Compare>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, std::pair<_ForwardIterator, _ForwardIterator>>
23866: minmax_element(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Compare __comp);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, std::pair<_ForwardIterator, _ForwardIterator>>
23866: minmax_element(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Compare>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool>
23866: lexicographical_compare(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1,
23866: _ForwardIterator2 __first2, _ForwardIterator2 __last2, _Compare __comp);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool>
23866: lexicographical_compare(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1,
23866: _ForwardIterator2 __first2, _ForwardIterator2 __last2);
23866:
23866: }
23866: # 75 "/usr/include/c++/10/algorithm" 2 3
23866: #define _PSTL_ALGORITHM_FORWARD_DECLARED 1
23866:
23866:
23866:
23866: #define __cpp_lib_parallel_algorithm 201603L
23866: # 22 "src/common/common.h" 2
23866: # 1 "/usr/include/c++/10/cassert" 1 3
23866: # 41 "/usr/include/c++/10/cassert" 3
23866:
23866: # 42 "/usr/include/c++/10/cassert" 3
23866:
23866:
23866: # 1 "/usr/include/assert.h" 1 3 4
23866: # 34 "/usr/include/assert.h" 3 4
23866: #define _ASSERT_H 1
23866:
23866:
23866:
23866: #define __ASSERT_VOID_CAST static_cast<void>
23866: # 65 "/usr/include/assert.h" 3 4
23866: #define _ASSERT_H_DECLS
23866: extern "C" {
23866:
23866:
23866: extern void __assert_fail (const char *__assertion, const char *__file,
23866: unsigned int __line, const char *__function)
23866: throw () __attribute__ ((__noreturn__));
23866:
23866:
23866: extern void __assert_perror_fail (int __errnum, const char *__file,
23866: unsigned int __line, const char *__function)
23866: throw () __attribute__ ((__noreturn__));
23866:
23866:
23866:
23866:
23866: extern void __assert (const char *__assertion, const char *__file, int __line)
23866: throw () __attribute__ ((__noreturn__));
23866:
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define assert(expr) (static_cast <bool> (expr) ? void (0) : __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 117 "/usr/include/assert.h" 3 4
23866: #define assert_perror(errnum) (!(errnum) ? __ASSERT_VOID_CAST (0) : __assert_perror_fail ((errnum), __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 129 "/usr/include/assert.h" 3 4
23866: #define __ASSERT_FUNCTION __extension__ __PRETTY_FUNCTION__
23866: # 45 "/usr/include/c++/10/cassert" 2 3
23866: # 23 "src/common/common.h" 2
23866: # 1 "/usr/include/c++/10/cstdint" 1 3
23866: # 30 "/usr/include/c++/10/cstdint" 3
23866: #define _GLIBCXX_CSTDINT 1
23866:
23866:
23866: # 33 "/usr/include/c++/10/cstdint" 3
23866: # 41 "/usr/include/c++/10/cstdint" 3
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stdint.h" 1 3 4
23866:
23866:
23866:
23866: #undef __STDC_LIMIT_MACROS
23866: #define __STDC_LIMIT_MACROS
23866: #undef __STDC_CONSTANT_MACROS
23866: #define __STDC_CONSTANT_MACROS
23866:
23866: # 1 "/usr/include/stdint.h" 1 3 4
23866: # 23 "/usr/include/stdint.h" 3 4
23866: #define _STDINT_H 1
23866:
23866: #define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4
23866: # 31 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 3 4
23866: #undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
23866:
23866:
23866:
23866:
23866:
23866: #undef __GLIBC_USE_LIB_EXT2
23866:
23866:
23866: #define __GLIBC_USE_LIB_EXT2 1
23866: # 49 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 3 4
23866: #undef __GLIBC_USE_IEC_60559_BFP_EXT
23866:
23866: #define __GLIBC_USE_IEC_60559_BFP_EXT 1
23866:
23866:
23866:
23866: #undef __GLIBC_USE_IEC_60559_BFP_EXT_C2X
23866:
23866: #define __GLIBC_USE_IEC_60559_BFP_EXT_C2X 1
23866: # 66 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 3 4
23866: #undef __GLIBC_USE_IEC_60559_FUNCS_EXT
23866:
23866: #define __GLIBC_USE_IEC_60559_FUNCS_EXT 1
23866:
23866:
23866:
23866: #undef __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X
23866:
23866: #define __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X 1
23866:
23866:
23866:
23866:
23866:
23866:
23866: #undef __GLIBC_USE_IEC_60559_TYPES_EXT
23866:
23866: #define __GLIBC_USE_IEC_60559_TYPES_EXT 1
23866: # 27 "/usr/include/stdint.h" 2 3 4
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/wchar.h" 1 3 4
23866: # 20 "/usr/include/arm-linux-gnueabihf/bits/wchar.h" 3 4
23866: #define _BITS_WCHAR_H 1
23866: # 34 "/usr/include/arm-linux-gnueabihf/bits/wchar.h" 3 4
23866: #define __WCHAR_MAX __WCHAR_MAX__
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __WCHAR_MIN __WCHAR_MIN__
23866: # 29 "/usr/include/stdint.h" 2 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4
23866: # 18 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 3 4
23866: #define __WORDSIZE 32
23866: #define __WORDSIZE_TIME64_COMPAT32 0
23866: #define __WORDSIZE32_SIZE_ULONG 0
23866: #define __WORDSIZE32_PTRDIFF_LONG 0
23866: # 30 "/usr/include/stdint.h" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdint-uintn.h" 1 3 4
23866: # 20 "/usr/include/arm-linux-gnueabihf/bits/stdint-uintn.h" 3 4
23866: #define _BITS_STDINT_UINTN_H 1
23866:
23866:
23866:
23866: typedef __uint8_t uint8_t;
23866: typedef __uint16_t uint16_t;
23866: typedef __uint32_t uint32_t;
23866: typedef __uint64_t uint64_t;
23866: # 38 "/usr/include/stdint.h" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: typedef __int_least8_t int_least8_t;
23866: typedef __int_least16_t int_least16_t;
23866: typedef __int_least32_t int_least32_t;
23866: typedef __int_least64_t int_least64_t;
23866:
23866:
23866: typedef __uint_least8_t uint_least8_t;
23866: typedef __uint_least16_t uint_least16_t;
23866: typedef __uint_least32_t uint_least32_t;
23866: typedef __uint_least64_t uint_least64_t;
23866:
23866:
23866:
23866:
23866:
23866: typedef signed char int_fast8_t;
23866:
23866:
23866:
23866:
23866:
23866: typedef int int_fast16_t;
23866: typedef int int_fast32_t;
23866: __extension__
23866: typedef long long int int_fast64_t;
23866:
23866:
23866:
23866: typedef unsigned char uint_fast8_t;
23866:
23866:
23866:
23866:
23866:
23866: typedef unsigned int uint_fast16_t;
23866: typedef unsigned int uint_fast32_t;
23866: __extension__
23866: typedef unsigned long long int uint_fast64_t;
23866: # 93 "/usr/include/stdint.h" 3 4
23866: typedef int intptr_t;
23866: #define __intptr_t_defined
23866:
23866: typedef unsigned int uintptr_t;
23866:
23866:
23866:
23866:
23866: typedef __intmax_t intmax_t;
23866: typedef __uintmax_t uintmax_t;
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __INT64_C(c) c ## LL
23866: #define __UINT64_C(c) c ## ULL
23866:
23866:
23866:
23866:
23866:
23866: #define INT8_MIN (-128)
23866: #define INT16_MIN (-32767-1)
23866: #define INT32_MIN (-2147483647-1)
23866: #define INT64_MIN (-__INT64_C(9223372036854775807)-1)
23866:
23866: #define INT8_MAX (127)
23866: #define INT16_MAX (32767)
23866: #define INT32_MAX (2147483647)
23866: #define INT64_MAX (__INT64_C(9223372036854775807))
23866:
23866:
23866: #define UINT8_MAX (255)
23866: #define UINT16_MAX (65535)
23866: #define UINT32_MAX (4294967295U)
23866: #define UINT64_MAX (__UINT64_C(18446744073709551615))
23866:
23866:
23866:
23866: #define INT_LEAST8_MIN (-128)
23866: #define INT_LEAST16_MIN (-32767-1)
23866: #define INT_LEAST32_MIN (-2147483647-1)
23866: #define INT_LEAST64_MIN (-__INT64_C(9223372036854775807)-1)
23866:
23866: #define INT_LEAST8_MAX (127)
23866: #define INT_LEAST16_MAX (32767)
23866: #define INT_LEAST32_MAX (2147483647)
23866: #define INT_LEAST64_MAX (__INT64_C(9223372036854775807))
23866:
23866:
23866: #define UINT_LEAST8_MAX (255)
23866: #define UINT_LEAST16_MAX (65535)
23866: #define UINT_LEAST32_MAX (4294967295U)
23866: #define UINT_LEAST64_MAX (__UINT64_C(18446744073709551615))
23866:
23866:
23866:
23866: #define INT_FAST8_MIN (-128)
23866:
23866:
23866:
23866:
23866: #define INT_FAST16_MIN (-2147483647-1)
23866: #define INT_FAST32_MIN (-2147483647-1)
23866:
23866: #define INT_FAST64_MIN (-__INT64_C(9223372036854775807)-1)
23866:
23866: #define INT_FAST8_MAX (127)
23866:
23866:
23866:
23866:
23866: #define INT_FAST16_MAX (2147483647)
23866: #define INT_FAST32_MAX (2147483647)
23866:
23866: #define INT_FAST64_MAX (__INT64_C(9223372036854775807))
23866:
23866:
23866: #define UINT_FAST8_MAX (255)
23866:
23866:
23866:
23866:
23866: #define UINT_FAST16_MAX (4294967295U)
23866: #define UINT_FAST32_MAX (4294967295U)
23866:
23866: #define UINT_FAST64_MAX (__UINT64_C(18446744073709551615))
23866: # 190 "/usr/include/stdint.h" 3 4
23866: #define INTPTR_MIN (-2147483647-1)
23866: #define INTPTR_MAX (2147483647)
23866: #define UINTPTR_MAX (4294967295U)
23866:
23866:
23866:
23866:
23866: #define INTMAX_MIN (-__INT64_C(9223372036854775807)-1)
23866:
23866: #define INTMAX_MAX (__INT64_C(9223372036854775807))
23866:
23866:
23866: #define UINTMAX_MAX (__UINT64_C(18446744073709551615))
23866: # 216 "/usr/include/stdint.h" 3 4
23866: #define PTRDIFF_MIN (-2147483647-1)
23866: #define PTRDIFF_MAX (2147483647)
23866:
23866:
23866:
23866:
23866: #define SIG_ATOMIC_MIN (-2147483647-1)
23866: #define SIG_ATOMIC_MAX (2147483647)
23866: # 232 "/usr/include/stdint.h" 3 4
23866: #define SIZE_MAX (4294967295U)
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define WCHAR_MIN __WCHAR_MIN
23866: #define WCHAR_MAX __WCHAR_MAX
23866:
23866:
23866:
23866: #define WINT_MIN (0u)
23866: #define WINT_MAX (4294967295u)
23866:
23866:
23866: #define INT8_C(c) c
23866: #define INT16_C(c) c
23866: #define INT32_C(c) c
23866:
23866:
23866:
23866: #define INT64_C(c) c ## LL
23866:
23866:
23866:
23866: #define UINT8_C(c) c
23866: #define UINT16_C(c) c
23866: #define UINT32_C(c) c ## U
23866:
23866:
23866:
23866: #define UINT64_C(c) c ## ULL
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define INTMAX_C(c) c ## LL
23866: #define UINTMAX_C(c) c ## ULL
23866:
23866:
23866:
23866:
23866: #define INT8_WIDTH 8
23866: #define UINT8_WIDTH 8
23866: #define INT16_WIDTH 16
23866: #define UINT16_WIDTH 16
23866: #define INT32_WIDTH 32
23866: #define UINT32_WIDTH 32
23866: #define INT64_WIDTH 64
23866: #define UINT64_WIDTH 64
23866:
23866: #define INT_LEAST8_WIDTH 8
23866: #define UINT_LEAST8_WIDTH 8
23866: #define INT_LEAST16_WIDTH 16
23866: #define UINT_LEAST16_WIDTH 16
23866: #define INT_LEAST32_WIDTH 32
23866: #define UINT_LEAST32_WIDTH 32
23866: #define INT_LEAST64_WIDTH 64
23866: #define UINT_LEAST64_WIDTH 64
23866:
23866: #define INT_FAST8_WIDTH 8
23866: #define UINT_FAST8_WIDTH 8
23866: #define INT_FAST16_WIDTH __WORDSIZE
23866: #define UINT_FAST16_WIDTH __WORDSIZE
23866: #define INT_FAST32_WIDTH __WORDSIZE
23866: #define UINT_FAST32_WIDTH __WORDSIZE
23866: #define INT_FAST64_WIDTH 64
23866: #define UINT_FAST64_WIDTH 64
23866:
23866: #define INTPTR_WIDTH __WORDSIZE
23866: #define UINTPTR_WIDTH __WORDSIZE
23866:
23866: #define INTMAX_WIDTH 64
23866: #define UINTMAX_WIDTH 64
23866:
23866: #define PTRDIFF_WIDTH __WORDSIZE
23866: #define SIG_ATOMIC_WIDTH 32
23866: #define SIZE_WIDTH __WORDSIZE
23866: #define WCHAR_WIDTH 32
23866: #define WINT_WIDTH 32
23866: # 10 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stdint.h" 2 3 4
23866:
23866:
23866:
23866: #define _GCC_WRAP_STDINT_H
23866: # 42 "/usr/include/c++/10/cstdint" 2 3
23866:
23866:
23866: namespace std
23866: {
23866:
23866: using ::int8_t;
23866: using ::int16_t;
23866: using ::int32_t;
23866: using ::int64_t;
23866:
23866: using ::int_fast8_t;
23866: using ::int_fast16_t;
23866: using ::int_fast32_t;
23866: using ::int_fast64_t;
23866:
23866: using ::int_least8_t;
23866: using ::int_least16_t;
23866: using ::int_least32_t;
23866: using ::int_least64_t;
23866:
23866: using ::intmax_t;
23866: using ::intptr_t;
23866:
23866: using ::uint8_t;
23866: using ::uint16_t;
23866: using ::uint32_t;
23866: using ::uint64_t;
23866:
23866: using ::uint_fast8_t;
23866: using ::uint_fast16_t;
23866: using ::uint_fast32_t;
23866: using ::uint_fast64_t;
23866:
23866: using ::uint_least8_t;
23866: using ::uint_least16_t;
23866: using ::uint_least32_t;
23866: using ::uint_least64_t;
23866:
23866: using ::uintmax_t;
23866: using ::uintptr_t;
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 24 "src/common/common.h" 2
23866: # 1 "/usr/include/c++/10/cstring" 1 3
23866: # 39 "/usr/include/c++/10/cstring" 3
23866:
23866: # 40 "/usr/include/c++/10/cstring" 3
23866:
23866:
23866: # 1 "/usr/include/string.h" 1 3 4
23866: # 23 "/usr/include/string.h" 3 4
23866: #define _STRING_H 1
23866:
23866: #define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4
23866: # 31 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 3 4
23866: #undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
23866:
23866:
23866:
23866:
23866:
23866: #undef __GLIBC_USE_LIB_EXT2
23866:
23866:
23866: #define __GLIBC_USE_LIB_EXT2 1
23866: # 49 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 3 4
23866: #undef __GLIBC_USE_IEC_60559_BFP_EXT
23866:
23866: #define __GLIBC_USE_IEC_60559_BFP_EXT 1
23866:
23866:
23866:
23866: #undef __GLIBC_USE_IEC_60559_BFP_EXT_C2X
23866:
23866: #define __GLIBC_USE_IEC_60559_BFP_EXT_C2X 1
23866: # 66 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 3 4
23866: #undef __GLIBC_USE_IEC_60559_FUNCS_EXT
23866:
23866: #define __GLIBC_USE_IEC_60559_FUNCS_EXT 1
23866:
23866:
23866:
23866: #undef __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X
23866:
23866: #define __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X 1
23866:
23866:
23866:
23866:
23866:
23866:
23866: #undef __GLIBC_USE_IEC_60559_TYPES_EXT
23866:
23866: #define __GLIBC_USE_IEC_60559_TYPES_EXT 1
23866: # 27 "/usr/include/string.h" 2 3 4
23866:
23866: extern "C" {
23866:
23866:
23866: #define __need_size_t
23866: #define __need_NULL
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 1 3 4
23866: # 155 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_ptrdiff_t
23866: # 231 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_size_t
23866: # 340 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_wchar_t
23866: # 390 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef NULL
23866:
23866: #define NULL __null
23866: # 401 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_NULL
23866:
23866:
23866:
23866:
23866: #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
23866: # 34 "/usr/include/string.h" 2 3 4
23866:
23866:
23866:
23866:
23866: #define __CORRECT_ISO_CPP_STRING_H_PROTO
23866:
23866:
23866:
23866:
23866: extern void *memcpy (void *__restrict __dest, const void *__restrict __src,
23866: size_t __n) throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern void *memmove (void *__dest, const void *__src, size_t __n)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866:
23866:
23866:
23866: extern void *memccpy (void *__restrict __dest, const void *__restrict __src,
23866: int __c, size_t __n)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866:
23866:
23866: extern void *memset (void *__s, int __c, size_t __n) throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int memcmp (const void *__s1, const void *__s2, size_t __n)
23866: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866:
23866: extern "C++"
23866: {
23866: extern void *memchr (void *__s, int __c, size_t __n)
23866: throw () __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
23866: extern const void *memchr (const void *__s, int __c, size_t __n)
23866: throw () __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) void *
23866: memchr (void *__s, int __c, size_t __n) throw ()
23866: {
23866: return __builtin_memchr (__s, __c, __n);
23866: }
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const void *
23866: memchr (const void *__s, int __c, size_t __n) throw ()
23866: {
23866: return __builtin_memchr (__s, __c, __n);
23866: }
23866:
23866: }
23866: # 99 "/usr/include/string.h" 3 4
23866: extern "C++" void *rawmemchr (void *__s, int __c)
23866: throw () __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
23866: extern "C++" const void *rawmemchr (const void *__s, int __c)
23866: throw () __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern "C++" void *memrchr (void *__s, int __c, size_t __n)
23866: throw () __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
23866: extern "C++" const void *memrchr (const void *__s, int __c, size_t __n)
23866: throw () __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
23866: # 122 "/usr/include/string.h" 3 4
23866: extern char *strcpy (char *__restrict __dest, const char *__restrict __src)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866: extern char *strncpy (char *__restrict __dest,
23866: const char *__restrict __src, size_t __n)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern char *strcat (char *__restrict __dest, const char *__restrict __src)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866: extern char *strncat (char *__restrict __dest, const char *__restrict __src,
23866: size_t __n) throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern int strcmp (const char *__s1, const char *__s2)
23866: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
23866:
23866: extern int strncmp (const char *__s1, const char *__s2, size_t __n)
23866: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern int strcoll (const char *__s1, const char *__s2)
23866: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
23866:
23866: extern size_t strxfrm (char *__restrict __dest,
23866: const char *__restrict __src, size_t __n)
23866: throw () __attribute__ ((__nonnull__ (2)));
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int strcoll_l (const char *__s1, const char *__s2, locale_t __l)
23866: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
23866:
23866:
23866: extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n,
23866: locale_t __l) throw () __attribute__ ((__nonnull__ (2, 4)));
23866:
23866:
23866:
23866:
23866:
23866: extern char *strdup (const char *__s)
23866: throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern char *strndup (const char *__string, size_t __n)
23866: throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866:
23866: #define strdupa(s) (__extension__ ({ const char *__old = (s); size_t __len = strlen (__old) + 1; char *__new = (char *) __builtin_alloca (__len); (char *) memcpy (__new, __old, __len); }))
23866: # 191 "/usr/include/string.h" 3 4
23866: #define strndupa(s,n) (__extension__ ({ const char *__old = (s); size_t __len = strnlen (__old, (n)); char *__new = (char *) __builtin_alloca (__len + 1); __new[__len] = '\0'; (char *) memcpy (__new, __old, __len); }))
23866: # 204 "/usr/include/string.h" 3 4
23866: extern "C++"
23866: {
23866: extern char *strchr (char *__s, int __c)
23866: throw () __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
23866: extern const char *strchr (const char *__s, int __c)
23866: throw () __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char *
23866: strchr (char *__s, int __c) throw ()
23866: {
23866: return __builtin_strchr (__s, __c);
23866: }
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char *
23866: strchr (const char *__s, int __c) throw ()
23866: {
23866: return __builtin_strchr (__s, __c);
23866: }
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern "C++"
23866: {
23866: extern char *strrchr (char *__s, int __c)
23866: throw () __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
23866: extern const char *strrchr (const char *__s, int __c)
23866: throw () __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char *
23866: strrchr (char *__s, int __c) throw ()
23866: {
23866: return __builtin_strrchr (__s, __c);
23866: }
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char *
23866: strrchr (const char *__s, int __c) throw ()
23866: {
23866: return __builtin_strrchr (__s, __c);
23866: }
23866:
23866: }
23866: # 261 "/usr/include/string.h" 3 4
23866: extern "C++" char *strchrnul (char *__s, int __c)
23866: throw () __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
23866: extern "C++" const char *strchrnul (const char *__s, int __c)
23866: throw () __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
23866: # 273 "/usr/include/string.h" 3 4
23866: extern size_t strcspn (const char *__s, const char *__reject)
23866: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern size_t strspn (const char *__s, const char *__accept)
23866: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern "C++"
23866: {
23866: extern char *strpbrk (char *__s, const char *__accept)
23866: throw () __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
23866: extern const char *strpbrk (const char *__s, const char *__accept)
23866: throw () __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char *
23866: strpbrk (char *__s, const char *__accept) throw ()
23866: {
23866: return __builtin_strpbrk (__s, __accept);
23866: }
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char *
23866: strpbrk (const char *__s, const char *__accept) throw ()
23866: {
23866: return __builtin_strpbrk (__s, __accept);
23866: }
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern "C++"
23866: {
23866: extern char *strstr (char *__haystack, const char *__needle)
23866: throw () __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
23866: extern const char *strstr (const char *__haystack, const char *__needle)
23866: throw () __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char *
23866: strstr (char *__haystack, const char *__needle) throw ()
23866: {
23866: return __builtin_strstr (__haystack, __needle);
23866: }
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char *
23866: strstr (const char *__haystack, const char *__needle) throw ()
23866: {
23866: return __builtin_strstr (__haystack, __needle);
23866: }
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern char *strtok (char *__restrict __s, const char *__restrict __delim)
23866: throw () __attribute__ ((__nonnull__ (2)));
23866:
23866:
23866:
23866: extern char *__strtok_r (char *__restrict __s,
23866: const char *__restrict __delim,
23866: char **__restrict __save_ptr)
23866: throw () __attribute__ ((__nonnull__ (2, 3)));
23866:
23866: extern char *strtok_r (char *__restrict __s, const char *__restrict __delim,
23866: char **__restrict __save_ptr)
23866: throw () __attribute__ ((__nonnull__ (2, 3)));
23866:
23866:
23866:
23866:
23866:
23866: extern "C++" char *strcasestr (char *__haystack, const char *__needle)
23866: throw () __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
23866: extern "C++" const char *strcasestr (const char *__haystack,
23866: const char *__needle)
23866: throw () __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
23866: # 369 "/usr/include/string.h" 3 4
23866: extern void *memmem (const void *__haystack, size_t __haystacklen,
23866: const void *__needle, size_t __needlelen)
23866: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3)));
23866:
23866:
23866:
23866: extern void *__mempcpy (void *__restrict __dest,
23866: const void *__restrict __src, size_t __n)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866: extern void *mempcpy (void *__restrict __dest,
23866: const void *__restrict __src, size_t __n)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866:
23866:
23866: extern size_t strlen (const char *__s)
23866: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866:
23866: extern size_t strnlen (const char *__string, size_t __maxlen)
23866: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866:
23866: extern char *strerror (int __errnum) throw ();
23866: # 421 "/usr/include/string.h" 3 4
23866: extern char *strerror_r (int __errnum, char *__buf, size_t __buflen)
23866: throw () __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866: extern char *strerror_l (int __errnum, locale_t __l) throw ();
23866:
23866:
23866:
23866: # 1 "/usr/include/strings.h" 1 3 4
23866: # 19 "/usr/include/strings.h" 3 4
23866: #define _STRINGS_H 1
23866:
23866:
23866: #define __need_size_t
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 1 3 4
23866: # 155 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_ptrdiff_t
23866: # 231 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_size_t
23866: # 340 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_wchar_t
23866: # 390 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef NULL
23866:
23866: #define NULL __null
23866: # 401 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_NULL
23866:
23866:
23866:
23866:
23866: #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
23866: # 24 "/usr/include/strings.h" 2 3 4
23866:
23866:
23866:
23866: #define __CORRECT_ISO_CPP_STRINGS_H_PROTO
23866:
23866:
23866: extern "C" {
23866:
23866:
23866:
23866: extern int bcmp (const void *__s1, const void *__s2, size_t __n)
23866: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern void bcopy (const void *__src, void *__dest, size_t __n)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern void bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866: extern "C++"
23866: {
23866: extern char *index (char *__s, int __c)
23866: throw () __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
23866: extern const char *index (const char *__s, int __c)
23866: throw () __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char *
23866: index (char *__s, int __c) throw ()
23866: {
23866: return __builtin_index (__s, __c);
23866: }
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char *
23866: index (const char *__s, int __c) throw ()
23866: {
23866: return __builtin_index (__s, __c);
23866: }
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern "C++"
23866: {
23866: extern char *rindex (char *__s, int __c)
23866: throw () __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
23866: extern const char *rindex (const char *__s, int __c)
23866: throw () __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char *
23866: rindex (char *__s, int __c) throw ()
23866: {
23866: return __builtin_rindex (__s, __c);
23866: }
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char *
23866: rindex (const char *__s, int __c) throw ()
23866: {
23866: return __builtin_rindex (__s, __c);
23866: }
23866:
23866: }
23866: # 104 "/usr/include/strings.h" 3 4
23866: extern int ffs (int __i) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866:
23866:
23866: extern int ffsl (long int __l) throw () __attribute__ ((__const__));
23866: __extension__ extern int ffsll (long long int __ll)
23866: throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866: extern int strcasecmp (const char *__s1, const char *__s2)
23866: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern int strncasecmp (const char *__s1, const char *__s2, size_t __n)
23866: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int strcasecmp_l (const char *__s1, const char *__s2, locale_t __loc)
23866: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
23866:
23866:
23866:
23866: extern int strncasecmp_l (const char *__s1, const char *__s2,
23866: size_t __n, locale_t __loc)
23866: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4)));
23866:
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/strings_fortified.h" 1 3 4
23866: # 20 "/usr/include/arm-linux-gnueabihf/bits/strings_fortified.h" 3 4
23866: #define __STRINGS_FORTIFIED 1
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void
23866: __attribute__ ((__leaf__)) bcopy (const void *__src, void *__dest, size_t __len) throw ()
23866: {
23866: (void) __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));
23866: }
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void
23866: __attribute__ ((__leaf__)) bzero (void *__dest, size_t __len) throw ()
23866: {
23866: (void) __builtin___memset_chk (__dest, '\0', __len, __builtin_object_size (__dest, 0));
23866: }
23866: # 145 "/usr/include/strings.h" 2 3 4
23866: # 433 "/usr/include/string.h" 2 3 4
23866:
23866:
23866:
23866: extern void explicit_bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866: extern char *strsep (char **__restrict __stringp,
23866: const char *__restrict __delim)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866:
23866:
23866: extern char *strsignal (int __sig) throw ();
23866:
23866:
23866: extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866: extern char *stpcpy (char *__restrict __dest, const char *__restrict __src)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866:
23866: extern char *__stpncpy (char *__restrict __dest,
23866: const char *__restrict __src, size_t __n)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866: extern char *stpncpy (char *__restrict __dest,
23866: const char *__restrict __src, size_t __n)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866:
23866:
23866: extern int strverscmp (const char *__s1, const char *__s2)
23866: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern char *strfry (char *__string) throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern void *memfrob (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern "C++" char *basename (char *__filename)
23866: throw () __asm ("basename") __attribute__ ((__nonnull__ (1)));
23866: extern "C++" const char *basename (const char *__filename)
23866: throw () __asm ("basename") __attribute__ ((__nonnull__ (1)));
23866: # 495 "/usr/include/string.h" 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/string_fortified.h" 1 3 4
23866: # 19 "/usr/include/arm-linux-gnueabihf/bits/string_fortified.h" 3 4
23866: #define _BITS_STRING_FORTIFIED_H 1
23866: # 30 "/usr/include/arm-linux-gnueabihf/bits/string_fortified.h" 3 4
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void *
23866: __attribute__ ((__leaf__)) memcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) throw ()
23866:
23866: {
23866: return __builtin___memcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));
23866: }
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void *
23866: __attribute__ ((__leaf__)) memmove (void *__dest, const void *__src, size_t __len) throw ()
23866: {
23866: return __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));
23866: }
23866:
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void *
23866: __attribute__ ((__leaf__)) mempcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) throw ()
23866:
23866: {
23866: return __builtin___mempcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));
23866: }
23866: # 58 "/usr/include/arm-linux-gnueabihf/bits/string_fortified.h" 3 4
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void *
23866: __attribute__ ((__leaf__)) memset (void *__dest, int __ch, size_t __len) throw ()
23866: {
23866: # 71 "/usr/include/arm-linux-gnueabihf/bits/string_fortified.h" 3 4
23866: return __builtin___memset_chk (__dest, __ch, __len, __builtin_object_size (__dest, 0));
23866: }
23866:
23866:
23866:
23866:
23866: void __explicit_bzero_chk (void *__dest, size_t __len, size_t __destlen)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void
23866: __attribute__ ((__leaf__)) explicit_bzero (void *__dest, size_t __len) throw ()
23866: {
23866: __explicit_bzero_chk (__dest, __len, __builtin_object_size (__dest, 0));
23866: }
23866:
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char *
23866: __attribute__ ((__leaf__)) strcpy (char *__restrict __dest, const char *__restrict __src) throw ()
23866: {
23866: return __builtin___strcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1));
23866: }
23866:
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char *
23866: __attribute__ ((__leaf__)) stpcpy (char *__restrict __dest, const char *__restrict __src) throw ()
23866: {
23866: return __builtin___stpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1));
23866: }
23866:
23866:
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char *
23866: __attribute__ ((__leaf__)) strncpy (char *__restrict __dest, const char *__restrict __src, size_t __len) throw ()
23866:
23866: {
23866: return __builtin___strncpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1));
23866: }
23866:
23866:
23866: extern char *__stpncpy_chk (char *__dest, const char *__src, size_t __n,
23866: size_t __destlen) throw ();
23866: extern char *__stpncpy_alias (char *__dest, const char *__src, size_t __n) throw () __asm__ ("" "stpncpy")
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char *
23866: __attribute__ ((__leaf__)) stpncpy (char *__dest, const char *__src, size_t __n) throw ()
23866: {
23866: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1
23866: && (!__builtin_constant_p (__n) || __n > __builtin_object_size (__dest, 2 > 1)))
23866: return __stpncpy_chk (__dest, __src, __n, __builtin_object_size (__dest, 2 > 1));
23866: return __stpncpy_alias (__dest, __src, __n);
23866: }
23866:
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char *
23866: __attribute__ ((__leaf__)) strcat (char *__restrict __dest, const char *__restrict __src) throw ()
23866: {
23866: return __builtin___strcat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1));
23866: }
23866:
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char *
23866: __attribute__ ((__leaf__)) strncat (char *__restrict __dest, const char *__restrict __src, size_t __len) throw ()
23866:
23866: {
23866: return __builtin___strncat_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1));
23866: }
23866: # 496 "/usr/include/string.h" 2 3 4
23866:
23866:
23866:
23866: }
23866: # 43 "/usr/include/c++/10/cstring" 2 3
23866:
23866:
23866: #define _GLIBCXX_CSTRING 1
23866:
23866:
23866: #undef memchr
23866: #undef memcmp
23866: #undef memcpy
23866: #undef memmove
23866: #undef memset
23866: #undef strcat
23866: #undef strchr
23866: #undef strcmp
23866: #undef strcoll
23866: #undef strcpy
23866: #undef strcspn
23866: #undef strerror
23866: #undef strlen
23866: #undef strncat
23866: #undef strncmp
23866: #undef strncpy
23866: #undef strpbrk
23866: #undef strrchr
23866: #undef strspn
23866: #undef strstr
23866: #undef strtok
23866: #undef strxfrm
23866:
23866: extern "C++"
23866: {
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: using ::memchr;
23866: using ::memcmp;
23866: using ::memcpy;
23866: using ::memmove;
23866: using ::memset;
23866: using ::strcat;
23866: using ::strcmp;
23866: using ::strcoll;
23866: using ::strcpy;
23866: using ::strcspn;
23866: using ::strerror;
23866: using ::strlen;
23866: using ::strncat;
23866: using ::strncmp;
23866: using ::strncpy;
23866: using ::strspn;
23866: using ::strtok;
23866: using ::strxfrm;
23866: using ::strchr;
23866: using ::strpbrk;
23866: using ::strrchr;
23866: using ::strstr;
23866: # 122 "/usr/include/c++/10/cstring" 3
23866:
23866: }
23866: }
23866: # 25 "src/common/common.h" 2
23866: # 1 "/usr/include/c++/10/filesystem" 1 3
23866: # 31 "/usr/include/c++/10/filesystem" 3
23866: #define _GLIBCXX_FILESYSTEM 1
23866:
23866:
23866: # 34 "/usr/include/c++/10/filesystem" 3
23866: # 44 "/usr/include/c++/10/filesystem" 3
23866: # 1 "/usr/include/c++/10/bits/fs_fwd.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/fs_fwd.h" 3
23866: #define _GLIBCXX_FS_FWD_H 1
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/system_error" 1 3
23866: # 30 "/usr/include/c++/10/system_error" 3
23866: #define _GLIBCXX_SYSTEM_ERROR 1
23866:
23866:
23866: # 33 "/usr/include/c++/10/system_error" 3
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/c++/10/bits/error_constants.h" 1 3
23866: # 31 "/usr/include/arm-linux-gnueabihf/c++/10/bits/error_constants.h" 3
23866: #define _GLIBCXX_ERROR_CONSTANTS 1
23866:
23866:
23866: # 1 "/usr/include/c++/10/cerrno" 1 3
23866: # 39 "/usr/include/c++/10/cerrno" 3
23866:
23866: # 40 "/usr/include/c++/10/cerrno" 3
23866:
23866:
23866: # 1 "/usr/include/errno.h" 1 3 4
23866: # 23 "/usr/include/errno.h" 3 4
23866: #define _ERRNO_H 1
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/errno.h" 1 3 4
23866: # 20 "/usr/include/arm-linux-gnueabihf/bits/errno.h" 3 4
23866: #define _BITS_ERRNO_H 1
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/linux/errno.h" 1 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/asm/errno.h" 1 3 4
23866: # 1 "/usr/include/asm-generic/errno.h" 1 3 4
23866:
23866:
23866: #define _ASM_GENERIC_ERRNO_H
23866:
23866: # 1 "/usr/include/asm-generic/errno-base.h" 1 3 4
23866:
23866:
23866: #define _ASM_GENERIC_ERRNO_BASE_H
23866:
23866: #define EPERM 1
23866: #define ENOENT 2
23866: #define ESRCH 3
23866: #define EINTR 4
23866: #define EIO 5
23866: #define ENXIO 6
23866: #define E2BIG 7
23866: #define ENOEXEC 8
23866: #define EBADF 9
23866: #define ECHILD 10
23866: #define EAGAIN 11
23866: #define ENOMEM 12
23866: #define EACCES 13
23866: #define EFAULT 14
23866: #define ENOTBLK 15
23866: #define EBUSY 16
23866: #define EEXIST 17
23866: #define EXDEV 18
23866: #define ENODEV 19
23866: #define ENOTDIR 20
23866: #define EISDIR 21
23866: #define EINVAL 22
23866: #define ENFILE 23
23866: #define EMFILE 24
23866: #define ENOTTY 25
23866: #define ETXTBSY 26
23866: #define EFBIG 27
23866: #define ENOSPC 28
23866: #define ESPIPE 29
23866: #define EROFS 30
23866: #define EMLINK 31
23866: #define EPIPE 32
23866: #define EDOM 33
23866: #define ERANGE 34
23866: # 6 "/usr/include/asm-generic/errno.h" 2 3 4
23866:
23866: #define EDEADLK 35
23866: #define ENAMETOOLONG 36
23866: #define ENOLCK 37
23866: # 18 "/usr/include/asm-generic/errno.h" 3 4
23866: #define ENOSYS 38
23866:
23866: #define ENOTEMPTY 39
23866: #define ELOOP 40
23866: #define EWOULDBLOCK EAGAIN
23866: #define ENOMSG 42
23866: #define EIDRM 43
23866: #define ECHRNG 44
23866: #define EL2NSYNC 45
23866: #define EL3HLT 46
23866: #define EL3RST 47
23866: #define ELNRNG 48
23866: #define EUNATCH 49
23866: #define ENOCSI 50
23866: #define EL2HLT 51
23866: #define EBADE 52
23866: #define EBADR 53
23866: #define EXFULL 54
23866: #define ENOANO 55
23866: #define EBADRQC 56
23866: #define EBADSLT 57
23866:
23866: #define EDEADLOCK EDEADLK
23866:
23866: #define EBFONT 59
23866: #define ENOSTR 60
23866: #define ENODATA 61
23866: #define ETIME 62
23866: #define ENOSR 63
23866: #define ENONET 64
23866: #define ENOPKG 65
23866: #define EREMOTE 66
23866: #define ENOLINK 67
23866: #define EADV 68
23866: #define ESRMNT 69
23866: #define ECOMM 70
23866: #define EPROTO 71
23866: #define EMULTIHOP 72
23866: #define EDOTDOT 73
23866: #define EBADMSG 74
23866: #define EOVERFLOW 75
23866: #define ENOTUNIQ 76
23866: #define EBADFD 77
23866: #define EREMCHG 78
23866: #define ELIBACC 79
23866: #define ELIBBAD 80
23866: #define ELIBSCN 81
23866: #define ELIBMAX 82
23866: #define ELIBEXEC 83
23866: #define EILSEQ 84
23866: #define ERESTART 85
23866: #define ESTRPIPE 86
23866: #define EUSERS 87
23866: #define ENOTSOCK 88
23866: #define EDESTADDRREQ 89
23866: #define EMSGSIZE 90
23866: #define EPROTOTYPE 91
23866: #define ENOPROTOOPT 92
23866: #define EPROTONOSUPPORT 93
23866: #define ESOCKTNOSUPPORT 94
23866: #define EOPNOTSUPP 95
23866: #define EPFNOSUPPORT 96
23866: #define EAFNOSUPPORT 97
23866: #define EADDRINUSE 98
23866: #define EADDRNOTAVAIL 99
23866: #define ENETDOWN 100
23866: #define ENETUNREACH 101
23866: #define ENETRESET 102
23866: #define ECONNABORTED 103
23866: #define ECONNRESET 104
23866: #define ENOBUFS 105
23866: #define EISCONN 106
23866: #define ENOTCONN 107
23866: #define ESHUTDOWN 108
23866: #define ETOOMANYREFS 109
23866: #define ETIMEDOUT 110
23866: #define ECONNREFUSED 111
23866: #define EHOSTDOWN 112
23866: #define EHOSTUNREACH 113
23866: #define EALREADY 114
23866: #define EINPROGRESS 115
23866: #define ESTALE 116
23866: #define EUCLEAN 117
23866: #define ENOTNAM 118
23866: #define ENAVAIL 119
23866: #define EISNAM 120
23866: #define EREMOTEIO 121
23866: #define EDQUOT 122
23866:
23866: #define ENOMEDIUM 123
23866: #define EMEDIUMTYPE 124
23866: #define ECANCELED 125
23866: #define ENOKEY 126
23866: #define EKEYEXPIRED 127
23866: #define EKEYREVOKED 128
23866: #define EKEYREJECTED 129
23866:
23866:
23866: #define EOWNERDEAD 130
23866: #define ENOTRECOVERABLE 131
23866:
23866: #define ERFKILL 132
23866:
23866: #define EHWPOISON 133
23866: # 2 "/usr/include/arm-linux-gnueabihf/asm/errno.h" 2 3 4
23866: # 2 "/usr/include/linux/errno.h" 2 3 4
23866: # 27 "/usr/include/arm-linux-gnueabihf/bits/errno.h" 2 3 4
23866:
23866:
23866:
23866: #define ENOTSUP EOPNOTSUPP
23866: # 29 "/usr/include/errno.h" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: extern "C" {
23866:
23866:
23866: extern int *__errno_location (void) throw () __attribute__ ((__const__));
23866: #define errno (*__errno_location ())
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern char *program_invocation_name;
23866: extern char *program_invocation_short_name;
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/error_t.h" 1 3 4
23866: # 20 "/usr/include/arm-linux-gnueabihf/bits/types/error_t.h" 3 4
23866: #define __error_t_defined 1
23866:
23866: typedef int error_t;
23866: # 49 "/usr/include/errno.h" 2 3 4
23866:
23866:
23866:
23866: }
23866: # 43 "/usr/include/c++/10/cerrno" 2 3
23866:
23866:
23866: #define _GLIBCXX_CERRNO 1
23866: # 35 "/usr/include/arm-linux-gnueabihf/c++/10/bits/error_constants.h" 2 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: enum class errc
23866: {
23866: address_family_not_supported = 97,
23866: address_in_use = 98,
23866: address_not_available = 99,
23866: already_connected = 106,
23866: argument_list_too_long = 7,
23866: argument_out_of_domain = 33,
23866: bad_address = 14,
23866: bad_file_descriptor = 9,
23866:
23866:
23866: bad_message = 74,
23866:
23866:
23866: broken_pipe = 32,
23866: connection_aborted = 103,
23866: connection_already_in_progress = 114,
23866: connection_refused = 111,
23866: connection_reset = 104,
23866: cross_device_link = 18,
23866: destination_address_required = 89,
23866: device_or_resource_busy = 16,
23866: directory_not_empty = 39,
23866: executable_format_error = 8,
23866: file_exists = 17,
23866: file_too_large = 27,
23866: filename_too_long = 36,
23866: function_not_supported = 38,
23866: host_unreachable = 113,
23866:
23866:
23866: identifier_removed = 43,
23866:
23866:
23866: illegal_byte_sequence = 84,
23866: inappropriate_io_control_operation = 25,
23866: interrupted = 4,
23866: invalid_argument = 22,
23866: invalid_seek = 29,
23866: io_error = 5,
23866: is_a_directory = 21,
23866: message_size = 90,
23866: network_down = 100,
23866: network_reset = 102,
23866: network_unreachable = 101,
23866: no_buffer_space = 105,
23866: no_child_process = 10,
23866:
23866:
23866: no_link = 67,
23866:
23866:
23866: no_lock_available = 37,
23866:
23866:
23866: no_message_available = 61,
23866:
23866:
23866: no_message = 42,
23866: no_protocol_option = 92,
23866: no_space_on_device = 28,
23866:
23866:
23866: no_stream_resources = 63,
23866:
23866:
23866: no_such_device_or_address = 6,
23866: no_such_device = 19,
23866: no_such_file_or_directory = 2,
23866: no_such_process = 3,
23866: not_a_directory = 20,
23866: not_a_socket = 88,
23866:
23866:
23866: not_a_stream = 60,
23866:
23866:
23866: not_connected = 107,
23866: not_enough_memory = 12,
23866:
23866:
23866: not_supported = 95,
23866:
23866:
23866:
23866: operation_canceled = 125,
23866:
23866:
23866: operation_in_progress = 115,
23866: operation_not_permitted = 1,
23866: operation_not_supported = 95,
23866: operation_would_block = 11,
23866:
23866:
23866: owner_dead = 130,
23866:
23866:
23866: permission_denied = 13,
23866:
23866:
23866: protocol_error = 71,
23866:
23866:
23866: protocol_not_supported = 93,
23866: read_only_file_system = 30,
23866: resource_deadlock_would_occur = 35,
23866: resource_unavailable_try_again = 11,
23866: result_out_of_range = 34,
23866:
23866:
23866: state_not_recoverable = 131,
23866:
23866:
23866:
23866: stream_timeout = 62,
23866:
23866:
23866:
23866: text_file_busy = 26,
23866:
23866:
23866: timed_out = 110,
23866: too_many_files_open_in_system = 23,
23866: too_many_files_open = 24,
23866: too_many_links = 31,
23866: too_many_symbolic_link_levels = 40,
23866:
23866:
23866: value_too_large = 75,
23866:
23866:
23866: wrong_protocol_type = 91
23866: };
23866:
23866:
23866: }
23866: # 40 "/usr/include/c++/10/system_error" 2 3
23866: # 1 "/usr/include/c++/10/iosfwd" 1 3
23866: # 34 "/usr/include/c++/10/iosfwd" 3
23866: #define _GLIBCXX_IOSFWD 1
23866:
23866:
23866: # 37 "/usr/include/c++/10/iosfwd" 3
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/stringfwd.h" 1 3
23866: # 35 "/usr/include/c++/10/bits/stringfwd.h" 3
23866: #define _STRINGFWD_H 1
23866:
23866:
23866: # 38 "/usr/include/c++/10/bits/stringfwd.h" 3
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<class _CharT>
23866: struct char_traits;
23866:
23866: template<> struct char_traits<char>;
23866:
23866:
23866: template<> struct char_traits<wchar_t>;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<> struct char_traits<char16_t>;
23866: template<> struct char_traits<char32_t>;
23866:
23866:
23866: namespace __cxx11 {
23866:
23866: template<typename _CharT, typename _Traits = char_traits<_CharT>,
23866: typename _Alloc = allocator<_CharT> >
23866: class basic_string;
23866:
23866: }
23866:
23866:
23866: typedef basic_string<char> string;
23866:
23866:
23866:
23866: typedef basic_string<wchar_t> wstring;
23866: # 93 "/usr/include/c++/10/bits/stringfwd.h" 3
23866: typedef basic_string<char16_t> u16string;
23866:
23866:
23866: typedef basic_string<char32_t> u32string;
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 40 "/usr/include/c++/10/iosfwd" 2 3
23866: # 1 "/usr/include/c++/10/bits/postypes.h" 1 3
23866: # 36 "/usr/include/c++/10/bits/postypes.h" 3
23866: #define _GLIBCXX_POSTYPES_H 1
23866:
23866:
23866: # 39 "/usr/include/c++/10/bits/postypes.h" 3
23866:
23866: # 1 "/usr/include/c++/10/cwchar" 1 3
23866: # 39 "/usr/include/c++/10/cwchar" 3
23866:
23866: # 40 "/usr/include/c++/10/cwchar" 3
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/wchar.h" 1 3 4
23866: # 24 "/usr/include/wchar.h" 3 4
23866: #define _WCHAR_H 1
23866:
23866: #define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4
23866: # 31 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 3 4
23866: #undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
23866:
23866:
23866:
23866:
23866:
23866: #undef __GLIBC_USE_LIB_EXT2
23866:
23866:
23866: #define __GLIBC_USE_LIB_EXT2 1
23866: # 49 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 3 4
23866: #undef __GLIBC_USE_IEC_60559_BFP_EXT
23866:
23866: #define __GLIBC_USE_IEC_60559_BFP_EXT 1
23866:
23866:
23866:
23866: #undef __GLIBC_USE_IEC_60559_BFP_EXT_C2X
23866:
23866: #define __GLIBC_USE_IEC_60559_BFP_EXT_C2X 1
23866: # 66 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 3 4
23866: #undef __GLIBC_USE_IEC_60559_FUNCS_EXT
23866:
23866: #define __GLIBC_USE_IEC_60559_FUNCS_EXT 1
23866:
23866:
23866:
23866: #undef __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X
23866:
23866: #define __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X 1
23866:
23866:
23866:
23866:
23866:
23866:
23866: #undef __GLIBC_USE_IEC_60559_TYPES_EXT
23866:
23866: #define __GLIBC_USE_IEC_60559_TYPES_EXT 1
23866: # 28 "/usr/include/wchar.h" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 1 3 4
23866: # 22 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 3 4
23866: #define __HAVE_FLOAT128 0
23866:
23866:
23866:
23866: #define __HAVE_DISTINCT_FLOAT128 0
23866:
23866:
23866:
23866:
23866: #define __HAVE_FLOAT64X 0
23866:
23866:
23866:
23866:
23866:
23866: #define __HAVE_FLOAT64X_LONG_DOUBLE 0
23866:
23866:
23866:
23866:
23866:
23866:
23866: #undef __f128
23866:
23866:
23866:
23866: #undef __CFLOAT128
23866: # 31 "/usr/include/wchar.h" 2 3 4
23866:
23866: #define __need_size_t
23866: #define __need_wchar_t
23866: #define __need_NULL
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 1 3 4
23866: # 155 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_ptrdiff_t
23866: # 231 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_size_t
23866: # 340 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_wchar_t
23866: # 390 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef NULL
23866:
23866: #define NULL __null
23866: # 401 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_NULL
23866:
23866:
23866:
23866:
23866: #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
23866: # 36 "/usr/include/wchar.h" 2 3 4
23866:
23866: #define __need___va_list
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stdarg.h" 1 3 4
23866: # 34 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stdarg.h" 3 4
23866: #undef __need___va_list
23866:
23866:
23866:
23866:
23866: #define __GNUC_VA_LIST
23866: typedef __builtin_va_list __gnuc_va_list;
23866: # 39 "/usr/include/wchar.h" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/wint_t.h" 1 3 4
23866:
23866: #define __wint_t_defined 1
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define _WINT_T 1
23866: # 20 "/usr/include/arm-linux-gnueabihf/bits/types/wint_t.h" 3 4
23866: typedef unsigned int wint_t;
23866: # 42 "/usr/include/wchar.h" 2 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/mbstate_t.h" 1 3 4
23866:
23866: #define __mbstate_t_defined 1
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__mbstate_t.h" 1 3 4
23866:
23866: #define ____mbstate_t_defined 1
23866: # 13 "/usr/include/arm-linux-gnueabihf/bits/types/__mbstate_t.h" 3 4
23866: typedef struct
23866: {
23866: int __count;
23866: union
23866: {
23866: unsigned int __wch;
23866: char __wchb[4];
23866: } __value;
23866: } __mbstate_t;
23866: # 5 "/usr/include/arm-linux-gnueabihf/bits/types/mbstate_t.h" 2 3 4
23866:
23866: typedef __mbstate_t mbstate_t;
23866: # 43 "/usr/include/wchar.h" 2 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__FILE.h" 1 3 4
23866:
23866: #define ____FILE_defined 1
23866:
23866: struct _IO_FILE;
23866: typedef struct _IO_FILE __FILE;
23866: # 44 "/usr/include/wchar.h" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/FILE.h" 1 3 4
23866:
23866: #define __FILE_defined 1
23866:
23866: struct _IO_FILE;
23866:
23866:
23866: typedef struct _IO_FILE FILE;
23866: # 47 "/usr/include/wchar.h" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __CORRECT_ISO_CPP_WCHAR_H_PROTO
23866: # 64 "/usr/include/wchar.h" 3 4
23866: #define WEOF (0xffffffffu)
23866: # 79 "/usr/include/wchar.h" 3 4
23866: extern "C" {
23866:
23866:
23866:
23866: struct tm;
23866:
23866:
23866:
23866: extern wchar_t *wcscpy (wchar_t *__restrict __dest,
23866: const wchar_t *__restrict __src)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern wchar_t *wcsncpy (wchar_t *__restrict __dest,
23866: const wchar_t *__restrict __src, size_t __n)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern wchar_t *wcscat (wchar_t *__restrict __dest,
23866: const wchar_t *__restrict __src)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866: extern wchar_t *wcsncat (wchar_t *__restrict __dest,
23866: const wchar_t *__restrict __src, size_t __n)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern int wcscmp (const wchar_t *__s1, const wchar_t *__s2)
23866: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
23866:
23866: extern int wcsncmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n)
23866: throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866:
23866: extern int wcscasecmp (const wchar_t *__s1, const wchar_t *__s2) throw ();
23866:
23866:
23866: extern int wcsncasecmp (const wchar_t *__s1, const wchar_t *__s2,
23866: size_t __n) throw ();
23866:
23866:
23866:
23866: extern int wcscasecmp_l (const wchar_t *__s1, const wchar_t *__s2,
23866: locale_t __loc) throw ();
23866:
23866: extern int wcsncasecmp_l (const wchar_t *__s1, const wchar_t *__s2,
23866: size_t __n, locale_t __loc) throw ();
23866:
23866:
23866:
23866:
23866: extern int wcscoll (const wchar_t *__s1, const wchar_t *__s2) throw ();
23866:
23866:
23866:
23866: extern size_t wcsxfrm (wchar_t *__restrict __s1,
23866: const wchar_t *__restrict __s2, size_t __n) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int wcscoll_l (const wchar_t *__s1, const wchar_t *__s2,
23866: locale_t __loc) throw ();
23866:
23866:
23866:
23866:
23866: extern size_t wcsxfrm_l (wchar_t *__s1, const wchar_t *__s2,
23866: size_t __n, locale_t __loc) throw ();
23866:
23866:
23866: extern wchar_t *wcsdup (const wchar_t *__s) throw () __attribute__ ((__malloc__));
23866:
23866:
23866:
23866:
23866: extern "C++" wchar_t *wcschr (wchar_t *__wcs, wchar_t __wc)
23866: throw () __asm ("wcschr") __attribute__ ((__pure__));
23866: extern "C++" const wchar_t *wcschr (const wchar_t *__wcs, wchar_t __wc)
23866: throw () __asm ("wcschr") __attribute__ ((__pure__));
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern "C++" wchar_t *wcsrchr (wchar_t *__wcs, wchar_t __wc)
23866: throw () __asm ("wcsrchr") __attribute__ ((__pure__));
23866: extern "C++" const wchar_t *wcsrchr (const wchar_t *__wcs, wchar_t __wc)
23866: throw () __asm ("wcsrchr") __attribute__ ((__pure__));
23866: # 181 "/usr/include/wchar.h" 3 4
23866: extern wchar_t *wcschrnul (const wchar_t *__s, wchar_t __wc)
23866: throw () __attribute__ ((__pure__));
23866:
23866:
23866:
23866:
23866: extern size_t wcscspn (const wchar_t *__wcs, const wchar_t *__reject)
23866: throw () __attribute__ ((__pure__));
23866:
23866:
23866: extern size_t wcsspn (const wchar_t *__wcs, const wchar_t *__accept)
23866: throw () __attribute__ ((__pure__));
23866:
23866:
23866: extern "C++" wchar_t *wcspbrk (wchar_t *__wcs, const wchar_t *__accept)
23866: throw () __asm ("wcspbrk") __attribute__ ((__pure__));
23866: extern "C++" const wchar_t *wcspbrk (const wchar_t *__wcs,
23866: const wchar_t *__accept)
23866: throw () __asm ("wcspbrk") __attribute__ ((__pure__));
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern "C++" wchar_t *wcsstr (wchar_t *__haystack, const wchar_t *__needle)
23866: throw () __asm ("wcsstr") __attribute__ ((__pure__));
23866: extern "C++" const wchar_t *wcsstr (const wchar_t *__haystack,
23866: const wchar_t *__needle)
23866: throw () __asm ("wcsstr") __attribute__ ((__pure__));
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern wchar_t *wcstok (wchar_t *__restrict __s,
23866: const wchar_t *__restrict __delim,
23866: wchar_t **__restrict __ptr) throw ();
23866:
23866:
23866: extern size_t wcslen (const wchar_t *__s) throw () __attribute__ ((__pure__));
23866:
23866:
23866:
23866:
23866: extern "C++" wchar_t *wcswcs (wchar_t *__haystack, const wchar_t *__needle)
23866: throw () __asm ("wcswcs") __attribute__ ((__pure__));
23866: extern "C++" const wchar_t *wcswcs (const wchar_t *__haystack,
23866: const wchar_t *__needle)
23866: throw () __asm ("wcswcs") __attribute__ ((__pure__));
23866: # 240 "/usr/include/wchar.h" 3 4
23866: extern size_t wcsnlen (const wchar_t *__s, size_t __maxlen)
23866: throw () __attribute__ ((__pure__));
23866:
23866:
23866:
23866:
23866:
23866: extern "C++" wchar_t *wmemchr (wchar_t *__s, wchar_t __c, size_t __n)
23866: throw () __asm ("wmemchr") __attribute__ ((__pure__));
23866: extern "C++" const wchar_t *wmemchr (const wchar_t *__s, wchar_t __c,
23866: size_t __n)
23866: throw () __asm ("wmemchr") __attribute__ ((__pure__));
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int wmemcmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n)
23866: throw () __attribute__ ((__pure__));
23866:
23866:
23866: extern wchar_t *wmemcpy (wchar_t *__restrict __s1,
23866: const wchar_t *__restrict __s2, size_t __n) throw ();
23866:
23866:
23866:
23866: extern wchar_t *wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n)
23866: throw ();
23866:
23866:
23866: extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) throw ();
23866:
23866:
23866:
23866:
23866: extern wchar_t *wmempcpy (wchar_t *__restrict __s1,
23866: const wchar_t *__restrict __s2, size_t __n)
23866: throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern wint_t btowc (int __c) throw ();
23866:
23866:
23866:
23866: extern int wctob (wint_t __c) throw ();
23866:
23866:
23866:
23866: extern int mbsinit (const mbstate_t *__ps) throw () __attribute__ ((__pure__));
23866:
23866:
23866:
23866: extern size_t mbrtowc (wchar_t *__restrict __pwc,
23866: const char *__restrict __s, size_t __n,
23866: mbstate_t *__restrict __p) throw ();
23866:
23866:
23866: extern size_t wcrtomb (char *__restrict __s, wchar_t __wc,
23866: mbstate_t *__restrict __ps) throw ();
23866:
23866:
23866: extern size_t __mbrlen (const char *__restrict __s, size_t __n,
23866: mbstate_t *__restrict __ps) throw ();
23866: extern size_t mbrlen (const char *__restrict __s, size_t __n,
23866: mbstate_t *__restrict __ps) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern wint_t __btowc_alias (int __c) __asm ("btowc");
23866: extern __inline __attribute__ ((__gnu_inline__)) wint_t
23866: __attribute__ ((__leaf__)) btowc (int __c) throw ()
23866: { return (__builtin_constant_p (__c) && __c >= '\0' && __c <= '\x7f'
23866: ? (wint_t) __c : __btowc_alias (__c)); }
23866:
23866: extern int __wctob_alias (wint_t __c) __asm ("wctob");
23866: extern __inline __attribute__ ((__gnu_inline__)) int
23866: __attribute__ ((__leaf__)) wctob (wint_t __wc) throw ()
23866: { return (__builtin_constant_p (__wc) && __wc >= L'\0' && __wc <= L'\x7f'
23866: ? (int) __wc : __wctob_alias (__wc)); }
23866:
23866: extern __inline __attribute__ ((__gnu_inline__)) size_t
23866: __attribute__ ((__leaf__)) mbrlen (const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps) throw ()
23866:
23866: { return (__ps != __null
23866: ? mbrtowc (__null, __s, __n, __ps) : __mbrlen (__s, __n, __null)); }
23866:
23866:
23866:
23866:
23866: extern size_t mbsrtowcs (wchar_t *__restrict __dst,
23866: const char **__restrict __src, size_t __len,
23866: mbstate_t *__restrict __ps) throw ();
23866:
23866:
23866:
23866: extern size_t wcsrtombs (char *__restrict __dst,
23866: const wchar_t **__restrict __src, size_t __len,
23866: mbstate_t *__restrict __ps) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern size_t mbsnrtowcs (wchar_t *__restrict __dst,
23866: const char **__restrict __src, size_t __nmc,
23866: size_t __len, mbstate_t *__restrict __ps) throw ();
23866:
23866:
23866:
23866: extern size_t wcsnrtombs (char *__restrict __dst,
23866: const wchar_t **__restrict __src,
23866: size_t __nwc, size_t __len,
23866: mbstate_t *__restrict __ps) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int wcwidth (wchar_t __c) throw ();
23866:
23866:
23866:
23866: extern int wcswidth (const wchar_t *__s, size_t __n) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern double wcstod (const wchar_t *__restrict __nptr,
23866: wchar_t **__restrict __endptr) throw ();
23866:
23866:
23866:
23866: extern float wcstof (const wchar_t *__restrict __nptr,
23866: wchar_t **__restrict __endptr) throw ();
23866: extern long double wcstold (const wchar_t *__restrict __nptr,
23866: wchar_t **__restrict __endptr) throw ();
23866: # 396 "/usr/include/wchar.h" 3 4
23866: extern _Float32 wcstof32 (const wchar_t *__restrict __nptr,
23866: wchar_t **__restrict __endptr) throw ();
23866:
23866:
23866:
23866: extern _Float64 wcstof64 (const wchar_t *__restrict __nptr,
23866: wchar_t **__restrict __endptr) throw ();
23866: # 411 "/usr/include/wchar.h" 3 4
23866: extern _Float32x wcstof32x (const wchar_t *__restrict __nptr,
23866: wchar_t **__restrict __endptr) throw ();
23866: # 428 "/usr/include/wchar.h" 3 4
23866: extern long int wcstol (const wchar_t *__restrict __nptr,
23866: wchar_t **__restrict __endptr, int __base) throw ();
23866:
23866:
23866:
23866: extern unsigned long int wcstoul (const wchar_t *__restrict __nptr,
23866: wchar_t **__restrict __endptr, int __base)
23866: throw ();
23866:
23866:
23866:
23866:
23866: __extension__
23866: extern long long int wcstoll (const wchar_t *__restrict __nptr,
23866: wchar_t **__restrict __endptr, int __base)
23866: throw ();
23866:
23866:
23866:
23866: __extension__
23866: extern unsigned long long int wcstoull (const wchar_t *__restrict __nptr,
23866: wchar_t **__restrict __endptr,
23866: int __base) throw ();
23866:
23866:
23866:
23866:
23866:
23866: __extension__
23866: extern long long int wcstoq (const wchar_t *__restrict __nptr,
23866: wchar_t **__restrict __endptr, int __base)
23866: throw ();
23866:
23866:
23866:
23866: __extension__
23866: extern unsigned long long int wcstouq (const wchar_t *__restrict __nptr,
23866: wchar_t **__restrict __endptr,
23866: int __base) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern long int wcstol_l (const wchar_t *__restrict __nptr,
23866: wchar_t **__restrict __endptr, int __base,
23866: locale_t __loc) throw ();
23866:
23866: extern unsigned long int wcstoul_l (const wchar_t *__restrict __nptr,
23866: wchar_t **__restrict __endptr,
23866: int __base, locale_t __loc) throw ();
23866:
23866: __extension__
23866: extern long long int wcstoll_l (const wchar_t *__restrict __nptr,
23866: wchar_t **__restrict __endptr,
23866: int __base, locale_t __loc) throw ();
23866:
23866: __extension__
23866: extern unsigned long long int wcstoull_l (const wchar_t *__restrict __nptr,
23866: wchar_t **__restrict __endptr,
23866: int __base, locale_t __loc)
23866: throw ();
23866:
23866: extern double wcstod_l (const wchar_t *__restrict __nptr,
23866: wchar_t **__restrict __endptr, locale_t __loc)
23866: throw ();
23866:
23866: extern float wcstof_l (const wchar_t *__restrict __nptr,
23866: wchar_t **__restrict __endptr, locale_t __loc)
23866: throw ();
23866:
23866: extern long double wcstold_l (const wchar_t *__restrict __nptr,
23866: wchar_t **__restrict __endptr,
23866: locale_t __loc) throw ();
23866: # 511 "/usr/include/wchar.h" 3 4
23866: extern _Float32 wcstof32_l (const wchar_t *__restrict __nptr,
23866: wchar_t **__restrict __endptr,
23866: locale_t __loc) throw ();
23866:
23866:
23866:
23866: extern _Float64 wcstof64_l (const wchar_t *__restrict __nptr,
23866: wchar_t **__restrict __endptr,
23866: locale_t __loc) throw ();
23866: # 529 "/usr/include/wchar.h" 3 4
23866: extern _Float32x wcstof32x_l (const wchar_t *__restrict __nptr,
23866: wchar_t **__restrict __endptr,
23866: locale_t __loc) throw ();
23866: # 551 "/usr/include/wchar.h" 3 4
23866: extern wchar_t *wcpcpy (wchar_t *__restrict __dest,
23866: const wchar_t *__restrict __src) throw ();
23866:
23866:
23866:
23866: extern wchar_t *wcpncpy (wchar_t *__restrict __dest,
23866: const wchar_t *__restrict __src, size_t __n)
23866: throw ();
23866: # 567 "/usr/include/wchar.h" 3 4
23866: extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern int fwide (__FILE *__fp, int __mode) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int fwprintf (__FILE *__restrict __stream,
23866: const wchar_t *__restrict __format, ...)
23866: ;
23866:
23866:
23866:
23866:
23866: extern int wprintf (const wchar_t *__restrict __format, ...)
23866: ;
23866:
23866: extern int swprintf (wchar_t *__restrict __s, size_t __n,
23866: const wchar_t *__restrict __format, ...)
23866: throw () ;
23866:
23866:
23866:
23866:
23866:
23866: extern int vfwprintf (__FILE *__restrict __s,
23866: const wchar_t *__restrict __format,
23866: __gnuc_va_list __arg)
23866: ;
23866:
23866:
23866:
23866:
23866: extern int vwprintf (const wchar_t *__restrict __format,
23866: __gnuc_va_list __arg)
23866: ;
23866:
23866:
23866: extern int vswprintf (wchar_t *__restrict __s, size_t __n,
23866: const wchar_t *__restrict __format,
23866: __gnuc_va_list __arg)
23866: throw () ;
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int fwscanf (__FILE *__restrict __stream,
23866: const wchar_t *__restrict __format, ...)
23866: ;
23866:
23866:
23866:
23866:
23866: extern int wscanf (const wchar_t *__restrict __format, ...)
23866: ;
23866:
23866: extern int swscanf (const wchar_t *__restrict __s,
23866: const wchar_t *__restrict __format, ...)
23866: throw () ;
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int fwscanf (__FILE *__restrict __stream, const wchar_t *__restrict __format, ...) __asm__ ("" "__isoc99_fwscanf")
23866:
23866:
23866: ;
23866: extern int wscanf (const wchar_t *__restrict __format, ...) __asm__ ("" "__isoc99_wscanf")
23866:
23866: ;
23866: extern int swscanf (const wchar_t *__restrict __s, const wchar_t *__restrict __format, ...) throw () __asm__ ("" "__isoc99_swscanf")
23866:
23866:
23866: ;
23866: # 671 "/usr/include/wchar.h" 3 4
23866: extern int vfwscanf (__FILE *__restrict __s,
23866: const wchar_t *__restrict __format,
23866: __gnuc_va_list __arg)
23866: ;
23866:
23866:
23866:
23866:
23866: extern int vwscanf (const wchar_t *__restrict __format,
23866: __gnuc_va_list __arg)
23866: ;
23866:
23866: extern int vswscanf (const wchar_t *__restrict __s,
23866: const wchar_t *__restrict __format,
23866: __gnuc_va_list __arg)
23866: throw () ;
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int vfwscanf (__FILE *__restrict __s, const wchar_t *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vfwscanf")
23866:
23866:
23866: ;
23866: extern int vwscanf (const wchar_t *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vwscanf")
23866:
23866: ;
23866: extern int vswscanf (const wchar_t *__restrict __s, const wchar_t *__restrict __format, __gnuc_va_list __arg) throw () __asm__ ("" "__isoc99_vswscanf")
23866:
23866:
23866: ;
23866: # 726 "/usr/include/wchar.h" 3 4
23866: extern wint_t fgetwc (__FILE *__stream);
23866: extern wint_t getwc (__FILE *__stream);
23866:
23866:
23866:
23866:
23866:
23866: extern wint_t getwchar (void);
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern wint_t fputwc (wchar_t __wc, __FILE *__stream);
23866: extern wint_t putwc (wchar_t __wc, __FILE *__stream);
23866:
23866:
23866:
23866:
23866:
23866: extern wint_t putwchar (wchar_t __wc);
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n,
23866: __FILE *__restrict __stream);
23866:
23866:
23866:
23866:
23866:
23866: extern int fputws (const wchar_t *__restrict __ws,
23866: __FILE *__restrict __stream);
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern wint_t ungetwc (wint_t __wc, __FILE *__stream);
23866: # 781 "/usr/include/wchar.h" 3 4
23866: extern wint_t getwc_unlocked (__FILE *__stream);
23866: extern wint_t getwchar_unlocked (void);
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern wint_t fgetwc_unlocked (__FILE *__stream);
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream);
23866: # 807 "/usr/include/wchar.h" 3 4
23866: extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream);
23866: extern wint_t putwchar_unlocked (wchar_t __wc);
23866: # 817 "/usr/include/wchar.h" 3 4
23866: extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n,
23866: __FILE *__restrict __stream);
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int fputws_unlocked (const wchar_t *__restrict __ws,
23866: __FILE *__restrict __stream);
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize,
23866: const wchar_t *__restrict __format,
23866: const struct tm *__restrict __tp) throw ();
23866:
23866:
23866:
23866:
23866: extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize,
23866: const wchar_t *__restrict __format,
23866: const struct tm *__restrict __tp,
23866: locale_t __loc) throw ();
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/wchar2.h" 1 3 4
23866: # 24 "/usr/include/arm-linux-gnueabihf/bits/wchar2.h" 3 4
23866: extern wchar_t *__wmemcpy_chk (wchar_t *__restrict __s1,
23866: const wchar_t *__restrict __s2, size_t __n,
23866: size_t __ns1) throw ();
23866: extern wchar_t *__wmemcpy_alias (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) throw () __asm__ ("" "wmemcpy")
23866:
23866:
23866: ;
23866: extern wchar_t *__wmemcpy_chk_warn (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n, size_t __ns1) throw () __asm__ ("" "__wmemcpy_chk")
23866:
23866:
23866:
23866: __attribute__((__warning__ ("wmemcpy called with length bigger than size of destination " "buffer")))
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t *
23866: __attribute__ ((__leaf__)) wmemcpy (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) throw ()
23866:
23866: {
23866: if (__builtin_object_size (__s1, 0) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__n))
23866: return __wmemcpy_chk (__s1, __s2, __n,
23866: __builtin_object_size (__s1, 0) / sizeof (wchar_t));
23866:
23866: if (__n > __builtin_object_size (__s1, 0) / sizeof (wchar_t))
23866: return __wmemcpy_chk_warn (__s1, __s2, __n,
23866: __builtin_object_size (__s1, 0) / sizeof (wchar_t));
23866: }
23866: return __wmemcpy_alias (__s1, __s2, __n);
23866: }
23866:
23866:
23866: extern wchar_t *__wmemmove_chk (wchar_t *__s1, const wchar_t *__s2,
23866: size_t __n, size_t __ns1) throw ();
23866: extern wchar_t *__wmemmove_alias (wchar_t *__s1, const wchar_t *__s2, size_t __n) throw () __asm__ ("" "wmemmove")
23866:
23866: ;
23866: extern wchar_t *__wmemmove_chk_warn (wchar_t *__s1, const wchar_t *__s2, size_t __n, size_t __ns1) throw () __asm__ ("" "__wmemmove_chk")
23866:
23866:
23866: __attribute__((__warning__ ("wmemmove called with length bigger than size of destination " "buffer")))
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t *
23866: __attribute__ ((__leaf__)) wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n) throw ()
23866: {
23866: if (__builtin_object_size (__s1, 0) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__n))
23866: return __wmemmove_chk (__s1, __s2, __n,
23866: __builtin_object_size (__s1, 0) / sizeof (wchar_t));
23866:
23866: if (__n > __builtin_object_size (__s1, 0) / sizeof (wchar_t))
23866: return __wmemmove_chk_warn (__s1, __s2, __n,
23866: __builtin_object_size (__s1, 0) / sizeof (wchar_t));
23866: }
23866: return __wmemmove_alias (__s1, __s2, __n);
23866: }
23866:
23866:
23866:
23866: extern wchar_t *__wmempcpy_chk (wchar_t *__restrict __s1,
23866: const wchar_t *__restrict __s2, size_t __n,
23866: size_t __ns1) throw ();
23866: extern wchar_t *__wmempcpy_alias (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) throw () __asm__ ("" "wmempcpy")
23866:
23866:
23866: ;
23866: extern wchar_t *__wmempcpy_chk_warn (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n, size_t __ns1) throw () __asm__ ("" "__wmempcpy_chk")
23866:
23866:
23866:
23866: __attribute__((__warning__ ("wmempcpy called with length bigger than size of destination " "buffer")))
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t *
23866: __attribute__ ((__leaf__)) wmempcpy (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) throw ()
23866:
23866: {
23866: if (__builtin_object_size (__s1, 0) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__n))
23866: return __wmempcpy_chk (__s1, __s2, __n,
23866: __builtin_object_size (__s1, 0) / sizeof (wchar_t));
23866:
23866: if (__n > __builtin_object_size (__s1, 0) / sizeof (wchar_t))
23866: return __wmempcpy_chk_warn (__s1, __s2, __n,
23866: __builtin_object_size (__s1, 0) / sizeof (wchar_t));
23866: }
23866: return __wmempcpy_alias (__s1, __s2, __n);
23866: }
23866:
23866:
23866:
23866: extern wchar_t *__wmemset_chk (wchar_t *__s, wchar_t __c, size_t __n,
23866: size_t __ns) throw ();
23866: extern wchar_t *__wmemset_alias (wchar_t *__s, wchar_t __c, size_t __n) throw () __asm__ ("" "wmemset")
23866: ;
23866: extern wchar_t *__wmemset_chk_warn (wchar_t *__s, wchar_t __c, size_t __n, size_t __ns) throw () __asm__ ("" "__wmemset_chk")
23866:
23866:
23866: __attribute__((__warning__ ("wmemset called with length bigger than size of destination " "buffer")))
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t *
23866: __attribute__ ((__leaf__)) wmemset (wchar_t *__s, wchar_t __c, size_t __n) throw ()
23866: {
23866: if (__builtin_object_size (__s, 0) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__n))
23866: return __wmemset_chk (__s, __c, __n, __builtin_object_size (__s, 0) / sizeof (wchar_t));
23866:
23866: if (__n > __builtin_object_size (__s, 0) / sizeof (wchar_t))
23866: return __wmemset_chk_warn (__s, __c, __n,
23866: __builtin_object_size (__s, 0) / sizeof (wchar_t));
23866: }
23866: return __wmemset_alias (__s, __c, __n);
23866: }
23866:
23866:
23866: extern wchar_t *__wcscpy_chk (wchar_t *__restrict __dest,
23866: const wchar_t *__restrict __src,
23866: size_t __n) throw ();
23866: extern wchar_t *__wcscpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () __asm__ ("" "wcscpy")
23866:
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t *
23866: __attribute__ ((__leaf__)) wcscpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw ()
23866: {
23866: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1)
23866: return __wcscpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t));
23866: return __wcscpy_alias (__dest, __src);
23866: }
23866:
23866:
23866: extern wchar_t *__wcpcpy_chk (wchar_t *__restrict __dest,
23866: const wchar_t *__restrict __src,
23866: size_t __destlen) throw ();
23866: extern wchar_t *__wcpcpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () __asm__ ("" "wcpcpy")
23866:
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t *
23866: __attribute__ ((__leaf__)) wcpcpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw ()
23866: {
23866: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1)
23866: return __wcpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t));
23866: return __wcpcpy_alias (__dest, __src);
23866: }
23866:
23866:
23866: extern wchar_t *__wcsncpy_chk (wchar_t *__restrict __dest,
23866: const wchar_t *__restrict __src, size_t __n,
23866: size_t __destlen) throw ();
23866: extern wchar_t *__wcsncpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () __asm__ ("" "wcsncpy")
23866:
23866:
23866: ;
23866: extern wchar_t *__wcsncpy_chk_warn (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n, size_t __destlen) throw () __asm__ ("" "__wcsncpy_chk")
23866:
23866:
23866:
23866: __attribute__((__warning__ ("wcsncpy called with length bigger than size of destination " "buffer")))
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t *
23866: __attribute__ ((__leaf__)) wcsncpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw ()
23866:
23866: {
23866: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__n))
23866: return __wcsncpy_chk (__dest, __src, __n,
23866: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t));
23866: if (__n > __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t))
23866: return __wcsncpy_chk_warn (__dest, __src, __n,
23866: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t));
23866: }
23866: return __wcsncpy_alias (__dest, __src, __n);
23866: }
23866:
23866:
23866: extern wchar_t *__wcpncpy_chk (wchar_t *__restrict __dest,
23866: const wchar_t *__restrict __src, size_t __n,
23866: size_t __destlen) throw ();
23866: extern wchar_t *__wcpncpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () __asm__ ("" "wcpncpy")
23866:
23866:
23866: ;
23866: extern wchar_t *__wcpncpy_chk_warn (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n, size_t __destlen) throw () __asm__ ("" "__wcpncpy_chk")
23866:
23866:
23866:
23866: __attribute__((__warning__ ("wcpncpy called with length bigger than size of destination " "buffer")))
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t *
23866: __attribute__ ((__leaf__)) wcpncpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw ()
23866:
23866: {
23866: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__n))
23866: return __wcpncpy_chk (__dest, __src, __n,
23866: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t));
23866: if (__n > __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t))
23866: return __wcpncpy_chk_warn (__dest, __src, __n,
23866: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t));
23866: }
23866: return __wcpncpy_alias (__dest, __src, __n);
23866: }
23866:
23866:
23866: extern wchar_t *__wcscat_chk (wchar_t *__restrict __dest,
23866: const wchar_t *__restrict __src,
23866: size_t __destlen) throw ();
23866: extern wchar_t *__wcscat_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () __asm__ ("" "wcscat")
23866:
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t *
23866: __attribute__ ((__leaf__)) wcscat (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw ()
23866: {
23866: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1)
23866: return __wcscat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t));
23866: return __wcscat_alias (__dest, __src);
23866: }
23866:
23866:
23866: extern wchar_t *__wcsncat_chk (wchar_t *__restrict __dest,
23866: const wchar_t *__restrict __src,
23866: size_t __n, size_t __destlen) throw ();
23866: extern wchar_t *__wcsncat_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () __asm__ ("" "wcsncat")
23866:
23866:
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t *
23866: __attribute__ ((__leaf__)) wcsncat (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw ()
23866:
23866: {
23866: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1)
23866: return __wcsncat_chk (__dest, __src, __n,
23866: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t));
23866: return __wcsncat_alias (__dest, __src, __n);
23866: }
23866:
23866:
23866: extern int __swprintf_chk (wchar_t *__restrict __s, size_t __n,
23866: int __flag, size_t __s_len,
23866: const wchar_t *__restrict __format, ...)
23866: throw () ;
23866:
23866: extern int __swprintf_alias (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, ...) throw () __asm__ ("" "swprintf")
23866:
23866:
23866: ;
23866:
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int
23866: __attribute__ ((__leaf__)) swprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, ...) throw ()
23866:
23866: {
23866: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 || 2 > 1)
23866: return __swprintf_chk (__s, __n, 2 - 1,
23866: __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t),
23866: __fmt, __builtin_va_arg_pack ());
23866: return __swprintf_alias (__s, __n, __fmt, __builtin_va_arg_pack ());
23866: }
23866: # 303 "/usr/include/arm-linux-gnueabihf/bits/wchar2.h" 3 4
23866: extern int __vswprintf_chk (wchar_t *__restrict __s, size_t __n,
23866: int __flag, size_t __s_len,
23866: const wchar_t *__restrict __format,
23866: __gnuc_va_list __arg)
23866: throw () ;
23866:
23866: extern int __vswprintf_alias (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, __gnuc_va_list __ap) throw () __asm__ ("" "vswprintf")
23866:
23866:
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int
23866: __attribute__ ((__leaf__)) vswprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, __gnuc_va_list __ap) throw ()
23866:
23866: {
23866: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 || 2 > 1)
23866: return __vswprintf_chk (__s, __n, 2 - 1,
23866: __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), __fmt, __ap);
23866: return __vswprintf_alias (__s, __n, __fmt, __ap);
23866: }
23866:
23866:
23866:
23866:
23866: extern int __fwprintf_chk (__FILE *__restrict __stream, int __flag,
23866: const wchar_t *__restrict __format, ...);
23866: extern int __wprintf_chk (int __flag, const wchar_t *__restrict __format,
23866: ...);
23866: extern int __vfwprintf_chk (__FILE *__restrict __stream, int __flag,
23866: const wchar_t *__restrict __format,
23866: __gnuc_va_list __ap);
23866: extern int __vwprintf_chk (int __flag, const wchar_t *__restrict __format,
23866: __gnuc_va_list __ap);
23866:
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int
23866: wprintf (const wchar_t *__restrict __fmt, ...)
23866: {
23866: return __wprintf_chk (2 - 1, __fmt, __builtin_va_arg_pack ());
23866: }
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int
23866: fwprintf (__FILE *__restrict __stream, const wchar_t *__restrict __fmt, ...)
23866: {
23866: return __fwprintf_chk (__stream, 2 - 1, __fmt,
23866: __builtin_va_arg_pack ());
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int
23866: vwprintf (const wchar_t *__restrict __fmt, __gnuc_va_list __ap)
23866: {
23866: return __vwprintf_chk (2 - 1, __fmt, __ap);
23866: }
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int
23866: vfwprintf (__FILE *__restrict __stream,
23866: const wchar_t *__restrict __fmt, __gnuc_va_list __ap)
23866: {
23866: return __vfwprintf_chk (__stream, 2 - 1, __fmt, __ap);
23866: }
23866:
23866:
23866:
23866: extern wchar_t *__fgetws_chk (wchar_t *__restrict __s, size_t __size, int __n,
23866: __FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
23866: extern wchar_t *__fgetws_alias (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) __asm__ ("" "fgetws")
23866:
23866: __attribute__ ((__warn_unused_result__));
23866: extern wchar_t *__fgetws_chk_warn (wchar_t *__restrict __s, size_t __size, int __n, __FILE *__restrict __stream) __asm__ ("" "__fgetws_chk")
23866:
23866:
23866: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgetws called with bigger size than length " "of destination buffer")))
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) wchar_t *
23866: fgetws (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream)
23866: {
23866: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__n) || __n <= 0)
23866: return __fgetws_chk (__s, __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t),
23866: __n, __stream);
23866:
23866: if ((size_t) __n > __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t))
23866: return __fgetws_chk_warn (__s, __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t),
23866: __n, __stream);
23866: }
23866: return __fgetws_alias (__s, __n, __stream);
23866: }
23866:
23866:
23866: extern wchar_t *__fgetws_unlocked_chk (wchar_t *__restrict __s, size_t __size,
23866: int __n, __FILE *__restrict __stream)
23866: __attribute__ ((__warn_unused_result__));
23866: extern wchar_t *__fgetws_unlocked_alias (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) __asm__ ("" "fgetws_unlocked")
23866:
23866:
23866: __attribute__ ((__warn_unused_result__));
23866: extern wchar_t *__fgetws_unlocked_chk_warn (wchar_t *__restrict __s, size_t __size, int __n, __FILE *__restrict __stream) __asm__ ("" "__fgetws_unlocked_chk")
23866:
23866:
23866:
23866: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgetws_unlocked called with bigger size than length " "of destination buffer")))
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) wchar_t *
23866: fgetws_unlocked (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream)
23866: {
23866: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__n) || __n <= 0)
23866: return __fgetws_unlocked_chk (__s, __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t),
23866: __n, __stream);
23866:
23866: if ((size_t) __n > __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t))
23866: return __fgetws_unlocked_chk_warn (__s, __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t),
23866: __n, __stream);
23866: }
23866: return __fgetws_unlocked_alias (__s, __n, __stream);
23866: }
23866:
23866:
23866:
23866: extern size_t __wcrtomb_chk (char *__restrict __s, wchar_t __wchar,
23866: mbstate_t *__restrict __p,
23866: size_t __buflen) throw () __attribute__ ((__warn_unused_result__));
23866: extern size_t __wcrtomb_alias (char *__restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps) throw () __asm__ ("" "wcrtomb")
23866:
23866: __attribute__ ((__warn_unused_result__));
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t
23866: __attribute__ ((__leaf__)) wcrtomb (char *__restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps) throw ()
23866:
23866: {
23866:
23866:
23866:
23866: #define __WCHAR_MB_LEN_MAX 16
23866:
23866:
23866:
23866: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 && 16 > __builtin_object_size (__s, 2 > 1))
23866: return __wcrtomb_chk (__s, __wchar, __ps, __builtin_object_size (__s, 2 > 1));
23866: return __wcrtomb_alias (__s, __wchar, __ps);
23866: }
23866:
23866:
23866: extern size_t __mbsrtowcs_chk (wchar_t *__restrict __dst,
23866: const char **__restrict __src,
23866: size_t __len, mbstate_t *__restrict __ps,
23866: size_t __dstlen) throw ();
23866: extern size_t __mbsrtowcs_alias (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw () __asm__ ("" "mbsrtowcs")
23866:
23866:
23866:
23866: ;
23866: extern size_t __mbsrtowcs_chk_warn (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) throw () __asm__ ("" "__mbsrtowcs_chk")
23866:
23866:
23866:
23866:
23866: __attribute__((__warning__ ("mbsrtowcs called with dst buffer smaller than len " "* sizeof (wchar_t)")))
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t
23866: __attribute__ ((__leaf__)) mbsrtowcs (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw ()
23866:
23866: {
23866: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__len))
23866: return __mbsrtowcs_chk (__dst, __src, __len, __ps,
23866: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t));
23866:
23866: if (__len > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t))
23866: return __mbsrtowcs_chk_warn (__dst, __src, __len, __ps,
23866: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t));
23866: }
23866: return __mbsrtowcs_alias (__dst, __src, __len, __ps);
23866: }
23866:
23866:
23866: extern size_t __wcsrtombs_chk (char *__restrict __dst,
23866: const wchar_t **__restrict __src,
23866: size_t __len, mbstate_t *__restrict __ps,
23866: size_t __dstlen) throw ();
23866: extern size_t __wcsrtombs_alias (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw () __asm__ ("" "wcsrtombs")
23866:
23866:
23866:
23866: ;
23866: extern size_t __wcsrtombs_chk_warn (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) throw () __asm__ ("" "__wcsrtombs_chk")
23866:
23866:
23866:
23866:
23866: __attribute__((__warning__ ("wcsrtombs called with dst buffer smaller than len")));
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t
23866: __attribute__ ((__leaf__)) wcsrtombs (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw ()
23866:
23866: {
23866: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__len))
23866: return __wcsrtombs_chk (__dst, __src, __len, __ps, __builtin_object_size (__dst, 2 > 1));
23866:
23866: if (__len > __builtin_object_size (__dst, 2 > 1))
23866: return __wcsrtombs_chk_warn (__dst, __src, __len, __ps, __builtin_object_size (__dst, 2 > 1));
23866: }
23866: return __wcsrtombs_alias (__dst, __src, __len, __ps);
23866: }
23866:
23866:
23866:
23866: extern size_t __mbsnrtowcs_chk (wchar_t *__restrict __dst,
23866: const char **__restrict __src, size_t __nmc,
23866: size_t __len, mbstate_t *__restrict __ps,
23866: size_t __dstlen) throw ();
23866: extern size_t __mbsnrtowcs_alias (wchar_t *__restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps) throw () __asm__ ("" "mbsnrtowcs")
23866:
23866:
23866:
23866: ;
23866: extern size_t __mbsnrtowcs_chk_warn (wchar_t *__restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) throw () __asm__ ("" "__mbsnrtowcs_chk")
23866:
23866:
23866:
23866:
23866: __attribute__((__warning__ ("mbsnrtowcs called with dst buffer smaller than len " "* sizeof (wchar_t)")))
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t
23866: __attribute__ ((__leaf__)) mbsnrtowcs (wchar_t *__restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps) throw ()
23866:
23866: {
23866: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__len))
23866: return __mbsnrtowcs_chk (__dst, __src, __nmc, __len, __ps,
23866: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t));
23866:
23866: if (__len > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t))
23866: return __mbsnrtowcs_chk_warn (__dst, __src, __nmc, __len, __ps,
23866: __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t));
23866: }
23866: return __mbsnrtowcs_alias (__dst, __src, __nmc, __len, __ps);
23866: }
23866:
23866:
23866: extern size_t __wcsnrtombs_chk (char *__restrict __dst,
23866: const wchar_t **__restrict __src,
23866: size_t __nwc, size_t __len,
23866: mbstate_t *__restrict __ps, size_t __dstlen)
23866: throw ();
23866: extern size_t __wcsnrtombs_alias (char *__restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps) throw () __asm__ ("" "wcsnrtombs")
23866:
23866:
23866:
23866: ;
23866: extern size_t __wcsnrtombs_chk_warn (char *__restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) throw () __asm__ ("" "__wcsnrtombs_chk")
23866:
23866:
23866:
23866:
23866:
23866: __attribute__((__warning__ ("wcsnrtombs called with dst buffer smaller than len")));
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t
23866: __attribute__ ((__leaf__)) wcsnrtombs (char *__restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps) throw ()
23866:
23866: {
23866: if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__len))
23866: return __wcsnrtombs_chk (__dst, __src, __nwc, __len, __ps,
23866: __builtin_object_size (__dst, 2 > 1));
23866:
23866: if (__len > __builtin_object_size (__dst, 2 > 1))
23866: return __wcsnrtombs_chk_warn (__dst, __src, __nwc, __len, __ps,
23866: __builtin_object_size (__dst, 2 > 1));
23866: }
23866: return __wcsnrtombs_alias (__dst, __src, __nwc, __len, __ps);
23866: }
23866: # 850 "/usr/include/wchar.h" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 45 "/usr/include/c++/10/cwchar" 2 3
23866:
23866:
23866:
23866: #define _GLIBCXX_CWCHAR 1
23866: # 62 "/usr/include/c++/10/cwchar" 3
23866: namespace std
23866: {
23866: using ::mbstate_t;
23866: }
23866:
23866:
23866: #undef btowc
23866: #undef fgetwc
23866: #undef fgetws
23866: #undef fputwc
23866: #undef fputws
23866: #undef fwide
23866: #undef fwprintf
23866: #undef fwscanf
23866: #undef getwc
23866: #undef getwchar
23866: #undef mbrlen
23866: #undef mbrtowc
23866: #undef mbsinit
23866: #undef mbsrtowcs
23866: #undef putwc
23866: #undef putwchar
23866: #undef swprintf
23866: #undef swscanf
23866: #undef ungetwc
23866: #undef vfwprintf
23866:
23866: #undef vfwscanf
23866:
23866: #undef vswprintf
23866:
23866: #undef vswscanf
23866:
23866: #undef vwprintf
23866:
23866: #undef vwscanf
23866:
23866: #undef wcrtomb
23866: #undef wcscat
23866: #undef wcschr
23866: #undef wcscmp
23866: #undef wcscoll
23866: #undef wcscpy
23866: #undef wcscspn
23866: #undef wcsftime
23866: #undef wcslen
23866: #undef wcsncat
23866: #undef wcsncmp
23866: #undef wcsncpy
23866: #undef wcspbrk
23866: #undef wcsrchr
23866: #undef wcsrtombs
23866: #undef wcsspn
23866: #undef wcsstr
23866: #undef wcstod
23866:
23866: #undef wcstof
23866:
23866: #undef wcstok
23866: #undef wcstol
23866: #undef wcstoul
23866: #undef wcsxfrm
23866: #undef wctob
23866: #undef wmemchr
23866: #undef wmemcmp
23866: #undef wmemcpy
23866: #undef wmemmove
23866: #undef wmemset
23866: #undef wprintf
23866: #undef wscanf
23866:
23866:
23866:
23866: extern "C++"
23866: {
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: using ::wint_t;
23866:
23866: using ::btowc;
23866: using ::fgetwc;
23866: using ::fgetws;
23866: using ::fputwc;
23866: using ::fputws;
23866: using ::fwide;
23866: using ::fwprintf;
23866: using ::fwscanf;
23866: using ::getwc;
23866: using ::getwchar;
23866: using ::mbrlen;
23866: using ::mbrtowc;
23866: using ::mbsinit;
23866: using ::mbsrtowcs;
23866: using ::putwc;
23866: using ::putwchar;
23866:
23866: using ::swprintf;
23866:
23866: using ::swscanf;
23866: using ::ungetwc;
23866: using ::vfwprintf;
23866:
23866: using ::vfwscanf;
23866:
23866:
23866: using ::vswprintf;
23866:
23866:
23866: using ::vswscanf;
23866:
23866: using ::vwprintf;
23866:
23866: using ::vwscanf;
23866:
23866: using ::wcrtomb;
23866: using ::wcscat;
23866: using ::wcscmp;
23866: using ::wcscoll;
23866: using ::wcscpy;
23866: using ::wcscspn;
23866: using ::wcsftime;
23866: using ::wcslen;
23866: using ::wcsncat;
23866: using ::wcsncmp;
23866: using ::wcsncpy;
23866: using ::wcsrtombs;
23866: using ::wcsspn;
23866: using ::wcstod;
23866:
23866: using ::wcstof;
23866:
23866: using ::wcstok;
23866: using ::wcstol;
23866: using ::wcstoul;
23866: using ::wcsxfrm;
23866: using ::wctob;
23866: using ::wmemcmp;
23866: using ::wmemcpy;
23866: using ::wmemmove;
23866: using ::wmemset;
23866: using ::wprintf;
23866: using ::wscanf;
23866: using ::wcschr;
23866: using ::wcspbrk;
23866: using ::wcsrchr;
23866: using ::wcsstr;
23866: using ::wmemchr;
23866: # 234 "/usr/include/c++/10/cwchar" 3
23866:
23866: }
23866: }
23866:
23866:
23866:
23866: #undef wcstold
23866: #undef wcstoll
23866: #undef wcstoull
23866:
23866: namespace __gnu_cxx
23866: {
23866:
23866:
23866:
23866:
23866:
23866: using ::wcstold;
23866: # 260 "/usr/include/c++/10/cwchar" 3
23866: using ::wcstoll;
23866: using ::wcstoull;
23866:
23866: }
23866:
23866: namespace std
23866: {
23866: using ::__gnu_cxx::wcstold;
23866: using ::__gnu_cxx::wcstoll;
23866: using ::__gnu_cxx::wcstoull;
23866: }
23866: # 280 "/usr/include/c++/10/cwchar" 3
23866: namespace std
23866: {
23866:
23866: using std::wcstof;
23866:
23866:
23866: using std::vfwscanf;
23866:
23866:
23866: using std::vswscanf;
23866:
23866:
23866: using std::vwscanf;
23866:
23866:
23866:
23866: using std::wcstold;
23866: using std::wcstoll;
23866: using std::wcstoull;
23866:
23866: }
23866: # 41 "/usr/include/c++/10/bits/postypes.h" 2 3
23866: # 68 "/usr/include/c++/10/bits/postypes.h" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 90 "/usr/include/c++/10/bits/postypes.h" 3
23866: typedef long long streamoff;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: typedef ptrdiff_t streamsize;
23866: # 111 "/usr/include/c++/10/bits/postypes.h" 3
23866: template<typename _StateT>
23866: class fpos
23866: {
23866: private:
23866: streamoff _M_off;
23866: _StateT _M_state;
23866:
23866: public:
23866:
23866:
23866:
23866:
23866: fpos()
23866: : _M_off(0), _M_state() { }
23866: # 133 "/usr/include/c++/10/bits/postypes.h" 3
23866: fpos(streamoff __off)
23866: : _M_off(__off), _M_state() { }
23866:
23866:
23866: fpos(const fpos&) = default;
23866: fpos& operator=(const fpos&) = default;
23866: ~fpos() = default;
23866:
23866:
23866:
23866: operator streamoff() const { return _M_off; }
23866:
23866:
23866: void
23866: state(_StateT __st)
23866: { _M_state = __st; }
23866:
23866:
23866: _StateT
23866: state() const
23866: { return _M_state; }
23866:
23866:
23866:
23866:
23866:
23866: fpos&
23866: operator+=(streamoff __off)
23866: {
23866: _M_off += __off;
23866: return *this;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: fpos&
23866: operator-=(streamoff __off)
23866: {
23866: _M_off -= __off;
23866: return *this;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: fpos
23866: operator+(streamoff __off) const
23866: {
23866: fpos __pos(*this);
23866: __pos += __off;
23866: return __pos;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: fpos
23866: operator-(streamoff __off) const
23866: {
23866: fpos __pos(*this);
23866: __pos -= __off;
23866: return __pos;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: streamoff
23866: operator-(const fpos& __other) const
23866: { return _M_off - __other._M_off; }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _StateT>
23866: inline bool
23866: operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs)
23866: { return streamoff(__lhs) == streamoff(__rhs); }
23866:
23866: template<typename _StateT>
23866: inline bool
23866: operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs)
23866: { return streamoff(__lhs) != streamoff(__rhs); }
23866:
23866:
23866:
23866:
23866:
23866: typedef fpos<mbstate_t> streampos;
23866:
23866: typedef fpos<mbstate_t> wstreampos;
23866: # 245 "/usr/include/c++/10/bits/postypes.h" 3
23866: typedef fpos<mbstate_t> u16streampos;
23866:
23866: typedef fpos<mbstate_t> u32streampos;
23866:
23866:
23866:
23866: }
23866: # 41 "/usr/include/c++/10/iosfwd" 2 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 74 "/usr/include/c++/10/iosfwd" 3
23866: class ios_base;
23866:
23866: template<typename _CharT, typename _Traits = char_traits<_CharT> >
23866: class basic_ios;
23866:
23866: template<typename _CharT, typename _Traits = char_traits<_CharT> >
23866: class basic_streambuf;
23866:
23866: template<typename _CharT, typename _Traits = char_traits<_CharT> >
23866: class basic_istream;
23866:
23866: template<typename _CharT, typename _Traits = char_traits<_CharT> >
23866: class basic_ostream;
23866:
23866: template<typename _CharT, typename _Traits = char_traits<_CharT> >
23866: class basic_iostream;
23866:
23866:
23866: namespace __cxx11 {
23866:
23866: template<typename _CharT, typename _Traits = char_traits<_CharT>,
23866: typename _Alloc = allocator<_CharT> >
23866: class basic_stringbuf;
23866:
23866: template<typename _CharT, typename _Traits = char_traits<_CharT>,
23866: typename _Alloc = allocator<_CharT> >
23866: class basic_istringstream;
23866:
23866: template<typename _CharT, typename _Traits = char_traits<_CharT>,
23866: typename _Alloc = allocator<_CharT> >
23866: class basic_ostringstream;
23866:
23866: template<typename _CharT, typename _Traits = char_traits<_CharT>,
23866: typename _Alloc = allocator<_CharT> >
23866: class basic_stringstream;
23866:
23866: }
23866:
23866: template<typename _CharT, typename _Traits = char_traits<_CharT> >
23866: class basic_filebuf;
23866:
23866: template<typename _CharT, typename _Traits = char_traits<_CharT> >
23866: class basic_ifstream;
23866:
23866: template<typename _CharT, typename _Traits = char_traits<_CharT> >
23866: class basic_ofstream;
23866:
23866: template<typename _CharT, typename _Traits = char_traits<_CharT> >
23866: class basic_fstream;
23866:
23866: template<typename _CharT, typename _Traits = char_traits<_CharT> >
23866: class istreambuf_iterator;
23866:
23866: template<typename _CharT, typename _Traits = char_traits<_CharT> >
23866: class ostreambuf_iterator;
23866:
23866:
23866:
23866: typedef basic_ios<char> ios;
23866:
23866:
23866: typedef basic_streambuf<char> streambuf;
23866:
23866:
23866: typedef basic_istream<char> istream;
23866:
23866:
23866: typedef basic_ostream<char> ostream;
23866:
23866:
23866: typedef basic_iostream<char> iostream;
23866:
23866:
23866: typedef basic_stringbuf<char> stringbuf;
23866:
23866:
23866: typedef basic_istringstream<char> istringstream;
23866:
23866:
23866: typedef basic_ostringstream<char> ostringstream;
23866:
23866:
23866: typedef basic_stringstream<char> stringstream;
23866:
23866:
23866: typedef basic_filebuf<char> filebuf;
23866:
23866:
23866: typedef basic_ifstream<char> ifstream;
23866:
23866:
23866: typedef basic_ofstream<char> ofstream;
23866:
23866:
23866: typedef basic_fstream<char> fstream;
23866:
23866:
23866:
23866: typedef basic_ios<wchar_t> wios;
23866:
23866:
23866: typedef basic_streambuf<wchar_t> wstreambuf;
23866:
23866:
23866: typedef basic_istream<wchar_t> wistream;
23866:
23866:
23866: typedef basic_ostream<wchar_t> wostream;
23866:
23866:
23866: typedef basic_iostream<wchar_t> wiostream;
23866:
23866:
23866: typedef basic_stringbuf<wchar_t> wstringbuf;
23866:
23866:
23866: typedef basic_istringstream<wchar_t> wistringstream;
23866:
23866:
23866: typedef basic_ostringstream<wchar_t> wostringstream;
23866:
23866:
23866: typedef basic_stringstream<wchar_t> wstringstream;
23866:
23866:
23866: typedef basic_filebuf<wchar_t> wfilebuf;
23866:
23866:
23866: typedef basic_ifstream<wchar_t> wifstream;
23866:
23866:
23866: typedef basic_ofstream<wchar_t> wofstream;
23866:
23866:
23866: typedef basic_fstream<wchar_t> wfstream;
23866:
23866:
23866:
23866:
23866: }
23866: # 41 "/usr/include/c++/10/system_error" 2 3
23866: # 1 "/usr/include/c++/10/stdexcept" 1 3
23866: # 34 "/usr/include/c++/10/stdexcept" 3
23866: #define _GLIBCXX_STDEXCEPT 1
23866:
23866:
23866: # 37 "/usr/include/c++/10/stdexcept" 3
23866:
23866:
23866: # 1 "/usr/include/c++/10/string" 1 3
23866: # 34 "/usr/include/c++/10/string" 3
23866: #define _GLIBCXX_STRING 1
23866:
23866:
23866: # 37 "/usr/include/c++/10/string" 3
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/char_traits.h" 1 3
23866: # 35 "/usr/include/c++/10/bits/char_traits.h" 3
23866: #define _CHAR_TRAITS_H 1
23866:
23866:
23866: # 38 "/usr/include/c++/10/bits/char_traits.h" 3
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/cwchar" 1 3
23866: # 39 "/usr/include/c++/10/cwchar" 3
23866:
23866: # 40 "/usr/include/c++/10/cwchar" 3
23866: # 42 "/usr/include/c++/10/bits/char_traits.h" 2 3
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_ALWAYS_INLINE inline __attribute__((__always_inline__))
23866:
23866:
23866: namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 64 "/usr/include/c++/10/bits/char_traits.h" 3
23866: template<typename _CharT>
23866: struct _Char_types
23866: {
23866: typedef unsigned long int_type;
23866: typedef std::streampos pos_type;
23866: typedef std::streamoff off_type;
23866: typedef std::mbstate_t state_type;
23866: };
23866: # 89 "/usr/include/c++/10/bits/char_traits.h" 3
23866: template<typename _CharT>
23866: struct char_traits
23866: {
23866: typedef _CharT char_type;
23866: typedef typename _Char_types<_CharT>::int_type int_type;
23866: typedef typename _Char_types<_CharT>::pos_type pos_type;
23866: typedef typename _Char_types<_CharT>::off_type off_type;
23866: typedef typename _Char_types<_CharT>::state_type state_type;
23866:
23866:
23866:
23866:
23866: static constexpr void
23866: assign(char_type& __c1, const char_type& __c2)
23866: { __c1 = __c2; }
23866:
23866: static constexpr bool
23866: eq(const char_type& __c1, const char_type& __c2)
23866: { return __c1 == __c2; }
23866:
23866: static constexpr bool
23866: lt(const char_type& __c1, const char_type& __c2)
23866: { return __c1 < __c2; }
23866:
23866: static constexpr int
23866: compare(const char_type* __s1, const char_type* __s2, std::size_t __n);
23866:
23866: static constexpr std::size_t
23866: length(const char_type* __s);
23866:
23866: static constexpr const char_type*
23866: find(const char_type* __s, std::size_t __n, const char_type& __a);
23866:
23866: static char_type*
23866: move(char_type* __s1, const char_type* __s2, std::size_t __n);
23866:
23866: static char_type*
23866: copy(char_type* __s1, const char_type* __s2, std::size_t __n);
23866:
23866: static char_type*
23866: assign(char_type* __s, std::size_t __n, char_type __a);
23866:
23866: static constexpr char_type
23866: to_char_type(const int_type& __c)
23866: { return static_cast<char_type>(__c); }
23866:
23866: static constexpr int_type
23866: to_int_type(const char_type& __c)
23866: { return static_cast<int_type>(__c); }
23866:
23866: static constexpr bool
23866: eq_int_type(const int_type& __c1, const int_type& __c2)
23866: { return __c1 == __c2; }
23866:
23866: static constexpr int_type
23866: eof()
23866: { return static_cast<int_type>(-1); }
23866:
23866: static constexpr int_type
23866: not_eof(const int_type& __c)
23866: { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); }
23866: };
23866:
23866: template<typename _CharT>
23866: constexpr int
23866: char_traits<_CharT>::
23866: compare(const char_type* __s1, const char_type* __s2, std::size_t __n)
23866: {
23866: for (std::size_t __i = 0; __i < __n; ++__i)
23866: if (lt(__s1[__i], __s2[__i]))
23866: return -1;
23866: else if (lt(__s2[__i], __s1[__i]))
23866: return 1;
23866: return 0;
23866: }
23866:
23866: template<typename _CharT>
23866: constexpr std::size_t
23866: char_traits<_CharT>::
23866: length(const char_type* __p)
23866: {
23866: std::size_t __i = 0;
23866: while (!eq(__p[__i], char_type()))
23866: ++__i;
23866: return __i;
23866: }
23866:
23866: template<typename _CharT>
23866: constexpr const typename char_traits<_CharT>::char_type*
23866: char_traits<_CharT>::
23866: find(const char_type* __s, std::size_t __n, const char_type& __a)
23866: {
23866: for (std::size_t __i = 0; __i < __n; ++__i)
23866: if (eq(__s[__i], __a))
23866: return __s + __i;
23866: return 0;
23866: }
23866:
23866: template<typename _CharT>
23866:
23866: typename char_traits<_CharT>::char_type*
23866: char_traits<_CharT>::
23866: move(char_type* __s1, const char_type* __s2, std::size_t __n)
23866: {
23866: if (__n == 0)
23866: return __s1;
23866: # 205 "/usr/include/c++/10/bits/char_traits.h" 3
23866: return static_cast<_CharT*>(__builtin_memmove(__s1, __s2,
23866: __n * sizeof(char_type)));
23866: }
23866:
23866: template<typename _CharT>
23866:
23866: typename char_traits<_CharT>::char_type*
23866: char_traits<_CharT>::
23866: copy(char_type* __s1, const char_type* __s2, std::size_t __n)
23866: {
23866:
23866: std::copy(__s2, __s2 + __n, __s1);
23866: return __s1;
23866: }
23866:
23866: template<typename _CharT>
23866:
23866: typename char_traits<_CharT>::char_type*
23866: char_traits<_CharT>::
23866: assign(char_type* __s, std::size_t __n, char_type __a)
23866: {
23866:
23866: std::fill_n(__s, __n, __a);
23866: return __s;
23866: }
23866:
23866:
23866: }
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __cpp_lib_constexpr_char_traits 201611L
23866: # 255 "/usr/include/c++/10/bits/char_traits.h" 3
23866: template<typename _CharT>
23866: static inline __attribute__((__always_inline__)) constexpr bool
23866: __constant_string_p(const _CharT* __s)
23866: {
23866:
23866: (void) __s;
23866:
23866: return __builtin_is_constant_evaluated();
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 278 "/usr/include/c++/10/bits/char_traits.h" 3
23866: template<typename _CharT>
23866: static inline __attribute__((__always_inline__)) constexpr bool
23866: __constant_char_array_p(const _CharT* __a, size_t __n)
23866: {
23866:
23866: (void) __a;
23866: (void) __n;
23866:
23866: return __builtin_is_constant_evaluated();
23866:
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 309 "/usr/include/c++/10/bits/char_traits.h" 3
23866: template<class _CharT>
23866: struct char_traits : public __gnu_cxx::char_traits<_CharT>
23866: { };
23866:
23866:
23866:
23866: template<>
23866: struct char_traits<char>
23866: {
23866: typedef char char_type;
23866: typedef int int_type;
23866: typedef streampos pos_type;
23866: typedef streamoff off_type;
23866: typedef mbstate_t state_type;
23866:
23866:
23866:
23866:
23866: static constexpr void
23866: assign(char_type& __c1, const char_type& __c2) noexcept
23866: { __c1 = __c2; }
23866:
23866: static constexpr bool
23866: eq(const char_type& __c1, const char_type& __c2) noexcept
23866: { return __c1 == __c2; }
23866:
23866: static constexpr bool
23866: lt(const char_type& __c1, const char_type& __c2) noexcept
23866: {
23866:
23866: return (static_cast<unsigned char>(__c1)
23866: < static_cast<unsigned char>(__c2));
23866: }
23866:
23866: static constexpr int
23866: compare(const char_type* __s1, const char_type* __s2, size_t __n)
23866: {
23866: if (__n == 0)
23866: return 0;
23866:
23866: if (__builtin_constant_p(__n)
23866: && __constant_char_array_p(__s1, __n)
23866: && __constant_char_array_p(__s2, __n))
23866: return __gnu_cxx::char_traits<char_type>::compare(__s1, __s2, __n);
23866:
23866: return __builtin_memcmp(__s1, __s2, __n);
23866: }
23866:
23866: static constexpr size_t
23866: length(const char_type* __s)
23866: {
23866:
23866: if (__constant_string_p(__s))
23866: return __gnu_cxx::char_traits<char_type>::length(__s);
23866:
23866: return __builtin_strlen(__s);
23866: }
23866:
23866: static constexpr const char_type*
23866: find(const char_type* __s, size_t __n, const char_type& __a)
23866: {
23866: if (__n == 0)
23866: return 0;
23866:
23866: if (__builtin_constant_p(__n)
23866: && __builtin_constant_p(__a)
23866: && __constant_char_array_p(__s, __n))
23866: return __gnu_cxx::char_traits<char_type>::find(__s, __n, __a);
23866:
23866: return static_cast<const char_type*>(__builtin_memchr(__s, __a, __n));
23866: }
23866:
23866: static char_type*
23866: move(char_type* __s1, const char_type* __s2, size_t __n)
23866: {
23866: if (__n == 0)
23866: return __s1;
23866:
23866:
23866:
23866:
23866: return static_cast<char_type*>(__builtin_memmove(__s1, __s2, __n));
23866: }
23866:
23866: static char_type*
23866: copy(char_type* __s1, const char_type* __s2, size_t __n)
23866: {
23866: if (__n == 0)
23866: return __s1;
23866:
23866:
23866:
23866:
23866: return static_cast<char_type*>(__builtin_memcpy(__s1, __s2, __n));
23866: }
23866:
23866: static char_type*
23866: assign(char_type* __s, size_t __n, char_type __a)
23866: {
23866: if (__n == 0)
23866: return __s;
23866:
23866:
23866:
23866:
23866: return static_cast<char_type*>(__builtin_memset(__s, __a, __n));
23866: }
23866:
23866: static constexpr char_type
23866: to_char_type(const int_type& __c) noexcept
23866: { return static_cast<char_type>(__c); }
23866:
23866:
23866:
23866: static constexpr int_type
23866: to_int_type(const char_type& __c) noexcept
23866: { return static_cast<int_type>(static_cast<unsigned char>(__c)); }
23866:
23866: static constexpr bool
23866: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept
23866: { return __c1 == __c2; }
23866:
23866: static constexpr int_type
23866: eof() noexcept
23866: { return static_cast<int_type>(-1); }
23866:
23866: static constexpr int_type
23866: not_eof(const int_type& __c) noexcept
23866: { return (__c == eof()) ? 0 : __c; }
23866: };
23866:
23866:
23866:
23866:
23866: template<>
23866: struct char_traits<wchar_t>
23866: {
23866: typedef wchar_t char_type;
23866: typedef wint_t int_type;
23866: typedef streamoff off_type;
23866: typedef wstreampos pos_type;
23866: typedef mbstate_t state_type;
23866:
23866:
23866:
23866:
23866: static constexpr void
23866: assign(char_type& __c1, const char_type& __c2) noexcept
23866: { __c1 = __c2; }
23866:
23866: static constexpr bool
23866: eq(const char_type& __c1, const char_type& __c2) noexcept
23866: { return __c1 == __c2; }
23866:
23866: static constexpr bool
23866: lt(const char_type& __c1, const char_type& __c2) noexcept
23866: { return __c1 < __c2; }
23866:
23866: static constexpr int
23866: compare(const char_type* __s1, const char_type* __s2, size_t __n)
23866: {
23866: if (__n == 0)
23866: return 0;
23866:
23866: if (__builtin_constant_p(__n)
23866: && __constant_char_array_p(__s1, __n)
23866: && __constant_char_array_p(__s2, __n))
23866: return __gnu_cxx::char_traits<char_type>::compare(__s1, __s2, __n);
23866:
23866: return wmemcmp(__s1, __s2, __n);
23866: }
23866:
23866: static constexpr size_t
23866: length(const char_type* __s)
23866: {
23866:
23866: if (__constant_string_p(__s))
23866: return __gnu_cxx::char_traits<char_type>::length(__s);
23866:
23866: return wcslen(__s);
23866: }
23866:
23866: static constexpr const char_type*
23866: find(const char_type* __s, size_t __n, const char_type& __a)
23866: {
23866: if (__n == 0)
23866: return 0;
23866:
23866: if (__builtin_constant_p(__n)
23866: && __builtin_constant_p(__a)
23866: && __constant_char_array_p(__s, __n))
23866: return __gnu_cxx::char_traits<char_type>::find(__s, __n, __a);
23866:
23866: return wmemchr(__s, __a, __n);
23866: }
23866:
23866: static char_type*
23866: move(char_type* __s1, const char_type* __s2, size_t __n)
23866: {
23866: if (__n == 0)
23866: return __s1;
23866:
23866:
23866:
23866:
23866: return wmemmove(__s1, __s2, __n);
23866: }
23866:
23866: static char_type*
23866: copy(char_type* __s1, const char_type* __s2, size_t __n)
23866: {
23866: if (__n == 0)
23866: return __s1;
23866:
23866:
23866:
23866:
23866: return wmemcpy(__s1, __s2, __n);
23866: }
23866:
23866: static char_type*
23866: assign(char_type* __s, size_t __n, char_type __a)
23866: {
23866: if (__n == 0)
23866: return __s;
23866:
23866:
23866:
23866:
23866: return wmemset(__s, __a, __n);
23866: }
23866:
23866: static constexpr char_type
23866: to_char_type(const int_type& __c) noexcept
23866: { return char_type(__c); }
23866:
23866: static constexpr int_type
23866: to_int_type(const char_type& __c) noexcept
23866: { return int_type(__c); }
23866:
23866: static constexpr bool
23866: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept
23866: { return __c1 == __c2; }
23866:
23866: static constexpr int_type
23866: eof() noexcept
23866: { return static_cast<int_type>((0xffffffffu)); }
23866:
23866: static constexpr int_type
23866: not_eof(const int_type& __c) noexcept
23866: { return eq_int_type(__c, eof()) ? 0 : __c; }
23866: };
23866: # 687 "/usr/include/c++/10/bits/char_traits.h" 3
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: template<>
23866: struct char_traits<char16_t>
23866: {
23866: typedef char16_t char_type;
23866:
23866: typedef uint_least16_t int_type;
23866:
23866:
23866:
23866:
23866:
23866: typedef streamoff off_type;
23866: typedef u16streampos pos_type;
23866: typedef mbstate_t state_type;
23866:
23866:
23866:
23866:
23866: static constexpr void
23866: assign(char_type& __c1, const char_type& __c2) noexcept
23866: { __c1 = __c2; }
23866:
23866: static constexpr bool
23866: eq(const char_type& __c1, const char_type& __c2) noexcept
23866: { return __c1 == __c2; }
23866:
23866: static constexpr bool
23866: lt(const char_type& __c1, const char_type& __c2) noexcept
23866: { return __c1 < __c2; }
23866:
23866: static constexpr int
23866: compare(const char_type* __s1, const char_type* __s2, size_t __n)
23866: {
23866: for (size_t __i = 0; __i < __n; ++__i)
23866: if (lt(__s1[__i], __s2[__i]))
23866: return -1;
23866: else if (lt(__s2[__i], __s1[__i]))
23866: return 1;
23866: return 0;
23866: }
23866:
23866: static constexpr size_t
23866: length(const char_type* __s)
23866: {
23866: size_t __i = 0;
23866: while (!eq(__s[__i], char_type()))
23866: ++__i;
23866: return __i;
23866: }
23866:
23866: static constexpr const char_type*
23866: find(const char_type* __s, size_t __n, const char_type& __a)
23866: {
23866: for (size_t __i = 0; __i < __n; ++__i)
23866: if (eq(__s[__i], __a))
23866: return __s + __i;
23866: return 0;
23866: }
23866:
23866: static char_type*
23866: move(char_type* __s1, const char_type* __s2, size_t __n)
23866: {
23866: if (__n == 0)
23866: return __s1;
23866:
23866:
23866:
23866:
23866: return (static_cast<char_type*>
23866: (__builtin_memmove(__s1, __s2, __n * sizeof(char_type))));
23866: }
23866:
23866: static char_type*
23866: copy(char_type* __s1, const char_type* __s2, size_t __n)
23866: {
23866: if (__n == 0)
23866: return __s1;
23866:
23866:
23866:
23866:
23866: return (static_cast<char_type*>
23866: (__builtin_memcpy(__s1, __s2, __n * sizeof(char_type))));
23866: }
23866:
23866: static char_type*
23866: assign(char_type* __s, size_t __n, char_type __a)
23866: {
23866: for (size_t __i = 0; __i < __n; ++__i)
23866: assign(__s[__i], __a);
23866: return __s;
23866: }
23866:
23866: static constexpr char_type
23866: to_char_type(const int_type& __c) noexcept
23866: { return char_type(__c); }
23866:
23866: static constexpr int_type
23866: to_int_type(const char_type& __c) noexcept
23866: { return __c == eof() ? int_type(0xfffd) : int_type(__c); }
23866:
23866: static constexpr bool
23866: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept
23866: { return __c1 == __c2; }
23866:
23866: static constexpr int_type
23866: eof() noexcept
23866: { return static_cast<int_type>(-1); }
23866:
23866: static constexpr int_type
23866: not_eof(const int_type& __c) noexcept
23866: { return eq_int_type(__c, eof()) ? 0 : __c; }
23866: };
23866:
23866: template<>
23866: struct char_traits<char32_t>
23866: {
23866: typedef char32_t char_type;
23866:
23866: typedef uint_least32_t int_type;
23866:
23866:
23866:
23866:
23866:
23866: typedef streamoff off_type;
23866: typedef u32streampos pos_type;
23866: typedef mbstate_t state_type;
23866:
23866:
23866:
23866:
23866: static constexpr void
23866: assign(char_type& __c1, const char_type& __c2) noexcept
23866: { __c1 = __c2; }
23866:
23866: static constexpr bool
23866: eq(const char_type& __c1, const char_type& __c2) noexcept
23866: { return __c1 == __c2; }
23866:
23866: static constexpr bool
23866: lt(const char_type& __c1, const char_type& __c2) noexcept
23866: { return __c1 < __c2; }
23866:
23866: static constexpr int
23866: compare(const char_type* __s1, const char_type* __s2, size_t __n)
23866: {
23866: for (size_t __i = 0; __i < __n; ++__i)
23866: if (lt(__s1[__i], __s2[__i]))
23866: return -1;
23866: else if (lt(__s2[__i], __s1[__i]))
23866: return 1;
23866: return 0;
23866: }
23866:
23866: static constexpr size_t
23866: length(const char_type* __s)
23866: {
23866: size_t __i = 0;
23866: while (!eq(__s[__i], char_type()))
23866: ++__i;
23866: return __i;
23866: }
23866:
23866: static constexpr const char_type*
23866: find(const char_type* __s, size_t __n, const char_type& __a)
23866: {
23866: for (size_t __i = 0; __i < __n; ++__i)
23866: if (eq(__s[__i], __a))
23866: return __s + __i;
23866: return 0;
23866: }
23866:
23866: static char_type*
23866: move(char_type* __s1, const char_type* __s2, size_t __n)
23866: {
23866: if (__n == 0)
23866: return __s1;
23866:
23866:
23866:
23866:
23866: return (static_cast<char_type*>
23866: (__builtin_memmove(__s1, __s2, __n * sizeof(char_type))));
23866: }
23866:
23866: static char_type*
23866: copy(char_type* __s1, const char_type* __s2, size_t __n)
23866: {
23866: if (__n == 0)
23866: return __s1;
23866:
23866:
23866:
23866:
23866: return (static_cast<char_type*>
23866: (__builtin_memcpy(__s1, __s2, __n * sizeof(char_type))));
23866: }
23866:
23866: static char_type*
23866: assign(char_type* __s, size_t __n, char_type __a)
23866: {
23866: for (size_t __i = 0; __i < __n; ++__i)
23866: assign(__s[__i], __a);
23866: return __s;
23866: }
23866:
23866: static constexpr char_type
23866: to_char_type(const int_type& __c) noexcept
23866: { return char_type(__c); }
23866:
23866: static constexpr int_type
23866: to_int_type(const char_type& __c) noexcept
23866: { return int_type(__c); }
23866:
23866: static constexpr bool
23866: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept
23866: { return __c1 == __c2; }
23866:
23866: static constexpr int_type
23866: eof() noexcept
23866: { return static_cast<int_type>(-1); }
23866:
23866: static constexpr int_type
23866: not_eof(const int_type& __c) noexcept
23866: { return eq_int_type(__c, eof()) ? 0 : __c; }
23866: };
23866: # 945 "/usr/include/c++/10/bits/char_traits.h" 3
23866:
23866: }
23866: # 41 "/usr/include/c++/10/string" 2 3
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/localefwd.h" 1 3
23866: # 35 "/usr/include/c++/10/bits/localefwd.h" 3
23866: #define _LOCALE_FWD_H 1
23866:
23866:
23866: # 38 "/usr/include/c++/10/bits/localefwd.h" 3
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++locale.h" 1 3
23866: # 37 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++locale.h" 3
23866: #define _GLIBCXX_CXX_LOCALE_H 1
23866:
23866:
23866: # 40 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++locale.h" 3
23866:
23866: # 1 "/usr/include/c++/10/clocale" 1 3
23866: # 39 "/usr/include/c++/10/clocale" 3
23866:
23866: # 40 "/usr/include/c++/10/clocale" 3
23866:
23866:
23866: # 1 "/usr/include/locale.h" 1 3 4
23866: # 23 "/usr/include/locale.h" 3 4
23866: #define _LOCALE_H 1
23866:
23866:
23866:
23866: #define __need_NULL
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 1 3 4
23866: # 155 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_ptrdiff_t
23866: # 231 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_size_t
23866: # 340 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_wchar_t
23866: # 390 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef NULL
23866:
23866: #define NULL __null
23866: # 401 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_NULL
23866:
23866:
23866:
23866:
23866: #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
23866: # 29 "/usr/include/locale.h" 2 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/locale.h" 1 3 4
23866: # 24 "/usr/include/arm-linux-gnueabihf/bits/locale.h" 3 4
23866: #define _BITS_LOCALE_H 1
23866:
23866: #define __LC_CTYPE 0
23866: #define __LC_NUMERIC 1
23866: #define __LC_TIME 2
23866: #define __LC_COLLATE 3
23866: #define __LC_MONETARY 4
23866: #define __LC_MESSAGES 5
23866: #define __LC_ALL 6
23866: #define __LC_PAPER 7
23866: #define __LC_NAME 8
23866: #define __LC_ADDRESS 9
23866: #define __LC_TELEPHONE 10
23866: #define __LC_MEASUREMENT 11
23866: #define __LC_IDENTIFICATION 12
23866: # 30 "/usr/include/locale.h" 2 3 4
23866:
23866: extern "C" {
23866:
23866:
23866:
23866: #define LC_CTYPE __LC_CTYPE
23866: #define LC_NUMERIC __LC_NUMERIC
23866: #define LC_TIME __LC_TIME
23866: #define LC_COLLATE __LC_COLLATE
23866: #define LC_MONETARY __LC_MONETARY
23866: #define LC_MESSAGES __LC_MESSAGES
23866: #define LC_ALL __LC_ALL
23866: #define LC_PAPER __LC_PAPER
23866: #define LC_NAME __LC_NAME
23866: #define LC_ADDRESS __LC_ADDRESS
23866: #define LC_TELEPHONE __LC_TELEPHONE
23866: #define LC_MEASUREMENT __LC_MEASUREMENT
23866: #define LC_IDENTIFICATION __LC_IDENTIFICATION
23866:
23866:
23866:
23866: struct lconv
23866: {
23866:
23866:
23866: char *decimal_point;
23866: char *thousands_sep;
23866:
23866:
23866:
23866:
23866:
23866: char *grouping;
23866:
23866:
23866:
23866:
23866:
23866: char *int_curr_symbol;
23866: char *currency_symbol;
23866: char *mon_decimal_point;
23866: char *mon_thousands_sep;
23866: char *mon_grouping;
23866: char *positive_sign;
23866: char *negative_sign;
23866: char int_frac_digits;
23866: char frac_digits;
23866:
23866: char p_cs_precedes;
23866:
23866: char p_sep_by_space;
23866:
23866: char n_cs_precedes;
23866:
23866: char n_sep_by_space;
23866:
23866:
23866:
23866:
23866:
23866:
23866: char p_sign_posn;
23866: char n_sign_posn;
23866:
23866:
23866: char int_p_cs_precedes;
23866:
23866: char int_p_sep_by_space;
23866:
23866: char int_n_cs_precedes;
23866:
23866: char int_n_sep_by_space;
23866:
23866:
23866:
23866:
23866:
23866:
23866: char int_p_sign_posn;
23866: char int_n_sign_posn;
23866: # 118 "/usr/include/locale.h" 3 4
23866: };
23866:
23866:
23866:
23866: extern char *setlocale (int __category, const char *__locale) throw ();
23866:
23866:
23866: extern struct lconv *localeconv (void) throw ();
23866: # 141 "/usr/include/locale.h" 3 4
23866: extern locale_t newlocale (int __category_mask, const char *__locale,
23866: locale_t __base) throw ();
23866:
23866:
23866:
23866:
23866:
23866: #define LC_CTYPE_MASK (1 << __LC_CTYPE)
23866: #define LC_NUMERIC_MASK (1 << __LC_NUMERIC)
23866: #define LC_TIME_MASK (1 << __LC_TIME)
23866: #define LC_COLLATE_MASK (1 << __LC_COLLATE)
23866: #define LC_MONETARY_MASK (1 << __LC_MONETARY)
23866: #define LC_MESSAGES_MASK (1 << __LC_MESSAGES)
23866: #define LC_PAPER_MASK (1 << __LC_PAPER)
23866: #define LC_NAME_MASK (1 << __LC_NAME)
23866: #define LC_ADDRESS_MASK (1 << __LC_ADDRESS)
23866: #define LC_TELEPHONE_MASK (1 << __LC_TELEPHONE)
23866: #define LC_MEASUREMENT_MASK (1 << __LC_MEASUREMENT)
23866: #define LC_IDENTIFICATION_MASK (1 << __LC_IDENTIFICATION)
23866: #define LC_ALL_MASK (LC_CTYPE_MASK | LC_NUMERIC_MASK | LC_TIME_MASK | LC_COLLATE_MASK | LC_MONETARY_MASK | LC_MESSAGES_MASK | LC_PAPER_MASK | LC_NAME_MASK | LC_ADDRESS_MASK | LC_TELEPHONE_MASK | LC_MEASUREMENT_MASK | LC_IDENTIFICATION_MASK )
23866: # 176 "/usr/include/locale.h" 3 4
23866: extern locale_t duplocale (locale_t __dataset) throw ();
23866:
23866:
23866:
23866: extern void freelocale (locale_t __dataset) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern locale_t uselocale (locale_t __dataset) throw ();
23866:
23866:
23866:
23866: #define LC_GLOBAL_LOCALE ((locale_t) -1L)
23866:
23866:
23866:
23866: }
23866: # 43 "/usr/include/c++/10/clocale" 2 3
23866:
23866:
23866: #define _GLIBCXX_CLOCALE 1
23866:
23866:
23866: #undef setlocale
23866: #undef localeconv
23866:
23866: namespace std
23866: {
23866: using ::lconv;
23866: using ::setlocale;
23866: using ::localeconv;
23866: }
23866: # 42 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++locale.h" 2 3
23866:
23866: #define _GLIBCXX_C_LOCALE_GNU 1
23866:
23866: #define _GLIBCXX_NUM_CATEGORIES 6
23866:
23866:
23866: namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: extern "C" __typeof(uselocale) __uselocale;
23866:
23866:
23866: }
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: typedef __locale_t __c_locale;
23866:
23866:
23866:
23866:
23866:
23866: inline int
23866: __convert_from_v(const __c_locale& __cloc __attribute__ ((__unused__)),
23866: char* __out,
23866: const int __size __attribute__ ((__unused__)),
23866: const char* __fmt, ...)
23866: {
23866:
23866: __c_locale __old = __gnu_cxx::__uselocale(__cloc);
23866: # 88 "/usr/include/arm-linux-gnueabihf/c++/10/bits/c++locale.h" 3
23866: __builtin_va_list __args;
23866: __builtin_va_start(__args, __fmt);
23866:
23866:
23866: const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args);
23866:
23866:
23866:
23866:
23866: __builtin_va_end(__args);
23866:
23866:
23866: __gnu_cxx::__uselocale(__old);
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: return __ret;
23866: }
23866:
23866:
23866: }
23866: # 41 "/usr/include/c++/10/bits/localefwd.h" 2 3
23866:
23866: # 1 "/usr/include/c++/10/cctype" 1 3
23866: # 39 "/usr/include/c++/10/cctype" 3
23866:
23866: # 40 "/usr/include/c++/10/cctype" 3
23866:
23866:
23866: # 1 "/usr/include/ctype.h" 1 3 4
23866: # 23 "/usr/include/ctype.h" 3 4
23866: #define _CTYPE_H 1
23866:
23866:
23866:
23866:
23866: extern "C" {
23866: # 43 "/usr/include/ctype.h" 3 4
23866: #define _ISbit(bit) ((bit) < 8 ? ((1 << (bit)) << 8) : ((1 << (bit)) >> 8))
23866:
23866:
23866: enum
23866: {
23866: _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)),
23866: _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)),
23866: _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)),
23866: _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)),
23866: _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)),
23866: _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)),
23866: _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)),
23866: _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)),
23866: _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)),
23866: _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)),
23866: _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)),
23866: _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8))
23866: };
23866: # 79 "/usr/include/ctype.h" 3 4
23866: extern const unsigned short int **__ctype_b_loc (void)
23866: throw () __attribute__ ((__const__));
23866: extern const __int32_t **__ctype_tolower_loc (void)
23866: throw () __attribute__ ((__const__));
23866: extern const __int32_t **__ctype_toupper_loc (void)
23866: throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __isctype_f(type) __extern_inline int is ##type (int __c) __THROW { return (*__ctype_b_loc ())[(int) (__c)] & (unsigned short int) _IS ##type; }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __isascii(c) (((c) & ~0x7f) == 0)
23866: #define __toascii(c) ((c) & 0x7f)
23866:
23866: #define __exctype(name) extern int name (int) __THROW
23866:
23866:
23866:
23866:
23866:
23866: extern int isalnum (int) throw ();
23866: extern int isalpha (int) throw ();
23866: extern int iscntrl (int) throw ();
23866: extern int isdigit (int) throw ();
23866: extern int islower (int) throw ();
23866: extern int isgraph (int) throw ();
23866: extern int isprint (int) throw ();
23866: extern int ispunct (int) throw ();
23866: extern int isspace (int) throw ();
23866: extern int isupper (int) throw ();
23866: extern int isxdigit (int) throw ();
23866:
23866:
23866:
23866: extern int tolower (int __c) throw ();
23866:
23866:
23866: extern int toupper (int __c) throw ();
23866:
23866:
23866:
23866:
23866: extern int isblank (int) throw ();
23866:
23866:
23866:
23866:
23866: extern int isctype (int __c, int __mask) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int isascii (int __c) throw ();
23866:
23866:
23866:
23866: extern int toascii (int __c) throw ();
23866:
23866:
23866:
23866: extern int _toupper (int) throw ();
23866: extern int _tolower (int) throw ();
23866:
23866:
23866:
23866: #define __tobody(c,f,a,args) (__extension__ ({ int __res; if (sizeof (c) > 1) { if (__builtin_constant_p (c)) { int __c = (c); __res = __c < -128 || __c > 255 ? __c : (a)[__c]; } else __res = f args; } else __res = (a)[(int) (c)]; __res; }))
23866: # 241 "/usr/include/ctype.h" 3 4
23866: #define __isctype_l(c,type,locale) ((locale)->__ctype_b[(int) (c)] & (unsigned short int) type)
23866:
23866:
23866: #define __exctype_l(name) extern int name (int, locale_t) __THROW
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int isalnum_l (int, locale_t) throw ();
23866: extern int isalpha_l (int, locale_t) throw ();
23866: extern int iscntrl_l (int, locale_t) throw ();
23866: extern int isdigit_l (int, locale_t) throw ();
23866: extern int islower_l (int, locale_t) throw ();
23866: extern int isgraph_l (int, locale_t) throw ();
23866: extern int isprint_l (int, locale_t) throw ();
23866: extern int ispunct_l (int, locale_t) throw ();
23866: extern int isspace_l (int, locale_t) throw ();
23866: extern int isupper_l (int, locale_t) throw ();
23866: extern int isxdigit_l (int, locale_t) throw ();
23866:
23866: extern int isblank_l (int, locale_t) throw ();
23866:
23866:
23866:
23866: extern int __tolower_l (int __c, locale_t __l) throw ();
23866: extern int tolower_l (int __c, locale_t __l) throw ();
23866:
23866:
23866: extern int __toupper_l (int __c, locale_t __l) throw ();
23866: extern int toupper_l (int __c, locale_t __l) throw ();
23866: # 327 "/usr/include/ctype.h" 3 4
23866: }
23866: # 43 "/usr/include/c++/10/cctype" 2 3
23866:
23866:
23866: #define _GLIBCXX_CCTYPE 1
23866:
23866:
23866: #undef isalnum
23866: #undef isalpha
23866: #undef iscntrl
23866: #undef isdigit
23866: #undef isgraph
23866: #undef islower
23866: #undef isprint
23866: #undef ispunct
23866: #undef isspace
23866: #undef isupper
23866: #undef isxdigit
23866: #undef tolower
23866: #undef toupper
23866:
23866: namespace std
23866: {
23866: using ::isalnum;
23866: using ::isalpha;
23866: using ::iscntrl;
23866: using ::isdigit;
23866: using ::isgraph;
23866: using ::islower;
23866: using ::isprint;
23866: using ::ispunct;
23866: using ::isspace;
23866: using ::isupper;
23866: using ::isxdigit;
23866: using ::tolower;
23866: using ::toupper;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: #undef isblank
23866:
23866: namespace std
23866: {
23866: using ::isblank;
23866: }
23866: # 43 "/usr/include/c++/10/bits/localefwd.h" 2 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 55 "/usr/include/c++/10/bits/localefwd.h" 3
23866: class locale;
23866:
23866: template<typename _Facet>
23866: bool
23866: has_facet(const locale&) throw();
23866:
23866: template<typename _Facet>
23866: const _Facet&
23866: use_facet(const locale&);
23866:
23866:
23866: template<typename _CharT>
23866: bool
23866: isspace(_CharT, const locale&);
23866:
23866: template<typename _CharT>
23866: bool
23866: isprint(_CharT, const locale&);
23866:
23866: template<typename _CharT>
23866: bool
23866: iscntrl(_CharT, const locale&);
23866:
23866: template<typename _CharT>
23866: bool
23866: isupper(_CharT, const locale&);
23866:
23866: template<typename _CharT>
23866: bool
23866: islower(_CharT, const locale&);
23866:
23866: template<typename _CharT>
23866: bool
23866: isalpha(_CharT, const locale&);
23866:
23866: template<typename _CharT>
23866: bool
23866: isdigit(_CharT, const locale&);
23866:
23866: template<typename _CharT>
23866: bool
23866: ispunct(_CharT, const locale&);
23866:
23866: template<typename _CharT>
23866: bool
23866: isxdigit(_CharT, const locale&);
23866:
23866: template<typename _CharT>
23866: bool
23866: isalnum(_CharT, const locale&);
23866:
23866: template<typename _CharT>
23866: bool
23866: isgraph(_CharT, const locale&);
23866:
23866:
23866: template<typename _CharT>
23866: bool
23866: isblank(_CharT, const locale&);
23866:
23866:
23866: template<typename _CharT>
23866: _CharT
23866: toupper(_CharT, const locale&);
23866:
23866: template<typename _CharT>
23866: _CharT
23866: tolower(_CharT, const locale&);
23866:
23866:
23866: class ctype_base;
23866: template<typename _CharT>
23866: class ctype;
23866: template<> class ctype<char>;
23866:
23866: template<> class ctype<wchar_t>;
23866:
23866: template<typename _CharT>
23866: class ctype_byname;
23866:
23866:
23866: class codecvt_base;
23866: template<typename _InternT, typename _ExternT, typename _StateT>
23866: class codecvt;
23866: template<> class codecvt<char, char, mbstate_t>;
23866:
23866: template<> class codecvt<wchar_t, char, mbstate_t>;
23866:
23866:
23866: template<> class codecvt<char16_t, char, mbstate_t>;
23866: template<> class codecvt<char32_t, char, mbstate_t>;
23866:
23866:
23866:
23866:
23866:
23866: template<typename _InternT, typename _ExternT, typename _StateT>
23866: class codecvt_byname;
23866:
23866:
23866:
23866: template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
23866: class num_get;
23866: template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
23866: class num_put;
23866:
23866: namespace __cxx11 {
23866: template<typename _CharT> class numpunct;
23866: template<typename _CharT> class numpunct_byname;
23866: }
23866:
23866: namespace __cxx11 {
23866:
23866: template<typename _CharT>
23866: class collate;
23866: template<typename _CharT>
23866: class collate_byname;
23866: }
23866:
23866:
23866: class time_base;
23866: namespace __cxx11 {
23866: template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
23866: class time_get;
23866: template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
23866: class time_get_byname;
23866: }
23866: template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
23866: class time_put;
23866: template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
23866: class time_put_byname;
23866:
23866:
23866: class money_base;
23866: namespace __cxx11 {
23866: template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
23866: class money_get;
23866: template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
23866: class money_put;
23866: }
23866: namespace __cxx11 {
23866: template<typename _CharT, bool _Intl = false>
23866: class moneypunct;
23866: template<typename _CharT, bool _Intl = false>
23866: class moneypunct_byname;
23866: }
23866:
23866:
23866: class messages_base;
23866: namespace __cxx11 {
23866: template<typename _CharT>
23866: class messages;
23866: template<typename _CharT>
23866: class messages_byname;
23866: }
23866:
23866:
23866: }
23866: # 44 "/usr/include/c++/10/string" 2 3
23866: # 1 "/usr/include/c++/10/bits/ostream_insert.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/ostream_insert.h" 3
23866: #define _OSTREAM_INSERT_H 1
23866:
23866:
23866: # 34 "/usr/include/c++/10/bits/ostream_insert.h" 3
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/cxxabi_forced.h" 1 3
23866: # 32 "/usr/include/c++/10/bits/cxxabi_forced.h" 3
23866: #define _CXXABI_FORCED_H 1
23866:
23866:
23866: # 35 "/usr/include/c++/10/bits/cxxabi_forced.h" 3
23866:
23866: #pragma GCC visibility push(default)
23866:
23866:
23866: namespace __cxxabiv1
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: class __forced_unwind
23866: {
23866: virtual ~__forced_unwind() throw();
23866:
23866:
23866: virtual void __pure_dummy() = 0;
23866: };
23866: }
23866:
23866:
23866: #pragma GCC visibility pop
23866: # 37 "/usr/include/c++/10/bits/ostream_insert.h" 2 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: template<typename _CharT, typename _Traits>
23866: inline void
23866: __ostream_write(basic_ostream<_CharT, _Traits>& __out,
23866: const _CharT* __s, streamsize __n)
23866: {
23866: typedef basic_ostream<_CharT, _Traits> __ostream_type;
23866: typedef typename __ostream_type::ios_base __ios_base;
23866:
23866: const streamsize __put = __out.rdbuf()->sputn(__s, __n);
23866: if (__put != __n)
23866: __out.setstate(__ios_base::badbit);
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: inline void
23866: __ostream_fill(basic_ostream<_CharT, _Traits>& __out, streamsize __n)
23866: {
23866: typedef basic_ostream<_CharT, _Traits> __ostream_type;
23866: typedef typename __ostream_type::ios_base __ios_base;
23866:
23866: const _CharT __c = __out.fill();
23866: for (; __n > 0; --__n)
23866: {
23866: const typename _Traits::int_type __put = __out.rdbuf()->sputc(__c);
23866: if (_Traits::eq_int_type(__put, _Traits::eof()))
23866: {
23866: __out.setstate(__ios_base::badbit);
23866: break;
23866: }
23866: }
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_ostream<_CharT, _Traits>&
23866: __ostream_insert(basic_ostream<_CharT, _Traits>& __out,
23866: const _CharT* __s, streamsize __n)
23866: {
23866: typedef basic_ostream<_CharT, _Traits> __ostream_type;
23866: typedef typename __ostream_type::ios_base __ios_base;
23866:
23866: typename __ostream_type::sentry __cerb(__out);
23866: if (__cerb)
23866: {
23866: try
23866: {
23866: const streamsize __w = __out.width();
23866: if (__w > __n)
23866: {
23866: const bool __left = ((__out.flags()
23866: & __ios_base::adjustfield)
23866: == __ios_base::left);
23866: if (!__left)
23866: __ostream_fill(__out, __w - __n);
23866: if (__out.good())
23866: __ostream_write(__out, __s, __n);
23866: if (__left && __out.good())
23866: __ostream_fill(__out, __w - __n);
23866: }
23866: else
23866: __ostream_write(__out, __s, __n);
23866: __out.width(0);
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: __out._M_setstate(__ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { __out._M_setstate(__ios_base::badbit); }
23866: }
23866: return __out;
23866: }
23866:
23866:
23866:
23866:
23866: extern template ostream& __ostream_insert(ostream&, const char*, streamsize);
23866:
23866:
23866: extern template wostream& __ostream_insert(wostream&, const wchar_t*,
23866: streamsize);
23866:
23866:
23866:
23866:
23866: }
23866: # 45 "/usr/include/c++/10/string" 2 3
23866: # 55 "/usr/include/c++/10/string" 3
23866: # 1 "/usr/include/c++/10/bits/basic_string.h" 1 3
23866: # 35 "/usr/include/c++/10/bits/basic_string.h" 3
23866: #define _BASIC_STRING_H 1
23866:
23866:
23866: # 38 "/usr/include/c++/10/bits/basic_string.h" 3
23866:
23866: # 1 "/usr/include/c++/10/ext/atomicity.h" 1 3
23866: # 30 "/usr/include/c++/10/ext/atomicity.h" 3
23866: #define _GLIBCXX_ATOMICITY_H 1
23866:
23866:
23866: # 33 "/usr/include/c++/10/ext/atomicity.h" 3
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/c++/10/bits/gthr.h" 1 3
23866: # 27 "/usr/include/arm-linux-gnueabihf/c++/10/bits/gthr.h" 3
23866: #define _GLIBCXX_GCC_GTHR_H
23866:
23866:
23866: #pragma GCC visibility push(default)
23866: # 145 "/usr/include/arm-linux-gnueabihf/c++/10/bits/gthr.h" 3
23866: #define _GLIBCXX_GTHREAD_USE_WEAK 1
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/c++/10/bits/gthr-default.h" 1 3
23866: # 27 "/usr/include/arm-linux-gnueabihf/c++/10/bits/gthr-default.h" 3
23866: #define _GLIBCXX_GCC_GTHR_POSIX_H
23866:
23866:
23866:
23866:
23866: #define __GTHREADS 1
23866: #define __GTHREADS_CXX0X 1
23866:
23866: # 1 "/usr/include/pthread.h" 1 3 4
23866: # 19 "/usr/include/pthread.h" 3 4
23866: #define _PTHREAD_H 1
23866:
23866:
23866: # 1 "/usr/include/sched.h" 1 3 4
23866: # 20 "/usr/include/sched.h" 3 4
23866: #define _SCHED_H 1
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __need_size_t
23866: #define __need_NULL
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 1 3 4
23866: # 155 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_ptrdiff_t
23866: # 231 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_size_t
23866: # 340 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_wchar_t
23866: # 390 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef NULL
23866:
23866: #define NULL __null
23866: # 401 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_NULL
23866:
23866:
23866:
23866:
23866: #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
23866: # 30 "/usr/include/sched.h" 2 3 4
23866: # 43 "/usr/include/sched.h" 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/sched.h" 1 3 4
23866: # 21 "/usr/include/arm-linux-gnueabihf/bits/sched.h" 3 4
23866: #define _BITS_SCHED_H 1
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define SCHED_OTHER 0
23866: #define SCHED_FIFO 1
23866: #define SCHED_RR 2
23866:
23866: #define SCHED_BATCH 3
23866: #define SCHED_ISO 4
23866: #define SCHED_IDLE 5
23866: #define SCHED_DEADLINE 6
23866:
23866: #define SCHED_RESET_ON_FORK 0x40000000
23866:
23866:
23866:
23866:
23866: #define CSIGNAL 0x000000ff
23866: #define CLONE_VM 0x00000100
23866: #define CLONE_FS 0x00000200
23866: #define CLONE_FILES 0x00000400
23866: #define CLONE_SIGHAND 0x00000800
23866: #define CLONE_PIDFD 0x00001000
23866:
23866: #define CLONE_PTRACE 0x00002000
23866: #define CLONE_VFORK 0x00004000
23866:
23866: #define CLONE_PARENT 0x00008000
23866:
23866: #define CLONE_THREAD 0x00010000
23866: #define CLONE_NEWNS 0x00020000
23866: #define CLONE_SYSVSEM 0x00040000
23866: #define CLONE_SETTLS 0x00080000
23866: #define CLONE_PARENT_SETTID 0x00100000
23866:
23866: #define CLONE_CHILD_CLEARTID 0x00200000
23866:
23866: #define CLONE_DETACHED 0x00400000
23866: #define CLONE_UNTRACED 0x00800000
23866:
23866: #define CLONE_CHILD_SETTID 0x01000000
23866:
23866: #define CLONE_NEWCGROUP 0x02000000
23866: #define CLONE_NEWUTS 0x04000000
23866: #define CLONE_NEWIPC 0x08000000
23866: #define CLONE_NEWUSER 0x10000000
23866: #define CLONE_NEWPID 0x20000000
23866: #define CLONE_NEWNET 0x40000000
23866: #define CLONE_IO 0x80000000
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_sched_param.h" 1 3 4
23866: # 20 "/usr/include/arm-linux-gnueabihf/bits/types/struct_sched_param.h" 3 4
23866: #define _BITS_TYPES_STRUCT_SCHED_PARAM 1
23866:
23866:
23866: struct sched_param
23866: {
23866: int sched_priority;
23866: };
23866: # 77 "/usr/include/arm-linux-gnueabihf/bits/sched.h" 2 3 4
23866:
23866: extern "C" {
23866:
23866:
23866:
23866: extern int clone (int (*__fn) (void *__arg), void *__child_stack,
23866: int __flags, void *__arg, ...) throw ();
23866:
23866:
23866: extern int unshare (int __flags) throw ();
23866:
23866:
23866: extern int sched_getcpu (void) throw ();
23866:
23866:
23866: extern int getcpu (unsigned int *, unsigned int *) throw ();
23866:
23866:
23866: extern int setns (int __fd, int __nstype) throw ();
23866:
23866:
23866: }
23866: # 44 "/usr/include/sched.h" 2 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/cpu-set.h" 1 3 4
23866: # 21 "/usr/include/arm-linux-gnueabihf/bits/cpu-set.h" 3 4
23866: #define _BITS_CPU_SET_H 1
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __CPU_SETSIZE 1024
23866: #define __NCPUBITS (8 * sizeof (__cpu_mask))
23866:
23866:
23866: typedef unsigned long int __cpu_mask;
23866:
23866:
23866: #define __CPUELT(cpu) ((cpu) / __NCPUBITS)
23866: #define __CPUMASK(cpu) ((__cpu_mask) 1 << ((cpu) % __NCPUBITS))
23866:
23866:
23866: typedef struct
23866: {
23866: __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))];
23866: } cpu_set_t;
23866:
23866:
23866:
23866: #define __CPU_ZERO_S(setsize,cpusetp) do __builtin_memset (cpusetp, '\0', setsize); while (0)
23866: # 58 "/usr/include/arm-linux-gnueabihf/bits/cpu-set.h" 3 4
23866: #define __CPU_SET_S(cpu,setsize,cpusetp) (__extension__ ({ size_t __cpu = (cpu); __cpu / 8 < (setsize) ? (((__cpu_mask *) ((cpusetp)->__bits))[__CPUELT (__cpu)] |= __CPUMASK (__cpu)) : 0; }))
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __CPU_CLR_S(cpu,setsize,cpusetp) (__extension__ ({ size_t __cpu = (cpu); __cpu / 8 < (setsize) ? (((__cpu_mask *) ((cpusetp)->__bits))[__CPUELT (__cpu)] &= ~__CPUMASK (__cpu)) : 0; }))
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __CPU_ISSET_S(cpu,setsize,cpusetp) (__extension__ ({ size_t __cpu = (cpu); __cpu / 8 < (setsize) ? ((((const __cpu_mask *) ((cpusetp)->__bits))[__CPUELT (__cpu)] & __CPUMASK (__cpu))) != 0 : 0; }))
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __CPU_COUNT_S(setsize,cpusetp) __sched_cpucount (setsize, cpusetp)
23866:
23866:
23866:
23866: #define __CPU_EQUAL_S(setsize,cpusetp1,cpusetp2) (__builtin_memcmp (cpusetp1, cpusetp2, setsize) == 0)
23866: # 99 "/usr/include/arm-linux-gnueabihf/bits/cpu-set.h" 3 4
23866: #define __CPU_OP_S(setsize,destset,srcset1,srcset2,op) (__extension__ ({ cpu_set_t *__dest = (destset); const __cpu_mask *__arr1 = (srcset1)->__bits; const __cpu_mask *__arr2 = (srcset2)->__bits; size_t __imax = (setsize) / sizeof (__cpu_mask); size_t __i; for (__i = 0; __i < __imax; ++__i) ((__cpu_mask *) __dest->__bits)[__i] = __arr1[__i] op __arr2[__i]; __dest; }))
23866: # 110 "/usr/include/arm-linux-gnueabihf/bits/cpu-set.h" 3 4
23866: #define __CPU_ALLOC_SIZE(count) ((((count) + __NCPUBITS - 1) / __NCPUBITS) * sizeof (__cpu_mask))
23866:
23866: #define __CPU_ALLOC(count) __sched_cpualloc (count)
23866: #define __CPU_FREE(cpuset) __sched_cpufree (cpuset)
23866:
23866: extern "C" {
23866:
23866: extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp)
23866: throw ();
23866: extern cpu_set_t *__sched_cpualloc (size_t __count) throw () __attribute__ ((__warn_unused_result__));
23866: extern void __sched_cpufree (cpu_set_t *__set) throw ();
23866:
23866: }
23866: # 45 "/usr/include/sched.h" 2 3 4
23866:
23866:
23866: #define sched_priority sched_priority
23866: #define __sched_priority sched_priority
23866:
23866:
23866: extern "C" {
23866:
23866:
23866: extern int sched_setparam (__pid_t __pid, const struct sched_param *__param)
23866: throw ();
23866:
23866:
23866: extern int sched_getparam (__pid_t __pid, struct sched_param *__param) throw ();
23866:
23866:
23866: extern int sched_setscheduler (__pid_t __pid, int __policy,
23866: const struct sched_param *__param) throw ();
23866:
23866:
23866: extern int sched_getscheduler (__pid_t __pid) throw ();
23866:
23866:
23866: extern int sched_yield (void) throw ();
23866:
23866:
23866: extern int sched_get_priority_max (int __algorithm) throw ();
23866:
23866:
23866: extern int sched_get_priority_min (int __algorithm) throw ();
23866:
23866:
23866: extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) throw ();
23866:
23866:
23866:
23866:
23866: #define CPU_SETSIZE __CPU_SETSIZE
23866: #define CPU_SET(cpu,cpusetp) __CPU_SET_S (cpu, sizeof (cpu_set_t), cpusetp)
23866: #define CPU_CLR(cpu,cpusetp) __CPU_CLR_S (cpu, sizeof (cpu_set_t), cpusetp)
23866: #define CPU_ISSET(cpu,cpusetp) __CPU_ISSET_S (cpu, sizeof (cpu_set_t), cpusetp)
23866:
23866: #define CPU_ZERO(cpusetp) __CPU_ZERO_S (sizeof (cpu_set_t), cpusetp)
23866: #define CPU_COUNT(cpusetp) __CPU_COUNT_S (sizeof (cpu_set_t), cpusetp)
23866:
23866: #define CPU_SET_S(cpu,setsize,cpusetp) __CPU_SET_S (cpu, setsize, cpusetp)
23866: #define CPU_CLR_S(cpu,setsize,cpusetp) __CPU_CLR_S (cpu, setsize, cpusetp)
23866: #define CPU_ISSET_S(cpu,setsize,cpusetp) __CPU_ISSET_S (cpu, setsize, cpusetp)
23866:
23866: #define CPU_ZERO_S(setsize,cpusetp) __CPU_ZERO_S (setsize, cpusetp)
23866: #define CPU_COUNT_S(setsize,cpusetp) __CPU_COUNT_S (setsize, cpusetp)
23866:
23866: #define CPU_EQUAL(cpusetp1,cpusetp2) __CPU_EQUAL_S (sizeof (cpu_set_t), cpusetp1, cpusetp2)
23866:
23866: #define CPU_EQUAL_S(setsize,cpusetp1,cpusetp2) __CPU_EQUAL_S (setsize, cpusetp1, cpusetp2)
23866:
23866:
23866: #define CPU_AND(destset,srcset1,srcset2) __CPU_OP_S (sizeof (cpu_set_t), destset, srcset1, srcset2, &)
23866:
23866: #define CPU_OR(destset,srcset1,srcset2) __CPU_OP_S (sizeof (cpu_set_t), destset, srcset1, srcset2, |)
23866:
23866: #define CPU_XOR(destset,srcset1,srcset2) __CPU_OP_S (sizeof (cpu_set_t), destset, srcset1, srcset2, ^)
23866:
23866: #define CPU_AND_S(setsize,destset,srcset1,srcset2) __CPU_OP_S (setsize, destset, srcset1, srcset2, &)
23866:
23866: #define CPU_OR_S(setsize,destset,srcset1,srcset2) __CPU_OP_S (setsize, destset, srcset1, srcset2, |)
23866:
23866: #define CPU_XOR_S(setsize,destset,srcset1,srcset2) __CPU_OP_S (setsize, destset, srcset1, srcset2, ^)
23866:
23866:
23866: #define CPU_ALLOC_SIZE(count) __CPU_ALLOC_SIZE (count)
23866: #define CPU_ALLOC(count) __CPU_ALLOC (count)
23866: #define CPU_FREE(cpuset) __CPU_FREE (cpuset)
23866:
23866:
23866:
23866: extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize,
23866: const cpu_set_t *__cpuset) throw ();
23866:
23866:
23866: extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize,
23866: cpu_set_t *__cpuset) throw ();
23866:
23866:
23866: }
23866: # 23 "/usr/include/pthread.h" 2 3 4
23866: # 1 "/usr/include/time.h" 1 3 4
23866: # 23 "/usr/include/time.h" 3 4
23866: #define _TIME_H 1
23866:
23866:
23866:
23866: #define __need_size_t
23866: #define __need_NULL
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 1 3 4
23866: # 155 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_ptrdiff_t
23866: # 231 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_size_t
23866: # 340 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_wchar_t
23866: # 390 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef NULL
23866:
23866: #define NULL __null
23866: # 401 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_NULL
23866:
23866:
23866:
23866:
23866: #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
23866: # 30 "/usr/include/time.h" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/time.h" 1 3 4
23866: # 24 "/usr/include/arm-linux-gnueabihf/bits/time.h" 3 4
23866: #define _BITS_TIME_H 1
23866: # 34 "/usr/include/arm-linux-gnueabihf/bits/time.h" 3 4
23866: #define CLOCKS_PER_SEC ((__clock_t) 1000000)
23866: # 46 "/usr/include/arm-linux-gnueabihf/bits/time.h" 3 4
23866: #define CLOCK_REALTIME 0
23866:
23866: #define CLOCK_MONOTONIC 1
23866:
23866: #define CLOCK_PROCESS_CPUTIME_ID 2
23866:
23866: #define CLOCK_THREAD_CPUTIME_ID 3
23866:
23866: #define CLOCK_MONOTONIC_RAW 4
23866:
23866: #define CLOCK_REALTIME_COARSE 5
23866:
23866: #define CLOCK_MONOTONIC_COARSE 6
23866:
23866: #define CLOCK_BOOTTIME 7
23866:
23866: #define CLOCK_REALTIME_ALARM 8
23866:
23866: #define CLOCK_BOOTTIME_ALARM 9
23866:
23866: #define CLOCK_TAI 11
23866:
23866:
23866: #define TIMER_ABSTIME 1
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/timex.h" 1 3 4
23866: # 19 "/usr/include/arm-linux-gnueabihf/bits/timex.h" 3 4
23866: #define _BITS_TIMEX_H 1
23866:
23866:
23866:
23866:
23866:
23866:
23866: struct timex
23866: {
23866: unsigned int modes;
23866: __syscall_slong_t offset;
23866: __syscall_slong_t freq;
23866: __syscall_slong_t maxerror;
23866: __syscall_slong_t esterror;
23866: int status;
23866: __syscall_slong_t constant;
23866: __syscall_slong_t precision;
23866: __syscall_slong_t tolerance;
23866: struct timeval time;
23866: __syscall_slong_t tick;
23866: __syscall_slong_t ppsfreq;
23866: __syscall_slong_t jitter;
23866: int shift;
23866: __syscall_slong_t stabil;
23866: __syscall_slong_t jitcnt;
23866: __syscall_slong_t calcnt;
23866: __syscall_slong_t errcnt;
23866: __syscall_slong_t stbcnt;
23866:
23866: int tai;
23866:
23866:
23866: int :32; int :32; int :32; int :32;
23866: int :32; int :32; int :32; int :32;
23866: int :32; int :32; int :32;
23866: };
23866:
23866:
23866: #define ADJ_OFFSET 0x0001
23866: #define ADJ_FREQUENCY 0x0002
23866: #define ADJ_MAXERROR 0x0004
23866: #define ADJ_ESTERROR 0x0008
23866: #define ADJ_STATUS 0x0010
23866: #define ADJ_TIMECONST 0x0020
23866: #define ADJ_TAI 0x0080
23866: #define ADJ_SETOFFSET 0x0100
23866: #define ADJ_MICRO 0x1000
23866: #define ADJ_NANO 0x2000
23866: #define ADJ_TICK 0x4000
23866: #define ADJ_OFFSET_SINGLESHOT 0x8001
23866: #define ADJ_OFFSET_SS_READ 0xa001
23866:
23866:
23866: #define MOD_OFFSET ADJ_OFFSET
23866: #define MOD_FREQUENCY ADJ_FREQUENCY
23866: #define MOD_MAXERROR ADJ_MAXERROR
23866: #define MOD_ESTERROR ADJ_ESTERROR
23866: #define MOD_STATUS ADJ_STATUS
23866: #define MOD_TIMECONST ADJ_TIMECONST
23866: #define MOD_CLKB ADJ_TICK
23866: #define MOD_CLKA ADJ_OFFSET_SINGLESHOT
23866: #define MOD_TAI ADJ_TAI
23866: #define MOD_MICRO ADJ_MICRO
23866: #define MOD_NANO ADJ_NANO
23866:
23866:
23866:
23866: #define STA_PLL 0x0001
23866: #define STA_PPSFREQ 0x0002
23866: #define STA_PPSTIME 0x0004
23866: #define STA_FLL 0x0008
23866:
23866: #define STA_INS 0x0010
23866: #define STA_DEL 0x0020
23866: #define STA_UNSYNC 0x0040
23866: #define STA_FREQHOLD 0x0080
23866:
23866: #define STA_PPSSIGNAL 0x0100
23866: #define STA_PPSJITTER 0x0200
23866: #define STA_PPSWANDER 0x0400
23866: #define STA_PPSERROR 0x0800
23866:
23866: #define STA_CLOCKERR 0x1000
23866: #define STA_NANO 0x2000
23866: #define STA_MODE 0x4000
23866: #define STA_CLK 0x8000
23866:
23866:
23866: #define STA_RONLY (STA_PPSSIGNAL | STA_PPSJITTER | STA_PPSWANDER | STA_PPSERROR | STA_CLOCKERR | STA_NANO | STA_MODE | STA_CLK)
23866: # 74 "/usr/include/arm-linux-gnueabihf/bits/time.h" 2 3 4
23866:
23866: extern "C" {
23866:
23866:
23866: extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) throw ();
23866:
23866: }
23866: # 34 "/usr/include/time.h" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_tm.h" 1 3 4
23866:
23866: #define __struct_tm_defined 1
23866:
23866:
23866:
23866:
23866: struct tm
23866: {
23866: int tm_sec;
23866: int tm_min;
23866: int tm_hour;
23866: int tm_mday;
23866: int tm_mon;
23866: int tm_year;
23866: int tm_wday;
23866: int tm_yday;
23866: int tm_isdst;
23866:
23866:
23866: long int tm_gmtoff;
23866: const char *tm_zone;
23866:
23866:
23866:
23866:
23866: };
23866: # 40 "/usr/include/time.h" 2 3 4
23866: # 48 "/usr/include/time.h" 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_itimerspec.h" 1 3 4
23866:
23866: #define __itimerspec_defined 1
23866:
23866:
23866:
23866:
23866:
23866: struct itimerspec
23866: {
23866: struct timespec it_interval;
23866: struct timespec it_value;
23866: };
23866: # 49 "/usr/include/time.h" 2 3 4
23866: struct sigevent;
23866: # 65 "/usr/include/time.h" 3 4
23866: #define TIME_UTC 1
23866:
23866:
23866: extern "C" {
23866:
23866:
23866:
23866: extern clock_t clock (void) throw ();
23866:
23866:
23866: extern time_t time (time_t *__timer) throw ();
23866:
23866:
23866: extern double difftime (time_t __time1, time_t __time0)
23866: throw () __attribute__ ((__const__));
23866:
23866:
23866: extern time_t mktime (struct tm *__tp) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern size_t strftime (char *__restrict __s, size_t __maxsize,
23866: const char *__restrict __format,
23866: const struct tm *__restrict __tp) throw ();
23866:
23866:
23866:
23866:
23866: extern char *strptime (const char *__restrict __s,
23866: const char *__restrict __fmt, struct tm *__tp)
23866: throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern size_t strftime_l (char *__restrict __s, size_t __maxsize,
23866: const char *__restrict __format,
23866: const struct tm *__restrict __tp,
23866: locale_t __loc) throw ();
23866:
23866:
23866:
23866: extern char *strptime_l (const char *__restrict __s,
23866: const char *__restrict __fmt, struct tm *__tp,
23866: locale_t __loc) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern struct tm *gmtime (const time_t *__timer) throw ();
23866:
23866:
23866:
23866: extern struct tm *localtime (const time_t *__timer) throw ();
23866:
23866:
23866:
23866:
23866: extern struct tm *gmtime_r (const time_t *__restrict __timer,
23866: struct tm *__restrict __tp) throw ();
23866:
23866:
23866:
23866: extern struct tm *localtime_r (const time_t *__restrict __timer,
23866: struct tm *__restrict __tp) throw ();
23866:
23866:
23866:
23866:
23866: extern char *asctime (const struct tm *__tp) throw ();
23866:
23866:
23866: extern char *ctime (const time_t *__timer) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern char *asctime_r (const struct tm *__restrict __tp,
23866: char *__restrict __buf) throw ();
23866:
23866:
23866: extern char *ctime_r (const time_t *__restrict __timer,
23866: char *__restrict __buf) throw ();
23866:
23866:
23866:
23866:
23866: extern char *__tzname[2];
23866: extern int __daylight;
23866: extern long int __timezone;
23866:
23866:
23866:
23866:
23866: extern char *tzname[2];
23866:
23866:
23866:
23866: extern void tzset (void) throw ();
23866:
23866:
23866:
23866: extern int daylight;
23866: extern long int timezone;
23866:
23866:
23866:
23866:
23866:
23866: #define __isleap(year) ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0))
23866: # 190 "/usr/include/time.h" 3 4
23866: extern time_t timegm (struct tm *__tp) throw ();
23866:
23866:
23866: extern time_t timelocal (struct tm *__tp) throw ();
23866:
23866:
23866: extern int dysize (int __year) throw () __attribute__ ((__const__));
23866: # 205 "/usr/include/time.h" 3 4
23866: extern int nanosleep (const struct timespec *__requested_time,
23866: struct timespec *__remaining);
23866:
23866:
23866:
23866: extern int clock_getres (clockid_t __clock_id, struct timespec *__res) throw ();
23866:
23866:
23866: extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) throw ();
23866:
23866:
23866: extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp)
23866: throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int clock_nanosleep (clockid_t __clock_id, int __flags,
23866: const struct timespec *__req,
23866: struct timespec *__rem);
23866:
23866:
23866: extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) throw ();
23866:
23866:
23866:
23866:
23866: extern int timer_create (clockid_t __clock_id,
23866: struct sigevent *__restrict __evp,
23866: timer_t *__restrict __timerid) throw ();
23866:
23866:
23866: extern int timer_delete (timer_t __timerid) throw ();
23866:
23866:
23866: extern int timer_settime (timer_t __timerid, int __flags,
23866: const struct itimerspec *__restrict __value,
23866: struct itimerspec *__restrict __ovalue) throw ();
23866:
23866:
23866: extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
23866: throw ();
23866:
23866:
23866: extern int timer_getoverrun (timer_t __timerid) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern int timespec_get (struct timespec *__ts, int __base)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866: # 274 "/usr/include/time.h" 3 4
23866: extern int getdate_err;
23866: # 283 "/usr/include/time.h" 3 4
23866: extern struct tm *getdate (const char *__string);
23866: # 297 "/usr/include/time.h" 3 4
23866: extern int getdate_r (const char *__restrict __string,
23866: struct tm *__restrict __resbufp);
23866:
23866:
23866: }
23866: # 24 "/usr/include/pthread.h" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/setjmp.h" 1 3 4
23866: # 21 "/usr/include/arm-linux-gnueabihf/bits/setjmp.h" 3 4
23866: #define _BITS_SETJMP_H 1
23866: # 33 "/usr/include/arm-linux-gnueabihf/bits/setjmp.h" 3 4
23866: typedef int __jmp_buf[64] __attribute__((__aligned__ (8)));
23866: # 28 "/usr/include/pthread.h" 2 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4
23866: # 18 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 3 4
23866: #define __WORDSIZE 32
23866: #define __WORDSIZE_TIME64_COMPAT32 0
23866: #define __WORDSIZE32_SIZE_ULONG 0
23866: #define __WORDSIZE32_PTRDIFF_LONG 0
23866: # 29 "/usr/include/pthread.h" 2 3 4
23866:
23866:
23866:
23866:
23866: enum
23866: {
23866: PTHREAD_CREATE_JOINABLE,
23866: #define PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_JOINABLE
23866: PTHREAD_CREATE_DETACHED
23866: #define PTHREAD_CREATE_DETACHED PTHREAD_CREATE_DETACHED
23866: };
23866:
23866:
23866:
23866: enum
23866: {
23866: PTHREAD_MUTEX_TIMED_NP,
23866: PTHREAD_MUTEX_RECURSIVE_NP,
23866: PTHREAD_MUTEX_ERRORCHECK_NP,
23866: PTHREAD_MUTEX_ADAPTIVE_NP
23866:
23866: ,
23866: PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP,
23866: PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP,
23866: PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP,
23866: PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL
23866:
23866:
23866:
23866: , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP
23866:
23866: };
23866:
23866:
23866:
23866:
23866: enum
23866: {
23866: PTHREAD_MUTEX_STALLED,
23866: PTHREAD_MUTEX_STALLED_NP = PTHREAD_MUTEX_STALLED,
23866: PTHREAD_MUTEX_ROBUST,
23866: PTHREAD_MUTEX_ROBUST_NP = PTHREAD_MUTEX_ROBUST
23866: };
23866:
23866:
23866:
23866:
23866:
23866: enum
23866: {
23866: PTHREAD_PRIO_NONE,
23866: PTHREAD_PRIO_INHERIT,
23866: PTHREAD_PRIO_PROTECT
23866: };
23866:
23866:
23866:
23866: #define PTHREAD_MUTEX_INITIALIZER { { __PTHREAD_MUTEX_INITIALIZER (PTHREAD_MUTEX_TIMED_NP) } }
23866:
23866:
23866: #define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP { { __PTHREAD_MUTEX_INITIALIZER (PTHREAD_MUTEX_RECURSIVE_NP) } }
23866:
23866: #define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP { { __PTHREAD_MUTEX_INITIALIZER (PTHREAD_MUTEX_ERRORCHECK_NP) } }
23866:
23866: #define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP { { __PTHREAD_MUTEX_INITIALIZER (PTHREAD_MUTEX_ADAPTIVE_NP) } }
23866:
23866:
23866:
23866:
23866:
23866:
23866: enum
23866: {
23866: PTHREAD_RWLOCK_PREFER_READER_NP,
23866: PTHREAD_RWLOCK_PREFER_WRITER_NP,
23866: PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP,
23866: PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP
23866: };
23866:
23866:
23866:
23866: #define PTHREAD_RWLOCK_INITIALIZER { { __PTHREAD_RWLOCK_INITIALIZER (PTHREAD_RWLOCK_DEFAULT_NP) } }
23866:
23866:
23866: #define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP { { __PTHREAD_RWLOCK_INITIALIZER (PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP) } }
23866:
23866:
23866:
23866:
23866:
23866:
23866: enum
23866: {
23866: PTHREAD_INHERIT_SCHED,
23866: #define PTHREAD_INHERIT_SCHED PTHREAD_INHERIT_SCHED
23866: PTHREAD_EXPLICIT_SCHED
23866: #define PTHREAD_EXPLICIT_SCHED PTHREAD_EXPLICIT_SCHED
23866: };
23866:
23866:
23866:
23866: enum
23866: {
23866: PTHREAD_SCOPE_SYSTEM,
23866: #define PTHREAD_SCOPE_SYSTEM PTHREAD_SCOPE_SYSTEM
23866: PTHREAD_SCOPE_PROCESS
23866: #define PTHREAD_SCOPE_PROCESS PTHREAD_SCOPE_PROCESS
23866: };
23866:
23866:
23866:
23866: enum
23866: {
23866: PTHREAD_PROCESS_PRIVATE,
23866: #define PTHREAD_PROCESS_PRIVATE PTHREAD_PROCESS_PRIVATE
23866: PTHREAD_PROCESS_SHARED
23866: #define PTHREAD_PROCESS_SHARED PTHREAD_PROCESS_SHARED
23866: };
23866:
23866:
23866:
23866:
23866: #define PTHREAD_COND_INITIALIZER { { {0}, {0}, {0, 0}, {0, 0}, 0, 0, {0, 0} } }
23866:
23866:
23866:
23866: struct _pthread_cleanup_buffer
23866: {
23866: void (*__routine) (void *);
23866: void *__arg;
23866: int __canceltype;
23866: struct _pthread_cleanup_buffer *__prev;
23866: };
23866:
23866:
23866: enum
23866: {
23866: PTHREAD_CANCEL_ENABLE,
23866: #define PTHREAD_CANCEL_ENABLE PTHREAD_CANCEL_ENABLE
23866: PTHREAD_CANCEL_DISABLE
23866: #define PTHREAD_CANCEL_DISABLE PTHREAD_CANCEL_DISABLE
23866: };
23866: enum
23866: {
23866: PTHREAD_CANCEL_DEFERRED,
23866: #define PTHREAD_CANCEL_DEFERRED PTHREAD_CANCEL_DEFERRED
23866: PTHREAD_CANCEL_ASYNCHRONOUS
23866: #define PTHREAD_CANCEL_ASYNCHRONOUS PTHREAD_CANCEL_ASYNCHRONOUS
23866: };
23866: #define PTHREAD_CANCELED ((void *) -1)
23866:
23866:
23866:
23866: #define PTHREAD_ONCE_INIT 0
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define PTHREAD_BARRIER_SERIAL_THREAD -1
23866:
23866:
23866:
23866: extern "C" {
23866:
23866:
23866:
23866:
23866: extern int pthread_create (pthread_t *__restrict __newthread,
23866: const pthread_attr_t *__restrict __attr,
23866: void *(*__start_routine) (void *),
23866: void *__restrict __arg) throw () __attribute__ ((__nonnull__ (1, 3)));
23866:
23866:
23866:
23866:
23866:
23866: extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__));
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int pthread_join (pthread_t __th, void **__thread_return);
23866:
23866:
23866:
23866:
23866: extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return,
23866: const struct timespec *__abstime);
23866: # 238 "/usr/include/pthread.h" 3 4
23866: extern int pthread_clockjoin_np (pthread_t __th, void **__thread_return,
23866: clockid_t __clockid,
23866: const struct timespec *__abstime);
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int pthread_detach (pthread_t __th) throw ();
23866:
23866:
23866:
23866: extern pthread_t pthread_self (void) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern int pthread_equal (pthread_t __thread1, pthread_t __thread2)
23866: throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int pthread_attr_init (pthread_attr_t *__attr) throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_attr_destroy (pthread_attr_t *__attr)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_attr_getdetachstate (const pthread_attr_t *__attr,
23866: int *__detachstate)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern int pthread_attr_setdetachstate (pthread_attr_t *__attr,
23866: int __detachstate)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866: extern int pthread_attr_getguardsize (const pthread_attr_t *__attr,
23866: size_t *__guardsize)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern int pthread_attr_setguardsize (pthread_attr_t *__attr,
23866: size_t __guardsize)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866: extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict __attr,
23866: struct sched_param *__restrict __param)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr,
23866: const struct sched_param *__restrict
23866: __param) throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict
23866: __attr, int *__restrict __policy)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict
23866: __attr, int *__restrict __inherit)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern int pthread_attr_setinheritsched (pthread_attr_t *__attr,
23866: int __inherit)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866: extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr,
23866: int *__restrict __scope)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict
23866: __attr, void **__restrict __stackaddr)
23866: throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__deprecated__));
23866:
23866:
23866:
23866:
23866:
23866: extern int pthread_attr_setstackaddr (pthread_attr_t *__attr,
23866: void *__stackaddr)
23866: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__));
23866:
23866:
23866: extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict
23866: __attr, size_t *__restrict __stacksize)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866:
23866:
23866: extern int pthread_attr_setstacksize (pthread_attr_t *__attr,
23866: size_t __stacksize)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866: extern int pthread_attr_getstack (const pthread_attr_t *__restrict __attr,
23866: void **__restrict __stackaddr,
23866: size_t *__restrict __stacksize)
23866: throw () __attribute__ ((__nonnull__ (1, 2, 3)));
23866:
23866:
23866:
23866:
23866: extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr,
23866: size_t __stacksize) throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866:
23866:
23866: extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr,
23866: size_t __cpusetsize,
23866: const cpu_set_t *__cpuset)
23866: throw () __attribute__ ((__nonnull__ (1, 3)));
23866:
23866:
23866:
23866: extern int pthread_attr_getaffinity_np (const pthread_attr_t *__attr,
23866: size_t __cpusetsize,
23866: cpu_set_t *__cpuset)
23866: throw () __attribute__ ((__nonnull__ (1, 3)));
23866:
23866:
23866: extern int pthread_getattr_default_np (pthread_attr_t *__attr)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866: extern int pthread_setattr_default_np (const pthread_attr_t *__attr)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866:
23866: extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr)
23866: throw () __attribute__ ((__nonnull__ (2)));
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int pthread_setschedparam (pthread_t __target_thread, int __policy,
23866: const struct sched_param *__param)
23866: throw () __attribute__ ((__nonnull__ (3)));
23866:
23866:
23866: extern int pthread_getschedparam (pthread_t __target_thread,
23866: int *__restrict __policy,
23866: struct sched_param *__restrict __param)
23866: throw () __attribute__ ((__nonnull__ (2, 3)));
23866:
23866:
23866: extern int pthread_setschedprio (pthread_t __target_thread, int __prio)
23866: throw ();
23866:
23866:
23866:
23866:
23866: extern int pthread_getname_np (pthread_t __target_thread, char *__buf,
23866: size_t __buflen)
23866: throw () __attribute__ ((__nonnull__ (2)));
23866:
23866:
23866: extern int pthread_setname_np (pthread_t __target_thread, const char *__name)
23866: throw () __attribute__ ((__nonnull__ (2)));
23866:
23866:
23866:
23866:
23866:
23866: extern int pthread_getconcurrency (void) throw ();
23866:
23866:
23866: extern int pthread_setconcurrency (int __level) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int pthread_yield (void) throw ();
23866:
23866:
23866:
23866:
23866: extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize,
23866: const cpu_set_t *__cpuset)
23866: throw () __attribute__ ((__nonnull__ (3)));
23866:
23866:
23866: extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize,
23866: cpu_set_t *__cpuset)
23866: throw () __attribute__ ((__nonnull__ (3)));
23866: # 470 "/usr/include/pthread.h" 3 4
23866: extern int pthread_once (pthread_once_t *__once_control,
23866: void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2)));
23866: # 482 "/usr/include/pthread.h" 3 4
23866: extern int pthread_setcancelstate (int __state, int *__oldstate);
23866:
23866:
23866:
23866: extern int pthread_setcanceltype (int __type, int *__oldtype);
23866:
23866:
23866: extern int pthread_cancel (pthread_t __th);
23866:
23866:
23866:
23866:
23866: extern void pthread_testcancel (void);
23866:
23866:
23866:
23866:
23866: typedef struct
23866: {
23866: struct
23866: {
23866: __jmp_buf __cancel_jmp_buf;
23866: int __mask_was_saved;
23866: } __cancel_jmp_buf[1];
23866: void *__pad[4];
23866: } __pthread_unwind_buf_t __attribute__ ((__aligned__));
23866:
23866:
23866:
23866: #define __cleanup_fct_attribute
23866:
23866:
23866:
23866:
23866: struct __pthread_cleanup_frame
23866: {
23866: void (*__cancel_routine) (void *);
23866: void *__cancel_arg;
23866: int __do_it;
23866: int __cancel_type;
23866: };
23866:
23866:
23866:
23866:
23866: class __pthread_cleanup_class
23866: {
23866: void (*__cancel_routine) (void *);
23866: void *__cancel_arg;
23866: int __do_it;
23866: int __cancel_type;
23866:
23866: public:
23866: __pthread_cleanup_class (void (*__fct) (void *), void *__arg)
23866: : __cancel_routine (__fct), __cancel_arg (__arg), __do_it (1) { }
23866: ~__pthread_cleanup_class () { if (__do_it) __cancel_routine (__cancel_arg); }
23866: void __setdoit (int __newval) { __do_it = __newval; }
23866: void __defer () { pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED,
23866: &__cancel_type); }
23866: void __restore () const { pthread_setcanceltype (__cancel_type, 0); }
23866: };
23866: # 551 "/usr/include/pthread.h" 3 4
23866: #define pthread_cleanup_push(routine,arg) do { __pthread_cleanup_class __clframe (routine, arg)
23866:
23866:
23866:
23866:
23866:
23866: #define pthread_cleanup_pop(execute) __clframe.__setdoit (execute); } while (0)
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define pthread_cleanup_push_defer_np(routine,arg) do { __pthread_cleanup_class __clframe (routine, arg); __clframe.__defer ()
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define pthread_cleanup_pop_restore_np(execute) __clframe.__restore (); __clframe.__setdoit (execute); } while (0)
23866: # 718 "/usr/include/pthread.h" 3 4
23866: struct __jmp_buf_tag;
23866: extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern int pthread_mutex_init (pthread_mutex_t *__mutex,
23866: const pthread_mutexattr_t *__mutexattr)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_mutex_destroy (pthread_mutex_t *__mutex)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_mutex_trylock (pthread_mutex_t *__mutex)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866: extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
23866: const struct timespec *__restrict
23866: __abstime) throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866:
23866: extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex,
23866: clockid_t __clockid,
23866: const struct timespec *__restrict
23866: __abstime) throw () __attribute__ ((__nonnull__ (1, 3)));
23866:
23866:
23866:
23866: extern int pthread_mutex_unlock (pthread_mutex_t *__mutex)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866: extern int pthread_mutex_getprioceiling (const pthread_mutex_t *
23866: __restrict __mutex,
23866: int *__restrict __prioceiling)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866:
23866: extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex,
23866: int __prioceiling,
23866: int *__restrict __old_ceiling)
23866: throw () __attribute__ ((__nonnull__ (1, 3)));
23866:
23866:
23866:
23866:
23866: extern int pthread_mutex_consistent (pthread_mutex_t *__mutex)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866: extern int pthread_mutex_consistent_np (pthread_mutex_t *__mutex)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866: # 789 "/usr/include/pthread.h" 3 4
23866: extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_mutexattr_getpshared (const pthread_mutexattr_t *
23866: __restrict __attr,
23866: int *__restrict __pshared)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr,
23866: int __pshared)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866: extern int pthread_mutexattr_gettype (const pthread_mutexattr_t *__restrict
23866: __attr, int *__restrict __kind)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866:
23866:
23866: extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866: extern int pthread_mutexattr_getprotocol (const pthread_mutexattr_t *
23866: __restrict __attr,
23866: int *__restrict __protocol)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866:
23866: extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr,
23866: int __protocol)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t *
23866: __restrict __attr,
23866: int *__restrict __prioceiling)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr,
23866: int __prioceiling)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866: extern int pthread_mutexattr_getrobust (const pthread_mutexattr_t *__attr,
23866: int *__robustness)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866: extern int pthread_mutexattr_getrobust_np (const pthread_mutexattr_t *__attr,
23866: int *__robustness)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866:
23866: extern int pthread_mutexattr_setrobust (pthread_mutexattr_t *__attr,
23866: int __robustness)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866: extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *__attr,
23866: int __robustness)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866: # 871 "/usr/include/pthread.h" 3 4
23866: extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
23866: const pthread_rwlockattr_t *__restrict
23866: __attr) throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866: extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
23866: const struct timespec *__restrict
23866: __abstime) throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866:
23866: extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock,
23866: clockid_t __clockid,
23866: const struct timespec *__restrict
23866: __abstime) throw () __attribute__ ((__nonnull__ (1, 3)));
23866:
23866:
23866:
23866: extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866: extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
23866: const struct timespec *__restrict
23866: __abstime) throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866:
23866: extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock,
23866: clockid_t __clockid,
23866: const struct timespec *__restrict
23866: __abstime) throw () __attribute__ ((__nonnull__ (1, 3)));
23866:
23866:
23866:
23866: extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866:
23866:
23866: extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t *
23866: __restrict __attr,
23866: int *__restrict __pshared)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr,
23866: int __pshared)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t *
23866: __restrict __attr,
23866: int *__restrict __pref)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr,
23866: int __pref) throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int pthread_cond_init (pthread_cond_t *__restrict __cond,
23866: const pthread_condattr_t *__restrict __cond_attr)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_cond_destroy (pthread_cond_t *__cond)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_cond_signal (pthread_cond_t *__cond)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_cond_broadcast (pthread_cond_t *__cond)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
23866: pthread_mutex_t *__restrict __mutex)
23866: __attribute__ ((__nonnull__ (1, 2)));
23866: # 997 "/usr/include/pthread.h" 3 4
23866: extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
23866: pthread_mutex_t *__restrict __mutex,
23866: const struct timespec *__restrict __abstime)
23866: __attribute__ ((__nonnull__ (1, 2, 3)));
23866: # 1010 "/usr/include/pthread.h" 3 4
23866: extern int pthread_cond_clockwait (pthread_cond_t *__restrict __cond,
23866: pthread_mutex_t *__restrict __mutex,
23866: __clockid_t __clock_id,
23866: const struct timespec *__restrict __abstime)
23866: __attribute__ ((__nonnull__ (1, 2, 4)));
23866:
23866:
23866:
23866:
23866:
23866: extern int pthread_condattr_init (pthread_condattr_t *__attr)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_condattr_destroy (pthread_condattr_t *__attr)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_condattr_getpshared (const pthread_condattr_t *
23866: __restrict __attr,
23866: int *__restrict __pshared)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern int pthread_condattr_setpshared (pthread_condattr_t *__attr,
23866: int __pshared) throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866: extern int pthread_condattr_getclock (const pthread_condattr_t *
23866: __restrict __attr,
23866: __clockid_t *__restrict __clock_id)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern int pthread_condattr_setclock (pthread_condattr_t *__attr,
23866: __clockid_t __clock_id)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866: # 1056 "/usr/include/pthread.h" 3 4
23866: extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_spin_destroy (pthread_spinlock_t *__lock)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_spin_lock (pthread_spinlock_t *__lock)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_spin_trylock (pthread_spinlock_t *__lock)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_spin_unlock (pthread_spinlock_t *__lock)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier,
23866: const pthread_barrierattr_t *__restrict
23866: __attr, unsigned int __count)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_barrier_destroy (pthread_barrier_t *__barrier)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_barrier_wait (pthread_barrier_t *__barrier)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866: extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t *
23866: __restrict __attr,
23866: int *__restrict __pshared)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866: extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr,
23866: int __pshared)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866: # 1123 "/usr/include/pthread.h" 3 4
23866: extern int pthread_key_create (pthread_key_t *__key,
23866: void (*__destr_function) (void *))
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int pthread_key_delete (pthread_key_t __key) throw ();
23866:
23866:
23866: extern void *pthread_getspecific (pthread_key_t __key) throw ();
23866:
23866:
23866: extern int pthread_setspecific (pthread_key_t __key,
23866: const void *__pointer) throw () ;
23866:
23866:
23866:
23866:
23866: extern int pthread_getcpuclockid (pthread_t __thread_id,
23866: __clockid_t *__clock_id)
23866: throw () __attribute__ ((__nonnull__ (2)));
23866: # 1157 "/usr/include/pthread.h" 3 4
23866: extern int pthread_atfork (void (*__prepare) (void),
23866: void (*__parent) (void),
23866: void (*__child) (void)) throw ();
23866:
23866:
23866:
23866:
23866: extern __inline __attribute__ ((__gnu_inline__)) int
23866: __attribute__ ((__leaf__)) pthread_equal (pthread_t __thread1, pthread_t __thread2) throw ()
23866: {
23866: return __thread1 == __thread2;
23866: }
23866:
23866:
23866: }
23866: # 36 "/usr/include/arm-linux-gnueabihf/c++/10/bits/gthr-default.h" 2 3
23866: # 47 "/usr/include/arm-linux-gnueabihf/c++/10/bits/gthr-default.h" 3
23866: typedef pthread_t __gthread_t;
23866: typedef pthread_key_t __gthread_key_t;
23866: typedef pthread_once_t __gthread_once_t;
23866: typedef pthread_mutex_t __gthread_mutex_t;
23866: typedef pthread_mutex_t __gthread_recursive_mutex_t;
23866: typedef pthread_cond_t __gthread_cond_t;
23866: typedef struct timespec __gthread_time_t;
23866:
23866:
23866:
23866: #define __GTHREAD_HAS_COND 1
23866:
23866: #define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER
23866: #define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function
23866: #define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT
23866:
23866:
23866:
23866: #define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
23866:
23866:
23866:
23866: #define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER
23866: #define __GTHREAD_TIME_INIT {0,0}
23866: # 87 "/usr/include/arm-linux-gnueabihf/c++/10/bits/gthr-default.h" 3
23866: #define __gthrw_pragma(pragma)
23866:
23866: #define __gthrw2(name,name2,type) static __typeof(type) name __attribute__ ((__weakref__(#name2), __copy__ (type))); __gthrw_pragma(weak type)
23866:
23866:
23866:
23866: #define __gthrw_(name) __gthrw_ ## name
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name)
23866:
23866: static __typeof(pthread_once) __gthrw_pthread_once __attribute__ ((__weakref__("pthread_once"), __copy__ (pthread_once)));
23866: static __typeof(pthread_getspecific) __gthrw_pthread_getspecific __attribute__ ((__weakref__("pthread_getspecific"), __copy__ (pthread_getspecific)));
23866: static __typeof(pthread_setspecific) __gthrw_pthread_setspecific __attribute__ ((__weakref__("pthread_setspecific"), __copy__ (pthread_setspecific)));
23866:
23866: static __typeof(pthread_create) __gthrw_pthread_create __attribute__ ((__weakref__("pthread_create"), __copy__ (pthread_create)));
23866: static __typeof(pthread_join) __gthrw_pthread_join __attribute__ ((__weakref__("pthread_join"), __copy__ (pthread_join)));
23866: static __typeof(pthread_equal) __gthrw_pthread_equal __attribute__ ((__weakref__("pthread_equal"), __copy__ (pthread_equal)));
23866: static __typeof(pthread_self) __gthrw_pthread_self __attribute__ ((__weakref__("pthread_self"), __copy__ (pthread_self)));
23866: static __typeof(pthread_detach) __gthrw_pthread_detach __attribute__ ((__weakref__("pthread_detach"), __copy__ (pthread_detach)));
23866:
23866: static __typeof(pthread_cancel) __gthrw_pthread_cancel __attribute__ ((__weakref__("pthread_cancel"), __copy__ (pthread_cancel)));
23866:
23866: static __typeof(sched_yield) __gthrw_sched_yield __attribute__ ((__weakref__("sched_yield"), __copy__ (sched_yield)));
23866:
23866: static __typeof(pthread_mutex_lock) __gthrw_pthread_mutex_lock __attribute__ ((__weakref__("pthread_mutex_lock"), __copy__ (pthread_mutex_lock)));
23866: static __typeof(pthread_mutex_trylock) __gthrw_pthread_mutex_trylock __attribute__ ((__weakref__("pthread_mutex_trylock"), __copy__ (pthread_mutex_trylock)));
23866:
23866: static __typeof(pthread_mutex_timedlock) __gthrw_pthread_mutex_timedlock __attribute__ ((__weakref__("pthread_mutex_timedlock"), __copy__ (pthread_mutex_timedlock)));
23866:
23866: static __typeof(pthread_mutex_unlock) __gthrw_pthread_mutex_unlock __attribute__ ((__weakref__("pthread_mutex_unlock"), __copy__ (pthread_mutex_unlock)));
23866: static __typeof(pthread_mutex_init) __gthrw_pthread_mutex_init __attribute__ ((__weakref__("pthread_mutex_init"), __copy__ (pthread_mutex_init)));
23866: static __typeof(pthread_mutex_destroy) __gthrw_pthread_mutex_destroy __attribute__ ((__weakref__("pthread_mutex_destroy"), __copy__ (pthread_mutex_destroy)));
23866:
23866: static __typeof(pthread_cond_init) __gthrw_pthread_cond_init __attribute__ ((__weakref__("pthread_cond_init"), __copy__ (pthread_cond_init)));
23866: static __typeof(pthread_cond_broadcast) __gthrw_pthread_cond_broadcast __attribute__ ((__weakref__("pthread_cond_broadcast"), __copy__ (pthread_cond_broadcast)));
23866: static __typeof(pthread_cond_signal) __gthrw_pthread_cond_signal __attribute__ ((__weakref__("pthread_cond_signal"), __copy__ (pthread_cond_signal)));
23866: static __typeof(pthread_cond_wait) __gthrw_pthread_cond_wait __attribute__ ((__weakref__("pthread_cond_wait"), __copy__ (pthread_cond_wait)));
23866: static __typeof(pthread_cond_timedwait) __gthrw_pthread_cond_timedwait __attribute__ ((__weakref__("pthread_cond_timedwait"), __copy__ (pthread_cond_timedwait)));
23866: static __typeof(pthread_cond_destroy) __gthrw_pthread_cond_destroy __attribute__ ((__weakref__("pthread_cond_destroy"), __copy__ (pthread_cond_destroy)));
23866:
23866: static __typeof(pthread_key_create) __gthrw_pthread_key_create __attribute__ ((__weakref__("pthread_key_create"), __copy__ (pthread_key_create)));
23866: static __typeof(pthread_key_delete) __gthrw_pthread_key_delete __attribute__ ((__weakref__("pthread_key_delete"), __copy__ (pthread_key_delete)));
23866: static __typeof(pthread_mutexattr_init) __gthrw_pthread_mutexattr_init __attribute__ ((__weakref__("pthread_mutexattr_init"), __copy__ (pthread_mutexattr_init)));
23866: static __typeof(pthread_mutexattr_settype) __gthrw_pthread_mutexattr_settype __attribute__ ((__weakref__("pthread_mutexattr_settype"), __copy__ (pthread_mutexattr_settype)));
23866: static __typeof(pthread_mutexattr_destroy) __gthrw_pthread_mutexattr_destroy __attribute__ ((__weakref__("pthread_mutexattr_destroy"), __copy__ (pthread_mutexattr_destroy)));
23866: # 237 "/usr/include/arm-linux-gnueabihf/c++/10/bits/gthr-default.h" 3
23866: static __typeof(pthread_key_create) __gthrw___pthread_key_create __attribute__ ((__weakref__("__pthread_key_create"), __copy__ (pthread_key_create)));
23866:
23866:
23866: #define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create)
23866:
23866:
23866:
23866:
23866:
23866:
23866: static inline int
23866: __gthread_active_p (void)
23866: {
23866: static void *const __gthread_active_ptr
23866: = __extension__ (void *) &__gthrw___pthread_key_create;
23866: return __gthread_active_ptr != 0;
23866: }
23866: # 659 "/usr/include/arm-linux-gnueabihf/c++/10/bits/gthr-default.h" 3
23866: static inline int
23866: __gthread_create (__gthread_t *__threadid, void *(*__func) (void*),
23866: void *__args)
23866: {
23866: return __gthrw_pthread_create (__threadid, __null, __func, __args);
23866: }
23866:
23866: static inline int
23866: __gthread_join (__gthread_t __threadid, void **__value_ptr)
23866: {
23866: return __gthrw_pthread_join (__threadid, __value_ptr);
23866: }
23866:
23866: static inline int
23866: __gthread_detach (__gthread_t __threadid)
23866: {
23866: return __gthrw_pthread_detach (__threadid);
23866: }
23866:
23866: static inline int
23866: __gthread_equal (__gthread_t __t1, __gthread_t __t2)
23866: {
23866: return __gthrw_pthread_equal (__t1, __t2);
23866: }
23866:
23866: static inline __gthread_t
23866: __gthread_self (void)
23866: {
23866: return __gthrw_pthread_self ();
23866: }
23866:
23866: static inline int
23866: __gthread_yield (void)
23866: {
23866: return __gthrw_sched_yield ();
23866: }
23866:
23866: static inline int
23866: __gthread_once (__gthread_once_t *__once, void (*__func) (void))
23866: {
23866: if (__gthread_active_p ())
23866: return __gthrw_pthread_once (__once, __func);
23866: else
23866: return -1;
23866: }
23866:
23866: static inline int
23866: __gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *))
23866: {
23866: return __gthrw_pthread_key_create (__key, __dtor);
23866: }
23866:
23866: static inline int
23866: __gthread_key_delete (__gthread_key_t __key)
23866: {
23866: return __gthrw_pthread_key_delete (__key);
23866: }
23866:
23866: static inline void *
23866: __gthread_getspecific (__gthread_key_t __key)
23866: {
23866: return __gthrw_pthread_getspecific (__key);
23866: }
23866:
23866: static inline int
23866: __gthread_setspecific (__gthread_key_t __key, const void *__ptr)
23866: {
23866: return __gthrw_pthread_setspecific (__key, __ptr);
23866: }
23866:
23866: static inline void
23866: __gthread_mutex_init_function (__gthread_mutex_t *__mutex)
23866: {
23866: if (__gthread_active_p ())
23866: __gthrw_pthread_mutex_init (__mutex, __null);
23866: }
23866:
23866: static inline int
23866: __gthread_mutex_destroy (__gthread_mutex_t *__mutex)
23866: {
23866: if (__gthread_active_p ())
23866: return __gthrw_pthread_mutex_destroy (__mutex);
23866: else
23866: return 0;
23866: }
23866:
23866: static inline int
23866: __gthread_mutex_lock (__gthread_mutex_t *__mutex)
23866: {
23866: if (__gthread_active_p ())
23866: return __gthrw_pthread_mutex_lock (__mutex);
23866: else
23866: return 0;
23866: }
23866:
23866: static inline int
23866: __gthread_mutex_trylock (__gthread_mutex_t *__mutex)
23866: {
23866: if (__gthread_active_p ())
23866: return __gthrw_pthread_mutex_trylock (__mutex);
23866: else
23866: return 0;
23866: }
23866:
23866:
23866: static inline int
23866: __gthread_mutex_timedlock (__gthread_mutex_t *__mutex,
23866: const __gthread_time_t *__abs_timeout)
23866: {
23866: if (__gthread_active_p ())
23866: return __gthrw_pthread_mutex_timedlock (__mutex, __abs_timeout);
23866: else
23866: return 0;
23866: }
23866:
23866:
23866: static inline int
23866: __gthread_mutex_unlock (__gthread_mutex_t *__mutex)
23866: {
23866: if (__gthread_active_p ())
23866: return __gthrw_pthread_mutex_unlock (__mutex);
23866: else
23866: return 0;
23866: }
23866: # 808 "/usr/include/arm-linux-gnueabihf/c++/10/bits/gthr-default.h" 3
23866: static inline int
23866: __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex)
23866: {
23866: return __gthread_mutex_lock (__mutex);
23866: }
23866:
23866: static inline int
23866: __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex)
23866: {
23866: return __gthread_mutex_trylock (__mutex);
23866: }
23866:
23866:
23866: static inline int
23866: __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex,
23866: const __gthread_time_t *__abs_timeout)
23866: {
23866: return __gthread_mutex_timedlock (__mutex, __abs_timeout);
23866: }
23866:
23866:
23866: static inline int
23866: __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex)
23866: {
23866: return __gthread_mutex_unlock (__mutex);
23866: }
23866:
23866: static inline int
23866: __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex)
23866: {
23866: return __gthread_mutex_destroy (__mutex);
23866: }
23866: # 850 "/usr/include/arm-linux-gnueabihf/c++/10/bits/gthr-default.h" 3
23866: static inline int
23866: __gthread_cond_broadcast (__gthread_cond_t *__cond)
23866: {
23866: return __gthrw_pthread_cond_broadcast (__cond);
23866: }
23866:
23866: static inline int
23866: __gthread_cond_signal (__gthread_cond_t *__cond)
23866: {
23866: return __gthrw_pthread_cond_signal (__cond);
23866: }
23866:
23866: static inline int
23866: __gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex)
23866: {
23866: return __gthrw_pthread_cond_wait (__cond, __mutex);
23866: }
23866:
23866: static inline int
23866: __gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex,
23866: const __gthread_time_t *__abs_timeout)
23866: {
23866: return __gthrw_pthread_cond_timedwait (__cond, __mutex, __abs_timeout);
23866: }
23866:
23866: static inline int
23866: __gthread_cond_wait_recursive (__gthread_cond_t *__cond,
23866: __gthread_recursive_mutex_t *__mutex)
23866: {
23866: return __gthread_cond_wait (__cond, __mutex);
23866: }
23866:
23866: static inline int
23866: __gthread_cond_destroy (__gthread_cond_t* __cond)
23866: {
23866: return __gthrw_pthread_cond_destroy (__cond);
23866: }
23866: # 149 "/usr/include/arm-linux-gnueabihf/c++/10/bits/gthr.h" 2 3
23866:
23866:
23866: #pragma GCC visibility pop
23866: # 36 "/usr/include/c++/10/ext/atomicity.h" 2 3
23866: # 1 "/usr/include/arm-linux-gnueabihf/c++/10/bits/atomic_word.h" 1 3
23866: # 30 "/usr/include/arm-linux-gnueabihf/c++/10/bits/atomic_word.h" 3
23866: #define _GLIBCXX_ATOMIC_WORD_H 1
23866:
23866: typedef int _Atomic_word;
23866:
23866:
23866:
23866: #define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE)
23866:
23866: #define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE)
23866: # 37 "/usr/include/c++/10/ext/atomicity.h" 2 3
23866:
23866: namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline _Atomic_word
23866: __attribute__((__always_inline__))
23866: __exchange_and_add(volatile _Atomic_word* __mem, int __val)
23866: { return __atomic_fetch_add(__mem, __val, 4); }
23866:
23866: inline void
23866: __attribute__((__always_inline__))
23866: __atomic_add(volatile _Atomic_word* __mem, int __val)
23866: { __atomic_fetch_add(__mem, __val, 4); }
23866: # 64 "/usr/include/c++/10/ext/atomicity.h" 3
23866: inline _Atomic_word
23866: __attribute__((__always_inline__))
23866: __exchange_and_add_single(_Atomic_word* __mem, int __val)
23866: {
23866: _Atomic_word __result = *__mem;
23866: *__mem += __val;
23866: return __result;
23866: }
23866:
23866: inline void
23866: __attribute__((__always_inline__))
23866: __atomic_add_single(_Atomic_word* __mem, int __val)
23866: { *__mem += __val; }
23866:
23866: inline _Atomic_word
23866: __attribute__ ((__always_inline__))
23866: __exchange_and_add_dispatch(_Atomic_word* __mem, int __val)
23866: {
23866:
23866: if (__gthread_active_p())
23866: return __exchange_and_add(__mem, __val);
23866:
23866: return __exchange_and_add_single(__mem, __val);
23866: }
23866:
23866: inline void
23866: __attribute__ ((__always_inline__))
23866: __atomic_add_dispatch(_Atomic_word* __mem, int __val)
23866: {
23866:
23866: if (__gthread_active_p())
23866: {
23866: __atomic_add(__mem, __val);
23866: return;
23866: }
23866:
23866: __atomic_add_single(__mem, __val);
23866: }
23866:
23866:
23866: }
23866: # 40 "/usr/include/c++/10/bits/basic_string.h" 2 3
23866: # 48 "/usr/include/c++/10/bits/basic_string.h" 3
23866: # 1 "/usr/include/c++/10/string_view" 1 3
23866: # 34 "/usr/include/c++/10/string_view" 3
23866: #define _GLIBCXX_STRING_VIEW 1
23866:
23866:
23866: # 37 "/usr/include/c++/10/string_view" 3
23866: # 47 "/usr/include/c++/10/string_view" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: #define __cpp_lib_string_view 201803L
23866:
23866:
23866:
23866:
23866:
23866: constexpr size_t
23866: __sv_check(size_t __size, size_t __pos, const char* __s)
23866: {
23866: if (__pos > __size)
23866: __throw_out_of_range_fmt(("%s: __pos (which is %zu) > __size " "(which is %zu)")
23866: , __s, __pos, __size);
23866: return __pos;
23866: }
23866:
23866:
23866:
23866: constexpr size_t
23866: __sv_limit(size_t __size, size_t __pos, size_t __off) noexcept
23866: {
23866: const bool __testoff = __off < __size - __pos;
23866: return __testoff ? __off : __size - __pos;
23866: }
23866: # 93 "/usr/include/c++/10/string_view" 3
23866: template<typename _CharT, typename _Traits = std::char_traits<_CharT>>
23866: class basic_string_view
23866: {
23866: static_assert(!is_array_v<_CharT>);
23866: static_assert(is_trivial_v<_CharT> && is_standard_layout_v<_CharT>);
23866: static_assert(is_same_v<_CharT, typename _Traits::char_type>);
23866:
23866: public:
23866:
23866:
23866: using traits_type = _Traits;
23866: using value_type = _CharT;
23866: using pointer = value_type*;
23866: using const_pointer = const value_type*;
23866: using reference = value_type&;
23866: using const_reference = const value_type&;
23866: using const_iterator = const value_type*;
23866: using iterator = const_iterator;
23866: using const_reverse_iterator = std::reverse_iterator<const_iterator>;
23866: using reverse_iterator = const_reverse_iterator;
23866: using size_type = size_t;
23866: using difference_type = ptrdiff_t;
23866: static constexpr size_type npos = size_type(-1);
23866:
23866:
23866:
23866: constexpr
23866: basic_string_view() noexcept
23866: : _M_len{0}, _M_str{nullptr}
23866: { }
23866:
23866: constexpr basic_string_view(const basic_string_view&) noexcept = default;
23866:
23866: __attribute__((__nonnull__)) constexpr
23866: basic_string_view(const _CharT* __str) noexcept
23866: : _M_len{traits_type::length(__str)},
23866: _M_str{__str}
23866: { }
23866:
23866: constexpr
23866: basic_string_view(const _CharT* __str, size_type __len) noexcept
23866: : _M_len{__len}, _M_str{__str}
23866: { }
23866: # 147 "/usr/include/c++/10/string_view" 3
23866: constexpr basic_string_view&
23866: operator=(const basic_string_view&) noexcept = default;
23866:
23866:
23866:
23866: constexpr const_iterator
23866: begin() const noexcept
23866: { return this->_M_str; }
23866:
23866: constexpr const_iterator
23866: end() const noexcept
23866: { return this->_M_str + this->_M_len; }
23866:
23866: constexpr const_iterator
23866: cbegin() const noexcept
23866: { return this->_M_str; }
23866:
23866: constexpr const_iterator
23866: cend() const noexcept
23866: { return this->_M_str + this->_M_len; }
23866:
23866: constexpr const_reverse_iterator
23866: rbegin() const noexcept
23866: { return const_reverse_iterator(this->end()); }
23866:
23866: constexpr const_reverse_iterator
23866: rend() const noexcept
23866: { return const_reverse_iterator(this->begin()); }
23866:
23866: constexpr const_reverse_iterator
23866: crbegin() const noexcept
23866: { return const_reverse_iterator(this->end()); }
23866:
23866: constexpr const_reverse_iterator
23866: crend() const noexcept
23866: { return const_reverse_iterator(this->begin()); }
23866:
23866:
23866:
23866: constexpr size_type
23866: size() const noexcept
23866: { return this->_M_len; }
23866:
23866: constexpr size_type
23866: length() const noexcept
23866: { return _M_len; }
23866:
23866: constexpr size_type
23866: max_size() const noexcept
23866: {
23866: return (npos - sizeof(size_type) - sizeof(void*))
23866: / sizeof(value_type) / 4;
23866: }
23866:
23866: [[nodiscard]] constexpr bool
23866: empty() const noexcept
23866: { return this->_M_len == 0; }
23866:
23866:
23866:
23866: constexpr const_reference
23866: operator[](size_type __pos) const noexcept
23866: {
23866: ;
23866: return *(this->_M_str + __pos);
23866: }
23866:
23866: constexpr const_reference
23866: at(size_type __pos) const
23866: {
23866: if (__pos >= _M_len)
23866: __throw_out_of_range_fmt(("basic_string_view::at: __pos " "(which is %zu) >= this->size() " "(which is %zu)")
23866:
23866: , __pos, this->size());
23866: return *(this->_M_str + __pos);
23866: }
23866:
23866: constexpr const_reference
23866: front() const noexcept
23866: {
23866: ;
23866: return *this->_M_str;
23866: }
23866:
23866: constexpr const_reference
23866: back() const noexcept
23866: {
23866: ;
23866: return *(this->_M_str + this->_M_len - 1);
23866: }
23866:
23866: constexpr const_pointer
23866: data() const noexcept
23866: { return this->_M_str; }
23866:
23866:
23866:
23866: constexpr void
23866: remove_prefix(size_type __n) noexcept
23866: {
23866: ;
23866: this->_M_str += __n;
23866: this->_M_len -= __n;
23866: }
23866:
23866: constexpr void
23866: remove_suffix(size_type __n) noexcept
23866: { this->_M_len -= __n; }
23866:
23866: constexpr void
23866: swap(basic_string_view& __sv) noexcept
23866: {
23866: auto __tmp = *this;
23866: *this = __sv;
23866: __sv = __tmp;
23866: }
23866:
23866:
23866:
23866:
23866: size_type
23866: copy(_CharT* __str, size_type __n, size_type __pos = 0) const
23866: {
23866: ;
23866: __pos = std::__sv_check(size(), __pos, "basic_string_view::copy");
23866: const size_type __rlen = std::min(__n, _M_len - __pos);
23866:
23866:
23866: traits_type::copy(__str, data() + __pos, __rlen);
23866: return __rlen;
23866: }
23866:
23866: constexpr basic_string_view
23866: substr(size_type __pos = 0, size_type __n = npos) const noexcept(false)
23866: {
23866: __pos = std::__sv_check(size(), __pos, "basic_string_view::substr");
23866: const size_type __rlen = std::min(__n, _M_len - __pos);
23866: return basic_string_view{_M_str + __pos, __rlen};
23866: }
23866:
23866: constexpr int
23866: compare(basic_string_view __str) const noexcept
23866: {
23866: const size_type __rlen = std::min(this->_M_len, __str._M_len);
23866: int __ret = traits_type::compare(this->_M_str, __str._M_str, __rlen);
23866: if (__ret == 0)
23866: __ret = _S_compare(this->_M_len, __str._M_len);
23866: return __ret;
23866: }
23866:
23866: constexpr int
23866: compare(size_type __pos1, size_type __n1, basic_string_view __str) const
23866: { return this->substr(__pos1, __n1).compare(__str); }
23866:
23866: constexpr int
23866: compare(size_type __pos1, size_type __n1,
23866: basic_string_view __str, size_type __pos2, size_type __n2) const
23866: {
23866: return this->substr(__pos1, __n1).compare(__str.substr(__pos2, __n2));
23866: }
23866:
23866: __attribute__((__nonnull__)) constexpr int
23866: compare(const _CharT* __str) const noexcept
23866: { return this->compare(basic_string_view{__str}); }
23866:
23866: __attribute__((__nonnull__)) constexpr int
23866: compare(size_type __pos1, size_type __n1, const _CharT* __str) const
23866: { return this->substr(__pos1, __n1).compare(basic_string_view{__str}); }
23866:
23866: constexpr int
23866: compare(size_type __pos1, size_type __n1,
23866: const _CharT* __str, size_type __n2) const noexcept(false)
23866: {
23866: return this->substr(__pos1, __n1)
23866: .compare(basic_string_view(__str, __n2));
23866: }
23866: # 356 "/usr/include/c++/10/string_view" 3
23866: constexpr size_type
23866: find(basic_string_view __str, size_type __pos = 0) const noexcept
23866: { return this->find(__str._M_str, __pos, __str._M_len); }
23866:
23866: constexpr size_type
23866: find(_CharT __c, size_type __pos = 0) const noexcept;
23866:
23866: constexpr size_type
23866: find(const _CharT* __str, size_type __pos, size_type __n) const noexcept;
23866:
23866: __attribute__((__nonnull__)) constexpr size_type
23866: find(const _CharT* __str, size_type __pos = 0) const noexcept
23866: { return this->find(__str, __pos, traits_type::length(__str)); }
23866:
23866: constexpr size_type
23866: rfind(basic_string_view __str, size_type __pos = npos) const noexcept
23866: { return this->rfind(__str._M_str, __pos, __str._M_len); }
23866:
23866: constexpr size_type
23866: rfind(_CharT __c, size_type __pos = npos) const noexcept;
23866:
23866: constexpr size_type
23866: rfind(const _CharT* __str, size_type __pos, size_type __n) const noexcept;
23866:
23866: __attribute__((__nonnull__)) constexpr size_type
23866: rfind(const _CharT* __str, size_type __pos = npos) const noexcept
23866: { return this->rfind(__str, __pos, traits_type::length(__str)); }
23866:
23866: constexpr size_type
23866: find_first_of(basic_string_view __str, size_type __pos = 0) const noexcept
23866: { return this->find_first_of(__str._M_str, __pos, __str._M_len); }
23866:
23866: constexpr size_type
23866: find_first_of(_CharT __c, size_type __pos = 0) const noexcept
23866: { return this->find(__c, __pos); }
23866:
23866: constexpr size_type
23866: find_first_of(const _CharT* __str, size_type __pos,
23866: size_type __n) const noexcept;
23866:
23866: __attribute__((__nonnull__)) constexpr size_type
23866: find_first_of(const _CharT* __str, size_type __pos = 0) const noexcept
23866: { return this->find_first_of(__str, __pos, traits_type::length(__str)); }
23866:
23866: constexpr size_type
23866: find_last_of(basic_string_view __str,
23866: size_type __pos = npos) const noexcept
23866: { return this->find_last_of(__str._M_str, __pos, __str._M_len); }
23866:
23866: constexpr size_type
23866: find_last_of(_CharT __c, size_type __pos=npos) const noexcept
23866: { return this->rfind(__c, __pos); }
23866:
23866: constexpr size_type
23866: find_last_of(const _CharT* __str, size_type __pos,
23866: size_type __n) const noexcept;
23866:
23866: __attribute__((__nonnull__)) constexpr size_type
23866: find_last_of(const _CharT* __str, size_type __pos = npos) const noexcept
23866: { return this->find_last_of(__str, __pos, traits_type::length(__str)); }
23866:
23866: constexpr size_type
23866: find_first_not_of(basic_string_view __str,
23866: size_type __pos = 0) const noexcept
23866: { return this->find_first_not_of(__str._M_str, __pos, __str._M_len); }
23866:
23866: constexpr size_type
23866: find_first_not_of(_CharT __c, size_type __pos = 0) const noexcept;
23866:
23866: constexpr size_type
23866: find_first_not_of(const _CharT* __str,
23866: size_type __pos, size_type __n) const noexcept;
23866:
23866: __attribute__((__nonnull__)) constexpr size_type
23866: find_first_not_of(const _CharT* __str, size_type __pos = 0) const noexcept
23866: {
23866: return this->find_first_not_of(__str, __pos,
23866: traits_type::length(__str));
23866: }
23866:
23866: constexpr size_type
23866: find_last_not_of(basic_string_view __str,
23866: size_type __pos = npos) const noexcept
23866: { return this->find_last_not_of(__str._M_str, __pos, __str._M_len); }
23866:
23866: constexpr size_type
23866: find_last_not_of(_CharT __c, size_type __pos = npos) const noexcept;
23866:
23866: constexpr size_type
23866: find_last_not_of(const _CharT* __str,
23866: size_type __pos, size_type __n) const noexcept;
23866:
23866: __attribute__((__nonnull__)) constexpr size_type
23866: find_last_not_of(const _CharT* __str,
23866: size_type __pos = npos) const noexcept
23866: {
23866: return this->find_last_not_of(__str, __pos,
23866: traits_type::length(__str));
23866: }
23866:
23866: private:
23866:
23866: static constexpr int
23866: _S_compare(size_type __n1, size_type __n2) noexcept
23866: {
23866: const difference_type __diff = __n1 - __n2;
23866: if (__diff > __gnu_cxx::__int_traits<int>::__max)
23866: return __gnu_cxx::__int_traits<int>::__max;
23866: if (__diff < __gnu_cxx::__int_traits<int>::__min)
23866: return __gnu_cxx::__int_traits<int>::__min;
23866: return static_cast<int>(__diff);
23866: }
23866:
23866: size_t _M_len;
23866: const _CharT* _M_str;
23866: };
23866: # 485 "/usr/include/c++/10/string_view" 3
23866: template<typename _CharT, typename _Traits>
23866: constexpr bool
23866: operator==(basic_string_view<_CharT, _Traits> __x,
23866: basic_string_view<_CharT, _Traits> __y) noexcept
23866: { return __x.size() == __y.size() && __x.compare(__y) == 0; }
23866:
23866: template<typename _CharT, typename _Traits>
23866: constexpr bool
23866: operator==(basic_string_view<_CharT, _Traits> __x,
23866: __type_identity_t<basic_string_view<_CharT, _Traits>> __y)
23866: noexcept
23866: { return __x.size() == __y.size() && __x.compare(__y) == 0; }
23866: # 514 "/usr/include/c++/10/string_view" 3
23866: template<typename _CharT, typename _Traits>
23866: constexpr bool
23866: operator==(__type_identity_t<basic_string_view<_CharT, _Traits>> __x,
23866: basic_string_view<_CharT, _Traits> __y) noexcept
23866: { return __x.size() == __y.size() && __x.compare(__y) == 0; }
23866:
23866: template<typename _CharT, typename _Traits>
23866: constexpr bool
23866: operator!=(basic_string_view<_CharT, _Traits> __x,
23866: basic_string_view<_CharT, _Traits> __y) noexcept
23866: { return !(__x == __y); }
23866:
23866: template<typename _CharT, typename _Traits>
23866: constexpr bool
23866: operator!=(basic_string_view<_CharT, _Traits> __x,
23866: __type_identity_t<basic_string_view<_CharT, _Traits>> __y)
23866: noexcept
23866: { return !(__x == __y); }
23866:
23866: template<typename _CharT, typename _Traits>
23866: constexpr bool
23866: operator!=(__type_identity_t<basic_string_view<_CharT, _Traits>> __x,
23866: basic_string_view<_CharT, _Traits> __y) noexcept
23866: { return !(__x == __y); }
23866:
23866: template<typename _CharT, typename _Traits>
23866: constexpr bool
23866: operator< (basic_string_view<_CharT, _Traits> __x,
23866: basic_string_view<_CharT, _Traits> __y) noexcept
23866: { return __x.compare(__y) < 0; }
23866:
23866: template<typename _CharT, typename _Traits>
23866: constexpr bool
23866: operator< (basic_string_view<_CharT, _Traits> __x,
23866: __type_identity_t<basic_string_view<_CharT, _Traits>> __y)
23866: noexcept
23866: { return __x.compare(__y) < 0; }
23866:
23866: template<typename _CharT, typename _Traits>
23866: constexpr bool
23866: operator< (__type_identity_t<basic_string_view<_CharT, _Traits>> __x,
23866: basic_string_view<_CharT, _Traits> __y) noexcept
23866: { return __x.compare(__y) < 0; }
23866:
23866: template<typename _CharT, typename _Traits>
23866: constexpr bool
23866: operator> (basic_string_view<_CharT, _Traits> __x,
23866: basic_string_view<_CharT, _Traits> __y) noexcept
23866: { return __x.compare(__y) > 0; }
23866:
23866: template<typename _CharT, typename _Traits>
23866: constexpr bool
23866: operator> (basic_string_view<_CharT, _Traits> __x,
23866: __type_identity_t<basic_string_view<_CharT, _Traits>> __y)
23866: noexcept
23866: { return __x.compare(__y) > 0; }
23866:
23866: template<typename _CharT, typename _Traits>
23866: constexpr bool
23866: operator> (__type_identity_t<basic_string_view<_CharT, _Traits>> __x,
23866: basic_string_view<_CharT, _Traits> __y) noexcept
23866: { return __x.compare(__y) > 0; }
23866:
23866: template<typename _CharT, typename _Traits>
23866: constexpr bool
23866: operator<=(basic_string_view<_CharT, _Traits> __x,
23866: basic_string_view<_CharT, _Traits> __y) noexcept
23866: { return __x.compare(__y) <= 0; }
23866:
23866: template<typename _CharT, typename _Traits>
23866: constexpr bool
23866: operator<=(basic_string_view<_CharT, _Traits> __x,
23866: __type_identity_t<basic_string_view<_CharT, _Traits>> __y)
23866: noexcept
23866: { return __x.compare(__y) <= 0; }
23866:
23866: template<typename _CharT, typename _Traits>
23866: constexpr bool
23866: operator<=(__type_identity_t<basic_string_view<_CharT, _Traits>> __x,
23866: basic_string_view<_CharT, _Traits> __y) noexcept
23866: { return __x.compare(__y) <= 0; }
23866:
23866: template<typename _CharT, typename _Traits>
23866: constexpr bool
23866: operator>=(basic_string_view<_CharT, _Traits> __x,
23866: basic_string_view<_CharT, _Traits> __y) noexcept
23866: { return __x.compare(__y) >= 0; }
23866:
23866: template<typename _CharT, typename _Traits>
23866: constexpr bool
23866: operator>=(basic_string_view<_CharT, _Traits> __x,
23866: __type_identity_t<basic_string_view<_CharT, _Traits>> __y)
23866: noexcept
23866: { return __x.compare(__y) >= 0; }
23866:
23866: template<typename _CharT, typename _Traits>
23866: constexpr bool
23866: operator>=(__type_identity_t<basic_string_view<_CharT, _Traits>> __x,
23866: basic_string_view<_CharT, _Traits> __y) noexcept
23866: { return __x.compare(__y) >= 0; }
23866:
23866:
23866:
23866: template<typename _CharT, typename _Traits>
23866: inline basic_ostream<_CharT, _Traits>&
23866: operator<<(basic_ostream<_CharT, _Traits>& __os,
23866: basic_string_view<_CharT,_Traits> __str)
23866: { return __ostream_insert(__os, __str.data(), __str.size()); }
23866:
23866:
23866:
23866:
23866: using string_view = basic_string_view<char>;
23866:
23866: using wstring_view = basic_string_view<wchar_t>;
23866:
23866:
23866:
23866:
23866: using u16string_view = basic_string_view<char16_t>;
23866: using u32string_view = basic_string_view<char32_t>;
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct hash;
23866:
23866: template<>
23866: struct hash<string_view>
23866: : public __hash_base<size_t, string_view>
23866: {
23866: size_t
23866: operator()(const string_view& __str) const noexcept
23866: { return std::_Hash_impl::hash(__str.data(), __str.length()); }
23866: };
23866:
23866: template<>
23866: struct __is_fast_hash<hash<string_view>> : std::false_type
23866: { };
23866:
23866:
23866: template<>
23866: struct hash<wstring_view>
23866: : public __hash_base<size_t, wstring_view>
23866: {
23866: size_t
23866: operator()(const wstring_view& __s) const noexcept
23866: { return std::_Hash_impl::hash(__s.data(),
23866: __s.length() * sizeof(wchar_t)); }
23866: };
23866:
23866: template<>
23866: struct __is_fast_hash<hash<wstring_view>> : std::false_type
23866: { };
23866: # 685 "/usr/include/c++/10/string_view" 3
23866: template<>
23866: struct hash<u16string_view>
23866: : public __hash_base<size_t, u16string_view>
23866: {
23866: size_t
23866: operator()(const u16string_view& __s) const noexcept
23866: { return std::_Hash_impl::hash(__s.data(),
23866: __s.length() * sizeof(char16_t)); }
23866: };
23866:
23866: template<>
23866: struct __is_fast_hash<hash<u16string_view>> : std::false_type
23866: { };
23866:
23866: template<>
23866: struct hash<u32string_view>
23866: : public __hash_base<size_t, u32string_view>
23866: {
23866: size_t
23866: operator()(const u32string_view& __s) const noexcept
23866: { return std::_Hash_impl::hash(__s.data(),
23866: __s.length() * sizeof(char32_t)); }
23866: };
23866:
23866: template<>
23866: struct __is_fast_hash<hash<u32string_view>> : std::false_type
23866: { };
23866:
23866: inline namespace literals
23866: {
23866: inline namespace string_view_literals
23866: {
23866: #pragma GCC diagnostic push
23866: #pragma GCC diagnostic ignored "-Wliteral-suffix"
23866: inline constexpr basic_string_view<char>
23866: operator""sv(const char* __str, size_t __len) noexcept
23866: { return basic_string_view<char>{__str, __len}; }
23866:
23866:
23866: inline constexpr basic_string_view<wchar_t>
23866: operator""sv(const wchar_t* __str, size_t __len) noexcept
23866: { return basic_string_view<wchar_t>{__str, __len}; }
23866: # 735 "/usr/include/c++/10/string_view" 3
23866: inline constexpr basic_string_view<char16_t>
23866: operator""sv(const char16_t* __str, size_t __len) noexcept
23866: { return basic_string_view<char16_t>{__str, __len}; }
23866:
23866: inline constexpr basic_string_view<char32_t>
23866: operator""sv(const char32_t* __str, size_t __len) noexcept
23866: { return basic_string_view<char32_t>{__str, __len}; }
23866:
23866: #pragma GCC diagnostic pop
23866: }
23866: }
23866: # 761 "/usr/include/c++/10/string_view" 3
23866:
23866: }
23866:
23866: # 1 "/usr/include/c++/10/bits/string_view.tcc" 1 3
23866: # 35 "/usr/include/c++/10/bits/string_view.tcc" 3
23866: #define _GLIBCXX_STRING_VIEW_TCC 1
23866:
23866:
23866: # 38 "/usr/include/c++/10/bits/string_view.tcc" 3
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: template<typename _CharT, typename _Traits>
23866: constexpr typename basic_string_view<_CharT, _Traits>::size_type
23866: basic_string_view<_CharT, _Traits>::
23866: find(const _CharT* __str, size_type __pos, size_type __n) const noexcept
23866: {
23866: ;
23866:
23866: if (__n == 0)
23866: return __pos <= this->_M_len ? __pos : npos;
23866:
23866: if (__n <= this->_M_len)
23866: {
23866: for (; __pos <= this->_M_len - __n; ++__pos)
23866: if (traits_type::eq(this->_M_str[__pos], __str[0])
23866: && traits_type::compare(this->_M_str + __pos + 1,
23866: __str + 1, __n - 1) == 0)
23866: return __pos;
23866: }
23866: return npos;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: constexpr typename basic_string_view<_CharT, _Traits>::size_type
23866: basic_string_view<_CharT, _Traits>::
23866: find(_CharT __c, size_type __pos) const noexcept
23866: {
23866: size_type __ret = npos;
23866: if (__pos < this->_M_len)
23866: {
23866: const size_type __n = this->_M_len - __pos;
23866: const _CharT* __p = traits_type::find(this->_M_str + __pos, __n, __c);
23866: if (__p)
23866: __ret = __p - this->_M_str;
23866: }
23866: return __ret;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: constexpr typename basic_string_view<_CharT, _Traits>::size_type
23866: basic_string_view<_CharT, _Traits>::
23866: rfind(const _CharT* __str, size_type __pos, size_type __n) const noexcept
23866: {
23866: ;
23866:
23866: if (__n <= this->_M_len)
23866: {
23866: __pos = std::min(size_type(this->_M_len - __n), __pos);
23866: do
23866: {
23866: if (traits_type::compare(this->_M_str + __pos, __str, __n) == 0)
23866: return __pos;
23866: }
23866: while (__pos-- > 0);
23866: }
23866: return npos;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: constexpr typename basic_string_view<_CharT, _Traits>::size_type
23866: basic_string_view<_CharT, _Traits>::
23866: rfind(_CharT __c, size_type __pos) const noexcept
23866: {
23866: size_type __size = this->_M_len;
23866: if (__size > 0)
23866: {
23866: if (--__size > __pos)
23866: __size = __pos;
23866: for (++__size; __size-- > 0; )
23866: if (traits_type::eq(this->_M_str[__size], __c))
23866: return __size;
23866: }
23866: return npos;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: constexpr typename basic_string_view<_CharT, _Traits>::size_type
23866: basic_string_view<_CharT, _Traits>::
23866: find_first_of(const _CharT* __str, size_type __pos,
23866: size_type __n) const noexcept
23866: {
23866: ;
23866: for (; __n && __pos < this->_M_len; ++__pos)
23866: {
23866: const _CharT* __p = traits_type::find(__str, __n,
23866: this->_M_str[__pos]);
23866: if (__p)
23866: return __pos;
23866: }
23866: return npos;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: constexpr typename basic_string_view<_CharT, _Traits>::size_type
23866: basic_string_view<_CharT, _Traits>::
23866: find_last_of(const _CharT* __str, size_type __pos,
23866: size_type __n) const noexcept
23866: {
23866: ;
23866: size_type __size = this->size();
23866: if (__size && __n)
23866: {
23866: if (--__size > __pos)
23866: __size = __pos;
23866: do
23866: {
23866: if (traits_type::find(__str, __n, this->_M_str[__size]))
23866: return __size;
23866: }
23866: while (__size-- != 0);
23866: }
23866: return npos;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: constexpr typename basic_string_view<_CharT, _Traits>::size_type
23866: basic_string_view<_CharT, _Traits>::
23866: find_first_not_of(const _CharT* __str, size_type __pos,
23866: size_type __n) const noexcept
23866: {
23866: ;
23866: for (; __pos < this->_M_len; ++__pos)
23866: if (!traits_type::find(__str, __n, this->_M_str[__pos]))
23866: return __pos;
23866: return npos;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: constexpr typename basic_string_view<_CharT, _Traits>::size_type
23866: basic_string_view<_CharT, _Traits>::
23866: find_first_not_of(_CharT __c, size_type __pos) const noexcept
23866: {
23866: for (; __pos < this->_M_len; ++__pos)
23866: if (!traits_type::eq(this->_M_str[__pos], __c))
23866: return __pos;
23866: return npos;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: constexpr typename basic_string_view<_CharT, _Traits>::size_type
23866: basic_string_view<_CharT, _Traits>::
23866: find_last_not_of(const _CharT* __str, size_type __pos,
23866: size_type __n) const noexcept
23866: {
23866: ;
23866: size_type __size = this->_M_len;
23866: if (__size)
23866: {
23866: if (--__size > __pos)
23866: __size = __pos;
23866: do
23866: {
23866: if (!traits_type::find(__str, __n, this->_M_str[__size]))
23866: return __size;
23866: }
23866: while (__size--);
23866: }
23866: return npos;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: constexpr typename basic_string_view<_CharT, _Traits>::size_type
23866: basic_string_view<_CharT, _Traits>::
23866: find_last_not_of(_CharT __c, size_type __pos) const noexcept
23866: {
23866: size_type __size = this->_M_len;
23866: if (__size)
23866: {
23866: if (--__size > __pos)
23866: __size = __pos;
23866: do
23866: {
23866: if (!traits_type::eq(this->_M_str[__size], __c))
23866: return __size;
23866: }
23866: while (__size--);
23866: }
23866: return npos;
23866: }
23866:
23866:
23866: }
23866: # 765 "/usr/include/c++/10/string_view" 2 3
23866: # 49 "/usr/include/c++/10/bits/basic_string.h" 2 3
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: namespace __cxx11 {
23866: # 76 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: class basic_string
23866: {
23866: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template
23866: rebind<_CharT>::other _Char_alloc_type;
23866: typedef __gnu_cxx::__alloc_traits<_Char_alloc_type> _Alloc_traits;
23866:
23866:
23866: public:
23866: typedef _Traits traits_type;
23866: typedef typename _Traits::char_type value_type;
23866: typedef _Char_alloc_type allocator_type;
23866: typedef typename _Alloc_traits::size_type size_type;
23866: typedef typename _Alloc_traits::difference_type difference_type;
23866: typedef typename _Alloc_traits::reference reference;
23866: typedef typename _Alloc_traits::const_reference const_reference;
23866: typedef typename _Alloc_traits::pointer pointer;
23866: typedef typename _Alloc_traits::const_pointer const_pointer;
23866: typedef __gnu_cxx::__normal_iterator<pointer, basic_string> iterator;
23866: typedef __gnu_cxx::__normal_iterator<const_pointer, basic_string>
23866: const_iterator;
23866: typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
23866: typedef std::reverse_iterator<iterator> reverse_iterator;
23866:
23866:
23866: static const size_type npos = static_cast<size_type>(-1);
23866:
23866: protected:
23866:
23866:
23866:
23866:
23866: typedef const_iterator __const_iterator;
23866:
23866:
23866: private:
23866:
23866:
23866: typedef basic_string_view<_CharT, _Traits> __sv_type;
23866:
23866: template<typename _Tp, typename _Res>
23866: using _If_sv = enable_if_t<
23866: __and_<is_convertible<const _Tp&, __sv_type>,
23866: __not_<is_convertible<const _Tp*, const basic_string*>>,
23866: __not_<is_convertible<const _Tp&, const _CharT*>>>::value,
23866: _Res>;
23866:
23866:
23866: static __sv_type
23866: _S_to_string_view(__sv_type __svt) noexcept
23866: { return __svt; }
23866:
23866:
23866:
23866:
23866:
23866: struct __sv_wrapper
23866: {
23866: explicit __sv_wrapper(__sv_type __sv) noexcept : _M_sv(__sv) { }
23866: __sv_type _M_sv;
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: explicit
23866: basic_string(__sv_wrapper __svw, const _Alloc& __a)
23866: : basic_string(__svw._M_sv.data(), __svw._M_sv.size(), __a) { }
23866:
23866:
23866:
23866: struct _Alloc_hider : allocator_type
23866: {
23866:
23866:
23866:
23866:
23866: _Alloc_hider(pointer __dat, const _Alloc& __a)
23866: : allocator_type(__a), _M_p(__dat) { }
23866:
23866: _Alloc_hider(pointer __dat, _Alloc&& __a = _Alloc())
23866: : allocator_type(std::move(__a)), _M_p(__dat) { }
23866:
23866:
23866: pointer _M_p;
23866: };
23866:
23866: _Alloc_hider _M_dataplus;
23866: size_type _M_string_length;
23866:
23866: enum { _S_local_capacity = 15 / sizeof(_CharT) };
23866:
23866: union
23866: {
23866: _CharT _M_local_buf[_S_local_capacity + 1];
23866: size_type _M_allocated_capacity;
23866: };
23866:
23866: void
23866: _M_data(pointer __p)
23866: { _M_dataplus._M_p = __p; }
23866:
23866: void
23866: _M_length(size_type __length)
23866: { _M_string_length = __length; }
23866:
23866: pointer
23866: _M_data() const
23866: { return _M_dataplus._M_p; }
23866:
23866: pointer
23866: _M_local_data()
23866: {
23866:
23866: return std::pointer_traits<pointer>::pointer_to(*_M_local_buf);
23866:
23866:
23866:
23866: }
23866:
23866: const_pointer
23866: _M_local_data() const
23866: {
23866:
23866: return std::pointer_traits<const_pointer>::pointer_to(*_M_local_buf);
23866:
23866:
23866:
23866: }
23866:
23866: void
23866: _M_capacity(size_type __capacity)
23866: { _M_allocated_capacity = __capacity; }
23866:
23866: void
23866: _M_set_length(size_type __n)
23866: {
23866: _M_length(__n);
23866: traits_type::assign(_M_data()[__n], _CharT());
23866: }
23866:
23866: bool
23866: _M_is_local() const
23866: { return _M_data() == _M_local_data(); }
23866:
23866:
23866: pointer
23866: _M_create(size_type&, size_type);
23866:
23866: void
23866: _M_dispose()
23866: {
23866: if (!_M_is_local())
23866: _M_destroy(_M_allocated_capacity);
23866: }
23866:
23866: void
23866: _M_destroy(size_type __size) throw()
23866: { _Alloc_traits::deallocate(_M_get_allocator(), _M_data(), __size + 1); }
23866:
23866:
23866:
23866: template<typename _InIterator>
23866: void
23866: _M_construct_aux(_InIterator __beg, _InIterator __end,
23866: std::__false_type)
23866: {
23866: typedef typename iterator_traits<_InIterator>::iterator_category _Tag;
23866: _M_construct(__beg, __end, _Tag());
23866: }
23866:
23866:
23866:
23866: template<typename _Integer>
23866: void
23866: _M_construct_aux(_Integer __beg, _Integer __end, std::__true_type)
23866: { _M_construct_aux_2(static_cast<size_type>(__beg), __end); }
23866:
23866: void
23866: _M_construct_aux_2(size_type __req, _CharT __c)
23866: { _M_construct(__req, __c); }
23866:
23866: template<typename _InIterator>
23866: void
23866: _M_construct(_InIterator __beg, _InIterator __end)
23866: {
23866: typedef typename std::__is_integer<_InIterator>::__type _Integral;
23866: _M_construct_aux(__beg, __end, _Integral());
23866: }
23866:
23866:
23866: template<typename _InIterator>
23866: void
23866: _M_construct(_InIterator __beg, _InIterator __end,
23866: std::input_iterator_tag);
23866:
23866:
23866:
23866: template<typename _FwdIterator>
23866: void
23866: _M_construct(_FwdIterator __beg, _FwdIterator __end,
23866: std::forward_iterator_tag);
23866:
23866: void
23866: _M_construct(size_type __req, _CharT __c);
23866:
23866: allocator_type&
23866: _M_get_allocator()
23866: { return _M_dataplus; }
23866:
23866: const allocator_type&
23866: _M_get_allocator() const
23866: { return _M_dataplus; }
23866:
23866: private:
23866: # 309 "/usr/include/c++/10/bits/basic_string.h" 3
23866: size_type
23866: _M_check(size_type __pos, const char* __s) const
23866: {
23866: if (__pos > this->size())
23866: __throw_out_of_range_fmt(("%s: __pos (which is %zu) > " "this->size() (which is %zu)")
23866: ,
23866: __s, __pos, this->size());
23866: return __pos;
23866: }
23866:
23866: void
23866: _M_check_length(size_type __n1, size_type __n2, const char* __s) const
23866: {
23866: if (this->max_size() - (this->size() - __n1) < __n2)
23866: __throw_length_error((__s));
23866: }
23866:
23866:
23866:
23866: size_type
23866: _M_limit(size_type __pos, size_type __off) const noexcept
23866: {
23866: const bool __testoff = __off < this->size() - __pos;
23866: return __testoff ? __off : this->size() - __pos;
23866: }
23866:
23866:
23866: bool
23866: _M_disjunct(const _CharT* __s) const noexcept
23866: {
23866: return (less<const _CharT*>()(__s, _M_data())
23866: || less<const _CharT*>()(_M_data() + this->size(), __s));
23866: }
23866:
23866:
23866:
23866: static void
23866: _S_copy(_CharT* __d, const _CharT* __s, size_type __n)
23866: {
23866: if (__n == 1)
23866: traits_type::assign(*__d, *__s);
23866: else
23866: traits_type::copy(__d, __s, __n);
23866: }
23866:
23866: static void
23866: _S_move(_CharT* __d, const _CharT* __s, size_type __n)
23866: {
23866: if (__n == 1)
23866: traits_type::assign(*__d, *__s);
23866: else
23866: traits_type::move(__d, __s, __n);
23866: }
23866:
23866: static void
23866: _S_assign(_CharT* __d, size_type __n, _CharT __c)
23866: {
23866: if (__n == 1)
23866: traits_type::assign(*__d, __c);
23866: else
23866: traits_type::assign(__d, __n, __c);
23866: }
23866:
23866:
23866:
23866: template<class _Iterator>
23866: static void
23866: _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2)
23866: {
23866: for (; __k1 != __k2; ++__k1, (void)++__p)
23866: traits_type::assign(*__p, *__k1);
23866: }
23866:
23866: static void
23866: _S_copy_chars(_CharT* __p, iterator __k1, iterator __k2) noexcept
23866: { _S_copy_chars(__p, __k1.base(), __k2.base()); }
23866:
23866: static void
23866: _S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2)
23866: noexcept
23866: { _S_copy_chars(__p, __k1.base(), __k2.base()); }
23866:
23866: static void
23866: _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2) noexcept
23866: { _S_copy(__p, __k1, __k2 - __k1); }
23866:
23866: static void
23866: _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2)
23866: noexcept
23866: { _S_copy(__p, __k1, __k2 - __k1); }
23866:
23866: static int
23866: _S_compare(size_type __n1, size_type __n2) noexcept
23866: {
23866: const difference_type __d = difference_type(__n1 - __n2);
23866:
23866: if (__d > __gnu_cxx::__numeric_traits<int>::__max)
23866: return __gnu_cxx::__numeric_traits<int>::__max;
23866: else if (__d < __gnu_cxx::__numeric_traits<int>::__min)
23866: return __gnu_cxx::__numeric_traits<int>::__min;
23866: else
23866: return int(__d);
23866: }
23866:
23866: void
23866: _M_assign(const basic_string&);
23866:
23866: void
23866: _M_mutate(size_type __pos, size_type __len1, const _CharT* __s,
23866: size_type __len2);
23866:
23866: void
23866: _M_erase(size_type __pos, size_type __n);
23866:
23866: public:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: basic_string()
23866: noexcept(is_nothrow_default_constructible<_Alloc>::value)
23866: : _M_dataplus(_M_local_data())
23866: { _M_set_length(0); }
23866:
23866:
23866:
23866:
23866: explicit
23866: basic_string(const _Alloc& __a) noexcept
23866: : _M_dataplus(_M_local_data(), __a)
23866: { _M_set_length(0); }
23866:
23866:
23866:
23866:
23866:
23866: basic_string(const basic_string& __str)
23866: : _M_dataplus(_M_local_data(),
23866: _Alloc_traits::_S_select_on_copy(__str._M_get_allocator()))
23866: { _M_construct(__str._M_data(), __str._M_data() + __str.length()); }
23866: # 461 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string(const basic_string& __str, size_type __pos,
23866: const _Alloc& __a = _Alloc())
23866: : _M_dataplus(_M_local_data(), __a)
23866: {
23866: const _CharT* __start = __str._M_data()
23866: + __str._M_check(__pos, "basic_string::basic_string");
23866: _M_construct(__start, __start + __str._M_limit(__pos, npos));
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: basic_string(const basic_string& __str, size_type __pos,
23866: size_type __n)
23866: : _M_dataplus(_M_local_data())
23866: {
23866: const _CharT* __start = __str._M_data()
23866: + __str._M_check(__pos, "basic_string::basic_string");
23866: _M_construct(__start, __start + __str._M_limit(__pos, __n));
23866: }
23866: # 492 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string(const basic_string& __str, size_type __pos,
23866: size_type __n, const _Alloc& __a)
23866: : _M_dataplus(_M_local_data(), __a)
23866: {
23866: const _CharT* __start
23866: = __str._M_data() + __str._M_check(__pos, "string::string");
23866: _M_construct(__start, __start + __str._M_limit(__pos, __n));
23866: }
23866: # 510 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string(const _CharT* __s, size_type __n,
23866: const _Alloc& __a = _Alloc())
23866: : _M_dataplus(_M_local_data(), __a)
23866: { _M_construct(__s, __s + __n); }
23866: # 523 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename = _RequireAllocator<_Alloc>>
23866:
23866: basic_string(const _CharT* __s, const _Alloc& __a = _Alloc())
23866: : _M_dataplus(_M_local_data(), __a)
23866: { _M_construct(__s, __s ? __s + traits_type::length(__s) : __s+npos); }
23866: # 538 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename = _RequireAllocator<_Alloc>>
23866:
23866: basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc())
23866: : _M_dataplus(_M_local_data(), __a)
23866: { _M_construct(__n, __c); }
23866: # 552 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string(basic_string&& __str) noexcept
23866: : _M_dataplus(_M_local_data(), std::move(__str._M_get_allocator()))
23866: {
23866: if (__str._M_is_local())
23866: {
23866: traits_type::copy(_M_local_buf, __str._M_local_buf,
23866: _S_local_capacity + 1);
23866: }
23866: else
23866: {
23866: _M_data(__str._M_data());
23866: _M_capacity(__str._M_allocated_capacity);
23866: }
23866:
23866:
23866:
23866:
23866: _M_length(__str.length());
23866: __str._M_data(__str._M_local_data());
23866: __str._M_set_length(0);
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: basic_string(initializer_list<_CharT> __l, const _Alloc& __a = _Alloc())
23866: : _M_dataplus(_M_local_data(), __a)
23866: { _M_construct(__l.begin(), __l.end()); }
23866:
23866: basic_string(const basic_string& __str, const _Alloc& __a)
23866: : _M_dataplus(_M_local_data(), __a)
23866: { _M_construct(__str.begin(), __str.end()); }
23866:
23866: basic_string(basic_string&& __str, const _Alloc& __a)
23866: noexcept(_Alloc_traits::_S_always_equal())
23866: : _M_dataplus(_M_local_data(), __a)
23866: {
23866: if (__str._M_is_local())
23866: {
23866: traits_type::copy(_M_local_buf, __str._M_local_buf,
23866: _S_local_capacity + 1);
23866: _M_length(__str.length());
23866: __str._M_set_length(0);
23866: }
23866: else if (_Alloc_traits::_S_always_equal()
23866: || __str.get_allocator() == __a)
23866: {
23866: _M_data(__str._M_data());
23866: _M_length(__str.length());
23866: _M_capacity(__str._M_allocated_capacity);
23866: __str._M_data(__str._M_local_buf);
23866: __str._M_set_length(0);
23866: }
23866: else
23866: _M_construct(__str.begin(), __str.end());
23866: }
23866: # 620 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _InputIterator,
23866: typename = std::_RequireInputIter<_InputIterator>>
23866:
23866:
23866:
23866: basic_string(_InputIterator __beg, _InputIterator __end,
23866: const _Alloc& __a = _Alloc())
23866: : _M_dataplus(_M_local_data(), __a)
23866: { _M_construct(__beg, __end); }
23866: # 638 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _Tp, typename = _If_sv<_Tp, void>>
23866: basic_string(const _Tp& __t, size_type __pos, size_type __n,
23866: const _Alloc& __a = _Alloc())
23866: : basic_string(_S_to_string_view(__t).substr(__pos, __n), __a) { }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp, typename = _If_sv<_Tp, void>>
23866: explicit
23866: basic_string(const _Tp& __t, const _Alloc& __a = _Alloc())
23866: : basic_string(__sv_wrapper(_S_to_string_view(__t)), __a) { }
23866:
23866:
23866:
23866:
23866:
23866: ~basic_string()
23866: { _M_dispose(); }
23866:
23866:
23866:
23866:
23866:
23866: basic_string&
23866: operator=(const basic_string& __str)
23866: {
23866: return this->assign(__str);
23866: }
23866:
23866:
23866:
23866:
23866:
23866: basic_string&
23866: operator=(const _CharT* __s)
23866: { return this->assign(__s); }
23866: # 685 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string&
23866: operator=(_CharT __c)
23866: {
23866: this->assign(1, __c);
23866: return *this;
23866: }
23866: # 702 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string&
23866: operator=(basic_string&& __str)
23866: noexcept(_Alloc_traits::_S_nothrow_move())
23866: {
23866: if (!_M_is_local() && _Alloc_traits::_S_propagate_on_move_assign()
23866: && !_Alloc_traits::_S_always_equal()
23866: && _M_get_allocator() != __str._M_get_allocator())
23866: {
23866:
23866: _M_destroy(_M_allocated_capacity);
23866: _M_data(_M_local_data());
23866: _M_set_length(0);
23866: }
23866:
23866: std::__alloc_on_move(_M_get_allocator(), __str._M_get_allocator());
23866:
23866: if (__str._M_is_local())
23866: {
23866:
23866: if (__str.size())
23866: this->_S_copy(_M_data(), __str._M_data(), __str.size());
23866: _M_set_length(__str.size());
23866: }
23866: else if (_Alloc_traits::_S_propagate_on_move_assign()
23866: || _Alloc_traits::_S_always_equal()
23866: || _M_get_allocator() == __str._M_get_allocator())
23866: {
23866:
23866: pointer __data = nullptr;
23866: size_type __capacity;
23866: if (!_M_is_local())
23866: {
23866: if (_Alloc_traits::_S_always_equal())
23866: {
23866:
23866: __data = _M_data();
23866: __capacity = _M_allocated_capacity;
23866: }
23866: else
23866: _M_destroy(_M_allocated_capacity);
23866: }
23866:
23866: _M_data(__str._M_data());
23866: _M_length(__str.length());
23866: _M_capacity(__str._M_allocated_capacity);
23866: if (__data)
23866: {
23866: __str._M_data(__data);
23866: __str._M_capacity(__capacity);
23866: }
23866: else
23866: __str._M_data(__str._M_local_buf);
23866: }
23866: else
23866: assign(__str);
23866: __str.clear();
23866: return *this;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: basic_string&
23866: operator=(initializer_list<_CharT> __l)
23866: {
23866: this->assign(__l.begin(), __l.size());
23866: return *this;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: _If_sv<_Tp, basic_string&>
23866: operator=(const _Tp& __svt)
23866: { return this->assign(__svt); }
23866:
23866:
23866:
23866:
23866:
23866: operator __sv_type() const noexcept
23866: { return __sv_type(data(), size()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: iterator
23866: begin() noexcept
23866: { return iterator(_M_data()); }
23866:
23866:
23866:
23866:
23866:
23866: const_iterator
23866: begin() const noexcept
23866: { return const_iterator(_M_data()); }
23866:
23866:
23866:
23866:
23866:
23866: iterator
23866: end() noexcept
23866: { return iterator(_M_data() + this->size()); }
23866:
23866:
23866:
23866:
23866:
23866: const_iterator
23866: end() const noexcept
23866: { return const_iterator(_M_data() + this->size()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: reverse_iterator
23866: rbegin() noexcept
23866: { return reverse_iterator(this->end()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_reverse_iterator
23866: rbegin() const noexcept
23866: { return const_reverse_iterator(this->end()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: reverse_iterator
23866: rend() noexcept
23866: { return reverse_iterator(this->begin()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_reverse_iterator
23866: rend() const noexcept
23866: { return const_reverse_iterator(this->begin()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_iterator
23866: cbegin() const noexcept
23866: { return const_iterator(this->_M_data()); }
23866:
23866:
23866:
23866:
23866:
23866: const_iterator
23866: cend() const noexcept
23866: { return const_iterator(this->_M_data() + this->size()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_reverse_iterator
23866: crbegin() const noexcept
23866: { return const_reverse_iterator(this->end()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_reverse_iterator
23866: crend() const noexcept
23866: { return const_reverse_iterator(this->begin()); }
23866:
23866:
23866: public:
23866:
23866:
23866:
23866: size_type
23866: size() const noexcept
23866: { return _M_string_length; }
23866:
23866:
23866:
23866: size_type
23866: length() const noexcept
23866: { return _M_string_length; }
23866:
23866:
23866: size_type
23866: max_size() const noexcept
23866: { return (_Alloc_traits::max_size(_M_get_allocator()) - 1) / 2; }
23866: # 925 "/usr/include/c++/10/bits/basic_string.h" 3
23866: void
23866: resize(size_type __n, _CharT __c);
23866: # 938 "/usr/include/c++/10/bits/basic_string.h" 3
23866: void
23866: resize(size_type __n)
23866: { this->resize(__n, _CharT()); }
23866:
23866:
23866:
23866: void
23866: shrink_to_fit() noexcept
23866: {
23866:
23866: if (capacity() > size())
23866: {
23866: try
23866: { reserve(0); }
23866: catch(...)
23866: { }
23866: }
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: size_type
23866: capacity() const noexcept
23866: {
23866: return _M_is_local() ? size_type(_S_local_capacity)
23866: : _M_allocated_capacity;
23866: }
23866: # 987 "/usr/include/c++/10/bits/basic_string.h" 3
23866: void
23866: reserve(size_type __res_arg = 0);
23866:
23866:
23866:
23866:
23866: void
23866: clear() noexcept
23866: { _M_set_length(0); }
23866:
23866:
23866:
23866:
23866:
23866: [[__nodiscard__]] bool
23866: empty() const noexcept
23866: { return this->size() == 0; }
23866: # 1016 "/usr/include/c++/10/bits/basic_string.h" 3
23866: const_reference
23866: operator[] (size_type __pos) const noexcept
23866: {
23866: ;
23866: return _M_data()[__pos];
23866: }
23866: # 1033 "/usr/include/c++/10/bits/basic_string.h" 3
23866: reference
23866: operator[](size_type __pos)
23866: {
23866:
23866:
23866: ;
23866:
23866: ;
23866: return _M_data()[__pos];
23866: }
23866: # 1054 "/usr/include/c++/10/bits/basic_string.h" 3
23866: const_reference
23866: at(size_type __n) const
23866: {
23866: if (__n >= this->size())
23866: __throw_out_of_range_fmt(("basic_string::at: __n " "(which is %zu) >= this->size() " "(which is %zu)")
23866:
23866: ,
23866: __n, this->size());
23866: return _M_data()[__n];
23866: }
23866: # 1075 "/usr/include/c++/10/bits/basic_string.h" 3
23866: reference
23866: at(size_type __n)
23866: {
23866: if (__n >= size())
23866: __throw_out_of_range_fmt(("basic_string::at: __n " "(which is %zu) >= this->size() " "(which is %zu)")
23866:
23866: ,
23866: __n, this->size());
23866: return _M_data()[__n];
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: reference
23866: front() noexcept
23866: {
23866: ;
23866: return operator[](0);
23866: }
23866:
23866:
23866:
23866:
23866:
23866: const_reference
23866: front() const noexcept
23866: {
23866: ;
23866: return operator[](0);
23866: }
23866:
23866:
23866:
23866:
23866:
23866: reference
23866: back() noexcept
23866: {
23866: ;
23866: return operator[](this->size() - 1);
23866: }
23866:
23866:
23866:
23866:
23866:
23866: const_reference
23866: back() const noexcept
23866: {
23866: ;
23866: return operator[](this->size() - 1);
23866: }
23866: # 1138 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string&
23866: operator+=(const basic_string& __str)
23866: { return this->append(__str); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: basic_string&
23866: operator+=(const _CharT* __s)
23866: { return this->append(__s); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: basic_string&
23866: operator+=(_CharT __c)
23866: {
23866: this->push_back(__c);
23866: return *this;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: basic_string&
23866: operator+=(initializer_list<_CharT> __l)
23866: { return this->append(__l.begin(), __l.size()); }
23866: # 1180 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _Tp>
23866: _If_sv<_Tp, basic_string&>
23866: operator+=(const _Tp& __svt)
23866: { return this->append(__svt); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: basic_string&
23866: append(const basic_string& __str)
23866: { return _M_append(__str._M_data(), __str.size()); }
23866: # 1208 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string&
23866: append(const basic_string& __str, size_type __pos, size_type __n = npos)
23866: { return _M_append(__str._M_data()
23866: + __str._M_check(__pos, "basic_string::append"),
23866: __str._M_limit(__pos, __n)); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: basic_string&
23866: append(const _CharT* __s, size_type __n)
23866: {
23866: ;
23866: _M_check_length(size_type(0), __n, "basic_string::append");
23866: return _M_append(__s, __n);
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: basic_string&
23866: append(const _CharT* __s)
23866: {
23866: ;
23866: const size_type __n = traits_type::length(__s);
23866: _M_check_length(size_type(0), __n, "basic_string::append");
23866: return _M_append(__s, __n);
23866: }
23866: # 1250 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string&
23866: append(size_type __n, _CharT __c)
23866: { return _M_replace_aux(this->size(), size_type(0), __n, __c); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: basic_string&
23866: append(initializer_list<_CharT> __l)
23866: { return this->append(__l.begin(), __l.size()); }
23866: # 1274 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<class _InputIterator,
23866: typename = std::_RequireInputIter<_InputIterator>>
23866:
23866:
23866:
23866: basic_string&
23866: append(_InputIterator __first, _InputIterator __last)
23866: { return this->replace(end(), end(), __first, __last); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: _If_sv<_Tp, basic_string&>
23866: append(const _Tp& __svt)
23866: {
23866: __sv_type __sv = __svt;
23866: return this->append(__sv.data(), __sv.size());
23866: }
23866: # 1304 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _Tp>
23866: _If_sv<_Tp, basic_string&>
23866: append(const _Tp& __svt, size_type __pos, size_type __n = npos)
23866: {
23866: __sv_type __sv = __svt;
23866: return _M_append(__sv.data()
23866: + std::__sv_check(__sv.size(), __pos, "basic_string::append"),
23866: std::__sv_limit(__sv.size(), __pos, __n));
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: void
23866: push_back(_CharT __c)
23866: {
23866: const size_type __size = this->size();
23866: if (__size + 1 > this->capacity())
23866: this->_M_mutate(__size, size_type(0), 0, size_type(1));
23866: traits_type::assign(this->_M_data()[__size], __c);
23866: this->_M_set_length(__size + 1);
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: basic_string&
23866: assign(const basic_string& __str)
23866: {
23866:
23866: if (_Alloc_traits::_S_propagate_on_copy_assign())
23866: {
23866: if (!_Alloc_traits::_S_always_equal() && !_M_is_local()
23866: && _M_get_allocator() != __str._M_get_allocator())
23866: {
23866:
23866:
23866: if (__str.size() <= _S_local_capacity)
23866: {
23866: _M_destroy(_M_allocated_capacity);
23866: _M_data(_M_local_data());
23866: _M_set_length(0);
23866: }
23866: else
23866: {
23866: const auto __len = __str.size();
23866: auto __alloc = __str._M_get_allocator();
23866:
23866: auto __ptr = _Alloc_traits::allocate(__alloc, __len + 1);
23866: _M_destroy(_M_allocated_capacity);
23866: _M_data(__ptr);
23866: _M_capacity(__len);
23866: _M_set_length(__len);
23866: }
23866: }
23866: std::__alloc_on_copy(_M_get_allocator(), __str._M_get_allocator());
23866: }
23866:
23866: this->_M_assign(__str);
23866: return *this;
23866: }
23866: # 1379 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string&
23866: assign(basic_string&& __str)
23866: noexcept(_Alloc_traits::_S_nothrow_move())
23866: {
23866:
23866:
23866: return *this = std::move(__str);
23866: }
23866: # 1402 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string&
23866: assign(const basic_string& __str, size_type __pos, size_type __n = npos)
23866: { return _M_replace(size_type(0), this->size(), __str._M_data()
23866: + __str._M_check(__pos, "basic_string::assign"),
23866: __str._M_limit(__pos, __n)); }
23866: # 1418 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string&
23866: assign(const _CharT* __s, size_type __n)
23866: {
23866: ;
23866: return _M_replace(size_type(0), this->size(), __s, __n);
23866: }
23866: # 1434 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string&
23866: assign(const _CharT* __s)
23866: {
23866: ;
23866: return _M_replace(size_type(0), this->size(), __s,
23866: traits_type::length(__s));
23866: }
23866: # 1451 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string&
23866: assign(size_type __n, _CharT __c)
23866: { return _M_replace_aux(size_type(0), this->size(), __n, __c); }
23866: # 1464 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<class _InputIterator,
23866: typename = std::_RequireInputIter<_InputIterator>>
23866:
23866:
23866:
23866: basic_string&
23866: assign(_InputIterator __first, _InputIterator __last)
23866: { return this->replace(begin(), end(), __first, __last); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: basic_string&
23866: assign(initializer_list<_CharT> __l)
23866: { return this->assign(__l.begin(), __l.size()); }
23866: # 1490 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _Tp>
23866: _If_sv<_Tp, basic_string&>
23866: assign(const _Tp& __svt)
23866: {
23866: __sv_type __sv = __svt;
23866: return this->assign(__sv.data(), __sv.size());
23866: }
23866: # 1505 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _Tp>
23866: _If_sv<_Tp, basic_string&>
23866: assign(const _Tp& __svt, size_type __pos, size_type __n = npos)
23866: {
23866: __sv_type __sv = __svt;
23866: return _M_replace(size_type(0), this->size(),
23866: __sv.data()
23866: + std::__sv_check(__sv.size(), __pos, "basic_string::assign"),
23866: std::__sv_limit(__sv.size(), __pos, __n));
23866: }
23866: # 1533 "/usr/include/c++/10/bits/basic_string.h" 3
23866: iterator
23866: insert(const_iterator __p, size_type __n, _CharT __c)
23866: {
23866: ;
23866: const size_type __pos = __p - begin();
23866: this->replace(__p, __p, __n, __c);
23866: return iterator(this->_M_data() + __pos);
23866: }
23866: # 1575 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<class _InputIterator,
23866: typename = std::_RequireInputIter<_InputIterator>>
23866: iterator
23866: insert(const_iterator __p, _InputIterator __beg, _InputIterator __end)
23866: {
23866: ;
23866: const size_type __pos = __p - begin();
23866: this->replace(__p, __p, __beg, __end);
23866: return iterator(this->_M_data() + __pos);
23866: }
23866: # 1611 "/usr/include/c++/10/bits/basic_string.h" 3
23866: iterator
23866: insert(const_iterator __p, initializer_list<_CharT> __l)
23866: { return this->insert(__p, __l.begin(), __l.end()); }
23866: # 1638 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string&
23866: insert(size_type __pos1, const basic_string& __str)
23866: { return this->replace(__pos1, size_type(0),
23866: __str._M_data(), __str.size()); }
23866: # 1661 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string&
23866: insert(size_type __pos1, const basic_string& __str,
23866: size_type __pos2, size_type __n = npos)
23866: { return this->replace(__pos1, size_type(0), __str._M_data()
23866: + __str._M_check(__pos2, "basic_string::insert"),
23866: __str._M_limit(__pos2, __n)); }
23866: # 1684 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string&
23866: insert(size_type __pos, const _CharT* __s, size_type __n)
23866: { return this->replace(__pos, size_type(0), __s, __n); }
23866: # 1703 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string&
23866: insert(size_type __pos, const _CharT* __s)
23866: {
23866: ;
23866: return this->replace(__pos, size_type(0), __s,
23866: traits_type::length(__s));
23866: }
23866: # 1727 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string&
23866: insert(size_type __pos, size_type __n, _CharT __c)
23866: { return _M_replace_aux(_M_check(__pos, "basic_string::insert"),
23866: size_type(0), __n, __c); }
23866: # 1745 "/usr/include/c++/10/bits/basic_string.h" 3
23866: iterator
23866: insert(__const_iterator __p, _CharT __c)
23866: {
23866: ;
23866: const size_type __pos = __p - begin();
23866: _M_replace_aux(__pos, size_type(0), size_type(1), __c);
23866: return iterator(_M_data() + __pos);
23866: }
23866: # 1761 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _Tp>
23866: _If_sv<_Tp, basic_string&>
23866: insert(size_type __pos, const _Tp& __svt)
23866: {
23866: __sv_type __sv = __svt;
23866: return this->insert(__pos, __sv.data(), __sv.size());
23866: }
23866: # 1777 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _Tp>
23866: _If_sv<_Tp, basic_string&>
23866: insert(size_type __pos1, const _Tp& __svt,
23866: size_type __pos2, size_type __n = npos)
23866: {
23866: __sv_type __sv = __svt;
23866: return this->replace(__pos1, size_type(0),
23866: __sv.data()
23866: + std::__sv_check(__sv.size(), __pos2, "basic_string::insert"),
23866: std::__sv_limit(__sv.size(), __pos2, __n));
23866: }
23866: # 1805 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string&
23866: erase(size_type __pos = 0, size_type __n = npos)
23866: {
23866: _M_check(__pos, "basic_string::erase");
23866: if (__n == npos)
23866: this->_M_set_length(__pos);
23866: else if (__n != 0)
23866: this->_M_erase(__pos, _M_limit(__pos, __n));
23866: return *this;
23866: }
23866: # 1824 "/usr/include/c++/10/bits/basic_string.h" 3
23866: iterator
23866: erase(__const_iterator __position)
23866: {
23866:
23866: ;
23866: const size_type __pos = __position - begin();
23866: this->_M_erase(__pos, size_type(1));
23866: return iterator(_M_data() + __pos);
23866: }
23866: # 1843 "/usr/include/c++/10/bits/basic_string.h" 3
23866: iterator
23866: erase(__const_iterator __first, __const_iterator __last)
23866: {
23866:
23866: ;
23866: const size_type __pos = __first - begin();
23866: if (__last == end())
23866: this->_M_set_length(__pos);
23866: else
23866: this->_M_erase(__pos, __last - __first);
23866: return iterator(this->_M_data() + __pos);
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: void
23866: pop_back() noexcept
23866: {
23866: ;
23866: _M_erase(size() - 1, 1);
23866: }
23866: # 1887 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string&
23866: replace(size_type __pos, size_type __n, const basic_string& __str)
23866: { return this->replace(__pos, __n, __str._M_data(), __str.size()); }
23866: # 1909 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string&
23866: replace(size_type __pos1, size_type __n1, const basic_string& __str,
23866: size_type __pos2, size_type __n2 = npos)
23866: { return this->replace(__pos1, __n1, __str._M_data()
23866: + __str._M_check(__pos2, "basic_string::replace"),
23866: __str._M_limit(__pos2, __n2)); }
23866: # 1934 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string&
23866: replace(size_type __pos, size_type __n1, const _CharT* __s,
23866: size_type __n2)
23866: {
23866: ;
23866: return _M_replace(_M_check(__pos, "basic_string::replace"),
23866: _M_limit(__pos, __n1), __s, __n2);
23866: }
23866: # 1959 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string&
23866: replace(size_type __pos, size_type __n1, const _CharT* __s)
23866: {
23866: ;
23866: return this->replace(__pos, __n1, __s, traits_type::length(__s));
23866: }
23866: # 1983 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string&
23866: replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c)
23866: { return _M_replace_aux(_M_check(__pos, "basic_string::replace"),
23866: _M_limit(__pos, __n1), __n2, __c); }
23866: # 2001 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string&
23866: replace(__const_iterator __i1, __const_iterator __i2,
23866: const basic_string& __str)
23866: { return this->replace(__i1, __i2, __str._M_data(), __str.size()); }
23866: # 2021 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string&
23866: replace(__const_iterator __i1, __const_iterator __i2,
23866: const _CharT* __s, size_type __n)
23866: {
23866:
23866: ;
23866: return this->replace(__i1 - begin(), __i2 - __i1, __s, __n);
23866: }
23866: # 2043 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string&
23866: replace(__const_iterator __i1, __const_iterator __i2, const _CharT* __s)
23866: {
23866: ;
23866: return this->replace(__i1, __i2, __s, traits_type::length(__s));
23866: }
23866: # 2064 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string&
23866: replace(__const_iterator __i1, __const_iterator __i2, size_type __n,
23866: _CharT __c)
23866: {
23866:
23866: ;
23866: return _M_replace_aux(__i1 - begin(), __i2 - __i1, __n, __c);
23866: }
23866: # 2089 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<class _InputIterator,
23866: typename = std::_RequireInputIter<_InputIterator>>
23866: basic_string&
23866: replace(const_iterator __i1, const_iterator __i2,
23866: _InputIterator __k1, _InputIterator __k2)
23866: {
23866:
23866: ;
23866: ;
23866: return this->_M_replace_dispatch(__i1, __i2, __k1, __k2,
23866: std::__false_type());
23866: }
23866: # 2121 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string&
23866: replace(__const_iterator __i1, __const_iterator __i2,
23866: _CharT* __k1, _CharT* __k2)
23866: {
23866:
23866: ;
23866: ;
23866: return this->replace(__i1 - begin(), __i2 - __i1,
23866: __k1, __k2 - __k1);
23866: }
23866:
23866: basic_string&
23866: replace(__const_iterator __i1, __const_iterator __i2,
23866: const _CharT* __k1, const _CharT* __k2)
23866: {
23866:
23866: ;
23866: ;
23866: return this->replace(__i1 - begin(), __i2 - __i1,
23866: __k1, __k2 - __k1);
23866: }
23866:
23866: basic_string&
23866: replace(__const_iterator __i1, __const_iterator __i2,
23866: iterator __k1, iterator __k2)
23866: {
23866:
23866: ;
23866: ;
23866: return this->replace(__i1 - begin(), __i2 - __i1,
23866: __k1.base(), __k2 - __k1);
23866: }
23866:
23866: basic_string&
23866: replace(__const_iterator __i1, __const_iterator __i2,
23866: const_iterator __k1, const_iterator __k2)
23866: {
23866:
23866: ;
23866: ;
23866: return this->replace(__i1 - begin(), __i2 - __i1,
23866: __k1.base(), __k2 - __k1);
23866: }
23866: # 2180 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string& replace(const_iterator __i1, const_iterator __i2,
23866: initializer_list<_CharT> __l)
23866: { return this->replace(__i1, __i2, __l.begin(), __l.size()); }
23866: # 2193 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _Tp>
23866: _If_sv<_Tp, basic_string&>
23866: replace(size_type __pos, size_type __n, const _Tp& __svt)
23866: {
23866: __sv_type __sv = __svt;
23866: return this->replace(__pos, __n, __sv.data(), __sv.size());
23866: }
23866: # 2210 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _Tp>
23866: _If_sv<_Tp, basic_string&>
23866: replace(size_type __pos1, size_type __n1, const _Tp& __svt,
23866: size_type __pos2, size_type __n2 = npos)
23866: {
23866: __sv_type __sv = __svt;
23866: return this->replace(__pos1, __n1,
23866: __sv.data()
23866: + std::__sv_check(__sv.size(), __pos2, "basic_string::replace"),
23866: std::__sv_limit(__sv.size(), __pos2, __n2));
23866: }
23866: # 2231 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _Tp>
23866: _If_sv<_Tp, basic_string&>
23866: replace(const_iterator __i1, const_iterator __i2, const _Tp& __svt)
23866: {
23866: __sv_type __sv = __svt;
23866: return this->replace(__i1 - begin(), __i2 - __i1, __sv);
23866: }
23866:
23866:
23866: private:
23866: template<class _Integer>
23866: basic_string&
23866: _M_replace_dispatch(const_iterator __i1, const_iterator __i2,
23866: _Integer __n, _Integer __val, __true_type)
23866: { return _M_replace_aux(__i1 - begin(), __i2 - __i1, __n, __val); }
23866:
23866: template<class _InputIterator>
23866: basic_string&
23866: _M_replace_dispatch(const_iterator __i1, const_iterator __i2,
23866: _InputIterator __k1, _InputIterator __k2,
23866: __false_type);
23866:
23866: basic_string&
23866: _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,
23866: _CharT __c);
23866:
23866: basic_string&
23866: _M_replace(size_type __pos, size_type __len1, const _CharT* __s,
23866: const size_type __len2);
23866:
23866: basic_string&
23866: _M_append(const _CharT* __s, size_type __n);
23866:
23866: public:
23866: # 2278 "/usr/include/c++/10/bits/basic_string.h" 3
23866: size_type
23866: copy(_CharT* __s, size_type __n, size_type __pos = 0) const;
23866: # 2288 "/usr/include/c++/10/bits/basic_string.h" 3
23866: void
23866: swap(basic_string& __s) noexcept;
23866: # 2298 "/usr/include/c++/10/bits/basic_string.h" 3
23866: const _CharT*
23866: c_str() const noexcept
23866: { return _M_data(); }
23866: # 2310 "/usr/include/c++/10/bits/basic_string.h" 3
23866: const _CharT*
23866: data() const noexcept
23866: { return _M_data(); }
23866: # 2321 "/usr/include/c++/10/bits/basic_string.h" 3
23866: _CharT*
23866: data() noexcept
23866: { return _M_data(); }
23866:
23866:
23866:
23866:
23866:
23866: allocator_type
23866: get_allocator() const noexcept
23866: { return _M_get_allocator(); }
23866: # 2345 "/usr/include/c++/10/bits/basic_string.h" 3
23866: size_type
23866: find(const _CharT* __s, size_type __pos, size_type __n) const
23866: noexcept;
23866: # 2359 "/usr/include/c++/10/bits/basic_string.h" 3
23866: size_type
23866: find(const basic_string& __str, size_type __pos = 0) const
23866: noexcept
23866: { return this->find(__str.data(), __pos, __str.size()); }
23866: # 2371 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _Tp>
23866: _If_sv<_Tp, size_type>
23866: find(const _Tp& __svt, size_type __pos = 0) const
23866: noexcept(is_same<_Tp, __sv_type>::value)
23866: {
23866: __sv_type __sv = __svt;
23866: return this->find(__sv.data(), __pos, __sv.size());
23866: }
23866: # 2391 "/usr/include/c++/10/bits/basic_string.h" 3
23866: size_type
23866: find(const _CharT* __s, size_type __pos = 0) const noexcept
23866: {
23866: ;
23866: return this->find(__s, __pos, traits_type::length(__s));
23866: }
23866: # 2408 "/usr/include/c++/10/bits/basic_string.h" 3
23866: size_type
23866: find(_CharT __c, size_type __pos = 0) const noexcept;
23866: # 2421 "/usr/include/c++/10/bits/basic_string.h" 3
23866: size_type
23866: rfind(const basic_string& __str, size_type __pos = npos) const
23866: noexcept
23866: { return this->rfind(__str.data(), __pos, __str.size()); }
23866: # 2433 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _Tp>
23866: _If_sv<_Tp, size_type>
23866: rfind(const _Tp& __svt, size_type __pos = npos) const
23866: noexcept(is_same<_Tp, __sv_type>::value)
23866: {
23866: __sv_type __sv = __svt;
23866: return this->rfind(__sv.data(), __pos, __sv.size());
23866: }
23866: # 2455 "/usr/include/c++/10/bits/basic_string.h" 3
23866: size_type
23866: rfind(const _CharT* __s, size_type __pos, size_type __n) const
23866: noexcept;
23866: # 2469 "/usr/include/c++/10/bits/basic_string.h" 3
23866: size_type
23866: rfind(const _CharT* __s, size_type __pos = npos) const
23866: {
23866: ;
23866: return this->rfind(__s, __pos, traits_type::length(__s));
23866: }
23866: # 2486 "/usr/include/c++/10/bits/basic_string.h" 3
23866: size_type
23866: rfind(_CharT __c, size_type __pos = npos) const noexcept;
23866: # 2500 "/usr/include/c++/10/bits/basic_string.h" 3
23866: size_type
23866: find_first_of(const basic_string& __str, size_type __pos = 0) const
23866: noexcept
23866: { return this->find_first_of(__str.data(), __pos, __str.size()); }
23866: # 2513 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _Tp>
23866: _If_sv<_Tp, size_type>
23866: find_first_of(const _Tp& __svt, size_type __pos = 0) const
23866: noexcept(is_same<_Tp, __sv_type>::value)
23866: {
23866: __sv_type __sv = __svt;
23866: return this->find_first_of(__sv.data(), __pos, __sv.size());
23866: }
23866: # 2535 "/usr/include/c++/10/bits/basic_string.h" 3
23866: size_type
23866: find_first_of(const _CharT* __s, size_type __pos, size_type __n) const
23866: noexcept;
23866: # 2549 "/usr/include/c++/10/bits/basic_string.h" 3
23866: size_type
23866: find_first_of(const _CharT* __s, size_type __pos = 0) const
23866: noexcept
23866: {
23866: ;
23866: return this->find_first_of(__s, __pos, traits_type::length(__s));
23866: }
23866: # 2569 "/usr/include/c++/10/bits/basic_string.h" 3
23866: size_type
23866: find_first_of(_CharT __c, size_type __pos = 0) const noexcept
23866: { return this->find(__c, __pos); }
23866: # 2584 "/usr/include/c++/10/bits/basic_string.h" 3
23866: size_type
23866: find_last_of(const basic_string& __str, size_type __pos = npos) const
23866: noexcept
23866: { return this->find_last_of(__str.data(), __pos, __str.size()); }
23866: # 2597 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _Tp>
23866: _If_sv<_Tp, size_type>
23866: find_last_of(const _Tp& __svt, size_type __pos = npos) const
23866: noexcept(is_same<_Tp, __sv_type>::value)
23866: {
23866: __sv_type __sv = __svt;
23866: return this->find_last_of(__sv.data(), __pos, __sv.size());
23866: }
23866: # 2619 "/usr/include/c++/10/bits/basic_string.h" 3
23866: size_type
23866: find_last_of(const _CharT* __s, size_type __pos, size_type __n) const
23866: noexcept;
23866: # 2633 "/usr/include/c++/10/bits/basic_string.h" 3
23866: size_type
23866: find_last_of(const _CharT* __s, size_type __pos = npos) const
23866: noexcept
23866: {
23866: ;
23866: return this->find_last_of(__s, __pos, traits_type::length(__s));
23866: }
23866: # 2653 "/usr/include/c++/10/bits/basic_string.h" 3
23866: size_type
23866: find_last_of(_CharT __c, size_type __pos = npos) const noexcept
23866: { return this->rfind(__c, __pos); }
23866: # 2667 "/usr/include/c++/10/bits/basic_string.h" 3
23866: size_type
23866: find_first_not_of(const basic_string& __str, size_type __pos = 0) const
23866: noexcept
23866: { return this->find_first_not_of(__str.data(), __pos, __str.size()); }
23866: # 2680 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _Tp>
23866: _If_sv<_Tp, size_type>
23866: find_first_not_of(const _Tp& __svt, size_type __pos = 0) const
23866: noexcept(is_same<_Tp, __sv_type>::value)
23866: {
23866: __sv_type __sv = __svt;
23866: return this->find_first_not_of(__sv.data(), __pos, __sv.size());
23866: }
23866: # 2702 "/usr/include/c++/10/bits/basic_string.h" 3
23866: size_type
23866: find_first_not_of(const _CharT* __s, size_type __pos,
23866: size_type __n) const noexcept;
23866: # 2716 "/usr/include/c++/10/bits/basic_string.h" 3
23866: size_type
23866: find_first_not_of(const _CharT* __s, size_type __pos = 0) const
23866: noexcept
23866: {
23866: ;
23866: return this->find_first_not_of(__s, __pos, traits_type::length(__s));
23866: }
23866: # 2734 "/usr/include/c++/10/bits/basic_string.h" 3
23866: size_type
23866: find_first_not_of(_CharT __c, size_type __pos = 0) const
23866: noexcept;
23866: # 2749 "/usr/include/c++/10/bits/basic_string.h" 3
23866: size_type
23866: find_last_not_of(const basic_string& __str, size_type __pos = npos) const
23866: noexcept
23866: { return this->find_last_not_of(__str.data(), __pos, __str.size()); }
23866: # 2762 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _Tp>
23866: _If_sv<_Tp, size_type>
23866: find_last_not_of(const _Tp& __svt, size_type __pos = npos) const
23866: noexcept(is_same<_Tp, __sv_type>::value)
23866: {
23866: __sv_type __sv = __svt;
23866: return this->find_last_not_of(__sv.data(), __pos, __sv.size());
23866: }
23866: # 2784 "/usr/include/c++/10/bits/basic_string.h" 3
23866: size_type
23866: find_last_not_of(const _CharT* __s, size_type __pos,
23866: size_type __n) const noexcept;
23866: # 2798 "/usr/include/c++/10/bits/basic_string.h" 3
23866: size_type
23866: find_last_not_of(const _CharT* __s, size_type __pos = npos) const
23866: noexcept
23866: {
23866: ;
23866: return this->find_last_not_of(__s, __pos, traits_type::length(__s));
23866: }
23866: # 2816 "/usr/include/c++/10/bits/basic_string.h" 3
23866: size_type
23866: find_last_not_of(_CharT __c, size_type __pos = npos) const
23866: noexcept;
23866: # 2832 "/usr/include/c++/10/bits/basic_string.h" 3
23866: basic_string
23866: substr(size_type __pos = 0, size_type __n = npos) const
23866: { return basic_string(*this,
23866: _M_check(__pos, "basic_string::substr"), __n); }
23866: # 2851 "/usr/include/c++/10/bits/basic_string.h" 3
23866: int
23866: compare(const basic_string& __str) const
23866: {
23866: const size_type __size = this->size();
23866: const size_type __osize = __str.size();
23866: const size_type __len = std::min(__size, __osize);
23866:
23866: int __r = traits_type::compare(_M_data(), __str.data(), __len);
23866: if (!__r)
23866: __r = _S_compare(__size, __osize);
23866: return __r;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: _If_sv<_Tp, int>
23866: compare(const _Tp& __svt) const
23866: noexcept(is_same<_Tp, __sv_type>::value)
23866: {
23866: __sv_type __sv = __svt;
23866: const size_type __size = this->size();
23866: const size_type __osize = __sv.size();
23866: const size_type __len = std::min(__size, __osize);
23866:
23866: int __r = traits_type::compare(_M_data(), __sv.data(), __len);
23866: if (!__r)
23866: __r = _S_compare(__size, __osize);
23866: return __r;
23866: }
23866: # 2894 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _Tp>
23866: _If_sv<_Tp, int>
23866: compare(size_type __pos, size_type __n, const _Tp& __svt) const
23866: noexcept(is_same<_Tp, __sv_type>::value)
23866: {
23866: __sv_type __sv = __svt;
23866: return __sv_type(*this).substr(__pos, __n).compare(__sv);
23866: }
23866: # 2913 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _Tp>
23866: _If_sv<_Tp, int>
23866: compare(size_type __pos1, size_type __n1, const _Tp& __svt,
23866: size_type __pos2, size_type __n2 = npos) const
23866: noexcept(is_same<_Tp, __sv_type>::value)
23866: {
23866: __sv_type __sv = __svt;
23866: return __sv_type(*this)
23866: .substr(__pos1, __n1).compare(__sv.substr(__pos2, __n2));
23866: }
23866: # 2944 "/usr/include/c++/10/bits/basic_string.h" 3
23866: int
23866: compare(size_type __pos, size_type __n, const basic_string& __str) const;
23866: # 2970 "/usr/include/c++/10/bits/basic_string.h" 3
23866: int
23866: compare(size_type __pos1, size_type __n1, const basic_string& __str,
23866: size_type __pos2, size_type __n2 = npos) const;
23866: # 2988 "/usr/include/c++/10/bits/basic_string.h" 3
23866: int
23866: compare(const _CharT* __s) const noexcept;
23866: # 3012 "/usr/include/c++/10/bits/basic_string.h" 3
23866: int
23866: compare(size_type __pos, size_type __n1, const _CharT* __s) const;
23866: # 3039 "/usr/include/c++/10/bits/basic_string.h" 3
23866: int
23866: compare(size_type __pos, size_type __n1, const _CharT* __s,
23866: size_type __n2) const;
23866: # 3070 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename, typename, typename> friend class basic_stringbuf;
23866: };
23866: }
23866: # 5995 "/usr/include/c++/10/bits/basic_string.h" 3
23866: namespace __cxx11 {
23866: template<typename _InputIterator, typename _CharT
23866: = typename iterator_traits<_InputIterator>::value_type,
23866: typename _Allocator = allocator<_CharT>,
23866: typename = _RequireInputIter<_InputIterator>,
23866: typename = _RequireAllocator<_Allocator>>
23866: basic_string(_InputIterator, _InputIterator, _Allocator = _Allocator())
23866: -> basic_string<_CharT, char_traits<_CharT>, _Allocator>;
23866:
23866:
23866:
23866: template<typename _CharT, typename _Traits,
23866: typename _Allocator = allocator<_CharT>,
23866: typename = _RequireAllocator<_Allocator>>
23866: basic_string(basic_string_view<_CharT, _Traits>, const _Allocator& = _Allocator())
23866: -> basic_string<_CharT, _Traits, _Allocator>;
23866:
23866: template<typename _CharT, typename _Traits,
23866: typename _Allocator = allocator<_CharT>,
23866: typename = _RequireAllocator<_Allocator>>
23866: basic_string(basic_string_view<_CharT, _Traits>,
23866: typename basic_string<_CharT, _Traits, _Allocator>::size_type,
23866: typename basic_string<_CharT, _Traits, _Allocator>::size_type,
23866: const _Allocator& = _Allocator())
23866: -> basic_string<_CharT, _Traits, _Allocator>;
23866: }
23866: # 6030 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: basic_string<_CharT, _Traits, _Alloc>
23866: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
23866: const basic_string<_CharT, _Traits, _Alloc>& __rhs)
23866: {
23866: basic_string<_CharT, _Traits, _Alloc> __str(__lhs);
23866: __str.append(__rhs);
23866: return __str;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: basic_string<_CharT,_Traits,_Alloc>
23866: operator+(const _CharT* __lhs,
23866: const basic_string<_CharT,_Traits,_Alloc>& __rhs);
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: basic_string<_CharT,_Traits,_Alloc>
23866: operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs);
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline basic_string<_CharT, _Traits, _Alloc>
23866: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
23866: const _CharT* __rhs)
23866: {
23866: basic_string<_CharT, _Traits, _Alloc> __str(__lhs);
23866: __str.append(__rhs);
23866: return __str;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline basic_string<_CharT, _Traits, _Alloc>
23866: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs)
23866: {
23866: typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
23866: typedef typename __string_type::size_type __size_type;
23866: __string_type __str(__lhs);
23866: __str.append(__size_type(1), __rhs);
23866: return __str;
23866: }
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline basic_string<_CharT, _Traits, _Alloc>
23866: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs,
23866: const basic_string<_CharT, _Traits, _Alloc>& __rhs)
23866: { return std::move(__lhs.append(__rhs)); }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline basic_string<_CharT, _Traits, _Alloc>
23866: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
23866: basic_string<_CharT, _Traits, _Alloc>&& __rhs)
23866: { return std::move(__rhs.insert(0, __lhs)); }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline basic_string<_CharT, _Traits, _Alloc>
23866: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs,
23866: basic_string<_CharT, _Traits, _Alloc>&& __rhs)
23866: {
23866:
23866: using _Alloc_traits = allocator_traits<_Alloc>;
23866: bool __use_rhs = false;
23866: if constexpr (typename _Alloc_traits::is_always_equal{})
23866: __use_rhs = true;
23866: else if (__lhs.get_allocator() == __rhs.get_allocator())
23866: __use_rhs = true;
23866: if (__use_rhs)
23866:
23866: {
23866: const auto __size = __lhs.size() + __rhs.size();
23866: if (__size > __lhs.capacity() && __size <= __rhs.capacity())
23866: return std::move(__rhs.insert(0, __lhs));
23866: }
23866: return std::move(__lhs.append(__rhs));
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline basic_string<_CharT, _Traits, _Alloc>
23866: operator+(const _CharT* __lhs,
23866: basic_string<_CharT, _Traits, _Alloc>&& __rhs)
23866: { return std::move(__rhs.insert(0, __lhs)); }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline basic_string<_CharT, _Traits, _Alloc>
23866: operator+(_CharT __lhs,
23866: basic_string<_CharT, _Traits, _Alloc>&& __rhs)
23866: { return std::move(__rhs.insert(0, 1, __lhs)); }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline basic_string<_CharT, _Traits, _Alloc>
23866: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs,
23866: const _CharT* __rhs)
23866: { return std::move(__lhs.append(__rhs)); }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline basic_string<_CharT, _Traits, _Alloc>
23866: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs,
23866: _CharT __rhs)
23866: { return std::move(__lhs.append(1, __rhs)); }
23866: # 6161 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline bool
23866: operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
23866: const basic_string<_CharT, _Traits, _Alloc>& __rhs)
23866: noexcept
23866: { return __lhs.compare(__rhs) == 0; }
23866:
23866: template<typename _CharT>
23866: inline
23866: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, bool>::__type
23866: operator==(const basic_string<_CharT>& __lhs,
23866: const basic_string<_CharT>& __rhs) noexcept
23866: { return (__lhs.size() == __rhs.size()
23866: && !std::char_traits<_CharT>::compare(__lhs.data(), __rhs.data(),
23866: __lhs.size())); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline bool
23866: operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
23866: const _CharT* __rhs)
23866: { return __lhs.compare(__rhs) == 0; }
23866: # 6224 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline bool
23866: operator==(const _CharT* __lhs,
23866: const basic_string<_CharT, _Traits, _Alloc>& __rhs)
23866: { return __rhs.compare(__lhs) == 0; }
23866: # 6237 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline bool
23866: operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
23866: const basic_string<_CharT, _Traits, _Alloc>& __rhs)
23866: noexcept
23866: { return !(__lhs == __rhs); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline bool
23866: operator!=(const _CharT* __lhs,
23866: const basic_string<_CharT, _Traits, _Alloc>& __rhs)
23866: { return !(__lhs == __rhs); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline bool
23866: operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
23866: const _CharT* __rhs)
23866: { return !(__lhs == __rhs); }
23866: # 6275 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline bool
23866: operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
23866: const basic_string<_CharT, _Traits, _Alloc>& __rhs)
23866: noexcept
23866: { return __lhs.compare(__rhs) < 0; }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline bool
23866: operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
23866: const _CharT* __rhs)
23866: { return __lhs.compare(__rhs) < 0; }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline bool
23866: operator<(const _CharT* __lhs,
23866: const basic_string<_CharT, _Traits, _Alloc>& __rhs)
23866: { return __rhs.compare(__lhs) > 0; }
23866: # 6313 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline bool
23866: operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
23866: const basic_string<_CharT, _Traits, _Alloc>& __rhs)
23866: noexcept
23866: { return __lhs.compare(__rhs) > 0; }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline bool
23866: operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
23866: const _CharT* __rhs)
23866: { return __lhs.compare(__rhs) > 0; }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline bool
23866: operator>(const _CharT* __lhs,
23866: const basic_string<_CharT, _Traits, _Alloc>& __rhs)
23866: { return __rhs.compare(__lhs) < 0; }
23866: # 6351 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline bool
23866: operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
23866: const basic_string<_CharT, _Traits, _Alloc>& __rhs)
23866: noexcept
23866: { return __lhs.compare(__rhs) <= 0; }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline bool
23866: operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
23866: const _CharT* __rhs)
23866: { return __lhs.compare(__rhs) <= 0; }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline bool
23866: operator<=(const _CharT* __lhs,
23866: const basic_string<_CharT, _Traits, _Alloc>& __rhs)
23866: { return __rhs.compare(__lhs) >= 0; }
23866: # 6389 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline bool
23866: operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
23866: const basic_string<_CharT, _Traits, _Alloc>& __rhs)
23866: noexcept
23866: { return __lhs.compare(__rhs) >= 0; }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline bool
23866: operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
23866: const _CharT* __rhs)
23866: { return __lhs.compare(__rhs) >= 0; }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline bool
23866: operator>=(const _CharT* __lhs,
23866: const basic_string<_CharT, _Traits, _Alloc>& __rhs)
23866: { return __rhs.compare(__lhs) <= 0; }
23866: # 6428 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline void
23866: swap(basic_string<_CharT, _Traits, _Alloc>& __lhs,
23866: basic_string<_CharT, _Traits, _Alloc>& __rhs)
23866: noexcept(noexcept(__lhs.swap(__rhs)))
23866: { __lhs.swap(__rhs); }
23866: # 6448 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: basic_istream<_CharT, _Traits>&
23866: operator>>(basic_istream<_CharT, _Traits>& __is,
23866: basic_string<_CharT, _Traits, _Alloc>& __str);
23866:
23866: template<>
23866: basic_istream<char>&
23866: operator>>(basic_istream<char>& __is, basic_string<char>& __str);
23866: # 6466 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline basic_ostream<_CharT, _Traits>&
23866: operator<<(basic_ostream<_CharT, _Traits>& __os,
23866: const basic_string<_CharT, _Traits, _Alloc>& __str)
23866: {
23866:
23866:
23866: return __ostream_insert(__os, __str.data(), __str.size());
23866: }
23866: # 6489 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: basic_istream<_CharT, _Traits>&
23866: getline(basic_istream<_CharT, _Traits>& __is,
23866: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim);
23866: # 6506 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline basic_istream<_CharT, _Traits>&
23866: getline(basic_istream<_CharT, _Traits>& __is,
23866: basic_string<_CharT, _Traits, _Alloc>& __str)
23866: { return std::getline(__is, __str, __is.widen('\n')); }
23866:
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline basic_istream<_CharT, _Traits>&
23866: getline(basic_istream<_CharT, _Traits>&& __is,
23866: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim)
23866: { return std::getline(__is, __str, __delim); }
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline basic_istream<_CharT, _Traits>&
23866: getline(basic_istream<_CharT, _Traits>&& __is,
23866: basic_string<_CharT, _Traits, _Alloc>& __str)
23866: { return std::getline(__is, __str); }
23866:
23866:
23866: template<>
23866: basic_istream<char>&
23866: getline(basic_istream<char>& __in, basic_string<char>& __str,
23866: char __delim);
23866:
23866:
23866: template<>
23866: basic_istream<wchar_t>&
23866: getline(basic_istream<wchar_t>& __in, basic_string<wchar_t>& __str,
23866: wchar_t __delim);
23866:
23866:
23866:
23866: }
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/ext/string_conversions.h" 1 3
23866: # 30 "/usr/include/c++/10/ext/string_conversions.h" 3
23866: #define _STRING_CONVERSIONS_H 1
23866:
23866:
23866: # 33 "/usr/include/c++/10/ext/string_conversions.h" 3
23866: # 41 "/usr/include/c++/10/ext/string_conversions.h" 3
23866: # 1 "/usr/include/c++/10/cstdlib" 1 3
23866: # 39 "/usr/include/c++/10/cstdlib" 3
23866:
23866: # 40 "/usr/include/c++/10/cstdlib" 3
23866: # 42 "/usr/include/c++/10/ext/string_conversions.h" 2 3
23866: # 1 "/usr/include/c++/10/cwchar" 1 3
23866: # 39 "/usr/include/c++/10/cwchar" 3
23866:
23866: # 40 "/usr/include/c++/10/cwchar" 3
23866: # 43 "/usr/include/c++/10/ext/string_conversions.h" 2 3
23866: # 1 "/usr/include/c++/10/cstdio" 1 3
23866: # 39 "/usr/include/c++/10/cstdio" 3
23866:
23866: # 40 "/usr/include/c++/10/cstdio" 3
23866:
23866:
23866: # 1 "/usr/include/stdio.h" 1 3 4
23866: # 24 "/usr/include/stdio.h" 3 4
23866: #define _STDIO_H 1
23866:
23866: #define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4
23866: # 31 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 3 4
23866: #undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
23866:
23866:
23866:
23866:
23866:
23866: #undef __GLIBC_USE_LIB_EXT2
23866:
23866:
23866: #define __GLIBC_USE_LIB_EXT2 1
23866: # 49 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 3 4
23866: #undef __GLIBC_USE_IEC_60559_BFP_EXT
23866:
23866: #define __GLIBC_USE_IEC_60559_BFP_EXT 1
23866:
23866:
23866:
23866: #undef __GLIBC_USE_IEC_60559_BFP_EXT_C2X
23866:
23866: #define __GLIBC_USE_IEC_60559_BFP_EXT_C2X 1
23866: # 66 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 3 4
23866: #undef __GLIBC_USE_IEC_60559_FUNCS_EXT
23866:
23866: #define __GLIBC_USE_IEC_60559_FUNCS_EXT 1
23866:
23866:
23866:
23866: #undef __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X
23866:
23866: #define __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X 1
23866:
23866:
23866:
23866:
23866:
23866:
23866: #undef __GLIBC_USE_IEC_60559_TYPES_EXT
23866:
23866: #define __GLIBC_USE_IEC_60559_TYPES_EXT 1
23866: # 28 "/usr/include/stdio.h" 2 3 4
23866:
23866: extern "C" {
23866:
23866: #define __need_size_t
23866: #define __need_NULL
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 1 3 4
23866: # 155 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_ptrdiff_t
23866: # 231 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_size_t
23866: # 340 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_wchar_t
23866: # 390 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef NULL
23866:
23866: #define NULL __null
23866: # 401 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_NULL
23866:
23866:
23866:
23866:
23866: #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
23866: # 34 "/usr/include/stdio.h" 2 3 4
23866:
23866: #define __need___va_list
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stdarg.h" 1 3 4
23866: # 34 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stdarg.h" 3 4
23866: #undef __need___va_list
23866: # 37 "/usr/include/stdio.h" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__fpos_t.h" 1 3 4
23866:
23866: #define _____fpos_t_defined 1
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: typedef struct _G_fpos_t
23866: {
23866: __off_t __pos;
23866: __mbstate_t __state;
23866: } __fpos_t;
23866: # 40 "/usr/include/stdio.h" 2 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__fpos64_t.h" 1 3 4
23866:
23866: #define _____fpos64_t_defined 1
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: typedef struct _G_fpos64_t
23866: {
23866: __off64_t __pos;
23866: __mbstate_t __state;
23866: } __fpos64_t;
23866: # 41 "/usr/include/stdio.h" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_FILE.h" 1 3 4
23866: # 19 "/usr/include/arm-linux-gnueabihf/bits/types/struct_FILE.h" 3 4
23866: #define __struct_FILE_defined 1
23866: # 35 "/usr/include/arm-linux-gnueabihf/bits/types/struct_FILE.h" 3 4
23866: struct _IO_FILE;
23866: struct _IO_marker;
23866: struct _IO_codecvt;
23866: struct _IO_wide_data;
23866:
23866:
23866:
23866:
23866: typedef void _IO_lock_t;
23866:
23866:
23866:
23866:
23866:
23866: struct _IO_FILE
23866: {
23866: int _flags;
23866:
23866:
23866: char *_IO_read_ptr;
23866: char *_IO_read_end;
23866: char *_IO_read_base;
23866: char *_IO_write_base;
23866: char *_IO_write_ptr;
23866: char *_IO_write_end;
23866: char *_IO_buf_base;
23866: char *_IO_buf_end;
23866:
23866:
23866: char *_IO_save_base;
23866: char *_IO_backup_base;
23866: char *_IO_save_end;
23866:
23866: struct _IO_marker *_markers;
23866:
23866: struct _IO_FILE *_chain;
23866:
23866: int _fileno;
23866: int _flags2;
23866: __off_t _old_offset;
23866:
23866:
23866: unsigned short _cur_column;
23866: signed char _vtable_offset;
23866: char _shortbuf[1];
23866:
23866: _IO_lock_t *_lock;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: __off64_t _offset;
23866:
23866: struct _IO_codecvt *_codecvt;
23866: struct _IO_wide_data *_wide_data;
23866: struct _IO_FILE *_freeres_list;
23866: void *_freeres_buf;
23866: size_t __pad5;
23866: int _mode;
23866:
23866: char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
23866: };
23866:
23866:
23866: #define __getc_unlocked_body(_fp) (__glibc_unlikely ((_fp)->_IO_read_ptr >= (_fp)->_IO_read_end) ? __uflow (_fp) : *(unsigned char *) (_fp)->_IO_read_ptr++)
23866:
23866:
23866:
23866: #define __putc_unlocked_body(_ch,_fp) (__glibc_unlikely ((_fp)->_IO_write_ptr >= (_fp)->_IO_write_end) ? __overflow (_fp, (unsigned char) (_ch)) : (unsigned char) (*(_fp)->_IO_write_ptr++ = (_ch)))
23866:
23866:
23866:
23866:
23866: #define _IO_EOF_SEEN 0x0010
23866: #define __feof_unlocked_body(_fp) (((_fp)->_flags & _IO_EOF_SEEN) != 0)
23866:
23866: #define _IO_ERR_SEEN 0x0020
23866: #define __ferror_unlocked_body(_fp) (((_fp)->_flags & _IO_ERR_SEEN) != 0)
23866:
23866: #define _IO_USER_LOCK 0x8000
23866: # 44 "/usr/include/stdio.h" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/cookie_io_functions_t.h" 1 3 4
23866: # 19 "/usr/include/arm-linux-gnueabihf/bits/types/cookie_io_functions_t.h" 3 4
23866: #define __cookie_io_functions_t_defined 1
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: typedef __ssize_t cookie_read_function_t (void *__cookie, char *__buf,
23866: size_t __nbytes);
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: typedef __ssize_t cookie_write_function_t (void *__cookie, const char *__buf,
23866: size_t __nbytes);
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: typedef int cookie_seek_function_t (void *__cookie, __off64_t *__pos, int __w);
23866:
23866:
23866: typedef int cookie_close_function_t (void *__cookie);
23866:
23866:
23866:
23866:
23866:
23866:
23866: typedef struct _IO_cookie_io_functions_t
23866: {
23866: cookie_read_function_t *read;
23866: cookie_write_function_t *write;
23866: cookie_seek_function_t *seek;
23866: cookie_close_function_t *close;
23866: } cookie_io_functions_t;
23866: # 47 "/usr/include/stdio.h" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: typedef __gnuc_va_list va_list;
23866: #define _VA_LIST_DEFINED
23866: # 86 "/usr/include/stdio.h" 3 4
23866: typedef __fpos64_t fpos_t;
23866:
23866:
23866: typedef __fpos64_t fpos64_t;
23866:
23866:
23866:
23866: #define _IOFBF 0
23866: #define _IOLBF 1
23866: #define _IONBF 2
23866:
23866:
23866:
23866: #define BUFSIZ 8192
23866:
23866:
23866:
23866:
23866: #define EOF (-1)
23866:
23866:
23866:
23866:
23866: #define SEEK_SET 0
23866: #define SEEK_CUR 1
23866: #define SEEK_END 2
23866:
23866: #define SEEK_DATA 3
23866: #define SEEK_HOLE 4
23866:
23866:
23866:
23866:
23866:
23866: #define P_tmpdir "/tmp"
23866: # 133 "/usr/include/stdio.h" 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdio_lim.h" 1 3 4
23866: # 19 "/usr/include/arm-linux-gnueabihf/bits/stdio_lim.h" 3 4
23866: #define _BITS_STDIO_LIM_H 1
23866:
23866:
23866:
23866:
23866:
23866: #define L_tmpnam 20
23866: #define TMP_MAX 238328
23866: #define FILENAME_MAX 4096
23866:
23866:
23866: #define L_ctermid 9
23866:
23866: #define L_cuserid 9
23866:
23866:
23866:
23866: #undef FOPEN_MAX
23866: #define FOPEN_MAX 16
23866: # 134 "/usr/include/stdio.h" 2 3 4
23866:
23866:
23866:
23866: extern FILE *stdin;
23866: extern FILE *stdout;
23866: extern FILE *stderr;
23866:
23866: #define stdin stdin
23866: #define stdout stdout
23866: #define stderr stderr
23866:
23866:
23866: extern int remove (const char *__filename) throw ();
23866:
23866: extern int rename (const char *__old, const char *__new) throw ();
23866:
23866:
23866:
23866: extern int renameat (int __oldfd, const char *__old, int __newfd,
23866: const char *__new) throw ();
23866:
23866:
23866:
23866:
23866: #define RENAME_NOREPLACE (1 << 0)
23866: #define RENAME_EXCHANGE (1 << 1)
23866: #define RENAME_WHITEOUT (1 << 2)
23866:
23866:
23866:
23866: extern int renameat2 (int __oldfd, const char *__old, int __newfd,
23866: const char *__new, unsigned int __flags) throw ();
23866: # 176 "/usr/include/stdio.h" 3 4
23866: extern FILE *tmpfile (void) __asm__ ("" "tmpfile64") __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern FILE *tmpfile64 (void) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866: extern char *tmpnam (char *__s) throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: extern char *tmpnam_r (char *__s) throw () __attribute__ ((__warn_unused_result__));
23866: # 204 "/usr/include/stdio.h" 3 4
23866: extern char *tempnam (const char *__dir, const char *__pfx)
23866: throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int fclose (FILE *__stream);
23866:
23866:
23866:
23866:
23866: extern int fflush (FILE *__stream);
23866: # 227 "/usr/include/stdio.h" 3 4
23866: extern int fflush_unlocked (FILE *__stream);
23866: # 237 "/usr/include/stdio.h" 3 4
23866: extern int fcloseall (void);
23866: # 257 "/usr/include/stdio.h" 3 4
23866: extern FILE *fopen (const char *__restrict __filename, const char *__restrict __modes) __asm__ ("" "fopen64")
23866:
23866: __attribute__ ((__warn_unused_result__));
23866: extern FILE *freopen (const char *__restrict __filename, const char *__restrict __modes, FILE *__restrict __stream) __asm__ ("" "freopen64")
23866:
23866:
23866: __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern FILE *fopen64 (const char *__restrict __filename,
23866: const char *__restrict __modes) __attribute__ ((__warn_unused_result__));
23866: extern FILE *freopen64 (const char *__restrict __filename,
23866: const char *__restrict __modes,
23866: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: extern FILE *fdopen (int __fd, const char *__modes) throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866: extern FILE *fopencookie (void *__restrict __magic_cookie,
23866: const char *__restrict __modes,
23866: cookie_io_functions_t __io_funcs) throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: extern FILE *fmemopen (void *__s, size_t __len, const char *__modes)
23866: throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866: extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) throw ();
23866:
23866:
23866:
23866: extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
23866: int __modes, size_t __n) throw ();
23866:
23866:
23866:
23866:
23866: extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
23866: size_t __size) throw ();
23866:
23866:
23866: extern void setlinebuf (FILE *__stream) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int fprintf (FILE *__restrict __stream,
23866: const char *__restrict __format, ...);
23866:
23866:
23866:
23866:
23866: extern int printf (const char *__restrict __format, ...);
23866:
23866: extern int sprintf (char *__restrict __s,
23866: const char *__restrict __format, ...) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern int vfprintf (FILE *__restrict __s, const char *__restrict __format,
23866: __gnuc_va_list __arg);
23866:
23866:
23866:
23866:
23866: extern int vprintf (const char *__restrict __format, __gnuc_va_list __arg);
23866:
23866: extern int vsprintf (char *__restrict __s, const char *__restrict __format,
23866: __gnuc_va_list __arg) throw ();
23866:
23866:
23866:
23866: extern int snprintf (char *__restrict __s, size_t __maxlen,
23866: const char *__restrict __format, ...)
23866: throw () __attribute__ ((__format__ (__printf__, 3, 4)));
23866:
23866: extern int vsnprintf (char *__restrict __s, size_t __maxlen,
23866: const char *__restrict __format, __gnuc_va_list __arg)
23866: throw () __attribute__ ((__format__ (__printf__, 3, 0)));
23866:
23866:
23866:
23866:
23866:
23866: extern int vasprintf (char **__restrict __ptr, const char *__restrict __f,
23866: __gnuc_va_list __arg)
23866: throw () __attribute__ ((__format__ (__printf__, 2, 0))) __attribute__ ((__warn_unused_result__));
23866: extern int __asprintf (char **__restrict __ptr,
23866: const char *__restrict __fmt, ...)
23866: throw () __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__));
23866: extern int asprintf (char **__restrict __ptr,
23866: const char *__restrict __fmt, ...)
23866: throw () __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: extern int vdprintf (int __fd, const char *__restrict __fmt,
23866: __gnuc_va_list __arg)
23866: __attribute__ ((__format__ (__printf__, 2, 0)));
23866: extern int dprintf (int __fd, const char *__restrict __fmt, ...)
23866: __attribute__ ((__format__ (__printf__, 2, 3)));
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int fscanf (FILE *__restrict __stream,
23866: const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: extern int scanf (const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__));
23866:
23866: extern int sscanf (const char *__restrict __s,
23866: const char *__restrict __format, ...) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int fscanf (FILE *__restrict __stream, const char *__restrict __format, ...) __asm__ ("" "__isoc99_fscanf")
23866:
23866: __attribute__ ((__warn_unused_result__));
23866: extern int scanf (const char *__restrict __format, ...) __asm__ ("" "__isoc99_scanf")
23866: __attribute__ ((__warn_unused_result__));
23866: extern int sscanf (const char *__restrict __s, const char *__restrict __format, ...) throw () __asm__ ("" "__isoc99_sscanf")
23866:
23866: ;
23866: # 432 "/usr/include/stdio.h" 3 4
23866: extern int vfscanf (FILE *__restrict __s, const char *__restrict __format,
23866: __gnuc_va_list __arg)
23866: __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866: extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg)
23866: __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866: extern int vsscanf (const char *__restrict __s,
23866: const char *__restrict __format, __gnuc_va_list __arg)
23866: throw () __attribute__ ((__format__ (__scanf__, 2, 0)));
23866:
23866:
23866:
23866:
23866: extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vfscanf")
23866:
23866:
23866:
23866: __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__));
23866: extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vscanf")
23866:
23866: __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__));
23866: extern int vsscanf (const char *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) throw () __asm__ ("" "__isoc99_vsscanf")
23866:
23866:
23866:
23866: __attribute__ ((__format__ (__scanf__, 2, 0)));
23866: # 485 "/usr/include/stdio.h" 3 4
23866: extern int fgetc (FILE *__stream);
23866: extern int getc (FILE *__stream);
23866:
23866:
23866:
23866:
23866:
23866: extern int getchar (void);
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int getc_unlocked (FILE *__stream);
23866: extern int getchar_unlocked (void);
23866: # 510 "/usr/include/stdio.h" 3 4
23866: extern int fgetc_unlocked (FILE *__stream);
23866: # 521 "/usr/include/stdio.h" 3 4
23866: extern int fputc (int __c, FILE *__stream);
23866: extern int putc (int __c, FILE *__stream);
23866:
23866:
23866:
23866:
23866:
23866: extern int putchar (int __c);
23866: # 537 "/usr/include/stdio.h" 3 4
23866: extern int fputc_unlocked (int __c, FILE *__stream);
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int putc_unlocked (int __c, FILE *__stream);
23866: extern int putchar_unlocked (int __c);
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int getw (FILE *__stream);
23866:
23866:
23866: extern int putw (int __w, FILE *__stream);
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
23866: __attribute__ ((__warn_unused_result__));
23866: # 587 "/usr/include/stdio.h" 3 4
23866: extern char *fgets_unlocked (char *__restrict __s, int __n,
23866: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
23866: # 603 "/usr/include/stdio.h" 3 4
23866: extern __ssize_t __getdelim (char **__restrict __lineptr,
23866: size_t *__restrict __n, int __delimiter,
23866: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
23866: extern __ssize_t getdelim (char **__restrict __lineptr,
23866: size_t *__restrict __n, int __delimiter,
23866: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern __ssize_t getline (char **__restrict __lineptr,
23866: size_t *__restrict __n,
23866: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int fputs (const char *__restrict __s, FILE *__restrict __stream);
23866:
23866:
23866:
23866:
23866:
23866: extern int puts (const char *__s);
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int ungetc (int __c, FILE *__stream);
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern size_t fread (void *__restrict __ptr, size_t __size,
23866: size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: extern size_t fwrite (const void *__restrict __ptr, size_t __size,
23866: size_t __n, FILE *__restrict __s);
23866: # 662 "/usr/include/stdio.h" 3 4
23866: extern int fputs_unlocked (const char *__restrict __s,
23866: FILE *__restrict __stream);
23866: # 673 "/usr/include/stdio.h" 3 4
23866: extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
23866: size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
23866: extern size_t fwrite_unlocked (const void *__restrict __ptr, size_t __size,
23866: size_t __n, FILE *__restrict __stream);
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int fseek (FILE *__stream, long int __off, int __whence);
23866:
23866:
23866:
23866:
23866: extern long int ftell (FILE *__stream) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: extern void rewind (FILE *__stream);
23866: # 715 "/usr/include/stdio.h" 3 4
23866: extern int fseeko (FILE *__stream, __off64_t __off, int __whence) __asm__ ("" "fseeko64")
23866:
23866: ;
23866: extern __off64_t ftello (FILE *__stream) __asm__ ("" "ftello64");
23866: # 739 "/usr/include/stdio.h" 3 4
23866: extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos) __asm__ ("" "fgetpos64")
23866: ;
23866: extern int fsetpos (FILE *__stream, const fpos_t *__pos) __asm__ ("" "fsetpos64")
23866: ;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
23866: extern __off64_t ftello64 (FILE *__stream) __attribute__ ((__warn_unused_result__));
23866: extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
23866: extern int fsetpos64 (FILE *__stream, const fpos64_t *__pos);
23866:
23866:
23866:
23866: extern void clearerr (FILE *__stream) throw ();
23866:
23866: extern int feof (FILE *__stream) throw () __attribute__ ((__warn_unused_result__));
23866:
23866: extern int ferror (FILE *__stream) throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866: extern void clearerr_unlocked (FILE *__stream) throw ();
23866: extern int feof_unlocked (FILE *__stream) throw () __attribute__ ((__warn_unused_result__));
23866: extern int ferror_unlocked (FILE *__stream) throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern void perror (const char *__s);
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/sys_errlist.h" 1 3 4
23866: # 26 "/usr/include/arm-linux-gnueabihf/bits/sys_errlist.h" 3 4
23866: extern int sys_nerr;
23866: extern const char *const sys_errlist[];
23866:
23866:
23866: extern int _sys_nerr;
23866: extern const char *const _sys_errlist[];
23866: # 782 "/usr/include/stdio.h" 2 3 4
23866:
23866:
23866:
23866:
23866: extern int fileno (FILE *__stream) throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: extern int fileno_unlocked (FILE *__stream) throw () __attribute__ ((__warn_unused_result__));
23866: # 800 "/usr/include/stdio.h" 3 4
23866: extern FILE *popen (const char *__command, const char *__modes) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866: extern int pclose (FILE *__stream);
23866:
23866:
23866:
23866:
23866:
23866: extern char *ctermid (char *__s) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern char *cuserid (char *__s);
23866:
23866:
23866:
23866:
23866: struct obstack;
23866:
23866:
23866: extern int obstack_printf (struct obstack *__restrict __obstack,
23866: const char *__restrict __format, ...)
23866: throw () __attribute__ ((__format__ (__printf__, 2, 3)));
23866: extern int obstack_vprintf (struct obstack *__restrict __obstack,
23866: const char *__restrict __format,
23866: __gnuc_va_list __args)
23866: throw () __attribute__ ((__format__ (__printf__, 2, 0)));
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern void flockfile (FILE *__stream) throw ();
23866:
23866:
23866:
23866: extern int ftrylockfile (FILE *__stream) throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866: extern void funlockfile (FILE *__stream) throw ();
23866: # 858 "/usr/include/stdio.h" 3 4
23866: extern int __uflow (FILE *);
23866: extern int __overflow (FILE *, int);
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdio.h" 1 3 4
23866: # 20 "/usr/include/arm-linux-gnueabihf/bits/stdio.h" 3 4
23866: #define _BITS_STDIO_H 1
23866: # 29 "/usr/include/arm-linux-gnueabihf/bits/stdio.h" 3 4
23866: #define __STDIO_INLINE __extern_inline
23866: # 46 "/usr/include/arm-linux-gnueabihf/bits/stdio.h" 3 4
23866: extern __inline __attribute__ ((__gnu_inline__)) int
23866: getchar (void)
23866: {
23866: return getc (stdin);
23866: }
23866:
23866:
23866:
23866:
23866: extern __inline __attribute__ ((__gnu_inline__)) int
23866: fgetc_unlocked (FILE *__fp)
23866: {
23866: return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
23866: }
23866:
23866:
23866:
23866:
23866:
23866: extern __inline __attribute__ ((__gnu_inline__)) int
23866: getc_unlocked (FILE *__fp)
23866: {
23866: return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
23866: }
23866:
23866:
23866: extern __inline __attribute__ ((__gnu_inline__)) int
23866: getchar_unlocked (void)
23866: {
23866: return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
23866: }
23866:
23866:
23866:
23866:
23866: extern __inline __attribute__ ((__gnu_inline__)) int
23866: putchar (int __c)
23866: {
23866: return putc (__c, stdout);
23866: }
23866:
23866:
23866:
23866:
23866: extern __inline __attribute__ ((__gnu_inline__)) int
23866: fputc_unlocked (int __c, FILE *__stream)
23866: {
23866: return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
23866: }
23866:
23866:
23866:
23866:
23866:
23866: extern __inline __attribute__ ((__gnu_inline__)) int
23866: putc_unlocked (int __c, FILE *__stream)
23866: {
23866: return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
23866: }
23866:
23866:
23866: extern __inline __attribute__ ((__gnu_inline__)) int
23866: putchar_unlocked (int __c)
23866: {
23866: return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
23866: }
23866:
23866:
23866:
23866:
23866:
23866: extern __inline __attribute__ ((__gnu_inline__)) __ssize_t
23866: getline (char **__lineptr, size_t *__n, FILE *__stream)
23866: {
23866: return __getdelim (__lineptr, __n, '\n', __stream);
23866: }
23866:
23866:
23866:
23866:
23866:
23866: extern __inline __attribute__ ((__gnu_inline__)) int
23866: __attribute__ ((__leaf__)) feof_unlocked (FILE *__stream) throw ()
23866: {
23866: return (((__stream)->_flags & 0x0010) != 0);
23866: }
23866:
23866:
23866: extern __inline __attribute__ ((__gnu_inline__)) int
23866: __attribute__ ((__leaf__)) ferror_unlocked (FILE *__stream) throw ()
23866: {
23866: return (((__stream)->_flags & 0x0020) != 0);
23866: }
23866: # 193 "/usr/include/arm-linux-gnueabihf/bits/stdio.h" 3 4
23866: #undef __STDIO_INLINE
23866: # 865 "/usr/include/stdio.h" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 1 3 4
23866: # 20 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4
23866: #define _BITS_STDIO2_H 1
23866:
23866:
23866:
23866:
23866:
23866: extern int __sprintf_chk (char *__restrict __s, int __flag, size_t __slen,
23866: const char *__restrict __format, ...) throw ();
23866: extern int __vsprintf_chk (char *__restrict __s, int __flag, size_t __slen,
23866: const char *__restrict __format,
23866: __gnuc_va_list __ap) throw ();
23866:
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int
23866: __attribute__ ((__leaf__)) sprintf (char *__restrict __s, const char *__restrict __fmt, ...) throw ()
23866: {
23866: return __builtin___sprintf_chk (__s, 2 - 1,
23866: __builtin_object_size (__s, 2 > 1), __fmt, __builtin_va_arg_pack ());
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int
23866: __attribute__ ((__leaf__)) vsprintf (char *__restrict __s, const char *__restrict __fmt, __gnuc_va_list __ap) throw ()
23866:
23866: {
23866: return __builtin___vsprintf_chk (__s, 2 - 1,
23866: __builtin_object_size (__s, 2 > 1), __fmt, __ap);
23866: }
23866:
23866:
23866:
23866: extern int __snprintf_chk (char *__restrict __s, size_t __n, int __flag,
23866: size_t __slen, const char *__restrict __format,
23866: ...) throw ();
23866: extern int __vsnprintf_chk (char *__restrict __s, size_t __n, int __flag,
23866: size_t __slen, const char *__restrict __format,
23866: __gnuc_va_list __ap) throw ();
23866:
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int
23866: __attribute__ ((__leaf__)) snprintf (char *__restrict __s, size_t __n, const char *__restrict __fmt, ...) throw ()
23866:
23866: {
23866: return __builtin___snprintf_chk (__s, __n, 2 - 1,
23866: __builtin_object_size (__s, 2 > 1), __fmt, __builtin_va_arg_pack ());
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int
23866: __attribute__ ((__leaf__)) vsnprintf (char *__restrict __s, size_t __n, const char *__restrict __fmt, __gnuc_va_list __ap) throw ()
23866:
23866: {
23866: return __builtin___vsnprintf_chk (__s, __n, 2 - 1,
23866: __builtin_object_size (__s, 2 > 1), __fmt, __ap);
23866: }
23866:
23866:
23866:
23866:
23866:
23866: extern int __fprintf_chk (FILE *__restrict __stream, int __flag,
23866: const char *__restrict __format, ...);
23866: extern int __printf_chk (int __flag, const char *__restrict __format, ...);
23866: extern int __vfprintf_chk (FILE *__restrict __stream, int __flag,
23866: const char *__restrict __format, __gnuc_va_list __ap);
23866: extern int __vprintf_chk (int __flag, const char *__restrict __format,
23866: __gnuc_va_list __ap);
23866:
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int
23866: fprintf (FILE *__restrict __stream, const char *__restrict __fmt, ...)
23866: {
23866: return __fprintf_chk (__stream, 2 - 1, __fmt,
23866: __builtin_va_arg_pack ());
23866: }
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int
23866: printf (const char *__restrict __fmt, ...)
23866: {
23866: return __printf_chk (2 - 1, __fmt, __builtin_va_arg_pack ());
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int
23866: vprintf (const char *__restrict __fmt, __gnuc_va_list __ap)
23866: {
23866:
23866: return __vfprintf_chk (stdout, 2 - 1, __fmt, __ap);
23866:
23866:
23866:
23866: }
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int
23866: vfprintf (FILE *__restrict __stream,
23866: const char *__restrict __fmt, __gnuc_va_list __ap)
23866: {
23866: return __vfprintf_chk (__stream, 2 - 1, __fmt, __ap);
23866: }
23866:
23866:
23866: extern int __dprintf_chk (int __fd, int __flag, const char *__restrict __fmt,
23866: ...) __attribute__ ((__format__ (__printf__, 3, 4)));
23866: extern int __vdprintf_chk (int __fd, int __flag,
23866: const char *__restrict __fmt, __gnuc_va_list __arg)
23866: __attribute__ ((__format__ (__printf__, 3, 0)));
23866:
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int
23866: dprintf (int __fd, const char *__restrict __fmt, ...)
23866: {
23866: return __dprintf_chk (__fd, 2 - 1, __fmt,
23866: __builtin_va_arg_pack ());
23866: }
23866:
23866:
23866:
23866:
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int
23866: vdprintf (int __fd, const char *__restrict __fmt, __gnuc_va_list __ap)
23866: {
23866: return __vdprintf_chk (__fd, 2 - 1, __fmt, __ap);
23866: }
23866:
23866:
23866:
23866:
23866: extern int __asprintf_chk (char **__restrict __ptr, int __flag,
23866: const char *__restrict __fmt, ...)
23866: throw () __attribute__ ((__format__ (__printf__, 3, 4))) __attribute__ ((__warn_unused_result__));
23866: extern int __vasprintf_chk (char **__restrict __ptr, int __flag,
23866: const char *__restrict __fmt, __gnuc_va_list __arg)
23866: throw () __attribute__ ((__format__ (__printf__, 3, 0))) __attribute__ ((__warn_unused_result__));
23866: extern int __obstack_printf_chk (struct obstack *__restrict __obstack,
23866: int __flag, const char *__restrict __format,
23866: ...)
23866: throw () __attribute__ ((__format__ (__printf__, 3, 4)));
23866: extern int __obstack_vprintf_chk (struct obstack *__restrict __obstack,
23866: int __flag,
23866: const char *__restrict __format,
23866: __gnuc_va_list __args)
23866: throw () __attribute__ ((__format__ (__printf__, 3, 0)));
23866:
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int
23866: __attribute__ ((__leaf__)) asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) throw ()
23866: {
23866: return __asprintf_chk (__ptr, 2 - 1, __fmt,
23866: __builtin_va_arg_pack ());
23866: }
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int
23866: __attribute__ ((__leaf__)) __asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) throw ()
23866:
23866: {
23866: return __asprintf_chk (__ptr, 2 - 1, __fmt,
23866: __builtin_va_arg_pack ());
23866: }
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int
23866: __attribute__ ((__leaf__)) obstack_printf (struct obstack *__restrict __obstack, const char *__restrict __fmt, ...) throw ()
23866:
23866: {
23866: return __obstack_printf_chk (__obstack, 2 - 1, __fmt,
23866: __builtin_va_arg_pack ());
23866: }
23866: # 209 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int
23866: __attribute__ ((__leaf__)) vasprintf (char **__restrict __ptr, const char *__restrict __fmt, __gnuc_va_list __ap) throw ()
23866:
23866: {
23866: return __vasprintf_chk (__ptr, 2 - 1, __fmt, __ap);
23866: }
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int
23866: __attribute__ ((__leaf__)) obstack_vprintf (struct obstack *__restrict __obstack, const char *__restrict __fmt, __gnuc_va_list __ap) throw ()
23866:
23866: {
23866: return __obstack_vprintf_chk (__obstack, 2 - 1, __fmt,
23866: __ap);
23866: }
23866: # 243 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4
23866: extern char *__fgets_chk (char *__restrict __s, size_t __size, int __n,
23866: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
23866: extern char *__fgets_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets")
23866:
23866: __attribute__ ((__warn_unused_result__));
23866: extern char *__fgets_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_chk")
23866:
23866:
23866: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets called with bigger size than length " "of destination buffer")))
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char *
23866: fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
23866: {
23866: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__n) || __n <= 0)
23866: return __fgets_chk (__s, __builtin_object_size (__s, 2 > 1), __n, __stream);
23866:
23866: if ((size_t) __n > __builtin_object_size (__s, 2 > 1))
23866: return __fgets_chk_warn (__s, __builtin_object_size (__s, 2 > 1), __n, __stream);
23866: }
23866: return __fgets_alias (__s, __n, __stream);
23866: }
23866:
23866: extern size_t __fread_chk (void *__restrict __ptr, size_t __ptrlen,
23866: size_t __size, size_t __n,
23866: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
23866: extern size_t __fread_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread")
23866:
23866:
23866: __attribute__ ((__warn_unused_result__));
23866: extern size_t __fread_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_chk")
23866:
23866:
23866:
23866:
23866: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread called with bigger size * nmemb than length " "of destination buffer")))
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t
23866: fread (void *__restrict __ptr, size_t __size, size_t __n,
23866: FILE *__restrict __stream)
23866: {
23866: if (__builtin_object_size (__ptr, 0) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__size)
23866: || !__builtin_constant_p (__n)
23866: || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2)))
23866: return __fread_chk (__ptr, __builtin_object_size (__ptr, 0), __size, __n, __stream);
23866:
23866: if (__size * __n > __builtin_object_size (__ptr, 0))
23866: return __fread_chk_warn (__ptr, __builtin_object_size (__ptr, 0), __size, __n, __stream);
23866: }
23866: return __fread_alias (__ptr, __size, __n, __stream);
23866: }
23866:
23866:
23866: extern char *__fgets_unlocked_chk (char *__restrict __s, size_t __size,
23866: int __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
23866: extern char *__fgets_unlocked_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets_unlocked")
23866:
23866: __attribute__ ((__warn_unused_result__));
23866: extern char *__fgets_unlocked_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_unlocked_chk")
23866:
23866:
23866: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets_unlocked called with bigger size than length " "of destination buffer")))
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char *
23866: fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream)
23866: {
23866: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__n) || __n <= 0)
23866: return __fgets_unlocked_chk (__s, __builtin_object_size (__s, 2 > 1), __n, __stream);
23866:
23866: if ((size_t) __n > __builtin_object_size (__s, 2 > 1))
23866: return __fgets_unlocked_chk_warn (__s, __builtin_object_size (__s, 2 > 1), __n, __stream);
23866: }
23866: return __fgets_unlocked_alias (__s, __n, __stream);
23866: }
23866:
23866:
23866:
23866: #undef fread_unlocked
23866: extern size_t __fread_unlocked_chk (void *__restrict __ptr, size_t __ptrlen,
23866: size_t __size, size_t __n,
23866: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
23866: extern size_t __fread_unlocked_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread_unlocked")
23866:
23866:
23866: __attribute__ ((__warn_unused_result__));
23866: extern size_t __fread_unlocked_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_unlocked_chk")
23866:
23866:
23866:
23866:
23866: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread_unlocked called with bigger size * nmemb than " "length of destination buffer")))
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t
23866: fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n,
23866: FILE *__restrict __stream)
23866: {
23866: if (__builtin_object_size (__ptr, 0) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__size)
23866: || !__builtin_constant_p (__n)
23866: || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2)))
23866: return __fread_unlocked_chk (__ptr, __builtin_object_size (__ptr, 0), __size, __n,
23866: __stream);
23866:
23866: if (__size * __n > __builtin_object_size (__ptr, 0))
23866: return __fread_unlocked_chk_warn (__ptr, __builtin_object_size (__ptr, 0), __size, __n,
23866: __stream);
23866: }
23866:
23866:
23866: if (__builtin_constant_p (__size)
23866: && __builtin_constant_p (__n)
23866: && (__size | __n) < (((size_t) 1) << (8 * sizeof (size_t) / 2))
23866: && __size * __n <= 8)
23866: {
23866: size_t __cnt = __size * __n;
23866: char *__cptr = (char *) __ptr;
23866: if (__cnt == 0)
23866: return 0;
23866:
23866: for (; __cnt > 0; --__cnt)
23866: {
23866: int __c = getc_unlocked (__stream);
23866: if (__c == (-1))
23866: break;
23866: *__cptr++ = __c;
23866: }
23866: return (__cptr - (char *) __ptr) / __size;
23866: }
23866:
23866: return __fread_unlocked_alias (__ptr, __size, __n, __stream);
23866: }
23866: # 868 "/usr/include/stdio.h" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 43 "/usr/include/c++/10/cstdio" 2 3
23866:
23866:
23866: #define _GLIBCXX_CSTDIO 1
23866:
23866:
23866:
23866:
23866:
23866:
23866: #undef clearerr
23866: #undef fclose
23866: #undef feof
23866: #undef ferror
23866: #undef fflush
23866: #undef fgetc
23866: #undef fgetpos
23866: #undef fgets
23866: #undef fopen
23866: #undef fprintf
23866: #undef fputc
23866: #undef fputs
23866: #undef fread
23866: #undef freopen
23866: #undef fscanf
23866: #undef fseek
23866: #undef fsetpos
23866: #undef ftell
23866: #undef fwrite
23866: #undef getc
23866: #undef getchar
23866:
23866:
23866:
23866: #undef perror
23866: #undef printf
23866: #undef putc
23866: #undef putchar
23866: #undef puts
23866: #undef remove
23866: #undef rename
23866: #undef rewind
23866: #undef scanf
23866: #undef setbuf
23866: #undef setvbuf
23866: #undef sprintf
23866: #undef sscanf
23866: #undef tmpfile
23866: #undef tmpnam
23866: #undef ungetc
23866: #undef vfprintf
23866: #undef vprintf
23866: #undef vsprintf
23866:
23866: namespace std
23866: {
23866: using ::FILE;
23866: using ::fpos_t;
23866:
23866: using ::clearerr;
23866: using ::fclose;
23866: using ::feof;
23866: using ::ferror;
23866: using ::fflush;
23866: using ::fgetc;
23866: using ::fgetpos;
23866: using ::fgets;
23866: using ::fopen;
23866: using ::fprintf;
23866: using ::fputc;
23866: using ::fputs;
23866: using ::fread;
23866: using ::freopen;
23866: using ::fscanf;
23866: using ::fseek;
23866: using ::fsetpos;
23866: using ::ftell;
23866: using ::fwrite;
23866: using ::getc;
23866: using ::getchar;
23866:
23866:
23866:
23866:
23866: using ::perror;
23866: using ::printf;
23866: using ::putc;
23866: using ::putchar;
23866: using ::puts;
23866: using ::remove;
23866: using ::rename;
23866: using ::rewind;
23866: using ::scanf;
23866: using ::setbuf;
23866: using ::setvbuf;
23866: using ::sprintf;
23866: using ::sscanf;
23866: using ::tmpfile;
23866:
23866: using ::tmpnam;
23866:
23866: using ::ungetc;
23866: using ::vfprintf;
23866: using ::vprintf;
23866: using ::vsprintf;
23866: }
23866:
23866:
23866:
23866: #undef snprintf
23866: #undef vfscanf
23866: #undef vscanf
23866: #undef vsnprintf
23866: #undef vsscanf
23866:
23866: namespace __gnu_cxx
23866: {
23866: # 175 "/usr/include/c++/10/cstdio" 3
23866: using ::snprintf;
23866: using ::vfscanf;
23866: using ::vscanf;
23866: using ::vsnprintf;
23866: using ::vsscanf;
23866:
23866: }
23866:
23866: namespace std
23866: {
23866: using ::__gnu_cxx::snprintf;
23866: using ::__gnu_cxx::vfscanf;
23866: using ::__gnu_cxx::vscanf;
23866: using ::__gnu_cxx::vsnprintf;
23866: using ::__gnu_cxx::vsscanf;
23866: }
23866: # 44 "/usr/include/c++/10/ext/string_conversions.h" 2 3
23866: # 1 "/usr/include/c++/10/cerrno" 1 3
23866: # 39 "/usr/include/c++/10/cerrno" 3
23866:
23866: # 40 "/usr/include/c++/10/cerrno" 3
23866: # 45 "/usr/include/c++/10/ext/string_conversions.h" 2 3
23866:
23866: namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: template<typename _TRet, typename _Ret = _TRet, typename _CharT,
23866: typename... _Base>
23866: _Ret
23866: __stoa(_TRet (*__convf) (const _CharT*, _CharT**, _Base...),
23866: const char* __name, const _CharT* __str, std::size_t* __idx,
23866: _Base... __base)
23866: {
23866: _Ret __ret;
23866:
23866: _CharT* __endptr;
23866:
23866: struct _Save_errno {
23866: _Save_errno() : _M_errno((*__errno_location ())) { (*__errno_location ()) = 0; }
23866: ~_Save_errno() { if ((*__errno_location ()) == 0) (*__errno_location ()) = _M_errno; }
23866: int _M_errno;
23866: } const __save_errno;
23866:
23866: struct _Range_chk {
23866: static bool
23866: _S_chk(_TRet, std::false_type) { return false; }
23866:
23866: static bool
23866: _S_chk(_TRet __val, std::true_type)
23866: {
23866: return __val < _TRet(__numeric_traits<int>::__min)
23866: || __val > _TRet(__numeric_traits<int>::__max);
23866: }
23866: };
23866:
23866: const _TRet __tmp = __convf(__str, &__endptr, __base...);
23866:
23866: if (__endptr == __str)
23866: std::__throw_invalid_argument(__name);
23866: else if ((*__errno_location ()) == 34
23866: || _Range_chk::_S_chk(__tmp, std::is_same<_Ret, int>{}))
23866: std::__throw_out_of_range(__name);
23866: else
23866: __ret = __tmp;
23866:
23866: if (__idx)
23866: *__idx = __endptr - __str;
23866:
23866: return __ret;
23866: }
23866:
23866:
23866: template<typename _String, typename _CharT = typename _String::value_type>
23866: _String
23866: __to_xstring(int (*__convf) (_CharT*, std::size_t, const _CharT*,
23866: __builtin_va_list), std::size_t __n,
23866: const _CharT* __fmt, ...)
23866: {
23866:
23866:
23866: _CharT* __s = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
23866: * __n));
23866:
23866: __builtin_va_list __args;
23866: __builtin_va_start(__args, __fmt);
23866:
23866: const int __len = __convf(__s, __n, __fmt, __args);
23866:
23866: __builtin_va_end(__args);
23866:
23866: return _String(__s, __s + __len);
23866: }
23866:
23866:
23866: }
23866: # 6546 "/usr/include/c++/10/bits/basic_string.h" 2 3
23866: # 1 "/usr/include/c++/10/bits/charconv.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/charconv.h" 3
23866: #define _GLIBCXX_CHARCONV_H 1
23866:
23866:
23866: # 34 "/usr/include/c++/10/bits/charconv.h" 3
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: namespace __detail
23866: {
23866:
23866: template<typename _Tp>
23866: constexpr unsigned
23866: __to_chars_len(_Tp __value, int __base = 10) noexcept
23866: {
23866: static_assert(is_integral<_Tp>::value, "implementation bug");
23866: static_assert(is_unsigned<_Tp>::value, "implementation bug");
23866:
23866: unsigned __n = 1;
23866: const unsigned __b2 = __base * __base;
23866: const unsigned __b3 = __b2 * __base;
23866: const unsigned long __b4 = __b3 * __base;
23866: for (;;)
23866: {
23866: if (__value < (unsigned)__base) return __n;
23866: if (__value < __b2) return __n + 1;
23866: if (__value < __b3) return __n + 2;
23866: if (__value < __b4) return __n + 3;
23866: __value /= __b4;
23866: __n += 4;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: void
23866: __to_chars_10_impl(char* __first, unsigned __len, _Tp __val) noexcept
23866: {
23866: static_assert(is_integral<_Tp>::value, "implementation bug");
23866: static_assert(is_unsigned<_Tp>::value, "implementation bug");
23866:
23866: static constexpr char __digits[201] =
23866: "0001020304050607080910111213141516171819"
23866: "2021222324252627282930313233343536373839"
23866: "4041424344454647484950515253545556575859"
23866: "6061626364656667686970717273747576777879"
23866: "8081828384858687888990919293949596979899";
23866: unsigned __pos = __len - 1;
23866: while (__val >= 100)
23866: {
23866: auto const __num = (__val % 100) * 2;
23866: __val /= 100;
23866: __first[__pos] = __digits[__num + 1];
23866: __first[__pos - 1] = __digits[__num];
23866: __pos -= 2;
23866: }
23866: if (__val >= 10)
23866: {
23866: auto const __num = __val * 2;
23866: __first[1] = __digits[__num + 1];
23866: __first[0] = __digits[__num];
23866: }
23866: else
23866: __first[0] = '0' + __val;
23866: }
23866:
23866: }
23866:
23866: }
23866: # 6547 "/usr/include/c++/10/bits/basic_string.h" 2 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: namespace __cxx11 {
23866:
23866:
23866:
23866: inline int
23866: stoi(const string& __str, size_t* __idx = 0, int __base = 10)
23866: { return __gnu_cxx::__stoa<long, int>(&std::strtol, "stoi", __str.c_str(),
23866: __idx, __base); }
23866:
23866: inline long
23866: stol(const string& __str, size_t* __idx = 0, int __base = 10)
23866: { return __gnu_cxx::__stoa(&std::strtol, "stol", __str.c_str(),
23866: __idx, __base); }
23866:
23866: inline unsigned long
23866: stoul(const string& __str, size_t* __idx = 0, int __base = 10)
23866: { return __gnu_cxx::__stoa(&std::strtoul, "stoul", __str.c_str(),
23866: __idx, __base); }
23866:
23866: inline long long
23866: stoll(const string& __str, size_t* __idx = 0, int __base = 10)
23866: { return __gnu_cxx::__stoa(&std::strtoll, "stoll", __str.c_str(),
23866: __idx, __base); }
23866:
23866: inline unsigned long long
23866: stoull(const string& __str, size_t* __idx = 0, int __base = 10)
23866: { return __gnu_cxx::__stoa(&std::strtoull, "stoull", __str.c_str(),
23866: __idx, __base); }
23866:
23866:
23866: inline float
23866: stof(const string& __str, size_t* __idx = 0)
23866: { return __gnu_cxx::__stoa(&std::strtof, "stof", __str.c_str(), __idx); }
23866:
23866: inline double
23866: stod(const string& __str, size_t* __idx = 0)
23866: { return __gnu_cxx::__stoa(&std::strtod, "stod", __str.c_str(), __idx); }
23866:
23866: inline long double
23866: stold(const string& __str, size_t* __idx = 0)
23866: { return __gnu_cxx::__stoa(&std::strtold, "stold", __str.c_str(), __idx); }
23866:
23866:
23866:
23866:
23866: inline string
23866: to_string(int __val)
23866: {
23866: const bool __neg = __val < 0;
23866: const unsigned __uval = __neg ? (unsigned)~__val + 1u : __val;
23866: const auto __len = __detail::__to_chars_len(__uval);
23866: string __str(__neg + __len, '-');
23866: __detail::__to_chars_10_impl(&__str[__neg], __len, __uval);
23866: return __str;
23866: }
23866:
23866: inline string
23866: to_string(unsigned __val)
23866: {
23866: string __str(__detail::__to_chars_len(__val), '\0');
23866: __detail::__to_chars_10_impl(&__str[0], __str.size(), __val);
23866: return __str;
23866: }
23866:
23866: inline string
23866: to_string(long __val)
23866: {
23866: const bool __neg = __val < 0;
23866: const unsigned long __uval = __neg ? (unsigned long)~__val + 1ul : __val;
23866: const auto __len = __detail::__to_chars_len(__uval);
23866: string __str(__neg + __len, '-');
23866: __detail::__to_chars_10_impl(&__str[__neg], __len, __uval);
23866: return __str;
23866: }
23866:
23866: inline string
23866: to_string(unsigned long __val)
23866: {
23866: string __str(__detail::__to_chars_len(__val), '\0');
23866: __detail::__to_chars_10_impl(&__str[0], __str.size(), __val);
23866: return __str;
23866: }
23866:
23866: inline string
23866: to_string(long long __val)
23866: {
23866: const bool __neg = __val < 0;
23866: const unsigned long long __uval
23866: = __neg ? (unsigned long long)~__val + 1ull : __val;
23866: const auto __len = __detail::__to_chars_len(__uval);
23866: string __str(__neg + __len, '-');
23866: __detail::__to_chars_10_impl(&__str[__neg], __len, __uval);
23866: return __str;
23866: }
23866:
23866: inline string
23866: to_string(unsigned long long __val)
23866: {
23866: string __str(__detail::__to_chars_len(__val), '\0');
23866: __detail::__to_chars_10_impl(&__str[0], __str.size(), __val);
23866: return __str;
23866: }
23866:
23866:
23866:
23866:
23866: inline string
23866: to_string(float __val)
23866: {
23866: const int __n =
23866: __gnu_cxx::__numeric_traits<float>::__max_exponent10 + 20;
23866: return __gnu_cxx::__to_xstring<string>(&std::vsnprintf, __n,
23866: "%f", __val);
23866: }
23866:
23866: inline string
23866: to_string(double __val)
23866: {
23866: const int __n =
23866: __gnu_cxx::__numeric_traits<double>::__max_exponent10 + 20;
23866: return __gnu_cxx::__to_xstring<string>(&std::vsnprintf, __n,
23866: "%f", __val);
23866: }
23866:
23866: inline string
23866: to_string(long double __val)
23866: {
23866: const int __n =
23866: __gnu_cxx::__numeric_traits<long double>::__max_exponent10 + 20;
23866: return __gnu_cxx::__to_xstring<string>(&std::vsnprintf, __n,
23866: "%Lf", __val);
23866: }
23866:
23866:
23866:
23866: inline int
23866: stoi(const wstring& __str, size_t* __idx = 0, int __base = 10)
23866: { return __gnu_cxx::__stoa<long, int>(&std::wcstol, "stoi", __str.c_str(),
23866: __idx, __base); }
23866:
23866: inline long
23866: stol(const wstring& __str, size_t* __idx = 0, int __base = 10)
23866: { return __gnu_cxx::__stoa(&std::wcstol, "stol", __str.c_str(),
23866: __idx, __base); }
23866:
23866: inline unsigned long
23866: stoul(const wstring& __str, size_t* __idx = 0, int __base = 10)
23866: { return __gnu_cxx::__stoa(&std::wcstoul, "stoul", __str.c_str(),
23866: __idx, __base); }
23866:
23866: inline long long
23866: stoll(const wstring& __str, size_t* __idx = 0, int __base = 10)
23866: { return __gnu_cxx::__stoa(&std::wcstoll, "stoll", __str.c_str(),
23866: __idx, __base); }
23866:
23866: inline unsigned long long
23866: stoull(const wstring& __str, size_t* __idx = 0, int __base = 10)
23866: { return __gnu_cxx::__stoa(&std::wcstoull, "stoull", __str.c_str(),
23866: __idx, __base); }
23866:
23866:
23866: inline float
23866: stof(const wstring& __str, size_t* __idx = 0)
23866: { return __gnu_cxx::__stoa(&std::wcstof, "stof", __str.c_str(), __idx); }
23866:
23866: inline double
23866: stod(const wstring& __str, size_t* __idx = 0)
23866: { return __gnu_cxx::__stoa(&std::wcstod, "stod", __str.c_str(), __idx); }
23866:
23866: inline long double
23866: stold(const wstring& __str, size_t* __idx = 0)
23866: { return __gnu_cxx::__stoa(&std::wcstold, "stold", __str.c_str(), __idx); }
23866:
23866:
23866:
23866: inline wstring
23866: to_wstring(int __val)
23866: { return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf, 4 * sizeof(int),
23866: L"%d", __val); }
23866:
23866: inline wstring
23866: to_wstring(unsigned __val)
23866: { return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf,
23866: 4 * sizeof(unsigned),
23866: L"%u", __val); }
23866:
23866: inline wstring
23866: to_wstring(long __val)
23866: { return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf, 4 * sizeof(long),
23866: L"%ld", __val); }
23866:
23866: inline wstring
23866: to_wstring(unsigned long __val)
23866: { return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf,
23866: 4 * sizeof(unsigned long),
23866: L"%lu", __val); }
23866:
23866: inline wstring
23866: to_wstring(long long __val)
23866: { return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf,
23866: 4 * sizeof(long long),
23866: L"%lld", __val); }
23866:
23866: inline wstring
23866: to_wstring(unsigned long long __val)
23866: { return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf,
23866: 4 * sizeof(unsigned long long),
23866: L"%llu", __val); }
23866:
23866: inline wstring
23866: to_wstring(float __val)
23866: {
23866: const int __n =
23866: __gnu_cxx::__numeric_traits<float>::__max_exponent10 + 20;
23866: return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf, __n,
23866: L"%f", __val);
23866: }
23866:
23866: inline wstring
23866: to_wstring(double __val)
23866: {
23866: const int __n =
23866: __gnu_cxx::__numeric_traits<double>::__max_exponent10 + 20;
23866: return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf, __n,
23866: L"%f", __val);
23866: }
23866:
23866: inline wstring
23866: to_wstring(long double __val)
23866: {
23866: const int __n =
23866: __gnu_cxx::__numeric_traits<long double>::__max_exponent10 + 20;
23866: return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf, __n,
23866: L"%Lf", __val);
23866: }
23866:
23866:
23866:
23866: }
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<>
23866: struct hash<string>
23866: : public __hash_base<size_t, string>
23866: {
23866: size_t
23866: operator()(const string& __s) const noexcept
23866: { return std::_Hash_impl::hash(__s.data(), __s.length()); }
23866: };
23866:
23866: template<>
23866: struct __is_fast_hash<hash<string>> : std::false_type
23866: { };
23866:
23866:
23866:
23866: template<>
23866: struct hash<wstring>
23866: : public __hash_base<size_t, wstring>
23866: {
23866: size_t
23866: operator()(const wstring& __s) const noexcept
23866: { return std::_Hash_impl::hash(__s.data(),
23866: __s.length() * sizeof(wchar_t)); }
23866: };
23866:
23866: template<>
23866: struct __is_fast_hash<hash<wstring>> : std::false_type
23866: { };
23866: # 6856 "/usr/include/c++/10/bits/basic_string.h" 3
23866: template<>
23866: struct hash<u16string>
23866: : public __hash_base<size_t, u16string>
23866: {
23866: size_t
23866: operator()(const u16string& __s) const noexcept
23866: { return std::_Hash_impl::hash(__s.data(),
23866: __s.length() * sizeof(char16_t)); }
23866: };
23866:
23866: template<>
23866: struct __is_fast_hash<hash<u16string>> : std::false_type
23866: { };
23866:
23866:
23866: template<>
23866: struct hash<u32string>
23866: : public __hash_base<size_t, u32string>
23866: {
23866: size_t
23866: operator()(const u32string& __s) const noexcept
23866: { return std::_Hash_impl::hash(__s.data(),
23866: __s.length() * sizeof(char32_t)); }
23866: };
23866:
23866: template<>
23866: struct __is_fast_hash<hash<u32string>> : std::false_type
23866: { };
23866:
23866:
23866:
23866: #define __cpp_lib_string_udls 201304
23866:
23866: inline namespace literals
23866: {
23866: inline namespace string_literals
23866: {
23866: #pragma GCC diagnostic push
23866: #pragma GCC diagnostic ignored "-Wliteral-suffix"
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: inline basic_string<char>
23866: operator""s(const char* __str, size_t __len)
23866: { return basic_string<char>{__str, __len}; }
23866:
23866:
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: inline basic_string<wchar_t>
23866: operator""s(const wchar_t* __str, size_t __len)
23866: { return basic_string<wchar_t>{__str, __len}; }
23866: # 6914 "/usr/include/c++/10/bits/basic_string.h" 3
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: inline basic_string<char16_t>
23866: operator""s(const char16_t* __str, size_t __len)
23866: { return basic_string<char16_t>{__str, __len}; }
23866:
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: inline basic_string<char32_t>
23866: operator""s(const char32_t* __str, size_t __len)
23866: { return basic_string<char32_t>{__str, __len}; }
23866:
23866: #pragma GCC diagnostic pop
23866: }
23866: }
23866:
23866:
23866: namespace __detail::__variant
23866: {
23866: template<typename> struct _Never_valueless_alt;
23866:
23866:
23866:
23866: template<typename _Tp, typename _Traits, typename _Alloc>
23866: struct _Never_valueless_alt<std::basic_string<_Tp, _Traits, _Alloc>>
23866: : __and_<
23866: is_nothrow_move_constructible<std::basic_string<_Tp, _Traits, _Alloc>>,
23866: is_nothrow_move_assignable<std::basic_string<_Tp, _Traits, _Alloc>>
23866: >::type
23866: { };
23866: }
23866:
23866:
23866:
23866:
23866: }
23866: # 56 "/usr/include/c++/10/string" 2 3
23866: # 1 "/usr/include/c++/10/bits/basic_string.tcc" 1 3
23866: # 40 "/usr/include/c++/10/bits/basic_string.tcc" 3
23866: #define _BASIC_STRING_TCC 1
23866:
23866:
23866: # 43 "/usr/include/c++/10/bits/basic_string.tcc" 3
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: const typename basic_string<_CharT, _Traits, _Alloc>::size_type
23866: basic_string<_CharT, _Traits, _Alloc>::npos;
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: void
23866: basic_string<_CharT, _Traits, _Alloc>::
23866: swap(basic_string& __s) noexcept
23866: {
23866: if (this == &__s)
23866: return;
23866:
23866: _Alloc_traits::_S_on_swap(_M_get_allocator(), __s._M_get_allocator());
23866:
23866: if (_M_is_local())
23866: if (__s._M_is_local())
23866: {
23866: if (length() && __s.length())
23866: {
23866: _CharT __tmp_data[_S_local_capacity + 1];
23866: traits_type::copy(__tmp_data, __s._M_local_buf,
23866: _S_local_capacity + 1);
23866: traits_type::copy(__s._M_local_buf, _M_local_buf,
23866: _S_local_capacity + 1);
23866: traits_type::copy(_M_local_buf, __tmp_data,
23866: _S_local_capacity + 1);
23866: }
23866: else if (__s.length())
23866: {
23866: traits_type::copy(_M_local_buf, __s._M_local_buf,
23866: _S_local_capacity + 1);
23866: _M_length(__s.length());
23866: __s._M_set_length(0);
23866: return;
23866: }
23866: else if (length())
23866: {
23866: traits_type::copy(__s._M_local_buf, _M_local_buf,
23866: _S_local_capacity + 1);
23866: __s._M_length(length());
23866: _M_set_length(0);
23866: return;
23866: }
23866: }
23866: else
23866: {
23866: const size_type __tmp_capacity = __s._M_allocated_capacity;
23866: traits_type::copy(__s._M_local_buf, _M_local_buf,
23866: _S_local_capacity + 1);
23866: _M_data(__s._M_data());
23866: __s._M_data(__s._M_local_buf);
23866: _M_capacity(__tmp_capacity);
23866: }
23866: else
23866: {
23866: const size_type __tmp_capacity = _M_allocated_capacity;
23866: if (__s._M_is_local())
23866: {
23866: traits_type::copy(_M_local_buf, __s._M_local_buf,
23866: _S_local_capacity + 1);
23866: __s._M_data(_M_data());
23866: _M_data(_M_local_buf);
23866: }
23866: else
23866: {
23866: pointer __tmp_ptr = _M_data();
23866: _M_data(__s._M_data());
23866: __s._M_data(__tmp_ptr);
23866: _M_capacity(__s._M_allocated_capacity);
23866: }
23866: __s._M_capacity(__tmp_capacity);
23866: }
23866:
23866: const size_type __tmp_length = length();
23866: _M_length(__s.length());
23866: __s._M_length(__tmp_length);
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: typename basic_string<_CharT, _Traits, _Alloc>::pointer
23866: basic_string<_CharT, _Traits, _Alloc>::
23866: _M_create(size_type& __capacity, size_type __old_capacity)
23866: {
23866:
23866:
23866: if (__capacity > max_size())
23866: std::__throw_length_error(("basic_string::_M_create"));
23866:
23866:
23866:
23866:
23866: if (__capacity > __old_capacity && __capacity < 2 * __old_capacity)
23866: {
23866: __capacity = 2 * __old_capacity;
23866:
23866: if (__capacity > max_size())
23866: __capacity = max_size();
23866: }
23866:
23866:
23866:
23866: return _Alloc_traits::allocate(_M_get_allocator(), __capacity + 1);
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: template<typename _InIterator>
23866: void
23866: basic_string<_CharT, _Traits, _Alloc>::
23866: _M_construct(_InIterator __beg, _InIterator __end,
23866: std::input_iterator_tag)
23866: {
23866: size_type __len = 0;
23866: size_type __capacity = size_type(_S_local_capacity);
23866:
23866: while (__beg != __end && __len < __capacity)
23866: {
23866: _M_data()[__len++] = *__beg;
23866: ++__beg;
23866: }
23866:
23866: try
23866: {
23866: while (__beg != __end)
23866: {
23866: if (__len == __capacity)
23866: {
23866:
23866: __capacity = __len + 1;
23866: pointer __another = _M_create(__capacity, __len);
23866: this->_S_copy(__another, _M_data(), __len);
23866: _M_dispose();
23866: _M_data(__another);
23866: _M_capacity(__capacity);
23866: }
23866: _M_data()[__len++] = *__beg;
23866: ++__beg;
23866: }
23866: }
23866: catch(...)
23866: {
23866: _M_dispose();
23866: throw;
23866: }
23866:
23866: _M_set_length(__len);
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: template<typename _InIterator>
23866: void
23866: basic_string<_CharT, _Traits, _Alloc>::
23866: _M_construct(_InIterator __beg, _InIterator __end,
23866: std::forward_iterator_tag)
23866: {
23866:
23866: if (__gnu_cxx::__is_null_pointer(__beg) && __beg != __end)
23866: std::__throw_logic_error(("basic_string::" "_M_construct null not valid")
23866: );
23866:
23866: size_type __dnew = static_cast<size_type>(std::distance(__beg, __end));
23866:
23866: if (__dnew > size_type(_S_local_capacity))
23866: {
23866: _M_data(_M_create(__dnew, size_type(0)));
23866: _M_capacity(__dnew);
23866: }
23866:
23866:
23866: try
23866: { this->_S_copy_chars(_M_data(), __beg, __end); }
23866: catch(...)
23866: {
23866: _M_dispose();
23866: throw;
23866: }
23866:
23866: _M_set_length(__dnew);
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: void
23866: basic_string<_CharT, _Traits, _Alloc>::
23866: _M_construct(size_type __n, _CharT __c)
23866: {
23866: if (__n > size_type(_S_local_capacity))
23866: {
23866: _M_data(_M_create(__n, size_type(0)));
23866: _M_capacity(__n);
23866: }
23866:
23866: if (__n)
23866: this->_S_assign(_M_data(), __n, __c);
23866:
23866: _M_set_length(__n);
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: void
23866: basic_string<_CharT, _Traits, _Alloc>::
23866: _M_assign(const basic_string& __str)
23866: {
23866: if (this != &__str)
23866: {
23866: const size_type __rsize = __str.length();
23866: const size_type __capacity = capacity();
23866:
23866: if (__rsize > __capacity)
23866: {
23866: size_type __new_capacity = __rsize;
23866: pointer __tmp = _M_create(__new_capacity, __capacity);
23866: _M_dispose();
23866: _M_data(__tmp);
23866: _M_capacity(__new_capacity);
23866: }
23866:
23866: if (__rsize)
23866: this->_S_copy(_M_data(), __str._M_data(), __rsize);
23866:
23866: _M_set_length(__rsize);
23866: }
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: void
23866: basic_string<_CharT, _Traits, _Alloc>::
23866: reserve(size_type __res)
23866: {
23866:
23866: if (__res < length())
23866: __res = length();
23866:
23866: const size_type __capacity = capacity();
23866: if (__res != __capacity)
23866: {
23866: if (__res > __capacity
23866: || __res > size_type(_S_local_capacity))
23866: {
23866: pointer __tmp = _M_create(__res, __capacity);
23866: this->_S_copy(__tmp, _M_data(), length() + 1);
23866: _M_dispose();
23866: _M_data(__tmp);
23866: _M_capacity(__res);
23866: }
23866: else if (!_M_is_local())
23866: {
23866: this->_S_copy(_M_local_data(), _M_data(), length() + 1);
23866: _M_destroy(__capacity);
23866: _M_data(_M_local_data());
23866: }
23866: }
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: void
23866: basic_string<_CharT, _Traits, _Alloc>::
23866: _M_mutate(size_type __pos, size_type __len1, const _CharT* __s,
23866: size_type __len2)
23866: {
23866: const size_type __how_much = length() - __pos - __len1;
23866:
23866: size_type __new_capacity = length() + __len2 - __len1;
23866: pointer __r = _M_create(__new_capacity, capacity());
23866:
23866: if (__pos)
23866: this->_S_copy(__r, _M_data(), __pos);
23866: if (__s && __len2)
23866: this->_S_copy(__r + __pos, __s, __len2);
23866: if (__how_much)
23866: this->_S_copy(__r + __pos + __len2,
23866: _M_data() + __pos + __len1, __how_much);
23866:
23866: _M_dispose();
23866: _M_data(__r);
23866: _M_capacity(__new_capacity);
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: void
23866: basic_string<_CharT, _Traits, _Alloc>::
23866: _M_erase(size_type __pos, size_type __n)
23866: {
23866: const size_type __how_much = length() - __pos - __n;
23866:
23866: if (__how_much && __n)
23866: this->_S_move(_M_data() + __pos, _M_data() + __pos + __n, __how_much);
23866:
23866: _M_set_length(length() - __n);
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: void
23866: basic_string<_CharT, _Traits, _Alloc>::
23866: resize(size_type __n, _CharT __c)
23866: {
23866: const size_type __size = this->size();
23866: if (__size < __n)
23866: this->append(__n - __size, __c);
23866: else if (__n < __size)
23866: this->_M_set_length(__n);
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: basic_string<_CharT, _Traits, _Alloc>&
23866: basic_string<_CharT, _Traits, _Alloc>::
23866: _M_append(const _CharT* __s, size_type __n)
23866: {
23866: const size_type __len = __n + this->size();
23866:
23866: if (__len <= this->capacity())
23866: {
23866: if (__n)
23866: this->_S_copy(this->_M_data() + this->size(), __s, __n);
23866: }
23866: else
23866: this->_M_mutate(this->size(), size_type(0), __s, __n);
23866:
23866: this->_M_set_length(__len);
23866: return *this;
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: template<typename _InputIterator>
23866: basic_string<_CharT, _Traits, _Alloc>&
23866: basic_string<_CharT, _Traits, _Alloc>::
23866: _M_replace_dispatch(const_iterator __i1, const_iterator __i2,
23866: _InputIterator __k1, _InputIterator __k2,
23866: std::__false_type)
23866: {
23866:
23866:
23866: const basic_string __s(__k1, __k2, this->get_allocator());
23866: const size_type __n1 = __i2 - __i1;
23866: return _M_replace(__i1 - begin(), __n1, __s._M_data(),
23866: __s.size());
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: basic_string<_CharT, _Traits, _Alloc>&
23866: basic_string<_CharT, _Traits, _Alloc>::
23866: _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,
23866: _CharT __c)
23866: {
23866: _M_check_length(__n1, __n2, "basic_string::_M_replace_aux");
23866:
23866: const size_type __old_size = this->size();
23866: const size_type __new_size = __old_size + __n2 - __n1;
23866:
23866: if (__new_size <= this->capacity())
23866: {
23866: pointer __p = this->_M_data() + __pos1;
23866:
23866: const size_type __how_much = __old_size - __pos1 - __n1;
23866: if (__how_much && __n1 != __n2)
23866: this->_S_move(__p + __n2, __p + __n1, __how_much);
23866: }
23866: else
23866: this->_M_mutate(__pos1, __n1, 0, __n2);
23866:
23866: if (__n2)
23866: this->_S_assign(this->_M_data() + __pos1, __n2, __c);
23866:
23866: this->_M_set_length(__new_size);
23866: return *this;
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: basic_string<_CharT, _Traits, _Alloc>&
23866: basic_string<_CharT, _Traits, _Alloc>::
23866: _M_replace(size_type __pos, size_type __len1, const _CharT* __s,
23866: const size_type __len2)
23866: {
23866: _M_check_length(__len1, __len2, "basic_string::_M_replace");
23866:
23866: const size_type __old_size = this->size();
23866: const size_type __new_size = __old_size + __len2 - __len1;
23866:
23866: if (__new_size <= this->capacity())
23866: {
23866: pointer __p = this->_M_data() + __pos;
23866:
23866: const size_type __how_much = __old_size - __pos - __len1;
23866: if (_M_disjunct(__s))
23866: {
23866: if (__how_much && __len1 != __len2)
23866: this->_S_move(__p + __len2, __p + __len1, __how_much);
23866: if (__len2)
23866: this->_S_copy(__p, __s, __len2);
23866: }
23866: else
23866: {
23866:
23866: if (__len2 && __len2 <= __len1)
23866: this->_S_move(__p, __s, __len2);
23866: if (__how_much && __len1 != __len2)
23866: this->_S_move(__p + __len2, __p + __len1, __how_much);
23866: if (__len2 > __len1)
23866: {
23866: if (__s + __len2 <= __p + __len1)
23866: this->_S_move(__p, __s, __len2);
23866: else if (__s >= __p + __len1)
23866: this->_S_copy(__p, __s + __len2 - __len1, __len2);
23866: else
23866: {
23866: const size_type __nleft = (__p + __len1) - __s;
23866: this->_S_move(__p, __s, __nleft);
23866: this->_S_copy(__p + __nleft, __p + __len2,
23866: __len2 - __nleft);
23866: }
23866: }
23866: }
23866: }
23866: else
23866: this->_M_mutate(__pos, __len1, __s, __len2);
23866:
23866: this->_M_set_length(__new_size);
23866: return *this;
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: typename basic_string<_CharT, _Traits, _Alloc>::size_type
23866: basic_string<_CharT, _Traits, _Alloc>::
23866: copy(_CharT* __s, size_type __n, size_type __pos) const
23866: {
23866: _M_check(__pos, "basic_string::copy");
23866: __n = _M_limit(__pos, __n);
23866: ;
23866: if (__n)
23866: _S_copy(__s, _M_data() + __pos, __n);
23866:
23866: return __n;
23866: }
23866: # 1150 "/usr/include/c++/10/bits/basic_string.tcc" 3
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: basic_string<_CharT, _Traits, _Alloc>
23866: operator+(const _CharT* __lhs,
23866: const basic_string<_CharT, _Traits, _Alloc>& __rhs)
23866: {
23866: ;
23866: typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
23866: typedef typename __string_type::size_type __size_type;
23866: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template
23866: rebind<_CharT>::other _Char_alloc_type;
23866: typedef __gnu_cxx::__alloc_traits<_Char_alloc_type> _Alloc_traits;
23866: const __size_type __len = _Traits::length(__lhs);
23866: __string_type __str(_Alloc_traits::_S_select_on_copy(
23866: __rhs.get_allocator()));
23866: __str.reserve(__len + __rhs.size());
23866: __str.append(__lhs, __len);
23866: __str.append(__rhs);
23866: return __str;
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: basic_string<_CharT, _Traits, _Alloc>
23866: operator+(_CharT __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs)
23866: {
23866: typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
23866: typedef typename __string_type::size_type __size_type;
23866: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template
23866: rebind<_CharT>::other _Char_alloc_type;
23866: typedef __gnu_cxx::__alloc_traits<_Char_alloc_type> _Alloc_traits;
23866: __string_type __str(_Alloc_traits::_S_select_on_copy(
23866: __rhs.get_allocator()));
23866: const __size_type __len = __rhs.size();
23866: __str.reserve(__len + 1);
23866: __str.append(__size_type(1), __lhs);
23866: __str.append(__rhs);
23866: return __str;
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: typename basic_string<_CharT, _Traits, _Alloc>::size_type
23866: basic_string<_CharT, _Traits, _Alloc>::
23866: find(const _CharT* __s, size_type __pos, size_type __n) const
23866: noexcept
23866: {
23866: ;
23866: const size_type __size = this->size();
23866:
23866: if (__n == 0)
23866: return __pos <= __size ? __pos : npos;
23866: if (__pos >= __size)
23866: return npos;
23866:
23866: const _CharT __elem0 = __s[0];
23866: const _CharT* const __data = data();
23866: const _CharT* __first = __data + __pos;
23866: const _CharT* const __last = __data + __size;
23866: size_type __len = __size - __pos;
23866:
23866: while (__len >= __n)
23866: {
23866:
23866: __first = traits_type::find(__first, __len - __n + 1, __elem0);
23866: if (!__first)
23866: return npos;
23866:
23866:
23866:
23866: if (traits_type::compare(__first, __s, __n) == 0)
23866: return __first - __data;
23866: __len = __last - ++__first;
23866: }
23866: return npos;
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: typename basic_string<_CharT, _Traits, _Alloc>::size_type
23866: basic_string<_CharT, _Traits, _Alloc>::
23866: find(_CharT __c, size_type __pos) const noexcept
23866: {
23866: size_type __ret = npos;
23866: const size_type __size = this->size();
23866: if (__pos < __size)
23866: {
23866: const _CharT* __data = _M_data();
23866: const size_type __n = __size - __pos;
23866: const _CharT* __p = traits_type::find(__data + __pos, __n, __c);
23866: if (__p)
23866: __ret = __p - __data;
23866: }
23866: return __ret;
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: typename basic_string<_CharT, _Traits, _Alloc>::size_type
23866: basic_string<_CharT, _Traits, _Alloc>::
23866: rfind(const _CharT* __s, size_type __pos, size_type __n) const
23866: noexcept
23866: {
23866: ;
23866: const size_type __size = this->size();
23866: if (__n <= __size)
23866: {
23866: __pos = std::min(size_type(__size - __n), __pos);
23866: const _CharT* __data = _M_data();
23866: do
23866: {
23866: if (traits_type::compare(__data + __pos, __s, __n) == 0)
23866: return __pos;
23866: }
23866: while (__pos-- > 0);
23866: }
23866: return npos;
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: typename basic_string<_CharT, _Traits, _Alloc>::size_type
23866: basic_string<_CharT, _Traits, _Alloc>::
23866: rfind(_CharT __c, size_type __pos) const noexcept
23866: {
23866: size_type __size = this->size();
23866: if (__size)
23866: {
23866: if (--__size > __pos)
23866: __size = __pos;
23866: for (++__size; __size-- > 0; )
23866: if (traits_type::eq(_M_data()[__size], __c))
23866: return __size;
23866: }
23866: return npos;
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: typename basic_string<_CharT, _Traits, _Alloc>::size_type
23866: basic_string<_CharT, _Traits, _Alloc>::
23866: find_first_of(const _CharT* __s, size_type __pos, size_type __n) const
23866: noexcept
23866: {
23866: ;
23866: for (; __n && __pos < this->size(); ++__pos)
23866: {
23866: const _CharT* __p = traits_type::find(__s, __n, _M_data()[__pos]);
23866: if (__p)
23866: return __pos;
23866: }
23866: return npos;
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: typename basic_string<_CharT, _Traits, _Alloc>::size_type
23866: basic_string<_CharT, _Traits, _Alloc>::
23866: find_last_of(const _CharT* __s, size_type __pos, size_type __n) const
23866: noexcept
23866: {
23866: ;
23866: size_type __size = this->size();
23866: if (__size && __n)
23866: {
23866: if (--__size > __pos)
23866: __size = __pos;
23866: do
23866: {
23866: if (traits_type::find(__s, __n, _M_data()[__size]))
23866: return __size;
23866: }
23866: while (__size-- != 0);
23866: }
23866: return npos;
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: typename basic_string<_CharT, _Traits, _Alloc>::size_type
23866: basic_string<_CharT, _Traits, _Alloc>::
23866: find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const
23866: noexcept
23866: {
23866: ;
23866: for (; __pos < this->size(); ++__pos)
23866: if (!traits_type::find(__s, __n, _M_data()[__pos]))
23866: return __pos;
23866: return npos;
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: typename basic_string<_CharT, _Traits, _Alloc>::size_type
23866: basic_string<_CharT, _Traits, _Alloc>::
23866: find_first_not_of(_CharT __c, size_type __pos) const noexcept
23866: {
23866: for (; __pos < this->size(); ++__pos)
23866: if (!traits_type::eq(_M_data()[__pos], __c))
23866: return __pos;
23866: return npos;
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: typename basic_string<_CharT, _Traits, _Alloc>::size_type
23866: basic_string<_CharT, _Traits, _Alloc>::
23866: find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const
23866: noexcept
23866: {
23866: ;
23866: size_type __size = this->size();
23866: if (__size)
23866: {
23866: if (--__size > __pos)
23866: __size = __pos;
23866: do
23866: {
23866: if (!traits_type::find(__s, __n, _M_data()[__size]))
23866: return __size;
23866: }
23866: while (__size--);
23866: }
23866: return npos;
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: typename basic_string<_CharT, _Traits, _Alloc>::size_type
23866: basic_string<_CharT, _Traits, _Alloc>::
23866: find_last_not_of(_CharT __c, size_type __pos) const noexcept
23866: {
23866: size_type __size = this->size();
23866: if (__size)
23866: {
23866: if (--__size > __pos)
23866: __size = __pos;
23866: do
23866: {
23866: if (!traits_type::eq(_M_data()[__size], __c))
23866: return __size;
23866: }
23866: while (__size--);
23866: }
23866: return npos;
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: int
23866: basic_string<_CharT, _Traits, _Alloc>::
23866: compare(size_type __pos, size_type __n, const basic_string& __str) const
23866: {
23866: _M_check(__pos, "basic_string::compare");
23866: __n = _M_limit(__pos, __n);
23866: const size_type __osize = __str.size();
23866: const size_type __len = std::min(__n, __osize);
23866: int __r = traits_type::compare(_M_data() + __pos, __str.data(), __len);
23866: if (!__r)
23866: __r = _S_compare(__n, __osize);
23866: return __r;
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: int
23866: basic_string<_CharT, _Traits, _Alloc>::
23866: compare(size_type __pos1, size_type __n1, const basic_string& __str,
23866: size_type __pos2, size_type __n2) const
23866: {
23866: _M_check(__pos1, "basic_string::compare");
23866: __str._M_check(__pos2, "basic_string::compare");
23866: __n1 = _M_limit(__pos1, __n1);
23866: __n2 = __str._M_limit(__pos2, __n2);
23866: const size_type __len = std::min(__n1, __n2);
23866: int __r = traits_type::compare(_M_data() + __pos1,
23866: __str.data() + __pos2, __len);
23866: if (!__r)
23866: __r = _S_compare(__n1, __n2);
23866: return __r;
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: int
23866: basic_string<_CharT, _Traits, _Alloc>::
23866: compare(const _CharT* __s) const noexcept
23866: {
23866: ;
23866: const size_type __size = this->size();
23866: const size_type __osize = traits_type::length(__s);
23866: const size_type __len = std::min(__size, __osize);
23866: int __r = traits_type::compare(_M_data(), __s, __len);
23866: if (!__r)
23866: __r = _S_compare(__size, __osize);
23866: return __r;
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: int
23866: basic_string <_CharT, _Traits, _Alloc>::
23866: compare(size_type __pos, size_type __n1, const _CharT* __s) const
23866: {
23866: ;
23866: _M_check(__pos, "basic_string::compare");
23866: __n1 = _M_limit(__pos, __n1);
23866: const size_type __osize = traits_type::length(__s);
23866: const size_type __len = std::min(__n1, __osize);
23866: int __r = traits_type::compare(_M_data() + __pos, __s, __len);
23866: if (!__r)
23866: __r = _S_compare(__n1, __osize);
23866: return __r;
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: int
23866: basic_string <_CharT, _Traits, _Alloc>::
23866: compare(size_type __pos, size_type __n1, const _CharT* __s,
23866: size_type __n2) const
23866: {
23866: ;
23866: _M_check(__pos, "basic_string::compare");
23866: __n1 = _M_limit(__pos, __n1);
23866: const size_type __len = std::min(__n1, __n2);
23866: int __r = traits_type::compare(_M_data() + __pos, __s, __len);
23866: if (!__r)
23866: __r = _S_compare(__n1, __n2);
23866: return __r;
23866: }
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: basic_istream<_CharT, _Traits>&
23866: operator>>(basic_istream<_CharT, _Traits>& __in,
23866: basic_string<_CharT, _Traits, _Alloc>& __str)
23866: {
23866: typedef basic_istream<_CharT, _Traits> __istream_type;
23866: typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
23866: typedef typename __istream_type::ios_base __ios_base;
23866: typedef typename __istream_type::int_type __int_type;
23866: typedef typename __string_type::size_type __size_type;
23866: typedef ctype<_CharT> __ctype_type;
23866: typedef typename __ctype_type::ctype_base __ctype_base;
23866:
23866: __size_type __extracted = 0;
23866: typename __ios_base::iostate __err = __ios_base::goodbit;
23866: typename __istream_type::sentry __cerb(__in, false);
23866: if (__cerb)
23866: {
23866: try
23866: {
23866:
23866: __str.erase();
23866: _CharT __buf[128];
23866: __size_type __len = 0;
23866: const streamsize __w = __in.width();
23866: const __size_type __n = __w > 0 ? static_cast<__size_type>(__w)
23866: : __str.max_size();
23866: const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());
23866: const __int_type __eof = _Traits::eof();
23866: __int_type __c = __in.rdbuf()->sgetc();
23866:
23866: while (__extracted < __n
23866: && !_Traits::eq_int_type(__c, __eof)
23866: && !__ct.is(__ctype_base::space,
23866: _Traits::to_char_type(__c)))
23866: {
23866: if (__len == sizeof(__buf) / sizeof(_CharT))
23866: {
23866: __str.append(__buf, sizeof(__buf) / sizeof(_CharT));
23866: __len = 0;
23866: }
23866: __buf[__len++] = _Traits::to_char_type(__c);
23866: ++__extracted;
23866: __c = __in.rdbuf()->snextc();
23866: }
23866: __str.append(__buf, __len);
23866:
23866: if (_Traits::eq_int_type(__c, __eof))
23866: __err |= __ios_base::eofbit;
23866: __in.width(0);
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: __in._M_setstate(__ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: {
23866:
23866:
23866:
23866: __in._M_setstate(__ios_base::badbit);
23866: }
23866: }
23866:
23866: if (!__extracted)
23866: __err |= __ios_base::failbit;
23866: if (__err)
23866: __in.setstate(__err);
23866: return __in;
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: basic_istream<_CharT, _Traits>&
23866: getline(basic_istream<_CharT, _Traits>& __in,
23866: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim)
23866: {
23866: typedef basic_istream<_CharT, _Traits> __istream_type;
23866: typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
23866: typedef typename __istream_type::ios_base __ios_base;
23866: typedef typename __istream_type::int_type __int_type;
23866: typedef typename __string_type::size_type __size_type;
23866:
23866: __size_type __extracted = 0;
23866: const __size_type __n = __str.max_size();
23866: typename __ios_base::iostate __err = __ios_base::goodbit;
23866: typename __istream_type::sentry __cerb(__in, true);
23866: if (__cerb)
23866: {
23866: try
23866: {
23866: __str.erase();
23866: const __int_type __idelim = _Traits::to_int_type(__delim);
23866: const __int_type __eof = _Traits::eof();
23866: __int_type __c = __in.rdbuf()->sgetc();
23866:
23866: while (__extracted < __n
23866: && !_Traits::eq_int_type(__c, __eof)
23866: && !_Traits::eq_int_type(__c, __idelim))
23866: {
23866: __str += _Traits::to_char_type(__c);
23866: ++__extracted;
23866: __c = __in.rdbuf()->snextc();
23866: }
23866:
23866: if (_Traits::eq_int_type(__c, __eof))
23866: __err |= __ios_base::eofbit;
23866: else if (_Traits::eq_int_type(__c, __idelim))
23866: {
23866: ++__extracted;
23866: __in.rdbuf()->sbumpc();
23866: }
23866: else
23866: __err |= __ios_base::failbit;
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: __in._M_setstate(__ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: {
23866:
23866:
23866:
23866: __in._M_setstate(__ios_base::badbit);
23866: }
23866: }
23866: if (!__extracted)
23866: __err |= __ios_base::failbit;
23866: if (__err)
23866: __in.setstate(__err);
23866: return __in;
23866: }
23866: # 1610 "/usr/include/c++/10/bits/basic_string.tcc" 3
23866: extern template class basic_string<char>;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern template
23866: basic_istream<char>&
23866: operator>>(basic_istream<char>&, string&);
23866: extern template
23866: basic_ostream<char>&
23866: operator<<(basic_ostream<char>&, const string&);
23866: extern template
23866: basic_istream<char>&
23866: getline(basic_istream<char>&, string&, char);
23866: extern template
23866: basic_istream<char>&
23866: getline(basic_istream<char>&, string&);
23866:
23866:
23866:
23866: extern template class basic_string<wchar_t>;
23866:
23866:
23866:
23866:
23866:
23866: extern template
23866: basic_istream<wchar_t>&
23866: operator>>(basic_istream<wchar_t>&, wstring&);
23866: extern template
23866: basic_ostream<wchar_t>&
23866: operator<<(basic_ostream<wchar_t>&, const wstring&);
23866: extern template
23866: basic_istream<wchar_t>&
23866: getline(basic_istream<wchar_t>&, wstring&, wchar_t);
23866: extern template
23866: basic_istream<wchar_t>&
23866: getline(basic_istream<wchar_t>&, wstring&);
23866:
23866:
23866:
23866:
23866: }
23866: # 57 "/usr/include/c++/10/string" 2 3
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: namespace pmr {
23866: template<typename _Tp> class polymorphic_allocator;
23866: template<typename _CharT, typename _Traits = char_traits<_CharT>>
23866: using basic_string = std::basic_string<_CharT, _Traits,
23866: polymorphic_allocator<_CharT>>;
23866: using string = basic_string<char>;
23866:
23866:
23866:
23866: using u16string = basic_string<char16_t>;
23866: using u32string = basic_string<char32_t>;
23866:
23866: using wstring = basic_string<wchar_t>;
23866:
23866: }
23866:
23866: template<typename _Str>
23866: struct __hash_string_base
23866: : public __hash_base<size_t, _Str>
23866: {
23866: size_t
23866: operator()(const _Str& __s) const noexcept
23866: { return hash<basic_string_view<typename _Str::value_type>>{}(__s); }
23866: };
23866:
23866: template<>
23866: struct hash<pmr::string>
23866: : public __hash_string_base<pmr::string>
23866: { };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<>
23866: struct hash<pmr::u16string>
23866: : public __hash_string_base<pmr::u16string>
23866: { };
23866: template<>
23866: struct hash<pmr::u32string>
23866: : public __hash_string_base<pmr::u32string>
23866: { };
23866:
23866: template<>
23866: struct hash<pmr::wstring>
23866: : public __hash_string_base<pmr::wstring>
23866: { };
23866:
23866:
23866:
23866: }
23866: # 40 "/usr/include/c++/10/stdexcept" 2 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866:
23866: struct __cow_string
23866: {
23866: union {
23866: const char* _M_p;
23866: char _M_bytes[sizeof(const char*)];
23866: };
23866:
23866: __cow_string();
23866: __cow_string(const std::string&);
23866: __cow_string(const char*, size_t);
23866: __cow_string(const __cow_string&) noexcept;
23866: __cow_string& operator=(const __cow_string&) noexcept;
23866: ~__cow_string();
23866:
23866: __cow_string(__cow_string&&) noexcept;
23866: __cow_string& operator=(__cow_string&&) noexcept;
23866:
23866: };
23866:
23866: typedef basic_string<char> __sso_string;
23866: # 113 "/usr/include/c++/10/stdexcept" 3
23866: class logic_error : public exception
23866: {
23866: __cow_string _M_msg;
23866:
23866: public:
23866:
23866: explicit
23866: logic_error(const string& __arg) ;
23866:
23866:
23866: explicit
23866: logic_error(const char*) ;
23866:
23866: logic_error(logic_error&&) noexcept;
23866: logic_error& operator=(logic_error&&) noexcept;
23866:
23866:
23866:
23866: logic_error(const logic_error&) noexcept;
23866: logic_error& operator=(const logic_error&) noexcept;
23866:
23866:
23866:
23866:
23866:
23866: virtual ~logic_error() noexcept;
23866:
23866:
23866:
23866: virtual const char*
23866: what() const noexcept;
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866:
23866:
23866: class domain_error : public logic_error
23866: {
23866: public:
23866: explicit domain_error(const string& __arg) ;
23866:
23866: explicit domain_error(const char*) ;
23866: domain_error(const domain_error&) = default;
23866: domain_error& operator=(const domain_error&) = default;
23866: domain_error(domain_error&&) = default;
23866: domain_error& operator=(domain_error&&) = default;
23866:
23866: virtual ~domain_error() noexcept;
23866: };
23866:
23866:
23866: class invalid_argument : public logic_error
23866: {
23866: public:
23866: explicit invalid_argument(const string& __arg) ;
23866:
23866: explicit invalid_argument(const char*) ;
23866: invalid_argument(const invalid_argument&) = default;
23866: invalid_argument& operator=(const invalid_argument&) = default;
23866: invalid_argument(invalid_argument&&) = default;
23866: invalid_argument& operator=(invalid_argument&&) = default;
23866:
23866: virtual ~invalid_argument() noexcept;
23866: };
23866:
23866:
23866:
23866: class length_error : public logic_error
23866: {
23866: public:
23866: explicit length_error(const string& __arg) ;
23866:
23866: explicit length_error(const char*) ;
23866: length_error(const length_error&) = default;
23866: length_error& operator=(const length_error&) = default;
23866: length_error(length_error&&) = default;
23866: length_error& operator=(length_error&&) = default;
23866:
23866: virtual ~length_error() noexcept;
23866: };
23866:
23866:
23866:
23866: class out_of_range : public logic_error
23866: {
23866: public:
23866: explicit out_of_range(const string& __arg) ;
23866:
23866: explicit out_of_range(const char*) ;
23866: out_of_range(const out_of_range&) = default;
23866: out_of_range& operator=(const out_of_range&) = default;
23866: out_of_range(out_of_range&&) = default;
23866: out_of_range& operator=(out_of_range&&) = default;
23866:
23866: virtual ~out_of_range() noexcept;
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: class runtime_error : public exception
23866: {
23866: __cow_string _M_msg;
23866:
23866: public:
23866:
23866: explicit
23866: runtime_error(const string& __arg) ;
23866:
23866:
23866: explicit
23866: runtime_error(const char*) ;
23866:
23866: runtime_error(runtime_error&&) noexcept;
23866: runtime_error& operator=(runtime_error&&) noexcept;
23866:
23866:
23866:
23866: runtime_error(const runtime_error&) noexcept;
23866: runtime_error& operator=(const runtime_error&) noexcept;
23866:
23866:
23866:
23866:
23866:
23866: virtual ~runtime_error() noexcept;
23866:
23866:
23866:
23866: virtual const char*
23866: what() const noexcept;
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866:
23866: class range_error : public runtime_error
23866: {
23866: public:
23866: explicit range_error(const string& __arg) ;
23866:
23866: explicit range_error(const char*) ;
23866: range_error(const range_error&) = default;
23866: range_error& operator=(const range_error&) = default;
23866: range_error(range_error&&) = default;
23866: range_error& operator=(range_error&&) = default;
23866:
23866: virtual ~range_error() noexcept;
23866: };
23866:
23866:
23866: class overflow_error : public runtime_error
23866: {
23866: public:
23866: explicit overflow_error(const string& __arg) ;
23866:
23866: explicit overflow_error(const char*) ;
23866: overflow_error(const overflow_error&) = default;
23866: overflow_error& operator=(const overflow_error&) = default;
23866: overflow_error(overflow_error&&) = default;
23866: overflow_error& operator=(overflow_error&&) = default;
23866:
23866: virtual ~overflow_error() noexcept;
23866: };
23866:
23866:
23866: class underflow_error : public runtime_error
23866: {
23866: public:
23866: explicit underflow_error(const string& __arg) ;
23866:
23866: explicit underflow_error(const char*) ;
23866: underflow_error(const underflow_error&) = default;
23866: underflow_error& operator=(const underflow_error&) = default;
23866: underflow_error(underflow_error&&) = default;
23866: underflow_error& operator=(underflow_error&&) = default;
23866:
23866: virtual ~underflow_error() noexcept;
23866: };
23866:
23866:
23866:
23866:
23866: }
23866: # 42 "/usr/include/c++/10/system_error" 2 3
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: class error_code;
23866: class error_condition;
23866: class system_error;
23866:
23866:
23866: template<typename _Tp>
23866: struct is_error_code_enum : public false_type { };
23866:
23866:
23866: template<typename _Tp>
23866: struct is_error_condition_enum : public false_type { };
23866:
23866: template<>
23866: struct is_error_condition_enum<errc>
23866: : public true_type { };
23866:
23866:
23866: template <typename _Tp>
23866: inline constexpr bool is_error_code_enum_v =
23866: is_error_code_enum<_Tp>::value;
23866: template <typename _Tp>
23866: inline constexpr bool is_error_condition_enum_v =
23866: is_error_condition_enum<_Tp>::value;
23866:
23866: inline namespace _V2 {
23866: # 89 "/usr/include/c++/10/system_error" 3
23866: class error_category
23866: {
23866: public:
23866: constexpr error_category() noexcept = default;
23866:
23866: virtual ~error_category();
23866:
23866: error_category(const error_category&) = delete;
23866: error_category& operator=(const error_category&) = delete;
23866:
23866: virtual const char*
23866: name() const noexcept = 0;
23866:
23866:
23866:
23866:
23866:
23866:
23866: private:
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: virtual __cow_string
23866: _M_message(int) const;
23866:
23866: public:
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: virtual string
23866: message(int) const = 0;
23866: # 125 "/usr/include/c++/10/system_error" 3
23866: public:
23866: virtual error_condition
23866: default_error_condition(int __i) const noexcept;
23866:
23866: virtual bool
23866: equivalent(int __i, const error_condition& __cond) const noexcept;
23866:
23866: virtual bool
23866: equivalent(const error_code& __code, int __i) const noexcept;
23866:
23866: bool
23866: operator==(const error_category& __other) const noexcept
23866: { return this == &__other; }
23866:
23866:
23866:
23866:
23866:
23866:
23866: bool
23866: operator!=(const error_category& __other) const noexcept
23866: { return this != &__other; }
23866:
23866: bool
23866: operator<(const error_category& __other) const noexcept
23866: { return less<const error_category*>()(this, &__other); }
23866:
23866: };
23866:
23866:
23866:
23866:
23866: __attribute__ ((__const__)) const error_category& generic_category() noexcept;
23866:
23866:
23866: __attribute__ ((__const__)) const error_category& system_category() noexcept;
23866:
23866: }
23866:
23866: error_code make_error_code(errc) noexcept;
23866: # 180 "/usr/include/c++/10/system_error" 3
23866: struct error_code
23866: {
23866: error_code() noexcept
23866: : _M_value(0), _M_cat(&system_category()) { }
23866:
23866: error_code(int __v, const error_category& __cat) noexcept
23866: : _M_value(__v), _M_cat(&__cat) { }
23866:
23866: template<typename _ErrorCodeEnum, typename = typename
23866: enable_if<is_error_code_enum<_ErrorCodeEnum>::value>::type>
23866: error_code(_ErrorCodeEnum __e) noexcept
23866: { *this = make_error_code(__e); }
23866:
23866: void
23866: assign(int __v, const error_category& __cat) noexcept
23866: {
23866: _M_value = __v;
23866: _M_cat = &__cat;
23866: }
23866:
23866: void
23866: clear() noexcept
23866: { assign(0, system_category()); }
23866:
23866:
23866: template<typename _ErrorCodeEnum>
23866: typename enable_if<is_error_code_enum<_ErrorCodeEnum>::value,
23866: error_code&>::type
23866: operator=(_ErrorCodeEnum __e) noexcept
23866: { return *this = make_error_code(__e); }
23866:
23866: int
23866: value() const noexcept { return _M_value; }
23866:
23866: const error_category&
23866: category() const noexcept { return *_M_cat; }
23866:
23866: error_condition
23866: default_error_condition() const noexcept;
23866:
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: string
23866: message() const
23866: { return category().message(value()); }
23866:
23866: explicit operator bool() const noexcept
23866: { return _M_value != 0; }
23866:
23866:
23866: private:
23866: int _M_value;
23866: const error_category* _M_cat;
23866: };
23866:
23866:
23866:
23866:
23866:
23866: inline error_code
23866: make_error_code(errc __e) noexcept
23866: { return error_code(static_cast<int>(__e), generic_category()); }
23866: # 251 "/usr/include/c++/10/system_error" 3
23866: inline bool
23866: operator<(const error_code& __lhs, const error_code& __rhs) noexcept
23866: {
23866: return (__lhs.category() < __rhs.category()
23866: || (__lhs.category() == __rhs.category()
23866: && __lhs.value() < __rhs.value()));
23866: }
23866:
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_ostream<_CharT, _Traits>&
23866: operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __e)
23866: { return (__os << __e.category().name() << ':' << __e.value()); }
23866:
23866:
23866:
23866: error_condition make_error_condition(errc) noexcept;
23866: # 278 "/usr/include/c++/10/system_error" 3
23866: struct error_condition
23866: {
23866: error_condition() noexcept
23866: : _M_value(0), _M_cat(&generic_category()) { }
23866:
23866: error_condition(int __v, const error_category& __cat) noexcept
23866: : _M_value(__v), _M_cat(&__cat) { }
23866:
23866: template<typename _ErrorConditionEnum, typename = typename
23866: enable_if<is_error_condition_enum<_ErrorConditionEnum>::value>::type>
23866: error_condition(_ErrorConditionEnum __e) noexcept
23866: { *this = make_error_condition(__e); }
23866:
23866: void
23866: assign(int __v, const error_category& __cat) noexcept
23866: {
23866: _M_value = __v;
23866: _M_cat = &__cat;
23866: }
23866:
23866:
23866: template<typename _ErrorConditionEnum>
23866: typename enable_if<is_error_condition_enum
23866: <_ErrorConditionEnum>::value, error_condition&>::type
23866: operator=(_ErrorConditionEnum __e) noexcept
23866: { return *this = make_error_condition(__e); }
23866:
23866: void
23866: clear() noexcept
23866: { assign(0, generic_category()); }
23866:
23866:
23866: int
23866: value() const noexcept { return _M_value; }
23866:
23866: const error_category&
23866: category() const noexcept { return *_M_cat; }
23866:
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: string
23866: message() const
23866: { return category().message(value()); }
23866:
23866: explicit operator bool() const noexcept
23866: { return _M_value != 0; }
23866:
23866:
23866: private:
23866: int _M_value;
23866: const error_category* _M_cat;
23866: };
23866:
23866:
23866:
23866:
23866:
23866: inline error_condition
23866: make_error_condition(errc __e) noexcept
23866: { return error_condition(static_cast<int>(__e), generic_category()); }
23866:
23866:
23866:
23866:
23866: inline bool
23866: operator==(const error_code& __lhs, const error_code& __rhs) noexcept
23866: { return (__lhs.category() == __rhs.category()
23866: && __lhs.value() == __rhs.value()); }
23866:
23866:
23866:
23866: inline bool
23866: operator==(const error_code& __lhs, const error_condition& __rhs) noexcept
23866: {
23866: return (__lhs.category().equivalent(__lhs.value(), __rhs)
23866: || __rhs.category().equivalent(__lhs, __rhs.value()));
23866: }
23866:
23866:
23866: inline bool
23866: operator==(const error_condition& __lhs,
23866: const error_condition& __rhs) noexcept
23866: {
23866: return (__lhs.category() == __rhs.category()
23866: && __lhs.value() == __rhs.value());
23866: }
23866: # 378 "/usr/include/c++/10/system_error" 3
23866: inline bool
23866: operator<(const error_condition& __lhs,
23866: const error_condition& __rhs) noexcept
23866: {
23866: return (__lhs.category() < __rhs.category()
23866: || (__lhs.category() == __rhs.category()
23866: && __lhs.value() < __rhs.value()));
23866: }
23866:
23866:
23866:
23866: inline bool
23866: operator==(const error_condition& __lhs, const error_code& __rhs) noexcept
23866: {
23866: return (__rhs.category().equivalent(__rhs.value(), __lhs)
23866: || __lhs.category().equivalent(__rhs, __lhs.value()));
23866: }
23866:
23866:
23866: inline bool
23866: operator!=(const error_code& __lhs, const error_code& __rhs) noexcept
23866: { return !(__lhs == __rhs); }
23866:
23866:
23866:
23866: inline bool
23866: operator!=(const error_code& __lhs, const error_condition& __rhs) noexcept
23866: { return !(__lhs == __rhs); }
23866:
23866:
23866:
23866: inline bool
23866: operator!=(const error_condition& __lhs, const error_code& __rhs) noexcept
23866: { return !(__lhs == __rhs); }
23866:
23866:
23866: inline bool
23866: operator!=(const error_condition& __lhs,
23866: const error_condition& __rhs) noexcept
23866: { return !(__lhs == __rhs); }
23866: # 428 "/usr/include/c++/10/system_error" 3
23866: class system_error : public std::runtime_error
23866: {
23866: private:
23866: error_code _M_code;
23866:
23866: public:
23866: system_error(error_code __ec = error_code())
23866: : runtime_error(__ec.message()), _M_code(__ec) { }
23866:
23866: system_error(error_code __ec, const string& __what)
23866: : runtime_error(__what + ": " + __ec.message()), _M_code(__ec) { }
23866:
23866: system_error(error_code __ec, const char* __what)
23866: : runtime_error(__what + (": " + __ec.message())), _M_code(__ec) { }
23866:
23866: system_error(int __v, const error_category& __ecat, const char* __what)
23866: : system_error(error_code(__v, __ecat), __what) { }
23866:
23866: system_error(int __v, const error_category& __ecat)
23866: : runtime_error(error_code(__v, __ecat).message()),
23866: _M_code(__v, __ecat) { }
23866:
23866: system_error(int __v, const error_category& __ecat, const string& __what)
23866: : runtime_error(__what + ": " + error_code(__v, __ecat).message()),
23866: _M_code(__v, __ecat) { }
23866:
23866:
23866: system_error (const system_error &) = default;
23866: system_error &operator= (const system_error &) = default;
23866:
23866:
23866: virtual ~system_error() noexcept;
23866:
23866: const error_code&
23866: code() const noexcept { return _M_code; }
23866: };
23866:
23866:
23866: }
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<>
23866: struct hash<error_code>
23866: : public __hash_base<size_t, error_code>
23866: {
23866: size_t
23866: operator()(const error_code& __e) const noexcept
23866: {
23866: const size_t __tmp = std::_Hash_impl::hash(__e.value());
23866: return std::_Hash_impl::__hash_combine(&__e.category(), __tmp);
23866: }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<>
23866: struct hash<error_condition>
23866: : public __hash_base<size_t, error_condition>
23866: {
23866: size_t
23866: operator()(const error_condition& __e) const noexcept
23866: {
23866: const size_t __tmp = std::_Hash_impl::hash(__e.value());
23866: return std::_Hash_impl::__hash_combine(&__e.category(), __tmp);
23866: }
23866: };
23866:
23866:
23866:
23866: }
23866: # 36 "/usr/include/c++/10/bits/fs_fwd.h" 2 3
23866:
23866: # 1 "/usr/include/c++/10/chrono" 1 3
23866: # 31 "/usr/include/c++/10/chrono" 3
23866: #define _GLIBCXX_CHRONO 1
23866:
23866:
23866: # 34 "/usr/include/c++/10/chrono" 3
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/ratio" 1 3
23866: # 31 "/usr/include/c++/10/ratio" 3
23866: #define _GLIBCXX_RATIO 1
23866:
23866:
23866: # 34 "/usr/include/c++/10/ratio" 3
23866: # 42 "/usr/include/c++/10/ratio" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 56 "/usr/include/c++/10/ratio" 3
23866: template<intmax_t _Pn>
23866: struct __static_sign
23866: : integral_constant<intmax_t, (_Pn < 0) ? -1 : 1>
23866: { };
23866:
23866: template<intmax_t _Pn>
23866: struct __static_abs
23866: : integral_constant<intmax_t, _Pn * __static_sign<_Pn>::value>
23866: { };
23866:
23866: template<intmax_t _Pn, intmax_t _Qn>
23866: struct __static_gcd
23866: : __static_gcd<_Qn, (_Pn % _Qn)>
23866: { };
23866:
23866: template<intmax_t _Pn>
23866: struct __static_gcd<_Pn, 0>
23866: : integral_constant<intmax_t, __static_abs<_Pn>::value>
23866: { };
23866:
23866: template<intmax_t _Qn>
23866: struct __static_gcd<0, _Qn>
23866: : integral_constant<intmax_t, __static_abs<_Qn>::value>
23866: { };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<intmax_t _Pn, intmax_t _Qn>
23866: struct __safe_multiply
23866: {
23866: private:
23866: static const uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4);
23866:
23866: static const uintmax_t __a0 = __static_abs<_Pn>::value % __c;
23866: static const uintmax_t __a1 = __static_abs<_Pn>::value / __c;
23866: static const uintmax_t __b0 = __static_abs<_Qn>::value % __c;
23866: static const uintmax_t __b1 = __static_abs<_Qn>::value / __c;
23866:
23866: static_assert(__a1 == 0 || __b1 == 0,
23866: "overflow in multiplication");
23866: static_assert(__a0 * __b1 + __b0 * __a1 < (__c >> 1),
23866: "overflow in multiplication");
23866: static_assert(__b0 * __a0 <= 0x7fffffffffffffffLL,
23866: "overflow in multiplication");
23866: static_assert((__a0 * __b1 + __b0 * __a1) * __c
23866: <= 0x7fffffffffffffffLL - __b0 * __a0,
23866: "overflow in multiplication");
23866:
23866: public:
23866: static const intmax_t value = _Pn * _Qn;
23866: };
23866:
23866:
23866:
23866: template<uintmax_t __hi1, uintmax_t __lo1, uintmax_t __hi2, uintmax_t __lo2>
23866: struct __big_less
23866: : integral_constant<bool, (__hi1 < __hi2
23866: || (__hi1 == __hi2 && __lo1 < __lo2))>
23866: { };
23866:
23866: template<uintmax_t __hi1, uintmax_t __lo1, uintmax_t __hi2, uintmax_t __lo2>
23866: struct __big_add
23866: {
23866: static constexpr uintmax_t __lo = __lo1 + __lo2;
23866: static constexpr uintmax_t __hi = (__hi1 + __hi2 +
23866: (__lo1 + __lo2 < __lo1));
23866: };
23866:
23866:
23866: template<uintmax_t __hi1, uintmax_t __lo1, uintmax_t __hi2, uintmax_t __lo2>
23866: struct __big_sub
23866: {
23866: static_assert(!__big_less<__hi1, __lo1, __hi2, __lo2>::value,
23866: "Internal library error");
23866: static constexpr uintmax_t __lo = __lo1 - __lo2;
23866: static constexpr uintmax_t __hi = (__hi1 - __hi2 -
23866: (__lo1 < __lo2));
23866: };
23866:
23866:
23866: template<uintmax_t __x, uintmax_t __y>
23866: struct __big_mul
23866: {
23866: private:
23866: static constexpr uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4);
23866: static constexpr uintmax_t __x0 = __x % __c;
23866: static constexpr uintmax_t __x1 = __x / __c;
23866: static constexpr uintmax_t __y0 = __y % __c;
23866: static constexpr uintmax_t __y1 = __y / __c;
23866: static constexpr uintmax_t __x0y0 = __x0 * __y0;
23866: static constexpr uintmax_t __x0y1 = __x0 * __y1;
23866: static constexpr uintmax_t __x1y0 = __x1 * __y0;
23866: static constexpr uintmax_t __x1y1 = __x1 * __y1;
23866: static constexpr uintmax_t __mix = __x0y1 + __x1y0;
23866: static constexpr uintmax_t __mix_lo = __mix * __c;
23866: static constexpr uintmax_t __mix_hi
23866: = __mix / __c + ((__mix < __x0y1) ? __c : 0);
23866: typedef __big_add<__mix_hi, __mix_lo, __x1y1, __x0y0> _Res;
23866: public:
23866: static constexpr uintmax_t __hi = _Res::__hi;
23866: static constexpr uintmax_t __lo = _Res::__lo;
23866: };
23866:
23866:
23866:
23866: template<uintmax_t __n1, uintmax_t __n0, uintmax_t __d>
23866: struct __big_div_impl
23866: {
23866: private:
23866: static_assert(__d >= (uintmax_t(1) << (sizeof(intmax_t) * 8 - 1)),
23866: "Internal library error");
23866: static_assert(__n1 < __d, "Internal library error");
23866: static constexpr uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4);
23866: static constexpr uintmax_t __d1 = __d / __c;
23866: static constexpr uintmax_t __d0 = __d % __c;
23866:
23866: static constexpr uintmax_t __q1x = __n1 / __d1;
23866: static constexpr uintmax_t __r1x = __n1 % __d1;
23866: static constexpr uintmax_t __m = __q1x * __d0;
23866: static constexpr uintmax_t __r1y = __r1x * __c + __n0 / __c;
23866: static constexpr uintmax_t __r1z = __r1y + __d;
23866: static constexpr uintmax_t __r1
23866: = ((__r1y < __m) ? ((__r1z >= __d) && (__r1z < __m))
23866: ? (__r1z + __d) : __r1z : __r1y) - __m;
23866: static constexpr uintmax_t __q1
23866: = __q1x - ((__r1y < __m)
23866: ? ((__r1z >= __d) && (__r1z < __m)) ? 2 : 1 : 0);
23866: static constexpr uintmax_t __q0x = __r1 / __d1;
23866: static constexpr uintmax_t __r0x = __r1 % __d1;
23866: static constexpr uintmax_t __n = __q0x * __d0;
23866: static constexpr uintmax_t __r0y = __r0x * __c + __n0 % __c;
23866: static constexpr uintmax_t __r0z = __r0y + __d;
23866: static constexpr uintmax_t __r0
23866: = ((__r0y < __n) ? ((__r0z >= __d) && (__r0z < __n))
23866: ? (__r0z + __d) : __r0z : __r0y) - __n;
23866: static constexpr uintmax_t __q0
23866: = __q0x - ((__r0y < __n) ? ((__r0z >= __d)
23866: && (__r0z < __n)) ? 2 : 1 : 0);
23866:
23866: public:
23866: static constexpr uintmax_t __quot = __q1 * __c + __q0;
23866: static constexpr uintmax_t __rem = __r0;
23866:
23866: private:
23866: typedef __big_mul<__quot, __d> _Prod;
23866: typedef __big_add<_Prod::__hi, _Prod::__lo, 0, __rem> _Sum;
23866: static_assert(_Sum::__hi == __n1 && _Sum::__lo == __n0,
23866: "Internal library error");
23866: };
23866:
23866: template<uintmax_t __n1, uintmax_t __n0, uintmax_t __d>
23866: struct __big_div
23866: {
23866: private:
23866: static_assert(__d != 0, "Internal library error");
23866: static_assert(sizeof (uintmax_t) == sizeof (unsigned long long),
23866: "This library calls __builtin_clzll on uintmax_t, which "
23866: "is unsafe on your platform. Please complain to "
23866: "http://gcc.gnu.org/bugzilla/");
23866: static constexpr int __shift = __builtin_clzll(__d);
23866: static constexpr int __coshift_ = sizeof(uintmax_t) * 8 - __shift;
23866: static constexpr int __coshift = (__shift != 0) ? __coshift_ : 0;
23866: static constexpr uintmax_t __c1 = uintmax_t(1) << __shift;
23866: static constexpr uintmax_t __c2 = uintmax_t(1) << __coshift;
23866: static constexpr uintmax_t __new_d = __d * __c1;
23866: static constexpr uintmax_t __new_n0 = __n0 * __c1;
23866: static constexpr uintmax_t __n1_shifted = (__n1 % __d) * __c1;
23866: static constexpr uintmax_t __n0_top = (__shift != 0) ? (__n0 / __c2) : 0;
23866: static constexpr uintmax_t __new_n1 = __n1_shifted + __n0_top;
23866: typedef __big_div_impl<__new_n1, __new_n0, __new_d> _Res;
23866:
23866: public:
23866: static constexpr uintmax_t __quot_hi = __n1 / __d;
23866: static constexpr uintmax_t __quot_lo = _Res::__quot;
23866: static constexpr uintmax_t __rem = _Res::__rem / __c1;
23866:
23866: private:
23866: typedef __big_mul<__quot_lo, __d> _P0;
23866: typedef __big_mul<__quot_hi, __d> _P1;
23866: typedef __big_add<_P0::__hi, _P0::__lo, _P1::__lo, __rem> _Sum;
23866:
23866: static_assert(_P1::__hi == 0, "Internal library error");
23866: static_assert(_Sum::__hi >= _P0::__hi, "Internal library error");
23866:
23866: static_assert(_Sum::__hi == __n1 && _Sum::__lo == __n0,
23866: "Internal library error");
23866: static_assert(__rem < __d, "Internal library error");
23866: };
23866: # 265 "/usr/include/c++/10/ratio" 3
23866: template<intmax_t _Num, intmax_t _Den = 1>
23866: struct ratio
23866: {
23866: static_assert(_Den != 0, "denominator cannot be zero");
23866: static_assert(_Num >= -0x7fffffffffffffffLL && _Den >= -0x7fffffffffffffffLL,
23866: "out of range");
23866:
23866:
23866: static constexpr intmax_t num =
23866: _Num * __static_sign<_Den>::value / __static_gcd<_Num, _Den>::value;
23866:
23866: static constexpr intmax_t den =
23866: __static_abs<_Den>::value / __static_gcd<_Num, _Den>::value;
23866:
23866: typedef ratio<num, den> type;
23866: };
23866:
23866: template<intmax_t _Num, intmax_t _Den>
23866: constexpr intmax_t ratio<_Num, _Den>::num;
23866:
23866: template<intmax_t _Num, intmax_t _Den>
23866: constexpr intmax_t ratio<_Num, _Den>::den;
23866:
23866:
23866:
23866: template<typename _R1, typename _R2>
23866: struct __ratio_multiply
23866: {
23866: private:
23866: static const intmax_t __gcd1 =
23866: __static_gcd<_R1::num, _R2::den>::value;
23866: static const intmax_t __gcd2 =
23866: __static_gcd<_R2::num, _R1::den>::value;
23866:
23866: public:
23866: typedef ratio<
23866: __safe_multiply<(_R1::num / __gcd1),
23866: (_R2::num / __gcd2)>::value,
23866: __safe_multiply<(_R1::den / __gcd2),
23866: (_R2::den / __gcd1)>::value> type;
23866:
23866: static constexpr intmax_t num = type::num;
23866: static constexpr intmax_t den = type::den;
23866: };
23866:
23866: template<typename _R1, typename _R2>
23866: constexpr intmax_t __ratio_multiply<_R1, _R2>::num;
23866:
23866: template<typename _R1, typename _R2>
23866: constexpr intmax_t __ratio_multiply<_R1, _R2>::den;
23866:
23866:
23866:
23866:
23866: template<typename _R1, typename _R2>
23866: using ratio_multiply = typename __ratio_multiply<_R1, _R2>::type;
23866:
23866:
23866:
23866: template<typename _R1, typename _R2>
23866: struct __ratio_divide
23866: {
23866: static_assert(_R2::num != 0, "division by 0");
23866:
23866: typedef typename __ratio_multiply<
23866: _R1,
23866: ratio<_R2::den, _R2::num>>::type type;
23866:
23866: static constexpr intmax_t num = type::num;
23866: static constexpr intmax_t den = type::den;
23866: };
23866:
23866: template<typename _R1, typename _R2>
23866: constexpr intmax_t __ratio_divide<_R1, _R2>::num;
23866:
23866: template<typename _R1, typename _R2>
23866: constexpr intmax_t __ratio_divide<_R1, _R2>::den;
23866:
23866:
23866:
23866:
23866: template<typename _R1, typename _R2>
23866: using ratio_divide = typename __ratio_divide<_R1, _R2>::type;
23866:
23866:
23866: template<typename _R1, typename _R2>
23866: struct ratio_equal
23866: : integral_constant<bool, _R1::num == _R2::num && _R1::den == _R2::den>
23866: { };
23866:
23866:
23866: template<typename _R1, typename _R2>
23866: struct ratio_not_equal
23866: : integral_constant<bool, !ratio_equal<_R1, _R2>::value>
23866: { };
23866:
23866:
23866:
23866:
23866: template<typename _R1, typename _R2,
23866: typename _Left = __big_mul<_R1::num,_R2::den>,
23866: typename _Right = __big_mul<_R2::num,_R1::den> >
23866: struct __ratio_less_impl_1
23866: : integral_constant<bool, __big_less<_Left::__hi, _Left::__lo,
23866: _Right::__hi, _Right::__lo>::value>
23866: { };
23866:
23866: template<typename _R1, typename _R2,
23866: bool = (_R1::num == 0 || _R2::num == 0
23866: || (__static_sign<_R1::num>::value
23866: != __static_sign<_R2::num>::value)),
23866: bool = (__static_sign<_R1::num>::value == -1
23866: && __static_sign<_R2::num>::value == -1)>
23866: struct __ratio_less_impl
23866: : __ratio_less_impl_1<_R1, _R2>::type
23866: { };
23866:
23866: template<typename _R1, typename _R2>
23866: struct __ratio_less_impl<_R1, _R2, true, false>
23866: : integral_constant<bool, _R1::num < _R2::num>
23866: { };
23866:
23866: template<typename _R1, typename _R2>
23866: struct __ratio_less_impl<_R1, _R2, false, true>
23866: : __ratio_less_impl_1<ratio<-_R2::num, _R2::den>,
23866: ratio<-_R1::num, _R1::den> >::type
23866: { };
23866:
23866:
23866:
23866:
23866: template<typename _R1, typename _R2>
23866: struct ratio_less
23866: : __ratio_less_impl<_R1, _R2>::type
23866: { };
23866:
23866:
23866: template<typename _R1, typename _R2>
23866: struct ratio_less_equal
23866: : integral_constant<bool, !ratio_less<_R2, _R1>::value>
23866: { };
23866:
23866:
23866: template<typename _R1, typename _R2>
23866: struct ratio_greater
23866: : integral_constant<bool, ratio_less<_R2, _R1>::value>
23866: { };
23866:
23866:
23866: template<typename _R1, typename _R2>
23866: struct ratio_greater_equal
23866: : integral_constant<bool, !ratio_less<_R1, _R2>::value>
23866: { };
23866:
23866:
23866: template <typename _R1, typename _R2>
23866: inline constexpr bool ratio_equal_v = ratio_equal<_R1, _R2>::value;
23866: template <typename _R1, typename _R2>
23866: inline constexpr bool ratio_not_equal_v = ratio_not_equal<_R1, _R2>::value;
23866: template <typename _R1, typename _R2>
23866: inline constexpr bool ratio_less_v = ratio_less<_R1, _R2>::value;
23866: template <typename _R1, typename _R2>
23866: inline constexpr bool ratio_less_equal_v =
23866: ratio_less_equal<_R1, _R2>::value;
23866: template <typename _R1, typename _R2>
23866: inline constexpr bool ratio_greater_v = ratio_greater<_R1, _R2>::value;
23866: template <typename _R1, typename _R2>
23866: inline constexpr bool ratio_greater_equal_v
23866: = ratio_greater_equal<_R1, _R2>::value;
23866:
23866:
23866:
23866:
23866: template<typename _R1, typename _R2,
23866: bool = (_R1::num >= 0),
23866: bool = (_R2::num >= 0),
23866: bool = ratio_less<ratio<__static_abs<_R1::num>::value, _R1::den>,
23866: ratio<__static_abs<_R2::num>::value, _R2::den> >::value>
23866: struct __ratio_add_impl
23866: {
23866: private:
23866: typedef typename __ratio_add_impl<
23866: ratio<-_R1::num, _R1::den>,
23866: ratio<-_R2::num, _R2::den> >::type __t;
23866: public:
23866: typedef ratio<-__t::num, __t::den> type;
23866: };
23866:
23866:
23866: template<typename _R1, typename _R2, bool __b>
23866: struct __ratio_add_impl<_R1, _R2, true, true, __b>
23866: {
23866: private:
23866: static constexpr uintmax_t __g = __static_gcd<_R1::den, _R2::den>::value;
23866: static constexpr uintmax_t __d2 = _R2::den / __g;
23866: typedef __big_mul<_R1::den, __d2> __d;
23866: typedef __big_mul<_R1::num, _R2::den / __g> __x;
23866: typedef __big_mul<_R2::num, _R1::den / __g> __y;
23866: typedef __big_add<__x::__hi, __x::__lo, __y::__hi, __y::__lo> __n;
23866: static_assert(__n::__hi >= __x::__hi, "Internal library error");
23866: typedef __big_div<__n::__hi, __n::__lo, __g> __ng;
23866: static constexpr uintmax_t __g2 = __static_gcd<__ng::__rem, __g>::value;
23866: typedef __big_div<__n::__hi, __n::__lo, __g2> __n_final;
23866: static_assert(__n_final::__rem == 0, "Internal library error");
23866: static_assert(__n_final::__quot_hi == 0 &&
23866: __n_final::__quot_lo <= 0x7fffffffffffffffLL, "overflow in addition");
23866: typedef __big_mul<_R1::den / __g2, __d2> __d_final;
23866: static_assert(__d_final::__hi == 0 &&
23866: __d_final::__lo <= 0x7fffffffffffffffLL, "overflow in addition");
23866: public:
23866: typedef ratio<__n_final::__quot_lo, __d_final::__lo> type;
23866: };
23866:
23866: template<typename _R1, typename _R2>
23866: struct __ratio_add_impl<_R1, _R2, false, true, true>
23866: : __ratio_add_impl<_R2, _R1>
23866: { };
23866:
23866:
23866: template<typename _R1, typename _R2>
23866: struct __ratio_add_impl<_R1, _R2, true, false, false>
23866: {
23866: private:
23866: static constexpr uintmax_t __g = __static_gcd<_R1::den, _R2::den>::value;
23866: static constexpr uintmax_t __d2 = _R2::den / __g;
23866: typedef __big_mul<_R1::den, __d2> __d;
23866: typedef __big_mul<_R1::num, _R2::den / __g> __x;
23866: typedef __big_mul<-_R2::num, _R1::den / __g> __y;
23866: typedef __big_sub<__x::__hi, __x::__lo, __y::__hi, __y::__lo> __n;
23866: typedef __big_div<__n::__hi, __n::__lo, __g> __ng;
23866: static constexpr uintmax_t __g2 = __static_gcd<__ng::__rem, __g>::value;
23866: typedef __big_div<__n::__hi, __n::__lo, __g2> __n_final;
23866: static_assert(__n_final::__rem == 0, "Internal library error");
23866: static_assert(__n_final::__quot_hi == 0 &&
23866: __n_final::__quot_lo <= 0x7fffffffffffffffLL, "overflow in addition");
23866: typedef __big_mul<_R1::den / __g2, __d2> __d_final;
23866: static_assert(__d_final::__hi == 0 &&
23866: __d_final::__lo <= 0x7fffffffffffffffLL, "overflow in addition");
23866: public:
23866: typedef ratio<__n_final::__quot_lo, __d_final::__lo> type;
23866: };
23866:
23866: template<typename _R1, typename _R2>
23866: struct __ratio_add
23866: {
23866: typedef typename __ratio_add_impl<_R1, _R2>::type type;
23866: static constexpr intmax_t num = type::num;
23866: static constexpr intmax_t den = type::den;
23866: };
23866:
23866: template<typename _R1, typename _R2>
23866: constexpr intmax_t __ratio_add<_R1, _R2>::num;
23866:
23866: template<typename _R1, typename _R2>
23866: constexpr intmax_t __ratio_add<_R1, _R2>::den;
23866:
23866:
23866:
23866:
23866: template<typename _R1, typename _R2>
23866: using ratio_add = typename __ratio_add<_R1, _R2>::type;
23866:
23866:
23866:
23866: template<typename _R1, typename _R2>
23866: struct __ratio_subtract
23866: {
23866: typedef typename __ratio_add<
23866: _R1,
23866: ratio<-_R2::num, _R2::den>>::type type;
23866:
23866: static constexpr intmax_t num = type::num;
23866: static constexpr intmax_t den = type::den;
23866: };
23866:
23866: template<typename _R1, typename _R2>
23866: constexpr intmax_t __ratio_subtract<_R1, _R2>::num;
23866:
23866: template<typename _R1, typename _R2>
23866: constexpr intmax_t __ratio_subtract<_R1, _R2>::den;
23866:
23866:
23866:
23866:
23866: template<typename _R1, typename _R2>
23866: using ratio_subtract = typename __ratio_subtract<_R1, _R2>::type;
23866:
23866:
23866: typedef ratio<1, 1000000000000000000> atto;
23866: typedef ratio<1, 1000000000000000> femto;
23866: typedef ratio<1, 1000000000000> pico;
23866: typedef ratio<1, 1000000000> nano;
23866: typedef ratio<1, 1000000> micro;
23866: typedef ratio<1, 1000> milli;
23866: typedef ratio<1, 100> centi;
23866: typedef ratio<1, 10> deci;
23866: typedef ratio< 10, 1> deca;
23866: typedef ratio< 100, 1> hecto;
23866: typedef ratio< 1000, 1> kilo;
23866: typedef ratio< 1000000, 1> mega;
23866: typedef ratio< 1000000000, 1> giga;
23866: typedef ratio< 1000000000000, 1> tera;
23866: typedef ratio< 1000000000000000, 1> peta;
23866: typedef ratio< 1000000000000000000, 1> exa;
23866:
23866:
23866:
23866: }
23866: # 40 "/usr/include/c++/10/chrono" 2 3
23866:
23866:
23866: # 1 "/usr/include/c++/10/ctime" 1 3
23866: # 39 "/usr/include/c++/10/ctime" 3
23866:
23866: # 40 "/usr/include/c++/10/ctime" 3
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_CTIME 1
23866:
23866:
23866: #undef clock
23866: #undef difftime
23866: #undef mktime
23866: #undef time
23866: #undef asctime
23866: #undef ctime
23866: #undef gmtime
23866: #undef localtime
23866: #undef strftime
23866:
23866: namespace std
23866: {
23866: using ::clock_t;
23866: using ::time_t;
23866: using ::tm;
23866:
23866: using ::clock;
23866: using ::difftime;
23866: using ::mktime;
23866: using ::time;
23866: using ::asctime;
23866: using ::ctime;
23866: using ::gmtime;
23866: using ::localtime;
23866: using ::strftime;
23866: }
23866:
23866:
23866: #undef timespec_get
23866: namespace std
23866: {
23866: using ::timespec;
23866: using ::timespec_get;
23866: }
23866: # 43 "/usr/include/c++/10/chrono" 2 3
23866: # 1 "/usr/include/c++/10/bits/parse_numbers.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/parse_numbers.h" 3
23866: #define _GLIBCXX_PARSE_NUMBERS_H 1
23866:
23866:
23866: # 34 "/usr/include/c++/10/bits/parse_numbers.h" 3
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: namespace __parse_int
23866: {
23866: template<unsigned _Base, char _Dig>
23866: struct _Digit;
23866:
23866: template<unsigned _Base>
23866: struct _Digit<_Base, '0'> : integral_constant<unsigned, 0>
23866: {
23866: using __valid = true_type;
23866: };
23866:
23866: template<unsigned _Base>
23866: struct _Digit<_Base, '1'> : integral_constant<unsigned, 1>
23866: {
23866: using __valid = true_type;
23866: };
23866:
23866: template<unsigned _Base, unsigned _Val>
23866: struct _Digit_impl : integral_constant<unsigned, _Val>
23866: {
23866: static_assert(_Base > _Val, "invalid digit");
23866: using __valid = true_type;
23866: };
23866:
23866: template<unsigned _Base>
23866: struct _Digit<_Base, '2'> : _Digit_impl<_Base, 2>
23866: { };
23866:
23866: template<unsigned _Base>
23866: struct _Digit<_Base, '3'> : _Digit_impl<_Base, 3>
23866: { };
23866:
23866: template<unsigned _Base>
23866: struct _Digit<_Base, '4'> : _Digit_impl<_Base, 4>
23866: { };
23866:
23866: template<unsigned _Base>
23866: struct _Digit<_Base, '5'> : _Digit_impl<_Base, 5>
23866: { };
23866:
23866: template<unsigned _Base>
23866: struct _Digit<_Base, '6'> : _Digit_impl<_Base, 6>
23866: { };
23866:
23866: template<unsigned _Base>
23866: struct _Digit<_Base, '7'> : _Digit_impl<_Base, 7>
23866: { };
23866:
23866: template<unsigned _Base>
23866: struct _Digit<_Base, '8'> : _Digit_impl<_Base, 8>
23866: { };
23866:
23866: template<unsigned _Base>
23866: struct _Digit<_Base, '9'> : _Digit_impl<_Base, 9>
23866: { };
23866:
23866: template<unsigned _Base>
23866: struct _Digit<_Base, 'a'> : _Digit_impl<_Base, 0xa>
23866: { };
23866:
23866: template<unsigned _Base>
23866: struct _Digit<_Base, 'A'> : _Digit_impl<_Base, 0xa>
23866: { };
23866:
23866: template<unsigned _Base>
23866: struct _Digit<_Base, 'b'> : _Digit_impl<_Base, 0xb>
23866: { };
23866:
23866: template<unsigned _Base>
23866: struct _Digit<_Base, 'B'> : _Digit_impl<_Base, 0xb>
23866: { };
23866:
23866: template<unsigned _Base>
23866: struct _Digit<_Base, 'c'> : _Digit_impl<_Base, 0xc>
23866: { };
23866:
23866: template<unsigned _Base>
23866: struct _Digit<_Base, 'C'> : _Digit_impl<_Base, 0xc>
23866: { };
23866:
23866: template<unsigned _Base>
23866: struct _Digit<_Base, 'd'> : _Digit_impl<_Base, 0xd>
23866: { };
23866:
23866: template<unsigned _Base>
23866: struct _Digit<_Base, 'D'> : _Digit_impl<_Base, 0xd>
23866: { };
23866:
23866: template<unsigned _Base>
23866: struct _Digit<_Base, 'e'> : _Digit_impl<_Base, 0xe>
23866: { };
23866:
23866: template<unsigned _Base>
23866: struct _Digit<_Base, 'E'> : _Digit_impl<_Base, 0xe>
23866: { };
23866:
23866: template<unsigned _Base>
23866: struct _Digit<_Base, 'f'> : _Digit_impl<_Base, 0xf>
23866: { };
23866:
23866: template<unsigned _Base>
23866: struct _Digit<_Base, 'F'> : _Digit_impl<_Base, 0xf>
23866: { };
23866:
23866:
23866: template<unsigned _Base>
23866: struct _Digit<_Base, '\''> : integral_constant<unsigned, 0>
23866: {
23866: using __valid = false_type;
23866: };
23866:
23866:
23866:
23866: template<unsigned long long _Val>
23866: using __ull_constant = integral_constant<unsigned long long, _Val>;
23866:
23866: template<unsigned _Base, char _Dig, char... _Digs>
23866: struct _Power_help
23866: {
23866: using __next = typename _Power_help<_Base, _Digs...>::type;
23866: using __valid_digit = typename _Digit<_Base, _Dig>::__valid;
23866: using type
23866: = __ull_constant<__next::value * (__valid_digit{} ? _Base : 1ULL)>;
23866: };
23866:
23866: template<unsigned _Base, char _Dig>
23866: struct _Power_help<_Base, _Dig>
23866: {
23866: using __valid_digit = typename _Digit<_Base, _Dig>::__valid;
23866: using type = __ull_constant<__valid_digit::value>;
23866: };
23866:
23866: template<unsigned _Base, char... _Digs>
23866: struct _Power : _Power_help<_Base, _Digs...>::type
23866: { };
23866:
23866: template<unsigned _Base>
23866: struct _Power<_Base> : __ull_constant<0>
23866: { };
23866:
23866:
23866:
23866: template<unsigned _Base, unsigned long long _Pow, char _Dig, char... _Digs>
23866: struct _Number_help
23866: {
23866: using __digit = _Digit<_Base, _Dig>;
23866: using __valid_digit = typename __digit::__valid;
23866: using __next = _Number_help<_Base,
23866: __valid_digit::value ? _Pow / _Base : _Pow,
23866: _Digs...>;
23866: using type = __ull_constant<_Pow * __digit::value + __next::type::value>;
23866: static_assert((type::value / _Pow) == __digit::value,
23866: "integer literal does not fit in unsigned long long");
23866: };
23866:
23866:
23866: template<unsigned _Base, unsigned long long _Pow, char _Dig, char..._Digs>
23866: struct _Number_help<_Base, _Pow, '\'', _Dig, _Digs...>
23866: : _Number_help<_Base, _Pow, _Dig, _Digs...>
23866: { };
23866:
23866:
23866: template<unsigned _Base, char _Dig>
23866: struct _Number_help<_Base, 1ULL, _Dig>
23866: {
23866: using type = __ull_constant<_Digit<_Base, _Dig>::value>;
23866: };
23866:
23866: template<unsigned _Base, char... _Digs>
23866: struct _Number
23866: : _Number_help<_Base, _Power<_Base, _Digs...>::value, _Digs...>::type
23866: { };
23866:
23866: template<unsigned _Base>
23866: struct _Number<_Base>
23866: : __ull_constant<0>
23866: { };
23866:
23866:
23866:
23866: template<char... _Digs>
23866: struct _Parse_int;
23866:
23866: template<char... _Digs>
23866: struct _Parse_int<'0', 'b', _Digs...>
23866: : _Number<2U, _Digs...>::type
23866: { };
23866:
23866: template<char... _Digs>
23866: struct _Parse_int<'0', 'B', _Digs...>
23866: : _Number<2U, _Digs...>::type
23866: { };
23866:
23866: template<char... _Digs>
23866: struct _Parse_int<'0', 'x', _Digs...>
23866: : _Number<16U, _Digs...>::type
23866: { };
23866:
23866: template<char... _Digs>
23866: struct _Parse_int<'0', 'X', _Digs...>
23866: : _Number<16U, _Digs...>::type
23866: { };
23866:
23866: template<char... _Digs>
23866: struct _Parse_int<'0', _Digs...>
23866: : _Number<8U, _Digs...>::type
23866: { };
23866:
23866: template<char... _Digs>
23866: struct _Parse_int
23866: : _Number<10U, _Digs...>::type
23866: { };
23866:
23866: }
23866:
23866:
23866: namespace __select_int
23866: {
23866: template<unsigned long long _Val, typename... _Ints>
23866: struct _Select_int_base;
23866:
23866: template<unsigned long long _Val, typename _IntType, typename... _Ints>
23866: struct _Select_int_base<_Val, _IntType, _Ints...>
23866: : conditional_t<(_Val <= __gnu_cxx::__int_traits<_IntType>::__max),
23866: integral_constant<_IntType, _Val>,
23866: _Select_int_base<_Val, _Ints...>>
23866: { };
23866:
23866: template<unsigned long long _Val>
23866: struct _Select_int_base<_Val>
23866: { };
23866:
23866: template<char... _Digs>
23866: using _Select_int = typename _Select_int_base<
23866: __parse_int::_Parse_int<_Digs...>::value,
23866: unsigned char,
23866: unsigned short,
23866: unsigned int,
23866: unsigned long,
23866: unsigned long long
23866: >::type;
23866:
23866: }
23866:
23866:
23866: }
23866: # 44 "/usr/include/c++/10/chrono" 2 3
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: namespace filesystem { struct __file_clock; };
23866: # 68 "/usr/include/c++/10/chrono" 3
23866: namespace chrono
23866: {
23866: template<typename _Rep, typename _Period = ratio<1>>
23866: struct duration;
23866:
23866: template<typename _Clock, typename _Dur = typename _Clock::duration>
23866: struct time_point;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename _CT, typename _Period1, typename _Period2, typename = void>
23866: struct __duration_common_type
23866: { };
23866:
23866: template<typename _CT, typename _Period1, typename _Period2>
23866: struct __duration_common_type<_CT, _Period1, _Period2,
23866: __void_t<typename _CT::type>>
23866: {
23866: private:
23866: using __gcd_num = __static_gcd<_Period1::num, _Period2::num>;
23866: using __gcd_den = __static_gcd<_Period1::den, _Period2::den>;
23866: using __cr = typename _CT::type;
23866: using __r = ratio<__gcd_num::value,
23866: (_Period1::den / __gcd_den::value) * _Period2::den>;
23866:
23866: public:
23866: using type = chrono::duration<__cr, __r>;
23866: };
23866:
23866: template<typename _Period1, typename _Period2>
23866: struct __duration_common_type<__failure_type, _Period1, _Period2>
23866: { typedef __failure_type type; };
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Rep1, typename _Period1, typename _Rep2, typename _Period2>
23866: struct common_type<chrono::duration<_Rep1, _Period1>,
23866: chrono::duration<_Rep2, _Period2>>
23866: : __duration_common_type<common_type<_Rep1, _Rep2>, _Period1, _Period2>
23866: { };
23866:
23866:
23866:
23866:
23866:
23866: template<typename _CT, typename _Clock, typename = void>
23866: struct __timepoint_common_type
23866: { };
23866:
23866: template<typename _CT, typename _Clock>
23866: struct __timepoint_common_type<_CT, _Clock, __void_t<typename _CT::type>>
23866: {
23866: using type = chrono::time_point<_Clock, typename _CT::type>;
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Clock, typename _Duration1, typename _Duration2>
23866: struct common_type<chrono::time_point<_Clock, _Duration1>,
23866: chrono::time_point<_Clock, _Duration2>>
23866: : __timepoint_common_type<common_type<_Duration1, _Duration2>, _Clock>
23866: { };
23866:
23866:
23866:
23866: namespace chrono
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _ToDur, typename _CF, typename _CR,
23866: bool _NumIsOne = false, bool _DenIsOne = false>
23866: struct __duration_cast_impl
23866: {
23866: template<typename _Rep, typename _Period>
23866: static constexpr _ToDur
23866: __cast(const duration<_Rep, _Period>& __d)
23866: {
23866: typedef typename _ToDur::rep __to_rep;
23866: return _ToDur(static_cast<__to_rep>(static_cast<_CR>(__d.count())
23866: * static_cast<_CR>(_CF::num)
23866: / static_cast<_CR>(_CF::den)));
23866: }
23866: };
23866:
23866: template<typename _ToDur, typename _CF, typename _CR>
23866: struct __duration_cast_impl<_ToDur, _CF, _CR, true, true>
23866: {
23866: template<typename _Rep, typename _Period>
23866: static constexpr _ToDur
23866: __cast(const duration<_Rep, _Period>& __d)
23866: {
23866: typedef typename _ToDur::rep __to_rep;
23866: return _ToDur(static_cast<__to_rep>(__d.count()));
23866: }
23866: };
23866:
23866: template<typename _ToDur, typename _CF, typename _CR>
23866: struct __duration_cast_impl<_ToDur, _CF, _CR, true, false>
23866: {
23866: template<typename _Rep, typename _Period>
23866: static constexpr _ToDur
23866: __cast(const duration<_Rep, _Period>& __d)
23866: {
23866: typedef typename _ToDur::rep __to_rep;
23866: return _ToDur(static_cast<__to_rep>(
23866: static_cast<_CR>(__d.count()) / static_cast<_CR>(_CF::den)));
23866: }
23866: };
23866:
23866: template<typename _ToDur, typename _CF, typename _CR>
23866: struct __duration_cast_impl<_ToDur, _CF, _CR, false, true>
23866: {
23866: template<typename _Rep, typename _Period>
23866: static constexpr _ToDur
23866: __cast(const duration<_Rep, _Period>& __d)
23866: {
23866: typedef typename _ToDur::rep __to_rep;
23866: return _ToDur(static_cast<__to_rep>(
23866: static_cast<_CR>(__d.count()) * static_cast<_CR>(_CF::num)));
23866: }
23866: };
23866:
23866: template<typename _Tp>
23866: struct __is_duration
23866: : std::false_type
23866: { };
23866:
23866: template<typename _Rep, typename _Period>
23866: struct __is_duration<duration<_Rep, _Period>>
23866: : std::true_type
23866: { };
23866:
23866: template<typename _Tp>
23866: using __enable_if_is_duration
23866: = typename enable_if<__is_duration<_Tp>::value, _Tp>::type;
23866:
23866: template<typename _Tp>
23866: using __disable_if_is_duration
23866: = typename enable_if<!__is_duration<_Tp>::value, _Tp>::type;
23866:
23866:
23866:
23866:
23866: template<typename _ToDur, typename _Rep, typename _Period>
23866: constexpr __enable_if_is_duration<_ToDur>
23866: duration_cast(const duration<_Rep, _Period>& __d)
23866: {
23866: typedef typename _ToDur::period __to_period;
23866: typedef typename _ToDur::rep __to_rep;
23866: typedef ratio_divide<_Period, __to_period> __cf;
23866: typedef typename common_type<__to_rep, _Rep, intmax_t>::type
23866: __cr;
23866: typedef __duration_cast_impl<_ToDur, __cf, __cr,
23866: __cf::num == 1, __cf::den == 1> __dc;
23866: return __dc::__cast(__d);
23866: }
23866:
23866:
23866: template<typename _Rep>
23866: struct treat_as_floating_point
23866: : is_floating_point<_Rep>
23866: { };
23866:
23866:
23866: template <typename _Rep>
23866: inline constexpr bool treat_as_floating_point_v =
23866: treat_as_floating_point<_Rep>::value;
23866: # 303 "/usr/include/c++/10/chrono" 3
23866: #define __cpp_lib_chrono 201611
23866:
23866: template<typename _ToDur, typename _Rep, typename _Period>
23866: constexpr __enable_if_is_duration<_ToDur>
23866: floor(const duration<_Rep, _Period>& __d)
23866: {
23866: auto __to = chrono::duration_cast<_ToDur>(__d);
23866: if (__to > __d)
23866: return __to - _ToDur{1};
23866: return __to;
23866: }
23866:
23866: template<typename _ToDur, typename _Rep, typename _Period>
23866: constexpr __enable_if_is_duration<_ToDur>
23866: ceil(const duration<_Rep, _Period>& __d)
23866: {
23866: auto __to = chrono::duration_cast<_ToDur>(__d);
23866: if (__to < __d)
23866: return __to + _ToDur{1};
23866: return __to;
23866: }
23866:
23866: template <typename _ToDur, typename _Rep, typename _Period>
23866: constexpr enable_if_t<
23866: __and_<__is_duration<_ToDur>,
23866: __not_<treat_as_floating_point<typename _ToDur::rep>>>::value,
23866: _ToDur>
23866: round(const duration<_Rep, _Period>& __d)
23866: {
23866: _ToDur __t0 = chrono::floor<_ToDur>(__d);
23866: _ToDur __t1 = __t0 + _ToDur{1};
23866: auto __diff0 = __d - __t0;
23866: auto __diff1 = __t1 - __d;
23866: if (__diff0 == __diff1)
23866: {
23866: if (__t0.count() & 1)
23866: return __t1;
23866: return __t0;
23866: }
23866: else if (__diff0 < __diff1)
23866: return __t0;
23866: return __t1;
23866: }
23866:
23866: template<typename _Rep, typename _Period>
23866: constexpr
23866: enable_if_t<numeric_limits<_Rep>::is_signed, duration<_Rep, _Period>>
23866: abs(duration<_Rep, _Period> __d)
23866: {
23866: if (__d >= __d.zero())
23866: return __d;
23866: return -__d;
23866: }
23866:
23866:
23866:
23866: template<typename _Rep>
23866: struct duration_values
23866: {
23866: static constexpr _Rep
23866: zero() noexcept
23866: { return _Rep(0); }
23866:
23866: static constexpr _Rep
23866: max() noexcept
23866: { return numeric_limits<_Rep>::max(); }
23866:
23866: static constexpr _Rep
23866: min() noexcept
23866: { return numeric_limits<_Rep>::lowest(); }
23866: };
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct __is_ratio
23866: : std::false_type
23866: { };
23866:
23866: template<intmax_t _Num, intmax_t _Den>
23866: struct __is_ratio<ratio<_Num, _Den>>
23866: : std::true_type
23866: { };
23866:
23866:
23866:
23866:
23866: template<typename _Rep, typename _Period>
23866: struct duration
23866: {
23866: private:
23866: template<typename _Rep2>
23866: using __is_float = treat_as_floating_point<_Rep2>;
23866:
23866:
23866: template<typename _Period2>
23866: using __is_harmonic
23866: = __bool_constant<ratio_divide<_Period2, _Period>::den == 1>;
23866:
23866: public:
23866:
23866: typedef _Rep rep;
23866: typedef _Period period;
23866:
23866: static_assert(!__is_duration<_Rep>::value, "rep cannot be a duration");
23866: static_assert(__is_ratio<_Period>::value,
23866: "period must be a specialization of ratio");
23866: static_assert(_Period::num > 0, "period must be positive");
23866:
23866:
23866: constexpr duration() = default;
23866:
23866: duration(const duration&) = default;
23866:
23866:
23866:
23866: template<typename _Rep2, typename = _Require<
23866: is_convertible<const _Rep2&, rep>,
23866: __or_<__is_float<rep>, __not_<__is_float<_Rep2>>>>>
23866: constexpr explicit duration(const _Rep2& __rep)
23866: : __r(static_cast<rep>(__rep)) { }
23866:
23866: template<typename _Rep2, typename _Period2, typename = _Require<
23866: __or_<__is_float<rep>,
23866: __and_<__is_harmonic<_Period2>,
23866: __not_<__is_float<_Rep2>>>>>>
23866: constexpr duration(const duration<_Rep2, _Period2>& __d)
23866: : __r(duration_cast<duration>(__d).count()) { }
23866:
23866: ~duration() = default;
23866: duration& operator=(const duration&) = default;
23866:
23866:
23866: constexpr rep
23866: count() const
23866: { return __r; }
23866:
23866:
23866: constexpr duration
23866: operator+() const
23866: { return *this; }
23866:
23866: constexpr duration
23866: operator-() const
23866: { return duration(-__r); }
23866:
23866: constexpr duration&
23866: operator++()
23866: {
23866: ++__r;
23866: return *this;
23866: }
23866:
23866: constexpr duration
23866: operator++(int)
23866: { return duration(__r++); }
23866:
23866: constexpr duration&
23866: operator--()
23866: {
23866: --__r;
23866: return *this;
23866: }
23866:
23866: constexpr duration
23866: operator--(int)
23866: { return duration(__r--); }
23866:
23866: constexpr duration&
23866: operator+=(const duration& __d)
23866: {
23866: __r += __d.count();
23866: return *this;
23866: }
23866:
23866: constexpr duration&
23866: operator-=(const duration& __d)
23866: {
23866: __r -= __d.count();
23866: return *this;
23866: }
23866:
23866: constexpr duration&
23866: operator*=(const rep& __rhs)
23866: {
23866: __r *= __rhs;
23866: return *this;
23866: }
23866:
23866: constexpr duration&
23866: operator/=(const rep& __rhs)
23866: {
23866: __r /= __rhs;
23866: return *this;
23866: }
23866:
23866:
23866: template<typename _Rep2 = rep>
23866: constexpr
23866: typename enable_if<!treat_as_floating_point<_Rep2>::value,
23866: duration&>::type
23866: operator%=(const rep& __rhs)
23866: {
23866: __r %= __rhs;
23866: return *this;
23866: }
23866:
23866: template<typename _Rep2 = rep>
23866: constexpr
23866: typename enable_if<!treat_as_floating_point<_Rep2>::value,
23866: duration&>::type
23866: operator%=(const duration& __d)
23866: {
23866: __r %= __d.count();
23866: return *this;
23866: }
23866:
23866:
23866: static constexpr duration
23866: zero() noexcept
23866: { return duration(duration_values<rep>::zero()); }
23866:
23866: static constexpr duration
23866: min() noexcept
23866: { return duration(duration_values<rep>::min()); }
23866:
23866: static constexpr duration
23866: max() noexcept
23866: { return duration(duration_values<rep>::max()); }
23866:
23866: private:
23866: rep __r;
23866: };
23866:
23866:
23866:
23866:
23866: template<typename _Rep1, typename _Period1,
23866: typename _Rep2, typename _Period2>
23866: constexpr typename common_type<duration<_Rep1, _Period1>,
23866: duration<_Rep2, _Period2>>::type
23866: operator+(const duration<_Rep1, _Period1>& __lhs,
23866: const duration<_Rep2, _Period2>& __rhs)
23866: {
23866: typedef duration<_Rep1, _Period1> __dur1;
23866: typedef duration<_Rep2, _Period2> __dur2;
23866: typedef typename common_type<__dur1,__dur2>::type __cd;
23866: return __cd(__cd(__lhs).count() + __cd(__rhs).count());
23866: }
23866:
23866:
23866: template<typename _Rep1, typename _Period1,
23866: typename _Rep2, typename _Period2>
23866: constexpr typename common_type<duration<_Rep1, _Period1>,
23866: duration<_Rep2, _Period2>>::type
23866: operator-(const duration<_Rep1, _Period1>& __lhs,
23866: const duration<_Rep2, _Period2>& __rhs)
23866: {
23866: typedef duration<_Rep1, _Period1> __dur1;
23866: typedef duration<_Rep2, _Period2> __dur2;
23866: typedef typename common_type<__dur1,__dur2>::type __cd;
23866: return __cd(__cd(__lhs).count() - __cd(__rhs).count());
23866: }
23866: # 575 "/usr/include/c++/10/chrono" 3
23866: template<typename _Rep1, typename _Rep2,
23866: typename _CRep = typename common_type<_Rep1, _Rep2>::type>
23866: using __common_rep_t = typename
23866: enable_if<is_convertible<const _Rep2&, _CRep>::value, _CRep>::type;
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Rep1, typename _Period, typename _Rep2>
23866: constexpr duration<__common_rep_t<_Rep1, _Rep2>, _Period>
23866: operator*(const duration<_Rep1, _Period>& __d, const _Rep2& __s)
23866: {
23866: typedef duration<typename common_type<_Rep1, _Rep2>::type, _Period>
23866: __cd;
23866: return __cd(__cd(__d).count() * __s);
23866: }
23866:
23866:
23866: template<typename _Rep1, typename _Rep2, typename _Period>
23866: constexpr duration<__common_rep_t<_Rep2, _Rep1>, _Period>
23866: operator*(const _Rep1& __s, const duration<_Rep2, _Period>& __d)
23866: { return __d * __s; }
23866:
23866: template<typename _Rep1, typename _Period, typename _Rep2>
23866: constexpr
23866: duration<__common_rep_t<_Rep1, __disable_if_is_duration<_Rep2>>, _Period>
23866: operator/(const duration<_Rep1, _Period>& __d, const _Rep2& __s)
23866: {
23866: typedef duration<typename common_type<_Rep1, _Rep2>::type, _Period>
23866: __cd;
23866: return __cd(__cd(__d).count() / __s);
23866: }
23866:
23866: template<typename _Rep1, typename _Period1,
23866: typename _Rep2, typename _Period2>
23866: constexpr typename common_type<_Rep1, _Rep2>::type
23866: operator/(const duration<_Rep1, _Period1>& __lhs,
23866: const duration<_Rep2, _Period2>& __rhs)
23866: {
23866: typedef duration<_Rep1, _Period1> __dur1;
23866: typedef duration<_Rep2, _Period2> __dur2;
23866: typedef typename common_type<__dur1,__dur2>::type __cd;
23866: return __cd(__lhs).count() / __cd(__rhs).count();
23866: }
23866:
23866:
23866: template<typename _Rep1, typename _Period, typename _Rep2>
23866: constexpr
23866: duration<__common_rep_t<_Rep1, __disable_if_is_duration<_Rep2>>, _Period>
23866: operator%(const duration<_Rep1, _Period>& __d, const _Rep2& __s)
23866: {
23866: typedef duration<typename common_type<_Rep1, _Rep2>::type, _Period>
23866: __cd;
23866: return __cd(__cd(__d).count() % __s);
23866: }
23866:
23866: template<typename _Rep1, typename _Period1,
23866: typename _Rep2, typename _Period2>
23866: constexpr typename common_type<duration<_Rep1, _Period1>,
23866: duration<_Rep2, _Period2>>::type
23866: operator%(const duration<_Rep1, _Period1>& __lhs,
23866: const duration<_Rep2, _Period2>& __rhs)
23866: {
23866: typedef duration<_Rep1, _Period1> __dur1;
23866: typedef duration<_Rep2, _Period2> __dur2;
23866: typedef typename common_type<__dur1,__dur2>::type __cd;
23866: return __cd(__cd(__lhs).count() % __cd(__rhs).count());
23866: }
23866:
23866:
23866:
23866: template<typename _Rep1, typename _Period1,
23866: typename _Rep2, typename _Period2>
23866: constexpr bool
23866: operator==(const duration<_Rep1, _Period1>& __lhs,
23866: const duration<_Rep2, _Period2>& __rhs)
23866: {
23866: typedef duration<_Rep1, _Period1> __dur1;
23866: typedef duration<_Rep2, _Period2> __dur2;
23866: typedef typename common_type<__dur1,__dur2>::type __ct;
23866: return __ct(__lhs).count() == __ct(__rhs).count();
23866: }
23866:
23866: template<typename _Rep1, typename _Period1,
23866: typename _Rep2, typename _Period2>
23866: constexpr bool
23866: operator<(const duration<_Rep1, _Period1>& __lhs,
23866: const duration<_Rep2, _Period2>& __rhs)
23866: {
23866: typedef duration<_Rep1, _Period1> __dur1;
23866: typedef duration<_Rep2, _Period2> __dur2;
23866: typedef typename common_type<__dur1,__dur2>::type __ct;
23866: return __ct(__lhs).count() < __ct(__rhs).count();
23866: }
23866: # 685 "/usr/include/c++/10/chrono" 3
23866: template<typename _Rep1, typename _Period1,
23866: typename _Rep2, typename _Period2>
23866: constexpr bool
23866: operator!=(const duration<_Rep1, _Period1>& __lhs,
23866: const duration<_Rep2, _Period2>& __rhs)
23866: { return !(__lhs == __rhs); }
23866:
23866:
23866: template<typename _Rep1, typename _Period1,
23866: typename _Rep2, typename _Period2>
23866: constexpr bool
23866: operator<=(const duration<_Rep1, _Period1>& __lhs,
23866: const duration<_Rep2, _Period2>& __rhs)
23866: { return !(__rhs < __lhs); }
23866:
23866: template<typename _Rep1, typename _Period1,
23866: typename _Rep2, typename _Period2>
23866: constexpr bool
23866: operator>(const duration<_Rep1, _Period1>& __lhs,
23866: const duration<_Rep2, _Period2>& __rhs)
23866: { return __rhs < __lhs; }
23866:
23866: template<typename _Rep1, typename _Period1,
23866: typename _Rep2, typename _Period2>
23866: constexpr bool
23866: operator>=(const duration<_Rep1, _Period1>& __lhs,
23866: const duration<_Rep2, _Period2>& __rhs)
23866: { return !(__lhs < __rhs); }
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_CHRONO_INT64_T int64_t
23866: # 727 "/usr/include/c++/10/chrono" 3
23866: using nanoseconds = duration<int64_t, nano>;
23866:
23866:
23866: using microseconds = duration<int64_t, micro>;
23866:
23866:
23866: using milliseconds = duration<int64_t, milli>;
23866:
23866:
23866: using seconds = duration<int64_t>;
23866:
23866:
23866: using minutes = duration<int64_t, ratio< 60>>;
23866:
23866:
23866: using hours = duration<int64_t, ratio<3600>>;
23866: # 758 "/usr/include/c++/10/chrono" 3
23866: #undef _GLIBCXX_CHRONO_INT64_T
23866:
23866:
23866: template<typename _Clock, typename _Dur>
23866: struct time_point
23866: {
23866: static_assert(__is_duration<_Dur>::value,
23866: "duration must be a specialization of std::chrono::duration");
23866:
23866: typedef _Clock clock;
23866: typedef _Dur duration;
23866: typedef typename duration::rep rep;
23866: typedef typename duration::period period;
23866:
23866: constexpr time_point() : __d(duration::zero())
23866: { }
23866:
23866: constexpr explicit time_point(const duration& __dur)
23866: : __d(__dur)
23866: { }
23866:
23866:
23866: template<typename _Dur2,
23866: typename = _Require<is_convertible<_Dur2, _Dur>>>
23866: constexpr time_point(const time_point<clock, _Dur2>& __t)
23866: : __d(__t.time_since_epoch())
23866: { }
23866:
23866:
23866: constexpr duration
23866: time_since_epoch() const
23866: { return __d; }
23866:
23866:
23866: constexpr time_point&
23866: operator+=(const duration& __dur)
23866: {
23866: __d += __dur;
23866: return *this;
23866: }
23866:
23866: constexpr time_point&
23866: operator-=(const duration& __dur)
23866: {
23866: __d -= __dur;
23866: return *this;
23866: }
23866:
23866:
23866: static constexpr time_point
23866: min() noexcept
23866: { return time_point(duration::min()); }
23866:
23866: static constexpr time_point
23866: max() noexcept
23866: { return time_point(duration::max()); }
23866:
23866: private:
23866: duration __d;
23866: };
23866:
23866:
23866: template<typename _ToDur, typename _Clock, typename _Dur>
23866: constexpr typename enable_if<__is_duration<_ToDur>::value,
23866: time_point<_Clock, _ToDur>>::type
23866: time_point_cast(const time_point<_Clock, _Dur>& __t)
23866: {
23866: typedef time_point<_Clock, _ToDur> __time_point;
23866: return __time_point(duration_cast<_ToDur>(__t.time_since_epoch()));
23866: }
23866:
23866:
23866: template<typename _ToDur, typename _Clock, typename _Dur>
23866: constexpr
23866: enable_if_t<__is_duration<_ToDur>::value, time_point<_Clock, _ToDur>>
23866: floor(const time_point<_Clock, _Dur>& __tp)
23866: {
23866: return time_point<_Clock, _ToDur>{
23866: chrono::floor<_ToDur>(__tp.time_since_epoch())};
23866: }
23866:
23866: template<typename _ToDur, typename _Clock, typename _Dur>
23866: constexpr
23866: enable_if_t<__is_duration<_ToDur>::value, time_point<_Clock, _ToDur>>
23866: ceil(const time_point<_Clock, _Dur>& __tp)
23866: {
23866: return time_point<_Clock, _ToDur>{
23866: chrono::ceil<_ToDur>(__tp.time_since_epoch())};
23866: }
23866:
23866: template<typename _ToDur, typename _Clock, typename _Dur>
23866: constexpr enable_if_t<
23866: __and_<__is_duration<_ToDur>,
23866: __not_<treat_as_floating_point<typename _ToDur::rep>>>::value,
23866: time_point<_Clock, _ToDur>>
23866: round(const time_point<_Clock, _Dur>& __tp)
23866: {
23866: return time_point<_Clock, _ToDur>{
23866: chrono::round<_ToDur>(__tp.time_since_epoch())};
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Clock, typename _Dur1,
23866: typename _Rep2, typename _Period2>
23866: constexpr time_point<_Clock,
23866: typename common_type<_Dur1, duration<_Rep2, _Period2>>::type>
23866: operator+(const time_point<_Clock, _Dur1>& __lhs,
23866: const duration<_Rep2, _Period2>& __rhs)
23866: {
23866: typedef duration<_Rep2, _Period2> __dur2;
23866: typedef typename common_type<_Dur1,__dur2>::type __ct;
23866: typedef time_point<_Clock, __ct> __time_point;
23866: return __time_point(__lhs.time_since_epoch() + __rhs);
23866: }
23866:
23866:
23866: template<typename _Rep1, typename _Period1,
23866: typename _Clock, typename _Dur2>
23866: constexpr time_point<_Clock,
23866: typename common_type<duration<_Rep1, _Period1>, _Dur2>::type>
23866: operator+(const duration<_Rep1, _Period1>& __lhs,
23866: const time_point<_Clock, _Dur2>& __rhs)
23866: {
23866: typedef duration<_Rep1, _Period1> __dur1;
23866: typedef typename common_type<__dur1,_Dur2>::type __ct;
23866: typedef time_point<_Clock, __ct> __time_point;
23866: return __time_point(__rhs.time_since_epoch() + __lhs);
23866: }
23866:
23866:
23866: template<typename _Clock, typename _Dur1,
23866: typename _Rep2, typename _Period2>
23866: constexpr time_point<_Clock,
23866: typename common_type<_Dur1, duration<_Rep2, _Period2>>::type>
23866: operator-(const time_point<_Clock, _Dur1>& __lhs,
23866: const duration<_Rep2, _Period2>& __rhs)
23866: {
23866: typedef duration<_Rep2, _Period2> __dur2;
23866: typedef typename common_type<_Dur1,__dur2>::type __ct;
23866: typedef time_point<_Clock, __ct> __time_point;
23866: return __time_point(__lhs.time_since_epoch() -__rhs);
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Clock, typename _Dur1, typename _Dur2>
23866: constexpr typename common_type<_Dur1, _Dur2>::type
23866: operator-(const time_point<_Clock, _Dur1>& __lhs,
23866: const time_point<_Clock, _Dur2>& __rhs)
23866: { return __lhs.time_since_epoch() - __rhs.time_since_epoch(); }
23866:
23866: template<typename _Clock, typename _Dur1, typename _Dur2>
23866: constexpr bool
23866: operator==(const time_point<_Clock, _Dur1>& __lhs,
23866: const time_point<_Clock, _Dur2>& __rhs)
23866: { return __lhs.time_since_epoch() == __rhs.time_since_epoch(); }
23866: # 929 "/usr/include/c++/10/chrono" 3
23866: template<typename _Clock, typename _Dur1, typename _Dur2>
23866: constexpr bool
23866: operator!=(const time_point<_Clock, _Dur1>& __lhs,
23866: const time_point<_Clock, _Dur2>& __rhs)
23866: { return !(__lhs == __rhs); }
23866:
23866:
23866: template<typename _Clock, typename _Dur1, typename _Dur2>
23866: constexpr bool
23866: operator<(const time_point<_Clock, _Dur1>& __lhs,
23866: const time_point<_Clock, _Dur2>& __rhs)
23866: { return __lhs.time_since_epoch() < __rhs.time_since_epoch(); }
23866:
23866: template<typename _Clock, typename _Dur1, typename _Dur2>
23866: constexpr bool
23866: operator<=(const time_point<_Clock, _Dur1>& __lhs,
23866: const time_point<_Clock, _Dur2>& __rhs)
23866: { return !(__rhs < __lhs); }
23866:
23866: template<typename _Clock, typename _Dur1, typename _Dur2>
23866: constexpr bool
23866: operator>(const time_point<_Clock, _Dur1>& __lhs,
23866: const time_point<_Clock, _Dur2>& __rhs)
23866: { return __rhs < __lhs; }
23866:
23866: template<typename _Clock, typename _Dur1, typename _Dur2>
23866: constexpr bool
23866: operator>=(const time_point<_Clock, _Dur1>& __lhs,
23866: const time_point<_Clock, _Dur2>& __rhs)
23866: { return !(__lhs < __rhs); }
23866: # 980 "/usr/include/c++/10/chrono" 3
23866: inline namespace _V2 {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: struct system_clock
23866: {
23866: typedef chrono::nanoseconds duration;
23866: typedef duration::rep rep;
23866: typedef duration::period period;
23866: typedef chrono::time_point<system_clock, duration> time_point;
23866:
23866: static_assert(system_clock::duration::min()
23866: < system_clock::duration::zero(),
23866: "a clock's minimum duration cannot be less than its epoch");
23866:
23866: static constexpr bool is_steady = false;
23866:
23866: static time_point
23866: now() noexcept;
23866:
23866:
23866: static std::time_t
23866: to_time_t(const time_point& __t) noexcept
23866: {
23866: return std::time_t(duration_cast<chrono::seconds>
23866: (__t.time_since_epoch()).count());
23866: }
23866:
23866: static time_point
23866: from_time_t(std::time_t __t) noexcept
23866: {
23866: typedef chrono::time_point<system_clock, seconds> __from;
23866: return time_point_cast<system_clock::duration>
23866: (__from(chrono::seconds(__t)));
23866: }
23866: };
23866: # 1028 "/usr/include/c++/10/chrono" 3
23866: struct steady_clock
23866: {
23866: typedef chrono::nanoseconds duration;
23866: typedef duration::rep rep;
23866: typedef duration::period period;
23866: typedef chrono::time_point<steady_clock, duration> time_point;
23866:
23866: static constexpr bool is_steady = true;
23866:
23866: static time_point
23866: now() noexcept;
23866: };
23866: # 1050 "/usr/include/c++/10/chrono" 3
23866: using high_resolution_clock = system_clock;
23866:
23866: }
23866: # 1081 "/usr/include/c++/10/chrono" 3
23866: }
23866:
23866:
23866:
23866: #define __cpp_lib_chrono_udls 201304
23866:
23866: inline namespace literals
23866: {
23866: # 1112 "/usr/include/c++/10/chrono" 3
23866: inline namespace chrono_literals
23866: {
23866: #pragma GCC diagnostic push
23866: #pragma GCC diagnostic ignored "-Wliteral-suffix"
23866:
23866: template<typename _Dur, char... _Digits>
23866: constexpr _Dur __check_overflow()
23866: {
23866: using _Val = __parse_int::_Parse_int<_Digits...>;
23866: constexpr typename _Dur::rep __repval = _Val::value;
23866: static_assert(__repval >= 0 && __repval == _Val::value,
23866: "literal value cannot be represented by duration type");
23866: return _Dur(__repval);
23866: }
23866:
23866:
23866:
23866: constexpr chrono::duration<long double, ratio<3600,1>>
23866: operator""h(long double __hours)
23866: { return chrono::duration<long double, ratio<3600,1>>{__hours}; }
23866:
23866:
23866: template <char... _Digits>
23866: constexpr chrono::hours
23866: operator""h()
23866: { return __check_overflow<chrono::hours, _Digits...>(); }
23866:
23866:
23866: constexpr chrono::duration<long double, ratio<60,1>>
23866: operator""min(long double __mins)
23866: { return chrono::duration<long double, ratio<60,1>>{__mins}; }
23866:
23866:
23866: template <char... _Digits>
23866: constexpr chrono::minutes
23866: operator""min()
23866: { return __check_overflow<chrono::minutes, _Digits...>(); }
23866:
23866:
23866: constexpr chrono::duration<long double>
23866: operator""s(long double __secs)
23866: { return chrono::duration<long double>{__secs}; }
23866:
23866:
23866: template <char... _Digits>
23866: constexpr chrono::seconds
23866: operator""s()
23866: { return __check_overflow<chrono::seconds, _Digits...>(); }
23866:
23866:
23866: constexpr chrono::duration<long double, milli>
23866: operator""ms(long double __msecs)
23866: { return chrono::duration<long double, milli>{__msecs}; }
23866:
23866:
23866: template <char... _Digits>
23866: constexpr chrono::milliseconds
23866: operator""ms()
23866: { return __check_overflow<chrono::milliseconds, _Digits...>(); }
23866:
23866:
23866: constexpr chrono::duration<long double, micro>
23866: operator""us(long double __usecs)
23866: { return chrono::duration<long double, micro>{__usecs}; }
23866:
23866:
23866: template <char... _Digits>
23866: constexpr chrono::microseconds
23866: operator""us()
23866: { return __check_overflow<chrono::microseconds, _Digits...>(); }
23866:
23866:
23866: constexpr chrono::duration<long double, nano>
23866: operator""ns(long double __nsecs)
23866: { return chrono::duration<long double, nano>{__nsecs}; }
23866:
23866:
23866: template <char... _Digits>
23866: constexpr chrono::nanoseconds
23866: operator""ns()
23866: { return __check_overflow<chrono::nanoseconds, _Digits...>(); }
23866:
23866: #pragma GCC diagnostic pop
23866: }
23866: }
23866:
23866: namespace chrono
23866: {
23866: using namespace literals::chrono_literals;
23866: }
23866:
23866:
23866: namespace filesystem
23866: {
23866: struct __file_clock
23866: {
23866: using duration = chrono::nanoseconds;
23866: using rep = duration::rep;
23866: using period = duration::period;
23866: using time_point = chrono::time_point<__file_clock>;
23866: static constexpr bool is_steady = false;
23866:
23866: static time_point
23866: now() noexcept
23866: { return _S_from_sys(chrono::system_clock::now()); }
23866: # 1233 "/usr/include/c++/10/chrono" 3
23866: private:
23866: using __sys_clock = chrono::system_clock;
23866:
23866:
23866:
23866:
23866: static constexpr chrono::seconds _S_epoch_diff{6437664000};
23866:
23866: protected:
23866:
23866: template<typename _Dur>
23866: static
23866: chrono::time_point<__file_clock, _Dur>
23866: _S_from_sys(const chrono::time_point<__sys_clock, _Dur>& __t) noexcept
23866: {
23866: using __file_time = chrono::time_point<__file_clock, _Dur>;
23866: return __file_time{__t.time_since_epoch()} - _S_epoch_diff;
23866: }
23866:
23866:
23866: template<typename _Dur>
23866: static
23866: chrono::time_point<__sys_clock, _Dur>
23866: _S_to_sys(const chrono::time_point<__file_clock, _Dur>& __t) noexcept
23866: {
23866: using __sys_time = chrono::time_point<__sys_clock, _Dur>;
23866: return __sys_time{__t.time_since_epoch()} + _S_epoch_diff;
23866: }
23866: };
23866: }
23866:
23866:
23866:
23866:
23866: }
23866: # 38 "/usr/include/c++/10/bits/fs_fwd.h" 2 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace filesystem
23866: {
23866:
23866: inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { }
23866:
23866:
23866:
23866: class file_status;
23866: namespace __cxx11 {
23866: class path;
23866: class filesystem_error;
23866: class directory_entry;
23866: class directory_iterator;
23866: class recursive_directory_iterator;
23866: }
23866:
23866: struct space_info
23866: {
23866: uintmax_t capacity;
23866: uintmax_t free;
23866: uintmax_t available;
23866:
23866:
23866:
23866:
23866: };
23866:
23866: enum class file_type : signed char {
23866: none = 0, not_found = -1, regular = 1, directory = 2, symlink = 3,
23866: block = 4, character = 5, fifo = 6, socket = 7, unknown = 8
23866: };
23866:
23866:
23866: enum class copy_options : unsigned short {
23866: none = 0,
23866: skip_existing = 1, overwrite_existing = 2, update_existing = 4,
23866: recursive = 8,
23866: copy_symlinks = 16, skip_symlinks = 32,
23866: directories_only = 64, create_symlinks = 128, create_hard_links = 256
23866: };
23866:
23866: constexpr copy_options
23866: operator&(copy_options __x, copy_options __y) noexcept
23866: {
23866: using __utype = typename std::underlying_type<copy_options>::type;
23866: return static_cast<copy_options>(
23866: static_cast<__utype>(__x) & static_cast<__utype>(__y));
23866: }
23866:
23866: constexpr copy_options
23866: operator|(copy_options __x, copy_options __y) noexcept
23866: {
23866: using __utype = typename std::underlying_type<copy_options>::type;
23866: return static_cast<copy_options>(
23866: static_cast<__utype>(__x) | static_cast<__utype>(__y));
23866: }
23866:
23866: constexpr copy_options
23866: operator^(copy_options __x, copy_options __y) noexcept
23866: {
23866: using __utype = typename std::underlying_type<copy_options>::type;
23866: return static_cast<copy_options>(
23866: static_cast<__utype>(__x) ^ static_cast<__utype>(__y));
23866: }
23866:
23866: constexpr copy_options
23866: operator~(copy_options __x) noexcept
23866: {
23866: using __utype = typename std::underlying_type<copy_options>::type;
23866: return static_cast<copy_options>(~static_cast<__utype>(__x));
23866: }
23866:
23866: inline copy_options&
23866: operator&=(copy_options& __x, copy_options __y) noexcept
23866: { return __x = __x & __y; }
23866:
23866: inline copy_options&
23866: operator|=(copy_options& __x, copy_options __y) noexcept
23866: { return __x = __x | __y; }
23866:
23866: inline copy_options&
23866: operator^=(copy_options& __x, copy_options __y) noexcept
23866: { return __x = __x ^ __y; }
23866:
23866:
23866:
23866: enum class perms : unsigned {
23866: none = 0,
23866: owner_read = 0400,
23866: owner_write = 0200,
23866: owner_exec = 0100,
23866: owner_all = 0700,
23866: group_read = 040,
23866: group_write = 020,
23866: group_exec = 010,
23866: group_all = 070,
23866: others_read = 04,
23866: others_write = 02,
23866: others_exec = 01,
23866: others_all = 07,
23866: all = 0777,
23866: set_uid = 04000,
23866: set_gid = 02000,
23866: sticky_bit = 01000,
23866: mask = 07777,
23866: unknown = 0xFFFF,
23866: };
23866:
23866: constexpr perms
23866: operator&(perms __x, perms __y) noexcept
23866: {
23866: using __utype = typename std::underlying_type<perms>::type;
23866: return static_cast<perms>(
23866: static_cast<__utype>(__x) & static_cast<__utype>(__y));
23866: }
23866:
23866: constexpr perms
23866: operator|(perms __x, perms __y) noexcept
23866: {
23866: using __utype = typename std::underlying_type<perms>::type;
23866: return static_cast<perms>(
23866: static_cast<__utype>(__x) | static_cast<__utype>(__y));
23866: }
23866:
23866: constexpr perms
23866: operator^(perms __x, perms __y) noexcept
23866: {
23866: using __utype = typename std::underlying_type<perms>::type;
23866: return static_cast<perms>(
23866: static_cast<__utype>(__x) ^ static_cast<__utype>(__y));
23866: }
23866:
23866: constexpr perms
23866: operator~(perms __x) noexcept
23866: {
23866: using __utype = typename std::underlying_type<perms>::type;
23866: return static_cast<perms>(~static_cast<__utype>(__x));
23866: }
23866:
23866: inline perms&
23866: operator&=(perms& __x, perms __y) noexcept
23866: { return __x = __x & __y; }
23866:
23866: inline perms&
23866: operator|=(perms& __x, perms __y) noexcept
23866: { return __x = __x | __y; }
23866:
23866: inline perms&
23866: operator^=(perms& __x, perms __y) noexcept
23866: { return __x = __x ^ __y; }
23866:
23866:
23866: enum class perm_options : unsigned {
23866: replace = 0x1,
23866: add = 0x2,
23866: remove = 0x4,
23866: nofollow = 0x8
23866: };
23866:
23866: constexpr perm_options
23866: operator&(perm_options __x, perm_options __y) noexcept
23866: {
23866: using __utype = typename std::underlying_type<perm_options>::type;
23866: return static_cast<perm_options>(
23866: static_cast<__utype>(__x) & static_cast<__utype>(__y));
23866: }
23866:
23866: constexpr perm_options
23866: operator|(perm_options __x, perm_options __y) noexcept
23866: {
23866: using __utype = typename std::underlying_type<perm_options>::type;
23866: return static_cast<perm_options>(
23866: static_cast<__utype>(__x) | static_cast<__utype>(__y));
23866: }
23866:
23866: constexpr perm_options
23866: operator^(perm_options __x, perm_options __y) noexcept
23866: {
23866: using __utype = typename std::underlying_type<perm_options>::type;
23866: return static_cast<perm_options>(
23866: static_cast<__utype>(__x) ^ static_cast<__utype>(__y));
23866: }
23866:
23866: constexpr perm_options
23866: operator~(perm_options __x) noexcept
23866: {
23866: using __utype = typename std::underlying_type<perm_options>::type;
23866: return static_cast<perm_options>(~static_cast<__utype>(__x));
23866: }
23866:
23866: inline perm_options&
23866: operator&=(perm_options& __x, perm_options __y) noexcept
23866: { return __x = __x & __y; }
23866:
23866: inline perm_options&
23866: operator|=(perm_options& __x, perm_options __y) noexcept
23866: { return __x = __x | __y; }
23866:
23866: inline perm_options&
23866: operator^=(perm_options& __x, perm_options __y) noexcept
23866: { return __x = __x ^ __y; }
23866:
23866:
23866: enum class directory_options : unsigned char {
23866: none = 0, follow_directory_symlink = 1, skip_permission_denied = 2
23866: };
23866:
23866: constexpr directory_options
23866: operator&(directory_options __x, directory_options __y) noexcept
23866: {
23866: using __utype = typename std::underlying_type<directory_options>::type;
23866: return static_cast<directory_options>(
23866: static_cast<__utype>(__x) & static_cast<__utype>(__y));
23866: }
23866:
23866: constexpr directory_options
23866: operator|(directory_options __x, directory_options __y) noexcept
23866: {
23866: using __utype = typename std::underlying_type<directory_options>::type;
23866: return static_cast<directory_options>(
23866: static_cast<__utype>(__x) | static_cast<__utype>(__y));
23866: }
23866:
23866: constexpr directory_options
23866: operator^(directory_options __x, directory_options __y) noexcept
23866: {
23866: using __utype = typename std::underlying_type<directory_options>::type;
23866: return static_cast<directory_options>(
23866: static_cast<__utype>(__x) ^ static_cast<__utype>(__y));
23866: }
23866:
23866: constexpr directory_options
23866: operator~(directory_options __x) noexcept
23866: {
23866: using __utype = typename std::underlying_type<directory_options>::type;
23866: return static_cast<directory_options>(~static_cast<__utype>(__x));
23866: }
23866:
23866: inline directory_options&
23866: operator&=(directory_options& __x, directory_options __y) noexcept
23866: { return __x = __x & __y; }
23866:
23866: inline directory_options&
23866: operator|=(directory_options& __x, directory_options __y) noexcept
23866: { return __x = __x | __y; }
23866:
23866: inline directory_options&
23866: operator^=(directory_options& __x, directory_options __y) noexcept
23866: { return __x = __x ^ __y; }
23866:
23866: using file_time_type = __file_clock::time_point;
23866:
23866:
23866:
23866: void copy(const path& __from, const path& __to, copy_options __options);
23866: void copy(const path& __from, const path& __to, copy_options __options,
23866: error_code&);
23866:
23866: bool copy_file(const path& __from, const path& __to, copy_options __option);
23866: bool copy_file(const path& __from, const path& __to, copy_options __option,
23866: error_code&);
23866:
23866: path current_path();
23866:
23866: bool exists(file_status) noexcept;
23866:
23866: bool is_other(file_status) noexcept;
23866:
23866: uintmax_t file_size(const path&);
23866: uintmax_t file_size(const path&, error_code&) noexcept;
23866: uintmax_t hard_link_count(const path&);
23866: uintmax_t hard_link_count(const path&, error_code&) noexcept;
23866: file_time_type last_write_time(const path&);
23866: file_time_type last_write_time(const path&, error_code&) noexcept;
23866:
23866: void permissions(const path&, perms, perm_options, error_code&) noexcept;
23866:
23866: path proximate(const path& __p, const path& __base, error_code& __ec);
23866: path proximate(const path& __p, const path& __base, error_code& __ec);
23866:
23866: path relative(const path& __p, const path& __base, error_code& __ec);
23866:
23866: file_status status(const path&);
23866: file_status status(const path&, error_code&) noexcept;
23866:
23866: bool status_known(file_status) noexcept;
23866:
23866: file_status symlink_status(const path&);
23866: file_status symlink_status(const path&, error_code&) noexcept;
23866:
23866: bool is_regular_file(file_status) noexcept;
23866: bool is_symlink(file_status) noexcept;
23866:
23866: }
23866:
23866:
23866: }
23866: # 45 "/usr/include/c++/10/filesystem" 2 3
23866: # 1 "/usr/include/c++/10/bits/fs_path.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/fs_path.h" 3
23866: #define _GLIBCXX_FS_PATH_H 1
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/locale" 1 3
23866: # 34 "/usr/include/c++/10/locale" 3
23866: #define _GLIBCXX_LOCALE 1
23866:
23866:
23866: # 37 "/usr/include/c++/10/locale" 3
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/locale_classes.h" 1 3
23866: # 35 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: #define _LOCALE_CLASSES_H 1
23866:
23866:
23866: # 38 "/usr/include/c++/10/bits/locale_classes.h" 3
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 62 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: class locale
23866: {
23866: public:
23866:
23866:
23866: typedef int category;
23866:
23866:
23866: class facet;
23866: class id;
23866: class _Impl;
23866:
23866: friend class facet;
23866: friend class _Impl;
23866:
23866: template<typename _Facet>
23866: friend bool
23866: has_facet(const locale&) throw();
23866:
23866: template<typename _Facet>
23866: friend const _Facet&
23866: use_facet(const locale&);
23866:
23866: template<typename _Cache>
23866: friend struct __use_cache;
23866: # 98 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: static const category none = 0;
23866: static const category ctype = 1L << 0;
23866: static const category numeric = 1L << 1;
23866: static const category collate = 1L << 2;
23866: static const category time = 1L << 3;
23866: static const category monetary = 1L << 4;
23866: static const category messages = 1L << 5;
23866: static const category all = (ctype | numeric | collate |
23866: time | monetary | messages);
23866: # 117 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: locale() throw();
23866: # 126 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: locale(const locale& __other) throw();
23866: # 136 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: explicit
23866: locale(const char* __s);
23866: # 151 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: locale(const locale& __base, const char* __s, category __cat);
23866: # 162 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: explicit
23866: locale(const std::string& __s) : locale(__s.c_str()) { }
23866: # 177 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: locale(const locale& __base, const std::string& __s, category __cat)
23866: : locale(__base, __s.c_str(), __cat) { }
23866: # 192 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: locale(const locale& __base, const locale& __add, category __cat);
23866: # 205 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: template<typename _Facet>
23866: locale(const locale& __other, _Facet* __f);
23866:
23866:
23866: ~locale() throw();
23866: # 219 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: const locale&
23866: operator=(const locale& __other) throw();
23866: # 234 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: template<typename _Facet>
23866: locale
23866: combine(const locale& __other) const;
23866:
23866:
23866:
23866:
23866:
23866:
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: string
23866: name() const;
23866: # 254 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: bool
23866: operator==(const locale& __other) const throw();
23866: # 264 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: bool
23866: operator!=(const locale& __other) const throw()
23866: { return !(this->operator==(__other)); }
23866: # 284 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: template<typename _Char, typename _Traits, typename _Alloc>
23866: bool
23866: operator()(const basic_string<_Char, _Traits, _Alloc>& __s1,
23866: const basic_string<_Char, _Traits, _Alloc>& __s2) const;
23866: # 300 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: static locale
23866: global(const locale& __loc);
23866:
23866:
23866:
23866:
23866: static const locale&
23866: classic();
23866:
23866: private:
23866:
23866: _Impl* _M_impl;
23866:
23866:
23866: static _Impl* _S_classic;
23866:
23866:
23866: static _Impl* _S_global;
23866:
23866:
23866:
23866:
23866:
23866: static const char* const* const _S_categories;
23866: # 335 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: enum { _S_categories_size = 6 + 6 };
23866:
23866:
23866: static __gthread_once_t _S_once;
23866:
23866:
23866: explicit
23866: locale(_Impl*) throw();
23866:
23866: static void
23866: _S_initialize();
23866:
23866: static void
23866: _S_initialize_once() throw();
23866:
23866: static category
23866: _S_normalize_category(category);
23866:
23866: void
23866: _M_coalesce(const locale& __base, const locale& __add, category __cat);
23866:
23866:
23866: static const id* const _S_twinned_facets[];
23866:
23866: };
23866: # 373 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: class locale::facet
23866: {
23866: private:
23866: friend class locale;
23866: friend class locale::_Impl;
23866:
23866: mutable _Atomic_word _M_refcount;
23866:
23866:
23866: static __c_locale _S_c_locale;
23866:
23866:
23866: static const char _S_c_name[2];
23866:
23866:
23866: static __gthread_once_t _S_once;
23866:
23866:
23866: static void
23866: _S_initialize_once();
23866:
23866: protected:
23866: # 404 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: explicit
23866: facet(size_t __refs = 0) throw() : _M_refcount(__refs ? 1 : 0)
23866: { }
23866:
23866:
23866: virtual
23866: ~facet();
23866:
23866: static void
23866: _S_create_c_locale(__c_locale& __cloc, const char* __s,
23866: __c_locale __old = 0);
23866:
23866: static __c_locale
23866: _S_clone_c_locale(__c_locale& __cloc) throw();
23866:
23866: static void
23866: _S_destroy_c_locale(__c_locale& __cloc);
23866:
23866: static __c_locale
23866: _S_lc_ctype_c_locale(__c_locale __cloc, const char* __s);
23866:
23866:
23866:
23866: static __c_locale
23866: _S_get_c_locale();
23866:
23866: __attribute__ ((__const__)) static const char*
23866: _S_get_c_name() throw();
23866: # 440 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: facet(const facet&) = delete;
23866:
23866: facet&
23866: operator=(const facet&) = delete;
23866:
23866:
23866: private:
23866: void
23866: _M_add_reference() const throw()
23866: { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
23866:
23866: void
23866: _M_remove_reference() const throw()
23866: {
23866:
23866: ;
23866: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1)
23866: {
23866: ;
23866: try
23866: { delete this; }
23866: catch(...)
23866: { }
23866: }
23866: }
23866:
23866: const facet* _M_sso_shim(const id*) const;
23866: const facet* _M_cow_shim(const id*) const;
23866:
23866: protected:
23866: class __shim;
23866: };
23866: # 485 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: class locale::id
23866: {
23866: private:
23866: friend class locale;
23866: friend class locale::_Impl;
23866:
23866: template<typename _Facet>
23866: friend const _Facet&
23866: use_facet(const locale&);
23866:
23866: template<typename _Facet>
23866: friend bool
23866: has_facet(const locale&) throw();
23866:
23866:
23866:
23866:
23866: mutable size_t _M_index;
23866:
23866:
23866: static _Atomic_word _S_refcount;
23866:
23866: void
23866: operator=(const id&);
23866:
23866: id(const id&);
23866:
23866: public:
23866:
23866:
23866:
23866: id() { }
23866:
23866: size_t
23866: _M_id() const throw();
23866: };
23866:
23866:
23866:
23866: class locale::_Impl
23866: {
23866: public:
23866:
23866: friend class locale;
23866: friend class locale::facet;
23866:
23866: template<typename _Facet>
23866: friend bool
23866: has_facet(const locale&) throw();
23866:
23866: template<typename _Facet>
23866: friend const _Facet&
23866: use_facet(const locale&);
23866:
23866: template<typename _Cache>
23866: friend struct __use_cache;
23866:
23866: private:
23866:
23866: _Atomic_word _M_refcount;
23866: const facet** _M_facets;
23866: size_t _M_facets_size;
23866: const facet** _M_caches;
23866: char** _M_names;
23866: static const locale::id* const _S_id_ctype[];
23866: static const locale::id* const _S_id_numeric[];
23866: static const locale::id* const _S_id_collate[];
23866: static const locale::id* const _S_id_time[];
23866: static const locale::id* const _S_id_monetary[];
23866: static const locale::id* const _S_id_messages[];
23866: static const locale::id* const* const _S_facet_categories[];
23866:
23866: void
23866: _M_add_reference() throw()
23866: { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
23866:
23866: void
23866: _M_remove_reference() throw()
23866: {
23866:
23866: ;
23866: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1)
23866: {
23866: ;
23866: try
23866: { delete this; }
23866: catch(...)
23866: { }
23866: }
23866: }
23866:
23866: _Impl(const _Impl&, size_t);
23866: _Impl(const char*, size_t);
23866: _Impl(size_t) throw();
23866:
23866: ~_Impl() throw();
23866:
23866: _Impl(const _Impl&);
23866:
23866: void
23866: operator=(const _Impl&);
23866:
23866: bool
23866: _M_check_same_name()
23866: {
23866: bool __ret = true;
23866: if (_M_names[1])
23866:
23866: for (size_t __i = 0; __ret && __i < _S_categories_size - 1; ++__i)
23866: __ret = __builtin_strcmp(_M_names[__i], _M_names[__i + 1]) == 0;
23866: return __ret;
23866: }
23866:
23866: void
23866: _M_replace_categories(const _Impl*, category);
23866:
23866: void
23866: _M_replace_category(const _Impl*, const locale::id* const*);
23866:
23866: void
23866: _M_replace_facet(const _Impl*, const locale::id*);
23866:
23866: void
23866: _M_install_facet(const locale::id*, const facet*);
23866:
23866: template<typename _Facet>
23866: void
23866: _M_init_facet(_Facet* __facet)
23866: { _M_install_facet(&_Facet::id, __facet); }
23866:
23866: template<typename _Facet>
23866: void
23866: _M_init_facet_unchecked(_Facet* __facet)
23866: {
23866: __facet->_M_add_reference();
23866: _M_facets[_Facet::id._M_id()] = __facet;
23866: }
23866:
23866: void
23866: _M_install_cache(const facet*, size_t);
23866:
23866: void _M_init_extra(facet**);
23866: void _M_init_extra(void*, void*, const char*, const char*);
23866: };
23866: # 643 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: template<typename _CharT>
23866: class __cxx11:: collate : public locale::facet
23866: {
23866: public:
23866:
23866:
23866:
23866: typedef _CharT char_type;
23866: typedef basic_string<_CharT> string_type;
23866:
23866:
23866: protected:
23866:
23866:
23866: __c_locale _M_c_locale_collate;
23866:
23866: public:
23866:
23866: static locale::id id;
23866: # 670 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: explicit
23866: collate(size_t __refs = 0)
23866: : facet(__refs), _M_c_locale_collate(_S_get_c_locale())
23866: { }
23866: # 684 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: explicit
23866: collate(__c_locale __cloc, size_t __refs = 0)
23866: : facet(__refs), _M_c_locale_collate(_S_clone_c_locale(__cloc))
23866: { }
23866: # 701 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: int
23866: compare(const _CharT* __lo1, const _CharT* __hi1,
23866: const _CharT* __lo2, const _CharT* __hi2) const
23866: { return this->do_compare(__lo1, __hi1, __lo2, __hi2); }
23866: # 720 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: string_type
23866: transform(const _CharT* __lo, const _CharT* __hi) const
23866: { return this->do_transform(__lo, __hi); }
23866: # 734 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: long
23866: hash(const _CharT* __lo, const _CharT* __hi) const
23866: { return this->do_hash(__lo, __hi); }
23866:
23866:
23866: int
23866: _M_compare(const _CharT*, const _CharT*) const throw();
23866:
23866: size_t
23866: _M_transform(_CharT*, const _CharT*, size_t) const throw();
23866:
23866: protected:
23866:
23866: virtual
23866: ~collate()
23866: { _S_destroy_c_locale(_M_c_locale_collate); }
23866: # 763 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: virtual int
23866: do_compare(const _CharT* __lo1, const _CharT* __hi1,
23866: const _CharT* __lo2, const _CharT* __hi2) const;
23866: # 777 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: virtual string_type
23866: do_transform(const _CharT* __lo, const _CharT* __hi) const;
23866: # 790 "/usr/include/c++/10/bits/locale_classes.h" 3
23866: virtual long
23866: do_hash(const _CharT* __lo, const _CharT* __hi) const;
23866: };
23866:
23866: template<typename _CharT>
23866: locale::id collate<_CharT>::id;
23866:
23866:
23866: template<>
23866: int
23866: collate<char>::_M_compare(const char*, const char*) const throw();
23866:
23866: template<>
23866: size_t
23866: collate<char>::_M_transform(char*, const char*, size_t) const throw();
23866:
23866:
23866: template<>
23866: int
23866: collate<wchar_t>::_M_compare(const wchar_t*, const wchar_t*) const throw();
23866:
23866: template<>
23866: size_t
23866: collate<wchar_t>::_M_transform(wchar_t*, const wchar_t*, size_t) const throw();
23866:
23866:
23866:
23866: template<typename _CharT>
23866: class __cxx11:: collate_byname : public collate<_CharT>
23866: {
23866: public:
23866:
23866:
23866: typedef _CharT char_type;
23866: typedef basic_string<_CharT> string_type;
23866:
23866:
23866: explicit
23866: collate_byname(const char* __s, size_t __refs = 0)
23866: : collate<_CharT>(__refs)
23866: {
23866: if (__builtin_strcmp(__s, "C") != 0
23866: && __builtin_strcmp(__s, "POSIX") != 0)
23866: {
23866: this->_S_destroy_c_locale(this->_M_c_locale_collate);
23866: this->_S_create_c_locale(this->_M_c_locale_collate, __s);
23866: }
23866: }
23866:
23866:
23866: explicit
23866: collate_byname(const string& __s, size_t __refs = 0)
23866: : collate_byname(__s.c_str(), __refs) { }
23866:
23866:
23866: protected:
23866: virtual
23866: ~collate_byname() { }
23866: };
23866:
23866:
23866: }
23866:
23866: # 1 "/usr/include/c++/10/bits/locale_classes.tcc" 1 3
23866: # 35 "/usr/include/c++/10/bits/locale_classes.tcc" 3
23866: #define _LOCALE_CLASSES_TCC 1
23866:
23866:
23866: # 38 "/usr/include/c++/10/bits/locale_classes.tcc" 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: template<typename _Facet>
23866: locale::
23866: locale(const locale& __other, _Facet* __f)
23866: {
23866: _M_impl = new _Impl(*__other._M_impl, 1);
23866:
23866: try
23866: { _M_impl->_M_install_facet(&_Facet::id, __f); }
23866: catch(...)
23866: {
23866: _M_impl->_M_remove_reference();
23866: throw;
23866: }
23866: delete [] _M_impl->_M_names[0];
23866: _M_impl->_M_names[0] = 0;
23866: }
23866:
23866: template<typename _Facet>
23866: locale
23866: locale::
23866: combine(const locale& __other) const
23866: {
23866: _Impl* __tmp = new _Impl(*_M_impl, 1);
23866: try
23866: {
23866: __tmp->_M_replace_facet(__other._M_impl, &_Facet::id);
23866: }
23866: catch(...)
23866: {
23866: __tmp->_M_remove_reference();
23866: throw;
23866: }
23866: return locale(__tmp);
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: bool
23866: locale::
23866: operator()(const basic_string<_CharT, _Traits, _Alloc>& __s1,
23866: const basic_string<_CharT, _Traits, _Alloc>& __s2) const
23866: {
23866: typedef std::collate<_CharT> __collate_type;
23866: const __collate_type& __collate = use_facet<__collate_type>(*this);
23866: return (__collate.compare(__s1.data(), __s1.data() + __s1.length(),
23866: __s2.data(), __s2.data() + __s2.length()) < 0);
23866: }
23866: # 102 "/usr/include/c++/10/bits/locale_classes.tcc" 3
23866: template<typename _Facet>
23866: bool
23866: has_facet(const locale& __loc) throw()
23866: {
23866: const size_t __i = _Facet::id._M_id();
23866: const locale::facet** __facets = __loc._M_impl->_M_facets;
23866: return (__i < __loc._M_impl->_M_facets_size
23866:
23866: && dynamic_cast<const _Facet*>(__facets[__i]));
23866:
23866:
23866:
23866: }
23866: # 130 "/usr/include/c++/10/bits/locale_classes.tcc" 3
23866: template<typename _Facet>
23866: const _Facet&
23866: use_facet(const locale& __loc)
23866: {
23866: const size_t __i = _Facet::id._M_id();
23866: const locale::facet** __facets = __loc._M_impl->_M_facets;
23866: if (__i >= __loc._M_impl->_M_facets_size || !__facets[__i])
23866: __throw_bad_cast();
23866:
23866: return dynamic_cast<const _Facet&>(*__facets[__i]);
23866:
23866:
23866:
23866: }
23866:
23866:
23866:
23866: template<typename _CharT>
23866: int
23866: collate<_CharT>::_M_compare(const _CharT*, const _CharT*) const throw ()
23866: { return 0; }
23866:
23866:
23866: template<typename _CharT>
23866: size_t
23866: collate<_CharT>::_M_transform(_CharT*, const _CharT*, size_t) const throw ()
23866: { return 0; }
23866:
23866: template<typename _CharT>
23866: int
23866: collate<_CharT>::
23866: do_compare(const _CharT* __lo1, const _CharT* __hi1,
23866: const _CharT* __lo2, const _CharT* __hi2) const
23866: {
23866:
23866:
23866: const string_type __one(__lo1, __hi1);
23866: const string_type __two(__lo2, __hi2);
23866:
23866: const _CharT* __p = __one.c_str();
23866: const _CharT* __pend = __one.data() + __one.length();
23866: const _CharT* __q = __two.c_str();
23866: const _CharT* __qend = __two.data() + __two.length();
23866:
23866:
23866:
23866:
23866: for (;;)
23866: {
23866: const int __res = _M_compare(__p, __q);
23866: if (__res)
23866: return __res;
23866:
23866: __p += char_traits<_CharT>::length(__p);
23866: __q += char_traits<_CharT>::length(__q);
23866: if (__p == __pend && __q == __qend)
23866: return 0;
23866: else if (__p == __pend)
23866: return -1;
23866: else if (__q == __qend)
23866: return 1;
23866:
23866: __p++;
23866: __q++;
23866: }
23866: }
23866:
23866: template<typename _CharT>
23866: typename collate<_CharT>::string_type
23866: collate<_CharT>::
23866: do_transform(const _CharT* __lo, const _CharT* __hi) const
23866: {
23866: string_type __ret;
23866:
23866:
23866: const string_type __str(__lo, __hi);
23866:
23866: const _CharT* __p = __str.c_str();
23866: const _CharT* __pend = __str.data() + __str.length();
23866:
23866: size_t __len = (__hi - __lo) * 2;
23866:
23866: _CharT* __c = new _CharT[__len];
23866:
23866: try
23866: {
23866:
23866:
23866:
23866: for (;;)
23866: {
23866:
23866: size_t __res = _M_transform(__c, __p, __len);
23866:
23866:
23866: if (__res >= __len)
23866: {
23866: __len = __res + 1;
23866: delete [] __c, __c = 0;
23866: __c = new _CharT[__len];
23866: __res = _M_transform(__c, __p, __len);
23866: }
23866:
23866: __ret.append(__c, __res);
23866: __p += char_traits<_CharT>::length(__p);
23866: if (__p == __pend)
23866: break;
23866:
23866: __p++;
23866: __ret.push_back(_CharT());
23866: }
23866: }
23866: catch(...)
23866: {
23866: delete [] __c;
23866: throw;
23866: }
23866:
23866: delete [] __c;
23866:
23866: return __ret;
23866: }
23866:
23866: template<typename _CharT>
23866: long
23866: collate<_CharT>::
23866: do_hash(const _CharT* __lo, const _CharT* __hi) const
23866: {
23866: unsigned long __val = 0;
23866: for (; __lo < __hi; ++__lo)
23866: __val =
23866: *__lo + ((__val << 7)
23866: | (__val >> (__gnu_cxx::__numeric_traits<unsigned long>::
23866: __digits - 7)));
23866: return static_cast<long>(__val);
23866: }
23866:
23866:
23866:
23866:
23866: extern template class collate<char>;
23866: extern template class collate_byname<char>;
23866:
23866: extern template
23866: const collate<char>&
23866: use_facet<collate<char> >(const locale&);
23866:
23866: extern template
23866: bool
23866: has_facet<collate<char> >(const locale&);
23866:
23866:
23866: extern template class collate<wchar_t>;
23866: extern template class collate_byname<wchar_t>;
23866:
23866: extern template
23866: const collate<wchar_t>&
23866: use_facet<collate<wchar_t> >(const locale&);
23866:
23866: extern template
23866: bool
23866: has_facet<collate<wchar_t> >(const locale&);
23866:
23866:
23866:
23866:
23866: }
23866: # 854 "/usr/include/c++/10/bits/locale_classes.h" 2 3
23866: # 40 "/usr/include/c++/10/locale" 2 3
23866: # 1 "/usr/include/c++/10/bits/locale_facets.h" 1 3
23866: # 35 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: #define _LOCALE_FACETS_H 1
23866:
23866:
23866: # 38 "/usr/include/c++/10/bits/locale_facets.h" 3
23866:
23866: # 1 "/usr/include/c++/10/cwctype" 1 3
23866: # 39 "/usr/include/c++/10/cwctype" 3
23866:
23866: # 40 "/usr/include/c++/10/cwctype" 3
23866: # 50 "/usr/include/c++/10/cwctype" 3
23866: # 1 "/usr/include/wctype.h" 1 3 4
23866: # 24 "/usr/include/wctype.h" 3 4
23866: #define _WCTYPE_H 1
23866: # 38 "/usr/include/wctype.h" 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/wctype-wchar.h" 1 3 4
23866: # 24 "/usr/include/arm-linux-gnueabihf/bits/wctype-wchar.h" 3 4
23866: #define _BITS_WCTYPE_WCHAR_H 1
23866: # 38 "/usr/include/arm-linux-gnueabihf/bits/wctype-wchar.h" 3 4
23866: typedef unsigned long int wctype_t;
23866: # 49 "/usr/include/arm-linux-gnueabihf/bits/wctype-wchar.h" 3 4
23866: #define _ISwbit(bit) ((bit) < 8 ? (int) ((1UL << (bit)) << 24) : ((bit) < 16 ? (int) ((1UL << (bit)) << 8) : ((bit) < 24 ? (int) ((1UL << (bit)) >> 8) : (int) ((1UL << (bit)) >> 24))))
23866:
23866:
23866:
23866:
23866:
23866:
23866: enum
23866: {
23866: __ISwupper = 0,
23866: __ISwlower = 1,
23866: __ISwalpha = 2,
23866: __ISwdigit = 3,
23866: __ISwxdigit = 4,
23866: __ISwspace = 5,
23866: __ISwprint = 6,
23866: __ISwgraph = 7,
23866: __ISwblank = 8,
23866: __ISwcntrl = 9,
23866: __ISwpunct = 10,
23866: __ISwalnum = 11,
23866:
23866: _ISwupper = ((__ISwupper) < 8 ? (int) ((1UL << (__ISwupper)) << 24) : ((__ISwupper) < 16 ? (int) ((1UL << (__ISwupper)) << 8) : ((__ISwupper) < 24 ? (int) ((1UL << (__ISwupper)) >> 8) : (int) ((1UL << (__ISwupper)) >> 24)))),
23866: _ISwlower = ((__ISwlower) < 8 ? (int) ((1UL << (__ISwlower)) << 24) : ((__ISwlower) < 16 ? (int) ((1UL << (__ISwlower)) << 8) : ((__ISwlower) < 24 ? (int) ((1UL << (__ISwlower)) >> 8) : (int) ((1UL << (__ISwlower)) >> 24)))),
23866: _ISwalpha = ((__ISwalpha) < 8 ? (int) ((1UL << (__ISwalpha)) << 24) : ((__ISwalpha) < 16 ? (int) ((1UL << (__ISwalpha)) << 8) : ((__ISwalpha) < 24 ? (int) ((1UL << (__ISwalpha)) >> 8) : (int) ((1UL << (__ISwalpha)) >> 24)))),
23866: _ISwdigit = ((__ISwdigit) < 8 ? (int) ((1UL << (__ISwdigit)) << 24) : ((__ISwdigit) < 16 ? (int) ((1UL << (__ISwdigit)) << 8) : ((__ISwdigit) < 24 ? (int) ((1UL << (__ISwdigit)) >> 8) : (int) ((1UL << (__ISwdigit)) >> 24)))),
23866: _ISwxdigit = ((__ISwxdigit) < 8 ? (int) ((1UL << (__ISwxdigit)) << 24) : ((__ISwxdigit) < 16 ? (int) ((1UL << (__ISwxdigit)) << 8) : ((__ISwxdigit) < 24 ? (int) ((1UL << (__ISwxdigit)) >> 8) : (int) ((1UL << (__ISwxdigit)) >> 24)))),
23866: _ISwspace = ((__ISwspace) < 8 ? (int) ((1UL << (__ISwspace)) << 24) : ((__ISwspace) < 16 ? (int) ((1UL << (__ISwspace)) << 8) : ((__ISwspace) < 24 ? (int) ((1UL << (__ISwspace)) >> 8) : (int) ((1UL << (__ISwspace)) >> 24)))),
23866: _ISwprint = ((__ISwprint) < 8 ? (int) ((1UL << (__ISwprint)) << 24) : ((__ISwprint) < 16 ? (int) ((1UL << (__ISwprint)) << 8) : ((__ISwprint) < 24 ? (int) ((1UL << (__ISwprint)) >> 8) : (int) ((1UL << (__ISwprint)) >> 24)))),
23866: _ISwgraph = ((__ISwgraph) < 8 ? (int) ((1UL << (__ISwgraph)) << 24) : ((__ISwgraph) < 16 ? (int) ((1UL << (__ISwgraph)) << 8) : ((__ISwgraph) < 24 ? (int) ((1UL << (__ISwgraph)) >> 8) : (int) ((1UL << (__ISwgraph)) >> 24)))),
23866: _ISwblank = ((__ISwblank) < 8 ? (int) ((1UL << (__ISwblank)) << 24) : ((__ISwblank) < 16 ? (int) ((1UL << (__ISwblank)) << 8) : ((__ISwblank) < 24 ? (int) ((1UL << (__ISwblank)) >> 8) : (int) ((1UL << (__ISwblank)) >> 24)))),
23866: _ISwcntrl = ((__ISwcntrl) < 8 ? (int) ((1UL << (__ISwcntrl)) << 24) : ((__ISwcntrl) < 16 ? (int) ((1UL << (__ISwcntrl)) << 8) : ((__ISwcntrl) < 24 ? (int) ((1UL << (__ISwcntrl)) >> 8) : (int) ((1UL << (__ISwcntrl)) >> 24)))),
23866: _ISwpunct = ((__ISwpunct) < 8 ? (int) ((1UL << (__ISwpunct)) << 24) : ((__ISwpunct) < 16 ? (int) ((1UL << (__ISwpunct)) << 8) : ((__ISwpunct) < 24 ? (int) ((1UL << (__ISwpunct)) >> 8) : (int) ((1UL << (__ISwpunct)) >> 24)))),
23866: _ISwalnum = ((__ISwalnum) < 8 ? (int) ((1UL << (__ISwalnum)) << 24) : ((__ISwalnum) < 16 ? (int) ((1UL << (__ISwalnum)) << 8) : ((__ISwalnum) < 24 ? (int) ((1UL << (__ISwalnum)) >> 8) : (int) ((1UL << (__ISwalnum)) >> 24))))
23866: };
23866:
23866:
23866:
23866: extern "C" {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int iswalnum (wint_t __wc) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern int iswalpha (wint_t __wc) throw ();
23866:
23866:
23866: extern int iswcntrl (wint_t __wc) throw ();
23866:
23866:
23866:
23866: extern int iswdigit (wint_t __wc) throw ();
23866:
23866:
23866:
23866: extern int iswgraph (wint_t __wc) throw ();
23866:
23866:
23866:
23866:
23866: extern int iswlower (wint_t __wc) throw ();
23866:
23866:
23866: extern int iswprint (wint_t __wc) throw ();
23866:
23866:
23866:
23866:
23866: extern int iswpunct (wint_t __wc) throw ();
23866:
23866:
23866:
23866:
23866: extern int iswspace (wint_t __wc) throw ();
23866:
23866:
23866:
23866:
23866: extern int iswupper (wint_t __wc) throw ();
23866:
23866:
23866:
23866:
23866: extern int iswxdigit (wint_t __wc) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern int iswblank (wint_t __wc) throw ();
23866: # 155 "/usr/include/arm-linux-gnueabihf/bits/wctype-wchar.h" 3 4
23866: extern wctype_t wctype (const char *__property) throw ();
23866:
23866:
23866:
23866: extern int iswctype (wint_t __wc, wctype_t __desc) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern wint_t towlower (wint_t __wc) throw ();
23866:
23866:
23866: extern wint_t towupper (wint_t __wc) throw ();
23866:
23866: }
23866: # 39 "/usr/include/wctype.h" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: extern "C" {
23866:
23866:
23866:
23866: typedef const __int32_t *wctrans_t;
23866:
23866:
23866:
23866: extern wctrans_t wctrans (const char *__property) throw ();
23866:
23866:
23866: extern wint_t towctrans (wint_t __wc, wctrans_t __desc) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int iswalnum_l (wint_t __wc, locale_t __locale) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern int iswalpha_l (wint_t __wc, locale_t __locale) throw ();
23866:
23866:
23866: extern int iswcntrl_l (wint_t __wc, locale_t __locale) throw ();
23866:
23866:
23866:
23866: extern int iswdigit_l (wint_t __wc, locale_t __locale) throw ();
23866:
23866:
23866:
23866: extern int iswgraph_l (wint_t __wc, locale_t __locale) throw ();
23866:
23866:
23866:
23866:
23866: extern int iswlower_l (wint_t __wc, locale_t __locale) throw ();
23866:
23866:
23866: extern int iswprint_l (wint_t __wc, locale_t __locale) throw ();
23866:
23866:
23866:
23866:
23866: extern int iswpunct_l (wint_t __wc, locale_t __locale) throw ();
23866:
23866:
23866:
23866:
23866: extern int iswspace_l (wint_t __wc, locale_t __locale) throw ();
23866:
23866:
23866:
23866:
23866: extern int iswupper_l (wint_t __wc, locale_t __locale) throw ();
23866:
23866:
23866:
23866:
23866: extern int iswxdigit_l (wint_t __wc, locale_t __locale) throw ();
23866:
23866:
23866:
23866:
23866: extern int iswblank_l (wint_t __wc, locale_t __locale) throw ();
23866:
23866:
23866:
23866: extern wctype_t wctype_l (const char *__property, locale_t __locale)
23866: throw ();
23866:
23866:
23866:
23866: extern int iswctype_l (wint_t __wc, wctype_t __desc, locale_t __locale)
23866: throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern wint_t towlower_l (wint_t __wc, locale_t __locale) throw ();
23866:
23866:
23866: extern wint_t towupper_l (wint_t __wc, locale_t __locale) throw ();
23866:
23866:
23866:
23866: extern wctrans_t wctrans_l (const char *__property, locale_t __locale)
23866: throw ();
23866:
23866:
23866: extern wint_t towctrans_l (wint_t __wc, wctrans_t __desc,
23866: locale_t __locale) throw ();
23866:
23866:
23866:
23866: }
23866: # 51 "/usr/include/c++/10/cwctype" 2 3
23866:
23866:
23866:
23866: #define _GLIBCXX_CWCTYPE 1
23866:
23866:
23866: #undef iswalnum
23866: #undef iswalpha
23866:
23866: #undef iswblank
23866:
23866: #undef iswcntrl
23866: #undef iswctype
23866: #undef iswdigit
23866: #undef iswgraph
23866: #undef iswlower
23866: #undef iswprint
23866: #undef iswpunct
23866: #undef iswspace
23866: #undef iswupper
23866: #undef iswxdigit
23866: #undef towctrans
23866: #undef towlower
23866: #undef towupper
23866: #undef wctrans
23866: #undef wctype
23866:
23866:
23866:
23866: namespace std
23866: {
23866: using ::wctrans_t;
23866: using ::wctype_t;
23866: using ::wint_t;
23866:
23866: using ::iswalnum;
23866: using ::iswalpha;
23866:
23866: using ::iswblank;
23866:
23866: using ::iswcntrl;
23866: using ::iswctype;
23866: using ::iswdigit;
23866: using ::iswgraph;
23866: using ::iswlower;
23866: using ::iswprint;
23866: using ::iswpunct;
23866: using ::iswspace;
23866: using ::iswupper;
23866: using ::iswxdigit;
23866: using ::towctrans;
23866: using ::towlower;
23866: using ::towupper;
23866: using ::wctrans;
23866: using ::wctype;
23866: }
23866: # 40 "/usr/include/c++/10/bits/locale_facets.h" 2 3
23866: # 1 "/usr/include/c++/10/cctype" 1 3
23866: # 39 "/usr/include/c++/10/cctype" 3
23866:
23866: # 40 "/usr/include/c++/10/cctype" 3
23866: # 41 "/usr/include/c++/10/bits/locale_facets.h" 2 3
23866: # 1 "/usr/include/arm-linux-gnueabihf/c++/10/bits/ctype_base.h" 1 3
23866: # 36 "/usr/include/arm-linux-gnueabihf/c++/10/bits/ctype_base.h" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: struct ctype_base
23866: {
23866:
23866: typedef const int* __to_type;
23866:
23866:
23866:
23866: typedef unsigned short mask;
23866: static const mask upper = _ISupper;
23866: static const mask lower = _ISlower;
23866: static const mask alpha = _ISalpha;
23866: static const mask digit = _ISdigit;
23866: static const mask xdigit = _ISxdigit;
23866: static const mask space = _ISspace;
23866: static const mask print = _ISprint;
23866: static const mask graph = _ISalpha | _ISdigit | _ISpunct;
23866: static const mask cntrl = _IScntrl;
23866: static const mask punct = _ISpunct;
23866: static const mask alnum = _ISalpha | _ISdigit;
23866:
23866: static const mask blank = _ISblank;
23866:
23866: };
23866:
23866:
23866: }
23866: # 42 "/usr/include/c++/10/bits/locale_facets.h" 2 3
23866:
23866: # 1 "/usr/include/c++/10/bits/ios_base.h" 1 3
23866: # 35 "/usr/include/c++/10/bits/ios_base.h" 3
23866: #define _IOS_BASE_H 1
23866:
23866:
23866: # 38 "/usr/include/c++/10/bits/ios_base.h" 3
23866: # 49 "/usr/include/c++/10/bits/ios_base.h" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: enum _Ios_Fmtflags
23866: {
23866: _S_boolalpha = 1L << 0,
23866: _S_dec = 1L << 1,
23866: _S_fixed = 1L << 2,
23866: _S_hex = 1L << 3,
23866: _S_internal = 1L << 4,
23866: _S_left = 1L << 5,
23866: _S_oct = 1L << 6,
23866: _S_right = 1L << 7,
23866: _S_scientific = 1L << 8,
23866: _S_showbase = 1L << 9,
23866: _S_showpoint = 1L << 10,
23866: _S_showpos = 1L << 11,
23866: _S_skipws = 1L << 12,
23866: _S_unitbuf = 1L << 13,
23866: _S_uppercase = 1L << 14,
23866: _S_adjustfield = _S_left | _S_right | _S_internal,
23866: _S_basefield = _S_dec | _S_oct | _S_hex,
23866: _S_floatfield = _S_scientific | _S_fixed,
23866: _S_ios_fmtflags_end = 1L << 16,
23866: _S_ios_fmtflags_max = 0x7fffffff,
23866: _S_ios_fmtflags_min = ~0x7fffffff
23866: };
23866:
23866: inline constexpr _Ios_Fmtflags
23866: operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
23866: { return _Ios_Fmtflags(static_cast<int>(__a) & static_cast<int>(__b)); }
23866:
23866: inline constexpr _Ios_Fmtflags
23866: operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
23866: { return _Ios_Fmtflags(static_cast<int>(__a) | static_cast<int>(__b)); }
23866:
23866: inline constexpr _Ios_Fmtflags
23866: operator^(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
23866: { return _Ios_Fmtflags(static_cast<int>(__a) ^ static_cast<int>(__b)); }
23866:
23866: inline constexpr _Ios_Fmtflags
23866: operator~(_Ios_Fmtflags __a)
23866: { return _Ios_Fmtflags(~static_cast<int>(__a)); }
23866:
23866: inline const _Ios_Fmtflags&
23866: operator|=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)
23866: { return __a = __a | __b; }
23866:
23866: inline const _Ios_Fmtflags&
23866: operator&=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)
23866: { return __a = __a & __b; }
23866:
23866: inline const _Ios_Fmtflags&
23866: operator^=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)
23866: { return __a = __a ^ __b; }
23866:
23866:
23866: enum _Ios_Openmode
23866: {
23866: _S_app = 1L << 0,
23866: _S_ate = 1L << 1,
23866: _S_bin = 1L << 2,
23866: _S_in = 1L << 3,
23866: _S_out = 1L << 4,
23866: _S_trunc = 1L << 5,
23866: _S_ios_openmode_end = 1L << 16,
23866: _S_ios_openmode_max = 0x7fffffff,
23866: _S_ios_openmode_min = ~0x7fffffff
23866: };
23866:
23866: inline constexpr _Ios_Openmode
23866: operator&(_Ios_Openmode __a, _Ios_Openmode __b)
23866: { return _Ios_Openmode(static_cast<int>(__a) & static_cast<int>(__b)); }
23866:
23866: inline constexpr _Ios_Openmode
23866: operator|(_Ios_Openmode __a, _Ios_Openmode __b)
23866: { return _Ios_Openmode(static_cast<int>(__a) | static_cast<int>(__b)); }
23866:
23866: inline constexpr _Ios_Openmode
23866: operator^(_Ios_Openmode __a, _Ios_Openmode __b)
23866: { return _Ios_Openmode(static_cast<int>(__a) ^ static_cast<int>(__b)); }
23866:
23866: inline constexpr _Ios_Openmode
23866: operator~(_Ios_Openmode __a)
23866: { return _Ios_Openmode(~static_cast<int>(__a)); }
23866:
23866: inline const _Ios_Openmode&
23866: operator|=(_Ios_Openmode& __a, _Ios_Openmode __b)
23866: { return __a = __a | __b; }
23866:
23866: inline const _Ios_Openmode&
23866: operator&=(_Ios_Openmode& __a, _Ios_Openmode __b)
23866: { return __a = __a & __b; }
23866:
23866: inline const _Ios_Openmode&
23866: operator^=(_Ios_Openmode& __a, _Ios_Openmode __b)
23866: { return __a = __a ^ __b; }
23866:
23866:
23866: enum _Ios_Iostate
23866: {
23866: _S_goodbit = 0,
23866: _S_badbit = 1L << 0,
23866: _S_eofbit = 1L << 1,
23866: _S_failbit = 1L << 2,
23866: _S_ios_iostate_end = 1L << 16,
23866: _S_ios_iostate_max = 0x7fffffff,
23866: _S_ios_iostate_min = ~0x7fffffff
23866: };
23866:
23866: inline constexpr _Ios_Iostate
23866: operator&(_Ios_Iostate __a, _Ios_Iostate __b)
23866: { return _Ios_Iostate(static_cast<int>(__a) & static_cast<int>(__b)); }
23866:
23866: inline constexpr _Ios_Iostate
23866: operator|(_Ios_Iostate __a, _Ios_Iostate __b)
23866: { return _Ios_Iostate(static_cast<int>(__a) | static_cast<int>(__b)); }
23866:
23866: inline constexpr _Ios_Iostate
23866: operator^(_Ios_Iostate __a, _Ios_Iostate __b)
23866: { return _Ios_Iostate(static_cast<int>(__a) ^ static_cast<int>(__b)); }
23866:
23866: inline constexpr _Ios_Iostate
23866: operator~(_Ios_Iostate __a)
23866: { return _Ios_Iostate(~static_cast<int>(__a)); }
23866:
23866: inline const _Ios_Iostate&
23866: operator|=(_Ios_Iostate& __a, _Ios_Iostate __b)
23866: { return __a = __a | __b; }
23866:
23866: inline const _Ios_Iostate&
23866: operator&=(_Ios_Iostate& __a, _Ios_Iostate __b)
23866: { return __a = __a & __b; }
23866:
23866: inline const _Ios_Iostate&
23866: operator^=(_Ios_Iostate& __a, _Ios_Iostate __b)
23866: { return __a = __a ^ __b; }
23866:
23866:
23866: enum _Ios_Seekdir
23866: {
23866: _S_beg = 0,
23866: _S_cur = 1,
23866: _S_end = 2,
23866: _S_ios_seekdir_end = 1L << 16
23866: };
23866:
23866:
23866:
23866: enum class io_errc { stream = 1 };
23866:
23866: template <> struct is_error_code_enum<io_errc> : public true_type { };
23866:
23866: const error_category& iostream_category() noexcept;
23866:
23866: inline error_code
23866: make_error_code(io_errc __e) noexcept
23866: { return error_code(static_cast<int>(__e), iostream_category()); }
23866:
23866: inline error_condition
23866: make_error_condition(io_errc __e) noexcept
23866: { return error_condition(static_cast<int>(__e), iostream_category()); }
23866: # 228 "/usr/include/c++/10/bits/ios_base.h" 3
23866: class ios_base
23866: {
23866: # 246 "/usr/include/c++/10/bits/ios_base.h" 3
23866: public:
23866: # 255 "/usr/include/c++/10/bits/ios_base.h" 3
23866: class __attribute ((__abi_tag__ ("cxx11"))) failure : public system_error
23866: {
23866: public:
23866: explicit
23866: failure(const string& __str);
23866:
23866:
23866: explicit
23866: failure(const string&, const error_code&);
23866:
23866: explicit
23866: failure(const char*, const error_code& = io_errc::stream);
23866:
23866:
23866: virtual
23866: ~failure() throw();
23866:
23866: virtual const char*
23866: what() const throw();
23866: };
23866: # 341 "/usr/include/c++/10/bits/ios_base.h" 3
23866: typedef _Ios_Fmtflags fmtflags;
23866:
23866:
23866: static const fmtflags boolalpha = _S_boolalpha;
23866:
23866:
23866: static const fmtflags dec = _S_dec;
23866:
23866:
23866: static const fmtflags fixed = _S_fixed;
23866:
23866:
23866: static const fmtflags hex = _S_hex;
23866:
23866:
23866:
23866:
23866: static const fmtflags internal = _S_internal;
23866:
23866:
23866:
23866: static const fmtflags left = _S_left;
23866:
23866:
23866: static const fmtflags oct = _S_oct;
23866:
23866:
23866:
23866: static const fmtflags right = _S_right;
23866:
23866:
23866: static const fmtflags scientific = _S_scientific;
23866:
23866:
23866:
23866: static const fmtflags showbase = _S_showbase;
23866:
23866:
23866:
23866: static const fmtflags showpoint = _S_showpoint;
23866:
23866:
23866: static const fmtflags showpos = _S_showpos;
23866:
23866:
23866: static const fmtflags skipws = _S_skipws;
23866:
23866:
23866: static const fmtflags unitbuf = _S_unitbuf;
23866:
23866:
23866:
23866: static const fmtflags uppercase = _S_uppercase;
23866:
23866:
23866: static const fmtflags adjustfield = _S_adjustfield;
23866:
23866:
23866: static const fmtflags basefield = _S_basefield;
23866:
23866:
23866: static const fmtflags floatfield = _S_floatfield;
23866: # 416 "/usr/include/c++/10/bits/ios_base.h" 3
23866: typedef _Ios_Iostate iostate;
23866:
23866:
23866:
23866: static const iostate badbit = _S_badbit;
23866:
23866:
23866: static const iostate eofbit = _S_eofbit;
23866:
23866:
23866:
23866:
23866: static const iostate failbit = _S_failbit;
23866:
23866:
23866: static const iostate goodbit = _S_goodbit;
23866: # 447 "/usr/include/c++/10/bits/ios_base.h" 3
23866: typedef _Ios_Openmode openmode;
23866:
23866:
23866: static const openmode app = _S_app;
23866:
23866:
23866: static const openmode ate = _S_ate;
23866:
23866:
23866:
23866:
23866: static const openmode binary = _S_bin;
23866:
23866:
23866: static const openmode in = _S_in;
23866:
23866:
23866: static const openmode out = _S_out;
23866:
23866:
23866: static const openmode trunc = _S_trunc;
23866: # 479 "/usr/include/c++/10/bits/ios_base.h" 3
23866: typedef _Ios_Seekdir seekdir;
23866:
23866:
23866: static const seekdir beg = _S_beg;
23866:
23866:
23866: static const seekdir cur = _S_cur;
23866:
23866:
23866: static const seekdir end = _S_end;
23866: # 512 "/usr/include/c++/10/bits/ios_base.h" 3
23866: enum event
23866: {
23866: erase_event,
23866: imbue_event,
23866: copyfmt_event
23866: };
23866: # 529 "/usr/include/c++/10/bits/ios_base.h" 3
23866: typedef void (*event_callback) (event __e, ios_base& __b, int __i);
23866: # 541 "/usr/include/c++/10/bits/ios_base.h" 3
23866: void
23866: register_callback(event_callback __fn, int __index);
23866:
23866: protected:
23866: streamsize _M_precision;
23866: streamsize _M_width;
23866: fmtflags _M_flags;
23866: iostate _M_exception;
23866: iostate _M_streambuf_state;
23866:
23866:
23866:
23866: struct _Callback_list
23866: {
23866:
23866: _Callback_list* _M_next;
23866: ios_base::event_callback _M_fn;
23866: int _M_index;
23866: _Atomic_word _M_refcount;
23866:
23866: _Callback_list(ios_base::event_callback __fn, int __index,
23866: _Callback_list* __cb)
23866: : _M_next(__cb), _M_fn(__fn), _M_index(__index), _M_refcount(0) { }
23866:
23866: void
23866: _M_add_reference() { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
23866:
23866:
23866: int
23866: _M_remove_reference()
23866: {
23866:
23866: ;
23866: int __res = __gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1);
23866: if (__res == 0)
23866: {
23866: ;
23866: }
23866: return __res;
23866: }
23866: };
23866:
23866: _Callback_list* _M_callbacks;
23866:
23866: void
23866: _M_call_callbacks(event __ev) throw();
23866:
23866: void
23866: _M_dispose_callbacks(void) throw();
23866:
23866:
23866: struct _Words
23866: {
23866: void* _M_pword;
23866: long _M_iword;
23866: _Words() : _M_pword(0), _M_iword(0) { }
23866: };
23866:
23866:
23866: _Words _M_word_zero;
23866:
23866:
23866:
23866: enum { _S_local_word_size = 8 };
23866: _Words _M_local_word[_S_local_word_size];
23866:
23866:
23866: int _M_word_size;
23866: _Words* _M_word;
23866:
23866: _Words&
23866: _M_grow_words(int __index, bool __iword);
23866:
23866:
23866: locale _M_ios_locale;
23866:
23866: void
23866: _M_init() throw();
23866:
23866: public:
23866:
23866:
23866:
23866:
23866:
23866: class Init
23866: {
23866: friend class ios_base;
23866: public:
23866: Init();
23866: ~Init();
23866:
23866:
23866: Init(const Init&) = default;
23866: Init& operator=(const Init&) = default;
23866:
23866:
23866: private:
23866: static _Atomic_word _S_refcount;
23866: static bool _S_synced_with_stdio;
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: fmtflags
23866: flags() const
23866: { return _M_flags; }
23866: # 659 "/usr/include/c++/10/bits/ios_base.h" 3
23866: fmtflags
23866: flags(fmtflags __fmtfl)
23866: {
23866: fmtflags __old = _M_flags;
23866: _M_flags = __fmtfl;
23866: return __old;
23866: }
23866: # 675 "/usr/include/c++/10/bits/ios_base.h" 3
23866: fmtflags
23866: setf(fmtflags __fmtfl)
23866: {
23866: fmtflags __old = _M_flags;
23866: _M_flags |= __fmtfl;
23866: return __old;
23866: }
23866: # 692 "/usr/include/c++/10/bits/ios_base.h" 3
23866: fmtflags
23866: setf(fmtflags __fmtfl, fmtflags __mask)
23866: {
23866: fmtflags __old = _M_flags;
23866: _M_flags &= ~__mask;
23866: _M_flags |= (__fmtfl & __mask);
23866: return __old;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: void
23866: unsetf(fmtflags __mask)
23866: { _M_flags &= ~__mask; }
23866: # 718 "/usr/include/c++/10/bits/ios_base.h" 3
23866: streamsize
23866: precision() const
23866: { return _M_precision; }
23866:
23866:
23866:
23866:
23866:
23866:
23866: streamsize
23866: precision(streamsize __prec)
23866: {
23866: streamsize __old = _M_precision;
23866: _M_precision = __prec;
23866: return __old;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: streamsize
23866: width() const
23866: { return _M_width; }
23866:
23866:
23866:
23866:
23866:
23866:
23866: streamsize
23866: width(streamsize __wide)
23866: {
23866: streamsize __old = _M_width;
23866: _M_width = __wide;
23866: return __old;
23866: }
23866: # 769 "/usr/include/c++/10/bits/ios_base.h" 3
23866: static bool
23866: sync_with_stdio(bool __sync = true);
23866: # 781 "/usr/include/c++/10/bits/ios_base.h" 3
23866: locale
23866: imbue(const locale& __loc) throw();
23866: # 792 "/usr/include/c++/10/bits/ios_base.h" 3
23866: locale
23866: getloc() const
23866: { return _M_ios_locale; }
23866: # 803 "/usr/include/c++/10/bits/ios_base.h" 3
23866: const locale&
23866: _M_getloc() const
23866: { return _M_ios_locale; }
23866: # 822 "/usr/include/c++/10/bits/ios_base.h" 3
23866: static int
23866: xalloc() throw();
23866: # 838 "/usr/include/c++/10/bits/ios_base.h" 3
23866: long&
23866: iword(int __ix)
23866: {
23866: _Words& __word = ((unsigned)__ix < (unsigned)_M_word_size)
23866: ? _M_word[__ix] : _M_grow_words(__ix, true);
23866: return __word._M_iword;
23866: }
23866: # 859 "/usr/include/c++/10/bits/ios_base.h" 3
23866: void*&
23866: pword(int __ix)
23866: {
23866: _Words& __word = ((unsigned)__ix < (unsigned)_M_word_size)
23866: ? _M_word[__ix] : _M_grow_words(__ix, false);
23866: return __word._M_pword;
23866: }
23866: # 876 "/usr/include/c++/10/bits/ios_base.h" 3
23866: virtual ~ios_base();
23866:
23866: protected:
23866: ios_base() throw ();
23866: # 890 "/usr/include/c++/10/bits/ios_base.h" 3
23866: public:
23866: ios_base(const ios_base&) = delete;
23866:
23866: ios_base&
23866: operator=(const ios_base&) = delete;
23866:
23866: protected:
23866: void
23866: _M_move(ios_base&) noexcept;
23866:
23866: void
23866: _M_swap(ios_base& __rhs) noexcept;
23866:
23866: };
23866:
23866:
23866:
23866: inline ios_base&
23866: boolalpha(ios_base& __base)
23866: {
23866: __base.setf(ios_base::boolalpha);
23866: return __base;
23866: }
23866:
23866:
23866: inline ios_base&
23866: noboolalpha(ios_base& __base)
23866: {
23866: __base.unsetf(ios_base::boolalpha);
23866: return __base;
23866: }
23866:
23866:
23866: inline ios_base&
23866: showbase(ios_base& __base)
23866: {
23866: __base.setf(ios_base::showbase);
23866: return __base;
23866: }
23866:
23866:
23866: inline ios_base&
23866: noshowbase(ios_base& __base)
23866: {
23866: __base.unsetf(ios_base::showbase);
23866: return __base;
23866: }
23866:
23866:
23866: inline ios_base&
23866: showpoint(ios_base& __base)
23866: {
23866: __base.setf(ios_base::showpoint);
23866: return __base;
23866: }
23866:
23866:
23866: inline ios_base&
23866: noshowpoint(ios_base& __base)
23866: {
23866: __base.unsetf(ios_base::showpoint);
23866: return __base;
23866: }
23866:
23866:
23866: inline ios_base&
23866: showpos(ios_base& __base)
23866: {
23866: __base.setf(ios_base::showpos);
23866: return __base;
23866: }
23866:
23866:
23866: inline ios_base&
23866: noshowpos(ios_base& __base)
23866: {
23866: __base.unsetf(ios_base::showpos);
23866: return __base;
23866: }
23866:
23866:
23866: inline ios_base&
23866: skipws(ios_base& __base)
23866: {
23866: __base.setf(ios_base::skipws);
23866: return __base;
23866: }
23866:
23866:
23866: inline ios_base&
23866: noskipws(ios_base& __base)
23866: {
23866: __base.unsetf(ios_base::skipws);
23866: return __base;
23866: }
23866:
23866:
23866: inline ios_base&
23866: uppercase(ios_base& __base)
23866: {
23866: __base.setf(ios_base::uppercase);
23866: return __base;
23866: }
23866:
23866:
23866: inline ios_base&
23866: nouppercase(ios_base& __base)
23866: {
23866: __base.unsetf(ios_base::uppercase);
23866: return __base;
23866: }
23866:
23866:
23866: inline ios_base&
23866: unitbuf(ios_base& __base)
23866: {
23866: __base.setf(ios_base::unitbuf);
23866: return __base;
23866: }
23866:
23866:
23866: inline ios_base&
23866: nounitbuf(ios_base& __base)
23866: {
23866: __base.unsetf(ios_base::unitbuf);
23866: return __base;
23866: }
23866:
23866:
23866:
23866: inline ios_base&
23866: internal(ios_base& __base)
23866: {
23866: __base.setf(ios_base::internal, ios_base::adjustfield);
23866: return __base;
23866: }
23866:
23866:
23866: inline ios_base&
23866: left(ios_base& __base)
23866: {
23866: __base.setf(ios_base::left, ios_base::adjustfield);
23866: return __base;
23866: }
23866:
23866:
23866: inline ios_base&
23866: right(ios_base& __base)
23866: {
23866: __base.setf(ios_base::right, ios_base::adjustfield);
23866: return __base;
23866: }
23866:
23866:
23866:
23866: inline ios_base&
23866: dec(ios_base& __base)
23866: {
23866: __base.setf(ios_base::dec, ios_base::basefield);
23866: return __base;
23866: }
23866:
23866:
23866: inline ios_base&
23866: hex(ios_base& __base)
23866: {
23866: __base.setf(ios_base::hex, ios_base::basefield);
23866: return __base;
23866: }
23866:
23866:
23866: inline ios_base&
23866: oct(ios_base& __base)
23866: {
23866: __base.setf(ios_base::oct, ios_base::basefield);
23866: return __base;
23866: }
23866:
23866:
23866:
23866: inline ios_base&
23866: fixed(ios_base& __base)
23866: {
23866: __base.setf(ios_base::fixed, ios_base::floatfield);
23866: return __base;
23866: }
23866:
23866:
23866: inline ios_base&
23866: scientific(ios_base& __base)
23866: {
23866: __base.setf(ios_base::scientific, ios_base::floatfield);
23866: return __base;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline ios_base&
23866: hexfloat(ios_base& __base)
23866: {
23866: __base.setf(ios_base::fixed | ios_base::scientific, ios_base::floatfield);
23866: return __base;
23866: }
23866:
23866:
23866: inline ios_base&
23866: defaultfloat(ios_base& __base)
23866: {
23866: __base.unsetf(ios_base::floatfield);
23866: return __base;
23866: }
23866:
23866:
23866:
23866: }
23866: # 44 "/usr/include/c++/10/bits/locale_facets.h" 2 3
23866: # 1 "/usr/include/c++/10/streambuf" 1 3
23866: # 34 "/usr/include/c++/10/streambuf" 3
23866: #define _GLIBXX_STREAMBUF 1
23866:
23866:
23866: # 37 "/usr/include/c++/10/streambuf" 3
23866: # 45 "/usr/include/c++/10/streambuf" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: #define _IsUnused __attribute__ ((__unused__))
23866:
23866: template<typename _CharT, typename _Traits>
23866: streamsize
23866: __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>*,
23866: basic_streambuf<_CharT, _Traits>*, bool&);
23866: # 121 "/usr/include/c++/10/streambuf" 3
23866: template<typename _CharT, typename _Traits>
23866: class basic_streambuf
23866: {
23866: public:
23866:
23866:
23866:
23866:
23866:
23866:
23866: typedef _CharT char_type;
23866: typedef _Traits traits_type;
23866: typedef typename traits_type::int_type int_type;
23866: typedef typename traits_type::pos_type pos_type;
23866: typedef typename traits_type::off_type off_type;
23866:
23866:
23866:
23866:
23866: typedef basic_streambuf<char_type, traits_type> __streambuf_type;
23866:
23866:
23866: friend class basic_ios<char_type, traits_type>;
23866: friend class basic_istream<char_type, traits_type>;
23866: friend class basic_ostream<char_type, traits_type>;
23866: friend class istreambuf_iterator<char_type, traits_type>;
23866: friend class ostreambuf_iterator<char_type, traits_type>;
23866:
23866: friend streamsize
23866: __copy_streambufs_eof<>(basic_streambuf*, basic_streambuf*, bool&);
23866:
23866: template<bool _IsMove, typename _CharT2>
23866: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
23866: _CharT2*>::__type
23866: __copy_move_a2(istreambuf_iterator<_CharT2>,
23866: istreambuf_iterator<_CharT2>, _CharT2*);
23866:
23866: template<typename _CharT2>
23866: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
23866: istreambuf_iterator<_CharT2> >::__type
23866: find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
23866: const _CharT2&);
23866:
23866: template<typename _CharT2, typename _Distance>
23866: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
23866: void>::__type
23866: advance(istreambuf_iterator<_CharT2>&, _Distance);
23866:
23866: template<typename _CharT2, typename _Traits2>
23866: friend basic_istream<_CharT2, _Traits2>&
23866: operator>>(basic_istream<_CharT2, _Traits2>&, _CharT2*);
23866:
23866: template<typename _CharT2, typename _Traits2, typename _Alloc>
23866: friend basic_istream<_CharT2, _Traits2>&
23866: operator>>(basic_istream<_CharT2, _Traits2>&,
23866: basic_string<_CharT2, _Traits2, _Alloc>&);
23866:
23866: template<typename _CharT2, typename _Traits2, typename _Alloc>
23866: friend basic_istream<_CharT2, _Traits2>&
23866: getline(basic_istream<_CharT2, _Traits2>&,
23866: basic_string<_CharT2, _Traits2, _Alloc>&, _CharT2);
23866:
23866: protected:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: char_type* _M_in_beg;
23866: char_type* _M_in_cur;
23866: char_type* _M_in_end;
23866: char_type* _M_out_beg;
23866: char_type* _M_out_cur;
23866: char_type* _M_out_end;
23866:
23866:
23866: locale _M_buf_locale;
23866:
23866: public:
23866:
23866: virtual
23866: ~basic_streambuf()
23866: { }
23866: # 215 "/usr/include/c++/10/streambuf" 3
23866: locale
23866: pubimbue(const locale& __loc)
23866: {
23866: locale __tmp(this->getloc());
23866: this->imbue(__loc);
23866: _M_buf_locale = __loc;
23866: return __tmp;
23866: }
23866: # 232 "/usr/include/c++/10/streambuf" 3
23866: locale
23866: getloc() const
23866: { return _M_buf_locale; }
23866: # 245 "/usr/include/c++/10/streambuf" 3
23866: basic_streambuf*
23866: pubsetbuf(char_type* __s, streamsize __n)
23866: { return this->setbuf(__s, __n); }
23866: # 257 "/usr/include/c++/10/streambuf" 3
23866: pos_type
23866: pubseekoff(off_type __off, ios_base::seekdir __way,
23866: ios_base::openmode __mode = ios_base::in | ios_base::out)
23866: { return this->seekoff(__off, __way, __mode); }
23866: # 269 "/usr/include/c++/10/streambuf" 3
23866: pos_type
23866: pubseekpos(pos_type __sp,
23866: ios_base::openmode __mode = ios_base::in | ios_base::out)
23866: { return this->seekpos(__sp, __mode); }
23866:
23866:
23866:
23866:
23866: int
23866: pubsync() { return this->sync(); }
23866: # 290 "/usr/include/c++/10/streambuf" 3
23866: streamsize
23866: in_avail()
23866: {
23866: const streamsize __ret = this->egptr() - this->gptr();
23866: return __ret ? __ret : this->showmanyc();
23866: }
23866: # 304 "/usr/include/c++/10/streambuf" 3
23866: int_type
23866: snextc()
23866: {
23866: int_type __ret = traits_type::eof();
23866: if (__builtin_expect(!traits_type::eq_int_type(this->sbumpc(),
23866: __ret), true))
23866: __ret = this->sgetc();
23866: return __ret;
23866: }
23866: # 322 "/usr/include/c++/10/streambuf" 3
23866: int_type
23866: sbumpc()
23866: {
23866: int_type __ret;
23866: if (__builtin_expect(this->gptr() < this->egptr(), true))
23866: {
23866: __ret = traits_type::to_int_type(*this->gptr());
23866: this->gbump(1);
23866: }
23866: else
23866: __ret = this->uflow();
23866: return __ret;
23866: }
23866: # 344 "/usr/include/c++/10/streambuf" 3
23866: int_type
23866: sgetc()
23866: {
23866: int_type __ret;
23866: if (__builtin_expect(this->gptr() < this->egptr(), true))
23866: __ret = traits_type::to_int_type(*this->gptr());
23866: else
23866: __ret = this->underflow();
23866: return __ret;
23866: }
23866: # 363 "/usr/include/c++/10/streambuf" 3
23866: streamsize
23866: sgetn(char_type* __s, streamsize __n)
23866: { return this->xsgetn(__s, __n); }
23866: # 378 "/usr/include/c++/10/streambuf" 3
23866: int_type
23866: sputbackc(char_type __c)
23866: {
23866: int_type __ret;
23866: const bool __testpos = this->eback() < this->gptr();
23866: if (__builtin_expect(!__testpos ||
23866: !traits_type::eq(__c, this->gptr()[-1]), false))
23866: __ret = this->pbackfail(traits_type::to_int_type(__c));
23866: else
23866: {
23866: this->gbump(-1);
23866: __ret = traits_type::to_int_type(*this->gptr());
23866: }
23866: return __ret;
23866: }
23866: # 403 "/usr/include/c++/10/streambuf" 3
23866: int_type
23866: sungetc()
23866: {
23866: int_type __ret;
23866: if (__builtin_expect(this->eback() < this->gptr(), true))
23866: {
23866: this->gbump(-1);
23866: __ret = traits_type::to_int_type(*this->gptr());
23866: }
23866: else
23866: __ret = this->pbackfail();
23866: return __ret;
23866: }
23866: # 430 "/usr/include/c++/10/streambuf" 3
23866: int_type
23866: sputc(char_type __c)
23866: {
23866: int_type __ret;
23866: if (__builtin_expect(this->pptr() < this->epptr(), true))
23866: {
23866: *this->pptr() = __c;
23866: this->pbump(1);
23866: __ret = traits_type::to_int_type(__c);
23866: }
23866: else
23866: __ret = this->overflow(traits_type::to_int_type(__c));
23866: return __ret;
23866: }
23866: # 456 "/usr/include/c++/10/streambuf" 3
23866: streamsize
23866: sputn(const char_type* __s, streamsize __n)
23866: { return this->xsputn(__s, __n); }
23866:
23866: protected:
23866: # 470 "/usr/include/c++/10/streambuf" 3
23866: basic_streambuf()
23866: : _M_in_beg(0), _M_in_cur(0), _M_in_end(0),
23866: _M_out_beg(0), _M_out_cur(0), _M_out_end(0),
23866: _M_buf_locale(locale())
23866: { }
23866: # 488 "/usr/include/c++/10/streambuf" 3
23866: char_type*
23866: eback() const { return _M_in_beg; }
23866:
23866: char_type*
23866: gptr() const { return _M_in_cur; }
23866:
23866: char_type*
23866: egptr() const { return _M_in_end; }
23866: # 504 "/usr/include/c++/10/streambuf" 3
23866: void
23866: gbump(int __n) { _M_in_cur += __n; }
23866: # 515 "/usr/include/c++/10/streambuf" 3
23866: void
23866: setg(char_type* __gbeg, char_type* __gnext, char_type* __gend)
23866: {
23866: _M_in_beg = __gbeg;
23866: _M_in_cur = __gnext;
23866: _M_in_end = __gend;
23866: }
23866: # 535 "/usr/include/c++/10/streambuf" 3
23866: char_type*
23866: pbase() const { return _M_out_beg; }
23866:
23866: char_type*
23866: pptr() const { return _M_out_cur; }
23866:
23866: char_type*
23866: epptr() const { return _M_out_end; }
23866: # 551 "/usr/include/c++/10/streambuf" 3
23866: void
23866: pbump(int __n) { _M_out_cur += __n; }
23866: # 561 "/usr/include/c++/10/streambuf" 3
23866: void
23866: setp(char_type* __pbeg, char_type* __pend)
23866: {
23866: _M_out_beg = _M_out_cur = __pbeg;
23866: _M_out_end = __pend;
23866: }
23866: # 582 "/usr/include/c++/10/streambuf" 3
23866: virtual void
23866: imbue(const locale& __loc __attribute__ ((__unused__)))
23866: { }
23866: # 597 "/usr/include/c++/10/streambuf" 3
23866: virtual basic_streambuf<char_type,_Traits>*
23866: setbuf(char_type*, streamsize)
23866: { return this; }
23866: # 608 "/usr/include/c++/10/streambuf" 3
23866: virtual pos_type
23866: seekoff(off_type, ios_base::seekdir,
23866: ios_base::openmode = ios_base::in | ios_base::out)
23866: { return pos_type(off_type(-1)); }
23866: # 620 "/usr/include/c++/10/streambuf" 3
23866: virtual pos_type
23866: seekpos(pos_type,
23866: ios_base::openmode = ios_base::in | ios_base::out)
23866: { return pos_type(off_type(-1)); }
23866: # 633 "/usr/include/c++/10/streambuf" 3
23866: virtual int
23866: sync() { return 0; }
23866: # 655 "/usr/include/c++/10/streambuf" 3
23866: virtual streamsize
23866: showmanyc() { return 0; }
23866: # 671 "/usr/include/c++/10/streambuf" 3
23866: virtual streamsize
23866: xsgetn(char_type* __s, streamsize __n);
23866: # 693 "/usr/include/c++/10/streambuf" 3
23866: virtual int_type
23866: underflow()
23866: { return traits_type::eof(); }
23866: # 706 "/usr/include/c++/10/streambuf" 3
23866: virtual int_type
23866: uflow()
23866: {
23866: int_type __ret = traits_type::eof();
23866: const bool __testeof = traits_type::eq_int_type(this->underflow(),
23866: __ret);
23866: if (!__testeof)
23866: {
23866: __ret = traits_type::to_int_type(*this->gptr());
23866: this->gbump(1);
23866: }
23866: return __ret;
23866: }
23866: # 730 "/usr/include/c++/10/streambuf" 3
23866: virtual int_type
23866: pbackfail(int_type __c __attribute__ ((__unused__)) = traits_type::eof())
23866: { return traits_type::eof(); }
23866: # 748 "/usr/include/c++/10/streambuf" 3
23866: virtual streamsize
23866: xsputn(const char_type* __s, streamsize __n);
23866: # 774 "/usr/include/c++/10/streambuf" 3
23866: virtual int_type
23866: overflow(int_type __c __attribute__ ((__unused__)) = traits_type::eof())
23866: { return traits_type::eof(); }
23866: # 801 "/usr/include/c++/10/streambuf" 3
23866: void
23866: __safe_gbump(streamsize __n) { _M_in_cur += __n; }
23866:
23866: void
23866: __safe_pbump(streamsize __n) { _M_out_cur += __n; }
23866:
23866:
23866:
23866:
23866: protected:
23866:
23866: basic_streambuf(const basic_streambuf&);
23866:
23866: basic_streambuf&
23866: operator=(const basic_streambuf&);
23866:
23866:
23866: void
23866: swap(basic_streambuf& __sb)
23866: {
23866: std::swap(_M_in_beg, __sb._M_in_beg);
23866: std::swap(_M_in_cur, __sb._M_in_cur);
23866: std::swap(_M_in_end, __sb._M_in_end);
23866: std::swap(_M_out_beg, __sb._M_out_beg);
23866: std::swap(_M_out_cur, __sb._M_out_cur);
23866: std::swap(_M_out_end, __sb._M_out_end);
23866: std::swap(_M_buf_locale, __sb._M_buf_locale);
23866: }
23866:
23866: };
23866:
23866:
23866: template<typename _CharT, typename _Traits>
23866: std::basic_streambuf<_CharT, _Traits>::
23866: basic_streambuf(const basic_streambuf&) = default;
23866:
23866: template<typename _CharT, typename _Traits>
23866: std::basic_streambuf<_CharT, _Traits>&
23866: std::basic_streambuf<_CharT, _Traits>::
23866: operator=(const basic_streambuf&) = default;
23866:
23866:
23866:
23866: template<>
23866: streamsize
23866: __copy_streambufs_eof(basic_streambuf<char>* __sbin,
23866: basic_streambuf<char>* __sbout, bool& __ineof);
23866:
23866: template<>
23866: streamsize
23866: __copy_streambufs_eof(basic_streambuf<wchar_t>* __sbin,
23866: basic_streambuf<wchar_t>* __sbout, bool& __ineof);
23866:
23866:
23866: #undef _IsUnused
23866:
23866:
23866: }
23866:
23866: # 1 "/usr/include/c++/10/bits/streambuf.tcc" 1 3
23866: # 35 "/usr/include/c++/10/bits/streambuf.tcc" 3
23866: #define _STREAMBUF_TCC 1
23866:
23866:
23866: # 38 "/usr/include/c++/10/bits/streambuf.tcc" 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: template<typename _CharT, typename _Traits>
23866: streamsize
23866: basic_streambuf<_CharT, _Traits>::
23866: xsgetn(char_type* __s, streamsize __n)
23866: {
23866: streamsize __ret = 0;
23866: while (__ret < __n)
23866: {
23866: const streamsize __buf_len = this->egptr() - this->gptr();
23866: if (__buf_len)
23866: {
23866: const streamsize __remaining = __n - __ret;
23866: const streamsize __len = std::min(__buf_len, __remaining);
23866: traits_type::copy(__s, this->gptr(), __len);
23866: __ret += __len;
23866: __s += __len;
23866: this->__safe_gbump(__len);
23866: }
23866:
23866: if (__ret < __n)
23866: {
23866: const int_type __c = this->uflow();
23866: if (!traits_type::eq_int_type(__c, traits_type::eof()))
23866: {
23866: traits_type::assign(*__s++, traits_type::to_char_type(__c));
23866: ++__ret;
23866: }
23866: else
23866: break;
23866: }
23866: }
23866: return __ret;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: streamsize
23866: basic_streambuf<_CharT, _Traits>::
23866: xsputn(const char_type* __s, streamsize __n)
23866: {
23866: streamsize __ret = 0;
23866: while (__ret < __n)
23866: {
23866: const streamsize __buf_len = this->epptr() - this->pptr();
23866: if (__buf_len)
23866: {
23866: const streamsize __remaining = __n - __ret;
23866: const streamsize __len = std::min(__buf_len, __remaining);
23866: traits_type::copy(this->pptr(), __s, __len);
23866: __ret += __len;
23866: __s += __len;
23866: this->__safe_pbump(__len);
23866: }
23866:
23866: if (__ret < __n)
23866: {
23866: int_type __c = this->overflow(traits_type::to_int_type(*__s));
23866: if (!traits_type::eq_int_type(__c, traits_type::eof()))
23866: {
23866: ++__ret;
23866: ++__s;
23866: }
23866: else
23866: break;
23866: }
23866: }
23866: return __ret;
23866: }
23866:
23866:
23866:
23866:
23866: template<typename _CharT, typename _Traits>
23866: streamsize
23866: __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>* __sbin,
23866: basic_streambuf<_CharT, _Traits>* __sbout,
23866: bool& __ineof)
23866: {
23866: streamsize __ret = 0;
23866: __ineof = true;
23866: typename _Traits::int_type __c = __sbin->sgetc();
23866: while (!_Traits::eq_int_type(__c, _Traits::eof()))
23866: {
23866: __c = __sbout->sputc(_Traits::to_char_type(__c));
23866: if (_Traits::eq_int_type(__c, _Traits::eof()))
23866: {
23866: __ineof = false;
23866: break;
23866: }
23866: ++__ret;
23866: __c = __sbin->snextc();
23866: }
23866: return __ret;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: inline streamsize
23866: __copy_streambufs(basic_streambuf<_CharT, _Traits>* __sbin,
23866: basic_streambuf<_CharT, _Traits>* __sbout)
23866: {
23866: bool __ineof;
23866: return __copy_streambufs_eof(__sbin, __sbout, __ineof);
23866: }
23866:
23866:
23866:
23866:
23866: extern template class basic_streambuf<char>;
23866: extern template
23866: streamsize
23866: __copy_streambufs(basic_streambuf<char>*,
23866: basic_streambuf<char>*);
23866: extern template
23866: streamsize
23866: __copy_streambufs_eof(basic_streambuf<char>*,
23866: basic_streambuf<char>*, bool&);
23866:
23866:
23866: extern template class basic_streambuf<wchar_t>;
23866: extern template
23866: streamsize
23866: __copy_streambufs(basic_streambuf<wchar_t>*,
23866: basic_streambuf<wchar_t>*);
23866: extern template
23866: streamsize
23866: __copy_streambufs_eof(basic_streambuf<wchar_t>*,
23866: basic_streambuf<wchar_t>*, bool&);
23866:
23866:
23866:
23866:
23866: }
23866: # 861 "/usr/include/c++/10/streambuf" 2 3
23866: # 45 "/usr/include/c++/10/bits/locale_facets.h" 2 3
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/streambuf_iterator.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/streambuf_iterator.h" 3
23866: #define _STREAMBUF_ITERATOR_H 1
23866:
23866:
23866: # 34 "/usr/include/c++/10/bits/streambuf_iterator.h" 3
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 49 "/usr/include/c++/10/bits/streambuf_iterator.h" 3
23866: template<typename _CharT, typename _Traits>
23866: class istreambuf_iterator
23866: : public iterator<input_iterator_tag, _CharT, typename _Traits::off_type,
23866: _CharT*, _CharT>
23866: {
23866: public:
23866: # 66 "/usr/include/c++/10/bits/streambuf_iterator.h" 3
23866: typedef _CharT char_type;
23866: typedef _Traits traits_type;
23866: typedef typename _Traits::int_type int_type;
23866: typedef basic_streambuf<_CharT, _Traits> streambuf_type;
23866: typedef basic_istream<_CharT, _Traits> istream_type;
23866:
23866:
23866: template<typename _CharT2>
23866: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
23866: ostreambuf_iterator<_CharT2> >::__type
23866: copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
23866: ostreambuf_iterator<_CharT2>);
23866:
23866: template<bool _IsMove, typename _CharT2>
23866: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
23866: _CharT2*>::__type
23866: __copy_move_a2(istreambuf_iterator<_CharT2>,
23866: istreambuf_iterator<_CharT2>, _CharT2*);
23866:
23866:
23866: template<typename _CharT2, typename _Size>
23866: friend __enable_if_t<__is_char<_CharT2>::__value, _CharT2*>
23866: __copy_n_a(istreambuf_iterator<_CharT2>, _Size, _CharT2*);
23866:
23866:
23866: template<typename _CharT2>
23866: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
23866: istreambuf_iterator<_CharT2> >::__type
23866: find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
23866: const _CharT2&);
23866:
23866: template<typename _CharT2, typename _Distance>
23866: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
23866: void>::__type
23866: advance(istreambuf_iterator<_CharT2>&, _Distance);
23866:
23866: private:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: mutable streambuf_type* _M_sbuf;
23866: int_type _M_c;
23866:
23866: public:
23866:
23866: constexpr istreambuf_iterator() noexcept
23866: : _M_sbuf(0), _M_c(traits_type::eof()) { }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: istreambuf_iterator(const istreambuf_iterator&) noexcept = default;
23866:
23866: ~istreambuf_iterator() = default;
23866:
23866:
23866:
23866: istreambuf_iterator(istream_type& __s) noexcept
23866: : _M_sbuf(__s.rdbuf()), _M_c(traits_type::eof()) { }
23866:
23866:
23866: istreambuf_iterator(streambuf_type* __s) noexcept
23866: : _M_sbuf(__s), _M_c(traits_type::eof()) { }
23866:
23866:
23866: istreambuf_iterator&
23866: operator=(const istreambuf_iterator&) noexcept = default;
23866:
23866:
23866:
23866:
23866:
23866: char_type
23866: operator*() const
23866: {
23866: int_type __c = _M_get();
23866: # 157 "/usr/include/c++/10/bits/streambuf_iterator.h" 3
23866: return traits_type::to_char_type(__c);
23866: }
23866:
23866:
23866: istreambuf_iterator&
23866: operator++()
23866: {
23866:
23866:
23866:
23866: ;
23866:
23866: _M_sbuf->sbumpc();
23866: _M_c = traits_type::eof();
23866: return *this;
23866: }
23866:
23866:
23866: istreambuf_iterator
23866: operator++(int)
23866: {
23866:
23866:
23866:
23866: ;
23866:
23866: istreambuf_iterator __old = *this;
23866: __old._M_c = _M_sbuf->sbumpc();
23866: _M_c = traits_type::eof();
23866: return __old;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: bool
23866: equal(const istreambuf_iterator& __b) const
23866: { return _M_at_eof() == __b._M_at_eof(); }
23866:
23866: private:
23866: int_type
23866: _M_get() const
23866: {
23866: int_type __ret = _M_c;
23866: if (_M_sbuf && _S_is_eof(__ret) && _S_is_eof(__ret = _M_sbuf->sgetc()))
23866: _M_sbuf = 0;
23866: return __ret;
23866: }
23866:
23866: bool
23866: _M_at_eof() const
23866: { return _S_is_eof(_M_get()); }
23866:
23866: static bool
23866: _S_is_eof(int_type __c)
23866: {
23866: const int_type __eof = traits_type::eof();
23866: return traits_type::eq_int_type(__c, __eof);
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866: template<typename _CharT, typename _Traits>
23866: inline bool
23866: operator==(const istreambuf_iterator<_CharT, _Traits>& __a,
23866: const istreambuf_iterator<_CharT, _Traits>& __b)
23866: { return __a.equal(__b); }
23866:
23866: template<typename _CharT, typename _Traits>
23866: inline bool
23866: operator!=(const istreambuf_iterator<_CharT, _Traits>& __a,
23866: const istreambuf_iterator<_CharT, _Traits>& __b)
23866: { return !__a.equal(__b); }
23866:
23866:
23866: template<typename _CharT, typename _Traits>
23866: class ostreambuf_iterator
23866: : public iterator<output_iterator_tag, void, void, void, void>
23866: {
23866: public:
23866:
23866:
23866:
23866:
23866:
23866:
23866: typedef _CharT char_type;
23866: typedef _Traits traits_type;
23866: typedef basic_streambuf<_CharT, _Traits> streambuf_type;
23866: typedef basic_ostream<_CharT, _Traits> ostream_type;
23866:
23866:
23866: template<typename _CharT2>
23866: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
23866: ostreambuf_iterator<_CharT2> >::__type
23866: copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
23866: ostreambuf_iterator<_CharT2>);
23866:
23866: private:
23866: streambuf_type* _M_sbuf;
23866: bool _M_failed;
23866:
23866: public:
23866: # 274 "/usr/include/c++/10/bits/streambuf_iterator.h" 3
23866: ostreambuf_iterator(ostream_type& __s) noexcept
23866: : _M_sbuf(__s.rdbuf()), _M_failed(!_M_sbuf) { }
23866:
23866:
23866: ostreambuf_iterator(streambuf_type* __s) noexcept
23866: : _M_sbuf(__s), _M_failed(!_M_sbuf) { }
23866:
23866:
23866: ostreambuf_iterator&
23866: operator=(_CharT __c)
23866: {
23866: if (!_M_failed &&
23866: _Traits::eq_int_type(_M_sbuf->sputc(__c), _Traits::eof()))
23866: _M_failed = true;
23866: return *this;
23866: }
23866:
23866:
23866: ostreambuf_iterator&
23866: operator*()
23866: { return *this; }
23866:
23866:
23866: ostreambuf_iterator&
23866: operator++(int)
23866: { return *this; }
23866:
23866:
23866: ostreambuf_iterator&
23866: operator++()
23866: { return *this; }
23866:
23866:
23866: bool
23866: failed() const noexcept
23866: { return _M_failed; }
23866:
23866: ostreambuf_iterator&
23866: _M_put(const _CharT* __ws, streamsize __len)
23866: {
23866: if (__builtin_expect(!_M_failed, true)
23866: && __builtin_expect(this->_M_sbuf->sputn(__ws, __len) != __len,
23866: false))
23866: _M_failed = true;
23866: return *this;
23866: }
23866: };
23866:
23866:
23866: template<typename _CharT>
23866: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
23866: ostreambuf_iterator<_CharT> >::__type
23866: copy(istreambuf_iterator<_CharT> __first,
23866: istreambuf_iterator<_CharT> __last,
23866: ostreambuf_iterator<_CharT> __result)
23866: {
23866: if (__first._M_sbuf && !__last._M_sbuf && !__result._M_failed)
23866: {
23866: bool __ineof;
23866: __copy_streambufs_eof(__first._M_sbuf, __result._M_sbuf, __ineof);
23866: if (!__ineof)
23866: __result._M_failed = true;
23866: }
23866: return __result;
23866: }
23866:
23866: template<bool _IsMove, typename _CharT>
23866: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
23866: ostreambuf_iterator<_CharT> >::__type
23866: __copy_move_a2(_CharT* __first, _CharT* __last,
23866: ostreambuf_iterator<_CharT> __result)
23866: {
23866: const streamsize __num = __last - __first;
23866: if (__num > 0)
23866: __result._M_put(__first, __num);
23866: return __result;
23866: }
23866:
23866: template<bool _IsMove, typename _CharT>
23866: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
23866: ostreambuf_iterator<_CharT> >::__type
23866: __copy_move_a2(const _CharT* __first, const _CharT* __last,
23866: ostreambuf_iterator<_CharT> __result)
23866: {
23866: const streamsize __num = __last - __first;
23866: if (__num > 0)
23866: __result._M_put(__first, __num);
23866: return __result;
23866: }
23866:
23866: template<bool _IsMove, typename _CharT>
23866: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
23866: _CharT*>::__type
23866: __copy_move_a2(istreambuf_iterator<_CharT> __first,
23866: istreambuf_iterator<_CharT> __last, _CharT* __result)
23866: {
23866: typedef istreambuf_iterator<_CharT> __is_iterator_type;
23866: typedef typename __is_iterator_type::traits_type traits_type;
23866: typedef typename __is_iterator_type::streambuf_type streambuf_type;
23866: typedef typename traits_type::int_type int_type;
23866:
23866: if (__first._M_sbuf && !__last._M_sbuf)
23866: {
23866: streambuf_type* __sb = __first._M_sbuf;
23866: int_type __c = __sb->sgetc();
23866: while (!traits_type::eq_int_type(__c, traits_type::eof()))
23866: {
23866: const streamsize __n = __sb->egptr() - __sb->gptr();
23866: if (__n > 1)
23866: {
23866: traits_type::copy(__result, __sb->gptr(), __n);
23866: __sb->__safe_gbump(__n);
23866: __result += __n;
23866: __c = __sb->underflow();
23866: }
23866: else
23866: {
23866: *__result++ = traits_type::to_char_type(__c);
23866: __c = __sb->snextc();
23866: }
23866: }
23866: }
23866: return __result;
23866: }
23866:
23866:
23866: template<typename _CharT, typename _Size>
23866: __enable_if_t<__is_char<_CharT>::__value, _CharT*>
23866: __copy_n_a(istreambuf_iterator<_CharT> __it, _Size __n, _CharT* __result)
23866: {
23866: if (__n == 0)
23866: return __result;
23866:
23866:
23866:
23866: ;
23866: _CharT* __beg = __result;
23866: __result += __it._M_sbuf->sgetn(__beg, __n);
23866:
23866:
23866: ;
23866: return __result;
23866: }
23866:
23866:
23866: template<typename _CharT>
23866: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
23866: istreambuf_iterator<_CharT> >::__type
23866: find(istreambuf_iterator<_CharT> __first,
23866: istreambuf_iterator<_CharT> __last, const _CharT& __val)
23866: {
23866: typedef istreambuf_iterator<_CharT> __is_iterator_type;
23866: typedef typename __is_iterator_type::traits_type traits_type;
23866: typedef typename __is_iterator_type::streambuf_type streambuf_type;
23866: typedef typename traits_type::int_type int_type;
23866: const int_type __eof = traits_type::eof();
23866:
23866: if (__first._M_sbuf && !__last._M_sbuf)
23866: {
23866: const int_type __ival = traits_type::to_int_type(__val);
23866: streambuf_type* __sb = __first._M_sbuf;
23866: int_type __c = __sb->sgetc();
23866: while (!traits_type::eq_int_type(__c, __eof)
23866: && !traits_type::eq_int_type(__c, __ival))
23866: {
23866: streamsize __n = __sb->egptr() - __sb->gptr();
23866: if (__n > 1)
23866: {
23866: const _CharT* __p = traits_type::find(__sb->gptr(),
23866: __n, __val);
23866: if (__p)
23866: __n = __p - __sb->gptr();
23866: __sb->__safe_gbump(__n);
23866: __c = __sb->sgetc();
23866: }
23866: else
23866: __c = __sb->snextc();
23866: }
23866:
23866: __first._M_c = __eof;
23866: }
23866:
23866: return __first;
23866: }
23866:
23866: template<typename _CharT, typename _Distance>
23866: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
23866: void>::__type
23866: advance(istreambuf_iterator<_CharT>& __i, _Distance __n)
23866: {
23866: if (__n == 0)
23866: return;
23866:
23866: ;
23866:
23866:
23866: ;
23866:
23866: typedef istreambuf_iterator<_CharT> __is_iterator_type;
23866: typedef typename __is_iterator_type::traits_type traits_type;
23866: typedef typename __is_iterator_type::streambuf_type streambuf_type;
23866: typedef typename traits_type::int_type int_type;
23866: const int_type __eof = traits_type::eof();
23866:
23866: streambuf_type* __sb = __i._M_sbuf;
23866: while (__n > 0)
23866: {
23866: streamsize __size = __sb->egptr() - __sb->gptr();
23866: if (__size > __n)
23866: {
23866: __sb->__safe_gbump(__n);
23866: break;
23866: }
23866:
23866: __sb->__safe_gbump(__size);
23866: __n -= __size;
23866: if (traits_type::eq_int_type(__sb->underflow(), __eof))
23866: {
23866:
23866:
23866: ;
23866: break;
23866: }
23866: }
23866:
23866: __i._M_c = __eof;
23866: }
23866:
23866:
23866:
23866:
23866: }
23866: # 49 "/usr/include/c++/10/bits/locale_facets.h" 2 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_NUM_FACETS 28
23866: #define _GLIBCXX_NUM_CXX11_FACETS 16
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_NUM_UNICODE_FACETS 2
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: void
23866: __convert_to_v(const char*, _Tp&, ios_base::iostate&,
23866: const __c_locale&) throw();
23866:
23866:
23866: template<>
23866: void
23866: __convert_to_v(const char*, float&, ios_base::iostate&,
23866: const __c_locale&) throw();
23866:
23866: template<>
23866: void
23866: __convert_to_v(const char*, double&, ios_base::iostate&,
23866: const __c_locale&) throw();
23866:
23866: template<>
23866: void
23866: __convert_to_v(const char*, long double&, ios_base::iostate&,
23866: const __c_locale&) throw();
23866:
23866:
23866:
23866: template<typename _CharT, typename _Traits>
23866: struct __pad
23866: {
23866: static void
23866: _S_pad(ios_base& __io, _CharT __fill, _CharT* __news,
23866: const _CharT* __olds, streamsize __newlen, streamsize __oldlen);
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _CharT>
23866: _CharT*
23866: __add_grouping(_CharT* __s, _CharT __sep,
23866: const char* __gbeg, size_t __gsize,
23866: const _CharT* __first, const _CharT* __last);
23866:
23866:
23866:
23866:
23866: template<typename _CharT>
23866: inline
23866: ostreambuf_iterator<_CharT>
23866: __write(ostreambuf_iterator<_CharT> __s, const _CharT* __ws, int __len)
23866: {
23866: __s._M_put(__ws, __len);
23866: return __s;
23866: }
23866:
23866:
23866: template<typename _CharT, typename _OutIter>
23866: inline
23866: _OutIter
23866: __write(_OutIter __s, const _CharT* __ws, int __len)
23866: {
23866: for (int __j = 0; __j < __len; __j++, ++__s)
23866: *__s = __ws[__j];
23866: return __s;
23866: }
23866: # 149 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: template<typename _CharT>
23866: class __ctype_abstract_base : public locale::facet, public ctype_base
23866: {
23866: public:
23866:
23866:
23866: typedef _CharT char_type;
23866: # 168 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: bool
23866: is(mask __m, char_type __c) const
23866: { return this->do_is(__m, __c); }
23866: # 185 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: const char_type*
23866: is(const char_type *__lo, const char_type *__hi, mask *__vec) const
23866: { return this->do_is(__lo, __hi, __vec); }
23866: # 201 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: const char_type*
23866: scan_is(mask __m, const char_type* __lo, const char_type* __hi) const
23866: { return this->do_scan_is(__m, __lo, __hi); }
23866: # 217 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: const char_type*
23866: scan_not(mask __m, const char_type* __lo, const char_type* __hi) const
23866: { return this->do_scan_not(__m, __lo, __hi); }
23866: # 231 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: char_type
23866: toupper(char_type __c) const
23866: { return this->do_toupper(__c); }
23866: # 246 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: const char_type*
23866: toupper(char_type *__lo, const char_type* __hi) const
23866: { return this->do_toupper(__lo, __hi); }
23866: # 260 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: char_type
23866: tolower(char_type __c) const
23866: { return this->do_tolower(__c); }
23866: # 275 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: const char_type*
23866: tolower(char_type* __lo, const char_type* __hi) const
23866: { return this->do_tolower(__lo, __hi); }
23866: # 292 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: char_type
23866: widen(char __c) const
23866: { return this->do_widen(__c); }
23866: # 311 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: const char*
23866: widen(const char* __lo, const char* __hi, char_type* __to) const
23866: { return this->do_widen(__lo, __hi, __to); }
23866: # 330 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: char
23866: narrow(char_type __c, char __dfault) const
23866: { return this->do_narrow(__c, __dfault); }
23866: # 352 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: const char_type*
23866: narrow(const char_type* __lo, const char_type* __hi,
23866: char __dfault, char* __to) const
23866: { return this->do_narrow(__lo, __hi, __dfault, __to); }
23866:
23866: protected:
23866: explicit
23866: __ctype_abstract_base(size_t __refs = 0): facet(__refs) { }
23866:
23866: virtual
23866: ~__ctype_abstract_base() { }
23866: # 377 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual bool
23866: do_is(mask __m, char_type __c) const = 0;
23866: # 396 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual const char_type*
23866: do_is(const char_type* __lo, const char_type* __hi,
23866: mask* __vec) const = 0;
23866: # 415 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual const char_type*
23866: do_scan_is(mask __m, const char_type* __lo,
23866: const char_type* __hi) const = 0;
23866: # 434 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual const char_type*
23866: do_scan_not(mask __m, const char_type* __lo,
23866: const char_type* __hi) const = 0;
23866: # 452 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual char_type
23866: do_toupper(char_type __c) const = 0;
23866: # 469 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual const char_type*
23866: do_toupper(char_type* __lo, const char_type* __hi) const = 0;
23866: # 485 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual char_type
23866: do_tolower(char_type __c) const = 0;
23866: # 502 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual const char_type*
23866: do_tolower(char_type* __lo, const char_type* __hi) const = 0;
23866: # 521 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual char_type
23866: do_widen(char __c) const = 0;
23866: # 542 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual const char*
23866: do_widen(const char* __lo, const char* __hi, char_type* __to) const = 0;
23866: # 563 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual char
23866: do_narrow(char_type __c, char __dfault) const = 0;
23866: # 588 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual const char_type*
23866: do_narrow(const char_type* __lo, const char_type* __hi,
23866: char __dfault, char* __to) const = 0;
23866: };
23866: # 611 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: template<typename _CharT>
23866: class ctype : public __ctype_abstract_base<_CharT>
23866: {
23866: public:
23866:
23866: typedef _CharT char_type;
23866: typedef typename __ctype_abstract_base<_CharT>::mask mask;
23866:
23866:
23866: static locale::id id;
23866:
23866: explicit
23866: ctype(size_t __refs = 0) : __ctype_abstract_base<_CharT>(__refs) { }
23866:
23866: protected:
23866: virtual
23866: ~ctype();
23866:
23866: virtual bool
23866: do_is(mask __m, char_type __c) const;
23866:
23866: virtual const char_type*
23866: do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const;
23866:
23866: virtual const char_type*
23866: do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const;
23866:
23866: virtual const char_type*
23866: do_scan_not(mask __m, const char_type* __lo,
23866: const char_type* __hi) const;
23866:
23866: virtual char_type
23866: do_toupper(char_type __c) const;
23866:
23866: virtual const char_type*
23866: do_toupper(char_type* __lo, const char_type* __hi) const;
23866:
23866: virtual char_type
23866: do_tolower(char_type __c) const;
23866:
23866: virtual const char_type*
23866: do_tolower(char_type* __lo, const char_type* __hi) const;
23866:
23866: virtual char_type
23866: do_widen(char __c) const;
23866:
23866: virtual const char*
23866: do_widen(const char* __lo, const char* __hi, char_type* __dest) const;
23866:
23866: virtual char
23866: do_narrow(char_type, char __dfault) const;
23866:
23866: virtual const char_type*
23866: do_narrow(const char_type* __lo, const char_type* __hi,
23866: char __dfault, char* __to) const;
23866: };
23866:
23866: template<typename _CharT>
23866: locale::id ctype<_CharT>::id;
23866: # 680 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: template<>
23866: class ctype<char> : public locale::facet, public ctype_base
23866: {
23866: public:
23866:
23866:
23866: typedef char char_type;
23866:
23866: protected:
23866:
23866: __c_locale _M_c_locale_ctype;
23866: bool _M_del;
23866: __to_type _M_toupper;
23866: __to_type _M_tolower;
23866: const mask* _M_table;
23866: mutable char _M_widen_ok;
23866: mutable char _M_widen[1 + static_cast<unsigned char>(-1)];
23866: mutable char _M_narrow[1 + static_cast<unsigned char>(-1)];
23866: mutable char _M_narrow_ok;
23866:
23866:
23866: public:
23866:
23866: static locale::id id;
23866:
23866: static const size_t table_size = 1 + static_cast<unsigned char>(-1);
23866: # 717 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: explicit
23866: ctype(const mask* __table = 0, bool __del = false, size_t __refs = 0);
23866: # 730 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: explicit
23866: ctype(__c_locale __cloc, const mask* __table = 0, bool __del = false,
23866: size_t __refs = 0);
23866: # 743 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: inline bool
23866: is(mask __m, char __c) const;
23866: # 758 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: inline const char*
23866: is(const char* __lo, const char* __hi, mask* __vec) const;
23866: # 772 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: inline const char*
23866: scan_is(mask __m, const char* __lo, const char* __hi) const;
23866: # 786 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: inline const char*
23866: scan_not(mask __m, const char* __lo, const char* __hi) const;
23866: # 801 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: char_type
23866: toupper(char_type __c) const
23866: { return this->do_toupper(__c); }
23866: # 818 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: const char_type*
23866: toupper(char_type *__lo, const char_type* __hi) const
23866: { return this->do_toupper(__lo, __hi); }
23866: # 834 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: char_type
23866: tolower(char_type __c) const
23866: { return this->do_tolower(__c); }
23866: # 851 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: const char_type*
23866: tolower(char_type* __lo, const char_type* __hi) const
23866: { return this->do_tolower(__lo, __hi); }
23866: # 871 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: char_type
23866: widen(char __c) const
23866: {
23866: if (_M_widen_ok)
23866: return _M_widen[static_cast<unsigned char>(__c)];
23866: this->_M_widen_init();
23866: return this->do_widen(__c);
23866: }
23866: # 898 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: const char*
23866: widen(const char* __lo, const char* __hi, char_type* __to) const
23866: {
23866: if (_M_widen_ok == 1)
23866: {
23866: if (__builtin_expect(__hi != __lo, true))
23866: __builtin_memcpy(__to, __lo, __hi - __lo);
23866: return __hi;
23866: }
23866: if (!_M_widen_ok)
23866: _M_widen_init();
23866: return this->do_widen(__lo, __hi, __to);
23866: }
23866: # 930 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: char
23866: narrow(char_type __c, char __dfault) const
23866: {
23866: if (_M_narrow[static_cast<unsigned char>(__c)])
23866: return _M_narrow[static_cast<unsigned char>(__c)];
23866: const char __t = do_narrow(__c, __dfault);
23866: if (__t != __dfault)
23866: _M_narrow[static_cast<unsigned char>(__c)] = __t;
23866: return __t;
23866: }
23866: # 963 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: const char_type*
23866: narrow(const char_type* __lo, const char_type* __hi,
23866: char __dfault, char* __to) const
23866: {
23866: if (__builtin_expect(_M_narrow_ok == 1, true))
23866: {
23866: if (__builtin_expect(__hi != __lo, true))
23866: __builtin_memcpy(__to, __lo, __hi - __lo);
23866: return __hi;
23866: }
23866: if (!_M_narrow_ok)
23866: _M_narrow_init();
23866: return this->do_narrow(__lo, __hi, __dfault, __to);
23866: }
23866:
23866:
23866:
23866:
23866:
23866: const mask*
23866: table() const throw()
23866: { return _M_table; }
23866:
23866:
23866: static const mask*
23866: classic_table() throw();
23866: protected:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: virtual
23866: ~ctype();
23866: # 1013 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual char_type
23866: do_toupper(char_type __c) const;
23866: # 1030 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual const char_type*
23866: do_toupper(char_type* __lo, const char_type* __hi) const;
23866: # 1046 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual char_type
23866: do_tolower(char_type __c) const;
23866: # 1063 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual const char_type*
23866: do_tolower(char_type* __lo, const char_type* __hi) const;
23866: # 1083 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual char_type
23866: do_widen(char __c) const
23866: { return __c; }
23866: # 1106 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual const char*
23866: do_widen(const char* __lo, const char* __hi, char_type* __to) const
23866: {
23866: if (__builtin_expect(__hi != __lo, true))
23866: __builtin_memcpy(__to, __lo, __hi - __lo);
23866: return __hi;
23866: }
23866: # 1133 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual char
23866: do_narrow(char_type __c, char __dfault __attribute__((__unused__))) const
23866: { return __c; }
23866: # 1159 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual const char_type*
23866: do_narrow(const char_type* __lo, const char_type* __hi,
23866: char __dfault __attribute__((__unused__)), char* __to) const
23866: {
23866: if (__builtin_expect(__hi != __lo, true))
23866: __builtin_memcpy(__to, __lo, __hi - __lo);
23866: return __hi;
23866: }
23866:
23866: private:
23866: void _M_narrow_init() const;
23866: void _M_widen_init() const;
23866: };
23866: # 1185 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: template<>
23866: class ctype<wchar_t> : public __ctype_abstract_base<wchar_t>
23866: {
23866: public:
23866:
23866:
23866: typedef wchar_t char_type;
23866: typedef wctype_t __wmask_type;
23866:
23866: protected:
23866: __c_locale _M_c_locale_ctype;
23866:
23866:
23866: bool _M_narrow_ok;
23866: char _M_narrow[128];
23866: wint_t _M_widen[1 + static_cast<unsigned char>(-1)];
23866:
23866:
23866: mask _M_bit[16];
23866: __wmask_type _M_wmask[16];
23866:
23866: public:
23866:
23866:
23866: static locale::id id;
23866: # 1218 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: explicit
23866: ctype(size_t __refs = 0);
23866: # 1229 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: explicit
23866: ctype(__c_locale __cloc, size_t __refs = 0);
23866:
23866: protected:
23866: __wmask_type
23866: _M_convert_to_wmask(const mask __m) const throw();
23866:
23866:
23866: virtual
23866: ~ctype();
23866: # 1253 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual bool
23866: do_is(mask __m, char_type __c) const;
23866: # 1272 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual const char_type*
23866: do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const;
23866: # 1290 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual const char_type*
23866: do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const;
23866: # 1308 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual const char_type*
23866: do_scan_not(mask __m, const char_type* __lo,
23866: const char_type* __hi) const;
23866: # 1325 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual char_type
23866: do_toupper(char_type __c) const;
23866: # 1342 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual const char_type*
23866: do_toupper(char_type* __lo, const char_type* __hi) const;
23866: # 1358 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual char_type
23866: do_tolower(char_type __c) const;
23866: # 1375 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual const char_type*
23866: do_tolower(char_type* __lo, const char_type* __hi) const;
23866: # 1395 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual char_type
23866: do_widen(char __c) const;
23866: # 1417 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual const char*
23866: do_widen(const char* __lo, const char* __hi, char_type* __to) const;
23866: # 1440 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual char
23866: do_narrow(char_type __c, char __dfault) const;
23866: # 1466 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual const char_type*
23866: do_narrow(const char_type* __lo, const char_type* __hi,
23866: char __dfault, char* __to) const;
23866:
23866:
23866: void
23866: _M_initialize_ctype() throw();
23866: };
23866:
23866:
23866:
23866: template<typename _CharT>
23866: class ctype_byname : public ctype<_CharT>
23866: {
23866: public:
23866: typedef typename ctype<_CharT>::mask mask;
23866:
23866: explicit
23866: ctype_byname(const char* __s, size_t __refs = 0);
23866:
23866:
23866: explicit
23866: ctype_byname(const string& __s, size_t __refs = 0)
23866: : ctype_byname(__s.c_str(), __refs) { }
23866:
23866:
23866: protected:
23866: virtual
23866: ~ctype_byname() { }
23866: };
23866:
23866:
23866: template<>
23866: class ctype_byname<char> : public ctype<char>
23866: {
23866: public:
23866: explicit
23866: ctype_byname(const char* __s, size_t __refs = 0);
23866:
23866:
23866: explicit
23866: ctype_byname(const string& __s, size_t __refs = 0);
23866:
23866:
23866: protected:
23866: virtual
23866: ~ctype_byname();
23866: };
23866:
23866:
23866: template<>
23866: class ctype_byname<wchar_t> : public ctype<wchar_t>
23866: {
23866: public:
23866: explicit
23866: ctype_byname(const char* __s, size_t __refs = 0);
23866:
23866:
23866: explicit
23866: ctype_byname(const string& __s, size_t __refs = 0);
23866:
23866:
23866: protected:
23866: virtual
23866: ~ctype_byname();
23866: };
23866:
23866:
23866:
23866: }
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/c++/10/bits/ctype_inline.h" 1 3
23866: # 37 "/usr/include/arm-linux-gnueabihf/c++/10/bits/ctype_inline.h" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: bool
23866: ctype<char>::
23866: is(mask __m, char __c) const
23866: { return _M_table[static_cast<unsigned char>(__c)] & __m; }
23866:
23866: const char*
23866: ctype<char>::
23866: is(const char* __low, const char* __high, mask* __vec) const
23866: {
23866: while (__low < __high)
23866: *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
23866: return __high;
23866: }
23866:
23866: const char*
23866: ctype<char>::
23866: scan_is(mask __m, const char* __low, const char* __high) const
23866: {
23866: while (__low < __high
23866: && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
23866: ++__low;
23866: return __low;
23866: }
23866:
23866: const char*
23866: ctype<char>::
23866: scan_not(mask __m, const char* __low, const char* __high) const
23866: {
23866: while (__low < __high
23866: && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
23866: ++__low;
23866: return __low;
23866: }
23866:
23866:
23866: }
23866: # 1539 "/usr/include/c++/10/bits/locale_facets.h" 2 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: class __num_base
23866: {
23866: public:
23866:
23866:
23866: enum
23866: {
23866: _S_ominus,
23866: _S_oplus,
23866: _S_ox,
23866: _S_oX,
23866: _S_odigits,
23866: _S_odigits_end = _S_odigits + 16,
23866: _S_oudigits = _S_odigits_end,
23866: _S_oudigits_end = _S_oudigits + 16,
23866: _S_oe = _S_odigits + 14,
23866: _S_oE = _S_oudigits + 14,
23866: _S_oend = _S_oudigits_end
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: static const char* _S_atoms_out;
23866:
23866:
23866:
23866: static const char* _S_atoms_in;
23866:
23866: enum
23866: {
23866: _S_iminus,
23866: _S_iplus,
23866: _S_ix,
23866: _S_iX,
23866: _S_izero,
23866: _S_ie = _S_izero + 14,
23866: _S_iE = _S_izero + 20,
23866: _S_iend = 26
23866: };
23866:
23866:
23866:
23866: static void
23866: _S_format_float(const ios_base& __io, char* __fptr, char __mod) throw();
23866: };
23866:
23866: template<typename _CharT>
23866: struct __numpunct_cache : public locale::facet
23866: {
23866: const char* _M_grouping;
23866: size_t _M_grouping_size;
23866: bool _M_use_grouping;
23866: const _CharT* _M_truename;
23866: size_t _M_truename_size;
23866: const _CharT* _M_falsename;
23866: size_t _M_falsename_size;
23866: _CharT _M_decimal_point;
23866: _CharT _M_thousands_sep;
23866:
23866:
23866:
23866:
23866:
23866: _CharT _M_atoms_out[__num_base::_S_oend];
23866:
23866:
23866:
23866:
23866:
23866: _CharT _M_atoms_in[__num_base::_S_iend];
23866:
23866: bool _M_allocated;
23866:
23866: __numpunct_cache(size_t __refs = 0)
23866: : facet(__refs), _M_grouping(0), _M_grouping_size(0),
23866: _M_use_grouping(false),
23866: _M_truename(0), _M_truename_size(0), _M_falsename(0),
23866: _M_falsename_size(0), _M_decimal_point(_CharT()),
23866: _M_thousands_sep(_CharT()), _M_allocated(false)
23866: { }
23866:
23866: ~__numpunct_cache();
23866:
23866: void
23866: _M_cache(const locale& __loc);
23866:
23866: private:
23866: __numpunct_cache&
23866: operator=(const __numpunct_cache&);
23866:
23866: explicit
23866: __numpunct_cache(const __numpunct_cache&);
23866: };
23866:
23866: template<typename _CharT>
23866: __numpunct_cache<_CharT>::~__numpunct_cache()
23866: {
23866: if (_M_allocated)
23866: {
23866: delete [] _M_grouping;
23866: delete [] _M_truename;
23866: delete [] _M_falsename;
23866: }
23866: }
23866:
23866: namespace __cxx11 {
23866: # 1669 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: template<typename _CharT>
23866: class numpunct : public locale::facet
23866: {
23866: public:
23866:
23866:
23866:
23866: typedef _CharT char_type;
23866: typedef basic_string<_CharT> string_type;
23866:
23866: typedef __numpunct_cache<_CharT> __cache_type;
23866:
23866: protected:
23866: __cache_type* _M_data;
23866:
23866: public:
23866:
23866: static locale::id id;
23866:
23866:
23866:
23866:
23866:
23866:
23866: explicit
23866: numpunct(size_t __refs = 0)
23866: : facet(__refs), _M_data(0)
23866: { _M_initialize_numpunct(); }
23866: # 1707 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: explicit
23866: numpunct(__cache_type* __cache, size_t __refs = 0)
23866: : facet(__refs), _M_data(__cache)
23866: { _M_initialize_numpunct(); }
23866: # 1721 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: explicit
23866: numpunct(__c_locale __cloc, size_t __refs = 0)
23866: : facet(__refs), _M_data(0)
23866: { _M_initialize_numpunct(__cloc); }
23866: # 1735 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: char_type
23866: decimal_point() const
23866: { return this->do_decimal_point(); }
23866: # 1748 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: char_type
23866: thousands_sep() const
23866: { return this->do_thousands_sep(); }
23866: # 1779 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: string
23866: grouping() const
23866: { return this->do_grouping(); }
23866: # 1792 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: string_type
23866: truename() const
23866: { return this->do_truename(); }
23866: # 1805 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: string_type
23866: falsename() const
23866: { return this->do_falsename(); }
23866:
23866: protected:
23866:
23866: virtual
23866: ~numpunct();
23866: # 1822 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual char_type
23866: do_decimal_point() const
23866: { return _M_data->_M_decimal_point; }
23866: # 1834 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual char_type
23866: do_thousands_sep() const
23866: { return _M_data->_M_thousands_sep; }
23866: # 1847 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual string
23866: do_grouping() const
23866: { return _M_data->_M_grouping; }
23866: # 1860 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual string_type
23866: do_truename() const
23866: { return _M_data->_M_truename; }
23866: # 1873 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual string_type
23866: do_falsename() const
23866: { return _M_data->_M_falsename; }
23866:
23866:
23866: void
23866: _M_initialize_numpunct(__c_locale __cloc = 0);
23866: };
23866:
23866: template<typename _CharT>
23866: locale::id numpunct<_CharT>::id;
23866:
23866: template<>
23866: numpunct<char>::~numpunct();
23866:
23866: template<>
23866: void
23866: numpunct<char>::_M_initialize_numpunct(__c_locale __cloc);
23866:
23866:
23866: template<>
23866: numpunct<wchar_t>::~numpunct();
23866:
23866: template<>
23866: void
23866: numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc);
23866:
23866:
23866:
23866: template<typename _CharT>
23866: class numpunct_byname : public numpunct<_CharT>
23866: {
23866: public:
23866: typedef _CharT char_type;
23866: typedef basic_string<_CharT> string_type;
23866:
23866: explicit
23866: numpunct_byname(const char* __s, size_t __refs = 0)
23866: : numpunct<_CharT>(__refs)
23866: {
23866: if (__builtin_strcmp(__s, "C") != 0
23866: && __builtin_strcmp(__s, "POSIX") != 0)
23866: {
23866: __c_locale __tmp;
23866: this->_S_create_c_locale(__tmp, __s);
23866: this->_M_initialize_numpunct(__tmp);
23866: this->_S_destroy_c_locale(__tmp);
23866: }
23866: }
23866:
23866:
23866: explicit
23866: numpunct_byname(const string& __s, size_t __refs = 0)
23866: : numpunct_byname(__s.c_str(), __refs) { }
23866:
23866:
23866: protected:
23866: virtual
23866: ~numpunct_byname() { }
23866: };
23866:
23866: }
23866:
23866:
23866: # 1951 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: template<typename _CharT, typename _InIter>
23866: class num_get : public locale::facet
23866: {
23866: public:
23866:
23866:
23866:
23866: typedef _CharT char_type;
23866: typedef _InIter iter_type;
23866:
23866:
23866:
23866: static locale::id id;
23866: # 1972 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: explicit
23866: num_get(size_t __refs = 0) : facet(__refs) { }
23866: # 1998 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: iter_type
23866: get(iter_type __in, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, bool& __v) const
23866: { return this->do_get(__in, __end, __io, __err, __v); }
23866: # 2035 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: iter_type
23866: get(iter_type __in, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, long& __v) const
23866: { return this->do_get(__in, __end, __io, __err, __v); }
23866:
23866: iter_type
23866: get(iter_type __in, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, unsigned short& __v) const
23866: { return this->do_get(__in, __end, __io, __err, __v); }
23866:
23866: iter_type
23866: get(iter_type __in, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, unsigned int& __v) const
23866: { return this->do_get(__in, __end, __io, __err, __v); }
23866:
23866: iter_type
23866: get(iter_type __in, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, unsigned long& __v) const
23866: { return this->do_get(__in, __end, __io, __err, __v); }
23866:
23866:
23866: iter_type
23866: get(iter_type __in, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, long long& __v) const
23866: { return this->do_get(__in, __end, __io, __err, __v); }
23866:
23866: iter_type
23866: get(iter_type __in, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, unsigned long long& __v) const
23866: { return this->do_get(__in, __end, __io, __err, __v); }
23866: # 2095 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: iter_type
23866: get(iter_type __in, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, float& __v) const
23866: { return this->do_get(__in, __end, __io, __err, __v); }
23866:
23866: iter_type
23866: get(iter_type __in, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, double& __v) const
23866: { return this->do_get(__in, __end, __io, __err, __v); }
23866:
23866: iter_type
23866: get(iter_type __in, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, long double& __v) const
23866: { return this->do_get(__in, __end, __io, __err, __v); }
23866: # 2138 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: iter_type
23866: get(iter_type __in, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, void*& __v) const
23866: { return this->do_get(__in, __end, __io, __err, __v); }
23866:
23866: protected:
23866:
23866: virtual ~num_get() { }
23866:
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: iter_type
23866: _M_extract_float(iter_type, iter_type, ios_base&, ios_base::iostate&,
23866: string&) const;
23866:
23866: template<typename _ValueT>
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: iter_type
23866: _M_extract_int(iter_type, iter_type, ios_base&, ios_base::iostate&,
23866: _ValueT&) const;
23866:
23866: template<typename _CharT2>
23866: typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, int>::__type
23866: _M_find(const _CharT2*, size_t __len, _CharT2 __c) const
23866: {
23866: int __ret = -1;
23866: if (__len <= 10)
23866: {
23866: if (__c >= _CharT2('0') && __c < _CharT2(_CharT2('0') + __len))
23866: __ret = __c - _CharT2('0');
23866: }
23866: else
23866: {
23866: if (__c >= _CharT2('0') && __c <= _CharT2('9'))
23866: __ret = __c - _CharT2('0');
23866: else if (__c >= _CharT2('a') && __c <= _CharT2('f'))
23866: __ret = 10 + (__c - _CharT2('a'));
23866: else if (__c >= _CharT2('A') && __c <= _CharT2('F'))
23866: __ret = 10 + (__c - _CharT2('A'));
23866: }
23866: return __ret;
23866: }
23866:
23866: template<typename _CharT2>
23866: typename __gnu_cxx::__enable_if<!__is_char<_CharT2>::__value,
23866: int>::__type
23866: _M_find(const _CharT2* __zero, size_t __len, _CharT2 __c) const
23866: {
23866: int __ret = -1;
23866: const char_type* __q = char_traits<_CharT2>::find(__zero, __len, __c);
23866: if (__q)
23866: {
23866: __ret = __q - __zero;
23866: if (__ret > 15)
23866: __ret -= 6;
23866: }
23866: return __ret;
23866: }
23866: # 2211 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual iter_type
23866: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, bool&) const;
23866:
23866: virtual iter_type
23866: do_get(iter_type __beg, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, long& __v) const
23866: { return _M_extract_int(__beg, __end, __io, __err, __v); }
23866:
23866: virtual iter_type
23866: do_get(iter_type __beg, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, unsigned short& __v) const
23866: { return _M_extract_int(__beg, __end, __io, __err, __v); }
23866:
23866: virtual iter_type
23866: do_get(iter_type __beg, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, unsigned int& __v) const
23866: { return _M_extract_int(__beg, __end, __io, __err, __v); }
23866:
23866: virtual iter_type
23866: do_get(iter_type __beg, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, unsigned long& __v) const
23866: { return _M_extract_int(__beg, __end, __io, __err, __v); }
23866:
23866:
23866: virtual iter_type
23866: do_get(iter_type __beg, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, long long& __v) const
23866: { return _M_extract_int(__beg, __end, __io, __err, __v); }
23866:
23866: virtual iter_type
23866: do_get(iter_type __beg, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, unsigned long long& __v) const
23866: { return _M_extract_int(__beg, __end, __io, __err, __v); }
23866:
23866:
23866: virtual iter_type
23866: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, float&) const;
23866:
23866: virtual iter_type
23866: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&,
23866: double&) const;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: virtual iter_type
23866: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&,
23866: long double&) const;
23866:
23866:
23866: virtual iter_type
23866: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, void*&) const;
23866: # 2274 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: };
23866:
23866: template<typename _CharT, typename _InIter>
23866: locale::id num_get<_CharT, _InIter>::id;
23866: # 2292 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: template<typename _CharT, typename _OutIter>
23866: class num_put : public locale::facet
23866: {
23866: public:
23866:
23866:
23866:
23866: typedef _CharT char_type;
23866: typedef _OutIter iter_type;
23866:
23866:
23866:
23866: static locale::id id;
23866: # 2313 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: explicit
23866: num_put(size_t __refs = 0) : facet(__refs) { }
23866: # 2331 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: iter_type
23866: put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const
23866: { return this->do_put(__s, __io, __fill, __v); }
23866: # 2373 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: iter_type
23866: put(iter_type __s, ios_base& __io, char_type __fill, long __v) const
23866: { return this->do_put(__s, __io, __fill, __v); }
23866:
23866: iter_type
23866: put(iter_type __s, ios_base& __io, char_type __fill,
23866: unsigned long __v) const
23866: { return this->do_put(__s, __io, __fill, __v); }
23866:
23866:
23866: iter_type
23866: put(iter_type __s, ios_base& __io, char_type __fill, long long __v) const
23866: { return this->do_put(__s, __io, __fill, __v); }
23866:
23866: iter_type
23866: put(iter_type __s, ios_base& __io, char_type __fill,
23866: unsigned long long __v) const
23866: { return this->do_put(__s, __io, __fill, __v); }
23866: # 2436 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: iter_type
23866: put(iter_type __s, ios_base& __io, char_type __fill, double __v) const
23866: { return this->do_put(__s, __io, __fill, __v); }
23866:
23866: iter_type
23866: put(iter_type __s, ios_base& __io, char_type __fill,
23866: long double __v) const
23866: { return this->do_put(__s, __io, __fill, __v); }
23866: # 2461 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: iter_type
23866: put(iter_type __s, ios_base& __io, char_type __fill,
23866: const void* __v) const
23866: { return this->do_put(__s, __io, __fill, __v); }
23866:
23866: protected:
23866: template<typename _ValueT>
23866: iter_type
23866: _M_insert_float(iter_type, ios_base& __io, char_type __fill,
23866: char __mod, _ValueT __v) const;
23866:
23866: void
23866: _M_group_float(const char* __grouping, size_t __grouping_size,
23866: char_type __sep, const char_type* __p, char_type* __new,
23866: char_type* __cs, int& __len) const;
23866:
23866: template<typename _ValueT>
23866: iter_type
23866: _M_insert_int(iter_type, ios_base& __io, char_type __fill,
23866: _ValueT __v) const;
23866:
23866: void
23866: _M_group_int(const char* __grouping, size_t __grouping_size,
23866: char_type __sep, ios_base& __io, char_type* __new,
23866: char_type* __cs, int& __len) const;
23866:
23866: void
23866: _M_pad(char_type __fill, streamsize __w, ios_base& __io,
23866: char_type* __new, const char_type* __cs, int& __len) const;
23866:
23866:
23866: virtual
23866: ~num_put() { }
23866: # 2509 "/usr/include/c++/10/bits/locale_facets.h" 3
23866: virtual iter_type
23866: do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const;
23866:
23866: virtual iter_type
23866: do_put(iter_type __s, ios_base& __io, char_type __fill, long __v) const
23866: { return _M_insert_int(__s, __io, __fill, __v); }
23866:
23866: virtual iter_type
23866: do_put(iter_type __s, ios_base& __io, char_type __fill,
23866: unsigned long __v) const
23866: { return _M_insert_int(__s, __io, __fill, __v); }
23866:
23866:
23866: virtual iter_type
23866: do_put(iter_type __s, ios_base& __io, char_type __fill,
23866: long long __v) const
23866: { return _M_insert_int(__s, __io, __fill, __v); }
23866:
23866: virtual iter_type
23866: do_put(iter_type __s, ios_base& __io, char_type __fill,
23866: unsigned long long __v) const
23866: { return _M_insert_int(__s, __io, __fill, __v); }
23866:
23866:
23866: virtual iter_type
23866: do_put(iter_type, ios_base&, char_type, double) const;
23866:
23866:
23866:
23866:
23866:
23866:
23866: virtual iter_type
23866: do_put(iter_type, ios_base&, char_type, long double) const;
23866:
23866:
23866: virtual iter_type
23866: do_put(iter_type, ios_base&, char_type, const void*) const;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866: template <typename _CharT, typename _OutIter>
23866: locale::id num_put<_CharT, _OutIter>::id;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _CharT>
23866: inline bool
23866: isspace(_CharT __c, const locale& __loc)
23866: { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::space, __c); }
23866:
23866:
23866: template<typename _CharT>
23866: inline bool
23866: isprint(_CharT __c, const locale& __loc)
23866: { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::print, __c); }
23866:
23866:
23866: template<typename _CharT>
23866: inline bool
23866: iscntrl(_CharT __c, const locale& __loc)
23866: { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::cntrl, __c); }
23866:
23866:
23866: template<typename _CharT>
23866: inline bool
23866: isupper(_CharT __c, const locale& __loc)
23866: { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::upper, __c); }
23866:
23866:
23866: template<typename _CharT>
23866: inline bool
23866: islower(_CharT __c, const locale& __loc)
23866: { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::lower, __c); }
23866:
23866:
23866: template<typename _CharT>
23866: inline bool
23866: isalpha(_CharT __c, const locale& __loc)
23866: { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::alpha, __c); }
23866:
23866:
23866: template<typename _CharT>
23866: inline bool
23866: isdigit(_CharT __c, const locale& __loc)
23866: { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::digit, __c); }
23866:
23866:
23866: template<typename _CharT>
23866: inline bool
23866: ispunct(_CharT __c, const locale& __loc)
23866: { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::punct, __c); }
23866:
23866:
23866: template<typename _CharT>
23866: inline bool
23866: isxdigit(_CharT __c, const locale& __loc)
23866: { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::xdigit, __c); }
23866:
23866:
23866: template<typename _CharT>
23866: inline bool
23866: isalnum(_CharT __c, const locale& __loc)
23866: { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::alnum, __c); }
23866:
23866:
23866: template<typename _CharT>
23866: inline bool
23866: isgraph(_CharT __c, const locale& __loc)
23866: { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::graph, __c); }
23866:
23866:
23866:
23866: template<typename _CharT>
23866: inline bool
23866: isblank(_CharT __c, const locale& __loc)
23866: { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::blank, __c); }
23866:
23866:
23866:
23866: template<typename _CharT>
23866: inline _CharT
23866: toupper(_CharT __c, const locale& __loc)
23866: { return use_facet<ctype<_CharT> >(__loc).toupper(__c); }
23866:
23866:
23866: template<typename _CharT>
23866: inline _CharT
23866: tolower(_CharT __c, const locale& __loc)
23866: { return use_facet<ctype<_CharT> >(__loc).tolower(__c); }
23866:
23866:
23866: }
23866:
23866: # 1 "/usr/include/c++/10/bits/locale_facets.tcc" 1 3
23866: # 31 "/usr/include/c++/10/bits/locale_facets.tcc" 3
23866: #define _LOCALE_FACETS_TCC 1
23866:
23866:
23866: # 34 "/usr/include/c++/10/bits/locale_facets.tcc" 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866: template<typename _Facet>
23866: struct __use_cache
23866: {
23866: const _Facet*
23866: operator() (const locale& __loc) const;
23866: };
23866:
23866:
23866: template<typename _CharT>
23866: struct __use_cache<__numpunct_cache<_CharT> >
23866: {
23866: const __numpunct_cache<_CharT>*
23866: operator() (const locale& __loc) const
23866: {
23866: const size_t __i = numpunct<_CharT>::id._M_id();
23866: const locale::facet** __caches = __loc._M_impl->_M_caches;
23866: if (!__caches[__i])
23866: {
23866: __numpunct_cache<_CharT>* __tmp = 0;
23866: try
23866: {
23866: __tmp = new __numpunct_cache<_CharT>;
23866: __tmp->_M_cache(__loc);
23866: }
23866: catch(...)
23866: {
23866: delete __tmp;
23866: throw;
23866: }
23866: __loc._M_impl->_M_install_cache(__tmp, __i);
23866: }
23866: return static_cast<const __numpunct_cache<_CharT>*>(__caches[__i]);
23866: }
23866: };
23866:
23866: template<typename _CharT>
23866: void
23866: __numpunct_cache<_CharT>::_M_cache(const locale& __loc)
23866: {
23866: const numpunct<_CharT>& __np = use_facet<numpunct<_CharT> >(__loc);
23866:
23866: char* __grouping = 0;
23866: _CharT* __truename = 0;
23866: _CharT* __falsename = 0;
23866: try
23866: {
23866: const string& __g = __np.grouping();
23866: _M_grouping_size = __g.size();
23866: __grouping = new char[_M_grouping_size];
23866: __g.copy(__grouping, _M_grouping_size);
23866: _M_use_grouping = (_M_grouping_size
23866: && static_cast<signed char>(__grouping[0]) > 0
23866: && (__grouping[0]
23866: != __gnu_cxx::__numeric_traits<char>::__max));
23866:
23866: const basic_string<_CharT>& __tn = __np.truename();
23866: _M_truename_size = __tn.size();
23866: __truename = new _CharT[_M_truename_size];
23866: __tn.copy(__truename, _M_truename_size);
23866:
23866: const basic_string<_CharT>& __fn = __np.falsename();
23866: _M_falsename_size = __fn.size();
23866: __falsename = new _CharT[_M_falsename_size];
23866: __fn.copy(__falsename, _M_falsename_size);
23866:
23866: _M_decimal_point = __np.decimal_point();
23866: _M_thousands_sep = __np.thousands_sep();
23866:
23866: const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__loc);
23866: __ct.widen(__num_base::_S_atoms_out,
23866: __num_base::_S_atoms_out
23866: + __num_base::_S_oend, _M_atoms_out);
23866: __ct.widen(__num_base::_S_atoms_in,
23866: __num_base::_S_atoms_in
23866: + __num_base::_S_iend, _M_atoms_in);
23866:
23866: _M_grouping = __grouping;
23866: _M_truename = __truename;
23866: _M_falsename = __falsename;
23866: _M_allocated = true;
23866: }
23866: catch(...)
23866: {
23866: delete [] __grouping;
23866: delete [] __truename;
23866: delete [] __falsename;
23866: throw;
23866: }
23866: }
23866: # 139 "/usr/include/c++/10/bits/locale_facets.tcc" 3
23866: __attribute__ ((__pure__)) bool
23866: __verify_grouping(const char* __grouping, size_t __grouping_size,
23866: const string& __grouping_tmp) throw ();
23866:
23866:
23866:
23866: template<typename _CharT, typename _InIter>
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: _InIter
23866: num_get<_CharT, _InIter>::
23866: _M_extract_float(_InIter __beg, _InIter __end, ios_base& __io,
23866: ios_base::iostate& __err, string& __xtrc) const
23866: {
23866: typedef char_traits<_CharT> __traits_type;
23866: typedef __numpunct_cache<_CharT> __cache_type;
23866: __use_cache<__cache_type> __uc;
23866: const locale& __loc = __io._M_getloc();
23866: const __cache_type* __lc = __uc(__loc);
23866: const _CharT* __lit = __lc->_M_atoms_in;
23866: char_type __c = char_type();
23866:
23866:
23866: bool __testeof = __beg == __end;
23866:
23866:
23866: if (!__testeof)
23866: {
23866: __c = *__beg;
23866: const bool __plus = __c == __lit[__num_base::_S_iplus];
23866: if ((__plus || __c == __lit[__num_base::_S_iminus])
23866: && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
23866: && !(__c == __lc->_M_decimal_point))
23866: {
23866: __xtrc += __plus ? '+' : '-';
23866: if (++__beg != __end)
23866: __c = *__beg;
23866: else
23866: __testeof = true;
23866: }
23866: }
23866:
23866:
23866: bool __found_mantissa = false;
23866: int __sep_pos = 0;
23866: while (!__testeof)
23866: {
23866: if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
23866: || __c == __lc->_M_decimal_point)
23866: break;
23866: else if (__c == __lit[__num_base::_S_izero])
23866: {
23866: if (!__found_mantissa)
23866: {
23866: __xtrc += '0';
23866: __found_mantissa = true;
23866: }
23866: ++__sep_pos;
23866:
23866: if (++__beg != __end)
23866: __c = *__beg;
23866: else
23866: __testeof = true;
23866: }
23866: else
23866: break;
23866: }
23866:
23866:
23866: bool __found_dec = false;
23866: bool __found_sci = false;
23866: string __found_grouping;
23866: if (__lc->_M_use_grouping)
23866: __found_grouping.reserve(32);
23866: const char_type* __lit_zero = __lit + __num_base::_S_izero;
23866:
23866: if (!__lc->_M_allocated)
23866:
23866: while (!__testeof)
23866: {
23866: const int __digit = _M_find(__lit_zero, 10, __c);
23866: if (__digit != -1)
23866: {
23866: __xtrc += '0' + __digit;
23866: __found_mantissa = true;
23866: }
23866: else if (__c == __lc->_M_decimal_point
23866: && !__found_dec && !__found_sci)
23866: {
23866: __xtrc += '.';
23866: __found_dec = true;
23866: }
23866: else if ((__c == __lit[__num_base::_S_ie]
23866: || __c == __lit[__num_base::_S_iE])
23866: && !__found_sci && __found_mantissa)
23866: {
23866:
23866: __xtrc += 'e';
23866: __found_sci = true;
23866:
23866:
23866: if (++__beg != __end)
23866: {
23866: __c = *__beg;
23866: const bool __plus = __c == __lit[__num_base::_S_iplus];
23866: if (__plus || __c == __lit[__num_base::_S_iminus])
23866: __xtrc += __plus ? '+' : '-';
23866: else
23866: continue;
23866: }
23866: else
23866: {
23866: __testeof = true;
23866: break;
23866: }
23866: }
23866: else
23866: break;
23866:
23866: if (++__beg != __end)
23866: __c = *__beg;
23866: else
23866: __testeof = true;
23866: }
23866: else
23866: while (!__testeof)
23866: {
23866:
23866:
23866: if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
23866: {
23866: if (!__found_dec && !__found_sci)
23866: {
23866:
23866:
23866: if (__sep_pos)
23866: {
23866: __found_grouping += static_cast<char>(__sep_pos);
23866: __sep_pos = 0;
23866: }
23866: else
23866: {
23866:
23866:
23866: __xtrc.clear();
23866: break;
23866: }
23866: }
23866: else
23866: break;
23866: }
23866: else if (__c == __lc->_M_decimal_point)
23866: {
23866: if (!__found_dec && !__found_sci)
23866: {
23866:
23866:
23866:
23866: if (__found_grouping.size())
23866: __found_grouping += static_cast<char>(__sep_pos);
23866: __xtrc += '.';
23866: __found_dec = true;
23866: }
23866: else
23866: break;
23866: }
23866: else
23866: {
23866: const char_type* __q =
23866: __traits_type::find(__lit_zero, 10, __c);
23866: if (__q)
23866: {
23866: __xtrc += '0' + (__q - __lit_zero);
23866: __found_mantissa = true;
23866: ++__sep_pos;
23866: }
23866: else if ((__c == __lit[__num_base::_S_ie]
23866: || __c == __lit[__num_base::_S_iE])
23866: && !__found_sci && __found_mantissa)
23866: {
23866:
23866: if (__found_grouping.size() && !__found_dec)
23866: __found_grouping += static_cast<char>(__sep_pos);
23866: __xtrc += 'e';
23866: __found_sci = true;
23866:
23866:
23866: if (++__beg != __end)
23866: {
23866: __c = *__beg;
23866: const bool __plus = __c == __lit[__num_base::_S_iplus];
23866: if ((__plus || __c == __lit[__num_base::_S_iminus])
23866: && !(__lc->_M_use_grouping
23866: && __c == __lc->_M_thousands_sep)
23866: && !(__c == __lc->_M_decimal_point))
23866: __xtrc += __plus ? '+' : '-';
23866: else
23866: continue;
23866: }
23866: else
23866: {
23866: __testeof = true;
23866: break;
23866: }
23866: }
23866: else
23866: break;
23866: }
23866:
23866: if (++__beg != __end)
23866: __c = *__beg;
23866: else
23866: __testeof = true;
23866: }
23866:
23866:
23866:
23866: if (__found_grouping.size())
23866: {
23866:
23866: if (!__found_dec && !__found_sci)
23866: __found_grouping += static_cast<char>(__sep_pos);
23866:
23866: if (!std::__verify_grouping(__lc->_M_grouping,
23866: __lc->_M_grouping_size,
23866: __found_grouping))
23866: __err = ios_base::failbit;
23866: }
23866:
23866: return __beg;
23866: }
23866:
23866: template<typename _CharT, typename _InIter>
23866: template<typename _ValueT>
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: _InIter
23866: num_get<_CharT, _InIter>::
23866: _M_extract_int(_InIter __beg, _InIter __end, ios_base& __io,
23866: ios_base::iostate& __err, _ValueT& __v) const
23866: {
23866: typedef char_traits<_CharT> __traits_type;
23866: using __gnu_cxx::__add_unsigned;
23866: typedef typename __add_unsigned<_ValueT>::__type __unsigned_type;
23866: typedef __numpunct_cache<_CharT> __cache_type;
23866: __use_cache<__cache_type> __uc;
23866: const locale& __loc = __io._M_getloc();
23866: const __cache_type* __lc = __uc(__loc);
23866: const _CharT* __lit = __lc->_M_atoms_in;
23866: char_type __c = char_type();
23866:
23866:
23866: const ios_base::fmtflags __basefield = __io.flags()
23866: & ios_base::basefield;
23866: const bool __oct = __basefield == ios_base::oct;
23866: int __base = __oct ? 8 : (__basefield == ios_base::hex ? 16 : 10);
23866:
23866:
23866: bool __testeof = __beg == __end;
23866:
23866:
23866: bool __negative = false;
23866: if (!__testeof)
23866: {
23866: __c = *__beg;
23866: __negative = __c == __lit[__num_base::_S_iminus];
23866: if ((__negative || __c == __lit[__num_base::_S_iplus])
23866: && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
23866: && !(__c == __lc->_M_decimal_point))
23866: {
23866: if (++__beg != __end)
23866: __c = *__beg;
23866: else
23866: __testeof = true;
23866: }
23866: }
23866:
23866:
23866:
23866: bool __found_zero = false;
23866: int __sep_pos = 0;
23866: while (!__testeof)
23866: {
23866: if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
23866: || __c == __lc->_M_decimal_point)
23866: break;
23866: else if (__c == __lit[__num_base::_S_izero]
23866: && (!__found_zero || __base == 10))
23866: {
23866: __found_zero = true;
23866: ++__sep_pos;
23866: if (__basefield == 0)
23866: __base = 8;
23866: if (__base == 8)
23866: __sep_pos = 0;
23866: }
23866: else if (__found_zero
23866: && (__c == __lit[__num_base::_S_ix]
23866: || __c == __lit[__num_base::_S_iX]))
23866: {
23866: if (__basefield == 0)
23866: __base = 16;
23866: if (__base == 16)
23866: {
23866: __found_zero = false;
23866: __sep_pos = 0;
23866: }
23866: else
23866: break;
23866: }
23866: else
23866: break;
23866:
23866: if (++__beg != __end)
23866: {
23866: __c = *__beg;
23866: if (!__found_zero)
23866: break;
23866: }
23866: else
23866: __testeof = true;
23866: }
23866:
23866:
23866:
23866: const size_t __len = (__base == 16 ? __num_base::_S_iend
23866: - __num_base::_S_izero : __base);
23866:
23866:
23866: typedef __gnu_cxx::__numeric_traits<_ValueT> __num_traits;
23866: string __found_grouping;
23866: if (__lc->_M_use_grouping)
23866: __found_grouping.reserve(32);
23866: bool __testfail = false;
23866: bool __testoverflow = false;
23866: const __unsigned_type __max =
23866: (__negative && __num_traits::__is_signed)
23866: ? -static_cast<__unsigned_type>(__num_traits::__min)
23866: : __num_traits::__max;
23866: const __unsigned_type __smax = __max / __base;
23866: __unsigned_type __result = 0;
23866: int __digit = 0;
23866: const char_type* __lit_zero = __lit + __num_base::_S_izero;
23866:
23866: if (!__lc->_M_allocated)
23866:
23866: while (!__testeof)
23866: {
23866: __digit = _M_find(__lit_zero, __len, __c);
23866: if (__digit == -1)
23866: break;
23866:
23866: if (__result > __smax)
23866: __testoverflow = true;
23866: else
23866: {
23866: __result *= __base;
23866: __testoverflow |= __result > __max - __digit;
23866: __result += __digit;
23866: ++__sep_pos;
23866: }
23866:
23866: if (++__beg != __end)
23866: __c = *__beg;
23866: else
23866: __testeof = true;
23866: }
23866: else
23866: while (!__testeof)
23866: {
23866:
23866:
23866: if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
23866: {
23866:
23866:
23866: if (__sep_pos)
23866: {
23866: __found_grouping += static_cast<char>(__sep_pos);
23866: __sep_pos = 0;
23866: }
23866: else
23866: {
23866: __testfail = true;
23866: break;
23866: }
23866: }
23866: else if (__c == __lc->_M_decimal_point)
23866: break;
23866: else
23866: {
23866: const char_type* __q =
23866: __traits_type::find(__lit_zero, __len, __c);
23866: if (!__q)
23866: break;
23866:
23866: __digit = __q - __lit_zero;
23866: if (__digit > 15)
23866: __digit -= 6;
23866: if (__result > __smax)
23866: __testoverflow = true;
23866: else
23866: {
23866: __result *= __base;
23866: __testoverflow |= __result > __max - __digit;
23866: __result += __digit;
23866: ++__sep_pos;
23866: }
23866: }
23866:
23866: if (++__beg != __end)
23866: __c = *__beg;
23866: else
23866: __testeof = true;
23866: }
23866:
23866:
23866:
23866: if (__found_grouping.size())
23866: {
23866:
23866: __found_grouping += static_cast<char>(__sep_pos);
23866:
23866: if (!std::__verify_grouping(__lc->_M_grouping,
23866: __lc->_M_grouping_size,
23866: __found_grouping))
23866: __err = ios_base::failbit;
23866: }
23866:
23866:
23866:
23866: if ((!__sep_pos && !__found_zero && !__found_grouping.size())
23866: || __testfail)
23866: {
23866: __v = 0;
23866: __err = ios_base::failbit;
23866: }
23866: else if (__testoverflow)
23866: {
23866: if (__negative && __num_traits::__is_signed)
23866: __v = __num_traits::__min;
23866: else
23866: __v = __num_traits::__max;
23866: __err = ios_base::failbit;
23866: }
23866: else
23866: __v = __negative ? -__result : __result;
23866:
23866: if (__testeof)
23866: __err |= ios_base::eofbit;
23866: return __beg;
23866: }
23866:
23866:
23866:
23866: template<typename _CharT, typename _InIter>
23866: _InIter
23866: num_get<_CharT, _InIter>::
23866: do_get(iter_type __beg, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, bool& __v) const
23866: {
23866: if (!(__io.flags() & ios_base::boolalpha))
23866: {
23866:
23866:
23866:
23866: long __l = -1;
23866: __beg = _M_extract_int(__beg, __end, __io, __err, __l);
23866: if (__l == 0 || __l == 1)
23866: __v = bool(__l);
23866: else
23866: {
23866:
23866:
23866: __v = true;
23866: __err = ios_base::failbit;
23866: if (__beg == __end)
23866: __err |= ios_base::eofbit;
23866: }
23866: }
23866: else
23866: {
23866:
23866: typedef __numpunct_cache<_CharT> __cache_type;
23866: __use_cache<__cache_type> __uc;
23866: const locale& __loc = __io._M_getloc();
23866: const __cache_type* __lc = __uc(__loc);
23866:
23866: bool __testf = true;
23866: bool __testt = true;
23866: bool __donef = __lc->_M_falsename_size == 0;
23866: bool __donet = __lc->_M_truename_size == 0;
23866: bool __testeof = false;
23866: size_t __n = 0;
23866: while (!__donef || !__donet)
23866: {
23866: if (__beg == __end)
23866: {
23866: __testeof = true;
23866: break;
23866: }
23866:
23866: const char_type __c = *__beg;
23866:
23866: if (!__donef)
23866: __testf = __c == __lc->_M_falsename[__n];
23866:
23866: if (!__testf && __donet)
23866: break;
23866:
23866: if (!__donet)
23866: __testt = __c == __lc->_M_truename[__n];
23866:
23866: if (!__testt && __donef)
23866: break;
23866:
23866: if (!__testt && !__testf)
23866: break;
23866:
23866: ++__n;
23866: ++__beg;
23866:
23866: __donef = !__testf || __n >= __lc->_M_falsename_size;
23866: __donet = !__testt || __n >= __lc->_M_truename_size;
23866: }
23866: if (__testf && __n == __lc->_M_falsename_size && __n)
23866: {
23866: __v = false;
23866: if (__testt && __n == __lc->_M_truename_size)
23866: __err = ios_base::failbit;
23866: else
23866: __err = __testeof ? ios_base::eofbit : ios_base::goodbit;
23866: }
23866: else if (__testt && __n == __lc->_M_truename_size && __n)
23866: {
23866: __v = true;
23866: __err = __testeof ? ios_base::eofbit : ios_base::goodbit;
23866: }
23866: else
23866: {
23866:
23866:
23866: __v = false;
23866: __err = ios_base::failbit;
23866: if (__testeof)
23866: __err |= ios_base::eofbit;
23866: }
23866: }
23866: return __beg;
23866: }
23866:
23866: template<typename _CharT, typename _InIter>
23866: _InIter
23866: num_get<_CharT, _InIter>::
23866: do_get(iter_type __beg, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, float& __v) const
23866: {
23866: string __xtrc;
23866: __xtrc.reserve(32);
23866: __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
23866: std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
23866: if (__beg == __end)
23866: __err |= ios_base::eofbit;
23866: return __beg;
23866: }
23866:
23866: template<typename _CharT, typename _InIter>
23866: _InIter
23866: num_get<_CharT, _InIter>::
23866: do_get(iter_type __beg, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, double& __v) const
23866: {
23866: string __xtrc;
23866: __xtrc.reserve(32);
23866: __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
23866: std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
23866: if (__beg == __end)
23866: __err |= ios_base::eofbit;
23866: return __beg;
23866: }
23866: # 735 "/usr/include/c++/10/bits/locale_facets.tcc" 3
23866: template<typename _CharT, typename _InIter>
23866: _InIter
23866: num_get<_CharT, _InIter>::
23866: do_get(iter_type __beg, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, long double& __v) const
23866: {
23866: string __xtrc;
23866: __xtrc.reserve(32);
23866: __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
23866: std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
23866: if (__beg == __end)
23866: __err |= ios_base::eofbit;
23866: return __beg;
23866: }
23866:
23866: template<typename _CharT, typename _InIter>
23866: _InIter
23866: num_get<_CharT, _InIter>::
23866: do_get(iter_type __beg, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, void*& __v) const
23866: {
23866:
23866: typedef ios_base::fmtflags fmtflags;
23866: const fmtflags __fmt = __io.flags();
23866: __io.flags((__fmt & ~ios_base::basefield) | ios_base::hex);
23866:
23866: typedef __gnu_cxx::__conditional_type<(sizeof(void*)
23866: <= sizeof(unsigned long)),
23866: unsigned long, unsigned long long>::__type _UIntPtrType;
23866:
23866: _UIntPtrType __ul;
23866: __beg = _M_extract_int(__beg, __end, __io, __err, __ul);
23866:
23866:
23866: __io.flags(__fmt);
23866:
23866: __v = reinterpret_cast<void*>(__ul);
23866: return __beg;
23866: }
23866:
23866:
23866:
23866: template<typename _CharT, typename _OutIter>
23866: void
23866: num_put<_CharT, _OutIter>::
23866: _M_pad(_CharT __fill, streamsize __w, ios_base& __io,
23866: _CharT* __new, const _CharT* __cs, int& __len) const
23866: {
23866:
23866:
23866: __pad<_CharT, char_traits<_CharT> >::_S_pad(__io, __fill, __new,
23866: __cs, __w, __len);
23866: __len = static_cast<int>(__w);
23866: }
23866:
23866:
23866:
23866: template<typename _CharT, typename _ValueT>
23866: int
23866: __int_to_char(_CharT* __bufend, _ValueT __v, const _CharT* __lit,
23866: ios_base::fmtflags __flags, bool __dec)
23866: {
23866: _CharT* __buf = __bufend;
23866: if (__builtin_expect(__dec, true))
23866: {
23866:
23866: do
23866: {
23866: *--__buf = __lit[(__v % 10) + __num_base::_S_odigits];
23866: __v /= 10;
23866: }
23866: while (__v != 0);
23866: }
23866: else if ((__flags & ios_base::basefield) == ios_base::oct)
23866: {
23866:
23866: do
23866: {
23866: *--__buf = __lit[(__v & 0x7) + __num_base::_S_odigits];
23866: __v >>= 3;
23866: }
23866: while (__v != 0);
23866: }
23866: else
23866: {
23866:
23866: const bool __uppercase = __flags & ios_base::uppercase;
23866: const int __case_offset = __uppercase ? __num_base::_S_oudigits
23866: : __num_base::_S_odigits;
23866: do
23866: {
23866: *--__buf = __lit[(__v & 0xf) + __case_offset];
23866: __v >>= 4;
23866: }
23866: while (__v != 0);
23866: }
23866: return __bufend - __buf;
23866: }
23866:
23866:
23866:
23866: template<typename _CharT, typename _OutIter>
23866: void
23866: num_put<_CharT, _OutIter>::
23866: _M_group_int(const char* __grouping, size_t __grouping_size, _CharT __sep,
23866: ios_base&, _CharT* __new, _CharT* __cs, int& __len) const
23866: {
23866: _CharT* __p = std::__add_grouping(__new, __sep, __grouping,
23866: __grouping_size, __cs, __cs + __len);
23866: __len = __p - __new;
23866: }
23866:
23866: template<typename _CharT, typename _OutIter>
23866: template<typename _ValueT>
23866: _OutIter
23866: num_put<_CharT, _OutIter>::
23866: _M_insert_int(_OutIter __s, ios_base& __io, _CharT __fill,
23866: _ValueT __v) const
23866: {
23866: using __gnu_cxx::__add_unsigned;
23866: typedef typename __add_unsigned<_ValueT>::__type __unsigned_type;
23866: typedef __numpunct_cache<_CharT> __cache_type;
23866: __use_cache<__cache_type> __uc;
23866: const locale& __loc = __io._M_getloc();
23866: const __cache_type* __lc = __uc(__loc);
23866: const _CharT* __lit = __lc->_M_atoms_out;
23866: const ios_base::fmtflags __flags = __io.flags();
23866:
23866:
23866: const int __ilen = 5 * sizeof(_ValueT);
23866: _CharT* __cs = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
23866: * __ilen));
23866:
23866:
23866:
23866: const ios_base::fmtflags __basefield = __flags & ios_base::basefield;
23866: const bool __dec = (__basefield != ios_base::oct
23866: && __basefield != ios_base::hex);
23866: const __unsigned_type __u = ((__v > 0 || !__dec)
23866: ? __unsigned_type(__v)
23866: : -__unsigned_type(__v));
23866: int __len = __int_to_char(__cs + __ilen, __u, __lit, __flags, __dec);
23866: __cs += __ilen - __len;
23866:
23866:
23866: if (__lc->_M_use_grouping)
23866: {
23866:
23866:
23866: _CharT* __cs2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
23866: * (__len + 1)
23866: * 2));
23866: _M_group_int(__lc->_M_grouping, __lc->_M_grouping_size,
23866: __lc->_M_thousands_sep, __io, __cs2 + 2, __cs, __len);
23866: __cs = __cs2 + 2;
23866: }
23866:
23866:
23866: if (__builtin_expect(__dec, true))
23866: {
23866:
23866: if (__v >= 0)
23866: {
23866: if (bool(__flags & ios_base::showpos)
23866: && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed)
23866: *--__cs = __lit[__num_base::_S_oplus], ++__len;
23866: }
23866: else
23866: *--__cs = __lit[__num_base::_S_ominus], ++__len;
23866: }
23866: else if (bool(__flags & ios_base::showbase) && __v)
23866: {
23866: if (__basefield == ios_base::oct)
23866: *--__cs = __lit[__num_base::_S_odigits], ++__len;
23866: else
23866: {
23866:
23866: const bool __uppercase = __flags & ios_base::uppercase;
23866: *--__cs = __lit[__num_base::_S_ox + __uppercase];
23866:
23866: *--__cs = __lit[__num_base::_S_odigits];
23866: __len += 2;
23866: }
23866: }
23866:
23866:
23866: const streamsize __w = __io.width();
23866: if (__w > static_cast<streamsize>(__len))
23866: {
23866: _CharT* __cs3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
23866: * __w));
23866: _M_pad(__fill, __w, __io, __cs3, __cs, __len);
23866: __cs = __cs3;
23866: }
23866: __io.width(0);
23866:
23866:
23866:
23866: return std::__write(__s, __cs, __len);
23866: }
23866:
23866: template<typename _CharT, typename _OutIter>
23866: void
23866: num_put<_CharT, _OutIter>::
23866: _M_group_float(const char* __grouping, size_t __grouping_size,
23866: _CharT __sep, const _CharT* __p, _CharT* __new,
23866: _CharT* __cs, int& __len) const
23866: {
23866:
23866:
23866:
23866: const int __declen = __p ? __p - __cs : __len;
23866: _CharT* __p2 = std::__add_grouping(__new, __sep, __grouping,
23866: __grouping_size,
23866: __cs, __cs + __declen);
23866:
23866:
23866: int __newlen = __p2 - __new;
23866: if (__p)
23866: {
23866: char_traits<_CharT>::copy(__p2, __p, __len - __declen);
23866: __newlen += __len - __declen;
23866: }
23866: __len = __newlen;
23866: }
23866: # 971 "/usr/include/c++/10/bits/locale_facets.tcc" 3
23866: template<typename _CharT, typename _OutIter>
23866: template<typename _ValueT>
23866: _OutIter
23866: num_put<_CharT, _OutIter>::
23866: _M_insert_float(_OutIter __s, ios_base& __io, _CharT __fill, char __mod,
23866: _ValueT __v) const
23866: {
23866: typedef __numpunct_cache<_CharT> __cache_type;
23866: __use_cache<__cache_type> __uc;
23866: const locale& __loc = __io._M_getloc();
23866: const __cache_type* __lc = __uc(__loc);
23866:
23866:
23866: const streamsize __prec = __io.precision() < 0 ? 6 : __io.precision();
23866:
23866: const int __max_digits =
23866: __gnu_cxx::__numeric_traits<_ValueT>::__digits10;
23866:
23866:
23866: int __len;
23866:
23866: char __fbuf[16];
23866: __num_base::_S_format_float(__io, __fbuf, __mod);
23866:
23866:
23866:
23866: const bool __use_prec =
23866: (__io.flags() & ios_base::floatfield) != ios_base::floatfield;
23866:
23866:
23866:
23866: int __cs_size = __max_digits * 3;
23866: char* __cs = static_cast<char*>(__builtin_alloca(__cs_size));
23866: if (__use_prec)
23866: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,
23866: __fbuf, __prec, __v);
23866: else
23866: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,
23866: __fbuf, __v);
23866:
23866:
23866: if (__len >= __cs_size)
23866: {
23866: __cs_size = __len + 1;
23866: __cs = static_cast<char*>(__builtin_alloca(__cs_size));
23866: if (__use_prec)
23866: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,
23866: __fbuf, __prec, __v);
23866: else
23866: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,
23866: __fbuf, __v);
23866: }
23866: # 1044 "/usr/include/c++/10/bits/locale_facets.tcc" 3
23866: const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
23866:
23866: _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
23866: * __len));
23866: __ctype.widen(__cs, __cs + __len, __ws);
23866:
23866:
23866: _CharT* __wp = 0;
23866: const char* __p = char_traits<char>::find(__cs, __len, '.');
23866: if (__p)
23866: {
23866: __wp = __ws + (__p - __cs);
23866: *__wp = __lc->_M_decimal_point;
23866: }
23866:
23866:
23866:
23866:
23866: if (__lc->_M_use_grouping
23866: && (__wp || __len < 3 || (__cs[1] <= '9' && __cs[2] <= '9'
23866: && __cs[1] >= '0' && __cs[2] >= '0')))
23866: {
23866:
23866:
23866: _CharT* __ws2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
23866: * __len * 2));
23866:
23866: streamsize __off = 0;
23866: if (__cs[0] == '-' || __cs[0] == '+')
23866: {
23866: __off = 1;
23866: __ws2[0] = __ws[0];
23866: __len -= 1;
23866: }
23866:
23866: _M_group_float(__lc->_M_grouping, __lc->_M_grouping_size,
23866: __lc->_M_thousands_sep, __wp, __ws2 + __off,
23866: __ws + __off, __len);
23866: __len += __off;
23866:
23866: __ws = __ws2;
23866: }
23866:
23866:
23866: const streamsize __w = __io.width();
23866: if (__w > static_cast<streamsize>(__len))
23866: {
23866: _CharT* __ws3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
23866: * __w));
23866: _M_pad(__fill, __w, __io, __ws3, __ws, __len);
23866: __ws = __ws3;
23866: }
23866: __io.width(0);
23866:
23866:
23866:
23866: return std::__write(__s, __ws, __len);
23866: }
23866:
23866: template<typename _CharT, typename _OutIter>
23866: _OutIter
23866: num_put<_CharT, _OutIter>::
23866: do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const
23866: {
23866: const ios_base::fmtflags __flags = __io.flags();
23866: if ((__flags & ios_base::boolalpha) == 0)
23866: {
23866: const long __l = __v;
23866: __s = _M_insert_int(__s, __io, __fill, __l);
23866: }
23866: else
23866: {
23866: typedef __numpunct_cache<_CharT> __cache_type;
23866: __use_cache<__cache_type> __uc;
23866: const locale& __loc = __io._M_getloc();
23866: const __cache_type* __lc = __uc(__loc);
23866:
23866: const _CharT* __name = __v ? __lc->_M_truename
23866: : __lc->_M_falsename;
23866: int __len = __v ? __lc->_M_truename_size
23866: : __lc->_M_falsename_size;
23866:
23866: const streamsize __w = __io.width();
23866: if (__w > static_cast<streamsize>(__len))
23866: {
23866: const streamsize __plen = __w - __len;
23866: _CharT* __ps
23866: = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
23866: * __plen));
23866:
23866: char_traits<_CharT>::assign(__ps, __plen, __fill);
23866: __io.width(0);
23866:
23866: if ((__flags & ios_base::adjustfield) == ios_base::left)
23866: {
23866: __s = std::__write(__s, __name, __len);
23866: __s = std::__write(__s, __ps, __plen);
23866: }
23866: else
23866: {
23866: __s = std::__write(__s, __ps, __plen);
23866: __s = std::__write(__s, __name, __len);
23866: }
23866: return __s;
23866: }
23866: __io.width(0);
23866: __s = std::__write(__s, __name, __len);
23866: }
23866: return __s;
23866: }
23866:
23866: template<typename _CharT, typename _OutIter>
23866: _OutIter
23866: num_put<_CharT, _OutIter>::
23866: do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const
23866: { return _M_insert_float(__s, __io, __fill, char(), __v); }
23866: # 1169 "/usr/include/c++/10/bits/locale_facets.tcc" 3
23866: template<typename _CharT, typename _OutIter>
23866: _OutIter
23866: num_put<_CharT, _OutIter>::
23866: do_put(iter_type __s, ios_base& __io, char_type __fill,
23866: long double __v) const
23866: { return _M_insert_float(__s, __io, __fill, 'L', __v); }
23866:
23866: template<typename _CharT, typename _OutIter>
23866: _OutIter
23866: num_put<_CharT, _OutIter>::
23866: do_put(iter_type __s, ios_base& __io, char_type __fill,
23866: const void* __v) const
23866: {
23866: const ios_base::fmtflags __flags = __io.flags();
23866: const ios_base::fmtflags __fmt = ~(ios_base::basefield
23866: | ios_base::uppercase);
23866: __io.flags((__flags & __fmt) | (ios_base::hex | ios_base::showbase));
23866:
23866: typedef __gnu_cxx::__conditional_type<(sizeof(const void*)
23866: <= sizeof(unsigned long)),
23866: unsigned long, unsigned long long>::__type _UIntPtrType;
23866:
23866: __s = _M_insert_int(__s, __io, __fill,
23866: reinterpret_cast<_UIntPtrType>(__v));
23866: __io.flags(__flags);
23866: return __s;
23866: }
23866:
23866:
23866: # 1206 "/usr/include/c++/10/bits/locale_facets.tcc" 3
23866: template<typename _CharT, typename _Traits>
23866: void
23866: __pad<_CharT, _Traits>::_S_pad(ios_base& __io, _CharT __fill,
23866: _CharT* __news, const _CharT* __olds,
23866: streamsize __newlen, streamsize __oldlen)
23866: {
23866: const size_t __plen = static_cast<size_t>(__newlen - __oldlen);
23866: const ios_base::fmtflags __adjust = __io.flags() & ios_base::adjustfield;
23866:
23866:
23866: if (__adjust == ios_base::left)
23866: {
23866: _Traits::copy(__news, __olds, __oldlen);
23866: _Traits::assign(__news + __oldlen, __plen, __fill);
23866: return;
23866: }
23866:
23866: size_t __mod = 0;
23866: if (__adjust == ios_base::internal)
23866: {
23866:
23866:
23866:
23866: const locale& __loc = __io._M_getloc();
23866: const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
23866:
23866: if (__ctype.widen('-') == __olds[0]
23866: || __ctype.widen('+') == __olds[0])
23866: {
23866: __news[0] = __olds[0];
23866: __mod = 1;
23866: ++__news;
23866: }
23866: else if (__ctype.widen('0') == __olds[0]
23866: && __oldlen > 1
23866: && (__ctype.widen('x') == __olds[1]
23866: || __ctype.widen('X') == __olds[1]))
23866: {
23866: __news[0] = __olds[0];
23866: __news[1] = __olds[1];
23866: __mod = 2;
23866: __news += 2;
23866: }
23866:
23866: }
23866: _Traits::assign(__news, __plen, __fill);
23866: _Traits::copy(__news + __plen, __olds + __mod, __oldlen - __mod);
23866: }
23866:
23866: template<typename _CharT>
23866: _CharT*
23866: __add_grouping(_CharT* __s, _CharT __sep,
23866: const char* __gbeg, size_t __gsize,
23866: const _CharT* __first, const _CharT* __last)
23866: {
23866: size_t __idx = 0;
23866: size_t __ctr = 0;
23866:
23866: while (__last - __first > __gbeg[__idx]
23866: && static_cast<signed char>(__gbeg[__idx]) > 0
23866: && __gbeg[__idx] != __gnu_cxx::__numeric_traits<char>::__max)
23866: {
23866: __last -= __gbeg[__idx];
23866: __idx < __gsize - 1 ? ++__idx : ++__ctr;
23866: }
23866:
23866: while (__first != __last)
23866: *__s++ = *__first++;
23866:
23866: while (__ctr--)
23866: {
23866: *__s++ = __sep;
23866: for (char __i = __gbeg[__idx]; __i > 0; --__i)
23866: *__s++ = *__first++;
23866: }
23866:
23866: while (__idx--)
23866: {
23866: *__s++ = __sep;
23866: for (char __i = __gbeg[__idx]; __i > 0; --__i)
23866: *__s++ = *__first++;
23866: }
23866:
23866: return __s;
23866: }
23866:
23866:
23866:
23866:
23866: extern template class __cxx11:: numpunct<char>;
23866: extern template class __cxx11:: numpunct_byname<char>;
23866: extern template class num_get<char>;
23866: extern template class num_put<char>;
23866: extern template class ctype_byname<char>;
23866:
23866: extern template
23866: const ctype<char>&
23866: use_facet<ctype<char> >(const locale&);
23866:
23866: extern template
23866: const numpunct<char>&
23866: use_facet<numpunct<char> >(const locale&);
23866:
23866: extern template
23866: const num_put<char>&
23866: use_facet<num_put<char> >(const locale&);
23866:
23866: extern template
23866: const num_get<char>&
23866: use_facet<num_get<char> >(const locale&);
23866:
23866: extern template
23866: bool
23866: has_facet<ctype<char> >(const locale&);
23866:
23866: extern template
23866: bool
23866: has_facet<numpunct<char> >(const locale&);
23866:
23866: extern template
23866: bool
23866: has_facet<num_put<char> >(const locale&);
23866:
23866: extern template
23866: bool
23866: has_facet<num_get<char> >(const locale&);
23866:
23866:
23866: extern template class __cxx11:: numpunct<wchar_t>;
23866: extern template class __cxx11:: numpunct_byname<wchar_t>;
23866: extern template class num_get<wchar_t>;
23866: extern template class num_put<wchar_t>;
23866: extern template class ctype_byname<wchar_t>;
23866:
23866: extern template
23866: const ctype<wchar_t>&
23866: use_facet<ctype<wchar_t> >(const locale&);
23866:
23866: extern template
23866: const numpunct<wchar_t>&
23866: use_facet<numpunct<wchar_t> >(const locale&);
23866:
23866: extern template
23866: const num_put<wchar_t>&
23866: use_facet<num_put<wchar_t> >(const locale&);
23866:
23866: extern template
23866: const num_get<wchar_t>&
23866: use_facet<num_get<wchar_t> >(const locale&);
23866:
23866: extern template
23866: bool
23866: has_facet<ctype<wchar_t> >(const locale&);
23866:
23866: extern template
23866: bool
23866: has_facet<numpunct<wchar_t> >(const locale&);
23866:
23866: extern template
23866: bool
23866: has_facet<num_put<wchar_t> >(const locale&);
23866:
23866: extern template
23866: bool
23866: has_facet<num_get<wchar_t> >(const locale&);
23866:
23866:
23866:
23866:
23866: }
23866: # 2656 "/usr/include/c++/10/bits/locale_facets.h" 2 3
23866: # 41 "/usr/include/c++/10/locale" 2 3
23866: # 1 "/usr/include/c++/10/bits/locale_facets_nonio.h" 1 3
23866: # 35 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: #define _LOCALE_FACETS_NONIO_H 1
23866:
23866:
23866: # 38 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866:
23866: # 1 "/usr/include/c++/10/ctime" 1 3
23866: # 39 "/usr/include/c++/10/ctime" 3
23866:
23866: # 40 "/usr/include/c++/10/ctime" 3
23866: # 40 "/usr/include/c++/10/bits/locale_facets_nonio.h" 2 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 52 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: class time_base
23866: {
23866: public:
23866: enum dateorder { no_order, dmy, mdy, ymd, ydm };
23866: };
23866:
23866: template<typename _CharT>
23866: struct __timepunct_cache : public locale::facet
23866: {
23866:
23866: static const _CharT* _S_timezones[14];
23866:
23866: const _CharT* _M_date_format;
23866: const _CharT* _M_date_era_format;
23866: const _CharT* _M_time_format;
23866: const _CharT* _M_time_era_format;
23866: const _CharT* _M_date_time_format;
23866: const _CharT* _M_date_time_era_format;
23866: const _CharT* _M_am;
23866: const _CharT* _M_pm;
23866: const _CharT* _M_am_pm_format;
23866:
23866:
23866: const _CharT* _M_day1;
23866: const _CharT* _M_day2;
23866: const _CharT* _M_day3;
23866: const _CharT* _M_day4;
23866: const _CharT* _M_day5;
23866: const _CharT* _M_day6;
23866: const _CharT* _M_day7;
23866:
23866:
23866: const _CharT* _M_aday1;
23866: const _CharT* _M_aday2;
23866: const _CharT* _M_aday3;
23866: const _CharT* _M_aday4;
23866: const _CharT* _M_aday5;
23866: const _CharT* _M_aday6;
23866: const _CharT* _M_aday7;
23866:
23866:
23866: const _CharT* _M_month01;
23866: const _CharT* _M_month02;
23866: const _CharT* _M_month03;
23866: const _CharT* _M_month04;
23866: const _CharT* _M_month05;
23866: const _CharT* _M_month06;
23866: const _CharT* _M_month07;
23866: const _CharT* _M_month08;
23866: const _CharT* _M_month09;
23866: const _CharT* _M_month10;
23866: const _CharT* _M_month11;
23866: const _CharT* _M_month12;
23866:
23866:
23866: const _CharT* _M_amonth01;
23866: const _CharT* _M_amonth02;
23866: const _CharT* _M_amonth03;
23866: const _CharT* _M_amonth04;
23866: const _CharT* _M_amonth05;
23866: const _CharT* _M_amonth06;
23866: const _CharT* _M_amonth07;
23866: const _CharT* _M_amonth08;
23866: const _CharT* _M_amonth09;
23866: const _CharT* _M_amonth10;
23866: const _CharT* _M_amonth11;
23866: const _CharT* _M_amonth12;
23866:
23866: bool _M_allocated;
23866:
23866: __timepunct_cache(size_t __refs = 0) : facet(__refs),
23866: _M_date_format(0), _M_date_era_format(0), _M_time_format(0),
23866: _M_time_era_format(0), _M_date_time_format(0),
23866: _M_date_time_era_format(0), _M_am(0), _M_pm(0),
23866: _M_am_pm_format(0), _M_day1(0), _M_day2(0), _M_day3(0),
23866: _M_day4(0), _M_day5(0), _M_day6(0), _M_day7(0),
23866: _M_aday1(0), _M_aday2(0), _M_aday3(0), _M_aday4(0),
23866: _M_aday5(0), _M_aday6(0), _M_aday7(0), _M_month01(0),
23866: _M_month02(0), _M_month03(0), _M_month04(0), _M_month05(0),
23866: _M_month06(0), _M_month07(0), _M_month08(0), _M_month09(0),
23866: _M_month10(0), _M_month11(0), _M_month12(0), _M_amonth01(0),
23866: _M_amonth02(0), _M_amonth03(0), _M_amonth04(0),
23866: _M_amonth05(0), _M_amonth06(0), _M_amonth07(0),
23866: _M_amonth08(0), _M_amonth09(0), _M_amonth10(0),
23866: _M_amonth11(0), _M_amonth12(0), _M_allocated(false)
23866: { }
23866:
23866: ~__timepunct_cache();
23866:
23866: private:
23866: __timepunct_cache&
23866: operator=(const __timepunct_cache&);
23866:
23866: explicit
23866: __timepunct_cache(const __timepunct_cache&);
23866: };
23866:
23866: template<typename _CharT>
23866: __timepunct_cache<_CharT>::~__timepunct_cache()
23866: {
23866: if (_M_allocated)
23866: {
23866:
23866: }
23866: }
23866:
23866:
23866: template<>
23866: const char*
23866: __timepunct_cache<char>::_S_timezones[14];
23866:
23866:
23866: template<>
23866: const wchar_t*
23866: __timepunct_cache<wchar_t>::_S_timezones[14];
23866:
23866:
23866:
23866: template<typename _CharT>
23866: const _CharT* __timepunct_cache<_CharT>::_S_timezones[14];
23866:
23866: template<typename _CharT>
23866: class __timepunct : public locale::facet
23866: {
23866: public:
23866:
23866: typedef _CharT __char_type;
23866: typedef __timepunct_cache<_CharT> __cache_type;
23866:
23866: protected:
23866: __cache_type* _M_data;
23866: __c_locale _M_c_locale_timepunct;
23866: const char* _M_name_timepunct;
23866:
23866: public:
23866:
23866: static locale::id id;
23866:
23866: explicit
23866: __timepunct(size_t __refs = 0);
23866:
23866: explicit
23866: __timepunct(__cache_type* __cache, size_t __refs = 0);
23866: # 206 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: explicit
23866: __timepunct(__c_locale __cloc, const char* __s, size_t __refs = 0);
23866:
23866:
23866:
23866: void
23866: _M_put(_CharT* __s, size_t __maxlen, const _CharT* __format,
23866: const tm* __tm) const throw ();
23866:
23866: void
23866: _M_date_formats(const _CharT** __date) const
23866: {
23866:
23866: __date[0] = _M_data->_M_date_format;
23866: __date[1] = _M_data->_M_date_era_format;
23866: }
23866:
23866: void
23866: _M_time_formats(const _CharT** __time) const
23866: {
23866:
23866: __time[0] = _M_data->_M_time_format;
23866: __time[1] = _M_data->_M_time_era_format;
23866: }
23866:
23866: void
23866: _M_date_time_formats(const _CharT** __dt) const
23866: {
23866:
23866: __dt[0] = _M_data->_M_date_time_format;
23866: __dt[1] = _M_data->_M_date_time_era_format;
23866: }
23866:
23866:
23866: void
23866: _M_am_pm_format(const _CharT*) const
23866: { }
23866:
23866:
23866: void
23866: _M_am_pm(const _CharT** __ampm) const
23866: {
23866: __ampm[0] = _M_data->_M_am;
23866: __ampm[1] = _M_data->_M_pm;
23866: }
23866:
23866: void
23866: _M_days(const _CharT** __days) const
23866: {
23866: __days[0] = _M_data->_M_day1;
23866: __days[1] = _M_data->_M_day2;
23866: __days[2] = _M_data->_M_day3;
23866: __days[3] = _M_data->_M_day4;
23866: __days[4] = _M_data->_M_day5;
23866: __days[5] = _M_data->_M_day6;
23866: __days[6] = _M_data->_M_day7;
23866: }
23866:
23866: void
23866: _M_days_abbreviated(const _CharT** __days) const
23866: {
23866: __days[0] = _M_data->_M_aday1;
23866: __days[1] = _M_data->_M_aday2;
23866: __days[2] = _M_data->_M_aday3;
23866: __days[3] = _M_data->_M_aday4;
23866: __days[4] = _M_data->_M_aday5;
23866: __days[5] = _M_data->_M_aday6;
23866: __days[6] = _M_data->_M_aday7;
23866: }
23866:
23866: void
23866: _M_months(const _CharT** __months) const
23866: {
23866: __months[0] = _M_data->_M_month01;
23866: __months[1] = _M_data->_M_month02;
23866: __months[2] = _M_data->_M_month03;
23866: __months[3] = _M_data->_M_month04;
23866: __months[4] = _M_data->_M_month05;
23866: __months[5] = _M_data->_M_month06;
23866: __months[6] = _M_data->_M_month07;
23866: __months[7] = _M_data->_M_month08;
23866: __months[8] = _M_data->_M_month09;
23866: __months[9] = _M_data->_M_month10;
23866: __months[10] = _M_data->_M_month11;
23866: __months[11] = _M_data->_M_month12;
23866: }
23866:
23866: void
23866: _M_months_abbreviated(const _CharT** __months) const
23866: {
23866: __months[0] = _M_data->_M_amonth01;
23866: __months[1] = _M_data->_M_amonth02;
23866: __months[2] = _M_data->_M_amonth03;
23866: __months[3] = _M_data->_M_amonth04;
23866: __months[4] = _M_data->_M_amonth05;
23866: __months[5] = _M_data->_M_amonth06;
23866: __months[6] = _M_data->_M_amonth07;
23866: __months[7] = _M_data->_M_amonth08;
23866: __months[8] = _M_data->_M_amonth09;
23866: __months[9] = _M_data->_M_amonth10;
23866: __months[10] = _M_data->_M_amonth11;
23866: __months[11] = _M_data->_M_amonth12;
23866: }
23866:
23866: protected:
23866: virtual
23866: ~__timepunct();
23866:
23866:
23866: void
23866: _M_initialize_timepunct(__c_locale __cloc = 0);
23866: };
23866:
23866: template<typename _CharT>
23866: locale::id __timepunct<_CharT>::id;
23866:
23866:
23866: template<>
23866: void
23866: __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc);
23866:
23866: template<>
23866: void
23866: __timepunct<char>::_M_put(char*, size_t, const char*, const tm*) const throw ();
23866:
23866:
23866: template<>
23866: void
23866: __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc);
23866:
23866: template<>
23866: void
23866: __timepunct<wchar_t>::_M_put(wchar_t*, size_t, const wchar_t*,
23866: const tm*) const throw ();
23866:
23866:
23866:
23866: }
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/c++/10/bits/time_members.h" 1 3
23866: # 37 "/usr/include/arm-linux-gnueabihf/c++/10/bits/time_members.h" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: template<typename _CharT>
23866: __timepunct<_CharT>::__timepunct(size_t __refs)
23866: : facet(__refs), _M_data(0), _M_c_locale_timepunct(0),
23866: _M_name_timepunct(_S_get_c_name())
23866: { _M_initialize_timepunct(); }
23866:
23866: template<typename _CharT>
23866: __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs)
23866: : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(0),
23866: _M_name_timepunct(_S_get_c_name())
23866: { _M_initialize_timepunct(); }
23866:
23866: template<typename _CharT>
23866: __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s,
23866: size_t __refs)
23866: : facet(__refs), _M_data(0), _M_c_locale_timepunct(0),
23866: _M_name_timepunct(0)
23866: {
23866: if (__builtin_strcmp(__s, _S_get_c_name()) != 0)
23866: {
23866: const size_t __len = __builtin_strlen(__s) + 1;
23866: char* __tmp = new char[__len];
23866: __builtin_memcpy(__tmp, __s, __len);
23866: _M_name_timepunct = __tmp;
23866: }
23866: else
23866: _M_name_timepunct = _S_get_c_name();
23866:
23866: try
23866: { _M_initialize_timepunct(__cloc); }
23866: catch(...)
23866: {
23866: if (_M_name_timepunct != _S_get_c_name())
23866: delete [] _M_name_timepunct;
23866: throw;
23866: }
23866: }
23866:
23866: template<typename _CharT>
23866: __timepunct<_CharT>::~__timepunct()
23866: {
23866: if (_M_name_timepunct != _S_get_c_name())
23866: delete [] _M_name_timepunct;
23866: delete _M_data;
23866: _S_destroy_c_locale(_M_c_locale_timepunct);
23866: }
23866:
23866:
23866: }
23866: # 347 "/usr/include/c++/10/bits/locale_facets_nonio.h" 2 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: namespace __cxx11 {
23866: # 367 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: template<typename _CharT, typename _InIter>
23866: class time_get : public locale::facet, public time_base
23866: {
23866: public:
23866:
23866:
23866:
23866: typedef _CharT char_type;
23866: typedef _InIter iter_type;
23866:
23866:
23866:
23866: static locale::id id;
23866: # 388 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: explicit
23866: time_get(size_t __refs = 0)
23866: : facet (__refs) { }
23866: # 405 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: dateorder
23866: date_order() const
23866: { return this->do_date_order(); }
23866: # 429 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: iter_type
23866: get_time(iter_type __beg, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, tm* __tm) const
23866: { return this->do_get_time(__beg, __end, __io, __err, __tm); }
23866: # 454 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: iter_type
23866: get_date(iter_type __beg, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, tm* __tm) const
23866: { return this->do_get_date(__beg, __end, __io, __err, __tm); }
23866: # 482 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: iter_type
23866: get_weekday(iter_type __beg, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, tm* __tm) const
23866: { return this->do_get_weekday(__beg, __end, __io, __err, __tm); }
23866: # 511 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: iter_type
23866: get_monthname(iter_type __beg, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, tm* __tm) const
23866: { return this->do_get_monthname(__beg, __end, __io, __err, __tm); }
23866: # 537 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: iter_type
23866: get_year(iter_type __beg, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, tm* __tm) const
23866: { return this->do_get_year(__beg, __end, __io, __err, __tm); }
23866: # 558 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: inline
23866: iter_type get(iter_type __s, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, tm* __tm, char __format,
23866: char __modifier = 0) const
23866: {
23866: return this->do_get(__s, __end, __io, __err, __tm, __format,
23866: __modifier);
23866: }
23866: # 585 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: iter_type get(iter_type __s, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, tm* __tm, const char_type* __fmt,
23866: const char_type* __fmtend) const;
23866:
23866:
23866: protected:
23866:
23866: virtual
23866: ~time_get() { }
23866: # 605 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: virtual dateorder
23866: do_date_order() const;
23866: # 623 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: virtual iter_type
23866: do_get_time(iter_type __beg, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, tm* __tm) const;
23866: # 642 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: virtual iter_type
23866: do_get_date(iter_type __beg, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, tm* __tm) const;
23866: # 661 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: virtual iter_type
23866: do_get_weekday(iter_type __beg, iter_type __end, ios_base&,
23866: ios_base::iostate& __err, tm* __tm) const;
23866: # 680 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: virtual iter_type
23866: do_get_monthname(iter_type __beg, iter_type __end, ios_base&,
23866: ios_base::iostate& __err, tm* __tm) const;
23866: # 699 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: virtual iter_type
23866: do_get_year(iter_type __beg, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, tm* __tm) const;
23866: # 722 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: virtual
23866:
23866: iter_type
23866: do_get(iter_type __s, iter_type __end, ios_base& __f,
23866: ios_base::iostate& __err, tm* __tm,
23866: char __format, char __modifier) const;
23866:
23866:
23866:
23866: iter_type
23866: _M_extract_num(iter_type __beg, iter_type __end, int& __member,
23866: int __min, int __max, size_t __len,
23866: ios_base& __io, ios_base::iostate& __err) const;
23866:
23866:
23866: iter_type
23866: _M_extract_name(iter_type __beg, iter_type __end, int& __member,
23866: const _CharT** __names, size_t __indexlen,
23866: ios_base& __io, ios_base::iostate& __err) const;
23866:
23866:
23866: iter_type
23866: _M_extract_wday_or_month(iter_type __beg, iter_type __end, int& __member,
23866: const _CharT** __names, size_t __indexlen,
23866: ios_base& __io, ios_base::iostate& __err) const;
23866:
23866:
23866: iter_type
23866: _M_extract_via_format(iter_type __beg, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, tm* __tm,
23866: const _CharT* __format) const;
23866: };
23866:
23866: template<typename _CharT, typename _InIter>
23866: locale::id time_get<_CharT, _InIter>::id;
23866:
23866:
23866: template<typename _CharT, typename _InIter>
23866: class time_get_byname : public time_get<_CharT, _InIter>
23866: {
23866: public:
23866:
23866: typedef _CharT char_type;
23866: typedef _InIter iter_type;
23866:
23866: explicit
23866: time_get_byname(const char*, size_t __refs = 0)
23866: : time_get<_CharT, _InIter>(__refs) { }
23866:
23866:
23866: explicit
23866: time_get_byname(const string& __s, size_t __refs = 0)
23866: : time_get_byname(__s.c_str(), __refs) { }
23866:
23866:
23866: protected:
23866: virtual
23866: ~time_get_byname() { }
23866: };
23866:
23866: }
23866: # 796 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: template<typename _CharT, typename _OutIter>
23866: class time_put : public locale::facet
23866: {
23866: public:
23866:
23866:
23866:
23866: typedef _CharT char_type;
23866: typedef _OutIter iter_type;
23866:
23866:
23866:
23866: static locale::id id;
23866: # 817 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: explicit
23866: time_put(size_t __refs = 0)
23866: : facet(__refs) { }
23866: # 836 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: iter_type
23866: put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm,
23866: const _CharT* __beg, const _CharT* __end) const;
23866: # 856 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: iter_type
23866: put(iter_type __s, ios_base& __io, char_type __fill,
23866: const tm* __tm, char __format, char __mod = 0) const
23866: { return this->do_put(__s, __io, __fill, __tm, __format, __mod); }
23866:
23866: protected:
23866:
23866: virtual
23866: ~time_put()
23866: { }
23866: # 883 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: virtual iter_type
23866: do_put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm,
23866: char __format, char __mod) const;
23866: };
23866:
23866: template<typename _CharT, typename _OutIter>
23866: locale::id time_put<_CharT, _OutIter>::id;
23866:
23866:
23866: template<typename _CharT, typename _OutIter>
23866: class time_put_byname : public time_put<_CharT, _OutIter>
23866: {
23866: public:
23866:
23866: typedef _CharT char_type;
23866: typedef _OutIter iter_type;
23866:
23866: explicit
23866: time_put_byname(const char*, size_t __refs = 0)
23866: : time_put<_CharT, _OutIter>(__refs)
23866: { }
23866:
23866:
23866: explicit
23866: time_put_byname(const string& __s, size_t __refs = 0)
23866: : time_put_byname(__s.c_str(), __refs) { }
23866:
23866:
23866: protected:
23866: virtual
23866: ~time_put_byname() { }
23866: };
23866: # 928 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: class money_base
23866: {
23866: public:
23866: enum part { none, space, symbol, sign, value };
23866: struct pattern { char field[4]; };
23866:
23866: static const pattern _S_default_pattern;
23866:
23866: enum
23866: {
23866: _S_minus,
23866: _S_zero,
23866: _S_end = 11
23866: };
23866:
23866:
23866:
23866: static const char* _S_atoms;
23866:
23866:
23866:
23866: __attribute__ ((__const__)) static pattern
23866: _S_construct_pattern(char __precedes, char __space, char __posn) throw ();
23866: };
23866:
23866: template<typename _CharT, bool _Intl>
23866: struct __moneypunct_cache : public locale::facet
23866: {
23866: const char* _M_grouping;
23866: size_t _M_grouping_size;
23866: bool _M_use_grouping;
23866: _CharT _M_decimal_point;
23866: _CharT _M_thousands_sep;
23866: const _CharT* _M_curr_symbol;
23866: size_t _M_curr_symbol_size;
23866: const _CharT* _M_positive_sign;
23866: size_t _M_positive_sign_size;
23866: const _CharT* _M_negative_sign;
23866: size_t _M_negative_sign_size;
23866: int _M_frac_digits;
23866: money_base::pattern _M_pos_format;
23866: money_base::pattern _M_neg_format;
23866:
23866:
23866:
23866:
23866: _CharT _M_atoms[money_base::_S_end];
23866:
23866: bool _M_allocated;
23866:
23866: __moneypunct_cache(size_t __refs = 0) : facet(__refs),
23866: _M_grouping(0), _M_grouping_size(0), _M_use_grouping(false),
23866: _M_decimal_point(_CharT()), _M_thousands_sep(_CharT()),
23866: _M_curr_symbol(0), _M_curr_symbol_size(0),
23866: _M_positive_sign(0), _M_positive_sign_size(0),
23866: _M_negative_sign(0), _M_negative_sign_size(0),
23866: _M_frac_digits(0),
23866: _M_pos_format(money_base::pattern()),
23866: _M_neg_format(money_base::pattern()), _M_allocated(false)
23866: { }
23866:
23866: ~__moneypunct_cache();
23866:
23866: void
23866: _M_cache(const locale& __loc);
23866:
23866: private:
23866: __moneypunct_cache&
23866: operator=(const __moneypunct_cache&);
23866:
23866: explicit
23866: __moneypunct_cache(const __moneypunct_cache&);
23866: };
23866:
23866: template<typename _CharT, bool _Intl>
23866: __moneypunct_cache<_CharT, _Intl>::~__moneypunct_cache()
23866: {
23866: if (_M_allocated)
23866: {
23866: delete [] _M_grouping;
23866: delete [] _M_curr_symbol;
23866: delete [] _M_positive_sign;
23866: delete [] _M_negative_sign;
23866: }
23866: }
23866:
23866: namespace __cxx11 {
23866: # 1023 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: template<typename _CharT, bool _Intl>
23866: class moneypunct : public locale::facet, public money_base
23866: {
23866: public:
23866:
23866:
23866:
23866: typedef _CharT char_type;
23866: typedef basic_string<_CharT> string_type;
23866:
23866: typedef __moneypunct_cache<_CharT, _Intl> __cache_type;
23866:
23866: private:
23866: __cache_type* _M_data;
23866:
23866: public:
23866:
23866:
23866: static const bool intl = _Intl;
23866:
23866: static locale::id id;
23866: # 1052 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: explicit
23866: moneypunct(size_t __refs = 0)
23866: : facet(__refs), _M_data(0)
23866: { _M_initialize_moneypunct(); }
23866: # 1065 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: explicit
23866: moneypunct(__cache_type* __cache, size_t __refs = 0)
23866: : facet(__refs), _M_data(__cache)
23866: { _M_initialize_moneypunct(); }
23866: # 1080 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: explicit
23866: moneypunct(__c_locale __cloc, const char* __s, size_t __refs = 0)
23866: : facet(__refs), _M_data(0)
23866: { _M_initialize_moneypunct(__cloc, __s); }
23866: # 1094 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: char_type
23866: decimal_point() const
23866: { return this->do_decimal_point(); }
23866: # 1107 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: char_type
23866: thousands_sep() const
23866: { return this->do_thousands_sep(); }
23866: # 1137 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: string
23866: grouping() const
23866: { return this->do_grouping(); }
23866: # 1150 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: string_type
23866: curr_symbol() const
23866: { return this->do_curr_symbol(); }
23866: # 1167 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: string_type
23866: positive_sign() const
23866: { return this->do_positive_sign(); }
23866: # 1184 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: string_type
23866: negative_sign() const
23866: { return this->do_negative_sign(); }
23866: # 1200 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: int
23866: frac_digits() const
23866: { return this->do_frac_digits(); }
23866: # 1236 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: pattern
23866: pos_format() const
23866: { return this->do_pos_format(); }
23866:
23866: pattern
23866: neg_format() const
23866: { return this->do_neg_format(); }
23866:
23866:
23866: protected:
23866:
23866: virtual
23866: ~moneypunct();
23866: # 1258 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: virtual char_type
23866: do_decimal_point() const
23866: { return _M_data->_M_decimal_point; }
23866: # 1270 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: virtual char_type
23866: do_thousands_sep() const
23866: { return _M_data->_M_thousands_sep; }
23866: # 1283 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: virtual string
23866: do_grouping() const
23866: { return _M_data->_M_grouping; }
23866: # 1296 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: virtual string_type
23866: do_curr_symbol() const
23866: { return _M_data->_M_curr_symbol; }
23866: # 1309 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: virtual string_type
23866: do_positive_sign() const
23866: { return _M_data->_M_positive_sign; }
23866: # 1322 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: virtual string_type
23866: do_negative_sign() const
23866: { return _M_data->_M_negative_sign; }
23866: # 1336 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: virtual int
23866: do_frac_digits() const
23866: { return _M_data->_M_frac_digits; }
23866: # 1350 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: virtual pattern
23866: do_pos_format() const
23866: { return _M_data->_M_pos_format; }
23866: # 1364 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: virtual pattern
23866: do_neg_format() const
23866: { return _M_data->_M_neg_format; }
23866:
23866:
23866: void
23866: _M_initialize_moneypunct(__c_locale __cloc = 0,
23866: const char* __name = 0);
23866: };
23866:
23866: template<typename _CharT, bool _Intl>
23866: locale::id moneypunct<_CharT, _Intl>::id;
23866:
23866: template<typename _CharT, bool _Intl>
23866: const bool moneypunct<_CharT, _Intl>::intl;
23866:
23866: template<>
23866: moneypunct<char, true>::~moneypunct();
23866:
23866: template<>
23866: moneypunct<char, false>::~moneypunct();
23866:
23866: template<>
23866: void
23866: moneypunct<char, true>::_M_initialize_moneypunct(__c_locale, const char*);
23866:
23866: template<>
23866: void
23866: moneypunct<char, false>::_M_initialize_moneypunct(__c_locale, const char*);
23866:
23866:
23866: template<>
23866: moneypunct<wchar_t, true>::~moneypunct();
23866:
23866: template<>
23866: moneypunct<wchar_t, false>::~moneypunct();
23866:
23866: template<>
23866: void
23866: moneypunct<wchar_t, true>::_M_initialize_moneypunct(__c_locale,
23866: const char*);
23866:
23866: template<>
23866: void
23866: moneypunct<wchar_t, false>::_M_initialize_moneypunct(__c_locale,
23866: const char*);
23866:
23866:
23866:
23866: template<typename _CharT, bool _Intl>
23866: class moneypunct_byname : public moneypunct<_CharT, _Intl>
23866: {
23866: public:
23866: typedef _CharT char_type;
23866: typedef basic_string<_CharT> string_type;
23866:
23866: static const bool intl = _Intl;
23866:
23866: explicit
23866: moneypunct_byname(const char* __s, size_t __refs = 0)
23866: : moneypunct<_CharT, _Intl>(__refs)
23866: {
23866: if (__builtin_strcmp(__s, "C") != 0
23866: && __builtin_strcmp(__s, "POSIX") != 0)
23866: {
23866: __c_locale __tmp;
23866: this->_S_create_c_locale(__tmp, __s);
23866: this->_M_initialize_moneypunct(__tmp);
23866: this->_S_destroy_c_locale(__tmp);
23866: }
23866: }
23866:
23866:
23866: explicit
23866: moneypunct_byname(const string& __s, size_t __refs = 0)
23866: : moneypunct_byname(__s.c_str(), __refs) { }
23866:
23866:
23866: protected:
23866: virtual
23866: ~moneypunct_byname() { }
23866: };
23866:
23866: template<typename _CharT, bool _Intl>
23866: const bool moneypunct_byname<_CharT, _Intl>::intl;
23866:
23866: }
23866:
23866: namespace __cxx11 {
23866: # 1467 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: template<typename _CharT, typename _InIter>
23866: class money_get : public locale::facet
23866: {
23866: public:
23866:
23866:
23866:
23866: typedef _CharT char_type;
23866: typedef _InIter iter_type;
23866: typedef basic_string<_CharT> string_type;
23866:
23866:
23866:
23866: static locale::id id;
23866: # 1489 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: explicit
23866: money_get(size_t __refs = 0) : facet(__refs) { }
23866: # 1519 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: iter_type
23866: get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
23866: ios_base::iostate& __err, long double& __units) const
23866: { return this->do_get(__s, __end, __intl, __io, __err, __units); }
23866: # 1550 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: iter_type
23866: get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
23866: ios_base::iostate& __err, string_type& __digits) const
23866: { return this->do_get(__s, __end, __intl, __io, __err, __digits); }
23866:
23866: protected:
23866:
23866: virtual
23866: ~money_get() { }
23866: # 1574 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: virtual iter_type
23866: do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
23866: ios_base::iostate& __err, long double& __units) const;
23866: # 1586 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: virtual iter_type
23866: do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
23866: ios_base::iostate& __err, string_type& __digits) const;
23866: # 1598 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: template<bool _Intl>
23866: iter_type
23866: _M_extract(iter_type __s, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, string& __digits) const;
23866: };
23866:
23866: template<typename _CharT, typename _InIter>
23866: locale::id money_get<_CharT, _InIter>::id;
23866: # 1620 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: template<typename _CharT, typename _OutIter>
23866: class money_put : public locale::facet
23866: {
23866: public:
23866:
23866:
23866: typedef _CharT char_type;
23866: typedef _OutIter iter_type;
23866: typedef basic_string<_CharT> string_type;
23866:
23866:
23866:
23866: static locale::id id;
23866: # 1641 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: explicit
23866: money_put(size_t __refs = 0) : facet(__refs) { }
23866: # 1661 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: iter_type
23866: put(iter_type __s, bool __intl, ios_base& __io,
23866: char_type __fill, long double __units) const
23866: { return this->do_put(__s, __intl, __io, __fill, __units); }
23866: # 1684 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: iter_type
23866: put(iter_type __s, bool __intl, ios_base& __io,
23866: char_type __fill, const string_type& __digits) const
23866: { return this->do_put(__s, __intl, __io, __fill, __digits); }
23866:
23866: protected:
23866:
23866: virtual
23866: ~money_put() { }
23866: # 1719 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: virtual iter_type
23866: do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
23866: long double __units) const;
23866: # 1743 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: virtual iter_type
23866: do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
23866: const string_type& __digits) const;
23866: # 1755 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: template<bool _Intl>
23866: iter_type
23866: _M_insert(iter_type __s, ios_base& __io, char_type __fill,
23866: const string_type& __digits) const;
23866: };
23866:
23866: template<typename _CharT, typename _OutIter>
23866: locale::id money_put<_CharT, _OutIter>::id;
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866: struct messages_base
23866: {
23866: typedef int catalog;
23866: };
23866:
23866: namespace __cxx11 {
23866: # 1798 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: template<typename _CharT>
23866: class messages : public locale::facet, public messages_base
23866: {
23866: public:
23866:
23866:
23866:
23866: typedef _CharT char_type;
23866: typedef basic_string<_CharT> string_type;
23866:
23866:
23866: protected:
23866:
23866:
23866: __c_locale _M_c_locale_messages;
23866: const char* _M_name_messages;
23866:
23866: public:
23866:
23866: static locale::id id;
23866: # 1826 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: explicit
23866: messages(size_t __refs = 0);
23866: # 1840 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: explicit
23866: messages(__c_locale __cloc, const char* __s, size_t __refs = 0);
23866: # 1853 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: catalog
23866: open(const basic_string<char>& __s, const locale& __loc) const
23866: { return this->do_open(__s, __loc); }
23866: # 1871 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: catalog
23866: open(const basic_string<char>&, const locale&, const char*) const;
23866: # 1889 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: string_type
23866: get(catalog __c, int __set, int __msgid, const string_type& __s) const
23866: { return this->do_get(__c, __set, __msgid, __s); }
23866: # 1900 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: void
23866: close(catalog __c) const
23866: { return this->do_close(__c); }
23866:
23866: protected:
23866:
23866: virtual
23866: ~messages();
23866: # 1920 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: virtual catalog
23866: do_open(const basic_string<char>&, const locale&) const;
23866: # 1939 "/usr/include/c++/10/bits/locale_facets_nonio.h" 3
23866: virtual string_type
23866: do_get(catalog, int, int, const string_type& __dfault) const;
23866:
23866:
23866:
23866:
23866:
23866:
23866: virtual void
23866: do_close(catalog) const;
23866:
23866:
23866: char*
23866: _M_convert_to_char(const string_type& __msg) const
23866: {
23866:
23866: return reinterpret_cast<char*>(const_cast<_CharT*>(__msg.c_str()));
23866: }
23866:
23866:
23866: string_type
23866: _M_convert_from_char(char*) const
23866: {
23866:
23866: return string_type();
23866: }
23866: };
23866:
23866: template<typename _CharT>
23866: locale::id messages<_CharT>::id;
23866:
23866:
23866: template<>
23866: string
23866: messages<char>::do_get(catalog, int, int, const string&) const;
23866:
23866:
23866: template<>
23866: wstring
23866: messages<wchar_t>::do_get(catalog, int, int, const wstring&) const;
23866:
23866:
23866:
23866: template<typename _CharT>
23866: class messages_byname : public messages<_CharT>
23866: {
23866: public:
23866: typedef _CharT char_type;
23866: typedef basic_string<_CharT> string_type;
23866:
23866: explicit
23866: messages_byname(const char* __s, size_t __refs = 0);
23866:
23866:
23866: explicit
23866: messages_byname(const string& __s, size_t __refs = 0)
23866: : messages_byname(__s.c_str(), __refs) { }
23866:
23866:
23866: protected:
23866: virtual
23866: ~messages_byname()
23866: { }
23866: };
23866:
23866: }
23866:
23866:
23866: }
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/c++/10/bits/messages_members.h" 1 3
23866: # 36 "/usr/include/arm-linux-gnueabihf/c++/10/bits/messages_members.h" 3
23866: # 1 "/usr/include/libintl.h" 1 3 4
23866: # 21 "/usr/include/libintl.h" 3 4
23866: #define _LIBINTL_H 1
23866:
23866:
23866:
23866:
23866:
23866: #define __USE_GNU_GETTEXT 1
23866:
23866:
23866:
23866: #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 1 : -1)
23866:
23866:
23866: extern "C" {
23866:
23866:
23866:
23866:
23866: extern char *gettext (const char *__msgid)
23866: throw () __attribute__ ((__format_arg__ (1)));
23866:
23866:
23866:
23866: extern char *dgettext (const char *__domainname, const char *__msgid)
23866: throw () __attribute__ ((__format_arg__ (2)));
23866: extern char *__dgettext (const char *__domainname, const char *__msgid)
23866: throw () __attribute__ ((__format_arg__ (2)));
23866:
23866:
23866:
23866: extern char *dcgettext (const char *__domainname,
23866: const char *__msgid, int __category)
23866: throw () __attribute__ ((__format_arg__ (2)));
23866: extern char *__dcgettext (const char *__domainname,
23866: const char *__msgid, int __category)
23866: throw () __attribute__ ((__format_arg__ (2)));
23866:
23866:
23866:
23866:
23866: extern char *ngettext (const char *__msgid1, const char *__msgid2,
23866: unsigned long int __n)
23866: throw () __attribute__ ((__format_arg__ (1))) __attribute__ ((__format_arg__ (2)));
23866:
23866:
23866:
23866: extern char *dngettext (const char *__domainname, const char *__msgid1,
23866: const char *__msgid2, unsigned long int __n)
23866: throw () __attribute__ ((__format_arg__ (2))) __attribute__ ((__format_arg__ (3)));
23866:
23866:
23866:
23866: extern char *dcngettext (const char *__domainname, const char *__msgid1,
23866: const char *__msgid2, unsigned long int __n,
23866: int __category)
23866: throw () __attribute__ ((__format_arg__ (2))) __attribute__ ((__format_arg__ (3)));
23866:
23866:
23866:
23866:
23866:
23866: extern char *textdomain (const char *__domainname) throw ();
23866:
23866:
23866:
23866: extern char *bindtextdomain (const char *__domainname,
23866: const char *__dirname) throw ();
23866:
23866:
23866:
23866: extern char *bind_textdomain_codeset (const char *__domainname,
23866: const char *__codeset) throw ();
23866: # 121 "/usr/include/libintl.h" 3 4
23866: }
23866: # 37 "/usr/include/arm-linux-gnueabihf/c++/10/bits/messages_members.h" 2 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: template<typename _CharT>
23866: messages<_CharT>::messages(size_t __refs)
23866: : facet(__refs), _M_c_locale_messages(_S_get_c_locale()),
23866: _M_name_messages(_S_get_c_name())
23866: { }
23866:
23866: template<typename _CharT>
23866: messages<_CharT>::messages(__c_locale __cloc, const char* __s,
23866: size_t __refs)
23866: : facet(__refs), _M_c_locale_messages(0), _M_name_messages(0)
23866: {
23866: if (__builtin_strcmp(__s, _S_get_c_name()) != 0)
23866: {
23866: const size_t __len = __builtin_strlen(__s) + 1;
23866: char* __tmp = new char[__len];
23866: __builtin_memcpy(__tmp, __s, __len);
23866: _M_name_messages = __tmp;
23866: }
23866: else
23866: _M_name_messages = _S_get_c_name();
23866:
23866:
23866: _M_c_locale_messages = _S_clone_c_locale(__cloc);
23866: }
23866:
23866: template<typename _CharT>
23866: typename messages<_CharT>::catalog
23866: messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc,
23866: const char* __dir) const
23866: {
23866: bindtextdomain(__s.c_str(), __dir);
23866: return this->do_open(__s, __loc);
23866: }
23866:
23866:
23866: template<typename _CharT>
23866: messages<_CharT>::~messages()
23866: {
23866: if (_M_name_messages != _S_get_c_name())
23866: delete [] _M_name_messages;
23866: _S_destroy_c_locale(_M_c_locale_messages);
23866: }
23866:
23866: template<typename _CharT>
23866: typename messages<_CharT>::catalog
23866: messages<_CharT>::do_open(const basic_string<char>& __s,
23866: const locale&) const
23866: {
23866:
23866:
23866: textdomain(__s.c_str());
23866: return 0;
23866: }
23866:
23866: template<typename _CharT>
23866: void
23866: messages<_CharT>::do_close(catalog) const
23866: { }
23866:
23866:
23866: template<typename _CharT>
23866: messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs)
23866: : messages<_CharT>(__refs)
23866: {
23866: if (this->_M_name_messages != locale::facet::_S_get_c_name())
23866: {
23866: delete [] this->_M_name_messages;
23866: if (__builtin_strcmp(__s, locale::facet::_S_get_c_name()) != 0)
23866: {
23866: const size_t __len = __builtin_strlen(__s) + 1;
23866: char* __tmp = new char[__len];
23866: __builtin_memcpy(__tmp, __s, __len);
23866: this->_M_name_messages = __tmp;
23866: }
23866: else
23866: this->_M_name_messages = locale::facet::_S_get_c_name();
23866: }
23866:
23866: if (__builtin_strcmp(__s, "C") != 0
23866: && __builtin_strcmp(__s, "POSIX") != 0)
23866: {
23866: this->_S_destroy_c_locale(this->_M_c_locale_messages);
23866: this->_S_create_c_locale(this->_M_c_locale_messages, __s);
23866: }
23866: }
23866:
23866:
23866: template<>
23866: typename messages<char>::catalog
23866: messages<char>::do_open(const basic_string<char>&,
23866: const locale&) const;
23866:
23866: template<>
23866: void
23866: messages<char>::do_close(catalog) const;
23866:
23866:
23866: template<>
23866: typename messages<wchar_t>::catalog
23866: messages<wchar_t>::do_open(const basic_string<char>&,
23866: const locale&) const;
23866:
23866: template<>
23866: void
23866: messages<wchar_t>::do_close(catalog) const;
23866:
23866:
23866:
23866: }
23866: # 2011 "/usr/include/c++/10/bits/locale_facets_nonio.h" 2 3
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/codecvt.h" 1 3
23866: # 37 "/usr/include/c++/10/bits/codecvt.h" 3
23866: #define _CODECVT_H 1
23866:
23866:
23866: # 40 "/usr/include/c++/10/bits/codecvt.h" 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: class codecvt_base
23866: {
23866: public:
23866: enum result
23866: {
23866: ok,
23866: partial,
23866: error,
23866: noconv
23866: };
23866: };
23866: # 67 "/usr/include/c++/10/bits/codecvt.h" 3
23866: template<typename _InternT, typename _ExternT, typename _StateT>
23866: class __codecvt_abstract_base
23866: : public locale::facet, public codecvt_base
23866: {
23866: public:
23866:
23866: typedef codecvt_base::result result;
23866: typedef _InternT intern_type;
23866: typedef _ExternT extern_type;
23866: typedef _StateT state_type;
23866: # 115 "/usr/include/c++/10/bits/codecvt.h" 3
23866: result
23866: out(state_type& __state, const intern_type* __from,
23866: const intern_type* __from_end, const intern_type*& __from_next,
23866: extern_type* __to, extern_type* __to_end,
23866: extern_type*& __to_next) const
23866: {
23866: return this->do_out(__state, __from, __from_end, __from_next,
23866: __to, __to_end, __to_next);
23866: }
23866: # 154 "/usr/include/c++/10/bits/codecvt.h" 3
23866: result
23866: unshift(state_type& __state, extern_type* __to, extern_type* __to_end,
23866: extern_type*& __to_next) const
23866: { return this->do_unshift(__state, __to,__to_end,__to_next); }
23866: # 195 "/usr/include/c++/10/bits/codecvt.h" 3
23866: result
23866: in(state_type& __state, const extern_type* __from,
23866: const extern_type* __from_end, const extern_type*& __from_next,
23866: intern_type* __to, intern_type* __to_end,
23866: intern_type*& __to_next) const
23866: {
23866: return this->do_in(__state, __from, __from_end, __from_next,
23866: __to, __to_end, __to_next);
23866: }
23866:
23866: int
23866: encoding() const throw()
23866: { return this->do_encoding(); }
23866:
23866: bool
23866: always_noconv() const throw()
23866: { return this->do_always_noconv(); }
23866:
23866: int
23866: length(state_type& __state, const extern_type* __from,
23866: const extern_type* __end, size_t __max) const
23866: { return this->do_length(__state, __from, __end, __max); }
23866:
23866: int
23866: max_length() const throw()
23866: { return this->do_max_length(); }
23866:
23866: protected:
23866: explicit
23866: __codecvt_abstract_base(size_t __refs = 0) : locale::facet(__refs) { }
23866:
23866: virtual
23866: ~__codecvt_abstract_base() { }
23866: # 236 "/usr/include/c++/10/bits/codecvt.h" 3
23866: virtual result
23866: do_out(state_type& __state, const intern_type* __from,
23866: const intern_type* __from_end, const intern_type*& __from_next,
23866: extern_type* __to, extern_type* __to_end,
23866: extern_type*& __to_next) const = 0;
23866:
23866: virtual result
23866: do_unshift(state_type& __state, extern_type* __to,
23866: extern_type* __to_end, extern_type*& __to_next) const = 0;
23866:
23866: virtual result
23866: do_in(state_type& __state, const extern_type* __from,
23866: const extern_type* __from_end, const extern_type*& __from_next,
23866: intern_type* __to, intern_type* __to_end,
23866: intern_type*& __to_next) const = 0;
23866:
23866: virtual int
23866: do_encoding() const throw() = 0;
23866:
23866: virtual bool
23866: do_always_noconv() const throw() = 0;
23866:
23866: virtual int
23866: do_length(state_type&, const extern_type* __from,
23866: const extern_type* __end, size_t __max) const = 0;
23866:
23866: virtual int
23866: do_max_length() const throw() = 0;
23866: };
23866: # 273 "/usr/include/c++/10/bits/codecvt.h" 3
23866: template<typename _InternT, typename _ExternT, typename _StateT>
23866: class codecvt
23866: : public __codecvt_abstract_base<_InternT, _ExternT, _StateT>
23866: {
23866: public:
23866:
23866: typedef codecvt_base::result result;
23866: typedef _InternT intern_type;
23866: typedef _ExternT extern_type;
23866: typedef _StateT state_type;
23866:
23866: protected:
23866: __c_locale _M_c_locale_codecvt;
23866:
23866: public:
23866: static locale::id id;
23866:
23866: explicit
23866: codecvt(size_t __refs = 0)
23866: : __codecvt_abstract_base<_InternT, _ExternT, _StateT> (__refs),
23866: _M_c_locale_codecvt(0)
23866: { }
23866:
23866: explicit
23866: codecvt(__c_locale __cloc, size_t __refs = 0);
23866:
23866: protected:
23866: virtual
23866: ~codecvt() { }
23866:
23866: virtual result
23866: do_out(state_type& __state, const intern_type* __from,
23866: const intern_type* __from_end, const intern_type*& __from_next,
23866: extern_type* __to, extern_type* __to_end,
23866: extern_type*& __to_next) const;
23866:
23866: virtual result
23866: do_unshift(state_type& __state, extern_type* __to,
23866: extern_type* __to_end, extern_type*& __to_next) const;
23866:
23866: virtual result
23866: do_in(state_type& __state, const extern_type* __from,
23866: const extern_type* __from_end, const extern_type*& __from_next,
23866: intern_type* __to, intern_type* __to_end,
23866: intern_type*& __to_next) const;
23866:
23866: virtual int
23866: do_encoding() const throw();
23866:
23866: virtual bool
23866: do_always_noconv() const throw();
23866:
23866: virtual int
23866: do_length(state_type&, const extern_type* __from,
23866: const extern_type* __end, size_t __max) const;
23866:
23866: virtual int
23866: do_max_length() const throw();
23866: };
23866:
23866: template<typename _InternT, typename _ExternT, typename _StateT>
23866: locale::id codecvt<_InternT, _ExternT, _StateT>::id;
23866:
23866:
23866: template<>
23866: class codecvt<char, char, mbstate_t>
23866: : public __codecvt_abstract_base<char, char, mbstate_t>
23866: {
23866: friend class messages<char>;
23866:
23866: public:
23866:
23866: typedef char intern_type;
23866: typedef char extern_type;
23866: typedef mbstate_t state_type;
23866:
23866: protected:
23866: __c_locale _M_c_locale_codecvt;
23866:
23866: public:
23866: static locale::id id;
23866:
23866: explicit
23866: codecvt(size_t __refs = 0);
23866:
23866: explicit
23866: codecvt(__c_locale __cloc, size_t __refs = 0);
23866:
23866: protected:
23866: virtual
23866: ~codecvt();
23866:
23866: virtual result
23866: do_out(state_type& __state, const intern_type* __from,
23866: const intern_type* __from_end, const intern_type*& __from_next,
23866: extern_type* __to, extern_type* __to_end,
23866: extern_type*& __to_next) const;
23866:
23866: virtual result
23866: do_unshift(state_type& __state, extern_type* __to,
23866: extern_type* __to_end, extern_type*& __to_next) const;
23866:
23866: virtual result
23866: do_in(state_type& __state, const extern_type* __from,
23866: const extern_type* __from_end, const extern_type*& __from_next,
23866: intern_type* __to, intern_type* __to_end,
23866: intern_type*& __to_next) const;
23866:
23866: virtual int
23866: do_encoding() const throw();
23866:
23866: virtual bool
23866: do_always_noconv() const throw();
23866:
23866: virtual int
23866: do_length(state_type&, const extern_type* __from,
23866: const extern_type* __end, size_t __max) const;
23866:
23866: virtual int
23866: do_max_length() const throw();
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<>
23866: class codecvt<wchar_t, char, mbstate_t>
23866: : public __codecvt_abstract_base<wchar_t, char, mbstate_t>
23866: {
23866: friend class messages<wchar_t>;
23866:
23866: public:
23866:
23866: typedef wchar_t intern_type;
23866: typedef char extern_type;
23866: typedef mbstate_t state_type;
23866:
23866: protected:
23866: __c_locale _M_c_locale_codecvt;
23866:
23866: public:
23866: static locale::id id;
23866:
23866: explicit
23866: codecvt(size_t __refs = 0);
23866:
23866: explicit
23866: codecvt(__c_locale __cloc, size_t __refs = 0);
23866:
23866: protected:
23866: virtual
23866: ~codecvt();
23866:
23866: virtual result
23866: do_out(state_type& __state, const intern_type* __from,
23866: const intern_type* __from_end, const intern_type*& __from_next,
23866: extern_type* __to, extern_type* __to_end,
23866: extern_type*& __to_next) const;
23866:
23866: virtual result
23866: do_unshift(state_type& __state,
23866: extern_type* __to, extern_type* __to_end,
23866: extern_type*& __to_next) const;
23866:
23866: virtual result
23866: do_in(state_type& __state,
23866: const extern_type* __from, const extern_type* __from_end,
23866: const extern_type*& __from_next,
23866: intern_type* __to, intern_type* __to_end,
23866: intern_type*& __to_next) const;
23866:
23866: virtual
23866: int do_encoding() const throw();
23866:
23866: virtual
23866: bool do_always_noconv() const throw();
23866:
23866: virtual
23866: int do_length(state_type&, const extern_type* __from,
23866: const extern_type* __end, size_t __max) const;
23866:
23866: virtual int
23866: do_max_length() const throw();
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<>
23866: class codecvt<char16_t, char, mbstate_t>
23866: : public __codecvt_abstract_base<char16_t, char, mbstate_t>
23866: {
23866: public:
23866:
23866: typedef char16_t intern_type;
23866: typedef char extern_type;
23866: typedef mbstate_t state_type;
23866:
23866: public:
23866: static locale::id id;
23866:
23866: explicit
23866: codecvt(size_t __refs = 0)
23866: : __codecvt_abstract_base<char16_t, char, mbstate_t>(__refs) { }
23866:
23866: protected:
23866: virtual
23866: ~codecvt();
23866:
23866: virtual result
23866: do_out(state_type& __state, const intern_type* __from,
23866: const intern_type* __from_end, const intern_type*& __from_next,
23866: extern_type* __to, extern_type* __to_end,
23866: extern_type*& __to_next) const;
23866:
23866: virtual result
23866: do_unshift(state_type& __state,
23866: extern_type* __to, extern_type* __to_end,
23866: extern_type*& __to_next) const;
23866:
23866: virtual result
23866: do_in(state_type& __state,
23866: const extern_type* __from, const extern_type* __from_end,
23866: const extern_type*& __from_next,
23866: intern_type* __to, intern_type* __to_end,
23866: intern_type*& __to_next) const;
23866:
23866: virtual
23866: int do_encoding() const throw();
23866:
23866: virtual
23866: bool do_always_noconv() const throw();
23866:
23866: virtual
23866: int do_length(state_type&, const extern_type* __from,
23866: const extern_type* __end, size_t __max) const;
23866:
23866: virtual int
23866: do_max_length() const throw();
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template<>
23866: class codecvt<char32_t, char, mbstate_t>
23866: : public __codecvt_abstract_base<char32_t, char, mbstate_t>
23866: {
23866: public:
23866:
23866: typedef char32_t intern_type;
23866: typedef char extern_type;
23866: typedef mbstate_t state_type;
23866:
23866: public:
23866: static locale::id id;
23866:
23866: explicit
23866: codecvt(size_t __refs = 0)
23866: : __codecvt_abstract_base<char32_t, char, mbstate_t>(__refs) { }
23866:
23866: protected:
23866: virtual
23866: ~codecvt();
23866:
23866: virtual result
23866: do_out(state_type& __state, const intern_type* __from,
23866: const intern_type* __from_end, const intern_type*& __from_next,
23866: extern_type* __to, extern_type* __to_end,
23866: extern_type*& __to_next) const;
23866:
23866: virtual result
23866: do_unshift(state_type& __state,
23866: extern_type* __to, extern_type* __to_end,
23866: extern_type*& __to_next) const;
23866:
23866: virtual result
23866: do_in(state_type& __state,
23866: const extern_type* __from, const extern_type* __from_end,
23866: const extern_type*& __from_next,
23866: intern_type* __to, intern_type* __to_end,
23866: intern_type*& __to_next) const;
23866:
23866: virtual
23866: int do_encoding() const throw();
23866:
23866: virtual
23866: bool do_always_noconv() const throw();
23866:
23866: virtual
23866: int do_length(state_type&, const extern_type* __from,
23866: const extern_type* __end, size_t __max) const;
23866:
23866: virtual int
23866: do_max_length() const throw();
23866: };
23866: # 695 "/usr/include/c++/10/bits/codecvt.h" 3
23866: template<typename _InternT, typename _ExternT, typename _StateT>
23866: class codecvt_byname : public codecvt<_InternT, _ExternT, _StateT>
23866: {
23866: public:
23866: explicit
23866: codecvt_byname(const char* __s, size_t __refs = 0)
23866: : codecvt<_InternT, _ExternT, _StateT>(__refs)
23866: {
23866: if (__builtin_strcmp(__s, "C") != 0
23866: && __builtin_strcmp(__s, "POSIX") != 0)
23866: {
23866: this->_S_destroy_c_locale(this->_M_c_locale_codecvt);
23866: this->_S_create_c_locale(this->_M_c_locale_codecvt, __s);
23866: }
23866: }
23866:
23866:
23866: explicit
23866: codecvt_byname(const string& __s, size_t __refs = 0)
23866: : codecvt_byname(__s.c_str(), __refs) { }
23866:
23866:
23866: protected:
23866: virtual
23866: ~codecvt_byname() { }
23866: };
23866:
23866:
23866: template<>
23866: class codecvt_byname<char16_t, char, mbstate_t>
23866: : public codecvt<char16_t, char, mbstate_t>
23866: {
23866: public:
23866: explicit
23866: codecvt_byname(const char*, size_t __refs = 0)
23866: : codecvt<char16_t, char, mbstate_t>(__refs) { }
23866:
23866: explicit
23866: codecvt_byname(const string& __s, size_t __refs = 0)
23866: : codecvt_byname(__s.c_str(), __refs) { }
23866:
23866: protected:
23866: virtual
23866: ~codecvt_byname() { }
23866: };
23866:
23866: template<>
23866: class codecvt_byname<char32_t, char, mbstate_t>
23866: : public codecvt<char32_t, char, mbstate_t>
23866: {
23866: public:
23866: explicit
23866: codecvt_byname(const char*, size_t __refs = 0)
23866: : codecvt<char32_t, char, mbstate_t>(__refs) { }
23866:
23866: explicit
23866: codecvt_byname(const string& __s, size_t __refs = 0)
23866: : codecvt_byname(__s.c_str(), __refs) { }
23866:
23866: protected:
23866: virtual
23866: ~codecvt_byname() { }
23866: };
23866: # 802 "/usr/include/c++/10/bits/codecvt.h" 3
23866: extern template class codecvt_byname<char, char, mbstate_t>;
23866:
23866: extern template
23866: const codecvt<char, char, mbstate_t>&
23866: use_facet<codecvt<char, char, mbstate_t> >(const locale&);
23866:
23866: extern template
23866: bool
23866: has_facet<codecvt<char, char, mbstate_t> >(const locale&);
23866:
23866:
23866: extern template class codecvt_byname<wchar_t, char, mbstate_t>;
23866:
23866: extern template
23866: const codecvt<wchar_t, char, mbstate_t>&
23866: use_facet<codecvt<wchar_t, char, mbstate_t> >(const locale&);
23866:
23866: extern template
23866: bool
23866: has_facet<codecvt<wchar_t, char, mbstate_t> >(const locale&);
23866:
23866:
23866:
23866: extern template class codecvt_byname<char16_t, char, mbstate_t>;
23866: extern template class codecvt_byname<char32_t, char, mbstate_t>;
23866: # 837 "/usr/include/c++/10/bits/codecvt.h" 3
23866:
23866: }
23866: # 2014 "/usr/include/c++/10/bits/locale_facets_nonio.h" 2 3
23866:
23866: # 1 "/usr/include/c++/10/bits/locale_facets_nonio.tcc" 1 3
23866: # 31 "/usr/include/c++/10/bits/locale_facets_nonio.tcc" 3
23866: #define _LOCALE_FACETS_NONIO_TCC 1
23866:
23866:
23866: # 34 "/usr/include/c++/10/bits/locale_facets_nonio.tcc" 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: template<typename _CharT, bool _Intl>
23866: struct __use_cache<__moneypunct_cache<_CharT, _Intl> >
23866: {
23866: const __moneypunct_cache<_CharT, _Intl>*
23866: operator() (const locale& __loc) const
23866: {
23866: const size_t __i = moneypunct<_CharT, _Intl>::id._M_id();
23866: const locale::facet** __caches = __loc._M_impl->_M_caches;
23866: if (!__caches[__i])
23866: {
23866: __moneypunct_cache<_CharT, _Intl>* __tmp = 0;
23866: try
23866: {
23866: __tmp = new __moneypunct_cache<_CharT, _Intl>;
23866: __tmp->_M_cache(__loc);
23866: }
23866: catch(...)
23866: {
23866: delete __tmp;
23866: throw;
23866: }
23866: __loc._M_impl->_M_install_cache(__tmp, __i);
23866: }
23866: return static_cast<
23866: const __moneypunct_cache<_CharT, _Intl>*>(__caches[__i]);
23866: }
23866: };
23866:
23866: template<typename _CharT, bool _Intl>
23866: void
23866: __moneypunct_cache<_CharT, _Intl>::_M_cache(const locale& __loc)
23866: {
23866: const moneypunct<_CharT, _Intl>& __mp =
23866: use_facet<moneypunct<_CharT, _Intl> >(__loc);
23866:
23866: _M_decimal_point = __mp.decimal_point();
23866: _M_thousands_sep = __mp.thousands_sep();
23866: _M_frac_digits = __mp.frac_digits();
23866:
23866: char* __grouping = 0;
23866: _CharT* __curr_symbol = 0;
23866: _CharT* __positive_sign = 0;
23866: _CharT* __negative_sign = 0;
23866: try
23866: {
23866: const string& __g = __mp.grouping();
23866: _M_grouping_size = __g.size();
23866: __grouping = new char[_M_grouping_size];
23866: __g.copy(__grouping, _M_grouping_size);
23866: _M_use_grouping = (_M_grouping_size
23866: && static_cast<signed char>(__grouping[0]) > 0
23866: && (__grouping[0]
23866: != __gnu_cxx::__numeric_traits<char>::__max));
23866:
23866: const basic_string<_CharT>& __cs = __mp.curr_symbol();
23866: _M_curr_symbol_size = __cs.size();
23866: __curr_symbol = new _CharT[_M_curr_symbol_size];
23866: __cs.copy(__curr_symbol, _M_curr_symbol_size);
23866:
23866: const basic_string<_CharT>& __ps = __mp.positive_sign();
23866: _M_positive_sign_size = __ps.size();
23866: __positive_sign = new _CharT[_M_positive_sign_size];
23866: __ps.copy(__positive_sign, _M_positive_sign_size);
23866:
23866: const basic_string<_CharT>& __ns = __mp.negative_sign();
23866: _M_negative_sign_size = __ns.size();
23866: __negative_sign = new _CharT[_M_negative_sign_size];
23866: __ns.copy(__negative_sign, _M_negative_sign_size);
23866:
23866: _M_pos_format = __mp.pos_format();
23866: _M_neg_format = __mp.neg_format();
23866:
23866: const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__loc);
23866: __ct.widen(money_base::_S_atoms,
23866: money_base::_S_atoms + money_base::_S_end, _M_atoms);
23866:
23866: _M_grouping = __grouping;
23866: _M_curr_symbol = __curr_symbol;
23866: _M_positive_sign = __positive_sign;
23866: _M_negative_sign = __negative_sign;
23866: _M_allocated = true;
23866: }
23866: catch(...)
23866: {
23866: delete [] __grouping;
23866: delete [] __curr_symbol;
23866: delete [] __positive_sign;
23866: delete [] __negative_sign;
23866: throw;
23866: }
23866: }
23866:
23866: namespace __cxx11 {
23866:
23866: template<typename _CharT, typename _InIter>
23866: template<bool _Intl>
23866: _InIter
23866: money_get<_CharT, _InIter>::
23866: _M_extract(iter_type __beg, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, string& __units) const
23866: {
23866: typedef char_traits<_CharT> __traits_type;
23866: typedef typename string_type::size_type size_type;
23866: typedef money_base::part part;
23866: typedef __moneypunct_cache<_CharT, _Intl> __cache_type;
23866:
23866: const locale& __loc = __io._M_getloc();
23866: const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
23866:
23866: __use_cache<__cache_type> __uc;
23866: const __cache_type* __lc = __uc(__loc);
23866: const char_type* __lit = __lc->_M_atoms;
23866:
23866:
23866: bool __negative = false;
23866:
23866: size_type __sign_size = 0;
23866:
23866: const bool __mandatory_sign = (__lc->_M_positive_sign_size
23866: && __lc->_M_negative_sign_size);
23866:
23866: string __grouping_tmp;
23866: if (__lc->_M_use_grouping)
23866: __grouping_tmp.reserve(32);
23866:
23866: int __last_pos = 0;
23866:
23866: int __n = 0;
23866:
23866: bool __testvalid = true;
23866:
23866: bool __testdecfound = false;
23866:
23866:
23866: string __res;
23866: __res.reserve(32);
23866:
23866: const char_type* __lit_zero = __lit + money_base::_S_zero;
23866: const money_base::pattern __p = __lc->_M_neg_format;
23866: for (int __i = 0; __i < 4 && __testvalid; ++__i)
23866: {
23866: const part __which = static_cast<part>(__p.field[__i]);
23866: switch (__which)
23866: {
23866: case money_base::symbol:
23866:
23866:
23866:
23866:
23866: if (__io.flags() & ios_base::showbase || __sign_size > 1
23866: || __i == 0
23866: || (__i == 1 && (__mandatory_sign
23866: || (static_cast<part>(__p.field[0])
23866: == money_base::sign)
23866: || (static_cast<part>(__p.field[2])
23866: == money_base::space)))
23866: || (__i == 2 && ((static_cast<part>(__p.field[3])
23866: == money_base::value)
23866: || (__mandatory_sign
23866: && (static_cast<part>(__p.field[3])
23866: == money_base::sign)))))
23866: {
23866: const size_type __len = __lc->_M_curr_symbol_size;
23866: size_type __j = 0;
23866: for (; __beg != __end && __j < __len
23866: && *__beg == __lc->_M_curr_symbol[__j];
23866: ++__beg, (void)++__j);
23866: if (__j != __len
23866: && (__j || __io.flags() & ios_base::showbase))
23866: __testvalid = false;
23866: }
23866: break;
23866: case money_base::sign:
23866:
23866: if (__lc->_M_positive_sign_size && __beg != __end
23866: && *__beg == __lc->_M_positive_sign[0])
23866: {
23866: __sign_size = __lc->_M_positive_sign_size;
23866: ++__beg;
23866: }
23866: else if (__lc->_M_negative_sign_size && __beg != __end
23866: && *__beg == __lc->_M_negative_sign[0])
23866: {
23866: __negative = true;
23866: __sign_size = __lc->_M_negative_sign_size;
23866: ++__beg;
23866: }
23866: else if (__lc->_M_positive_sign_size
23866: && !__lc->_M_negative_sign_size)
23866:
23866:
23866: __negative = true;
23866: else if (__mandatory_sign)
23866: __testvalid = false;
23866: break;
23866: case money_base::value:
23866:
23866:
23866: for (; __beg != __end; ++__beg)
23866: {
23866: const char_type __c = *__beg;
23866: const char_type* __q = __traits_type::find(__lit_zero,
23866: 10, __c);
23866: if (__q != 0)
23866: {
23866: __res += money_base::_S_atoms[__q - __lit];
23866: ++__n;
23866: }
23866: else if (__c == __lc->_M_decimal_point
23866: && !__testdecfound)
23866: {
23866: if (__lc->_M_frac_digits <= 0)
23866: break;
23866:
23866: __last_pos = __n;
23866: __n = 0;
23866: __testdecfound = true;
23866: }
23866: else if (__lc->_M_use_grouping
23866: && __c == __lc->_M_thousands_sep
23866: && !__testdecfound)
23866: {
23866: if (__n)
23866: {
23866:
23866: __grouping_tmp += static_cast<char>(__n);
23866: __n = 0;
23866: }
23866: else
23866: {
23866: __testvalid = false;
23866: break;
23866: }
23866: }
23866: else
23866: break;
23866: }
23866: if (__res.empty())
23866: __testvalid = false;
23866: break;
23866: case money_base::space:
23866:
23866: if (__beg != __end && __ctype.is(ctype_base::space, *__beg))
23866: ++__beg;
23866: else
23866: __testvalid = false;
23866:
23866: case money_base::none:
23866:
23866: if (__i != 3)
23866: for (; __beg != __end
23866: && __ctype.is(ctype_base::space, *__beg); ++__beg);
23866: break;
23866: }
23866: }
23866:
23866:
23866: if (__sign_size > 1 && __testvalid)
23866: {
23866: const char_type* __sign = __negative ? __lc->_M_negative_sign
23866: : __lc->_M_positive_sign;
23866: size_type __i = 1;
23866: for (; __beg != __end && __i < __sign_size
23866: && *__beg == __sign[__i]; ++__beg, (void)++__i);
23866:
23866: if (__i != __sign_size)
23866: __testvalid = false;
23866: }
23866:
23866: if (__testvalid)
23866: {
23866:
23866: if (__res.size() > 1)
23866: {
23866: const size_type __first = __res.find_first_not_of('0');
23866: const bool __only_zeros = __first == string::npos;
23866: if (__first)
23866: __res.erase(0, __only_zeros ? __res.size() - 1 : __first);
23866: }
23866:
23866:
23866: if (__negative && __res[0] != '0')
23866: __res.insert(__res.begin(), '-');
23866:
23866:
23866: if (__grouping_tmp.size())
23866: {
23866:
23866: __grouping_tmp += static_cast<char>(__testdecfound ? __last_pos
23866: : __n);
23866: if (!std::__verify_grouping(__lc->_M_grouping,
23866: __lc->_M_grouping_size,
23866: __grouping_tmp))
23866: __err |= ios_base::failbit;
23866: }
23866:
23866:
23866: if (__testdecfound && __n != __lc->_M_frac_digits)
23866: __testvalid = false;
23866: }
23866:
23866:
23866: if (!__testvalid)
23866: __err |= ios_base::failbit;
23866: else
23866: __units.swap(__res);
23866:
23866:
23866: if (__beg == __end)
23866: __err |= ios_base::eofbit;
23866: return __beg;
23866: }
23866: # 368 "/usr/include/c++/10/bits/locale_facets_nonio.tcc" 3
23866: template<typename _CharT, typename _InIter>
23866: _InIter
23866: money_get<_CharT, _InIter>::
23866: do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io,
23866: ios_base::iostate& __err, long double& __units) const
23866: {
23866: string __str;
23866: __beg = __intl ? _M_extract<true>(__beg, __end, __io, __err, __str)
23866: : _M_extract<false>(__beg, __end, __io, __err, __str);
23866: std::__convert_to_v(__str.c_str(), __units, __err, _S_get_c_locale());
23866: return __beg;
23866: }
23866:
23866: template<typename _CharT, typename _InIter>
23866: _InIter
23866: money_get<_CharT, _InIter>::
23866: do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io,
23866: ios_base::iostate& __err, string_type& __digits) const
23866: {
23866: typedef typename string::size_type size_type;
23866:
23866: const locale& __loc = __io._M_getloc();
23866: const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
23866:
23866: string __str;
23866: __beg = __intl ? _M_extract<true>(__beg, __end, __io, __err, __str)
23866: : _M_extract<false>(__beg, __end, __io, __err, __str);
23866: const size_type __len = __str.size();
23866: if (__len)
23866: {
23866: __digits.resize(__len);
23866: __ctype.widen(__str.data(), __str.data() + __len, &__digits[0]);
23866: }
23866: return __beg;
23866: }
23866:
23866: template<typename _CharT, typename _OutIter>
23866: template<bool _Intl>
23866: _OutIter
23866: money_put<_CharT, _OutIter>::
23866: _M_insert(iter_type __s, ios_base& __io, char_type __fill,
23866: const string_type& __digits) const
23866: {
23866: typedef typename string_type::size_type size_type;
23866: typedef money_base::part part;
23866: typedef __moneypunct_cache<_CharT, _Intl> __cache_type;
23866:
23866: const locale& __loc = __io._M_getloc();
23866: const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
23866:
23866: __use_cache<__cache_type> __uc;
23866: const __cache_type* __lc = __uc(__loc);
23866: const char_type* __lit = __lc->_M_atoms;
23866:
23866:
23866:
23866: const char_type* __beg = __digits.data();
23866:
23866: money_base::pattern __p;
23866: const char_type* __sign;
23866: size_type __sign_size;
23866: if (!(*__beg == __lit[money_base::_S_minus]))
23866: {
23866: __p = __lc->_M_pos_format;
23866: __sign = __lc->_M_positive_sign;
23866: __sign_size = __lc->_M_positive_sign_size;
23866: }
23866: else
23866: {
23866: __p = __lc->_M_neg_format;
23866: __sign = __lc->_M_negative_sign;
23866: __sign_size = __lc->_M_negative_sign_size;
23866: if (__digits.size())
23866: ++__beg;
23866: }
23866:
23866:
23866: size_type __len = __ctype.scan_not(ctype_base::digit, __beg,
23866: __beg + __digits.size()) - __beg;
23866: if (__len)
23866: {
23866:
23866:
23866:
23866: string_type __value;
23866: __value.reserve(2 * __len);
23866:
23866:
23866:
23866: long __paddec = __len - __lc->_M_frac_digits;
23866: if (__paddec > 0)
23866: {
23866: if (__lc->_M_frac_digits < 0)
23866: __paddec = __len;
23866: if (__lc->_M_grouping_size)
23866: {
23866: __value.assign(2 * __paddec, char_type());
23866: _CharT* __vend =
23866: std::__add_grouping(&__value[0], __lc->_M_thousands_sep,
23866: __lc->_M_grouping,
23866: __lc->_M_grouping_size,
23866: __beg, __beg + __paddec);
23866: __value.erase(__vend - &__value[0]);
23866: }
23866: else
23866: __value.assign(__beg, __paddec);
23866: }
23866:
23866:
23866: if (__lc->_M_frac_digits > 0)
23866: {
23866: __value += __lc->_M_decimal_point;
23866: if (__paddec >= 0)
23866: __value.append(__beg + __paddec, __lc->_M_frac_digits);
23866: else
23866: {
23866:
23866: __value.append(-__paddec, __lit[money_base::_S_zero]);
23866: __value.append(__beg, __len);
23866: }
23866: }
23866:
23866:
23866: const ios_base::fmtflags __f = __io.flags()
23866: & ios_base::adjustfield;
23866: __len = __value.size() + __sign_size;
23866: __len += ((__io.flags() & ios_base::showbase)
23866: ? __lc->_M_curr_symbol_size : 0);
23866:
23866: string_type __res;
23866: __res.reserve(2 * __len);
23866:
23866: const size_type __width = static_cast<size_type>(__io.width());
23866: const bool __testipad = (__f == ios_base::internal
23866: && __len < __width);
23866:
23866: for (int __i = 0; __i < 4; ++__i)
23866: {
23866: const part __which = static_cast<part>(__p.field[__i]);
23866: switch (__which)
23866: {
23866: case money_base::symbol:
23866: if (__io.flags() & ios_base::showbase)
23866: __res.append(__lc->_M_curr_symbol,
23866: __lc->_M_curr_symbol_size);
23866: break;
23866: case money_base::sign:
23866:
23866:
23866:
23866: if (__sign_size)
23866: __res += __sign[0];
23866: break;
23866: case money_base::value:
23866: __res += __value;
23866: break;
23866: case money_base::space:
23866:
23866:
23866:
23866: if (__testipad)
23866: __res.append(__width - __len, __fill);
23866: else
23866: __res += __fill;
23866: break;
23866: case money_base::none:
23866: if (__testipad)
23866: __res.append(__width - __len, __fill);
23866: break;
23866: }
23866: }
23866:
23866:
23866: if (__sign_size > 1)
23866: __res.append(__sign + 1, __sign_size - 1);
23866:
23866:
23866: __len = __res.size();
23866: if (__width > __len)
23866: {
23866: if (__f == ios_base::left)
23866:
23866: __res.append(__width - __len, __fill);
23866: else
23866:
23866: __res.insert(0, __width - __len, __fill);
23866: __len = __width;
23866: }
23866:
23866:
23866: __s = std::__write(__s, __res.data(), __len);
23866: }
23866: __io.width(0);
23866: return __s;
23866: }
23866: # 574 "/usr/include/c++/10/bits/locale_facets_nonio.tcc" 3
23866: template<typename _CharT, typename _OutIter>
23866: _OutIter
23866: money_put<_CharT, _OutIter>::
23866: do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
23866: long double __units) const
23866: {
23866: const locale __loc = __io.getloc();
23866: const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
23866:
23866:
23866: int __cs_size = 64;
23866: char* __cs = static_cast<char*>(__builtin_alloca(__cs_size));
23866:
23866:
23866: int __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,
23866: "%.*Lf", 0, __units);
23866:
23866: if (__len >= __cs_size)
23866: {
23866: __cs_size = __len + 1;
23866: __cs = static_cast<char*>(__builtin_alloca(__cs_size));
23866: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,
23866: "%.*Lf", 0, __units);
23866: }
23866: # 606 "/usr/include/c++/10/bits/locale_facets_nonio.tcc" 3
23866: string_type __digits(__len, char_type());
23866: __ctype.widen(__cs, __cs + __len, &__digits[0]);
23866: return __intl ? _M_insert<true>(__s, __io, __fill, __digits)
23866: : _M_insert<false>(__s, __io, __fill, __digits);
23866: }
23866:
23866: template<typename _CharT, typename _OutIter>
23866: _OutIter
23866: money_put<_CharT, _OutIter>::
23866: do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
23866: const string_type& __digits) const
23866: { return __intl ? _M_insert<true>(__s, __io, __fill, __digits)
23866: : _M_insert<false>(__s, __io, __fill, __digits); }
23866:
23866: }
23866:
23866:
23866:
23866:
23866: template<typename _CharT, typename _InIter>
23866: time_base::dateorder
23866: time_get<_CharT, _InIter>::do_date_order() const
23866: { return time_base::no_order; }
23866:
23866:
23866:
23866: template<typename _CharT, typename _InIter>
23866: _InIter
23866: time_get<_CharT, _InIter>::
23866: _M_extract_via_format(iter_type __beg, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, tm* __tm,
23866: const _CharT* __format) const
23866: {
23866: const locale& __loc = __io._M_getloc();
23866: const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc);
23866: const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
23866: const size_t __len = char_traits<_CharT>::length(__format);
23866:
23866: ios_base::iostate __tmperr = ios_base::goodbit;
23866: size_t __i = 0;
23866: for (; __beg != __end && __i < __len && !__tmperr; ++__i)
23866: {
23866: if (__ctype.narrow(__format[__i], 0) == '%')
23866: {
23866:
23866: char __c = __ctype.narrow(__format[++__i], 0);
23866: int __mem = 0;
23866: if (__c == 'E' || __c == 'O')
23866: __c = __ctype.narrow(__format[++__i], 0);
23866: switch (__c)
23866: {
23866: const char* __cs;
23866: _CharT __wcs[10];
23866: case 'a':
23866:
23866: const char_type* __days1[7];
23866: __tp._M_days_abbreviated(__days1);
23866: __beg = _M_extract_name(__beg, __end, __mem, __days1,
23866: 7, __io, __tmperr);
23866: if (!__tmperr)
23866: __tm->tm_wday = __mem;
23866: break;
23866: case 'A':
23866:
23866: const char_type* __days2[7];
23866: __tp._M_days(__days2);
23866: __beg = _M_extract_name(__beg, __end, __mem, __days2,
23866: 7, __io, __tmperr);
23866: if (!__tmperr)
23866: __tm->tm_wday = __mem;
23866: break;
23866: case 'h':
23866: case 'b':
23866:
23866: const char_type* __months1[12];
23866: __tp._M_months_abbreviated(__months1);
23866: __beg = _M_extract_name(__beg, __end, __mem,
23866: __months1, 12, __io, __tmperr);
23866: if (!__tmperr)
23866: __tm->tm_mon = __mem;
23866: break;
23866: case 'B':
23866:
23866: const char_type* __months2[12];
23866: __tp._M_months(__months2);
23866: __beg = _M_extract_name(__beg, __end, __mem,
23866: __months2, 12, __io, __tmperr);
23866: if (!__tmperr)
23866: __tm->tm_mon = __mem;
23866: break;
23866: case 'c':
23866:
23866: const char_type* __dt[2];
23866: __tp._M_date_time_formats(__dt);
23866: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr,
23866: __tm, __dt[0]);
23866: break;
23866: case 'd':
23866:
23866: __beg = _M_extract_num(__beg, __end, __mem, 1, 31, 2,
23866: __io, __tmperr);
23866: if (!__tmperr)
23866: __tm->tm_mday = __mem;
23866: break;
23866: case 'e':
23866:
23866:
23866: if (__ctype.is(ctype_base::space, *__beg))
23866: __beg = _M_extract_num(++__beg, __end, __mem, 1, 9,
23866: 1, __io, __tmperr);
23866: else
23866: __beg = _M_extract_num(__beg, __end, __mem, 10, 31,
23866: 2, __io, __tmperr);
23866: if (!__tmperr)
23866: __tm->tm_mday = __mem;
23866: break;
23866: case 'D':
23866:
23866: __cs = "%m/%d/%y";
23866: __ctype.widen(__cs, __cs + 9, __wcs);
23866: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr,
23866: __tm, __wcs);
23866: break;
23866: case 'H':
23866:
23866: __beg = _M_extract_num(__beg, __end, __mem, 0, 23, 2,
23866: __io, __tmperr);
23866: if (!__tmperr)
23866: __tm->tm_hour = __mem;
23866: break;
23866: case 'I':
23866:
23866: __beg = _M_extract_num(__beg, __end, __mem, 1, 12, 2,
23866: __io, __tmperr);
23866: if (!__tmperr)
23866: __tm->tm_hour = __mem;
23866: break;
23866: case 'm':
23866:
23866: __beg = _M_extract_num(__beg, __end, __mem, 1, 12, 2,
23866: __io, __tmperr);
23866: if (!__tmperr)
23866: __tm->tm_mon = __mem - 1;
23866: break;
23866: case 'M':
23866:
23866: __beg = _M_extract_num(__beg, __end, __mem, 0, 59, 2,
23866: __io, __tmperr);
23866: if (!__tmperr)
23866: __tm->tm_min = __mem;
23866: break;
23866: case 'n':
23866: if (__ctype.narrow(*__beg, 0) == '\n')
23866: ++__beg;
23866: else
23866: __tmperr |= ios_base::failbit;
23866: break;
23866: case 'R':
23866:
23866: __cs = "%H:%M";
23866: __ctype.widen(__cs, __cs + 6, __wcs);
23866: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr,
23866: __tm, __wcs);
23866: break;
23866: case 'S':
23866:
23866:
23866:
23866: __beg = _M_extract_num(__beg, __end, __mem, 0, 60, 2,
23866:
23866:
23866:
23866: __io, __tmperr);
23866: if (!__tmperr)
23866: __tm->tm_sec = __mem;
23866: break;
23866: case 't':
23866: if (__ctype.narrow(*__beg, 0) == '\t')
23866: ++__beg;
23866: else
23866: __tmperr |= ios_base::failbit;
23866: break;
23866: case 'T':
23866:
23866: __cs = "%H:%M:%S";
23866: __ctype.widen(__cs, __cs + 9, __wcs);
23866: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr,
23866: __tm, __wcs);
23866: break;
23866: case 'x':
23866:
23866: const char_type* __dates[2];
23866: __tp._M_date_formats(__dates);
23866: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr,
23866: __tm, __dates[0]);
23866: break;
23866: case 'X':
23866:
23866: const char_type* __times[2];
23866: __tp._M_time_formats(__times);
23866: __beg = _M_extract_via_format(__beg, __end, __io, __tmperr,
23866: __tm, __times[0]);
23866: break;
23866: case 'y':
23866: case 'C':
23866:
23866: case 'Y':
23866:
23866:
23866:
23866:
23866: __beg = _M_extract_num(__beg, __end, __mem, 0, 9999, 4,
23866: __io, __tmperr);
23866: if (!__tmperr)
23866: __tm->tm_year = __mem < 0 ? __mem + 100 : __mem - 1900;
23866: break;
23866: case 'Z':
23866:
23866: if (__ctype.is(ctype_base::upper, *__beg))
23866: {
23866: int __tmp;
23866: __beg = _M_extract_name(__beg, __end, __tmp,
23866: __timepunct_cache<_CharT>::_S_timezones,
23866: 14, __io, __tmperr);
23866:
23866:
23866: if (__beg != __end && !__tmperr && __tmp == 0
23866: && (*__beg == __ctype.widen('-')
23866: || *__beg == __ctype.widen('+')))
23866: {
23866: __beg = _M_extract_num(__beg, __end, __tmp, 0, 23, 2,
23866: __io, __tmperr);
23866: __beg = _M_extract_num(__beg, __end, __tmp, 0, 59, 2,
23866: __io, __tmperr);
23866: }
23866: }
23866: else
23866: __tmperr |= ios_base::failbit;
23866: break;
23866: default:
23866:
23866: __tmperr |= ios_base::failbit;
23866: }
23866: }
23866: else
23866: {
23866:
23866: if (__format[__i] == *__beg)
23866: ++__beg;
23866: else
23866: __tmperr |= ios_base::failbit;
23866: }
23866: }
23866:
23866: if (__tmperr || __i != __len)
23866: __err |= ios_base::failbit;
23866:
23866: return __beg;
23866: }
23866:
23866: template<typename _CharT, typename _InIter>
23866: _InIter
23866: time_get<_CharT, _InIter>::
23866: _M_extract_num(iter_type __beg, iter_type __end, int& __member,
23866: int __min, int __max, size_t __len,
23866: ios_base& __io, ios_base::iostate& __err) const
23866: {
23866: const locale& __loc = __io._M_getloc();
23866: const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
23866:
23866:
23866: int __mult = __len == 2 ? 10 : (__len == 4 ? 1000 : 1);
23866:
23866: ++__min;
23866: size_t __i = 0;
23866: int __value = 0;
23866: for (; __beg != __end && __i < __len; ++__beg, (void)++__i)
23866: {
23866: const char __c = __ctype.narrow(*__beg, '*');
23866: if (__c >= '0' && __c <= '9')
23866: {
23866: __value = __value * 10 + (__c - '0');
23866: const int __valuec = __value * __mult;
23866: if (__valuec > __max || __valuec + __mult < __min)
23866: break;
23866: __mult /= 10;
23866: }
23866: else
23866: break;
23866: }
23866: if (__i == __len)
23866: __member = __value;
23866:
23866: else if (__len == 4 && __i == 2)
23866: __member = __value - 100;
23866: else
23866: __err |= ios_base::failbit;
23866:
23866: return __beg;
23866: }
23866:
23866:
23866:
23866: template<typename _CharT, typename _InIter>
23866: _InIter
23866: time_get<_CharT, _InIter>::
23866: _M_extract_name(iter_type __beg, iter_type __end, int& __member,
23866: const _CharT** __names, size_t __indexlen,
23866: ios_base& __io, ios_base::iostate& __err) const
23866: {
23866: typedef char_traits<_CharT> __traits_type;
23866: const locale& __loc = __io._M_getloc();
23866: const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
23866:
23866: int* __matches = static_cast<int*>(__builtin_alloca(sizeof(int)
23866: * __indexlen));
23866: size_t __nmatches = 0;
23866: size_t __pos = 0;
23866: bool __testvalid = true;
23866: const char_type* __name;
23866:
23866:
23866:
23866:
23866:
23866: if (__beg != __end)
23866: {
23866: const char_type __c = *__beg;
23866: for (size_t __i1 = 0; __i1 < __indexlen; ++__i1)
23866: if (__c == __names[__i1][0]
23866: || __c == __ctype.toupper(__names[__i1][0]))
23866: __matches[__nmatches++] = __i1;
23866: }
23866:
23866: while (__nmatches > 1)
23866: {
23866:
23866: size_t __minlen = __traits_type::length(__names[__matches[0]]);
23866: for (size_t __i2 = 1; __i2 < __nmatches; ++__i2)
23866: __minlen = std::min(__minlen,
23866: __traits_type::length(__names[__matches[__i2]]));
23866: ++__beg;
23866: ++__pos;
23866: if (__pos < __minlen && __beg != __end)
23866: for (size_t __i3 = 0; __i3 < __nmatches;)
23866: {
23866: __name = __names[__matches[__i3]];
23866: if (!(__name[__pos] == *__beg))
23866: __matches[__i3] = __matches[--__nmatches];
23866: else
23866: ++__i3;
23866: }
23866: else
23866: break;
23866: }
23866:
23866: if (__nmatches == 1)
23866: {
23866:
23866: ++__beg;
23866: ++__pos;
23866: __name = __names[__matches[0]];
23866: const size_t __len = __traits_type::length(__name);
23866: while (__pos < __len && __beg != __end && __name[__pos] == *__beg)
23866: ++__beg, (void)++__pos;
23866:
23866: if (__len == __pos)
23866: __member = __matches[0];
23866: else
23866: __testvalid = false;
23866: }
23866: else
23866: __testvalid = false;
23866: if (!__testvalid)
23866: __err |= ios_base::failbit;
23866:
23866: return __beg;
23866: }
23866:
23866: template<typename _CharT, typename _InIter>
23866: _InIter
23866: time_get<_CharT, _InIter>::
23866: _M_extract_wday_or_month(iter_type __beg, iter_type __end, int& __member,
23866: const _CharT** __names, size_t __indexlen,
23866: ios_base& __io, ios_base::iostate& __err) const
23866: {
23866: typedef char_traits<_CharT> __traits_type;
23866: const locale& __loc = __io._M_getloc();
23866: const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
23866:
23866: int* __matches = static_cast<int*>(__builtin_alloca(2 * sizeof(int)
23866: * __indexlen));
23866: size_t __nmatches = 0;
23866: size_t* __matches_lengths = 0;
23866: size_t __pos = 0;
23866:
23866: if (__beg != __end)
23866: {
23866: const char_type __c = *__beg;
23866: for (size_t __i = 0; __i < 2 * __indexlen; ++__i)
23866: if (__c == __names[__i][0]
23866: || __c == __ctype.toupper(__names[__i][0]))
23866: __matches[__nmatches++] = __i;
23866: }
23866:
23866: if (__nmatches)
23866: {
23866: ++__beg;
23866: ++__pos;
23866:
23866: __matches_lengths
23866: = static_cast<size_t*>(__builtin_alloca(sizeof(size_t)
23866: * __nmatches));
23866: for (size_t __i = 0; __i < __nmatches; ++__i)
23866: __matches_lengths[__i]
23866: = __traits_type::length(__names[__matches[__i]]);
23866: }
23866:
23866: for (; __beg != __end; ++__beg, (void)++__pos)
23866: {
23866: size_t __nskipped = 0;
23866: const char_type __c = *__beg;
23866: for (size_t __i = 0; __i < __nmatches;)
23866: {
23866: const char_type* __name = __names[__matches[__i]];
23866: if (__pos >= __matches_lengths[__i])
23866: ++__nskipped, ++__i;
23866: else if (!(__name[__pos] == __c))
23866: {
23866: --__nmatches;
23866: __matches[__i] = __matches[__nmatches];
23866: __matches_lengths[__i] = __matches_lengths[__nmatches];
23866: }
23866: else
23866: ++__i;
23866: }
23866: if (__nskipped == __nmatches)
23866: break;
23866: }
23866:
23866: if ((__nmatches == 1 && __matches_lengths[0] == __pos)
23866: || (__nmatches == 2 && (__matches_lengths[0] == __pos
23866: || __matches_lengths[1] == __pos)))
23866: __member = (__matches[0] >= __indexlen
23866: ? __matches[0] - __indexlen : __matches[0]);
23866: else
23866: __err |= ios_base::failbit;
23866:
23866: return __beg;
23866: }
23866:
23866: template<typename _CharT, typename _InIter>
23866: _InIter
23866: time_get<_CharT, _InIter>::
23866: do_get_time(iter_type __beg, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, tm* __tm) const
23866: {
23866: const locale& __loc = __io._M_getloc();
23866: const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc);
23866: const char_type* __times[2];
23866: __tp._M_time_formats(__times);
23866: __beg = _M_extract_via_format(__beg, __end, __io, __err,
23866: __tm, __times[0]);
23866: if (__beg == __end)
23866: __err |= ios_base::eofbit;
23866: return __beg;
23866: }
23866:
23866: template<typename _CharT, typename _InIter>
23866: _InIter
23866: time_get<_CharT, _InIter>::
23866: do_get_date(iter_type __beg, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, tm* __tm) const
23866: {
23866: const locale& __loc = __io._M_getloc();
23866: const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc);
23866: const char_type* __dates[2];
23866: __tp._M_date_formats(__dates);
23866: __beg = _M_extract_via_format(__beg, __end, __io, __err,
23866: __tm, __dates[0]);
23866: if (__beg == __end)
23866: __err |= ios_base::eofbit;
23866: return __beg;
23866: }
23866:
23866: template<typename _CharT, typename _InIter>
23866: _InIter
23866: time_get<_CharT, _InIter>::
23866: do_get_weekday(iter_type __beg, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, tm* __tm) const
23866: {
23866: const locale& __loc = __io._M_getloc();
23866: const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc);
23866: const char_type* __days[14];
23866: __tp._M_days_abbreviated(__days);
23866: __tp._M_days(__days + 7);
23866: int __tmpwday;
23866: ios_base::iostate __tmperr = ios_base::goodbit;
23866:
23866: __beg = _M_extract_wday_or_month(__beg, __end, __tmpwday, __days, 7,
23866: __io, __tmperr);
23866: if (!__tmperr)
23866: __tm->tm_wday = __tmpwday;
23866: else
23866: __err |= ios_base::failbit;
23866:
23866: if (__beg == __end)
23866: __err |= ios_base::eofbit;
23866: return __beg;
23866: }
23866:
23866: template<typename _CharT, typename _InIter>
23866: _InIter
23866: time_get<_CharT, _InIter>::
23866: do_get_monthname(iter_type __beg, iter_type __end,
23866: ios_base& __io, ios_base::iostate& __err, tm* __tm) const
23866: {
23866: const locale& __loc = __io._M_getloc();
23866: const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc);
23866: const char_type* __months[24];
23866: __tp._M_months_abbreviated(__months);
23866: __tp._M_months(__months + 12);
23866: int __tmpmon;
23866: ios_base::iostate __tmperr = ios_base::goodbit;
23866:
23866: __beg = _M_extract_wday_or_month(__beg, __end, __tmpmon, __months, 12,
23866: __io, __tmperr);
23866: if (!__tmperr)
23866: __tm->tm_mon = __tmpmon;
23866: else
23866: __err |= ios_base::failbit;
23866:
23866: if (__beg == __end)
23866: __err |= ios_base::eofbit;
23866: return __beg;
23866: }
23866:
23866: template<typename _CharT, typename _InIter>
23866: _InIter
23866: time_get<_CharT, _InIter>::
23866: do_get_year(iter_type __beg, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, tm* __tm) const
23866: {
23866: int __tmpyear;
23866: ios_base::iostate __tmperr = ios_base::goodbit;
23866:
23866: __beg = _M_extract_num(__beg, __end, __tmpyear, 0, 9999, 4,
23866: __io, __tmperr);
23866: if (!__tmperr)
23866: __tm->tm_year = __tmpyear < 0 ? __tmpyear + 100 : __tmpyear - 1900;
23866: else
23866: __err |= ios_base::failbit;
23866:
23866: if (__beg == __end)
23866: __err |= ios_base::eofbit;
23866: return __beg;
23866: }
23866:
23866:
23866: template<typename _CharT, typename _InIter>
23866: inline
23866: _InIter
23866: time_get<_CharT, _InIter>::
23866: get(iter_type __s, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, tm* __tm, const char_type* __fmt,
23866: const char_type* __fmtend) const
23866: {
23866: const locale& __loc = __io._M_getloc();
23866: ctype<_CharT> const& __ctype = use_facet<ctype<_CharT> >(__loc);
23866: __err = ios_base::goodbit;
23866: while (__fmt != __fmtend &&
23866: __err == ios_base::goodbit)
23866: {
23866: if (__s == __end)
23866: {
23866: __err = ios_base::eofbit | ios_base::failbit;
23866: break;
23866: }
23866: else if (__ctype.narrow(*__fmt, 0) == '%')
23866: {
23866: char __format;
23866: char __mod = 0;
23866: if (++__fmt == __fmtend)
23866: {
23866: __err = ios_base::failbit;
23866: break;
23866: }
23866: const char __c = __ctype.narrow(*__fmt, 0);
23866: if (__c != 'E' && __c != 'O')
23866: __format = __c;
23866: else if (++__fmt != __fmtend)
23866: {
23866: __mod = __c;
23866: __format = __ctype.narrow(*__fmt, 0);
23866: }
23866: else
23866: {
23866: __err = ios_base::failbit;
23866: break;
23866: }
23866: __s = this->do_get(__s, __end, __io, __err, __tm, __format,
23866: __mod);
23866: ++__fmt;
23866: }
23866: else if (__ctype.is(ctype_base::space, *__fmt))
23866: {
23866: ++__fmt;
23866: while (__fmt != __fmtend &&
23866: __ctype.is(ctype_base::space, *__fmt))
23866: ++__fmt;
23866:
23866: while (__s != __end &&
23866: __ctype.is(ctype_base::space, *__s))
23866: ++__s;
23866: }
23866:
23866: else if (__ctype.tolower(*__s) == __ctype.tolower(*__fmt) ||
23866: __ctype.toupper(*__s) == __ctype.toupper(*__fmt))
23866: {
23866: ++__s;
23866: ++__fmt;
23866: }
23866: else
23866: {
23866: __err = ios_base::failbit;
23866: break;
23866: }
23866: }
23866: return __s;
23866: }
23866:
23866: template<typename _CharT, typename _InIter>
23866: inline
23866: _InIter
23866: time_get<_CharT, _InIter>::
23866: do_get(iter_type __beg, iter_type __end, ios_base& __io,
23866: ios_base::iostate& __err, tm* __tm,
23866: char __format, char __mod) const
23866: {
23866: const locale& __loc = __io._M_getloc();
23866: ctype<_CharT> const& __ctype = use_facet<ctype<_CharT> >(__loc);
23866: __err = ios_base::goodbit;
23866:
23866: char_type __fmt[4];
23866: __fmt[0] = __ctype.widen('%');
23866: if (!__mod)
23866: {
23866: __fmt[1] = __format;
23866: __fmt[2] = char_type();
23866: }
23866: else
23866: {
23866: __fmt[1] = __mod;
23866: __fmt[2] = __format;
23866: __fmt[3] = char_type();
23866: }
23866:
23866: __beg = _M_extract_via_format(__beg, __end, __io, __err, __tm, __fmt);
23866: if (__beg == __end)
23866: __err |= ios_base::eofbit;
23866: return __beg;
23866: }
23866:
23866:
23866:
23866: template<typename _CharT, typename _OutIter>
23866: _OutIter
23866: time_put<_CharT, _OutIter>::
23866: put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm,
23866: const _CharT* __beg, const _CharT* __end) const
23866: {
23866: const locale& __loc = __io._M_getloc();
23866: ctype<_CharT> const& __ctype = use_facet<ctype<_CharT> >(__loc);
23866: for (; __beg != __end; ++__beg)
23866: if (__ctype.narrow(*__beg, 0) != '%')
23866: {
23866: *__s = *__beg;
23866: ++__s;
23866: }
23866: else if (++__beg != __end)
23866: {
23866: char __format;
23866: char __mod = 0;
23866: const char __c = __ctype.narrow(*__beg, 0);
23866: if (__c != 'E' && __c != 'O')
23866: __format = __c;
23866: else if (++__beg != __end)
23866: {
23866: __mod = __c;
23866: __format = __ctype.narrow(*__beg, 0);
23866: }
23866: else
23866: break;
23866: __s = this->do_put(__s, __io, __fill, __tm, __format, __mod);
23866: }
23866: else
23866: break;
23866: return __s;
23866: }
23866:
23866: template<typename _CharT, typename _OutIter>
23866: _OutIter
23866: time_put<_CharT, _OutIter>::
23866: do_put(iter_type __s, ios_base& __io, char_type, const tm* __tm,
23866: char __format, char __mod) const
23866: {
23866: const locale& __loc = __io._M_getloc();
23866: ctype<_CharT> const& __ctype = use_facet<ctype<_CharT> >(__loc);
23866: __timepunct<_CharT> const& __tp = use_facet<__timepunct<_CharT> >(__loc);
23866:
23866:
23866:
23866: const size_t __maxlen = 128;
23866: char_type __res[__maxlen];
23866:
23866:
23866:
23866:
23866:
23866:
23866: char_type __fmt[4];
23866: __fmt[0] = __ctype.widen('%');
23866: if (!__mod)
23866: {
23866: __fmt[1] = __format;
23866: __fmt[2] = char_type();
23866: }
23866: else
23866: {
23866: __fmt[1] = __mod;
23866: __fmt[2] = __format;
23866: __fmt[3] = char_type();
23866: }
23866:
23866: __tp._M_put(__res, __maxlen, __fmt, __tm);
23866:
23866:
23866: return std::__write(__s, __res, char_traits<char_type>::length(__res));
23866: }
23866:
23866:
23866:
23866:
23866:
23866: extern template class moneypunct<char, false>;
23866: extern template class moneypunct<char, true>;
23866: extern template class moneypunct_byname<char, false>;
23866: extern template class moneypunct_byname<char, true>;
23866: extern template class __cxx11:: money_get<char>;
23866: extern template class __cxx11:: money_put<char>;
23866: extern template class __timepunct<char>;
23866: extern template class time_put<char>;
23866: extern template class time_put_byname<char>;
23866: extern template class time_get<char>;
23866: extern template class time_get_byname<char>;
23866: extern template class messages<char>;
23866: extern template class messages_byname<char>;
23866:
23866: extern template
23866: const moneypunct<char, true>&
23866: use_facet<moneypunct<char, true> >(const locale&);
23866:
23866: extern template
23866: const moneypunct<char, false>&
23866: use_facet<moneypunct<char, false> >(const locale&);
23866:
23866: extern template
23866: const money_put<char>&
23866: use_facet<money_put<char> >(const locale&);
23866:
23866: extern template
23866: const money_get<char>&
23866: use_facet<money_get<char> >(const locale&);
23866:
23866: extern template
23866: const __timepunct<char>&
23866: use_facet<__timepunct<char> >(const locale&);
23866:
23866: extern template
23866: const time_put<char>&
23866: use_facet<time_put<char> >(const locale&);
23866:
23866: extern template
23866: const time_get<char>&
23866: use_facet<time_get<char> >(const locale&);
23866:
23866: extern template
23866: const messages<char>&
23866: use_facet<messages<char> >(const locale&);
23866:
23866: extern template
23866: bool
23866: has_facet<moneypunct<char> >(const locale&);
23866:
23866: extern template
23866: bool
23866: has_facet<money_put<char> >(const locale&);
23866:
23866: extern template
23866: bool
23866: has_facet<money_get<char> >(const locale&);
23866:
23866: extern template
23866: bool
23866: has_facet<__timepunct<char> >(const locale&);
23866:
23866: extern template
23866: bool
23866: has_facet<time_put<char> >(const locale&);
23866:
23866: extern template
23866: bool
23866: has_facet<time_get<char> >(const locale&);
23866:
23866: extern template
23866: bool
23866: has_facet<messages<char> >(const locale&);
23866:
23866:
23866: extern template class moneypunct<wchar_t, false>;
23866: extern template class moneypunct<wchar_t, true>;
23866: extern template class moneypunct_byname<wchar_t, false>;
23866: extern template class moneypunct_byname<wchar_t, true>;
23866: extern template class __cxx11:: money_get<wchar_t>;
23866: extern template class __cxx11:: money_put<wchar_t>;
23866: extern template class __timepunct<wchar_t>;
23866: extern template class time_put<wchar_t>;
23866: extern template class time_put_byname<wchar_t>;
23866: extern template class time_get<wchar_t>;
23866: extern template class time_get_byname<wchar_t>;
23866: extern template class messages<wchar_t>;
23866: extern template class messages_byname<wchar_t>;
23866:
23866: extern template
23866: const moneypunct<wchar_t, true>&
23866: use_facet<moneypunct<wchar_t, true> >(const locale&);
23866:
23866: extern template
23866: const moneypunct<wchar_t, false>&
23866: use_facet<moneypunct<wchar_t, false> >(const locale&);
23866:
23866: extern template
23866: const money_put<wchar_t>&
23866: use_facet<money_put<wchar_t> >(const locale&);
23866:
23866: extern template
23866: const money_get<wchar_t>&
23866: use_facet<money_get<wchar_t> >(const locale&);
23866:
23866: extern template
23866: const __timepunct<wchar_t>&
23866: use_facet<__timepunct<wchar_t> >(const locale&);
23866:
23866: extern template
23866: const time_put<wchar_t>&
23866: use_facet<time_put<wchar_t> >(const locale&);
23866:
23866: extern template
23866: const time_get<wchar_t>&
23866: use_facet<time_get<wchar_t> >(const locale&);
23866:
23866: extern template
23866: const messages<wchar_t>&
23866: use_facet<messages<wchar_t> >(const locale&);
23866:
23866: extern template
23866: bool
23866: has_facet<moneypunct<wchar_t> >(const locale&);
23866:
23866: extern template
23866: bool
23866: has_facet<money_put<wchar_t> >(const locale&);
23866:
23866: extern template
23866: bool
23866: has_facet<money_get<wchar_t> >(const locale&);
23866:
23866: extern template
23866: bool
23866: has_facet<__timepunct<wchar_t> >(const locale&);
23866:
23866: extern template
23866: bool
23866: has_facet<time_put<wchar_t> >(const locale&);
23866:
23866: extern template
23866: bool
23866: has_facet<time_get<wchar_t> >(const locale&);
23866:
23866: extern template
23866: bool
23866: has_facet<messages<wchar_t> >(const locale&);
23866:
23866:
23866:
23866:
23866: }
23866: # 2016 "/usr/include/c++/10/bits/locale_facets_nonio.h" 2 3
23866: # 42 "/usr/include/c++/10/locale" 2 3
23866:
23866: # 1 "/usr/include/c++/10/bits/locale_conv.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/locale_conv.h" 3
23866: #define _LOCALE_CONV_H 1
23866: # 41 "/usr/include/c++/10/bits/locale_conv.h" 3
23866: # 1 "/usr/include/c++/10/bits/unique_ptr.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/unique_ptr.h" 3
23866: #define _UNIQUE_PTR_H 1
23866: # 45 "/usr/include/c++/10/bits/unique_ptr.h" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #pragma GCC diagnostic push
23866: #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
23866: template<typename> class auto_ptr;
23866: #pragma GCC diagnostic pop
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct default_delete
23866: {
23866:
23866: constexpr default_delete() noexcept = default;
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Up,
23866: typename = _Require<is_convertible<_Up*, _Tp*>>>
23866: default_delete(const default_delete<_Up>&) noexcept { }
23866:
23866:
23866: void
23866: operator()(_Tp* __ptr) const
23866: {
23866: static_assert(!is_void<_Tp>::value,
23866: "can't delete pointer to incomplete type");
23866: static_assert(sizeof(_Tp)>0,
23866: "can't delete pointer to incomplete type");
23866: delete __ptr;
23866: }
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct default_delete<_Tp[]>
23866: {
23866: public:
23866:
23866: constexpr default_delete() noexcept = default;
23866: # 109 "/usr/include/c++/10/bits/unique_ptr.h" 3
23866: template<typename _Up,
23866: typename = _Require<is_convertible<_Up(*)[], _Tp(*)[]>>>
23866: default_delete(const default_delete<_Up[]>&) noexcept { }
23866:
23866:
23866: template<typename _Up>
23866: typename enable_if<is_convertible<_Up(*)[], _Tp(*)[]>::value>::type
23866: operator()(_Up* __ptr) const
23866: {
23866: static_assert(sizeof(_Tp)>0,
23866: "can't delete pointer to incomplete type");
23866: delete [] __ptr;
23866: }
23866: };
23866:
23866:
23866:
23866:
23866: template <typename _Tp, typename _Dp>
23866: class __uniq_ptr_impl
23866: {
23866: template <typename _Up, typename _Ep, typename = void>
23866: struct _Ptr
23866: {
23866: using type = _Up*;
23866: };
23866:
23866: template <typename _Up, typename _Ep>
23866: struct
23866: _Ptr<_Up, _Ep, __void_t<typename remove_reference<_Ep>::type::pointer>>
23866: {
23866: using type = typename remove_reference<_Ep>::type::pointer;
23866: };
23866:
23866: public:
23866: using _DeleterConstraint = enable_if<
23866: __and_<__not_<is_pointer<_Dp>>,
23866: is_default_constructible<_Dp>>::value>;
23866:
23866: using pointer = typename _Ptr<_Tp, _Dp>::type;
23866:
23866: static_assert( !is_rvalue_reference<_Dp>::value,
23866: "unique_ptr's deleter type must be a function object type"
23866: " or an lvalue reference type" );
23866:
23866: __uniq_ptr_impl() = default;
23866: __uniq_ptr_impl(pointer __p) : _M_t() { _M_ptr() = __p; }
23866:
23866: template<typename _Del>
23866: __uniq_ptr_impl(pointer __p, _Del&& __d)
23866: : _M_t(__p, std::forward<_Del>(__d)) { }
23866:
23866: __uniq_ptr_impl(__uniq_ptr_impl&& __u) noexcept
23866: : _M_t(std::move(__u._M_t))
23866: { __u._M_ptr() = nullptr; }
23866:
23866: __uniq_ptr_impl& operator=(__uniq_ptr_impl&& __u) noexcept
23866: {
23866: reset(__u.release());
23866: _M_deleter() = std::forward<_Dp>(__u._M_deleter());
23866: return *this;
23866: }
23866:
23866: pointer& _M_ptr() { return std::get<0>(_M_t); }
23866: pointer _M_ptr() const { return std::get<0>(_M_t); }
23866: _Dp& _M_deleter() { return std::get<1>(_M_t); }
23866: const _Dp& _M_deleter() const { return std::get<1>(_M_t); }
23866:
23866: void reset(pointer __p) noexcept
23866: {
23866: const pointer __old_p = _M_ptr();
23866: _M_ptr() = __p;
23866: if (__old_p)
23866: _M_deleter()(__old_p);
23866: }
23866:
23866: pointer release() noexcept
23866: {
23866: pointer __p = _M_ptr();
23866: _M_ptr() = nullptr;
23866: return __p;
23866: }
23866:
23866: void
23866: swap(__uniq_ptr_impl& __rhs) noexcept
23866: {
23866: using std::swap;
23866: swap(this->_M_ptr(), __rhs._M_ptr());
23866: swap(this->_M_deleter(), __rhs._M_deleter());
23866: }
23866:
23866: private:
23866: tuple<pointer, _Dp> _M_t;
23866: };
23866:
23866:
23866: template <typename _Tp, typename _Dp,
23866: bool = is_move_constructible<_Dp>::value,
23866: bool = is_move_assignable<_Dp>::value>
23866: struct __uniq_ptr_data : __uniq_ptr_impl<_Tp, _Dp>
23866: {
23866: using __uniq_ptr_impl<_Tp, _Dp>::__uniq_ptr_impl;
23866: __uniq_ptr_data(__uniq_ptr_data&&) = default;
23866: __uniq_ptr_data& operator=(__uniq_ptr_data&&) = default;
23866: };
23866:
23866: template <typename _Tp, typename _Dp>
23866: struct __uniq_ptr_data<_Tp, _Dp, true, false> : __uniq_ptr_impl<_Tp, _Dp>
23866: {
23866: using __uniq_ptr_impl<_Tp, _Dp>::__uniq_ptr_impl;
23866: __uniq_ptr_data(__uniq_ptr_data&&) = default;
23866: __uniq_ptr_data& operator=(__uniq_ptr_data&&) = delete;
23866: };
23866:
23866: template <typename _Tp, typename _Dp>
23866: struct __uniq_ptr_data<_Tp, _Dp, false, true> : __uniq_ptr_impl<_Tp, _Dp>
23866: {
23866: using __uniq_ptr_impl<_Tp, _Dp>::__uniq_ptr_impl;
23866: __uniq_ptr_data(__uniq_ptr_data&&) = delete;
23866: __uniq_ptr_data& operator=(__uniq_ptr_data&&) = default;
23866: };
23866:
23866: template <typename _Tp, typename _Dp>
23866: struct __uniq_ptr_data<_Tp, _Dp, false, false> : __uniq_ptr_impl<_Tp, _Dp>
23866: {
23866: using __uniq_ptr_impl<_Tp, _Dp>::__uniq_ptr_impl;
23866: __uniq_ptr_data(__uniq_ptr_data&&) = delete;
23866: __uniq_ptr_data& operator=(__uniq_ptr_data&&) = delete;
23866: };
23866:
23866:
23866:
23866: template <typename _Tp, typename _Dp = default_delete<_Tp>>
23866: class unique_ptr
23866: {
23866: template <typename _Up>
23866: using _DeleterConstraint =
23866: typename __uniq_ptr_impl<_Tp, _Up>::_DeleterConstraint::type;
23866:
23866: __uniq_ptr_data<_Tp, _Dp> _M_t;
23866:
23866: public:
23866: using pointer = typename __uniq_ptr_impl<_Tp, _Dp>::pointer;
23866: using element_type = _Tp;
23866: using deleter_type = _Dp;
23866:
23866: private:
23866:
23866:
23866: template<typename _Up, typename _Ep>
23866: using __safe_conversion_up = __and_<
23866: is_convertible<typename unique_ptr<_Up, _Ep>::pointer, pointer>,
23866: __not_<is_array<_Up>>
23866: >;
23866:
23866: public:
23866:
23866:
23866:
23866: template<typename _Del = _Dp, typename = _DeleterConstraint<_Del>>
23866: constexpr unique_ptr() noexcept
23866: : _M_t()
23866: { }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Del = _Dp, typename = _DeleterConstraint<_Del>>
23866: explicit
23866: unique_ptr(pointer __p) noexcept
23866: : _M_t(__p)
23866: { }
23866: # 292 "/usr/include/c++/10/bits/unique_ptr.h" 3
23866: template<typename _Del = deleter_type,
23866: typename = _Require<is_copy_constructible<_Del>>>
23866: unique_ptr(pointer __p, const deleter_type& __d) noexcept
23866: : _M_t(__p, __d) { }
23866: # 304 "/usr/include/c++/10/bits/unique_ptr.h" 3
23866: template<typename _Del = deleter_type,
23866: typename = _Require<is_move_constructible<_Del>>>
23866: unique_ptr(pointer __p,
23866: __enable_if_t<!is_lvalue_reference<_Del>::value,
23866: _Del&&> __d) noexcept
23866: : _M_t(__p, std::move(__d))
23866: { }
23866:
23866: template<typename _Del = deleter_type,
23866: typename _DelUnref = typename remove_reference<_Del>::type>
23866: unique_ptr(pointer,
23866: __enable_if_t<is_lvalue_reference<_Del>::value,
23866: _DelUnref&&>) = delete;
23866:
23866:
23866: template<typename _Del = _Dp, typename = _DeleterConstraint<_Del>>
23866: constexpr unique_ptr(nullptr_t) noexcept
23866: : _M_t()
23866: { }
23866:
23866:
23866:
23866:
23866: unique_ptr(unique_ptr&&) = default;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Up, typename _Ep, typename = _Require<
23866: __safe_conversion_up<_Up, _Ep>,
23866: typename conditional<is_reference<_Dp>::value,
23866: is_same<_Ep, _Dp>,
23866: is_convertible<_Ep, _Dp>>::type>>
23866: unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept
23866: : _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter()))
23866: { }
23866:
23866:
23866: #pragma GCC diagnostic push
23866: #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
23866:
23866: template<typename _Up, typename = _Require<
23866: is_convertible<_Up*, _Tp*>, is_same<_Dp, default_delete<_Tp>>>>
23866: unique_ptr(auto_ptr<_Up>&& __u) noexcept;
23866: #pragma GCC diagnostic pop
23866:
23866:
23866:
23866: ~unique_ptr() noexcept
23866: {
23866: static_assert(__is_invocable<deleter_type&, pointer>::value,
23866: "unique_ptr's deleter must be invocable with a pointer");
23866: auto& __ptr = _M_t._M_ptr();
23866: if (__ptr != nullptr)
23866: get_deleter()(std::move(__ptr));
23866: __ptr = pointer();
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: unique_ptr& operator=(unique_ptr&&) = default;
23866: # 380 "/usr/include/c++/10/bits/unique_ptr.h" 3
23866: template<typename _Up, typename _Ep>
23866: typename enable_if< __and_<
23866: __safe_conversion_up<_Up, _Ep>,
23866: is_assignable<deleter_type&, _Ep&&>
23866: >::value,
23866: unique_ptr&>::type
23866: operator=(unique_ptr<_Up, _Ep>&& __u) noexcept
23866: {
23866: reset(__u.release());
23866: get_deleter() = std::forward<_Ep>(__u.get_deleter());
23866: return *this;
23866: }
23866:
23866:
23866: unique_ptr&
23866: operator=(nullptr_t) noexcept
23866: {
23866: reset();
23866: return *this;
23866: }
23866:
23866:
23866:
23866:
23866: typename add_lvalue_reference<element_type>::type
23866: operator*() const
23866: {
23866: ;
23866: return *get();
23866: }
23866:
23866:
23866: pointer
23866: operator->() const noexcept
23866: {
23866: ;
23866: return get();
23866: }
23866:
23866:
23866: pointer
23866: get() const noexcept
23866: { return _M_t._M_ptr(); }
23866:
23866:
23866: deleter_type&
23866: get_deleter() noexcept
23866: { return _M_t._M_deleter(); }
23866:
23866:
23866: const deleter_type&
23866: get_deleter() const noexcept
23866: { return _M_t._M_deleter(); }
23866:
23866:
23866: explicit operator bool() const noexcept
23866: { return get() == pointer() ? false : true; }
23866:
23866:
23866:
23866:
23866: pointer
23866: release() noexcept
23866: { return _M_t.release(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: void
23866: reset(pointer __p = pointer()) noexcept
23866: {
23866: static_assert(__is_invocable<deleter_type&, pointer>::value,
23866: "unique_ptr's deleter must be invocable with a pointer");
23866: _M_t.reset(std::move(__p));
23866: }
23866:
23866:
23866: void
23866: swap(unique_ptr& __u) noexcept
23866: {
23866: static_assert(__is_swappable<_Dp>::value, "deleter must be swappable");
23866: _M_t.swap(__u._M_t);
23866: }
23866:
23866:
23866: unique_ptr(const unique_ptr&) = delete;
23866: unique_ptr& operator=(const unique_ptr&) = delete;
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp, typename _Dp>
23866: class unique_ptr<_Tp[], _Dp>
23866: {
23866: template <typename _Up>
23866: using _DeleterConstraint =
23866: typename __uniq_ptr_impl<_Tp, _Up>::_DeleterConstraint::type;
23866:
23866: __uniq_ptr_data<_Tp, _Dp> _M_t;
23866:
23866: template<typename _Up>
23866: using __remove_cv = typename remove_cv<_Up>::type;
23866:
23866:
23866: template<typename _Up>
23866: using __is_derived_Tp
23866: = __and_< is_base_of<_Tp, _Up>,
23866: __not_<is_same<__remove_cv<_Tp>, __remove_cv<_Up>>> >;
23866:
23866: public:
23866: using pointer = typename __uniq_ptr_impl<_Tp, _Dp>::pointer;
23866: using element_type = _Tp;
23866: using deleter_type = _Dp;
23866:
23866:
23866:
23866: template<typename _Up, typename _Ep,
23866: typename _UPtr = unique_ptr<_Up, _Ep>,
23866: typename _UP_pointer = typename _UPtr::pointer,
23866: typename _UP_element_type = typename _UPtr::element_type>
23866: using __safe_conversion_up = __and_<
23866: is_array<_Up>,
23866: is_same<pointer, element_type*>,
23866: is_same<_UP_pointer, _UP_element_type*>,
23866: is_convertible<_UP_element_type(*)[], element_type(*)[]>
23866: >;
23866:
23866:
23866: template<typename _Up>
23866: using __safe_conversion_raw = __and_<
23866: __or_<__or_<is_same<_Up, pointer>,
23866: is_same<_Up, nullptr_t>>,
23866: __and_<is_pointer<_Up>,
23866: is_same<pointer, element_type*>,
23866: is_convertible<
23866: typename remove_pointer<_Up>::type(*)[],
23866: element_type(*)[]>
23866: >
23866: >
23866: >;
23866:
23866:
23866:
23866:
23866: template<typename _Del = _Dp, typename = _DeleterConstraint<_Del>>
23866: constexpr unique_ptr() noexcept
23866: : _M_t()
23866: { }
23866: # 541 "/usr/include/c++/10/bits/unique_ptr.h" 3
23866: template<typename _Up,
23866: typename _Vp = _Dp,
23866: typename = _DeleterConstraint<_Vp>,
23866: typename = typename enable_if<
23866: __safe_conversion_raw<_Up>::value, bool>::type>
23866: explicit
23866: unique_ptr(_Up __p) noexcept
23866: : _M_t(__p)
23866: { }
23866: # 559 "/usr/include/c++/10/bits/unique_ptr.h" 3
23866: template<typename _Up, typename _Del = deleter_type,
23866: typename = _Require<__safe_conversion_raw<_Up>,
23866: is_copy_constructible<_Del>>>
23866: unique_ptr(_Up __p, const deleter_type& __d) noexcept
23866: : _M_t(__p, __d) { }
23866: # 573 "/usr/include/c++/10/bits/unique_ptr.h" 3
23866: template<typename _Up, typename _Del = deleter_type,
23866: typename = _Require<__safe_conversion_raw<_Up>,
23866: is_move_constructible<_Del>>>
23866: unique_ptr(_Up __p,
23866: __enable_if_t<!is_lvalue_reference<_Del>::value,
23866: _Del&&> __d) noexcept
23866: : _M_t(std::move(__p), std::move(__d))
23866: { }
23866:
23866: template<typename _Up, typename _Del = deleter_type,
23866: typename _DelUnref = typename remove_reference<_Del>::type,
23866: typename = _Require<__safe_conversion_raw<_Up>>>
23866: unique_ptr(_Up,
23866: __enable_if_t<is_lvalue_reference<_Del>::value,
23866: _DelUnref&&>) = delete;
23866:
23866:
23866: unique_ptr(unique_ptr&&) = default;
23866:
23866:
23866: template<typename _Del = _Dp, typename = _DeleterConstraint<_Del>>
23866: constexpr unique_ptr(nullptr_t) noexcept
23866: : _M_t()
23866: { }
23866:
23866: template<typename _Up, typename _Ep, typename = _Require<
23866: __safe_conversion_up<_Up, _Ep>,
23866: typename conditional<is_reference<_Dp>::value,
23866: is_same<_Ep, _Dp>,
23866: is_convertible<_Ep, _Dp>>::type>>
23866: unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept
23866: : _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter()))
23866: { }
23866:
23866:
23866: ~unique_ptr()
23866: {
23866: auto& __ptr = _M_t._M_ptr();
23866: if (__ptr != nullptr)
23866: get_deleter()(__ptr);
23866: __ptr = pointer();
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: unique_ptr&
23866: operator=(unique_ptr&&) = default;
23866: # 632 "/usr/include/c++/10/bits/unique_ptr.h" 3
23866: template<typename _Up, typename _Ep>
23866: typename
23866: enable_if<__and_<__safe_conversion_up<_Up, _Ep>,
23866: is_assignable<deleter_type&, _Ep&&>
23866: >::value,
23866: unique_ptr&>::type
23866: operator=(unique_ptr<_Up, _Ep>&& __u) noexcept
23866: {
23866: reset(__u.release());
23866: get_deleter() = std::forward<_Ep>(__u.get_deleter());
23866: return *this;
23866: }
23866:
23866:
23866: unique_ptr&
23866: operator=(nullptr_t) noexcept
23866: {
23866: reset();
23866: return *this;
23866: }
23866:
23866:
23866:
23866:
23866: typename std::add_lvalue_reference<element_type>::type
23866: operator[](size_t __i) const
23866: {
23866: ;
23866: return get()[__i];
23866: }
23866:
23866:
23866: pointer
23866: get() const noexcept
23866: { return _M_t._M_ptr(); }
23866:
23866:
23866: deleter_type&
23866: get_deleter() noexcept
23866: { return _M_t._M_deleter(); }
23866:
23866:
23866: const deleter_type&
23866: get_deleter() const noexcept
23866: { return _M_t._M_deleter(); }
23866:
23866:
23866: explicit operator bool() const noexcept
23866: { return get() == pointer() ? false : true; }
23866:
23866:
23866:
23866:
23866: pointer
23866: release() noexcept
23866: { return _M_t.release(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <typename _Up,
23866: typename = _Require<
23866: __or_<is_same<_Up, pointer>,
23866: __and_<is_same<pointer, element_type*>,
23866: is_pointer<_Up>,
23866: is_convertible<
23866: typename remove_pointer<_Up>::type(*)[],
23866: element_type(*)[]
23866: >
23866: >
23866: >
23866: >>
23866: void
23866: reset(_Up __p) noexcept
23866: { _M_t.reset(std::move(__p)); }
23866:
23866: void reset(nullptr_t = nullptr) noexcept
23866: { reset(pointer()); }
23866:
23866:
23866: void
23866: swap(unique_ptr& __u) noexcept
23866: {
23866: static_assert(__is_swappable<_Dp>::value, "deleter must be swappable");
23866: _M_t.swap(__u._M_t);
23866: }
23866:
23866:
23866: unique_ptr(const unique_ptr&) = delete;
23866: unique_ptr& operator=(const unique_ptr&) = delete;
23866: };
23866:
23866:
23866:
23866:
23866: template<typename _Tp, typename _Dp>
23866: inline
23866:
23866:
23866: typename enable_if<__is_swappable<_Dp>::value>::type
23866:
23866:
23866:
23866: swap(unique_ptr<_Tp, _Dp>& __x,
23866: unique_ptr<_Tp, _Dp>& __y) noexcept
23866: { __x.swap(__y); }
23866:
23866:
23866: template<typename _Tp, typename _Dp>
23866: typename enable_if<!__is_swappable<_Dp>::value>::type
23866: swap(unique_ptr<_Tp, _Dp>&,
23866: unique_ptr<_Tp, _Dp>&) = delete;
23866:
23866:
23866:
23866: template<typename _Tp, typename _Dp,
23866: typename _Up, typename _Ep>
23866: [[__nodiscard__]] inline bool
23866: operator==(const unique_ptr<_Tp, _Dp>& __x,
23866: const unique_ptr<_Up, _Ep>& __y)
23866: { return __x.get() == __y.get(); }
23866:
23866:
23866: template<typename _Tp, typename _Dp>
23866: [[__nodiscard__]] inline bool
23866: operator==(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) noexcept
23866: { return !__x; }
23866:
23866:
23866:
23866: template<typename _Tp, typename _Dp>
23866: [[__nodiscard__]] inline bool
23866: operator==(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) noexcept
23866: { return !__x; }
23866:
23866:
23866: template<typename _Tp, typename _Dp,
23866: typename _Up, typename _Ep>
23866: [[__nodiscard__]] inline bool
23866: operator!=(const unique_ptr<_Tp, _Dp>& __x,
23866: const unique_ptr<_Up, _Ep>& __y)
23866: { return __x.get() != __y.get(); }
23866:
23866:
23866: template<typename _Tp, typename _Dp>
23866: [[__nodiscard__]] inline bool
23866: operator!=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) noexcept
23866: { return (bool)__x; }
23866:
23866:
23866: template<typename _Tp, typename _Dp>
23866: [[__nodiscard__]] inline bool
23866: operator!=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) noexcept
23866: { return (bool)__x; }
23866:
23866:
23866:
23866: template<typename _Tp, typename _Dp,
23866: typename _Up, typename _Ep>
23866: [[__nodiscard__]] inline bool
23866: operator<(const unique_ptr<_Tp, _Dp>& __x,
23866: const unique_ptr<_Up, _Ep>& __y)
23866: {
23866: typedef typename
23866: std::common_type<typename unique_ptr<_Tp, _Dp>::pointer,
23866: typename unique_ptr<_Up, _Ep>::pointer>::type _CT;
23866: return std::less<_CT>()(__x.get(), __y.get());
23866: }
23866:
23866:
23866: template<typename _Tp, typename _Dp>
23866: [[__nodiscard__]] inline bool
23866: operator<(const unique_ptr<_Tp, _Dp>& __x, nullptr_t)
23866: {
23866: return std::less<typename unique_ptr<_Tp, _Dp>::pointer>()(__x.get(),
23866: nullptr);
23866: }
23866:
23866:
23866: template<typename _Tp, typename _Dp>
23866: [[__nodiscard__]] inline bool
23866: operator<(nullptr_t, const unique_ptr<_Tp, _Dp>& __x)
23866: {
23866: return std::less<typename unique_ptr<_Tp, _Dp>::pointer>()(nullptr,
23866: __x.get());
23866: }
23866:
23866:
23866: template<typename _Tp, typename _Dp,
23866: typename _Up, typename _Ep>
23866: [[__nodiscard__]] inline bool
23866: operator<=(const unique_ptr<_Tp, _Dp>& __x,
23866: const unique_ptr<_Up, _Ep>& __y)
23866: { return !(__y < __x); }
23866:
23866:
23866: template<typename _Tp, typename _Dp>
23866: [[__nodiscard__]] inline bool
23866: operator<=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t)
23866: { return !(nullptr < __x); }
23866:
23866:
23866: template<typename _Tp, typename _Dp>
23866: [[__nodiscard__]] inline bool
23866: operator<=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x)
23866: { return !(__x < nullptr); }
23866:
23866:
23866: template<typename _Tp, typename _Dp,
23866: typename _Up, typename _Ep>
23866: [[__nodiscard__]] inline bool
23866: operator>(const unique_ptr<_Tp, _Dp>& __x,
23866: const unique_ptr<_Up, _Ep>& __y)
23866: { return (__y < __x); }
23866:
23866:
23866: template<typename _Tp, typename _Dp>
23866: [[__nodiscard__]] inline bool
23866: operator>(const unique_ptr<_Tp, _Dp>& __x, nullptr_t)
23866: {
23866: return std::less<typename unique_ptr<_Tp, _Dp>::pointer>()(nullptr,
23866: __x.get());
23866: }
23866:
23866:
23866: template<typename _Tp, typename _Dp>
23866: [[__nodiscard__]] inline bool
23866: operator>(nullptr_t, const unique_ptr<_Tp, _Dp>& __x)
23866: {
23866: return std::less<typename unique_ptr<_Tp, _Dp>::pointer>()(__x.get(),
23866: nullptr);
23866: }
23866:
23866:
23866: template<typename _Tp, typename _Dp,
23866: typename _Up, typename _Ep>
23866: [[__nodiscard__]] inline bool
23866: operator>=(const unique_ptr<_Tp, _Dp>& __x,
23866: const unique_ptr<_Up, _Ep>& __y)
23866: { return !(__x < __y); }
23866:
23866:
23866: template<typename _Tp, typename _Dp>
23866: [[__nodiscard__]] inline bool
23866: operator>=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t)
23866: { return !(__x < nullptr); }
23866:
23866:
23866: template<typename _Tp, typename _Dp>
23866: [[__nodiscard__]] inline bool
23866: operator>=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x)
23866: { return !(nullptr < __x); }
23866: # 912 "/usr/include/c++/10/bits/unique_ptr.h" 3
23866: template<typename _Up, typename _Ptr = typename _Up::pointer,
23866: bool = __poison_hash<_Ptr>::__enable_hash_call>
23866: struct __uniq_ptr_hash
23866:
23866: : private __poison_hash<_Ptr>
23866:
23866: {
23866: size_t
23866: operator()(const _Up& __u) const
23866: noexcept(noexcept(std::declval<hash<_Ptr>>()(std::declval<_Ptr>())))
23866: { return hash<_Ptr>()(__u.get()); }
23866: };
23866:
23866: template<typename _Up, typename _Ptr>
23866: struct __uniq_ptr_hash<_Up, _Ptr, false>
23866: : private __poison_hash<_Ptr>
23866: { };
23866:
23866:
23866:
23866: template<typename _Tp, typename _Dp>
23866: struct hash<unique_ptr<_Tp, _Dp>>
23866: : public __hash_base<size_t, unique_ptr<_Tp, _Dp>>,
23866: public __uniq_ptr_hash<unique_ptr<_Tp, _Dp>>
23866: { };
23866:
23866:
23866:
23866: #define __cpp_lib_make_unique 201304
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct _MakeUniq
23866: { typedef unique_ptr<_Tp> __single_object; };
23866:
23866: template<typename _Tp>
23866: struct _MakeUniq<_Tp[]>
23866: { typedef unique_ptr<_Tp[]> __array; };
23866:
23866: template<typename _Tp, size_t _Bound>
23866: struct _MakeUniq<_Tp[_Bound]>
23866: { struct __invalid_type { }; };
23866:
23866:
23866:
23866:
23866: template<typename _Tp, typename... _Args>
23866: inline typename _MakeUniq<_Tp>::__single_object
23866: make_unique(_Args&&... __args)
23866: { return unique_ptr<_Tp>(new _Tp(std::forward<_Args>(__args)...)); }
23866:
23866:
23866: template<typename _Tp>
23866: inline typename _MakeUniq<_Tp>::__array
23866: make_unique(size_t __num)
23866: { return unique_ptr<_Tp>(new remove_extent_t<_Tp>[__num]()); }
23866:
23866:
23866: template<typename _Tp, typename... _Args>
23866: inline typename _MakeUniq<_Tp>::__invalid_type
23866: make_unique(_Args&&...) = delete;
23866: # 995 "/usr/include/c++/10/bits/unique_ptr.h" 3
23866: namespace __detail::__variant
23866: {
23866: template<typename> struct _Never_valueless_alt;
23866:
23866:
23866:
23866: template<typename _Tp, typename _Del>
23866: struct _Never_valueless_alt<std::unique_ptr<_Tp, _Del>>
23866: : std::true_type
23866: { };
23866: }
23866:
23866:
23866:
23866: }
23866: # 42 "/usr/include/c++/10/bits/locale_conv.h" 2 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _OutStr, typename _InChar, typename _Codecvt,
23866: typename _State, typename _Fn>
23866: bool
23866: __do_str_codecvt(const _InChar* __first, const _InChar* __last,
23866: _OutStr& __outstr, const _Codecvt& __cvt, _State& __state,
23866: size_t& __count, _Fn __fn)
23866: {
23866: if (__first == __last)
23866: {
23866: __outstr.clear();
23866: __count = 0;
23866: return true;
23866: }
23866:
23866: size_t __outchars = 0;
23866: auto __next = __first;
23866: const auto __maxlen = __cvt.max_length() + 1;
23866:
23866: codecvt_base::result __result;
23866: do
23866: {
23866: __outstr.resize(__outstr.size() + (__last - __next) * __maxlen);
23866: auto __outnext = &__outstr.front() + __outchars;
23866: auto const __outlast = &__outstr.back() + 1;
23866: __result = (__cvt.*__fn)(__state, __next, __last, __next,
23866: __outnext, __outlast, __outnext);
23866: __outchars = __outnext - &__outstr.front();
23866: }
23866: while (__result == codecvt_base::partial && __next != __last
23866: && (__outstr.size() - __outchars) < __maxlen);
23866:
23866: if (__result == codecvt_base::error)
23866: {
23866: __count = __next - __first;
23866: return false;
23866: }
23866:
23866:
23866:
23866: if constexpr (is_same<typename _Codecvt::intern_type,
23866: typename _Codecvt::extern_type>())
23866: if (__result == codecvt_base::noconv)
23866: {
23866: __outstr.assign(__first, __last);
23866: __count = __last - __first;
23866: return true;
23866: }
23866:
23866: __outstr.resize(__outchars);
23866: __count = __next - __first;
23866: return true;
23866: }
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc, typename _State>
23866: inline bool
23866: __str_codecvt_in(const char* __first, const char* __last,
23866: basic_string<_CharT, _Traits, _Alloc>& __outstr,
23866: const codecvt<_CharT, char, _State>& __cvt,
23866: _State& __state, size_t& __count)
23866: {
23866: using _Codecvt = codecvt<_CharT, char, _State>;
23866: using _ConvFn
23866: = codecvt_base::result
23866: (_Codecvt::*)(_State&, const char*, const char*, const char*&,
23866: _CharT*, _CharT*, _CharT*&) const;
23866: _ConvFn __fn = &codecvt<_CharT, char, _State>::in;
23866: return __do_str_codecvt(__first, __last, __outstr, __cvt, __state,
23866: __count, __fn);
23866: }
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc, typename _State>
23866: inline bool
23866: __str_codecvt_in(const char* __first, const char* __last,
23866: basic_string<_CharT, _Traits, _Alloc>& __outstr,
23866: const codecvt<_CharT, char, _State>& __cvt)
23866: {
23866: _State __state = {};
23866: size_t __n;
23866: return __str_codecvt_in(__first, __last, __outstr, __cvt, __state, __n);
23866: }
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc, typename _State>
23866: inline bool
23866: __str_codecvt_in_all(const char* __first, const char* __last,
23866: basic_string<_CharT, _Traits, _Alloc>& __outstr,
23866: const codecvt<_CharT, char, _State>& __cvt)
23866: {
23866: _State __state = {};
23866: size_t __n;
23866: return __str_codecvt_in(__first, __last, __outstr, __cvt, __state, __n)
23866: && (__n == (__last - __first));
23866: }
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc, typename _State>
23866: inline bool
23866: __str_codecvt_out(const _CharT* __first, const _CharT* __last,
23866: basic_string<char, _Traits, _Alloc>& __outstr,
23866: const codecvt<_CharT, char, _State>& __cvt,
23866: _State& __state, size_t& __count)
23866: {
23866: using _Codecvt = codecvt<_CharT, char, _State>;
23866: using _ConvFn
23866: = codecvt_base::result
23866: (_Codecvt::*)(_State&, const _CharT*, const _CharT*, const _CharT*&,
23866: char*, char*, char*&) const;
23866: _ConvFn __fn = &codecvt<_CharT, char, _State>::out;
23866: return __do_str_codecvt(__first, __last, __outstr, __cvt, __state,
23866: __count, __fn);
23866: }
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc, typename _State>
23866: inline bool
23866: __str_codecvt_out(const _CharT* __first, const _CharT* __last,
23866: basic_string<char, _Traits, _Alloc>& __outstr,
23866: const codecvt<_CharT, char, _State>& __cvt)
23866: {
23866: _State __state = {};
23866: size_t __n;
23866: return __str_codecvt_out(__first, __last, __outstr, __cvt, __state, __n);
23866: }
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc, typename _State>
23866: inline bool
23866: __str_codecvt_out_all(const _CharT* __first, const _CharT* __last,
23866: basic_string<char, _Traits, _Alloc>& __outstr,
23866: const codecvt<_CharT, char, _State>& __cvt)
23866: {
23866: _State __state = {};
23866: size_t __n;
23866: return __str_codecvt_out(__first, __last, __outstr, __cvt, __state, __n)
23866: && (__n == (__last - __first));
23866: }
23866: # 226 "/usr/include/c++/10/bits/locale_conv.h" 3
23866: namespace __cxx11 {
23866:
23866:
23866: template<typename _Codecvt, typename _Elem = wchar_t,
23866: typename _Wide_alloc = allocator<_Elem>,
23866: typename _Byte_alloc = allocator<char>>
23866: class wstring_convert
23866: {
23866: public:
23866: typedef basic_string<char, char_traits<char>, _Byte_alloc> byte_string;
23866: typedef basic_string<_Elem, char_traits<_Elem>, _Wide_alloc> wide_string;
23866: typedef typename _Codecvt::state_type state_type;
23866: typedef typename wide_string::traits_type::int_type int_type;
23866:
23866:
23866: wstring_convert() : _M_cvt(new _Codecvt()) { }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: explicit
23866: wstring_convert(_Codecvt* __pcvt) : _M_cvt(__pcvt)
23866: {
23866: if (!_M_cvt)
23866: __throw_logic_error("wstring_convert");
23866: }
23866: # 264 "/usr/include/c++/10/bits/locale_conv.h" 3
23866: wstring_convert(_Codecvt* __pcvt, state_type __state)
23866: : _M_cvt(__pcvt), _M_state(__state), _M_with_cvtstate(true)
23866: {
23866: if (!_M_cvt)
23866: __throw_logic_error("wstring_convert");
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: explicit
23866: wstring_convert(const byte_string& __byte_err,
23866: const wide_string& __wide_err = wide_string())
23866: : _M_cvt(new _Codecvt),
23866: _M_byte_err_string(__byte_err), _M_wide_err_string(__wide_err),
23866: _M_with_strings(true)
23866: {
23866: if (!_M_cvt)
23866: __throw_logic_error("wstring_convert");
23866: }
23866:
23866: ~wstring_convert() = default;
23866:
23866:
23866:
23866: wstring_convert(const wstring_convert&) = delete;
23866: wstring_convert& operator=(const wstring_convert&) = delete;
23866:
23866:
23866: wide_string
23866: from_bytes(char __byte)
23866: {
23866: char __bytes[2] = { __byte };
23866: return from_bytes(__bytes, __bytes+1);
23866: }
23866:
23866: wide_string
23866: from_bytes(const char* __ptr)
23866: { return from_bytes(__ptr, __ptr+char_traits<char>::length(__ptr)); }
23866:
23866: wide_string
23866: from_bytes(const byte_string& __str)
23866: {
23866: auto __ptr = __str.data();
23866: return from_bytes(__ptr, __ptr + __str.size());
23866: }
23866:
23866: wide_string
23866: from_bytes(const char* __first, const char* __last)
23866: {
23866: if (!_M_with_cvtstate)
23866: _M_state = state_type();
23866: wide_string __out{ _M_wide_err_string.get_allocator() };
23866: if (__str_codecvt_in(__first, __last, __out, *_M_cvt, _M_state,
23866: _M_count))
23866: return __out;
23866: if (_M_with_strings)
23866: return _M_wide_err_string;
23866: __throw_range_error("wstring_convert::from_bytes");
23866: }
23866:
23866:
23866:
23866: byte_string
23866: to_bytes(_Elem __wchar)
23866: {
23866: _Elem __wchars[2] = { __wchar };
23866: return to_bytes(__wchars, __wchars+1);
23866: }
23866:
23866: byte_string
23866: to_bytes(const _Elem* __ptr)
23866: {
23866: return to_bytes(__ptr, __ptr+wide_string::traits_type::length(__ptr));
23866: }
23866:
23866: byte_string
23866: to_bytes(const wide_string& __wstr)
23866: {
23866: auto __ptr = __wstr.data();
23866: return to_bytes(__ptr, __ptr + __wstr.size());
23866: }
23866:
23866: byte_string
23866: to_bytes(const _Elem* __first, const _Elem* __last)
23866: {
23866: if (!_M_with_cvtstate)
23866: _M_state = state_type();
23866: byte_string __out{ _M_byte_err_string.get_allocator() };
23866: if (__str_codecvt_out(__first, __last, __out, *_M_cvt, _M_state,
23866: _M_count))
23866: return __out;
23866: if (_M_with_strings)
23866: return _M_byte_err_string;
23866: __throw_range_error("wstring_convert::to_bytes");
23866: }
23866:
23866:
23866:
23866:
23866:
23866: size_t converted() const noexcept { return _M_count; }
23866:
23866:
23866: state_type state() const { return _M_state; }
23866:
23866: private:
23866: unique_ptr<_Codecvt> _M_cvt;
23866: byte_string _M_byte_err_string;
23866: wide_string _M_wide_err_string;
23866: state_type _M_state = state_type();
23866: size_t _M_count = 0;
23866: bool _M_with_cvtstate = false;
23866: bool _M_with_strings = false;
23866: };
23866:
23866: }
23866:
23866:
23866: template<typename _Codecvt, typename _Elem = wchar_t,
23866: typename _Tr = char_traits<_Elem>>
23866: class wbuffer_convert : public basic_streambuf<_Elem, _Tr>
23866: {
23866: typedef basic_streambuf<_Elem, _Tr> _Wide_streambuf;
23866:
23866: public:
23866: typedef typename _Codecvt::state_type state_type;
23866:
23866:
23866: wbuffer_convert() : wbuffer_convert(nullptr) { }
23866: # 405 "/usr/include/c++/10/bits/locale_conv.h" 3
23866: explicit
23866: wbuffer_convert(streambuf* __bytebuf, _Codecvt* __pcvt = new _Codecvt,
23866: state_type __state = state_type())
23866: : _M_buf(__bytebuf), _M_cvt(__pcvt), _M_state(__state)
23866: {
23866: if (!_M_cvt)
23866: __throw_logic_error("wbuffer_convert");
23866:
23866: _M_always_noconv = _M_cvt->always_noconv();
23866:
23866: if (_M_buf)
23866: {
23866: this->setp(_M_put_area, _M_put_area + _S_buffer_length);
23866: this->setg(_M_get_area + _S_putback_length,
23866: _M_get_area + _S_putback_length,
23866: _M_get_area + _S_putback_length);
23866: }
23866: }
23866:
23866: ~wbuffer_convert() = default;
23866:
23866:
23866:
23866: wbuffer_convert(const wbuffer_convert&) = delete;
23866: wbuffer_convert& operator=(const wbuffer_convert&) = delete;
23866:
23866: streambuf* rdbuf() const noexcept { return _M_buf; }
23866:
23866: streambuf*
23866: rdbuf(streambuf *__bytebuf) noexcept
23866: {
23866: auto __prev = _M_buf;
23866: _M_buf = __bytebuf;
23866: return __prev;
23866: }
23866:
23866:
23866: state_type state() const noexcept { return _M_state; }
23866:
23866: protected:
23866: int
23866: sync()
23866: { return _M_buf && _M_conv_put() && !_M_buf->pubsync() ? 0 : -1; }
23866:
23866: typename _Wide_streambuf::int_type
23866: overflow(typename _Wide_streambuf::int_type __out)
23866: {
23866: if (!_M_buf || !_M_conv_put())
23866: return _Tr::eof();
23866: else if (!_Tr::eq_int_type(__out, _Tr::eof()))
23866: return this->sputc(__out);
23866: return _Tr::not_eof(__out);
23866: }
23866:
23866: typename _Wide_streambuf::int_type
23866: underflow()
23866: {
23866: if (!_M_buf)
23866: return _Tr::eof();
23866:
23866: if (this->gptr() < this->egptr() || (_M_buf && _M_conv_get()))
23866: return _Tr::to_int_type(*this->gptr());
23866: else
23866: return _Tr::eof();
23866: }
23866:
23866: streamsize
23866: xsputn(const typename _Wide_streambuf::char_type* __s, streamsize __n)
23866: {
23866: if (!_M_buf || __n == 0)
23866: return 0;
23866: streamsize __done = 0;
23866: do
23866: {
23866: auto __nn = std::min<streamsize>(this->epptr() - this->pptr(),
23866: __n - __done);
23866: _Tr::copy(this->pptr(), __s + __done, __nn);
23866: this->pbump(__nn);
23866: __done += __nn;
23866: } while (__done < __n && _M_conv_put());
23866: return __done;
23866: }
23866:
23866: private:
23866:
23866: bool
23866: _M_conv_get()
23866: {
23866: const streamsize __pb1 = this->gptr() - this->eback();
23866: const streamsize __pb2 = _S_putback_length;
23866: const streamsize __npb = std::min(__pb1, __pb2);
23866:
23866: _Tr::move(_M_get_area + _S_putback_length - __npb,
23866: this->gptr() - __npb, __npb);
23866:
23866: streamsize __nbytes = sizeof(_M_get_buf) - _M_unconv;
23866: __nbytes = std::min(__nbytes, _M_buf->in_avail());
23866: if (__nbytes < 1)
23866: __nbytes = 1;
23866: __nbytes = _M_buf->sgetn(_M_get_buf + _M_unconv, __nbytes);
23866: if (__nbytes < 1)
23866: return false;
23866: __nbytes += _M_unconv;
23866:
23866:
23866:
23866: _Elem* __outbuf = _M_get_area + _S_putback_length;
23866: _Elem* __outnext = __outbuf;
23866: const char* __bnext = _M_get_buf;
23866:
23866: codecvt_base::result __result;
23866: if (_M_always_noconv)
23866: __result = codecvt_base::noconv;
23866: else
23866: {
23866: _Elem* __outend = _M_get_area + _S_buffer_length;
23866:
23866: __result = _M_cvt->in(_M_state,
23866: __bnext, __bnext + __nbytes, __bnext,
23866: __outbuf, __outend, __outnext);
23866: }
23866:
23866: if (__result == codecvt_base::noconv)
23866: {
23866:
23866: auto __get_buf = reinterpret_cast<const _Elem*>(_M_get_buf);
23866: _Tr::copy(__outbuf, __get_buf, __nbytes);
23866: _M_unconv = 0;
23866: return true;
23866: }
23866:
23866: if ((_M_unconv = _M_get_buf + __nbytes - __bnext))
23866: char_traits<char>::move(_M_get_buf, __bnext, _M_unconv);
23866:
23866: this->setg(__outbuf, __outbuf, __outnext);
23866:
23866: return __result != codecvt_base::error;
23866: }
23866:
23866:
23866: bool
23866: _M_put(...)
23866: { return false; }
23866:
23866: bool
23866: _M_put(const char* __p, streamsize __n)
23866: {
23866: if (_M_buf->sputn(__p, __n) < __n)
23866: return false;
23866: return true;
23866: }
23866:
23866:
23866: bool
23866: _M_conv_put()
23866: {
23866: _Elem* const __first = this->pbase();
23866: const _Elem* const __last = this->pptr();
23866: const streamsize __pending = __last - __first;
23866:
23866: if (_M_always_noconv)
23866: return _M_put(__first, __pending);
23866:
23866: char __outbuf[2 * _S_buffer_length];
23866:
23866: const _Elem* __next = __first;
23866: const _Elem* __start;
23866: do
23866: {
23866: __start = __next;
23866: char* __outnext = __outbuf;
23866: char* const __outlast = __outbuf + sizeof(__outbuf);
23866: auto __result = _M_cvt->out(_M_state, __next, __last, __next,
23866: __outnext, __outlast, __outnext);
23866: if (__result == codecvt_base::error)
23866: return false;
23866: else if (__result == codecvt_base::noconv)
23866: return _M_put(__next, __pending);
23866:
23866: if (!_M_put(__outbuf, __outnext - __outbuf))
23866: return false;
23866: }
23866: while (__next != __last && __next != __start);
23866:
23866: if (__next != __last)
23866: _Tr::move(__first, __next, __last - __next);
23866:
23866: this->pbump(__first - __next);
23866: return __next != __first;
23866: }
23866:
23866: streambuf* _M_buf;
23866: unique_ptr<_Codecvt> _M_cvt;
23866: state_type _M_state;
23866:
23866: static const streamsize _S_buffer_length = 32;
23866: static const streamsize _S_putback_length = 3;
23866: _Elem _M_put_area[_S_buffer_length];
23866: _Elem _M_get_area[_S_buffer_length];
23866: streamsize _M_unconv = 0;
23866: char _M_get_buf[_S_buffer_length-_S_putback_length];
23866: bool _M_always_noconv;
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 44 "/usr/include/c++/10/locale" 2 3
23866: # 38 "/usr/include/c++/10/bits/fs_path.h" 2 3
23866:
23866: # 1 "/usr/include/c++/10/iomanip" 1 3
23866: # 34 "/usr/include/c++/10/iomanip" 3
23866: #define _GLIBCXX_IOMANIP 1
23866:
23866:
23866: # 37 "/usr/include/c++/10/iomanip" 3
23866: # 45 "/usr/include/c++/10/iomanip" 3
23866: # 1 "/usr/include/c++/10/bits/quoted_string.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/quoted_string.h" 3
23866: #define _GLIBCXX_QUOTED_STRING_H 1
23866:
23866:
23866: # 34 "/usr/include/c++/10/bits/quoted_string.h" 3
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/sstream" 1 3
23866: # 34 "/usr/include/c++/10/sstream" 3
23866: #define _GLIBCXX_SSTREAM 1
23866:
23866:
23866: # 37 "/usr/include/c++/10/sstream" 3
23866:
23866: # 1 "/usr/include/c++/10/istream" 1 3
23866: # 34 "/usr/include/c++/10/istream" 3
23866: #define _GLIBCXX_ISTREAM 1
23866:
23866:
23866: # 37 "/usr/include/c++/10/istream" 3
23866:
23866: # 1 "/usr/include/c++/10/ios" 1 3
23866: # 34 "/usr/include/c++/10/ios" 3
23866: #define _GLIBCXX_IOS 1
23866:
23866:
23866: # 37 "/usr/include/c++/10/ios" 3
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/basic_ios.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/basic_ios.h" 3
23866: #define _BASIC_IOS_H 1
23866:
23866:
23866: # 34 "/usr/include/c++/10/bits/basic_ios.h" 3
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: template<typename _Facet>
23866: inline const _Facet&
23866: __check_facet(const _Facet* __f)
23866: {
23866: if (!__f)
23866: __throw_bad_cast();
23866: return *__f;
23866: }
23866: # 66 "/usr/include/c++/10/bits/basic_ios.h" 3
23866: template<typename _CharT, typename _Traits>
23866: class basic_ios : public ios_base
23866: {
23866: public:
23866:
23866:
23866:
23866:
23866:
23866:
23866: typedef _CharT char_type;
23866: typedef typename _Traits::int_type int_type;
23866: typedef typename _Traits::pos_type pos_type;
23866: typedef typename _Traits::off_type off_type;
23866: typedef _Traits traits_type;
23866:
23866:
23866:
23866:
23866:
23866:
23866: typedef ctype<_CharT> __ctype_type;
23866: typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> >
23866: __num_put_type;
23866: typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> >
23866: __num_get_type;
23866:
23866:
23866:
23866: protected:
23866: basic_ostream<_CharT, _Traits>* _M_tie;
23866: mutable char_type _M_fill;
23866: mutable bool _M_fill_init;
23866: basic_streambuf<_CharT, _Traits>* _M_streambuf;
23866:
23866:
23866: const __ctype_type* _M_ctype;
23866:
23866: const __num_put_type* _M_num_put;
23866:
23866: const __num_get_type* _M_num_get;
23866:
23866: public:
23866: # 117 "/usr/include/c++/10/bits/basic_ios.h" 3
23866: explicit operator bool() const
23866: { return !this->fail(); }
23866:
23866:
23866:
23866:
23866:
23866: bool
23866: operator!() const
23866: { return this->fail(); }
23866: # 136 "/usr/include/c++/10/bits/basic_ios.h" 3
23866: iostate
23866: rdstate() const
23866: { return _M_streambuf_state; }
23866: # 147 "/usr/include/c++/10/bits/basic_ios.h" 3
23866: void
23866: clear(iostate __state = goodbit);
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: void
23866: setstate(iostate __state)
23866: { this->clear(this->rdstate() | __state); }
23866:
23866:
23866:
23866:
23866: void
23866: _M_setstate(iostate __state)
23866: {
23866:
23866:
23866: _M_streambuf_state |= __state;
23866: if (this->exceptions() & __state)
23866: throw;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: bool
23866: good() const
23866: { return this->rdstate() == 0; }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: bool
23866: eof() const
23866: { return (this->rdstate() & eofbit) != 0; }
23866: # 200 "/usr/include/c++/10/bits/basic_ios.h" 3
23866: bool
23866: fail() const
23866: { return (this->rdstate() & (badbit | failbit)) != 0; }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: bool
23866: bad() const
23866: { return (this->rdstate() & badbit) != 0; }
23866: # 221 "/usr/include/c++/10/bits/basic_ios.h" 3
23866: iostate
23866: exceptions() const
23866: { return _M_exception; }
23866: # 256 "/usr/include/c++/10/bits/basic_ios.h" 3
23866: void
23866: exceptions(iostate __except)
23866: {
23866: _M_exception = __except;
23866: this->clear(_M_streambuf_state);
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: explicit
23866: basic_ios(basic_streambuf<_CharT, _Traits>* __sb)
23866: : ios_base(), _M_tie(0), _M_fill(), _M_fill_init(false), _M_streambuf(0),
23866: _M_ctype(0), _M_num_put(0), _M_num_get(0)
23866: { this->init(__sb); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: virtual
23866: ~basic_ios() { }
23866: # 294 "/usr/include/c++/10/bits/basic_ios.h" 3
23866: basic_ostream<_CharT, _Traits>*
23866: tie() const
23866: { return _M_tie; }
23866: # 306 "/usr/include/c++/10/bits/basic_ios.h" 3
23866: basic_ostream<_CharT, _Traits>*
23866: tie(basic_ostream<_CharT, _Traits>* __tiestr)
23866: {
23866: basic_ostream<_CharT, _Traits>* __old = _M_tie;
23866: _M_tie = __tiestr;
23866: return __old;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: basic_streambuf<_CharT, _Traits>*
23866: rdbuf() const
23866: { return _M_streambuf; }
23866: # 346 "/usr/include/c++/10/bits/basic_ios.h" 3
23866: basic_streambuf<_CharT, _Traits>*
23866: rdbuf(basic_streambuf<_CharT, _Traits>* __sb);
23866: # 360 "/usr/include/c++/10/bits/basic_ios.h" 3
23866: basic_ios&
23866: copyfmt(const basic_ios& __rhs);
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: char_type
23866: fill() const
23866: {
23866: if (!_M_fill_init)
23866: {
23866: _M_fill = this->widen(' ');
23866: _M_fill_init = true;
23866: }
23866: return _M_fill;
23866: }
23866: # 389 "/usr/include/c++/10/bits/basic_ios.h" 3
23866: char_type
23866: fill(char_type __ch)
23866: {
23866: char_type __old = this->fill();
23866: _M_fill = __ch;
23866: return __old;
23866: }
23866: # 409 "/usr/include/c++/10/bits/basic_ios.h" 3
23866: locale
23866: imbue(const locale& __loc);
23866: # 429 "/usr/include/c++/10/bits/basic_ios.h" 3
23866: char
23866: narrow(char_type __c, char __dfault) const
23866: { return __check_facet(_M_ctype).narrow(__c, __dfault); }
23866: # 448 "/usr/include/c++/10/bits/basic_ios.h" 3
23866: char_type
23866: widen(char __c) const
23866: { return __check_facet(_M_ctype).widen(__c); }
23866:
23866: protected:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: basic_ios()
23866: : ios_base(), _M_tie(0), _M_fill(char_type()), _M_fill_init(false),
23866: _M_streambuf(0), _M_ctype(0), _M_num_put(0), _M_num_get(0)
23866: { }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: void
23866: init(basic_streambuf<_CharT, _Traits>* __sb);
23866:
23866:
23866: basic_ios(const basic_ios&) = delete;
23866: basic_ios& operator=(const basic_ios&) = delete;
23866:
23866: void
23866: move(basic_ios& __rhs)
23866: {
23866: ios_base::_M_move(__rhs);
23866: _M_cache_locale(_M_ios_locale);
23866: this->tie(__rhs.tie(nullptr));
23866: _M_fill = __rhs._M_fill;
23866: _M_fill_init = __rhs._M_fill_init;
23866: _M_streambuf = nullptr;
23866: }
23866:
23866: void
23866: move(basic_ios&& __rhs)
23866: { this->move(__rhs); }
23866:
23866: void
23866: swap(basic_ios& __rhs) noexcept
23866: {
23866: ios_base::_M_swap(__rhs);
23866: _M_cache_locale(_M_ios_locale);
23866: __rhs._M_cache_locale(__rhs._M_ios_locale);
23866: std::swap(_M_tie, __rhs._M_tie);
23866: std::swap(_M_fill, __rhs._M_fill);
23866: std::swap(_M_fill_init, __rhs._M_fill_init);
23866: }
23866:
23866: void
23866: set_rdbuf(basic_streambuf<_CharT, _Traits>* __sb)
23866: { _M_streambuf = __sb; }
23866:
23866:
23866: void
23866: _M_cache_locale(const locale& __loc);
23866: };
23866:
23866:
23866: }
23866:
23866: # 1 "/usr/include/c++/10/bits/basic_ios.tcc" 1 3
23866: # 31 "/usr/include/c++/10/bits/basic_ios.tcc" 3
23866: #define _BASIC_IOS_TCC 1
23866:
23866:
23866: # 34 "/usr/include/c++/10/bits/basic_ios.tcc" 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: template<typename _CharT, typename _Traits>
23866: void
23866: basic_ios<_CharT, _Traits>::clear(iostate __state)
23866: {
23866: if (this->rdbuf())
23866: _M_streambuf_state = __state;
23866: else
23866: _M_streambuf_state = __state | badbit;
23866: if (this->exceptions() & this->rdstate())
23866: __throw_ios_failure(("basic_ios::clear"));
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_streambuf<_CharT, _Traits>*
23866: basic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<_CharT, _Traits>* __sb)
23866: {
23866: basic_streambuf<_CharT, _Traits>* __old = _M_streambuf;
23866: _M_streambuf = __sb;
23866: this->clear();
23866: return __old;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_ios<_CharT, _Traits>&
23866: basic_ios<_CharT, _Traits>::copyfmt(const basic_ios& __rhs)
23866: {
23866:
23866:
23866: if (this != &__rhs)
23866: {
23866:
23866:
23866:
23866:
23866: _Words* __words = (__rhs._M_word_size <= _S_local_word_size) ?
23866: _M_local_word : new _Words[__rhs._M_word_size];
23866:
23866:
23866: _Callback_list* __cb = __rhs._M_callbacks;
23866: if (__cb)
23866: __cb->_M_add_reference();
23866: _M_call_callbacks(erase_event);
23866: if (_M_word != _M_local_word)
23866: {
23866: delete [] _M_word;
23866: _M_word = 0;
23866: }
23866: _M_dispose_callbacks();
23866:
23866:
23866: _M_callbacks = __cb;
23866: for (int __i = 0; __i < __rhs._M_word_size; ++__i)
23866: __words[__i] = __rhs._M_word[__i];
23866: _M_word = __words;
23866: _M_word_size = __rhs._M_word_size;
23866:
23866: this->flags(__rhs.flags());
23866: this->width(__rhs.width());
23866: this->precision(__rhs.precision());
23866: this->tie(__rhs.tie());
23866: this->fill(__rhs.fill());
23866: _M_ios_locale = __rhs.getloc();
23866: _M_cache_locale(_M_ios_locale);
23866:
23866: _M_call_callbacks(copyfmt_event);
23866:
23866:
23866: this->exceptions(__rhs.exceptions());
23866: }
23866: return *this;
23866: }
23866:
23866:
23866: template<typename _CharT, typename _Traits>
23866: locale
23866: basic_ios<_CharT, _Traits>::imbue(const locale& __loc)
23866: {
23866: locale __old(this->getloc());
23866: ios_base::imbue(__loc);
23866: _M_cache_locale(__loc);
23866: if (this->rdbuf() != 0)
23866: this->rdbuf()->pubimbue(__loc);
23866: return __old;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: void
23866: basic_ios<_CharT, _Traits>::init(basic_streambuf<_CharT, _Traits>* __sb)
23866: {
23866:
23866: ios_base::_M_init();
23866:
23866:
23866: _M_cache_locale(_M_ios_locale);
23866: # 146 "/usr/include/c++/10/bits/basic_ios.tcc" 3
23866: _M_fill = _CharT();
23866: _M_fill_init = false;
23866:
23866: _M_tie = 0;
23866: _M_exception = goodbit;
23866: _M_streambuf = __sb;
23866: _M_streambuf_state = __sb ? goodbit : badbit;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: void
23866: basic_ios<_CharT, _Traits>::_M_cache_locale(const locale& __loc)
23866: {
23866: if (__builtin_expect(has_facet<__ctype_type>(__loc), true))
23866: _M_ctype = std::__addressof(use_facet<__ctype_type>(__loc));
23866: else
23866: _M_ctype = 0;
23866:
23866: if (__builtin_expect(has_facet<__num_put_type>(__loc), true))
23866: _M_num_put = std::__addressof(use_facet<__num_put_type>(__loc));
23866: else
23866: _M_num_put = 0;
23866:
23866: if (__builtin_expect(has_facet<__num_get_type>(__loc), true))
23866: _M_num_get = std::__addressof(use_facet<__num_get_type>(__loc));
23866: else
23866: _M_num_get = 0;
23866: }
23866:
23866:
23866:
23866:
23866: extern template class basic_ios<char>;
23866:
23866:
23866: extern template class basic_ios<wchar_t>;
23866:
23866:
23866:
23866:
23866: }
23866: # 517 "/usr/include/c++/10/bits/basic_ios.h" 2 3
23866: # 45 "/usr/include/c++/10/ios" 2 3
23866: # 39 "/usr/include/c++/10/istream" 2 3
23866: # 1 "/usr/include/c++/10/ostream" 1 3
23866: # 34 "/usr/include/c++/10/ostream" 3
23866: #define _GLIBCXX_OSTREAM 1
23866:
23866:
23866: # 37 "/usr/include/c++/10/ostream" 3
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 57 "/usr/include/c++/10/ostream" 3
23866: template<typename _CharT, typename _Traits>
23866: class basic_ostream : virtual public basic_ios<_CharT, _Traits>
23866: {
23866: public:
23866:
23866: typedef _CharT char_type;
23866: typedef typename _Traits::int_type int_type;
23866: typedef typename _Traits::pos_type pos_type;
23866: typedef typename _Traits::off_type off_type;
23866: typedef _Traits traits_type;
23866:
23866:
23866: typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
23866: typedef basic_ios<_CharT, _Traits> __ios_type;
23866: typedef basic_ostream<_CharT, _Traits> __ostream_type;
23866: typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> >
23866: __num_put_type;
23866: typedef ctype<_CharT> __ctype_type;
23866: # 83 "/usr/include/c++/10/ostream" 3
23866: explicit
23866: basic_ostream(__streambuf_type* __sb)
23866: { this->init(__sb); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: virtual
23866: ~basic_ostream() { }
23866:
23866:
23866: class sentry;
23866: friend class sentry;
23866: # 107 "/usr/include/c++/10/ostream" 3
23866: __ostream_type&
23866: operator<<(__ostream_type& (*__pf)(__ostream_type&))
23866: {
23866:
23866:
23866:
23866: return __pf(*this);
23866: }
23866:
23866: __ostream_type&
23866: operator<<(__ios_type& (*__pf)(__ios_type&))
23866: {
23866:
23866:
23866:
23866: __pf(*this);
23866: return *this;
23866: }
23866:
23866: __ostream_type&
23866: operator<<(ios_base& (*__pf) (ios_base&))
23866: {
23866:
23866:
23866:
23866: __pf(*this);
23866: return *this;
23866: }
23866: # 165 "/usr/include/c++/10/ostream" 3
23866: __ostream_type&
23866: operator<<(long __n)
23866: { return _M_insert(__n); }
23866:
23866: __ostream_type&
23866: operator<<(unsigned long __n)
23866: { return _M_insert(__n); }
23866:
23866: __ostream_type&
23866: operator<<(bool __n)
23866: { return _M_insert(__n); }
23866:
23866: __ostream_type&
23866: operator<<(short __n);
23866:
23866: __ostream_type&
23866: operator<<(unsigned short __n)
23866: {
23866:
23866:
23866: return _M_insert(static_cast<unsigned long>(__n));
23866: }
23866:
23866: __ostream_type&
23866: operator<<(int __n);
23866:
23866: __ostream_type&
23866: operator<<(unsigned int __n)
23866: {
23866:
23866:
23866: return _M_insert(static_cast<unsigned long>(__n));
23866: }
23866:
23866:
23866: __ostream_type&
23866: operator<<(long long __n)
23866: { return _M_insert(__n); }
23866:
23866: __ostream_type&
23866: operator<<(unsigned long long __n)
23866: { return _M_insert(__n); }
23866: # 219 "/usr/include/c++/10/ostream" 3
23866: __ostream_type&
23866: operator<<(double __f)
23866: { return _M_insert(__f); }
23866:
23866: __ostream_type&
23866: operator<<(float __f)
23866: {
23866:
23866:
23866: return _M_insert(static_cast<double>(__f));
23866: }
23866:
23866: __ostream_type&
23866: operator<<(long double __f)
23866: { return _M_insert(__f); }
23866: # 244 "/usr/include/c++/10/ostream" 3
23866: __ostream_type&
23866: operator<<(const void* __p)
23866: { return _M_insert(__p); }
23866:
23866:
23866: __ostream_type&
23866: operator<<(nullptr_t)
23866: { return *this << "nullptr"; }
23866: # 275 "/usr/include/c++/10/ostream" 3
23866: __ostream_type&
23866: operator<<(__streambuf_type* __sb);
23866: # 308 "/usr/include/c++/10/ostream" 3
23866: __ostream_type&
23866: put(char_type __c);
23866:
23866:
23866:
23866:
23866:
23866:
23866: void
23866: _M_write(const char_type* __s, streamsize __n)
23866: {
23866: const streamsize __put = this->rdbuf()->sputn(__s, __n);
23866: if (__put != __n)
23866: this->setstate(ios_base::badbit);
23866: }
23866: # 340 "/usr/include/c++/10/ostream" 3
23866: __ostream_type&
23866: write(const char_type* __s, streamsize __n);
23866: # 353 "/usr/include/c++/10/ostream" 3
23866: __ostream_type&
23866: flush();
23866: # 363 "/usr/include/c++/10/ostream" 3
23866: pos_type
23866: tellp();
23866: # 374 "/usr/include/c++/10/ostream" 3
23866: __ostream_type&
23866: seekp(pos_type);
23866: # 386 "/usr/include/c++/10/ostream" 3
23866: __ostream_type&
23866: seekp(off_type, ios_base::seekdir);
23866:
23866: protected:
23866: basic_ostream()
23866: { this->init(0); }
23866:
23866:
23866:
23866: basic_ostream(basic_iostream<_CharT, _Traits>&) { }
23866:
23866: basic_ostream(const basic_ostream&) = delete;
23866:
23866: basic_ostream(basic_ostream&& __rhs)
23866: : __ios_type()
23866: { __ios_type::move(__rhs); }
23866:
23866:
23866:
23866: basic_ostream& operator=(const basic_ostream&) = delete;
23866:
23866: basic_ostream&
23866: operator=(basic_ostream&& __rhs)
23866: {
23866: swap(__rhs);
23866: return *this;
23866: }
23866:
23866: void
23866: swap(basic_ostream& __rhs)
23866: { __ios_type::swap(__rhs); }
23866:
23866:
23866: template<typename _ValueT>
23866: __ostream_type&
23866: _M_insert(_ValueT __v);
23866: };
23866: # 431 "/usr/include/c++/10/ostream" 3
23866: template <typename _CharT, typename _Traits>
23866: class basic_ostream<_CharT, _Traits>::sentry
23866: {
23866:
23866: bool _M_ok;
23866: basic_ostream<_CharT, _Traits>& _M_os;
23866:
23866: public:
23866: # 450 "/usr/include/c++/10/ostream" 3
23866: explicit
23866: sentry(basic_ostream<_CharT, _Traits>& __os);
23866:
23866: #pragma GCC diagnostic push
23866: #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: ~sentry()
23866: {
23866:
23866: if (bool(_M_os.flags() & ios_base::unitbuf) && !uncaught_exception())
23866: {
23866:
23866: if (_M_os.rdbuf() && _M_os.rdbuf()->pubsync() == -1)
23866: _M_os.setstate(ios_base::badbit);
23866: }
23866: }
23866: #pragma GCC diagnostic pop
23866: # 482 "/usr/include/c++/10/ostream" 3
23866: explicit
23866:
23866: operator bool() const
23866: { return _M_ok; }
23866: };
23866: # 504 "/usr/include/c++/10/ostream" 3
23866: template<typename _CharT, typename _Traits>
23866: inline basic_ostream<_CharT, _Traits>&
23866: operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c)
23866: { return __ostream_insert(__out, &__c, 1); }
23866:
23866: template<typename _CharT, typename _Traits>
23866: inline basic_ostream<_CharT, _Traits>&
23866: operator<<(basic_ostream<_CharT, _Traits>& __out, char __c)
23866: { return (__out << __out.widen(__c)); }
23866:
23866:
23866: template<typename _Traits>
23866: inline basic_ostream<char, _Traits>&
23866: operator<<(basic_ostream<char, _Traits>& __out, char __c)
23866: { return __ostream_insert(__out, &__c, 1); }
23866:
23866:
23866: template<typename _Traits>
23866: inline basic_ostream<char, _Traits>&
23866: operator<<(basic_ostream<char, _Traits>& __out, signed char __c)
23866: { return (__out << static_cast<char>(__c)); }
23866:
23866: template<typename _Traits>
23866: inline basic_ostream<char, _Traits>&
23866: operator<<(basic_ostream<char, _Traits>& __out, unsigned char __c)
23866: { return (__out << static_cast<char>(__c)); }
23866: # 587 "/usr/include/c++/10/ostream" 3
23866: template<typename _CharT, typename _Traits>
23866: inline basic_ostream<_CharT, _Traits>&
23866: operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s)
23866: {
23866: if (!__s)
23866: __out.setstate(ios_base::badbit);
23866: else
23866: __ostream_insert(__out, __s,
23866: static_cast<streamsize>(_Traits::length(__s)));
23866: return __out;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_ostream<_CharT, _Traits> &
23866: operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s);
23866:
23866:
23866: template<typename _Traits>
23866: inline basic_ostream<char, _Traits>&
23866: operator<<(basic_ostream<char, _Traits>& __out, const char* __s)
23866: {
23866: if (!__s)
23866: __out.setstate(ios_base::badbit);
23866: else
23866: __ostream_insert(__out, __s,
23866: static_cast<streamsize>(_Traits::length(__s)));
23866: return __out;
23866: }
23866:
23866:
23866: template<typename _Traits>
23866: inline basic_ostream<char, _Traits>&
23866: operator<<(basic_ostream<char, _Traits>& __out, const signed char* __s)
23866: { return (__out << reinterpret_cast<const char*>(__s)); }
23866:
23866: template<typename _Traits>
23866: inline basic_ostream<char, _Traits> &
23866: operator<<(basic_ostream<char, _Traits>& __out, const unsigned char* __s)
23866: { return (__out << reinterpret_cast<const char*>(__s)); }
23866: # 679 "/usr/include/c++/10/ostream" 3
23866: template<typename _CharT, typename _Traits>
23866: inline basic_ostream<_CharT, _Traits>&
23866: endl(basic_ostream<_CharT, _Traits>& __os)
23866: { return flush(__os.put(__os.widen('\n'))); }
23866: # 691 "/usr/include/c++/10/ostream" 3
23866: template<typename _CharT, typename _Traits>
23866: inline basic_ostream<_CharT, _Traits>&
23866: ends(basic_ostream<_CharT, _Traits>& __os)
23866: { return __os.put(_CharT()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _CharT, typename _Traits>
23866: inline basic_ostream<_CharT, _Traits>&
23866: flush(basic_ostream<_CharT, _Traits>& __os)
23866: { return __os.flush(); }
23866:
23866:
23866: template<typename _Ch, typename _Up>
23866: basic_ostream<_Ch, _Up>&
23866: __is_convertible_to_basic_ostream_test(basic_ostream<_Ch, _Up>*);
23866:
23866: template<typename _Tp, typename = void>
23866: struct __is_convertible_to_basic_ostream_impl
23866: {
23866: using __ostream_type = void;
23866: };
23866:
23866: template<typename _Tp>
23866: using __do_is_convertible_to_basic_ostream_impl =
23866: decltype(__is_convertible_to_basic_ostream_test
23866: (declval<typename remove_reference<_Tp>::type*>()));
23866:
23866: template<typename _Tp>
23866: struct __is_convertible_to_basic_ostream_impl
23866: <_Tp,
23866: __void_t<__do_is_convertible_to_basic_ostream_impl<_Tp>>>
23866: {
23866: using __ostream_type =
23866: __do_is_convertible_to_basic_ostream_impl<_Tp>;
23866: };
23866:
23866: template<typename _Tp>
23866: struct __is_convertible_to_basic_ostream
23866: : __is_convertible_to_basic_ostream_impl<_Tp>
23866: {
23866: public:
23866: using type = __not_<is_void<
23866: typename __is_convertible_to_basic_ostream_impl<_Tp>::__ostream_type>>;
23866: constexpr static bool value = type::value;
23866: };
23866:
23866: template<typename _Ostream, typename _Tp, typename = void>
23866: struct __is_insertable : false_type {};
23866:
23866: template<typename _Ostream, typename _Tp>
23866: struct __is_insertable<_Ostream, _Tp,
23866: __void_t<decltype(declval<_Ostream&>()
23866: << declval<const _Tp&>())>>
23866: : true_type {};
23866:
23866: template<typename _Ostream>
23866: using __rvalue_ostream_type =
23866: typename __is_convertible_to_basic_ostream<
23866: _Ostream>::__ostream_type;
23866: # 765 "/usr/include/c++/10/ostream" 3
23866: template<typename _Ostream, typename _Tp>
23866: inline
23866: typename enable_if<__and_<__not_<is_lvalue_reference<_Ostream>>,
23866: __is_convertible_to_basic_ostream<_Ostream>,
23866: __is_insertable<
23866: __rvalue_ostream_type<_Ostream>,
23866: const _Tp&>>::value,
23866: __rvalue_ostream_type<_Ostream>>::type
23866: operator<<(_Ostream&& __os, const _Tp& __x)
23866: {
23866: __rvalue_ostream_type<_Ostream> __ret_os = __os;
23866: __ret_os << __x;
23866: return __ret_os;
23866: }
23866:
23866:
23866:
23866: }
23866:
23866: # 1 "/usr/include/c++/10/bits/ostream.tcc" 1 3
23866: # 35 "/usr/include/c++/10/bits/ostream.tcc" 3
23866: #define _OSTREAM_TCC 1
23866:
23866:
23866: # 38 "/usr/include/c++/10/bits/ostream.tcc" 3
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_ostream<_CharT, _Traits>::sentry::
23866: sentry(basic_ostream<_CharT, _Traits>& __os)
23866: : _M_ok(false), _M_os(__os)
23866: {
23866:
23866: if (__os.tie() && __os.good())
23866: __os.tie()->flush();
23866:
23866: if (__os.good())
23866: _M_ok = true;
23866: else
23866: __os.setstate(ios_base::failbit);
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: template<typename _ValueT>
23866: basic_ostream<_CharT, _Traits>&
23866: basic_ostream<_CharT, _Traits>::
23866: _M_insert(_ValueT __v)
23866: {
23866: sentry __cerb(*this);
23866: if (__cerb)
23866: {
23866: ios_base::iostate __err = ios_base::goodbit;
23866: try
23866: {
23866: const __num_put_type& __np = __check_facet(this->_M_num_put);
23866: if (__np.put(*this, *this, this->fill(), __v).failed())
23866: __err |= ios_base::badbit;
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::badbit); }
23866: if (__err)
23866: this->setstate(__err);
23866: }
23866: return *this;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_ostream<_CharT, _Traits>&
23866: basic_ostream<_CharT, _Traits>::
23866: operator<<(short __n)
23866: {
23866:
23866:
23866: const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield;
23866: if (__fmt == ios_base::oct || __fmt == ios_base::hex)
23866: return _M_insert(static_cast<long>(static_cast<unsigned short>(__n)));
23866: else
23866: return _M_insert(static_cast<long>(__n));
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_ostream<_CharT, _Traits>&
23866: basic_ostream<_CharT, _Traits>::
23866: operator<<(int __n)
23866: {
23866:
23866:
23866: const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield;
23866: if (__fmt == ios_base::oct || __fmt == ios_base::hex)
23866: return _M_insert(static_cast<long>(static_cast<unsigned int>(__n)));
23866: else
23866: return _M_insert(static_cast<long>(__n));
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_ostream<_CharT, _Traits>&
23866: basic_ostream<_CharT, _Traits>::
23866: operator<<(__streambuf_type* __sbin)
23866: {
23866: ios_base::iostate __err = ios_base::goodbit;
23866: sentry __cerb(*this);
23866: if (__cerb && __sbin)
23866: {
23866: try
23866: {
23866: if (!__copy_streambufs(__sbin, this->rdbuf()))
23866: __err |= ios_base::failbit;
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::failbit); }
23866: }
23866: else if (!__sbin)
23866: __err |= ios_base::badbit;
23866: if (__err)
23866: this->setstate(__err);
23866: return *this;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_ostream<_CharT, _Traits>&
23866: basic_ostream<_CharT, _Traits>::
23866: put(char_type __c)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: sentry __cerb(*this);
23866: if (__cerb)
23866: {
23866: ios_base::iostate __err = ios_base::goodbit;
23866: try
23866: {
23866: const int_type __put = this->rdbuf()->sputc(__c);
23866: if (traits_type::eq_int_type(__put, traits_type::eof()))
23866: __err |= ios_base::badbit;
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::badbit); }
23866: if (__err)
23866: this->setstate(__err);
23866: }
23866: return *this;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_ostream<_CharT, _Traits>&
23866: basic_ostream<_CharT, _Traits>::
23866: write(const _CharT* __s, streamsize __n)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: sentry __cerb(*this);
23866: if (__cerb)
23866: {
23866: try
23866: { _M_write(__s, __n); }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::badbit); }
23866: }
23866: return *this;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_ostream<_CharT, _Traits>&
23866: basic_ostream<_CharT, _Traits>::
23866: flush()
23866: {
23866:
23866:
23866:
23866: ios_base::iostate __err = ios_base::goodbit;
23866: try
23866: {
23866: if (this->rdbuf() && this->rdbuf()->pubsync() == -1)
23866: __err |= ios_base::badbit;
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::badbit); }
23866: if (__err)
23866: this->setstate(__err);
23866: return *this;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: typename basic_ostream<_CharT, _Traits>::pos_type
23866: basic_ostream<_CharT, _Traits>::
23866: tellp()
23866: {
23866: pos_type __ret = pos_type(-1);
23866: try
23866: {
23866: if (!this->fail())
23866: __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out);
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::badbit); }
23866: return __ret;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_ostream<_CharT, _Traits>&
23866: basic_ostream<_CharT, _Traits>::
23866: seekp(pos_type __pos)
23866: {
23866: ios_base::iostate __err = ios_base::goodbit;
23866: try
23866: {
23866: if (!this->fail())
23866: {
23866:
23866:
23866: const pos_type __p = this->rdbuf()->pubseekpos(__pos,
23866: ios_base::out);
23866:
23866:
23866: if (__p == pos_type(off_type(-1)))
23866: __err |= ios_base::failbit;
23866: }
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::badbit); }
23866: if (__err)
23866: this->setstate(__err);
23866: return *this;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_ostream<_CharT, _Traits>&
23866: basic_ostream<_CharT, _Traits>::
23866: seekp(off_type __off, ios_base::seekdir __dir)
23866: {
23866: ios_base::iostate __err = ios_base::goodbit;
23866: try
23866: {
23866: if (!this->fail())
23866: {
23866:
23866:
23866: const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir,
23866: ios_base::out);
23866:
23866:
23866: if (__p == pos_type(off_type(-1)))
23866: __err |= ios_base::failbit;
23866: }
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::badbit); }
23866: if (__err)
23866: this->setstate(__err);
23866: return *this;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_ostream<_CharT, _Traits>&
23866: operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s)
23866: {
23866: if (!__s)
23866: __out.setstate(ios_base::badbit);
23866: else
23866: {
23866:
23866:
23866: const size_t __clen = char_traits<char>::length(__s);
23866: try
23866: {
23866: struct __ptr_guard
23866: {
23866: _CharT *__p;
23866: __ptr_guard (_CharT *__ip): __p(__ip) { }
23866: ~__ptr_guard() { delete[] __p; }
23866: _CharT* __get() { return __p; }
23866: } __pg (new _CharT[__clen]);
23866:
23866: _CharT *__ws = __pg.__get();
23866: for (size_t __i = 0; __i < __clen; ++__i)
23866: __ws[__i] = __out.widen(__s[__i]);
23866: __ostream_insert(__out, __ws, __clen);
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: __out._M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { __out._M_setstate(ios_base::badbit); }
23866: }
23866: return __out;
23866: }
23866:
23866:
23866:
23866:
23866: extern template class basic_ostream<char>;
23866: extern template ostream& endl(ostream&);
23866: extern template ostream& ends(ostream&);
23866: extern template ostream& flush(ostream&);
23866: extern template ostream& operator<<(ostream&, char);
23866: extern template ostream& operator<<(ostream&, unsigned char);
23866: extern template ostream& operator<<(ostream&, signed char);
23866: extern template ostream& operator<<(ostream&, const char*);
23866: extern template ostream& operator<<(ostream&, const unsigned char*);
23866: extern template ostream& operator<<(ostream&, const signed char*);
23866:
23866: extern template ostream& ostream::_M_insert(long);
23866: extern template ostream& ostream::_M_insert(unsigned long);
23866: extern template ostream& ostream::_M_insert(bool);
23866:
23866: extern template ostream& ostream::_M_insert(long long);
23866: extern template ostream& ostream::_M_insert(unsigned long long);
23866:
23866: extern template ostream& ostream::_M_insert(double);
23866: extern template ostream& ostream::_M_insert(long double);
23866: extern template ostream& ostream::_M_insert(const void*);
23866:
23866:
23866: extern template class basic_ostream<wchar_t>;
23866: extern template wostream& endl(wostream&);
23866: extern template wostream& ends(wostream&);
23866: extern template wostream& flush(wostream&);
23866: extern template wostream& operator<<(wostream&, wchar_t);
23866: extern template wostream& operator<<(wostream&, char);
23866: extern template wostream& operator<<(wostream&, const wchar_t*);
23866: extern template wostream& operator<<(wostream&, const char*);
23866:
23866: extern template wostream& wostream::_M_insert(long);
23866: extern template wostream& wostream::_M_insert(unsigned long);
23866: extern template wostream& wostream::_M_insert(bool);
23866:
23866: extern template wostream& wostream::_M_insert(long long);
23866: extern template wostream& wostream::_M_insert(unsigned long long);
23866:
23866: extern template wostream& wostream::_M_insert(double);
23866: extern template wostream& wostream::_M_insert(long double);
23866: extern template wostream& wostream::_M_insert(const void*);
23866:
23866:
23866:
23866:
23866: }
23866: # 785 "/usr/include/c++/10/ostream" 2 3
23866: # 40 "/usr/include/c++/10/istream" 2 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 57 "/usr/include/c++/10/istream" 3
23866: template<typename _CharT, typename _Traits>
23866: class basic_istream : virtual public basic_ios<_CharT, _Traits>
23866: {
23866: public:
23866:
23866: typedef _CharT char_type;
23866: typedef typename _Traits::int_type int_type;
23866: typedef typename _Traits::pos_type pos_type;
23866: typedef typename _Traits::off_type off_type;
23866: typedef _Traits traits_type;
23866:
23866:
23866: typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
23866: typedef basic_ios<_CharT, _Traits> __ios_type;
23866: typedef basic_istream<_CharT, _Traits> __istream_type;
23866: typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> >
23866: __num_get_type;
23866: typedef ctype<_CharT> __ctype_type;
23866:
23866: protected:
23866:
23866:
23866:
23866:
23866:
23866: streamsize _M_gcount;
23866:
23866: public:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: explicit
23866: basic_istream(__streambuf_type* __sb)
23866: : _M_gcount(streamsize(0))
23866: { this->init(__sb); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: virtual
23866: ~basic_istream()
23866: { _M_gcount = streamsize(0); }
23866:
23866:
23866: class sentry;
23866: friend class sentry;
23866: # 119 "/usr/include/c++/10/istream" 3
23866: __istream_type&
23866: operator>>(__istream_type& (*__pf)(__istream_type&))
23866: { return __pf(*this); }
23866:
23866: __istream_type&
23866: operator>>(__ios_type& (*__pf)(__ios_type&))
23866: {
23866: __pf(*this);
23866: return *this;
23866: }
23866:
23866: __istream_type&
23866: operator>>(ios_base& (*__pf)(ios_base&))
23866: {
23866: __pf(*this);
23866: return *this;
23866: }
23866: # 167 "/usr/include/c++/10/istream" 3
23866: __istream_type&
23866: operator>>(bool& __n)
23866: { return _M_extract(__n); }
23866:
23866: __istream_type&
23866: operator>>(short& __n);
23866:
23866: __istream_type&
23866: operator>>(unsigned short& __n)
23866: { return _M_extract(__n); }
23866:
23866: __istream_type&
23866: operator>>(int& __n);
23866:
23866: __istream_type&
23866: operator>>(unsigned int& __n)
23866: { return _M_extract(__n); }
23866:
23866: __istream_type&
23866: operator>>(long& __n)
23866: { return _M_extract(__n); }
23866:
23866: __istream_type&
23866: operator>>(unsigned long& __n)
23866: { return _M_extract(__n); }
23866:
23866:
23866: __istream_type&
23866: operator>>(long long& __n)
23866: { return _M_extract(__n); }
23866:
23866: __istream_type&
23866: operator>>(unsigned long long& __n)
23866: { return _M_extract(__n); }
23866: # 213 "/usr/include/c++/10/istream" 3
23866: __istream_type&
23866: operator>>(float& __f)
23866: { return _M_extract(__f); }
23866:
23866: __istream_type&
23866: operator>>(double& __f)
23866: { return _M_extract(__f); }
23866:
23866: __istream_type&
23866: operator>>(long double& __f)
23866: { return _M_extract(__f); }
23866: # 234 "/usr/include/c++/10/istream" 3
23866: __istream_type&
23866: operator>>(void*& __p)
23866: { return _M_extract(__p); }
23866: # 258 "/usr/include/c++/10/istream" 3
23866: __istream_type&
23866: operator>>(__streambuf_type* __sb);
23866: # 268 "/usr/include/c++/10/istream" 3
23866: streamsize
23866: gcount() const
23866: { return _M_gcount; }
23866: # 301 "/usr/include/c++/10/istream" 3
23866: int_type
23866: get();
23866: # 315 "/usr/include/c++/10/istream" 3
23866: __istream_type&
23866: get(char_type& __c);
23866: # 342 "/usr/include/c++/10/istream" 3
23866: __istream_type&
23866: get(char_type* __s, streamsize __n, char_type __delim);
23866: # 353 "/usr/include/c++/10/istream" 3
23866: __istream_type&
23866: get(char_type* __s, streamsize __n)
23866: { return this->get(__s, __n, this->widen('\n')); }
23866: # 376 "/usr/include/c++/10/istream" 3
23866: __istream_type&
23866: get(__streambuf_type& __sb, char_type __delim);
23866: # 386 "/usr/include/c++/10/istream" 3
23866: __istream_type&
23866: get(__streambuf_type& __sb)
23866: { return this->get(__sb, this->widen('\n')); }
23866: # 415 "/usr/include/c++/10/istream" 3
23866: __istream_type&
23866: getline(char_type* __s, streamsize __n, char_type __delim);
23866: # 426 "/usr/include/c++/10/istream" 3
23866: __istream_type&
23866: getline(char_type* __s, streamsize __n)
23866: { return this->getline(__s, __n, this->widen('\n')); }
23866: # 450 "/usr/include/c++/10/istream" 3
23866: __istream_type&
23866: ignore(streamsize __n, int_type __delim);
23866:
23866: __istream_type&
23866: ignore(streamsize __n);
23866:
23866: __istream_type&
23866: ignore();
23866: # 467 "/usr/include/c++/10/istream" 3
23866: int_type
23866: peek();
23866: # 485 "/usr/include/c++/10/istream" 3
23866: __istream_type&
23866: read(char_type* __s, streamsize __n);
23866: # 504 "/usr/include/c++/10/istream" 3
23866: streamsize
23866: readsome(char_type* __s, streamsize __n);
23866: # 521 "/usr/include/c++/10/istream" 3
23866: __istream_type&
23866: putback(char_type __c);
23866: # 537 "/usr/include/c++/10/istream" 3
23866: __istream_type&
23866: unget();
23866: # 555 "/usr/include/c++/10/istream" 3
23866: int
23866: sync();
23866: # 570 "/usr/include/c++/10/istream" 3
23866: pos_type
23866: tellg();
23866: # 585 "/usr/include/c++/10/istream" 3
23866: __istream_type&
23866: seekg(pos_type);
23866: # 601 "/usr/include/c++/10/istream" 3
23866: __istream_type&
23866: seekg(off_type, ios_base::seekdir);
23866:
23866:
23866: protected:
23866: basic_istream()
23866: : _M_gcount(streamsize(0))
23866: { this->init(0); }
23866:
23866:
23866: basic_istream(const basic_istream&) = delete;
23866:
23866: basic_istream(basic_istream&& __rhs)
23866: : __ios_type(), _M_gcount(__rhs._M_gcount)
23866: {
23866: __ios_type::move(__rhs);
23866: __rhs._M_gcount = 0;
23866: }
23866:
23866:
23866:
23866: basic_istream& operator=(const basic_istream&) = delete;
23866:
23866: basic_istream&
23866: operator=(basic_istream&& __rhs)
23866: {
23866: swap(__rhs);
23866: return *this;
23866: }
23866:
23866: void
23866: swap(basic_istream& __rhs)
23866: {
23866: __ios_type::swap(__rhs);
23866: std::swap(_M_gcount, __rhs._M_gcount);
23866: }
23866:
23866:
23866: template<typename _ValueT>
23866: __istream_type&
23866: _M_extract(_ValueT& __v);
23866: };
23866:
23866:
23866: template<>
23866: basic_istream<char>&
23866: basic_istream<char>::
23866: getline(char_type* __s, streamsize __n, char_type __delim);
23866:
23866: template<>
23866: basic_istream<char>&
23866: basic_istream<char>::
23866: ignore(streamsize __n);
23866:
23866: template<>
23866: basic_istream<char>&
23866: basic_istream<char>::
23866: ignore(streamsize __n, int_type __delim);
23866:
23866:
23866: template<>
23866: basic_istream<wchar_t>&
23866: basic_istream<wchar_t>::
23866: getline(char_type* __s, streamsize __n, char_type __delim);
23866:
23866: template<>
23866: basic_istream<wchar_t>&
23866: basic_istream<wchar_t>::
23866: ignore(streamsize __n);
23866:
23866: template<>
23866: basic_istream<wchar_t>&
23866: basic_istream<wchar_t>::
23866: ignore(streamsize __n, int_type __delim);
23866: # 685 "/usr/include/c++/10/istream" 3
23866: template<typename _CharT, typename _Traits>
23866: class basic_istream<_CharT, _Traits>::sentry
23866: {
23866:
23866: bool _M_ok;
23866:
23866: public:
23866:
23866: typedef _Traits traits_type;
23866: typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
23866: typedef basic_istream<_CharT, _Traits> __istream_type;
23866: typedef typename __istream_type::__ctype_type __ctype_type;
23866: typedef typename _Traits::int_type __int_type;
23866: # 721 "/usr/include/c++/10/istream" 3
23866: explicit
23866: sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false);
23866: # 732 "/usr/include/c++/10/istream" 3
23866: explicit
23866:
23866: operator bool() const
23866: { return _M_ok; }
23866: };
23866: # 750 "/usr/include/c++/10/istream" 3
23866: template<typename _CharT, typename _Traits>
23866: basic_istream<_CharT, _Traits>&
23866: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c);
23866:
23866: template<class _Traits>
23866: inline basic_istream<char, _Traits>&
23866: operator>>(basic_istream<char, _Traits>& __in, unsigned char& __c)
23866: { return (__in >> reinterpret_cast<char&>(__c)); }
23866:
23866: template<class _Traits>
23866: inline basic_istream<char, _Traits>&
23866: operator>>(basic_istream<char, _Traits>& __in, signed char& __c)
23866: { return (__in >> reinterpret_cast<char&>(__c)); }
23866: # 792 "/usr/include/c++/10/istream" 3
23866: template<typename _CharT, typename _Traits>
23866: basic_istream<_CharT, _Traits>&
23866: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s);
23866:
23866:
23866: template<>
23866: basic_istream<char>&
23866: operator>>(basic_istream<char>& __in, char* __s);
23866:
23866: template<class _Traits>
23866: inline basic_istream<char, _Traits>&
23866: operator>>(basic_istream<char, _Traits>& __in, unsigned char* __s)
23866: { return (__in >> reinterpret_cast<char*>(__s)); }
23866:
23866: template<class _Traits>
23866: inline basic_istream<char, _Traits>&
23866: operator>>(basic_istream<char, _Traits>& __in, signed char* __s)
23866: { return (__in >> reinterpret_cast<char*>(__s)); }
23866: # 823 "/usr/include/c++/10/istream" 3
23866: template<typename _CharT, typename _Traits>
23866: class basic_iostream
23866: : public basic_istream<_CharT, _Traits>,
23866: public basic_ostream<_CharT, _Traits>
23866: {
23866: public:
23866:
23866:
23866:
23866: typedef _CharT char_type;
23866: typedef typename _Traits::int_type int_type;
23866: typedef typename _Traits::pos_type pos_type;
23866: typedef typename _Traits::off_type off_type;
23866: typedef _Traits traits_type;
23866:
23866:
23866: typedef basic_istream<_CharT, _Traits> __istream_type;
23866: typedef basic_ostream<_CharT, _Traits> __ostream_type;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: explicit
23866: basic_iostream(basic_streambuf<_CharT, _Traits>* __sb)
23866: : __istream_type(__sb), __ostream_type(__sb) { }
23866:
23866:
23866:
23866:
23866: virtual
23866: ~basic_iostream() { }
23866:
23866: protected:
23866: basic_iostream()
23866: : __istream_type(), __ostream_type() { }
23866:
23866:
23866: basic_iostream(const basic_iostream&) = delete;
23866:
23866: basic_iostream(basic_iostream&& __rhs)
23866: : __istream_type(std::move(__rhs)), __ostream_type(*this)
23866: { }
23866:
23866:
23866:
23866: basic_iostream& operator=(const basic_iostream&) = delete;
23866:
23866: basic_iostream&
23866: operator=(basic_iostream&& __rhs)
23866: {
23866: swap(__rhs);
23866: return *this;
23866: }
23866:
23866: void
23866: swap(basic_iostream& __rhs)
23866: { __istream_type::swap(__rhs); }
23866:
23866: };
23866: # 906 "/usr/include/c++/10/istream" 3
23866: template<typename _CharT, typename _Traits>
23866: basic_istream<_CharT, _Traits>&
23866: ws(basic_istream<_CharT, _Traits>& __is);
23866:
23866:
23866: template<typename _Ch, typename _Up>
23866: basic_istream<_Ch, _Up>&
23866: __is_convertible_to_basic_istream_test(basic_istream<_Ch, _Up>*);
23866:
23866: template<typename _Tp, typename = void>
23866: struct __is_convertible_to_basic_istream_impl
23866: {
23866: using __istream_type = void;
23866: };
23866:
23866: template<typename _Tp>
23866: using __do_is_convertible_to_basic_istream_impl =
23866: decltype(__is_convertible_to_basic_istream_test
23866: (declval<typename remove_reference<_Tp>::type*>()));
23866:
23866: template<typename _Tp>
23866: struct __is_convertible_to_basic_istream_impl
23866: <_Tp,
23866: __void_t<__do_is_convertible_to_basic_istream_impl<_Tp>>>
23866: {
23866: using __istream_type =
23866: __do_is_convertible_to_basic_istream_impl<_Tp>;
23866: };
23866:
23866: template<typename _Tp>
23866: struct __is_convertible_to_basic_istream
23866: : __is_convertible_to_basic_istream_impl<_Tp>
23866: {
23866: public:
23866: using type = __not_<is_void<
23866: typename __is_convertible_to_basic_istream_impl<_Tp>::__istream_type>>;
23866: constexpr static bool value = type::value;
23866: };
23866:
23866: template<typename _Istream, typename _Tp, typename = void>
23866: struct __is_extractable : false_type {};
23866:
23866: template<typename _Istream, typename _Tp>
23866: struct __is_extractable<_Istream, _Tp,
23866: __void_t<decltype(declval<_Istream&>()
23866: >> declval<_Tp>())>>
23866: : true_type {};
23866:
23866: template<typename _Istream>
23866: using __rvalue_istream_type =
23866: typename __is_convertible_to_basic_istream<
23866: _Istream>::__istream_type;
23866: # 972 "/usr/include/c++/10/istream" 3
23866: template<typename _Istream, typename _Tp>
23866: inline
23866: typename enable_if<__and_<__not_<is_lvalue_reference<_Istream>>,
23866: __is_convertible_to_basic_istream<_Istream>,
23866: __is_extractable<
23866: __rvalue_istream_type<_Istream>,
23866: _Tp&&>>::value,
23866: __rvalue_istream_type<_Istream>>::type
23866: operator>>(_Istream&& __is, _Tp&& __x)
23866: {
23866: __rvalue_istream_type<_Istream> __ret_is = __is;
23866: __ret_is >> std::forward<_Tp>(__x);
23866: return __ret_is;
23866: }
23866:
23866:
23866:
23866: }
23866:
23866: # 1 "/usr/include/c++/10/bits/istream.tcc" 1 3
23866: # 35 "/usr/include/c++/10/bits/istream.tcc" 3
23866: #define _ISTREAM_TCC 1
23866:
23866:
23866: # 38 "/usr/include/c++/10/bits/istream.tcc" 3
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_istream<_CharT, _Traits>::sentry::
23866: sentry(basic_istream<_CharT, _Traits>& __in, bool __noskip) : _M_ok(false)
23866: {
23866: ios_base::iostate __err = ios_base::goodbit;
23866: if (__in.good())
23866: try
23866: {
23866: if (__in.tie())
23866: __in.tie()->flush();
23866: if (!__noskip && bool(__in.flags() & ios_base::skipws))
23866: {
23866: const __int_type __eof = traits_type::eof();
23866: __streambuf_type* __sb = __in.rdbuf();
23866: __int_type __c = __sb->sgetc();
23866:
23866: const __ctype_type& __ct = __check_facet(__in._M_ctype);
23866: while (!traits_type::eq_int_type(__c, __eof)
23866: && __ct.is(ctype_base::space,
23866: traits_type::to_char_type(__c)))
23866: __c = __sb->snextc();
23866:
23866:
23866:
23866:
23866: if (traits_type::eq_int_type(__c, __eof))
23866: __err |= ios_base::eofbit;
23866: }
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: __in._M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { __in._M_setstate(ios_base::badbit); }
23866:
23866: if (__in.good() && __err == ios_base::goodbit)
23866: _M_ok = true;
23866: else
23866: {
23866: __err |= ios_base::failbit;
23866: __in.setstate(__err);
23866: }
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: template<typename _ValueT>
23866: basic_istream<_CharT, _Traits>&
23866: basic_istream<_CharT, _Traits>::
23866: _M_extract(_ValueT& __v)
23866: {
23866: sentry __cerb(*this, false);
23866: if (__cerb)
23866: {
23866: ios_base::iostate __err = ios_base::goodbit;
23866: try
23866: {
23866: const __num_get_type& __ng = __check_facet(this->_M_num_get);
23866: __ng.get(*this, 0, *this, __err, __v);
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::badbit); }
23866: if (__err)
23866: this->setstate(__err);
23866: }
23866: return *this;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_istream<_CharT, _Traits>&
23866: basic_istream<_CharT, _Traits>::
23866: operator>>(short& __n)
23866: {
23866:
23866:
23866: sentry __cerb(*this, false);
23866: if (__cerb)
23866: {
23866: ios_base::iostate __err = ios_base::goodbit;
23866: try
23866: {
23866: long __l;
23866: const __num_get_type& __ng = __check_facet(this->_M_num_get);
23866: __ng.get(*this, 0, *this, __err, __l);
23866:
23866:
23866:
23866: if (__l < __gnu_cxx::__numeric_traits<short>::__min)
23866: {
23866: __err |= ios_base::failbit;
23866: __n = __gnu_cxx::__numeric_traits<short>::__min;
23866: }
23866: else if (__l > __gnu_cxx::__numeric_traits<short>::__max)
23866: {
23866: __err |= ios_base::failbit;
23866: __n = __gnu_cxx::__numeric_traits<short>::__max;
23866: }
23866: else
23866: __n = short(__l);
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::badbit); }
23866: if (__err)
23866: this->setstate(__err);
23866: }
23866: return *this;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_istream<_CharT, _Traits>&
23866: basic_istream<_CharT, _Traits>::
23866: operator>>(int& __n)
23866: {
23866:
23866:
23866: sentry __cerb(*this, false);
23866: if (__cerb)
23866: {
23866: ios_base::iostate __err = ios_base::goodbit;
23866: try
23866: {
23866: long __l;
23866: const __num_get_type& __ng = __check_facet(this->_M_num_get);
23866: __ng.get(*this, 0, *this, __err, __l);
23866:
23866:
23866:
23866: if (__l < __gnu_cxx::__numeric_traits<int>::__min)
23866: {
23866: __err |= ios_base::failbit;
23866: __n = __gnu_cxx::__numeric_traits<int>::__min;
23866: }
23866: else if (__l > __gnu_cxx::__numeric_traits<int>::__max)
23866: {
23866: __err |= ios_base::failbit;
23866: __n = __gnu_cxx::__numeric_traits<int>::__max;
23866: }
23866: else
23866: __n = int(__l);
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::badbit); }
23866: if (__err)
23866: this->setstate(__err);
23866: }
23866: return *this;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_istream<_CharT, _Traits>&
23866: basic_istream<_CharT, _Traits>::
23866: operator>>(__streambuf_type* __sbout)
23866: {
23866: ios_base::iostate __err = ios_base::goodbit;
23866: sentry __cerb(*this, false);
23866: if (__cerb && __sbout)
23866: {
23866: try
23866: {
23866: bool __ineof;
23866: if (!__copy_streambufs_eof(this->rdbuf(), __sbout, __ineof))
23866: __err |= ios_base::failbit;
23866: if (__ineof)
23866: __err |= ios_base::eofbit;
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::failbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::failbit); }
23866: }
23866: else if (!__sbout)
23866: __err |= ios_base::failbit;
23866: if (__err)
23866: this->setstate(__err);
23866: return *this;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: typename basic_istream<_CharT, _Traits>::int_type
23866: basic_istream<_CharT, _Traits>::
23866: get(void)
23866: {
23866: const int_type __eof = traits_type::eof();
23866: int_type __c = __eof;
23866: _M_gcount = 0;
23866: ios_base::iostate __err = ios_base::goodbit;
23866: sentry __cerb(*this, true);
23866: if (__cerb)
23866: {
23866: try
23866: {
23866: __c = this->rdbuf()->sbumpc();
23866:
23866: if (!traits_type::eq_int_type(__c, __eof))
23866: _M_gcount = 1;
23866: else
23866: __err |= ios_base::eofbit;
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::badbit); }
23866: }
23866: if (!_M_gcount)
23866: __err |= ios_base::failbit;
23866: if (__err)
23866: this->setstate(__err);
23866: return __c;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_istream<_CharT, _Traits>&
23866: basic_istream<_CharT, _Traits>::
23866: get(char_type& __c)
23866: {
23866: _M_gcount = 0;
23866: ios_base::iostate __err = ios_base::goodbit;
23866: sentry __cerb(*this, true);
23866: if (__cerb)
23866: {
23866: try
23866: {
23866: const int_type __cb = this->rdbuf()->sbumpc();
23866:
23866: if (!traits_type::eq_int_type(__cb, traits_type::eof()))
23866: {
23866: _M_gcount = 1;
23866: __c = traits_type::to_char_type(__cb);
23866: }
23866: else
23866: __err |= ios_base::eofbit;
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::badbit); }
23866: }
23866: if (!_M_gcount)
23866: __err |= ios_base::failbit;
23866: if (__err)
23866: this->setstate(__err);
23866: return *this;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_istream<_CharT, _Traits>&
23866: basic_istream<_CharT, _Traits>::
23866: get(char_type* __s, streamsize __n, char_type __delim)
23866: {
23866: _M_gcount = 0;
23866: ios_base::iostate __err = ios_base::goodbit;
23866: sentry __cerb(*this, true);
23866: if (__cerb)
23866: {
23866: try
23866: {
23866: const int_type __idelim = traits_type::to_int_type(__delim);
23866: const int_type __eof = traits_type::eof();
23866: __streambuf_type* __sb = this->rdbuf();
23866: int_type __c = __sb->sgetc();
23866:
23866: while (_M_gcount + 1 < __n
23866: && !traits_type::eq_int_type(__c, __eof)
23866: && !traits_type::eq_int_type(__c, __idelim))
23866: {
23866: *__s++ = traits_type::to_char_type(__c);
23866: ++_M_gcount;
23866: __c = __sb->snextc();
23866: }
23866: if (traits_type::eq_int_type(__c, __eof))
23866: __err |= ios_base::eofbit;
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::badbit); }
23866: }
23866:
23866:
23866: if (__n > 0)
23866: *__s = char_type();
23866: if (!_M_gcount)
23866: __err |= ios_base::failbit;
23866: if (__err)
23866: this->setstate(__err);
23866: return *this;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_istream<_CharT, _Traits>&
23866: basic_istream<_CharT, _Traits>::
23866: get(__streambuf_type& __sb, char_type __delim)
23866: {
23866: _M_gcount = 0;
23866: ios_base::iostate __err = ios_base::goodbit;
23866: sentry __cerb(*this, true);
23866: if (__cerb)
23866: {
23866: try
23866: {
23866: const int_type __idelim = traits_type::to_int_type(__delim);
23866: const int_type __eof = traits_type::eof();
23866: __streambuf_type* __this_sb = this->rdbuf();
23866: int_type __c = __this_sb->sgetc();
23866: char_type __c2 = traits_type::to_char_type(__c);
23866:
23866: while (!traits_type::eq_int_type(__c, __eof)
23866: && !traits_type::eq_int_type(__c, __idelim)
23866: && !traits_type::eq_int_type(__sb.sputc(__c2), __eof))
23866: {
23866: ++_M_gcount;
23866: __c = __this_sb->snextc();
23866: __c2 = traits_type::to_char_type(__c);
23866: }
23866: if (traits_type::eq_int_type(__c, __eof))
23866: __err |= ios_base::eofbit;
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::badbit); }
23866: }
23866: if (!_M_gcount)
23866: __err |= ios_base::failbit;
23866: if (__err)
23866: this->setstate(__err);
23866: return *this;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_istream<_CharT, _Traits>&
23866: basic_istream<_CharT, _Traits>::
23866: getline(char_type* __s, streamsize __n, char_type __delim)
23866: {
23866: _M_gcount = 0;
23866: ios_base::iostate __err = ios_base::goodbit;
23866: sentry __cerb(*this, true);
23866: if (__cerb)
23866: {
23866: try
23866: {
23866: const int_type __idelim = traits_type::to_int_type(__delim);
23866: const int_type __eof = traits_type::eof();
23866: __streambuf_type* __sb = this->rdbuf();
23866: int_type __c = __sb->sgetc();
23866:
23866: while (_M_gcount + 1 < __n
23866: && !traits_type::eq_int_type(__c, __eof)
23866: && !traits_type::eq_int_type(__c, __idelim))
23866: {
23866: *__s++ = traits_type::to_char_type(__c);
23866: __c = __sb->snextc();
23866: ++_M_gcount;
23866: }
23866: if (traits_type::eq_int_type(__c, __eof))
23866: __err |= ios_base::eofbit;
23866: else
23866: {
23866: if (traits_type::eq_int_type(__c, __idelim))
23866: {
23866: __sb->sbumpc();
23866: ++_M_gcount;
23866: }
23866: else
23866: __err |= ios_base::failbit;
23866: }
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::badbit); }
23866: }
23866:
23866:
23866: if (__n > 0)
23866: *__s = char_type();
23866: if (!_M_gcount)
23866: __err |= ios_base::failbit;
23866: if (__err)
23866: this->setstate(__err);
23866: return *this;
23866: }
23866:
23866:
23866:
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_istream<_CharT, _Traits>&
23866: basic_istream<_CharT, _Traits>::
23866: ignore(void)
23866: {
23866: _M_gcount = 0;
23866: sentry __cerb(*this, true);
23866: if (__cerb)
23866: {
23866: ios_base::iostate __err = ios_base::goodbit;
23866: try
23866: {
23866: const int_type __eof = traits_type::eof();
23866: __streambuf_type* __sb = this->rdbuf();
23866:
23866: if (traits_type::eq_int_type(__sb->sbumpc(), __eof))
23866: __err |= ios_base::eofbit;
23866: else
23866: _M_gcount = 1;
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::badbit); }
23866: if (__err)
23866: this->setstate(__err);
23866: }
23866: return *this;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_istream<_CharT, _Traits>&
23866: basic_istream<_CharT, _Traits>::
23866: ignore(streamsize __n)
23866: {
23866: _M_gcount = 0;
23866: sentry __cerb(*this, true);
23866: if (__cerb && __n > 0)
23866: {
23866: ios_base::iostate __err = ios_base::goodbit;
23866: try
23866: {
23866: const int_type __eof = traits_type::eof();
23866: __streambuf_type* __sb = this->rdbuf();
23866: int_type __c = __sb->sgetc();
23866: # 521 "/usr/include/c++/10/bits/istream.tcc" 3
23866: bool __large_ignore = false;
23866: while (true)
23866: {
23866: while (_M_gcount < __n
23866: && !traits_type::eq_int_type(__c, __eof))
23866: {
23866: ++_M_gcount;
23866: __c = __sb->snextc();
23866: }
23866: if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max
23866: && !traits_type::eq_int_type(__c, __eof))
23866: {
23866: _M_gcount =
23866: __gnu_cxx::__numeric_traits<streamsize>::__min;
23866: __large_ignore = true;
23866: }
23866: else
23866: break;
23866: }
23866:
23866: if (__large_ignore)
23866: _M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max;
23866:
23866: if (traits_type::eq_int_type(__c, __eof))
23866: __err |= ios_base::eofbit;
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::badbit); }
23866: if (__err)
23866: this->setstate(__err);
23866: }
23866: return *this;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_istream<_CharT, _Traits>&
23866: basic_istream<_CharT, _Traits>::
23866: ignore(streamsize __n, int_type __delim)
23866: {
23866: _M_gcount = 0;
23866: sentry __cerb(*this, true);
23866: if (__cerb && __n > 0)
23866: {
23866: ios_base::iostate __err = ios_base::goodbit;
23866: try
23866: {
23866: const int_type __eof = traits_type::eof();
23866: __streambuf_type* __sb = this->rdbuf();
23866: int_type __c = __sb->sgetc();
23866:
23866:
23866: bool __large_ignore = false;
23866: while (true)
23866: {
23866: while (_M_gcount < __n
23866: && !traits_type::eq_int_type(__c, __eof)
23866: && !traits_type::eq_int_type(__c, __delim))
23866: {
23866: ++_M_gcount;
23866: __c = __sb->snextc();
23866: }
23866: if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max
23866: && !traits_type::eq_int_type(__c, __eof)
23866: && !traits_type::eq_int_type(__c, __delim))
23866: {
23866: _M_gcount =
23866: __gnu_cxx::__numeric_traits<streamsize>::__min;
23866: __large_ignore = true;
23866: }
23866: else
23866: break;
23866: }
23866:
23866: if (__large_ignore)
23866: _M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max;
23866:
23866: if (traits_type::eq_int_type(__c, __eof))
23866: __err |= ios_base::eofbit;
23866: else if (traits_type::eq_int_type(__c, __delim))
23866: {
23866: if (_M_gcount
23866: < __gnu_cxx::__numeric_traits<streamsize>::__max)
23866: ++_M_gcount;
23866: __sb->sbumpc();
23866: }
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::badbit); }
23866: if (__err)
23866: this->setstate(__err);
23866: }
23866: return *this;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: typename basic_istream<_CharT, _Traits>::int_type
23866: basic_istream<_CharT, _Traits>::
23866: peek(void)
23866: {
23866: int_type __c = traits_type::eof();
23866: _M_gcount = 0;
23866: sentry __cerb(*this, true);
23866: if (__cerb)
23866: {
23866: ios_base::iostate __err = ios_base::goodbit;
23866: try
23866: {
23866: __c = this->rdbuf()->sgetc();
23866: if (traits_type::eq_int_type(__c, traits_type::eof()))
23866: __err |= ios_base::eofbit;
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::badbit); }
23866: if (__err)
23866: this->setstate(__err);
23866: }
23866: return __c;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_istream<_CharT, _Traits>&
23866: basic_istream<_CharT, _Traits>::
23866: read(char_type* __s, streamsize __n)
23866: {
23866: _M_gcount = 0;
23866: sentry __cerb(*this, true);
23866: if (__cerb)
23866: {
23866: ios_base::iostate __err = ios_base::goodbit;
23866: try
23866: {
23866: _M_gcount = this->rdbuf()->sgetn(__s, __n);
23866: if (_M_gcount != __n)
23866: __err |= (ios_base::eofbit | ios_base::failbit);
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::badbit); }
23866: if (__err)
23866: this->setstate(__err);
23866: }
23866: return *this;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: streamsize
23866: basic_istream<_CharT, _Traits>::
23866: readsome(char_type* __s, streamsize __n)
23866: {
23866: _M_gcount = 0;
23866: sentry __cerb(*this, true);
23866: if (__cerb)
23866: {
23866: ios_base::iostate __err = ios_base::goodbit;
23866: try
23866: {
23866:
23866: const streamsize __num = this->rdbuf()->in_avail();
23866: if (__num > 0)
23866: _M_gcount = this->rdbuf()->sgetn(__s, std::min(__num, __n));
23866: else if (__num == -1)
23866: __err |= ios_base::eofbit;
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::badbit); }
23866: if (__err)
23866: this->setstate(__err);
23866: }
23866: return _M_gcount;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_istream<_CharT, _Traits>&
23866: basic_istream<_CharT, _Traits>::
23866: putback(char_type __c)
23866: {
23866:
23866:
23866: _M_gcount = 0;
23866:
23866: this->clear(this->rdstate() & ~ios_base::eofbit);
23866: sentry __cerb(*this, true);
23866: if (__cerb)
23866: {
23866: ios_base::iostate __err = ios_base::goodbit;
23866: try
23866: {
23866: const int_type __eof = traits_type::eof();
23866: __streambuf_type* __sb = this->rdbuf();
23866: if (!__sb
23866: || traits_type::eq_int_type(__sb->sputbackc(__c), __eof))
23866: __err |= ios_base::badbit;
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::badbit); }
23866: if (__err)
23866: this->setstate(__err);
23866: }
23866: return *this;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_istream<_CharT, _Traits>&
23866: basic_istream<_CharT, _Traits>::
23866: unget(void)
23866: {
23866:
23866:
23866: _M_gcount = 0;
23866:
23866: this->clear(this->rdstate() & ~ios_base::eofbit);
23866: sentry __cerb(*this, true);
23866: if (__cerb)
23866: {
23866: ios_base::iostate __err = ios_base::goodbit;
23866: try
23866: {
23866: const int_type __eof = traits_type::eof();
23866: __streambuf_type* __sb = this->rdbuf();
23866: if (!__sb
23866: || traits_type::eq_int_type(__sb->sungetc(), __eof))
23866: __err |= ios_base::badbit;
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::badbit); }
23866: if (__err)
23866: this->setstate(__err);
23866: }
23866: return *this;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: int
23866: basic_istream<_CharT, _Traits>::
23866: sync(void)
23866: {
23866:
23866:
23866: int __ret = -1;
23866: sentry __cerb(*this, true);
23866: if (__cerb)
23866: {
23866: ios_base::iostate __err = ios_base::goodbit;
23866: try
23866: {
23866: __streambuf_type* __sb = this->rdbuf();
23866: if (__sb)
23866: {
23866: if (__sb->pubsync() == -1)
23866: __err |= ios_base::badbit;
23866: else
23866: __ret = 0;
23866: }
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::badbit); }
23866: if (__err)
23866: this->setstate(__err);
23866: }
23866: return __ret;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: typename basic_istream<_CharT, _Traits>::pos_type
23866: basic_istream<_CharT, _Traits>::
23866: tellg(void)
23866: {
23866:
23866:
23866: pos_type __ret = pos_type(-1);
23866: sentry __cerb(*this, true);
23866: if (__cerb)
23866: {
23866: try
23866: {
23866: if (!this->fail())
23866: __ret = this->rdbuf()->pubseekoff(0, ios_base::cur,
23866: ios_base::in);
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::badbit); }
23866: }
23866: return __ret;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_istream<_CharT, _Traits>&
23866: basic_istream<_CharT, _Traits>::
23866: seekg(pos_type __pos)
23866: {
23866:
23866:
23866:
23866: this->clear(this->rdstate() & ~ios_base::eofbit);
23866: sentry __cerb(*this, true);
23866: if (__cerb)
23866: {
23866: ios_base::iostate __err = ios_base::goodbit;
23866: try
23866: {
23866: if (!this->fail())
23866: {
23866:
23866: const pos_type __p = this->rdbuf()->pubseekpos(__pos,
23866: ios_base::in);
23866:
23866:
23866: if (__p == pos_type(off_type(-1)))
23866: __err |= ios_base::failbit;
23866: }
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::badbit); }
23866: if (__err)
23866: this->setstate(__err);
23866: }
23866: return *this;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_istream<_CharT, _Traits>&
23866: basic_istream<_CharT, _Traits>::
23866: seekg(off_type __off, ios_base::seekdir __dir)
23866: {
23866:
23866:
23866:
23866: this->clear(this->rdstate() & ~ios_base::eofbit);
23866: sentry __cerb(*this, true);
23866: if (__cerb)
23866: {
23866: ios_base::iostate __err = ios_base::goodbit;
23866: try
23866: {
23866: if (!this->fail())
23866: {
23866:
23866: const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir,
23866: ios_base::in);
23866:
23866:
23866: if (__p == pos_type(off_type(-1)))
23866: __err |= ios_base::failbit;
23866: }
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: this->_M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { this->_M_setstate(ios_base::badbit); }
23866: if (__err)
23866: this->setstate(__err);
23866: }
23866: return *this;
23866: }
23866:
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_istream<_CharT, _Traits>&
23866: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c)
23866: {
23866: typedef basic_istream<_CharT, _Traits> __istream_type;
23866: typedef typename __istream_type::int_type __int_type;
23866:
23866: typename __istream_type::sentry __cerb(__in, false);
23866: if (__cerb)
23866: {
23866: ios_base::iostate __err = ios_base::goodbit;
23866: try
23866: {
23866: const __int_type __cb = __in.rdbuf()->sbumpc();
23866: if (!_Traits::eq_int_type(__cb, _Traits::eof()))
23866: __c = _Traits::to_char_type(__cb);
23866: else
23866: __err |= (ios_base::eofbit | ios_base::failbit);
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: __in._M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { __in._M_setstate(ios_base::badbit); }
23866: if (__err)
23866: __in.setstate(__err);
23866: }
23866: return __in;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_istream<_CharT, _Traits>&
23866: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s)
23866: {
23866: typedef basic_istream<_CharT, _Traits> __istream_type;
23866: typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
23866: typedef typename _Traits::int_type int_type;
23866: typedef _CharT char_type;
23866: typedef ctype<_CharT> __ctype_type;
23866:
23866: streamsize __extracted = 0;
23866: ios_base::iostate __err = ios_base::goodbit;
23866: typename __istream_type::sentry __cerb(__in, false);
23866: if (__cerb)
23866: {
23866: try
23866: {
23866:
23866: streamsize __num = __in.width();
23866: if (__num <= 0)
23866: __num = __gnu_cxx::__numeric_traits<streamsize>::__max;
23866:
23866: const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());
23866:
23866: const int_type __eof = _Traits::eof();
23866: __streambuf_type* __sb = __in.rdbuf();
23866: int_type __c = __sb->sgetc();
23866:
23866: while (__extracted < __num - 1
23866: && !_Traits::eq_int_type(__c, __eof)
23866: && !__ct.is(ctype_base::space,
23866: _Traits::to_char_type(__c)))
23866: {
23866: *__s++ = _Traits::to_char_type(__c);
23866: ++__extracted;
23866: __c = __sb->snextc();
23866: }
23866: if (_Traits::eq_int_type(__c, __eof))
23866: __err |= ios_base::eofbit;
23866:
23866:
23866:
23866: *__s = char_type();
23866: __in.width(0);
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: __in._M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { __in._M_setstate(ios_base::badbit); }
23866: }
23866: if (!__extracted)
23866: __err |= ios_base::failbit;
23866: if (__err)
23866: __in.setstate(__err);
23866: return __in;
23866: }
23866:
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_istream<_CharT, _Traits>&
23866: ws(basic_istream<_CharT, _Traits>& __in)
23866: {
23866: typedef basic_istream<_CharT, _Traits> __istream_type;
23866: typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
23866: typedef typename __istream_type::int_type __int_type;
23866: typedef ctype<_CharT> __ctype_type;
23866:
23866: const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());
23866: const __int_type __eof = _Traits::eof();
23866: __streambuf_type* __sb = __in.rdbuf();
23866: __int_type __c = __sb->sgetc();
23866:
23866: while (!_Traits::eq_int_type(__c, __eof)
23866: && __ct.is(ctype_base::space, _Traits::to_char_type(__c)))
23866: __c = __sb->snextc();
23866:
23866: if (_Traits::eq_int_type(__c, __eof))
23866: __in.setstate(ios_base::eofbit);
23866: return __in;
23866: }
23866:
23866:
23866:
23866:
23866: extern template class basic_istream<char>;
23866: extern template istream& ws(istream&);
23866: extern template istream& operator>>(istream&, char&);
23866: extern template istream& operator>>(istream&, char*);
23866: extern template istream& operator>>(istream&, unsigned char&);
23866: extern template istream& operator>>(istream&, signed char&);
23866: extern template istream& operator>>(istream&, unsigned char*);
23866: extern template istream& operator>>(istream&, signed char*);
23866:
23866: extern template istream& istream::_M_extract(unsigned short&);
23866: extern template istream& istream::_M_extract(unsigned int&);
23866: extern template istream& istream::_M_extract(long&);
23866: extern template istream& istream::_M_extract(unsigned long&);
23866: extern template istream& istream::_M_extract(bool&);
23866:
23866: extern template istream& istream::_M_extract(long long&);
23866: extern template istream& istream::_M_extract(unsigned long long&);
23866:
23866: extern template istream& istream::_M_extract(float&);
23866: extern template istream& istream::_M_extract(double&);
23866: extern template istream& istream::_M_extract(long double&);
23866: extern template istream& istream::_M_extract(void*&);
23866:
23866: extern template class basic_iostream<char>;
23866:
23866:
23866: extern template class basic_istream<wchar_t>;
23866: extern template wistream& ws(wistream&);
23866: extern template wistream& operator>>(wistream&, wchar_t&);
23866: extern template wistream& operator>>(wistream&, wchar_t*);
23866:
23866: extern template wistream& wistream::_M_extract(unsigned short&);
23866: extern template wistream& wistream::_M_extract(unsigned int&);
23866: extern template wistream& wistream::_M_extract(long&);
23866: extern template wistream& wistream::_M_extract(unsigned long&);
23866: extern template wistream& wistream::_M_extract(bool&);
23866:
23866: extern template wistream& wistream::_M_extract(long long&);
23866: extern template wistream& wistream::_M_extract(unsigned long long&);
23866:
23866: extern template wistream& wistream::_M_extract(float&);
23866: extern template wistream& wistream::_M_extract(double&);
23866: extern template wistream& wistream::_M_extract(long double&);
23866: extern template wistream& wistream::_M_extract(void*&);
23866:
23866: extern template class basic_iostream<wchar_t>;
23866:
23866:
23866:
23866:
23866: }
23866: # 992 "/usr/include/c++/10/istream" 2 3
23866: # 39 "/usr/include/c++/10/sstream" 2 3
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: namespace __cxx11 {
23866: # 64 "/usr/include/c++/10/sstream" 3
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: class basic_stringbuf : public basic_streambuf<_CharT, _Traits>
23866: {
23866: struct __xfer_bufptrs;
23866: public:
23866:
23866: typedef _CharT char_type;
23866: typedef _Traits traits_type;
23866:
23866:
23866: typedef _Alloc allocator_type;
23866: typedef typename traits_type::int_type int_type;
23866: typedef typename traits_type::pos_type pos_type;
23866: typedef typename traits_type::off_type off_type;
23866:
23866: typedef basic_streambuf<char_type, traits_type> __streambuf_type;
23866: typedef basic_string<char_type, _Traits, _Alloc> __string_type;
23866: typedef typename __string_type::size_type __size_type;
23866:
23866: protected:
23866:
23866: ios_base::openmode _M_mode;
23866:
23866:
23866: __string_type _M_string;
23866:
23866: public:
23866: # 99 "/usr/include/c++/10/sstream" 3
23866: basic_stringbuf()
23866: : __streambuf_type(), _M_mode(ios_base::in | ios_base::out), _M_string()
23866: { }
23866: # 110 "/usr/include/c++/10/sstream" 3
23866: explicit
23866: basic_stringbuf(ios_base::openmode __mode)
23866: : __streambuf_type(), _M_mode(__mode), _M_string()
23866: { }
23866: # 123 "/usr/include/c++/10/sstream" 3
23866: explicit
23866: basic_stringbuf(const __string_type& __str,
23866: ios_base::openmode __mode = ios_base::in | ios_base::out)
23866: : __streambuf_type(), _M_mode(),
23866: _M_string(__str.data(), __str.size(), __str.get_allocator())
23866: { _M_stringbuf_init(__mode); }
23866:
23866:
23866: basic_stringbuf(const basic_stringbuf&) = delete;
23866:
23866: basic_stringbuf(basic_stringbuf&& __rhs)
23866: : basic_stringbuf(std::move(__rhs), __xfer_bufptrs(__rhs, this))
23866: { __rhs._M_sync(const_cast<char_type*>(__rhs._M_string.data()), 0, 0); }
23866:
23866:
23866:
23866: basic_stringbuf&
23866: operator=(const basic_stringbuf&) = delete;
23866:
23866: basic_stringbuf&
23866: operator=(basic_stringbuf&& __rhs)
23866: {
23866: __xfer_bufptrs __st{__rhs, this};
23866: const __streambuf_type& __base = __rhs;
23866: __streambuf_type::operator=(__base);
23866: this->pubimbue(__rhs.getloc());
23866: _M_mode = __rhs._M_mode;
23866: _M_string = std::move(__rhs._M_string);
23866: __rhs._M_sync(const_cast<char_type*>(__rhs._M_string.data()), 0, 0);
23866: return *this;
23866: }
23866:
23866: void
23866: swap(basic_stringbuf& __rhs)
23866: {
23866: __xfer_bufptrs __l_st{*this, std::__addressof(__rhs)};
23866: __xfer_bufptrs __r_st{__rhs, this};
23866: __streambuf_type& __base = __rhs;
23866: __streambuf_type::swap(__base);
23866: __rhs.pubimbue(this->pubimbue(__rhs.getloc()));
23866: std::swap(_M_mode, __rhs._M_mode);
23866: std::swap(_M_string, __rhs._M_string);
23866: }
23866: # 177 "/usr/include/c++/10/sstream" 3
23866: __string_type
23866: str() const
23866: {
23866: __string_type __ret(_M_string.get_allocator());
23866: if (this->pptr())
23866: {
23866:
23866: if (this->pptr() > this->egptr())
23866: __ret.assign(this->pbase(), this->pptr());
23866: else
23866: __ret.assign(this->pbase(), this->egptr());
23866: }
23866: else
23866: __ret = _M_string;
23866: return __ret;
23866: }
23866: # 201 "/usr/include/c++/10/sstream" 3
23866: void
23866: str(const __string_type& __s)
23866: {
23866:
23866:
23866: _M_string.assign(__s.data(), __s.size());
23866: _M_stringbuf_init(_M_mode);
23866: }
23866:
23866: protected:
23866:
23866: void
23866: _M_stringbuf_init(ios_base::openmode __mode)
23866: {
23866: _M_mode = __mode;
23866: __size_type __len = 0;
23866: if (_M_mode & (ios_base::ate | ios_base::app))
23866: __len = _M_string.size();
23866: _M_sync(const_cast<char_type*>(_M_string.data()), 0, __len);
23866: }
23866:
23866: virtual streamsize
23866: showmanyc()
23866: {
23866: streamsize __ret = -1;
23866: if (_M_mode & ios_base::in)
23866: {
23866: _M_update_egptr();
23866: __ret = this->egptr() - this->gptr();
23866: }
23866: return __ret;
23866: }
23866:
23866: virtual int_type
23866: underflow();
23866:
23866: virtual int_type
23866: pbackfail(int_type __c = traits_type::eof());
23866:
23866: virtual int_type
23866: overflow(int_type __c = traits_type::eof());
23866: # 254 "/usr/include/c++/10/sstream" 3
23866: virtual __streambuf_type*
23866: setbuf(char_type* __s, streamsize __n)
23866: {
23866: if (__s && __n >= 0)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: _M_string.clear();
23866:
23866:
23866: _M_sync(__s, __n, 0);
23866: }
23866: return this;
23866: }
23866:
23866: virtual pos_type
23866: seekoff(off_type __off, ios_base::seekdir __way,
23866: ios_base::openmode __mode = ios_base::in | ios_base::out);
23866:
23866: virtual pos_type
23866: seekpos(pos_type __sp,
23866: ios_base::openmode __mode = ios_base::in | ios_base::out);
23866:
23866:
23866:
23866:
23866: void
23866: _M_sync(char_type* __base, __size_type __i, __size_type __o);
23866:
23866:
23866:
23866: void
23866: _M_update_egptr()
23866: {
23866: const bool __testin = _M_mode & ios_base::in;
23866: if (this->pptr() && this->pptr() > this->egptr())
23866: {
23866: if (__testin)
23866: this->setg(this->eback(), this->gptr(), this->pptr());
23866: else
23866: this->setg(this->pptr(), this->pptr(), this->pptr());
23866: }
23866: }
23866:
23866:
23866:
23866: void
23866: _M_pbump(char_type* __pbeg, char_type* __pend, off_type __off);
23866:
23866: private:
23866:
23866:
23866:
23866:
23866: struct __xfer_bufptrs
23866: {
23866: __xfer_bufptrs(const basic_stringbuf& __from, basic_stringbuf* __to)
23866: : _M_to{__to}, _M_goff{-1, -1, -1}, _M_poff{-1, -1, -1}
23866: {
23866: const _CharT* const __str = __from._M_string.data();
23866: const _CharT* __end = nullptr;
23866: if (__from.eback())
23866: {
23866: _M_goff[0] = __from.eback() - __str;
23866: _M_goff[1] = __from.gptr() - __str;
23866: _M_goff[2] = __from.egptr() - __str;
23866: __end = __from.egptr();
23866: }
23866: if (__from.pbase())
23866: {
23866: _M_poff[0] = __from.pbase() - __str;
23866: _M_poff[1] = __from.pptr() - __from.pbase();
23866: _M_poff[2] = __from.epptr() - __str;
23866: if (__from.pptr() > __end)
23866: __end = __from.pptr();
23866: }
23866:
23866:
23866: if (__end)
23866: {
23866:
23866:
23866: auto& __mut_from = const_cast<basic_stringbuf&>(__from);
23866: __mut_from._M_string._M_length(__end - __str);
23866: }
23866: }
23866:
23866: ~__xfer_bufptrs()
23866: {
23866: char_type* __str = const_cast<char_type*>(_M_to->_M_string.data());
23866: if (_M_goff[0] != -1)
23866: _M_to->setg(__str+_M_goff[0], __str+_M_goff[1], __str+_M_goff[2]);
23866: if (_M_poff[0] != -1)
23866: _M_to->_M_pbump(__str+_M_poff[0], __str+_M_poff[2], _M_poff[1]);
23866: }
23866:
23866: basic_stringbuf* _M_to;
23866: off_type _M_goff[3];
23866: off_type _M_poff[3];
23866: };
23866: # 368 "/usr/include/c++/10/sstream" 3
23866: basic_stringbuf(basic_stringbuf&& __rhs, __xfer_bufptrs&&)
23866: : __streambuf_type(static_cast<const __streambuf_type&>(__rhs)),
23866: _M_mode(__rhs._M_mode), _M_string(std::move(__rhs._M_string))
23866: { }
23866:
23866: };
23866: # 391 "/usr/include/c++/10/sstream" 3
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: class basic_istringstream : public basic_istream<_CharT, _Traits>
23866: {
23866: public:
23866:
23866: typedef _CharT char_type;
23866: typedef _Traits traits_type;
23866:
23866:
23866: typedef _Alloc allocator_type;
23866: typedef typename traits_type::int_type int_type;
23866: typedef typename traits_type::pos_type pos_type;
23866: typedef typename traits_type::off_type off_type;
23866:
23866:
23866: typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
23866: typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type;
23866: typedef basic_istream<char_type, traits_type> __istream_type;
23866:
23866: private:
23866: __stringbuf_type _M_stringbuf;
23866:
23866: public:
23866: # 425 "/usr/include/c++/10/sstream" 3
23866: basic_istringstream()
23866: : __istream_type(), _M_stringbuf(ios_base::in)
23866: { this->init(&_M_stringbuf); }
23866: # 441 "/usr/include/c++/10/sstream" 3
23866: explicit
23866: basic_istringstream(ios_base::openmode __mode)
23866: : __istream_type(), _M_stringbuf(__mode | ios_base::in)
23866: { this->init(&_M_stringbuf); }
23866: # 459 "/usr/include/c++/10/sstream" 3
23866: explicit
23866: basic_istringstream(const __string_type& __str,
23866: ios_base::openmode __mode = ios_base::in)
23866: : __istream_type(), _M_stringbuf(__str, __mode | ios_base::in)
23866: { this->init(&_M_stringbuf); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: ~basic_istringstream()
23866: { }
23866:
23866:
23866: basic_istringstream(const basic_istringstream&) = delete;
23866:
23866: basic_istringstream(basic_istringstream&& __rhs)
23866: : __istream_type(std::move(__rhs)),
23866: _M_stringbuf(std::move(__rhs._M_stringbuf))
23866: { __istream_type::set_rdbuf(&_M_stringbuf); }
23866:
23866:
23866:
23866: basic_istringstream&
23866: operator=(const basic_istringstream&) = delete;
23866:
23866: basic_istringstream&
23866: operator=(basic_istringstream&& __rhs)
23866: {
23866: __istream_type::operator=(std::move(__rhs));
23866: _M_stringbuf = std::move(__rhs._M_stringbuf);
23866: return *this;
23866: }
23866:
23866: void
23866: swap(basic_istringstream& __rhs)
23866: {
23866: __istream_type::swap(__rhs);
23866: _M_stringbuf.swap(__rhs._M_stringbuf);
23866: }
23866: # 510 "/usr/include/c++/10/sstream" 3
23866: __stringbuf_type*
23866: rdbuf() const
23866: { return const_cast<__stringbuf_type*>(&_M_stringbuf); }
23866:
23866:
23866:
23866:
23866:
23866: __string_type
23866: str() const
23866: { return _M_stringbuf.str(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: void
23866: str(const __string_type& __s)
23866: { _M_stringbuf.str(__s); }
23866: };
23866: # 549 "/usr/include/c++/10/sstream" 3
23866: template <typename _CharT, typename _Traits, typename _Alloc>
23866: class basic_ostringstream : public basic_ostream<_CharT, _Traits>
23866: {
23866: public:
23866:
23866: typedef _CharT char_type;
23866: typedef _Traits traits_type;
23866:
23866:
23866: typedef _Alloc allocator_type;
23866: typedef typename traits_type::int_type int_type;
23866: typedef typename traits_type::pos_type pos_type;
23866: typedef typename traits_type::off_type off_type;
23866:
23866:
23866: typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
23866: typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type;
23866: typedef basic_ostream<char_type, traits_type> __ostream_type;
23866:
23866: private:
23866: __stringbuf_type _M_stringbuf;
23866:
23866: public:
23866: # 583 "/usr/include/c++/10/sstream" 3
23866: basic_ostringstream()
23866: : __ostream_type(), _M_stringbuf(ios_base::out)
23866: { this->init(&_M_stringbuf); }
23866: # 599 "/usr/include/c++/10/sstream" 3
23866: explicit
23866: basic_ostringstream(ios_base::openmode __mode)
23866: : __ostream_type(), _M_stringbuf(__mode | ios_base::out)
23866: { this->init(&_M_stringbuf); }
23866: # 617 "/usr/include/c++/10/sstream" 3
23866: explicit
23866: basic_ostringstream(const __string_type& __str,
23866: ios_base::openmode __mode = ios_base::out)
23866: : __ostream_type(), _M_stringbuf(__str, __mode | ios_base::out)
23866: { this->init(&_M_stringbuf); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: ~basic_ostringstream()
23866: { }
23866:
23866:
23866: basic_ostringstream(const basic_ostringstream&) = delete;
23866:
23866: basic_ostringstream(basic_ostringstream&& __rhs)
23866: : __ostream_type(std::move(__rhs)),
23866: _M_stringbuf(std::move(__rhs._M_stringbuf))
23866: { __ostream_type::set_rdbuf(&_M_stringbuf); }
23866:
23866:
23866:
23866: basic_ostringstream&
23866: operator=(const basic_ostringstream&) = delete;
23866:
23866: basic_ostringstream&
23866: operator=(basic_ostringstream&& __rhs)
23866: {
23866: __ostream_type::operator=(std::move(__rhs));
23866: _M_stringbuf = std::move(__rhs._M_stringbuf);
23866: return *this;
23866: }
23866:
23866: void
23866: swap(basic_ostringstream& __rhs)
23866: {
23866: __ostream_type::swap(__rhs);
23866: _M_stringbuf.swap(__rhs._M_stringbuf);
23866: }
23866: # 668 "/usr/include/c++/10/sstream" 3
23866: __stringbuf_type*
23866: rdbuf() const
23866: { return const_cast<__stringbuf_type*>(&_M_stringbuf); }
23866:
23866:
23866:
23866:
23866:
23866: __string_type
23866: str() const
23866: { return _M_stringbuf.str(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: void
23866: str(const __string_type& __s)
23866: { _M_stringbuf.str(__s); }
23866: };
23866: # 707 "/usr/include/c++/10/sstream" 3
23866: template <typename _CharT, typename _Traits, typename _Alloc>
23866: class basic_stringstream : public basic_iostream<_CharT, _Traits>
23866: {
23866: public:
23866:
23866: typedef _CharT char_type;
23866: typedef _Traits traits_type;
23866:
23866:
23866: typedef _Alloc allocator_type;
23866: typedef typename traits_type::int_type int_type;
23866: typedef typename traits_type::pos_type pos_type;
23866: typedef typename traits_type::off_type off_type;
23866:
23866:
23866: typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
23866: typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type;
23866: typedef basic_iostream<char_type, traits_type> __iostream_type;
23866:
23866: private:
23866: __stringbuf_type _M_stringbuf;
23866:
23866: public:
23866: # 741 "/usr/include/c++/10/sstream" 3
23866: basic_stringstream()
23866: : __iostream_type(), _M_stringbuf(ios_base::out | ios_base::in)
23866: { this->init(&_M_stringbuf); }
23866: # 755 "/usr/include/c++/10/sstream" 3
23866: explicit
23866: basic_stringstream(ios_base::openmode __m)
23866: : __iostream_type(), _M_stringbuf(__m)
23866: { this->init(&_M_stringbuf); }
23866: # 771 "/usr/include/c++/10/sstream" 3
23866: explicit
23866: basic_stringstream(const __string_type& __str,
23866: ios_base::openmode __m = ios_base::out | ios_base::in)
23866: : __iostream_type(), _M_stringbuf(__str, __m)
23866: { this->init(&_M_stringbuf); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: ~basic_stringstream()
23866: { }
23866:
23866:
23866: basic_stringstream(const basic_stringstream&) = delete;
23866:
23866: basic_stringstream(basic_stringstream&& __rhs)
23866: : __iostream_type(std::move(__rhs)),
23866: _M_stringbuf(std::move(__rhs._M_stringbuf))
23866: { __iostream_type::set_rdbuf(&_M_stringbuf); }
23866:
23866:
23866:
23866: basic_stringstream&
23866: operator=(const basic_stringstream&) = delete;
23866:
23866: basic_stringstream&
23866: operator=(basic_stringstream&& __rhs)
23866: {
23866: __iostream_type::operator=(std::move(__rhs));
23866: _M_stringbuf = std::move(__rhs._M_stringbuf);
23866: return *this;
23866: }
23866:
23866: void
23866: swap(basic_stringstream& __rhs)
23866: {
23866: __iostream_type::swap(__rhs);
23866: _M_stringbuf.swap(__rhs._M_stringbuf);
23866: }
23866: # 822 "/usr/include/c++/10/sstream" 3
23866: __stringbuf_type*
23866: rdbuf() const
23866: { return const_cast<__stringbuf_type*>(&_M_stringbuf); }
23866:
23866:
23866:
23866:
23866:
23866: __string_type
23866: str() const
23866: { return _M_stringbuf.str(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: void
23866: str(const __string_type& __s)
23866: { _M_stringbuf.str(__s); }
23866: };
23866:
23866:
23866:
23866: template <class _CharT, class _Traits, class _Allocator>
23866: inline void
23866: swap(basic_stringbuf<_CharT, _Traits, _Allocator>& __x,
23866: basic_stringbuf<_CharT, _Traits, _Allocator>& __y)
23866: { __x.swap(__y); }
23866:
23866:
23866: template <class _CharT, class _Traits, class _Allocator>
23866: inline void
23866: swap(basic_istringstream<_CharT, _Traits, _Allocator>& __x,
23866: basic_istringstream<_CharT, _Traits, _Allocator>& __y)
23866: { __x.swap(__y); }
23866:
23866:
23866: template <class _CharT, class _Traits, class _Allocator>
23866: inline void
23866: swap(basic_ostringstream<_CharT, _Traits, _Allocator>& __x,
23866: basic_ostringstream<_CharT, _Traits, _Allocator>& __y)
23866: { __x.swap(__y); }
23866:
23866:
23866: template <class _CharT, class _Traits, class _Allocator>
23866: inline void
23866: swap(basic_stringstream<_CharT, _Traits, _Allocator>& __x,
23866: basic_stringstream<_CharT, _Traits, _Allocator>& __y)
23866: { __x.swap(__y); }
23866:
23866:
23866: }
23866:
23866: }
23866:
23866: # 1 "/usr/include/c++/10/bits/sstream.tcc" 1 3
23866: # 35 "/usr/include/c++/10/bits/sstream.tcc" 3
23866: #define _SSTREAM_TCC 1
23866:
23866:
23866: # 38 "/usr/include/c++/10/bits/sstream.tcc" 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: template <class _CharT, class _Traits, class _Alloc>
23866: typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type
23866: basic_stringbuf<_CharT, _Traits, _Alloc>::
23866: pbackfail(int_type __c)
23866: {
23866: int_type __ret = traits_type::eof();
23866: if (this->eback() < this->gptr())
23866: {
23866:
23866:
23866: const bool __testeof = traits_type::eq_int_type(__c, __ret);
23866: if (!__testeof)
23866: {
23866: const bool __testeq = traits_type::eq(traits_type::
23866: to_char_type(__c),
23866: this->gptr()[-1]);
23866: const bool __testout = this->_M_mode & ios_base::out;
23866: if (__testeq || __testout)
23866: {
23866: this->gbump(-1);
23866: if (!__testeq)
23866: *this->gptr() = traits_type::to_char_type(__c);
23866: __ret = __c;
23866: }
23866: }
23866: else
23866: {
23866: this->gbump(-1);
23866: __ret = traits_type::not_eof(__c);
23866: }
23866: }
23866: return __ret;
23866: }
23866:
23866: template <class _CharT, class _Traits, class _Alloc>
23866: typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type
23866: basic_stringbuf<_CharT, _Traits, _Alloc>::
23866: overflow(int_type __c)
23866: {
23866: const bool __testout = this->_M_mode & ios_base::out;
23866: if (__builtin_expect(!__testout, false))
23866: return traits_type::eof();
23866:
23866: const bool __testeof = traits_type::eq_int_type(__c, traits_type::eof());
23866: if (__builtin_expect(__testeof, false))
23866: return traits_type::not_eof(__c);
23866:
23866: const __size_type __capacity = _M_string.capacity();
23866:
23866:
23866: if ((this->epptr() - this->pbase()) < __capacity)
23866: {
23866:
23866: char_type* __base = const_cast<char_type*>(_M_string.data());
23866: _M_pbump(__base, __base + __capacity, this->pptr() - this->pbase());
23866: if (_M_mode & ios_base::in)
23866: {
23866: const __size_type __nget = this->gptr() - this->eback();
23866: const __size_type __eget = this->egptr() - this->eback();
23866: this->setg(__base, __base + __nget, __base + __eget + 1);
23866: }
23866: *this->pptr() = traits_type::to_char_type(__c);
23866: this->pbump(1);
23866: return __c;
23866: }
23866:
23866:
23866: const __size_type __max_size = _M_string.max_size();
23866: const bool __testput = this->pptr() < this->epptr();
23866: if (__builtin_expect(!__testput && __capacity == __max_size, false))
23866: return traits_type::eof();
23866:
23866:
23866:
23866: const char_type __conv = traits_type::to_char_type(__c);
23866: if (!__testput)
23866: {
23866: # 129 "/usr/include/c++/10/bits/sstream.tcc" 3
23866: const __size_type __opt_len = std::max(__size_type(2 * __capacity),
23866: __size_type(512));
23866: const __size_type __len = std::min(__opt_len, __max_size);
23866: __string_type __tmp(_M_string.get_allocator());
23866: __tmp.reserve(__len);
23866: if (this->pbase())
23866: __tmp.assign(this->pbase(), this->epptr() - this->pbase());
23866: __tmp.push_back(__conv);
23866: _M_string.swap(__tmp);
23866: _M_sync(const_cast<char_type*>(_M_string.data()),
23866: this->gptr() - this->eback(), this->pptr() - this->pbase());
23866: }
23866: else
23866: *this->pptr() = __conv;
23866: this->pbump(1);
23866: return __c;
23866: }
23866:
23866: template <class _CharT, class _Traits, class _Alloc>
23866: typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type
23866: basic_stringbuf<_CharT, _Traits, _Alloc>::
23866: underflow()
23866: {
23866: int_type __ret = traits_type::eof();
23866: const bool __testin = this->_M_mode & ios_base::in;
23866: if (__testin)
23866: {
23866:
23866: _M_update_egptr();
23866:
23866: if (this->gptr() < this->egptr())
23866: __ret = traits_type::to_int_type(*this->gptr());
23866: }
23866: return __ret;
23866: }
23866:
23866: template <class _CharT, class _Traits, class _Alloc>
23866: typename basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type
23866: basic_stringbuf<_CharT, _Traits, _Alloc>::
23866: seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode __mode)
23866: {
23866: pos_type __ret = pos_type(off_type(-1));
23866: bool __testin = (ios_base::in & this->_M_mode & __mode) != 0;
23866: bool __testout = (ios_base::out & this->_M_mode & __mode) != 0;
23866: const bool __testboth = __testin && __testout && __way != ios_base::cur;
23866: __testin &= !(__mode & ios_base::out);
23866: __testout &= !(__mode & ios_base::in);
23866:
23866:
23866:
23866: const char_type* __beg = __testin ? this->eback() : this->pbase();
23866: if ((__beg || !__off) && (__testin || __testout || __testboth))
23866: {
23866: _M_update_egptr();
23866:
23866: off_type __newoffi = __off;
23866: off_type __newoffo = __newoffi;
23866: if (__way == ios_base::cur)
23866: {
23866: __newoffi += this->gptr() - __beg;
23866: __newoffo += this->pptr() - __beg;
23866: }
23866: else if (__way == ios_base::end)
23866: __newoffo = __newoffi += this->egptr() - __beg;
23866:
23866: if ((__testin || __testboth)
23866: && __newoffi >= 0
23866: && this->egptr() - __beg >= __newoffi)
23866: {
23866: this->setg(this->eback(), this->eback() + __newoffi,
23866: this->egptr());
23866: __ret = pos_type(__newoffi);
23866: }
23866: if ((__testout || __testboth)
23866: && __newoffo >= 0
23866: && this->egptr() - __beg >= __newoffo)
23866: {
23866: _M_pbump(this->pbase(), this->epptr(), __newoffo);
23866: __ret = pos_type(__newoffo);
23866: }
23866: }
23866: return __ret;
23866: }
23866:
23866: template <class _CharT, class _Traits, class _Alloc>
23866: typename basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type
23866: basic_stringbuf<_CharT, _Traits, _Alloc>::
23866: seekpos(pos_type __sp, ios_base::openmode __mode)
23866: {
23866: pos_type __ret = pos_type(off_type(-1));
23866: const bool __testin = (ios_base::in & this->_M_mode & __mode) != 0;
23866: const bool __testout = (ios_base::out & this->_M_mode & __mode) != 0;
23866:
23866: const char_type* __beg = __testin ? this->eback() : this->pbase();
23866: if ((__beg || !off_type(__sp)) && (__testin || __testout))
23866: {
23866: _M_update_egptr();
23866:
23866: const off_type __pos(__sp);
23866: const bool __testpos = (0 <= __pos
23866: && __pos <= this->egptr() - __beg);
23866: if (__testpos)
23866: {
23866: if (__testin)
23866: this->setg(this->eback(), this->eback() + __pos,
23866: this->egptr());
23866: if (__testout)
23866: _M_pbump(this->pbase(), this->epptr(), __pos);
23866: __ret = __sp;
23866: }
23866: }
23866: return __ret;
23866: }
23866:
23866: template <class _CharT, class _Traits, class _Alloc>
23866: void
23866: basic_stringbuf<_CharT, _Traits, _Alloc>::
23866: _M_sync(char_type* __base, __size_type __i, __size_type __o)
23866: {
23866: const bool __testin = _M_mode & ios_base::in;
23866: const bool __testout = _M_mode & ios_base::out;
23866: char_type* __endg = __base + _M_string.size();
23866: char_type* __endp = __base + _M_string.capacity();
23866:
23866: if (__base != _M_string.data())
23866: {
23866:
23866: __endg += __i;
23866: __i = 0;
23866: __endp = __endg;
23866: }
23866:
23866: if (__testin)
23866: this->setg(__base, __base + __i, __endg);
23866: if (__testout)
23866: {
23866: _M_pbump(__base, __endp, __o);
23866:
23866:
23866:
23866: if (!__testin)
23866: this->setg(__endg, __endg, __endg);
23866: }
23866: }
23866:
23866: template <class _CharT, class _Traits, class _Alloc>
23866: void
23866: basic_stringbuf<_CharT, _Traits, _Alloc>::
23866: _M_pbump(char_type* __pbeg, char_type* __pend, off_type __off)
23866: {
23866: this->setp(__pbeg, __pend);
23866: while (__off > __gnu_cxx::__numeric_traits<int>::__max)
23866: {
23866: this->pbump(__gnu_cxx::__numeric_traits<int>::__max);
23866: __off -= __gnu_cxx::__numeric_traits<int>::__max;
23866: }
23866: this->pbump(__off);
23866: }
23866:
23866:
23866:
23866:
23866: extern template class basic_stringbuf<char>;
23866: extern template class basic_istringstream<char>;
23866: extern template class basic_ostringstream<char>;
23866: extern template class basic_stringstream<char>;
23866:
23866:
23866: extern template class basic_stringbuf<wchar_t>;
23866: extern template class basic_istringstream<wchar_t>;
23866: extern template class basic_ostringstream<wchar_t>;
23866: extern template class basic_stringstream<wchar_t>;
23866:
23866:
23866:
23866:
23866: }
23866: # 880 "/usr/include/c++/10/sstream" 2 3
23866: # 39 "/usr/include/c++/10/bits/quoted_string.h" 2 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: namespace __detail {
23866:
23866:
23866:
23866: template<typename _String, typename _CharT>
23866: struct _Quoted_string
23866: {
23866: static_assert(is_reference<_String>::value
23866: || is_pointer<_String>::value,
23866: "String type must be pointer or reference");
23866:
23866: _Quoted_string(_String __str, _CharT __del, _CharT __esc)
23866: : _M_string(__str), _M_delim{__del}, _M_escape{__esc}
23866: { }
23866:
23866: _Quoted_string&
23866: operator=(_Quoted_string&) = delete;
23866:
23866: _String _M_string;
23866: _CharT _M_delim;
23866: _CharT _M_escape;
23866: };
23866:
23866:
23866: template<typename _CharT, typename _Traits>
23866: struct _Quoted_string<basic_string_view<_CharT, _Traits>, _CharT>
23866: {
23866: _Quoted_string(basic_string_view<_CharT, _Traits> __str,
23866: _CharT __del, _CharT __esc)
23866: : _M_string(__str), _M_delim{__del}, _M_escape{__esc}
23866: { }
23866:
23866: _Quoted_string&
23866: operator=(_Quoted_string&) = delete;
23866:
23866: basic_string_view<_CharT, _Traits> _M_string;
23866: _CharT _M_delim;
23866: _CharT _M_escape;
23866: };
23866: # 91 "/usr/include/c++/10/bits/quoted_string.h" 3
23866: template<typename _CharT, typename _Traits>
23866: std::basic_ostream<_CharT, _Traits>&
23866: operator<<(std::basic_ostream<_CharT, _Traits>& __os,
23866: const _Quoted_string<const _CharT*, _CharT>& __str)
23866: {
23866: std::basic_ostringstream<_CharT, _Traits> __ostr;
23866: __ostr << __str._M_delim;
23866: for (const _CharT* __c = __str._M_string; *__c; ++__c)
23866: {
23866: if (*__c == __str._M_delim || *__c == __str._M_escape)
23866: __ostr << __str._M_escape;
23866: __ostr << *__c;
23866: }
23866: __ostr << __str._M_delim;
23866:
23866: return __os << __ostr.str();
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _String>
23866: std::basic_ostream<_CharT, _Traits>&
23866: operator<<(std::basic_ostream<_CharT, _Traits>& __os,
23866: const _Quoted_string<_String, _CharT>& __str)
23866: {
23866: std::basic_ostringstream<_CharT, _Traits> __ostr;
23866: __ostr << __str._M_delim;
23866: for (auto __c : __str._M_string)
23866: {
23866: if (__c == __str._M_delim || __c == __str._M_escape)
23866: __ostr << __str._M_escape;
23866: __ostr << __c;
23866: }
23866: __ostr << __str._M_delim;
23866:
23866: return __os << __ostr.str();
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: std::basic_istream<_CharT, _Traits>&
23866: operator>>(std::basic_istream<_CharT, _Traits>& __is,
23866: const _Quoted_string<basic_string<_CharT, _Traits, _Alloc>&,
23866: _CharT>& __str)
23866: {
23866: _CharT __c;
23866: __is >> __c;
23866: if (!__is.good())
23866: return __is;
23866: if (__c != __str._M_delim)
23866: {
23866: __is.unget();
23866: __is >> __str._M_string;
23866: return __is;
23866: }
23866: __str._M_string.clear();
23866: std::ios_base::fmtflags __flags
23866: = __is.flags(__is.flags() & ~std::ios_base::skipws);
23866: do
23866: {
23866: __is >> __c;
23866: if (!__is.good())
23866: break;
23866: if (__c == __str._M_escape)
23866: {
23866: __is >> __c;
23866: if (!__is.good())
23866: break;
23866: }
23866: else if (__c == __str._M_delim)
23866: break;
23866: __str._M_string += __c;
23866: }
23866: while (true);
23866: __is.setf(__flags);
23866:
23866: return __is;
23866: }
23866: }
23866:
23866:
23866: }
23866: # 46 "/usr/include/c++/10/iomanip" 2 3
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866:
23866: struct _Resetiosflags { ios_base::fmtflags _M_mask; };
23866: # 65 "/usr/include/c++/10/iomanip" 3
23866: inline _Resetiosflags
23866: resetiosflags(ios_base::fmtflags __mask)
23866: { return { __mask }; }
23866:
23866: template<typename _CharT, typename _Traits>
23866: inline basic_istream<_CharT, _Traits>&
23866: operator>>(basic_istream<_CharT, _Traits>& __is, _Resetiosflags __f)
23866: {
23866: __is.setf(ios_base::fmtflags(0), __f._M_mask);
23866: return __is;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: inline basic_ostream<_CharT, _Traits>&
23866: operator<<(basic_ostream<_CharT, _Traits>& __os, _Resetiosflags __f)
23866: {
23866: __os.setf(ios_base::fmtflags(0), __f._M_mask);
23866: return __os;
23866: }
23866:
23866:
23866: struct _Setiosflags { ios_base::fmtflags _M_mask; };
23866: # 95 "/usr/include/c++/10/iomanip" 3
23866: inline _Setiosflags
23866: setiosflags(ios_base::fmtflags __mask)
23866: { return { __mask }; }
23866:
23866: template<typename _CharT, typename _Traits>
23866: inline basic_istream<_CharT, _Traits>&
23866: operator>>(basic_istream<_CharT, _Traits>& __is, _Setiosflags __f)
23866: {
23866: __is.setf(__f._M_mask);
23866: return __is;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: inline basic_ostream<_CharT, _Traits>&
23866: operator<<(basic_ostream<_CharT, _Traits>& __os, _Setiosflags __f)
23866: {
23866: __os.setf(__f._M_mask);
23866: return __os;
23866: }
23866:
23866:
23866: struct _Setbase { int _M_base; };
23866: # 126 "/usr/include/c++/10/iomanip" 3
23866: inline _Setbase
23866: setbase(int __base)
23866: { return { __base }; }
23866:
23866: template<typename _CharT, typename _Traits>
23866: inline basic_istream<_CharT, _Traits>&
23866: operator>>(basic_istream<_CharT, _Traits>& __is, _Setbase __f)
23866: {
23866: __is.setf(__f._M_base == 8 ? ios_base::oct :
23866: __f._M_base == 10 ? ios_base::dec :
23866: __f._M_base == 16 ? ios_base::hex :
23866: ios_base::fmtflags(0), ios_base::basefield);
23866: return __is;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: inline basic_ostream<_CharT, _Traits>&
23866: operator<<(basic_ostream<_CharT, _Traits>& __os, _Setbase __f)
23866: {
23866: __os.setf(__f._M_base == 8 ? ios_base::oct :
23866: __f._M_base == 10 ? ios_base::dec :
23866: __f._M_base == 16 ? ios_base::hex :
23866: ios_base::fmtflags(0), ios_base::basefield);
23866: return __os;
23866: }
23866:
23866:
23866: template<typename _CharT>
23866: struct _Setfill { _CharT _M_c; };
23866: # 163 "/usr/include/c++/10/iomanip" 3
23866: template<typename _CharT>
23866: inline _Setfill<_CharT>
23866: setfill(_CharT __c)
23866: { return { __c }; }
23866:
23866: template<typename _CharT, typename _Traits>
23866: inline basic_istream<_CharT, _Traits>&
23866: operator>>(basic_istream<_CharT, _Traits>& __is, _Setfill<_CharT> __f)
23866: {
23866: __is.fill(__f._M_c);
23866: return __is;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: inline basic_ostream<_CharT, _Traits>&
23866: operator<<(basic_ostream<_CharT, _Traits>& __os, _Setfill<_CharT> __f)
23866: {
23866: __os.fill(__f._M_c);
23866: return __os;
23866: }
23866:
23866:
23866: struct _Setprecision { int _M_n; };
23866: # 194 "/usr/include/c++/10/iomanip" 3
23866: inline _Setprecision
23866: setprecision(int __n)
23866: { return { __n }; }
23866:
23866: template<typename _CharT, typename _Traits>
23866: inline basic_istream<_CharT, _Traits>&
23866: operator>>(basic_istream<_CharT, _Traits>& __is, _Setprecision __f)
23866: {
23866: __is.precision(__f._M_n);
23866: return __is;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: inline basic_ostream<_CharT, _Traits>&
23866: operator<<(basic_ostream<_CharT, _Traits>& __os, _Setprecision __f)
23866: {
23866: __os.precision(__f._M_n);
23866: return __os;
23866: }
23866:
23866:
23866: struct _Setw { int _M_n; };
23866: # 224 "/usr/include/c++/10/iomanip" 3
23866: inline _Setw
23866: setw(int __n)
23866: { return { __n }; }
23866:
23866: template<typename _CharT, typename _Traits>
23866: inline basic_istream<_CharT, _Traits>&
23866: operator>>(basic_istream<_CharT, _Traits>& __is, _Setw __f)
23866: {
23866: __is.width(__f._M_n);
23866: return __is;
23866: }
23866:
23866: template<typename _CharT, typename _Traits>
23866: inline basic_ostream<_CharT, _Traits>&
23866: operator<<(basic_ostream<_CharT, _Traits>& __os, _Setw __f)
23866: {
23866: __os.width(__f._M_n);
23866: return __os;
23866: }
23866:
23866:
23866:
23866: template<typename _MoneyT>
23866: struct _Get_money { _MoneyT& _M_mon; bool _M_intl; };
23866: # 257 "/usr/include/c++/10/iomanip" 3
23866: template<typename _MoneyT>
23866: inline _Get_money<_MoneyT>
23866: get_money(_MoneyT& __mon, bool __intl = false)
23866: { return { __mon, __intl }; }
23866:
23866: template<typename _CharT, typename _Traits, typename _MoneyT>
23866: basic_istream<_CharT, _Traits>&
23866: operator>>(basic_istream<_CharT, _Traits>& __is, _Get_money<_MoneyT> __f)
23866: {
23866: typename basic_istream<_CharT, _Traits>::sentry __cerb(__is, false);
23866: if (__cerb)
23866: {
23866: ios_base::iostate __err = ios_base::goodbit;
23866: try
23866: {
23866: typedef istreambuf_iterator<_CharT, _Traits> _Iter;
23866: typedef money_get<_CharT, _Iter> _MoneyGet;
23866:
23866: const _MoneyGet& __mg = use_facet<_MoneyGet>(__is.getloc());
23866: __mg.get(_Iter(__is.rdbuf()), _Iter(), __f._M_intl,
23866: __is, __err, __f._M_mon);
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: __is._M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { __is._M_setstate(ios_base::badbit); }
23866: if (__err)
23866: __is.setstate(__err);
23866: }
23866: return __is;
23866: }
23866:
23866:
23866: template<typename _MoneyT>
23866: struct _Put_money { const _MoneyT& _M_mon; bool _M_intl; };
23866: # 304 "/usr/include/c++/10/iomanip" 3
23866: template<typename _MoneyT>
23866: inline _Put_money<_MoneyT>
23866: put_money(const _MoneyT& __mon, bool __intl = false)
23866: { return { __mon, __intl }; }
23866:
23866: template<typename _CharT, typename _Traits, typename _MoneyT>
23866: basic_ostream<_CharT, _Traits>&
23866: operator<<(basic_ostream<_CharT, _Traits>& __os, _Put_money<_MoneyT> __f)
23866: {
23866: typename basic_ostream<_CharT, _Traits>::sentry __cerb(__os);
23866: if (__cerb)
23866: {
23866: ios_base::iostate __err = ios_base::goodbit;
23866: try
23866: {
23866: typedef ostreambuf_iterator<_CharT, _Traits> _Iter;
23866: typedef money_put<_CharT, _Iter> _MoneyPut;
23866:
23866: const _MoneyPut& __mp = use_facet<_MoneyPut>(__os.getloc());
23866: if (__mp.put(_Iter(__os.rdbuf()), __f._M_intl, __os,
23866: __os.fill(), __f._M_mon).failed())
23866: __err |= ios_base::badbit;
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: __os._M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { __os._M_setstate(ios_base::badbit); }
23866: if (__err)
23866: __os.setstate(__err);
23866: }
23866: return __os;
23866: }
23866:
23866: template<typename _CharT>
23866: struct _Put_time
23866: {
23866: const std::tm* _M_tmb;
23866: const _CharT* _M_fmt;
23866: };
23866: # 356 "/usr/include/c++/10/iomanip" 3
23866: template<typename _CharT>
23866: inline _Put_time<_CharT>
23866: put_time(const std::tm* __tmb, const _CharT* __fmt)
23866: { return { __tmb, __fmt }; }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_ostream<_CharT, _Traits>&
23866: operator<<(basic_ostream<_CharT, _Traits>& __os, _Put_time<_CharT> __f)
23866: {
23866: typename basic_ostream<_CharT, _Traits>::sentry __cerb(__os);
23866: if (__cerb)
23866: {
23866: ios_base::iostate __err = ios_base::goodbit;
23866: try
23866: {
23866: typedef ostreambuf_iterator<_CharT, _Traits> _Iter;
23866: typedef time_put<_CharT, _Iter> _TimePut;
23866:
23866: const _CharT* const __fmt_end = __f._M_fmt +
23866: _Traits::length(__f._M_fmt);
23866:
23866: const _TimePut& __mp = use_facet<_TimePut>(__os.getloc());
23866: if (__mp.put(_Iter(__os.rdbuf()), __os, __os.fill(),
23866: __f._M_tmb, __f._M_fmt, __fmt_end).failed())
23866: __err |= ios_base::badbit;
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: __os._M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { __os._M_setstate(ios_base::badbit); }
23866: if (__err)
23866: __os.setstate(__err);
23866: }
23866: return __os;
23866: }
23866:
23866: template<typename _CharT>
23866: struct _Get_time
23866: {
23866: std::tm* _M_tmb;
23866: const _CharT* _M_fmt;
23866: };
23866: # 411 "/usr/include/c++/10/iomanip" 3
23866: template<typename _CharT>
23866: inline _Get_time<_CharT>
23866: get_time(std::tm* __tmb, const _CharT* __fmt)
23866: { return { __tmb, __fmt }; }
23866:
23866: template<typename _CharT, typename _Traits>
23866: basic_istream<_CharT, _Traits>&
23866: operator>>(basic_istream<_CharT, _Traits>& __is, _Get_time<_CharT> __f)
23866: {
23866: typename basic_istream<_CharT, _Traits>::sentry __cerb(__is, false);
23866: if (__cerb)
23866: {
23866: ios_base::iostate __err = ios_base::goodbit;
23866: try
23866: {
23866: typedef istreambuf_iterator<_CharT, _Traits> _Iter;
23866: typedef time_get<_CharT, _Iter> _TimeGet;
23866:
23866: const _CharT* const __fmt_end = __f._M_fmt +
23866: _Traits::length(__f._M_fmt);
23866:
23866: const _TimeGet& __mg = use_facet<_TimeGet>(__is.getloc());
23866: __mg.get(_Iter(__is.rdbuf()), _Iter(), __is,
23866: __err, __f._M_tmb, __f._M_fmt, __fmt_end);
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: __is._M_setstate(ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { __is._M_setstate(ios_base::badbit); }
23866: if (__err)
23866: __is.setstate(__err);
23866: }
23866: return __is;
23866: }
23866:
23866:
23866:
23866: #define __cpp_lib_quoted_string_io 201304
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _CharT>
23866: inline auto
23866: quoted(const _CharT* __string,
23866: _CharT __delim = _CharT('"'), _CharT __escape = _CharT('\\'))
23866: {
23866: return __detail::_Quoted_string<const _CharT*, _CharT>(__string, __delim,
23866: __escape);
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline auto
23866: quoted(const basic_string<_CharT, _Traits, _Alloc>& __string,
23866: _CharT __delim = _CharT('"'), _CharT __escape = _CharT('\\'))
23866: {
23866: return __detail::_Quoted_string<
23866: const basic_string<_CharT, _Traits, _Alloc>&, _CharT>(
23866: __string, __delim, __escape);
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline auto
23866: quoted(basic_string<_CharT, _Traits, _Alloc>& __string,
23866: _CharT __delim = _CharT('"'), _CharT __escape = _CharT('\\'))
23866: {
23866: return __detail::_Quoted_string<
23866: basic_string<_CharT, _Traits, _Alloc>&, _CharT>(
23866: __string, __delim, __escape);
23866: }
23866:
23866:
23866:
23866:
23866: template<typename _CharT, typename _Traits>
23866: inline auto
23866: quoted(basic_string_view<_CharT, _Traits> __sv,
23866: _CharT __delim = _CharT('"'), _CharT __escape = _CharT('\\'))
23866: {
23866: return __detail::_Quoted_string<
23866: basic_string_view<_CharT, _Traits>, _CharT>(__sv, __delim, __escape);
23866: }
23866: # 508 "/usr/include/c++/10/iomanip" 3
23866: extern template ostream& operator<<(ostream&, _Setfill<char>);
23866: extern template ostream& operator<<(ostream&, _Setiosflags);
23866: extern template ostream& operator<<(ostream&, _Resetiosflags);
23866: extern template ostream& operator<<(ostream&, _Setbase);
23866: extern template ostream& operator<<(ostream&, _Setprecision);
23866: extern template ostream& operator<<(ostream&, _Setw);
23866: extern template istream& operator>>(istream&, _Setfill<char>);
23866: extern template istream& operator>>(istream&, _Setiosflags);
23866: extern template istream& operator>>(istream&, _Resetiosflags);
23866: extern template istream& operator>>(istream&, _Setbase);
23866: extern template istream& operator>>(istream&, _Setprecision);
23866: extern template istream& operator>>(istream&, _Setw);
23866:
23866:
23866: extern template wostream& operator<<(wostream&, _Setfill<wchar_t>);
23866: extern template wostream& operator<<(wostream&, _Setiosflags);
23866: extern template wostream& operator<<(wostream&, _Resetiosflags);
23866: extern template wostream& operator<<(wostream&, _Setbase);
23866: extern template wostream& operator<<(wostream&, _Setprecision);
23866: extern template wostream& operator<<(wostream&, _Setw);
23866: extern template wistream& operator>>(wistream&, _Setfill<wchar_t>);
23866: extern template wistream& operator>>(wistream&, _Setiosflags);
23866: extern template wistream& operator>>(wistream&, _Resetiosflags);
23866: extern template wistream& operator>>(wistream&, _Setbase);
23866: extern template wistream& operator>>(wistream&, _Setprecision);
23866: extern template wistream& operator>>(wistream&, _Setw);
23866:
23866:
23866:
23866:
23866: }
23866: # 40 "/usr/include/c++/10/bits/fs_path.h" 2 3
23866: # 1 "/usr/include/c++/10/codecvt" 1 3
23866: # 32 "/usr/include/c++/10/codecvt" 3
23866: #define _GLIBCXX_CODECVT 1
23866:
23866:
23866: # 35 "/usr/include/c++/10/codecvt" 3
23866: # 43 "/usr/include/c++/10/codecvt" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: enum codecvt_mode
23866: {
23866: consume_header = 4,
23866: generate_header = 2,
23866: little_endian = 1
23866: };
23866:
23866: template<typename _Elem, unsigned long _Maxcode = 0x10ffff,
23866: codecvt_mode _Mode = (codecvt_mode)0>
23866: class codecvt_utf8 : public codecvt<_Elem, char, mbstate_t>
23866: {
23866: public:
23866: explicit
23866: codecvt_utf8(size_t __refs = 0);
23866:
23866: ~codecvt_utf8();
23866: };
23866:
23866: template<typename _Elem, unsigned long _Maxcode = 0x10ffff,
23866: codecvt_mode _Mode = (codecvt_mode)0>
23866: class codecvt_utf16 : public codecvt<_Elem, char, mbstate_t>
23866: {
23866: public:
23866: explicit
23866: codecvt_utf16(size_t __refs = 0);
23866:
23866: ~codecvt_utf16();
23866: };
23866:
23866: template<typename _Elem, unsigned long _Maxcode = 0x10ffff,
23866: codecvt_mode _Mode = (codecvt_mode)0>
23866: class codecvt_utf8_utf16 : public codecvt<_Elem, char, mbstate_t>
23866: {
23866: public:
23866: explicit
23866: codecvt_utf8_utf16(size_t __refs = 0);
23866:
23866: ~codecvt_utf8_utf16();
23866: };
23866:
23866: #define _GLIBCXX_CODECVT_SPECIALIZATION2(_NAME,_ELEM) template<> class _NAME<_ELEM> : public codecvt<_ELEM, char, mbstate_t> { public: typedef _ELEM intern_type; typedef char extern_type; typedef mbstate_t state_type; protected: _NAME(unsigned long __maxcode, codecvt_mode __mode, size_t __refs) : codecvt(__refs), _M_maxcode(__maxcode), _M_mode(__mode) { } virtual ~_NAME(); virtual result do_out(state_type& __state, const intern_type* __from, const intern_type* __from_end, const intern_type*& __from_next, extern_type* __to, extern_type* __to_end, extern_type*& __to_next) const; virtual result do_unshift(state_type& __state, extern_type* __to, extern_type* __to_end, extern_type*& __to_next) const; virtual result do_in(state_type& __state, const extern_type* __from, const extern_type* __from_end, const extern_type*& __from_next, intern_type* __to, intern_type* __to_end, intern_type*& __to_next) const; virtual int do_encoding() const throw(); virtual bool do_always_noconv() const throw(); virtual int do_length(state_type&, const extern_type* __from, const extern_type* __end, size_t __max) const; virtual int do_max_length() const throw(); private: unsigned long _M_maxcode; codecvt_mode _M_mode; }
23866: # 140 "/usr/include/c++/10/codecvt" 3
23866: #define _GLIBCXX_CODECVT_SPECIALIZATION(_NAME,_ELEM) _GLIBCXX_CODECVT_SPECIALIZATION2(__ ## _NAME ## _base, _ELEM); template<unsigned long _Maxcode, codecvt_mode _Mode> class _NAME<_ELEM, _Maxcode, _Mode> : public __ ## _NAME ## _base<_ELEM> { public: explicit _NAME(size_t __refs = 0) : __ ## _NAME ## _base<_ELEM>(std::min(_Maxcode, 0x10fffful), _Mode, __refs) { } }
23866: # 154 "/usr/include/c++/10/codecvt" 3
23866: template<typename _Elem> class __codecvt_utf8_base;
23866: template<typename _Elem> class __codecvt_utf16_base;
23866: template<typename _Elem> class __codecvt_utf8_utf16_base;
23866:
23866: template<> class __codecvt_utf8_base<char16_t> : public codecvt<char16_t, char, mbstate_t> { public: typedef char16_t intern_type; typedef char extern_type; typedef mbstate_t state_type; protected: __codecvt_utf8_base(unsigned long __maxcode, codecvt_mode __mode, size_t __refs) : codecvt(__refs), _M_maxcode(__maxcode), _M_mode(__mode) { } virtual ~__codecvt_utf8_base(); virtual result do_out(state_type& __state, const intern_type* __from, const intern_type* __from_end, const intern_type*& __from_next, extern_type* __to, extern_type* __to_end, extern_type*& __to_next) const; virtual result do_unshift(state_type& __state, extern_type* __to, extern_type* __to_end, extern_type*& __to_next) const; virtual result do_in(state_type& __state, const extern_type* __from, const extern_type* __from_end, const extern_type*& __from_next, intern_type* __to, intern_type* __to_end, intern_type*& __to_next) const; virtual int do_encoding() const throw(); virtual bool do_always_noconv() const throw(); virtual int do_length(state_type&, const extern_type* __from, const extern_type* __end, size_t __max) const; virtual int do_max_length() const throw(); private: unsigned long _M_maxcode; codecvt_mode _M_mode; }; template<unsigned long _Maxcode, codecvt_mode _Mode> class codecvt_utf8<char16_t, _Maxcode, _Mode> : public __codecvt_utf8_base<char16_t> { public: explicit codecvt_utf8(size_t __refs = 0) : __codecvt_utf8_base<char16_t>(std::min(_Maxcode, 0x10fffful), _Mode, __refs) { } };
23866: template<> class __codecvt_utf16_base<char16_t> : public codecvt<char16_t, char, mbstate_t> { public: typedef char16_t intern_type; typedef char extern_type; typedef mbstate_t state_type; protected: __codecvt_utf16_base(unsigned long __maxcode, codecvt_mode __mode, size_t __refs) : codecvt(__refs), _M_maxcode(__maxcode), _M_mode(__mode) { } virtual ~__codecvt_utf16_base(); virtual result do_out(state_type& __state, const intern_type* __from, const intern_type* __from_end, const intern_type*& __from_next, extern_type* __to, extern_type* __to_end, extern_type*& __to_next) const; virtual result do_unshift(state_type& __state, extern_type* __to, extern_type* __to_end, extern_type*& __to_next) const; virtual result do_in(state_type& __state, const extern_type* __from, const extern_type* __from_end, const extern_type*& __from_next, intern_type* __to, intern_type* __to_end, intern_type*& __to_next) const; virtual int do_encoding() const throw(); virtual bool do_always_noconv() const throw(); virtual int do_length(state_type&, const extern_type* __from, const extern_type* __end, size_t __max) const; virtual int do_max_length() const throw(); private: unsigned long _M_maxcode; codecvt_mode _M_mode; }; template<unsigned long _Maxcode, codecvt_mode _Mode> class codecvt_utf16<char16_t, _Maxcode, _Mode> : public __codecvt_utf16_base<char16_t> { public: explicit codecvt_utf16(size_t __refs = 0) : __codecvt_utf16_base<char16_t>(std::min(_Maxcode, 0x10fffful), _Mode, __refs) { } };
23866: template<> class __codecvt_utf8_utf16_base<char16_t> : public codecvt<char16_t, char, mbstate_t> { public: typedef char16_t intern_type; typedef char extern_type; typedef mbstate_t state_type; protected: __codecvt_utf8_utf16_base(unsigned long __maxcode, codecvt_mode __mode, size_t __refs) : codecvt(__refs), _M_maxcode(__maxcode), _M_mode(__mode) { } virtual ~__codecvt_utf8_utf16_base(); virtual result do_out(state_type& __state, const intern_type* __from, const intern_type* __from_end, const intern_type*& __from_next, extern_type* __to, extern_type* __to_end, extern_type*& __to_next) const; virtual result do_unshift(state_type& __state, extern_type* __to, extern_type* __to_end, extern_type*& __to_next) const; virtual result do_in(state_type& __state, const extern_type* __from, const extern_type* __from_end, const extern_type*& __from_next, intern_type* __to, intern_type* __to_end, intern_type*& __to_next) const; virtual int do_encoding() const throw(); virtual bool do_always_noconv() const throw(); virtual int do_length(state_type&, const extern_type* __from, const extern_type* __end, size_t __max) const; virtual int do_max_length() const throw(); private: unsigned long _M_maxcode; codecvt_mode _M_mode; }; template<unsigned long _Maxcode, codecvt_mode _Mode> class codecvt_utf8_utf16<char16_t, _Maxcode, _Mode> : public __codecvt_utf8_utf16_base<char16_t> { public: explicit codecvt_utf8_utf16(size_t __refs = 0) : __codecvt_utf8_utf16_base<char16_t>(std::min(_Maxcode, 0x10fffful), _Mode, __refs) { } };
23866:
23866: template<> class __codecvt_utf8_base<char32_t> : public codecvt<char32_t, char, mbstate_t> { public: typedef char32_t intern_type; typedef char extern_type; typedef mbstate_t state_type; protected: __codecvt_utf8_base(unsigned long __maxcode, codecvt_mode __mode, size_t __refs) : codecvt(__refs), _M_maxcode(__maxcode), _M_mode(__mode) { } virtual ~__codecvt_utf8_base(); virtual result do_out(state_type& __state, const intern_type* __from, const intern_type* __from_end, const intern_type*& __from_next, extern_type* __to, extern_type* __to_end, extern_type*& __to_next) const; virtual result do_unshift(state_type& __state, extern_type* __to, extern_type* __to_end, extern_type*& __to_next) const; virtual result do_in(state_type& __state, const extern_type* __from, const extern_type* __from_end, const extern_type*& __from_next, intern_type* __to, intern_type* __to_end, intern_type*& __to_next) const; virtual int do_encoding() const throw(); virtual bool do_always_noconv() const throw(); virtual int do_length(state_type&, const extern_type* __from, const extern_type* __end, size_t __max) const; virtual int do_max_length() const throw(); private: unsigned long _M_maxcode; codecvt_mode _M_mode; }; template<unsigned long _Maxcode, codecvt_mode _Mode> class codecvt_utf8<char32_t, _Maxcode, _Mode> : public __codecvt_utf8_base<char32_t> { public: explicit codecvt_utf8(size_t __refs = 0) : __codecvt_utf8_base<char32_t>(std::min(_Maxcode, 0x10fffful), _Mode, __refs) { } };
23866: template<> class __codecvt_utf16_base<char32_t> : public codecvt<char32_t, char, mbstate_t> { public: typedef char32_t intern_type; typedef char extern_type; typedef mbstate_t state_type; protected: __codecvt_utf16_base(unsigned long __maxcode, codecvt_mode __mode, size_t __refs) : codecvt(__refs), _M_maxcode(__maxcode), _M_mode(__mode) { } virtual ~__codecvt_utf16_base(); virtual result do_out(state_type& __state, const intern_type* __from, const intern_type* __from_end, const intern_type*& __from_next, extern_type* __to, extern_type* __to_end, extern_type*& __to_next) const; virtual result do_unshift(state_type& __state, extern_type* __to, extern_type* __to_end, extern_type*& __to_next) const; virtual result do_in(state_type& __state, const extern_type* __from, const extern_type* __from_end, const extern_type*& __from_next, intern_type* __to, intern_type* __to_end, intern_type*& __to_next) const; virtual int do_encoding() const throw(); virtual bool do_always_noconv() const throw(); virtual int do_length(state_type&, const extern_type* __from, const extern_type* __end, size_t __max) const; virtual int do_max_length() const throw(); private: unsigned long _M_maxcode; codecvt_mode _M_mode; }; template<unsigned long _Maxcode, codecvt_mode _Mode> class codecvt_utf16<char32_t, _Maxcode, _Mode> : public __codecvt_utf16_base<char32_t> { public: explicit codecvt_utf16(size_t __refs = 0) : __codecvt_utf16_base<char32_t>(std::min(_Maxcode, 0x10fffful), _Mode, __refs) { } };
23866: template<> class __codecvt_utf8_utf16_base<char32_t> : public codecvt<char32_t, char, mbstate_t> { public: typedef char32_t intern_type; typedef char extern_type; typedef mbstate_t state_type; protected: __codecvt_utf8_utf16_base(unsigned long __maxcode, codecvt_mode __mode, size_t __refs) : codecvt(__refs), _M_maxcode(__maxcode), _M_mode(__mode) { } virtual ~__codecvt_utf8_utf16_base(); virtual result do_out(state_type& __state, const intern_type* __from, const intern_type* __from_end, const intern_type*& __from_next, extern_type* __to, extern_type* __to_end, extern_type*& __to_next) const; virtual result do_unshift(state_type& __state, extern_type* __to, extern_type* __to_end, extern_type*& __to_next) const; virtual result do_in(state_type& __state, const extern_type* __from, const extern_type* __from_end, const extern_type*& __from_next, intern_type* __to, intern_type* __to_end, intern_type*& __to_next) const; virtual int do_encoding() const throw(); virtual bool do_always_noconv() const throw(); virtual int do_length(state_type&, const extern_type* __from, const extern_type* __end, size_t __max) const; virtual int do_max_length() const throw(); private: unsigned long _M_maxcode; codecvt_mode _M_mode; }; template<unsigned long _Maxcode, codecvt_mode _Mode> class codecvt_utf8_utf16<char32_t, _Maxcode, _Mode> : public __codecvt_utf8_utf16_base<char32_t> { public: explicit codecvt_utf8_utf16(size_t __refs = 0) : __codecvt_utf8_utf16_base<char32_t>(std::min(_Maxcode, 0x10fffful), _Mode, __refs) { } };
23866:
23866:
23866: template<> class __codecvt_utf8_base<wchar_t> : public codecvt<wchar_t, char, mbstate_t> { public: typedef wchar_t intern_type; typedef char extern_type; typedef mbstate_t state_type; protected: __codecvt_utf8_base(unsigned long __maxcode, codecvt_mode __mode, size_t __refs) : codecvt(__refs), _M_maxcode(__maxcode), _M_mode(__mode) { } virtual ~__codecvt_utf8_base(); virtual result do_out(state_type& __state, const intern_type* __from, const intern_type* __from_end, const intern_type*& __from_next, extern_type* __to, extern_type* __to_end, extern_type*& __to_next) const; virtual result do_unshift(state_type& __state, extern_type* __to, extern_type* __to_end, extern_type*& __to_next) const; virtual result do_in(state_type& __state, const extern_type* __from, const extern_type* __from_end, const extern_type*& __from_next, intern_type* __to, intern_type* __to_end, intern_type*& __to_next) const; virtual int do_encoding() const throw(); virtual bool do_always_noconv() const throw(); virtual int do_length(state_type&, const extern_type* __from, const extern_type* __end, size_t __max) const; virtual int do_max_length() const throw(); private: unsigned long _M_maxcode; codecvt_mode _M_mode; }; template<unsigned long _Maxcode, codecvt_mode _Mode> class codecvt_utf8<wchar_t, _Maxcode, _Mode> : public __codecvt_utf8_base<wchar_t> { public: explicit codecvt_utf8(size_t __refs = 0) : __codecvt_utf8_base<wchar_t>(std::min(_Maxcode, 0x10fffful), _Mode, __refs) { } };
23866: template<> class __codecvt_utf16_base<wchar_t> : public codecvt<wchar_t, char, mbstate_t> { public: typedef wchar_t intern_type; typedef char extern_type; typedef mbstate_t state_type; protected: __codecvt_utf16_base(unsigned long __maxcode, codecvt_mode __mode, size_t __refs) : codecvt(__refs), _M_maxcode(__maxcode), _M_mode(__mode) { } virtual ~__codecvt_utf16_base(); virtual result do_out(state_type& __state, const intern_type* __from, const intern_type* __from_end, const intern_type*& __from_next, extern_type* __to, extern_type* __to_end, extern_type*& __to_next) const; virtual result do_unshift(state_type& __state, extern_type* __to, extern_type* __to_end, extern_type*& __to_next) const; virtual result do_in(state_type& __state, const extern_type* __from, const extern_type* __from_end, const extern_type*& __from_next, intern_type* __to, intern_type* __to_end, intern_type*& __to_next) const; virtual int do_encoding() const throw(); virtual bool do_always_noconv() const throw(); virtual int do_length(state_type&, const extern_type* __from, const extern_type* __end, size_t __max) const; virtual int do_max_length() const throw(); private: unsigned long _M_maxcode; codecvt_mode _M_mode; }; template<unsigned long _Maxcode, codecvt_mode _Mode> class codecvt_utf16<wchar_t, _Maxcode, _Mode> : public __codecvt_utf16_base<wchar_t> { public: explicit codecvt_utf16(size_t __refs = 0) : __codecvt_utf16_base<wchar_t>(std::min(_Maxcode, 0x10fffful), _Mode, __refs) { } };
23866: template<> class __codecvt_utf8_utf16_base<wchar_t> : public codecvt<wchar_t, char, mbstate_t> { public: typedef wchar_t intern_type; typedef char extern_type; typedef mbstate_t state_type; protected: __codecvt_utf8_utf16_base(unsigned long __maxcode, codecvt_mode __mode, size_t __refs) : codecvt(__refs), _M_maxcode(__maxcode), _M_mode(__mode) { } virtual ~__codecvt_utf8_utf16_base(); virtual result do_out(state_type& __state, const intern_type* __from, const intern_type* __from_end, const intern_type*& __from_next, extern_type* __to, extern_type* __to_end, extern_type*& __to_next) const; virtual result do_unshift(state_type& __state, extern_type* __to, extern_type* __to_end, extern_type*& __to_next) const; virtual result do_in(state_type& __state, const extern_type* __from, const extern_type* __from_end, const extern_type*& __from_next, intern_type* __to, intern_type* __to_end, intern_type*& __to_next) const; virtual int do_encoding() const throw(); virtual bool do_always_noconv() const throw(); virtual int do_length(state_type&, const extern_type* __from, const extern_type* __end, size_t __max) const; virtual int do_max_length() const throw(); private: unsigned long _M_maxcode; codecvt_mode _M_mode; }; template<unsigned long _Maxcode, codecvt_mode _Mode> class codecvt_utf8_utf16<wchar_t, _Maxcode, _Mode> : public __codecvt_utf8_utf16_base<wchar_t> { public: explicit codecvt_utf8_utf16(size_t __refs = 0) : __codecvt_utf8_utf16_base<wchar_t>(std::min(_Maxcode, 0x10fffful), _Mode, __refs) { } };
23866:
23866:
23866:
23866: }
23866: # 41 "/usr/include/c++/10/bits/fs_path.h" 2 3
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/ext/concurrence.h" 1 3
23866: # 30 "/usr/include/c++/10/ext/concurrence.h" 3
23866: #define _CONCURRENCE_H 1
23866:
23866:
23866: # 33 "/usr/include/c++/10/ext/concurrence.h" 3
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: enum _Lock_policy { _S_single, _S_mutex, _S_atomic };
23866:
23866:
23866:
23866: static const _Lock_policy __default_lock_policy =
23866:
23866:
23866:
23866:
23866:
23866: _S_mutex;
23866:
23866:
23866:
23866:
23866: class __concurrence_lock_error : public std::exception
23866: {
23866: public:
23866: virtual char const*
23866: what() const throw()
23866: { return "__gnu_cxx::__concurrence_lock_error"; }
23866: };
23866:
23866: class __concurrence_unlock_error : public std::exception
23866: {
23866: public:
23866: virtual char const*
23866: what() const throw()
23866: { return "__gnu_cxx::__concurrence_unlock_error"; }
23866: };
23866:
23866: class __concurrence_broadcast_error : public std::exception
23866: {
23866: public:
23866: virtual char const*
23866: what() const throw()
23866: { return "__gnu_cxx::__concurrence_broadcast_error"; }
23866: };
23866:
23866: class __concurrence_wait_error : public std::exception
23866: {
23866: public:
23866: virtual char const*
23866: what() const throw()
23866: { return "__gnu_cxx::__concurrence_wait_error"; }
23866: };
23866:
23866:
23866: inline void
23866: __throw_concurrence_lock_error()
23866: { (throw (__concurrence_lock_error())); }
23866:
23866: inline void
23866: __throw_concurrence_unlock_error()
23866: { (throw (__concurrence_unlock_error())); }
23866:
23866:
23866: inline void
23866: __throw_concurrence_broadcast_error()
23866: { (throw (__concurrence_broadcast_error())); }
23866:
23866: inline void
23866: __throw_concurrence_wait_error()
23866: { (throw (__concurrence_wait_error())); }
23866:
23866:
23866: class __mutex
23866: {
23866: private:
23866:
23866: __gthread_mutex_t _M_mutex = { { 0, 0, 0, PTHREAD_MUTEX_TIMED_NP, 0, { 0 } } };
23866:
23866:
23866:
23866:
23866: __mutex(const __mutex&);
23866: __mutex& operator=(const __mutex&);
23866:
23866: public:
23866: __mutex()
23866: {
23866:
23866:
23866:
23866:
23866: }
23866: # 144 "/usr/include/c++/10/ext/concurrence.h" 3
23866: void lock()
23866: {
23866:
23866: if (__gthread_active_p())
23866: {
23866: if (__gthread_mutex_lock(&_M_mutex) != 0)
23866: __throw_concurrence_lock_error();
23866: }
23866:
23866: }
23866:
23866: void unlock()
23866: {
23866:
23866: if (__gthread_active_p())
23866: {
23866: if (__gthread_mutex_unlock(&_M_mutex) != 0)
23866: __throw_concurrence_unlock_error();
23866: }
23866:
23866: }
23866:
23866: __gthread_mutex_t* gthread_mutex(void)
23866: { return &_M_mutex; }
23866: };
23866:
23866: class __recursive_mutex
23866: {
23866: private:
23866:
23866: __gthread_recursive_mutex_t _M_mutex = { { 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, 0, { 0 } } };
23866:
23866:
23866:
23866:
23866: __recursive_mutex(const __recursive_mutex&);
23866: __recursive_mutex& operator=(const __recursive_mutex&);
23866:
23866: public:
23866: __recursive_mutex()
23866: {
23866:
23866:
23866:
23866:
23866: }
23866: # 199 "/usr/include/c++/10/ext/concurrence.h" 3
23866: void lock()
23866: {
23866:
23866: if (__gthread_active_p())
23866: {
23866: if (__gthread_recursive_mutex_lock(&_M_mutex) != 0)
23866: __throw_concurrence_lock_error();
23866: }
23866:
23866: }
23866:
23866: void unlock()
23866: {
23866:
23866: if (__gthread_active_p())
23866: {
23866: if (__gthread_recursive_mutex_unlock(&_M_mutex) != 0)
23866: __throw_concurrence_unlock_error();
23866: }
23866:
23866: }
23866:
23866: __gthread_recursive_mutex_t* gthread_recursive_mutex(void)
23866: { return &_M_mutex; }
23866: };
23866:
23866:
23866:
23866:
23866: class __scoped_lock
23866: {
23866: public:
23866: typedef __mutex __mutex_type;
23866:
23866: private:
23866: __mutex_type& _M_device;
23866:
23866: __scoped_lock(const __scoped_lock&);
23866: __scoped_lock& operator=(const __scoped_lock&);
23866:
23866: public:
23866: explicit __scoped_lock(__mutex_type& __name) : _M_device(__name)
23866: { _M_device.lock(); }
23866:
23866: ~__scoped_lock() throw()
23866: { _M_device.unlock(); }
23866: };
23866:
23866:
23866: class __cond
23866: {
23866: private:
23866:
23866: __gthread_cond_t _M_cond = { { {0}, {0}, {0, 0}, {0, 0}, 0, 0, {0, 0} } };
23866:
23866:
23866:
23866:
23866: __cond(const __cond&);
23866: __cond& operator=(const __cond&);
23866:
23866: public:
23866: __cond()
23866: {
23866:
23866:
23866:
23866:
23866: }
23866: # 277 "/usr/include/c++/10/ext/concurrence.h" 3
23866: void broadcast()
23866: {
23866:
23866: if (__gthread_active_p())
23866: {
23866: if (__gthread_cond_broadcast(&_M_cond) != 0)
23866: __throw_concurrence_broadcast_error();
23866: }
23866:
23866: }
23866:
23866: void wait(__mutex *mutex)
23866: {
23866:
23866: {
23866: if (__gthread_cond_wait(&_M_cond, mutex->gthread_mutex()) != 0)
23866: __throw_concurrence_wait_error();
23866: }
23866:
23866: }
23866:
23866: void wait_recursive(__recursive_mutex *mutex)
23866: {
23866:
23866: {
23866: if (__gthread_cond_wait_recursive(&_M_cond,
23866: mutex->gthread_recursive_mutex())
23866: != 0)
23866: __throw_concurrence_wait_error();
23866: }
23866:
23866: }
23866: };
23866:
23866:
23866:
23866: }
23866: # 46 "/usr/include/c++/10/bits/fs_path.h" 2 3
23866: # 1 "/usr/include/c++/10/bits/shared_ptr.h" 1 3
23866: # 50 "/usr/include/c++/10/bits/shared_ptr.h" 3
23866: #define _SHARED_PTR_H 1
23866:
23866: # 1 "/usr/include/c++/10/bits/shared_ptr_base.h" 1 3
23866: # 50 "/usr/include/c++/10/bits/shared_ptr_base.h" 3
23866: #define _SHARED_PTR_BASE_H 1
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/allocated_ptr.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/allocated_ptr.h" 3
23866: #define _ALLOCATED_PTR_H 1
23866: # 40 "/usr/include/c++/10/bits/allocated_ptr.h" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: template<typename _Alloc>
23866: struct __allocated_ptr
23866: {
23866: using pointer = typename allocator_traits<_Alloc>::pointer;
23866: using value_type = typename allocator_traits<_Alloc>::value_type;
23866:
23866:
23866: __allocated_ptr(_Alloc& __a, pointer __ptr) noexcept
23866: : _M_alloc(std::__addressof(__a)), _M_ptr(__ptr)
23866: { }
23866:
23866:
23866: template<typename _Ptr,
23866: typename _Req = _Require<is_same<_Ptr, value_type*>>>
23866: __allocated_ptr(_Alloc& __a, _Ptr __ptr)
23866: : _M_alloc(std::__addressof(__a)),
23866: _M_ptr(pointer_traits<pointer>::pointer_to(*__ptr))
23866: { }
23866:
23866:
23866: __allocated_ptr(__allocated_ptr&& __gd) noexcept
23866: : _M_alloc(__gd._M_alloc), _M_ptr(__gd._M_ptr)
23866: { __gd._M_ptr = nullptr; }
23866:
23866:
23866: ~__allocated_ptr()
23866: {
23866: if (_M_ptr != nullptr)
23866: std::allocator_traits<_Alloc>::deallocate(*_M_alloc, _M_ptr, 1);
23866: }
23866:
23866:
23866: __allocated_ptr&
23866: operator=(std::nullptr_t) noexcept
23866: {
23866: _M_ptr = nullptr;
23866: return *this;
23866: }
23866:
23866:
23866: value_type* get() { return std::__to_address(_M_ptr); }
23866:
23866: private:
23866: _Alloc* _M_alloc;
23866: pointer _M_ptr;
23866: };
23866:
23866:
23866: template<typename _Alloc>
23866: __allocated_ptr<_Alloc>
23866: __allocate_guarded(_Alloc& __a)
23866: {
23866: return { __a, std::allocator_traits<_Alloc>::allocate(__a, 1) };
23866: }
23866:
23866:
23866: }
23866: # 54 "/usr/include/c++/10/bits/shared_ptr_base.h" 2 3
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: #pragma GCC diagnostic push
23866: #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
23866: template<typename> class auto_ptr;
23866: #pragma GCC diagnostic pop
23866:
23866:
23866:
23866:
23866:
23866:
23866: class bad_weak_ptr : public std::exception
23866: {
23866: public:
23866: virtual char const* what() const noexcept;
23866:
23866: virtual ~bad_weak_ptr() noexcept;
23866: };
23866:
23866:
23866: inline void
23866: __throw_bad_weak_ptr()
23866: { (throw (bad_weak_ptr())); }
23866:
23866: using __gnu_cxx::_Lock_policy;
23866: using __gnu_cxx::__default_lock_policy;
23866: using __gnu_cxx::_S_single;
23866: using __gnu_cxx::_S_mutex;
23866: using __gnu_cxx::_S_atomic;
23866:
23866:
23866: template<_Lock_policy _Lp>
23866: class _Mutex_base
23866: {
23866: protected:
23866:
23866: enum { _S_need_barriers = 0 };
23866: };
23866:
23866: template<>
23866: class _Mutex_base<_S_mutex>
23866: : public __gnu_cxx::__mutex
23866: {
23866: protected:
23866:
23866:
23866:
23866: enum { _S_need_barriers = 1 };
23866: };
23866:
23866: template<_Lock_policy _Lp = __default_lock_policy>
23866: class _Sp_counted_base
23866: : public _Mutex_base<_Lp>
23866: {
23866: public:
23866: _Sp_counted_base() noexcept
23866: : _M_use_count(1), _M_weak_count(1) { }
23866:
23866: virtual
23866: ~_Sp_counted_base() noexcept
23866: { }
23866:
23866:
23866:
23866: virtual void
23866: _M_dispose() noexcept = 0;
23866:
23866:
23866: virtual void
23866: _M_destroy() noexcept
23866: { delete this; }
23866:
23866: virtual void*
23866: _M_get_deleter(const std::type_info&) noexcept = 0;
23866:
23866: void
23866: _M_add_ref_copy()
23866: { __gnu_cxx::__atomic_add_dispatch(&_M_use_count, 1); }
23866:
23866: void
23866: _M_add_ref_lock();
23866:
23866: bool
23866: _M_add_ref_lock_nothrow();
23866:
23866: void
23866: _M_release() noexcept
23866: {
23866:
23866: ;
23866: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, -1) == 1)
23866: {
23866: ;
23866: _M_dispose();
23866:
23866:
23866:
23866:
23866: if (_Mutex_base<_Lp>::_S_need_barriers)
23866: {
23866: __atomic_thread_fence (4);
23866: }
23866:
23866:
23866: ;
23866: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count,
23866: -1) == 1)
23866: {
23866: ;
23866: _M_destroy();
23866: }
23866: }
23866: }
23866:
23866: void
23866: _M_weak_add_ref() noexcept
23866: { __gnu_cxx::__atomic_add_dispatch(&_M_weak_count, 1); }
23866:
23866: void
23866: _M_weak_release() noexcept
23866: {
23866:
23866: ;
23866: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count, -1) == 1)
23866: {
23866: ;
23866: if (_Mutex_base<_Lp>::_S_need_barriers)
23866: {
23866:
23866:
23866: __atomic_thread_fence (4);
23866: }
23866: _M_destroy();
23866: }
23866: }
23866:
23866: long
23866: _M_get_use_count() const noexcept
23866: {
23866:
23866:
23866: return __atomic_load_n(&_M_use_count, 0);
23866: }
23866:
23866: private:
23866: _Sp_counted_base(_Sp_counted_base const&) = delete;
23866: _Sp_counted_base& operator=(_Sp_counted_base const&) = delete;
23866:
23866: _Atomic_word _M_use_count;
23866: _Atomic_word _M_weak_count;
23866: };
23866:
23866: template<>
23866: inline void
23866: _Sp_counted_base<_S_single>::
23866: _M_add_ref_lock()
23866: {
23866: if (_M_use_count == 0)
23866: __throw_bad_weak_ptr();
23866: ++_M_use_count;
23866: }
23866:
23866: template<>
23866: inline void
23866: _Sp_counted_base<_S_mutex>::
23866: _M_add_ref_lock()
23866: {
23866: __gnu_cxx::__scoped_lock sentry(*this);
23866: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1) == 0)
23866: {
23866: _M_use_count = 0;
23866: __throw_bad_weak_ptr();
23866: }
23866: }
23866:
23866: template<>
23866: inline void
23866: _Sp_counted_base<_S_atomic>::
23866: _M_add_ref_lock()
23866: {
23866:
23866: _Atomic_word __count = _M_get_use_count();
23866: do
23866: {
23866: if (__count == 0)
23866: __throw_bad_weak_ptr();
23866:
23866:
23866: }
23866: while (!__atomic_compare_exchange_n(&_M_use_count, &__count, __count + 1,
23866: true, 4,
23866: 0));
23866: }
23866:
23866: template<>
23866: inline bool
23866: _Sp_counted_base<_S_single>::
23866: _M_add_ref_lock_nothrow()
23866: {
23866: if (_M_use_count == 0)
23866: return false;
23866: ++_M_use_count;
23866: return true;
23866: }
23866:
23866: template<>
23866: inline bool
23866: _Sp_counted_base<_S_mutex>::
23866: _M_add_ref_lock_nothrow()
23866: {
23866: __gnu_cxx::__scoped_lock sentry(*this);
23866: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1) == 0)
23866: {
23866: _M_use_count = 0;
23866: return false;
23866: }
23866: return true;
23866: }
23866:
23866: template<>
23866: inline bool
23866: _Sp_counted_base<_S_atomic>::
23866: _M_add_ref_lock_nothrow()
23866: {
23866:
23866: _Atomic_word __count = _M_get_use_count();
23866: do
23866: {
23866: if (__count == 0)
23866: return false;
23866:
23866:
23866: }
23866: while (!__atomic_compare_exchange_n(&_M_use_count, &__count, __count + 1,
23866: true, 4,
23866: 0));
23866: return true;
23866: }
23866:
23866: template<>
23866: inline void
23866: _Sp_counted_base<_S_single>::_M_add_ref_copy()
23866: { ++_M_use_count; }
23866:
23866: template<>
23866: inline void
23866: _Sp_counted_base<_S_single>::_M_release() noexcept
23866: {
23866: if (--_M_use_count == 0)
23866: {
23866: _M_dispose();
23866: if (--_M_weak_count == 0)
23866: _M_destroy();
23866: }
23866: }
23866:
23866: template<>
23866: inline void
23866: _Sp_counted_base<_S_single>::_M_weak_add_ref() noexcept
23866: { ++_M_weak_count; }
23866:
23866: template<>
23866: inline void
23866: _Sp_counted_base<_S_single>::_M_weak_release() noexcept
23866: {
23866: if (--_M_weak_count == 0)
23866: _M_destroy();
23866: }
23866:
23866: template<>
23866: inline long
23866: _Sp_counted_base<_S_single>::_M_get_use_count() const noexcept
23866: { return _M_use_count; }
23866:
23866:
23866:
23866: template<typename _Tp, _Lock_policy _Lp = __default_lock_policy>
23866: class __shared_ptr;
23866:
23866: template<typename _Tp, _Lock_policy _Lp = __default_lock_policy>
23866: class __weak_ptr;
23866:
23866: template<typename _Tp, _Lock_policy _Lp = __default_lock_policy>
23866: class __enable_shared_from_this;
23866:
23866: template<typename _Tp>
23866: class shared_ptr;
23866:
23866: template<typename _Tp>
23866: class weak_ptr;
23866:
23866: template<typename _Tp>
23866: struct owner_less;
23866:
23866: template<typename _Tp>
23866: class enable_shared_from_this;
23866:
23866: template<_Lock_policy _Lp = __default_lock_policy>
23866: class __weak_count;
23866:
23866: template<_Lock_policy _Lp = __default_lock_policy>
23866: class __shared_count;
23866:
23866:
23866:
23866: template<typename _Ptr, _Lock_policy _Lp>
23866: class _Sp_counted_ptr final : public _Sp_counted_base<_Lp>
23866: {
23866: public:
23866: explicit
23866: _Sp_counted_ptr(_Ptr __p) noexcept
23866: : _M_ptr(__p) { }
23866:
23866: virtual void
23866: _M_dispose() noexcept
23866: { delete _M_ptr; }
23866:
23866: virtual void
23866: _M_destroy() noexcept
23866: { delete this; }
23866:
23866: virtual void*
23866: _M_get_deleter(const std::type_info&) noexcept
23866: { return nullptr; }
23866:
23866: _Sp_counted_ptr(const _Sp_counted_ptr&) = delete;
23866: _Sp_counted_ptr& operator=(const _Sp_counted_ptr&) = delete;
23866:
23866: private:
23866: _Ptr _M_ptr;
23866: };
23866:
23866: template<>
23866: inline void
23866: _Sp_counted_ptr<nullptr_t, _S_single>::_M_dispose() noexcept { }
23866:
23866: template<>
23866: inline void
23866: _Sp_counted_ptr<nullptr_t, _S_mutex>::_M_dispose() noexcept { }
23866:
23866: template<>
23866: inline void
23866: _Sp_counted_ptr<nullptr_t, _S_atomic>::_M_dispose() noexcept { }
23866:
23866: template<int _Nm, typename _Tp,
23866: bool __use_ebo = !__is_final(_Tp) && __is_empty(_Tp)>
23866: struct _Sp_ebo_helper;
23866:
23866:
23866: template<int _Nm, typename _Tp>
23866: struct _Sp_ebo_helper<_Nm, _Tp, true> : private _Tp
23866: {
23866: explicit _Sp_ebo_helper(const _Tp& __tp) : _Tp(__tp) { }
23866: explicit _Sp_ebo_helper(_Tp&& __tp) : _Tp(std::move(__tp)) { }
23866:
23866: static _Tp&
23866: _S_get(_Sp_ebo_helper& __eboh) { return static_cast<_Tp&>(__eboh); }
23866: };
23866:
23866:
23866: template<int _Nm, typename _Tp>
23866: struct _Sp_ebo_helper<_Nm, _Tp, false>
23866: {
23866: explicit _Sp_ebo_helper(const _Tp& __tp) : _M_tp(__tp) { }
23866: explicit _Sp_ebo_helper(_Tp&& __tp) : _M_tp(std::move(__tp)) { }
23866:
23866: static _Tp&
23866: _S_get(_Sp_ebo_helper& __eboh)
23866: { return __eboh._M_tp; }
23866:
23866: private:
23866: _Tp _M_tp;
23866: };
23866:
23866:
23866: template<typename _Ptr, typename _Deleter, typename _Alloc, _Lock_policy _Lp>
23866: class _Sp_counted_deleter final : public _Sp_counted_base<_Lp>
23866: {
23866: class _Impl : _Sp_ebo_helper<0, _Deleter>, _Sp_ebo_helper<1, _Alloc>
23866: {
23866: typedef _Sp_ebo_helper<0, _Deleter> _Del_base;
23866: typedef _Sp_ebo_helper<1, _Alloc> _Alloc_base;
23866:
23866: public:
23866: _Impl(_Ptr __p, _Deleter __d, const _Alloc& __a) noexcept
23866: : _M_ptr(__p), _Del_base(std::move(__d)), _Alloc_base(__a)
23866: { }
23866:
23866: _Deleter& _M_del() noexcept { return _Del_base::_S_get(*this); }
23866: _Alloc& _M_alloc() noexcept { return _Alloc_base::_S_get(*this); }
23866:
23866: _Ptr _M_ptr;
23866: };
23866:
23866: public:
23866: using __allocator_type = __alloc_rebind<_Alloc, _Sp_counted_deleter>;
23866:
23866:
23866: _Sp_counted_deleter(_Ptr __p, _Deleter __d) noexcept
23866: : _M_impl(__p, std::move(__d), _Alloc()) { }
23866:
23866:
23866: _Sp_counted_deleter(_Ptr __p, _Deleter __d, const _Alloc& __a) noexcept
23866: : _M_impl(__p, std::move(__d), __a) { }
23866:
23866: ~_Sp_counted_deleter() noexcept { }
23866:
23866: virtual void
23866: _M_dispose() noexcept
23866: { _M_impl._M_del()(_M_impl._M_ptr); }
23866:
23866: virtual void
23866: _M_destroy() noexcept
23866: {
23866: __allocator_type __a(_M_impl._M_alloc());
23866: __allocated_ptr<__allocator_type> __guard_ptr{ __a, this };
23866: this->~_Sp_counted_deleter();
23866: }
23866:
23866: virtual void*
23866: _M_get_deleter(const std::type_info& __ti) noexcept
23866: {
23866:
23866:
23866:
23866: return __ti == typeid(_Deleter)
23866: ? std::__addressof(_M_impl._M_del())
23866: : nullptr;
23866:
23866:
23866:
23866: }
23866:
23866: private:
23866: _Impl _M_impl;
23866: };
23866:
23866:
23866:
23866: struct _Sp_make_shared_tag
23866: {
23866: private:
23866: template<typename _Tp, typename _Alloc, _Lock_policy _Lp>
23866: friend class _Sp_counted_ptr_inplace;
23866:
23866: static const type_info&
23866: _S_ti() noexcept __attribute__ ((__visibility__ ("default")))
23866: {
23866: alignas(type_info) static constexpr char __tag[sizeof(type_info)] = { };
23866: return reinterpret_cast<const type_info&>(__tag);
23866: }
23866:
23866: static bool _S_eq(const type_info&) noexcept;
23866: };
23866:
23866: template<typename _Alloc>
23866: struct _Sp_alloc_shared_tag
23866: {
23866: const _Alloc& _M_a;
23866: };
23866:
23866: template<typename _Tp, typename _Alloc, _Lock_policy _Lp>
23866: class _Sp_counted_ptr_inplace final : public _Sp_counted_base<_Lp>
23866: {
23866: class _Impl : _Sp_ebo_helper<0, _Alloc>
23866: {
23866: typedef _Sp_ebo_helper<0, _Alloc> _A_base;
23866:
23866: public:
23866: explicit _Impl(_Alloc __a) noexcept : _A_base(__a) { }
23866:
23866: _Alloc& _M_alloc() noexcept { return _A_base::_S_get(*this); }
23866:
23866: __gnu_cxx::__aligned_buffer<_Tp> _M_storage;
23866: };
23866:
23866: public:
23866: using __allocator_type = __alloc_rebind<_Alloc, _Sp_counted_ptr_inplace>;
23866:
23866:
23866: template<typename... _Args>
23866: _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args)
23866: : _M_impl(__a)
23866: {
23866:
23866:
23866: allocator_traits<_Alloc>::construct(__a, _M_ptr(),
23866: std::forward<_Args>(__args)...);
23866: }
23866:
23866: ~_Sp_counted_ptr_inplace() noexcept { }
23866:
23866: virtual void
23866: _M_dispose() noexcept
23866: {
23866: allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr());
23866: }
23866:
23866:
23866: virtual void
23866: _M_destroy() noexcept
23866: {
23866: __allocator_type __a(_M_impl._M_alloc());
23866: __allocated_ptr<__allocator_type> __guard_ptr{ __a, this };
23866: this->~_Sp_counted_ptr_inplace();
23866: }
23866:
23866: private:
23866: friend class __shared_count<_Lp>;
23866:
23866:
23866:
23866: virtual void*
23866: _M_get_deleter(const std::type_info& __ti) noexcept override
23866: {
23866: auto __ptr = const_cast<typename remove_cv<_Tp>::type*>(_M_ptr());
23866:
23866:
23866:
23866:
23866: if (&__ti == &_Sp_make_shared_tag::_S_ti()
23866: ||
23866:
23866: __ti == typeid(_Sp_make_shared_tag)
23866:
23866:
23866:
23866: )
23866: return __ptr;
23866: return nullptr;
23866: }
23866:
23866: _Tp* _M_ptr() noexcept { return _M_impl._M_storage._M_ptr(); }
23866:
23866: _Impl _M_impl;
23866: };
23866:
23866:
23866: struct __sp_array_delete
23866: {
23866: template<typename _Yp>
23866: void operator()(_Yp* __p) const { delete[] __p; }
23866: };
23866:
23866: template<_Lock_policy _Lp>
23866: class __shared_count
23866: {
23866: template<typename _Tp>
23866: struct __not_alloc_shared_tag { using type = void; };
23866:
23866: template<typename _Tp>
23866: struct __not_alloc_shared_tag<_Sp_alloc_shared_tag<_Tp>> { };
23866:
23866: public:
23866: constexpr __shared_count() noexcept : _M_pi(0)
23866: { }
23866:
23866: template<typename _Ptr>
23866: explicit
23866: __shared_count(_Ptr __p) : _M_pi(0)
23866: {
23866: try
23866: {
23866: _M_pi = new _Sp_counted_ptr<_Ptr, _Lp>(__p);
23866: }
23866: catch(...)
23866: {
23866: delete __p;
23866: throw;
23866: }
23866: }
23866:
23866: template<typename _Ptr>
23866: __shared_count(_Ptr __p, false_type)
23866: : __shared_count(__p)
23866: { }
23866:
23866: template<typename _Ptr>
23866: __shared_count(_Ptr __p, true_type)
23866: : __shared_count(__p, __sp_array_delete{}, allocator<void>())
23866: { }
23866:
23866: template<typename _Ptr, typename _Deleter,
23866: typename = typename __not_alloc_shared_tag<_Deleter>::type>
23866: __shared_count(_Ptr __p, _Deleter __d)
23866: : __shared_count(__p, std::move(__d), allocator<void>())
23866: { }
23866:
23866: template<typename _Ptr, typename _Deleter, typename _Alloc,
23866: typename = typename __not_alloc_shared_tag<_Deleter>::type>
23866: __shared_count(_Ptr __p, _Deleter __d, _Alloc __a) : _M_pi(0)
23866: {
23866: typedef _Sp_counted_deleter<_Ptr, _Deleter, _Alloc, _Lp> _Sp_cd_type;
23866: try
23866: {
23866: typename _Sp_cd_type::__allocator_type __a2(__a);
23866: auto __guard = std::__allocate_guarded(__a2);
23866: _Sp_cd_type* __mem = __guard.get();
23866: ::new (__mem) _Sp_cd_type(__p, std::move(__d), std::move(__a));
23866: _M_pi = __mem;
23866: __guard = nullptr;
23866: }
23866: catch(...)
23866: {
23866: __d(__p);
23866: throw;
23866: }
23866: }
23866:
23866: template<typename _Tp, typename _Alloc, typename... _Args>
23866: __shared_count(_Tp*& __p, _Sp_alloc_shared_tag<_Alloc> __a,
23866: _Args&&... __args)
23866: {
23866: typedef _Sp_counted_ptr_inplace<_Tp, _Alloc, _Lp> _Sp_cp_type;
23866: typename _Sp_cp_type::__allocator_type __a2(__a._M_a);
23866: auto __guard = std::__allocate_guarded(__a2);
23866: _Sp_cp_type* __mem = __guard.get();
23866: auto __pi = ::new (__mem)
23866: _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...);
23866: __guard = nullptr;
23866: _M_pi = __pi;
23866: __p = __pi->_M_ptr();
23866: }
23866:
23866:
23866: #pragma GCC diagnostic push
23866: #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
23866:
23866: template<typename _Tp>
23866: explicit
23866: __shared_count(std::auto_ptr<_Tp>&& __r);
23866: #pragma GCC diagnostic pop
23866:
23866:
23866:
23866: template<typename _Tp, typename _Del>
23866: explicit
23866: __shared_count(std::unique_ptr<_Tp, _Del>&& __r) : _M_pi(0)
23866: {
23866:
23866:
23866: if (__r.get() == nullptr)
23866: return;
23866:
23866: using _Ptr = typename unique_ptr<_Tp, _Del>::pointer;
23866: using _Del2 = typename conditional<is_reference<_Del>::value,
23866: reference_wrapper<typename remove_reference<_Del>::type>,
23866: _Del>::type;
23866: using _Sp_cd_type
23866: = _Sp_counted_deleter<_Ptr, _Del2, allocator<void>, _Lp>;
23866: using _Alloc = allocator<_Sp_cd_type>;
23866: using _Alloc_traits = allocator_traits<_Alloc>;
23866: _Alloc __a;
23866: _Sp_cd_type* __mem = _Alloc_traits::allocate(__a, 1);
23866: _Alloc_traits::construct(__a, __mem, __r.release(),
23866: __r.get_deleter());
23866: _M_pi = __mem;
23866: }
23866:
23866:
23866: explicit __shared_count(const __weak_count<_Lp>& __r);
23866:
23866:
23866: explicit __shared_count(const __weak_count<_Lp>& __r, std::nothrow_t);
23866:
23866: ~__shared_count() noexcept
23866: {
23866: if (_M_pi != nullptr)
23866: _M_pi->_M_release();
23866: }
23866:
23866: __shared_count(const __shared_count& __r) noexcept
23866: : _M_pi(__r._M_pi)
23866: {
23866: if (_M_pi != 0)
23866: _M_pi->_M_add_ref_copy();
23866: }
23866:
23866: __shared_count&
23866: operator=(const __shared_count& __r) noexcept
23866: {
23866: _Sp_counted_base<_Lp>* __tmp = __r._M_pi;
23866: if (__tmp != _M_pi)
23866: {
23866: if (__tmp != 0)
23866: __tmp->_M_add_ref_copy();
23866: if (_M_pi != 0)
23866: _M_pi->_M_release();
23866: _M_pi = __tmp;
23866: }
23866: return *this;
23866: }
23866:
23866: void
23866: _M_swap(__shared_count& __r) noexcept
23866: {
23866: _Sp_counted_base<_Lp>* __tmp = __r._M_pi;
23866: __r._M_pi = _M_pi;
23866: _M_pi = __tmp;
23866: }
23866:
23866: long
23866: _M_get_use_count() const noexcept
23866: { return _M_pi != 0 ? _M_pi->_M_get_use_count() : 0; }
23866:
23866: bool
23866: _M_unique() const noexcept
23866: { return this->_M_get_use_count() == 1; }
23866:
23866: void*
23866: _M_get_deleter(const std::type_info& __ti) const noexcept
23866: { return _M_pi ? _M_pi->_M_get_deleter(__ti) : nullptr; }
23866:
23866: bool
23866: _M_less(const __shared_count& __rhs) const noexcept
23866: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); }
23866:
23866: bool
23866: _M_less(const __weak_count<_Lp>& __rhs) const noexcept
23866: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); }
23866:
23866:
23866: friend inline bool
23866: operator==(const __shared_count& __a, const __shared_count& __b) noexcept
23866: { return __a._M_pi == __b._M_pi; }
23866:
23866: private:
23866: friend class __weak_count<_Lp>;
23866:
23866: _Sp_counted_base<_Lp>* _M_pi;
23866: };
23866:
23866:
23866: template<_Lock_policy _Lp>
23866: class __weak_count
23866: {
23866: public:
23866: constexpr __weak_count() noexcept : _M_pi(nullptr)
23866: { }
23866:
23866: __weak_count(const __shared_count<_Lp>& __r) noexcept
23866: : _M_pi(__r._M_pi)
23866: {
23866: if (_M_pi != nullptr)
23866: _M_pi->_M_weak_add_ref();
23866: }
23866:
23866: __weak_count(const __weak_count& __r) noexcept
23866: : _M_pi(__r._M_pi)
23866: {
23866: if (_M_pi != nullptr)
23866: _M_pi->_M_weak_add_ref();
23866: }
23866:
23866: __weak_count(__weak_count&& __r) noexcept
23866: : _M_pi(__r._M_pi)
23866: { __r._M_pi = nullptr; }
23866:
23866: ~__weak_count() noexcept
23866: {
23866: if (_M_pi != nullptr)
23866: _M_pi->_M_weak_release();
23866: }
23866:
23866: __weak_count&
23866: operator=(const __shared_count<_Lp>& __r) noexcept
23866: {
23866: _Sp_counted_base<_Lp>* __tmp = __r._M_pi;
23866: if (__tmp != nullptr)
23866: __tmp->_M_weak_add_ref();
23866: if (_M_pi != nullptr)
23866: _M_pi->_M_weak_release();
23866: _M_pi = __tmp;
23866: return *this;
23866: }
23866:
23866: __weak_count&
23866: operator=(const __weak_count& __r) noexcept
23866: {
23866: _Sp_counted_base<_Lp>* __tmp = __r._M_pi;
23866: if (__tmp != nullptr)
23866: __tmp->_M_weak_add_ref();
23866: if (_M_pi != nullptr)
23866: _M_pi->_M_weak_release();
23866: _M_pi = __tmp;
23866: return *this;
23866: }
23866:
23866: __weak_count&
23866: operator=(__weak_count&& __r) noexcept
23866: {
23866: if (_M_pi != nullptr)
23866: _M_pi->_M_weak_release();
23866: _M_pi = __r._M_pi;
23866: __r._M_pi = nullptr;
23866: return *this;
23866: }
23866:
23866: void
23866: _M_swap(__weak_count& __r) noexcept
23866: {
23866: _Sp_counted_base<_Lp>* __tmp = __r._M_pi;
23866: __r._M_pi = _M_pi;
23866: _M_pi = __tmp;
23866: }
23866:
23866: long
23866: _M_get_use_count() const noexcept
23866: { return _M_pi != nullptr ? _M_pi->_M_get_use_count() : 0; }
23866:
23866: bool
23866: _M_less(const __weak_count& __rhs) const noexcept
23866: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); }
23866:
23866: bool
23866: _M_less(const __shared_count<_Lp>& __rhs) const noexcept
23866: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); }
23866:
23866:
23866: friend inline bool
23866: operator==(const __weak_count& __a, const __weak_count& __b) noexcept
23866: { return __a._M_pi == __b._M_pi; }
23866:
23866: private:
23866: friend class __shared_count<_Lp>;
23866:
23866: _Sp_counted_base<_Lp>* _M_pi;
23866: };
23866:
23866:
23866: template<_Lock_policy _Lp>
23866: inline
23866: __shared_count<_Lp>::__shared_count(const __weak_count<_Lp>& __r)
23866: : _M_pi(__r._M_pi)
23866: {
23866: if (_M_pi != nullptr)
23866: _M_pi->_M_add_ref_lock();
23866: else
23866: __throw_bad_weak_ptr();
23866: }
23866:
23866:
23866: template<_Lock_policy _Lp>
23866: inline
23866: __shared_count<_Lp>::
23866: __shared_count(const __weak_count<_Lp>& __r, std::nothrow_t)
23866: : _M_pi(__r._M_pi)
23866: {
23866: if (_M_pi != nullptr)
23866: if (!_M_pi->_M_add_ref_lock_nothrow())
23866: _M_pi = nullptr;
23866: }
23866:
23866: #define __cpp_lib_shared_ptr_arrays 201611L
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Yp_ptr, typename _Tp_ptr>
23866: struct __sp_compatible_with
23866: : false_type
23866: { };
23866:
23866: template<typename _Yp, typename _Tp>
23866: struct __sp_compatible_with<_Yp*, _Tp*>
23866: : is_convertible<_Yp*, _Tp*>::type
23866: { };
23866:
23866: template<typename _Up, size_t _Nm>
23866: struct __sp_compatible_with<_Up(*)[_Nm], _Up(*)[]>
23866: : true_type
23866: { };
23866:
23866: template<typename _Up, size_t _Nm>
23866: struct __sp_compatible_with<_Up(*)[_Nm], const _Up(*)[]>
23866: : true_type
23866: { };
23866:
23866: template<typename _Up, size_t _Nm>
23866: struct __sp_compatible_with<_Up(*)[_Nm], volatile _Up(*)[]>
23866: : true_type
23866: { };
23866:
23866: template<typename _Up, size_t _Nm>
23866: struct __sp_compatible_with<_Up(*)[_Nm], const volatile _Up(*)[]>
23866: : true_type
23866: { };
23866:
23866:
23866: template<typename _Up, size_t _Nm, typename _Yp, typename = void>
23866: struct __sp_is_constructible_arrN
23866: : false_type
23866: { };
23866:
23866: template<typename _Up, size_t _Nm, typename _Yp>
23866: struct __sp_is_constructible_arrN<_Up, _Nm, _Yp, __void_t<_Yp[_Nm]>>
23866: : is_convertible<_Yp(*)[_Nm], _Up(*)[_Nm]>::type
23866: { };
23866:
23866:
23866: template<typename _Up, typename _Yp, typename = void>
23866: struct __sp_is_constructible_arr
23866: : false_type
23866: { };
23866:
23866: template<typename _Up, typename _Yp>
23866: struct __sp_is_constructible_arr<_Up, _Yp, __void_t<_Yp[]>>
23866: : is_convertible<_Yp(*)[], _Up(*)[]>::type
23866: { };
23866:
23866:
23866: template<typename _Tp, typename _Yp>
23866: struct __sp_is_constructible;
23866:
23866:
23866: template<typename _Up, size_t _Nm, typename _Yp>
23866: struct __sp_is_constructible<_Up[_Nm], _Yp>
23866: : __sp_is_constructible_arrN<_Up, _Nm, _Yp>::type
23866: { };
23866:
23866:
23866: template<typename _Up, typename _Yp>
23866: struct __sp_is_constructible<_Up[], _Yp>
23866: : __sp_is_constructible_arr<_Up, _Yp>::type
23866: { };
23866:
23866:
23866: template<typename _Tp, typename _Yp>
23866: struct __sp_is_constructible
23866: : is_convertible<_Yp*, _Tp*>::type
23866: { };
23866:
23866:
23866:
23866: template<typename _Tp, _Lock_policy _Lp,
23866: bool = is_array<_Tp>::value, bool = is_void<_Tp>::value>
23866: class __shared_ptr_access
23866: {
23866: public:
23866: using element_type = _Tp;
23866:
23866: element_type&
23866: operator*() const noexcept
23866: {
23866: ;
23866: return *_M_get();
23866: }
23866:
23866: element_type*
23866: operator->() const noexcept
23866: {
23866: ;
23866: return _M_get();
23866: }
23866:
23866: private:
23866: element_type*
23866: _M_get() const noexcept
23866: { return static_cast<const __shared_ptr<_Tp, _Lp>*>(this)->get(); }
23866: };
23866:
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: class __shared_ptr_access<_Tp, _Lp, false, true>
23866: {
23866: public:
23866: using element_type = _Tp;
23866:
23866: element_type*
23866: operator->() const noexcept
23866: {
23866: auto __ptr = static_cast<const __shared_ptr<_Tp, _Lp>*>(this)->get();
23866: ;
23866: return __ptr;
23866: }
23866: };
23866:
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: class __shared_ptr_access<_Tp, _Lp, true, false>
23866: {
23866: public:
23866: using element_type = typename remove_extent<_Tp>::type;
23866: # 1068 "/usr/include/c++/10/bits/shared_ptr_base.h" 3
23866: element_type&
23866: operator[](ptrdiff_t __i) const
23866: {
23866: ;
23866: ;
23866: return _M_get()[__i];
23866: }
23866:
23866: private:
23866: element_type*
23866: _M_get() const noexcept
23866: { return static_cast<const __shared_ptr<_Tp, _Lp>*>(this)->get(); }
23866: };
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: class __shared_ptr
23866: : public __shared_ptr_access<_Tp, _Lp>
23866: {
23866: public:
23866: using element_type = typename remove_extent<_Tp>::type;
23866:
23866: private:
23866:
23866: template<typename _Yp>
23866: using _SafeConv
23866: = typename enable_if<__sp_is_constructible<_Tp, _Yp>::value>::type;
23866:
23866:
23866: template<typename _Yp, typename _Res = void>
23866: using _Compatible = typename
23866: enable_if<__sp_compatible_with<_Yp*, _Tp*>::value, _Res>::type;
23866:
23866:
23866: template<typename _Yp>
23866: using _Assignable = _Compatible<_Yp, __shared_ptr&>;
23866:
23866:
23866: template<typename _Yp, typename _Del, typename _Res = void,
23866: typename _Ptr = typename unique_ptr<_Yp, _Del>::pointer>
23866: using _UniqCompatible = typename enable_if<__and_<
23866: __sp_compatible_with<_Yp*, _Tp*>, is_convertible<_Ptr, element_type*>
23866: >::value, _Res>::type;
23866:
23866:
23866: template<typename _Yp, typename _Del>
23866: using _UniqAssignable = _UniqCompatible<_Yp, _Del, __shared_ptr&>;
23866:
23866: public:
23866:
23866:
23866: using weak_type = __weak_ptr<_Tp, _Lp>;
23866:
23866:
23866: constexpr __shared_ptr() noexcept
23866: : _M_ptr(0), _M_refcount()
23866: { }
23866:
23866: template<typename _Yp, typename = _SafeConv<_Yp>>
23866: explicit
23866: __shared_ptr(_Yp* __p)
23866: : _M_ptr(__p), _M_refcount(__p, typename is_array<_Tp>::type())
23866: {
23866: static_assert( !is_void<_Yp>::value, "incomplete type" );
23866: static_assert( sizeof(_Yp) > 0, "incomplete type" );
23866: _M_enable_shared_from_this_with(__p);
23866: }
23866:
23866: template<typename _Yp, typename _Deleter, typename = _SafeConv<_Yp>>
23866: __shared_ptr(_Yp* __p, _Deleter __d)
23866: : _M_ptr(__p), _M_refcount(__p, std::move(__d))
23866: {
23866: static_assert(__is_invocable<_Deleter&, _Yp*&>::value,
23866: "deleter expression d(p) is well-formed");
23866: _M_enable_shared_from_this_with(__p);
23866: }
23866:
23866: template<typename _Yp, typename _Deleter, typename _Alloc,
23866: typename = _SafeConv<_Yp>>
23866: __shared_ptr(_Yp* __p, _Deleter __d, _Alloc __a)
23866: : _M_ptr(__p), _M_refcount(__p, std::move(__d), std::move(__a))
23866: {
23866: static_assert(__is_invocable<_Deleter&, _Yp*&>::value,
23866: "deleter expression d(p) is well-formed");
23866: _M_enable_shared_from_this_with(__p);
23866: }
23866:
23866: template<typename _Deleter>
23866: __shared_ptr(nullptr_t __p, _Deleter __d)
23866: : _M_ptr(0), _M_refcount(__p, std::move(__d))
23866: { }
23866:
23866: template<typename _Deleter, typename _Alloc>
23866: __shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a)
23866: : _M_ptr(0), _M_refcount(__p, std::move(__d), std::move(__a))
23866: { }
23866:
23866:
23866: template<typename _Yp>
23866: __shared_ptr(const __shared_ptr<_Yp, _Lp>& __r,
23866: element_type* __p) noexcept
23866: : _M_ptr(__p), _M_refcount(__r._M_refcount)
23866: { }
23866:
23866:
23866: template<typename _Yp>
23866: __shared_ptr(__shared_ptr<_Yp, _Lp>&& __r,
23866: element_type* __p) noexcept
23866: : _M_ptr(__p), _M_refcount()
23866: {
23866: _M_refcount._M_swap(__r._M_refcount);
23866: __r._M_ptr = 0;
23866: }
23866:
23866: __shared_ptr(const __shared_ptr&) noexcept = default;
23866: __shared_ptr& operator=(const __shared_ptr&) noexcept = default;
23866: ~__shared_ptr() = default;
23866:
23866: template<typename _Yp, typename = _Compatible<_Yp>>
23866: __shared_ptr(const __shared_ptr<_Yp, _Lp>& __r) noexcept
23866: : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount)
23866: { }
23866:
23866: __shared_ptr(__shared_ptr&& __r) noexcept
23866: : _M_ptr(__r._M_ptr), _M_refcount()
23866: {
23866: _M_refcount._M_swap(__r._M_refcount);
23866: __r._M_ptr = 0;
23866: }
23866:
23866: template<typename _Yp, typename = _Compatible<_Yp>>
23866: __shared_ptr(__shared_ptr<_Yp, _Lp>&& __r) noexcept
23866: : _M_ptr(__r._M_ptr), _M_refcount()
23866: {
23866: _M_refcount._M_swap(__r._M_refcount);
23866: __r._M_ptr = 0;
23866: }
23866:
23866: template<typename _Yp, typename = _Compatible<_Yp>>
23866: explicit __shared_ptr(const __weak_ptr<_Yp, _Lp>& __r)
23866: : _M_refcount(__r._M_refcount)
23866: {
23866:
23866:
23866: _M_ptr = __r._M_ptr;
23866: }
23866:
23866:
23866: template<typename _Yp, typename _Del,
23866: typename = _UniqCompatible<_Yp, _Del>>
23866: __shared_ptr(unique_ptr<_Yp, _Del>&& __r)
23866: : _M_ptr(__r.get()), _M_refcount()
23866: {
23866: auto __raw = __to_address(__r.get());
23866: _M_refcount = __shared_count<_Lp>(std::move(__r));
23866: _M_enable_shared_from_this_with(__raw);
23866: }
23866: # 1244 "/usr/include/c++/10/bits/shared_ptr_base.h" 3
23866: #pragma GCC diagnostic push
23866: #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
23866:
23866: template<typename _Yp, typename = _Compatible<_Yp>>
23866: __shared_ptr(auto_ptr<_Yp>&& __r);
23866: #pragma GCC diagnostic pop
23866:
23866:
23866: constexpr __shared_ptr(nullptr_t) noexcept : __shared_ptr() { }
23866:
23866: template<typename _Yp>
23866: _Assignable<_Yp>
23866: operator=(const __shared_ptr<_Yp, _Lp>& __r) noexcept
23866: {
23866: _M_ptr = __r._M_ptr;
23866: _M_refcount = __r._M_refcount;
23866: return *this;
23866: }
23866:
23866:
23866: #pragma GCC diagnostic push
23866: #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
23866: template<typename _Yp>
23866: _Assignable<_Yp>
23866: operator=(auto_ptr<_Yp>&& __r)
23866: {
23866: __shared_ptr(std::move(__r)).swap(*this);
23866: return *this;
23866: }
23866: #pragma GCC diagnostic pop
23866:
23866:
23866: __shared_ptr&
23866: operator=(__shared_ptr&& __r) noexcept
23866: {
23866: __shared_ptr(std::move(__r)).swap(*this);
23866: return *this;
23866: }
23866:
23866: template<class _Yp>
23866: _Assignable<_Yp>
23866: operator=(__shared_ptr<_Yp, _Lp>&& __r) noexcept
23866: {
23866: __shared_ptr(std::move(__r)).swap(*this);
23866: return *this;
23866: }
23866:
23866: template<typename _Yp, typename _Del>
23866: _UniqAssignable<_Yp, _Del>
23866: operator=(unique_ptr<_Yp, _Del>&& __r)
23866: {
23866: __shared_ptr(std::move(__r)).swap(*this);
23866: return *this;
23866: }
23866:
23866: void
23866: reset() noexcept
23866: { __shared_ptr().swap(*this); }
23866:
23866: template<typename _Yp>
23866: _SafeConv<_Yp>
23866: reset(_Yp* __p)
23866: {
23866:
23866: ;
23866: __shared_ptr(__p).swap(*this);
23866: }
23866:
23866: template<typename _Yp, typename _Deleter>
23866: _SafeConv<_Yp>
23866: reset(_Yp* __p, _Deleter __d)
23866: { __shared_ptr(__p, std::move(__d)).swap(*this); }
23866:
23866: template<typename _Yp, typename _Deleter, typename _Alloc>
23866: _SafeConv<_Yp>
23866: reset(_Yp* __p, _Deleter __d, _Alloc __a)
23866: { __shared_ptr(__p, std::move(__d), std::move(__a)).swap(*this); }
23866:
23866:
23866: element_type*
23866: get() const noexcept
23866: { return _M_ptr; }
23866:
23866:
23866: explicit operator bool() const
23866: { return _M_ptr == 0 ? false : true; }
23866:
23866:
23866: bool
23866: unique() const noexcept
23866: { return _M_refcount._M_unique(); }
23866:
23866:
23866: long
23866: use_count() const noexcept
23866: { return _M_refcount._M_get_use_count(); }
23866:
23866:
23866: void
23866: swap(__shared_ptr<_Tp, _Lp>& __other) noexcept
23866: {
23866: std::swap(_M_ptr, __other._M_ptr);
23866: _M_refcount._M_swap(__other._M_refcount);
23866: }
23866: # 1356 "/usr/include/c++/10/bits/shared_ptr_base.h" 3
23866: template<typename _Tp1>
23866: bool
23866: owner_before(__shared_ptr<_Tp1, _Lp> const& __rhs) const noexcept
23866: { return _M_refcount._M_less(__rhs._M_refcount); }
23866:
23866: template<typename _Tp1>
23866: bool
23866: owner_before(__weak_ptr<_Tp1, _Lp> const& __rhs) const noexcept
23866: { return _M_refcount._M_less(__rhs._M_refcount); }
23866:
23866:
23866: protected:
23866:
23866: template<typename _Alloc, typename... _Args>
23866: __shared_ptr(_Sp_alloc_shared_tag<_Alloc> __tag, _Args&&... __args)
23866: : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...)
23866: { _M_enable_shared_from_this_with(_M_ptr); }
23866:
23866: template<typename _Tp1, _Lock_policy _Lp1, typename _Alloc,
23866: typename... _Args>
23866: friend __shared_ptr<_Tp1, _Lp1>
23866: __allocate_shared(const _Alloc& __a, _Args&&... __args);
23866:
23866:
23866:
23866: __shared_ptr(const __weak_ptr<_Tp, _Lp>& __r, std::nothrow_t)
23866: : _M_refcount(__r._M_refcount, std::nothrow)
23866: {
23866: _M_ptr = _M_refcount._M_get_use_count() ? __r._M_ptr : nullptr;
23866: }
23866:
23866: friend class __weak_ptr<_Tp, _Lp>;
23866:
23866: private:
23866:
23866: template<typename _Yp>
23866: using __esft_base_t = decltype(__enable_shared_from_this_base(
23866: std::declval<const __shared_count<_Lp>&>(),
23866: std::declval<_Yp*>()));
23866:
23866:
23866: template<typename _Yp, typename = void>
23866: struct __has_esft_base
23866: : false_type { };
23866:
23866: template<typename _Yp>
23866: struct __has_esft_base<_Yp, __void_t<__esft_base_t<_Yp>>>
23866: : __not_<is_array<_Tp>> { };
23866:
23866: template<typename _Yp, typename _Yp2 = typename remove_cv<_Yp>::type>
23866: typename enable_if<__has_esft_base<_Yp2>::value>::type
23866: _M_enable_shared_from_this_with(_Yp* __p) noexcept
23866: {
23866: if (auto __base = __enable_shared_from_this_base(_M_refcount, __p))
23866: __base->_M_weak_assign(const_cast<_Yp2*>(__p), _M_refcount);
23866: }
23866:
23866: template<typename _Yp, typename _Yp2 = typename remove_cv<_Yp>::type>
23866: typename enable_if<!__has_esft_base<_Yp2>::value>::type
23866: _M_enable_shared_from_this_with(_Yp*) noexcept
23866: { }
23866:
23866: void*
23866: _M_get_deleter(const std::type_info& __ti) const noexcept
23866: { return _M_refcount._M_get_deleter(__ti); }
23866:
23866: template<typename _Tp1, _Lock_policy _Lp1> friend class __shared_ptr;
23866: template<typename _Tp1, _Lock_policy _Lp1> friend class __weak_ptr;
23866:
23866: template<typename _Del, typename _Tp1, _Lock_policy _Lp1>
23866: friend _Del* get_deleter(const __shared_ptr<_Tp1, _Lp1>&) noexcept;
23866:
23866: template<typename _Del, typename _Tp1>
23866: friend _Del* get_deleter(const shared_ptr<_Tp1>&) noexcept;
23866:
23866: element_type* _M_ptr;
23866: __shared_count<_Lp> _M_refcount;
23866: };
23866:
23866:
23866:
23866: template<typename _Tp1, typename _Tp2, _Lock_policy _Lp>
23866: inline bool
23866: operator==(const __shared_ptr<_Tp1, _Lp>& __a,
23866: const __shared_ptr<_Tp2, _Lp>& __b) noexcept
23866: { return __a.get() == __b.get(); }
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: inline bool
23866: operator==(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept
23866: { return !__a; }
23866: # 1463 "/usr/include/c++/10/bits/shared_ptr_base.h" 3
23866: template<typename _Tp, _Lock_policy _Lp>
23866: inline bool
23866: operator==(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept
23866: { return !__a; }
23866:
23866: template<typename _Tp1, typename _Tp2, _Lock_policy _Lp>
23866: inline bool
23866: operator!=(const __shared_ptr<_Tp1, _Lp>& __a,
23866: const __shared_ptr<_Tp2, _Lp>& __b) noexcept
23866: { return __a.get() != __b.get(); }
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: inline bool
23866: operator!=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept
23866: { return (bool)__a; }
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: inline bool
23866: operator!=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept
23866: { return (bool)__a; }
23866:
23866: template<typename _Tp, typename _Up, _Lock_policy _Lp>
23866: inline bool
23866: operator<(const __shared_ptr<_Tp, _Lp>& __a,
23866: const __shared_ptr<_Up, _Lp>& __b) noexcept
23866: {
23866: using _Tp_elt = typename __shared_ptr<_Tp, _Lp>::element_type;
23866: using _Up_elt = typename __shared_ptr<_Up, _Lp>::element_type;
23866: using _Vp = typename common_type<_Tp_elt*, _Up_elt*>::type;
23866: return less<_Vp>()(__a.get(), __b.get());
23866: }
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: inline bool
23866: operator<(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept
23866: {
23866: using _Tp_elt = typename __shared_ptr<_Tp, _Lp>::element_type;
23866: return less<_Tp_elt*>()(__a.get(), nullptr);
23866: }
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: inline bool
23866: operator<(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept
23866: {
23866: using _Tp_elt = typename __shared_ptr<_Tp, _Lp>::element_type;
23866: return less<_Tp_elt*>()(nullptr, __a.get());
23866: }
23866:
23866: template<typename _Tp1, typename _Tp2, _Lock_policy _Lp>
23866: inline bool
23866: operator<=(const __shared_ptr<_Tp1, _Lp>& __a,
23866: const __shared_ptr<_Tp2, _Lp>& __b) noexcept
23866: { return !(__b < __a); }
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: inline bool
23866: operator<=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept
23866: { return !(nullptr < __a); }
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: inline bool
23866: operator<=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept
23866: { return !(__a < nullptr); }
23866:
23866: template<typename _Tp1, typename _Tp2, _Lock_policy _Lp>
23866: inline bool
23866: operator>(const __shared_ptr<_Tp1, _Lp>& __a,
23866: const __shared_ptr<_Tp2, _Lp>& __b) noexcept
23866: { return (__b < __a); }
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: inline bool
23866: operator>(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept
23866: { return nullptr < __a; }
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: inline bool
23866: operator>(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept
23866: { return __a < nullptr; }
23866:
23866: template<typename _Tp1, typename _Tp2, _Lock_policy _Lp>
23866: inline bool
23866: operator>=(const __shared_ptr<_Tp1, _Lp>& __a,
23866: const __shared_ptr<_Tp2, _Lp>& __b) noexcept
23866: { return !(__a < __b); }
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: inline bool
23866: operator>=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept
23866: { return !(__a < nullptr); }
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: inline bool
23866: operator>=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept
23866: { return !(nullptr < __a); }
23866:
23866:
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: inline void
23866: swap(__shared_ptr<_Tp, _Lp>& __a, __shared_ptr<_Tp, _Lp>& __b) noexcept
23866: { __a.swap(__b); }
23866: # 1573 "/usr/include/c++/10/bits/shared_ptr_base.h" 3
23866: template<typename _Tp, typename _Tp1, _Lock_policy _Lp>
23866: inline __shared_ptr<_Tp, _Lp>
23866: static_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept
23866: {
23866: using _Sp = __shared_ptr<_Tp, _Lp>;
23866: return _Sp(__r, static_cast<typename _Sp::element_type*>(__r.get()));
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp, typename _Tp1, _Lock_policy _Lp>
23866: inline __shared_ptr<_Tp, _Lp>
23866: const_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept
23866: {
23866: using _Sp = __shared_ptr<_Tp, _Lp>;
23866: return _Sp(__r, const_cast<typename _Sp::element_type*>(__r.get()));
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp, typename _Tp1, _Lock_policy _Lp>
23866: inline __shared_ptr<_Tp, _Lp>
23866: dynamic_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept
23866: {
23866: using _Sp = __shared_ptr<_Tp, _Lp>;
23866: if (auto* __p = dynamic_cast<typename _Sp::element_type*>(__r.get()))
23866: return _Sp(__r, __p);
23866: return _Sp();
23866: }
23866:
23866:
23866: template<typename _Tp, typename _Tp1, _Lock_policy _Lp>
23866: inline __shared_ptr<_Tp, _Lp>
23866: reinterpret_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept
23866: {
23866: using _Sp = __shared_ptr<_Tp, _Lp>;
23866: return _Sp(__r, reinterpret_cast<typename _Sp::element_type*>(__r.get()));
23866: }
23866:
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: class __weak_ptr
23866: {
23866: template<typename _Yp, typename _Res = void>
23866: using _Compatible = typename
23866: enable_if<__sp_compatible_with<_Yp*, _Tp*>::value, _Res>::type;
23866:
23866:
23866: template<typename _Yp>
23866: using _Assignable = _Compatible<_Yp, __weak_ptr&>;
23866:
23866: public:
23866: using element_type = typename remove_extent<_Tp>::type;
23866:
23866: constexpr __weak_ptr() noexcept
23866: : _M_ptr(nullptr), _M_refcount()
23866: { }
23866:
23866: __weak_ptr(const __weak_ptr&) noexcept = default;
23866:
23866: ~__weak_ptr() = default;
23866: # 1655 "/usr/include/c++/10/bits/shared_ptr_base.h" 3
23866: template<typename _Yp, typename = _Compatible<_Yp>>
23866: __weak_ptr(const __weak_ptr<_Yp, _Lp>& __r) noexcept
23866: : _M_refcount(__r._M_refcount)
23866: { _M_ptr = __r.lock().get(); }
23866:
23866: template<typename _Yp, typename = _Compatible<_Yp>>
23866: __weak_ptr(const __shared_ptr<_Yp, _Lp>& __r) noexcept
23866: : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount)
23866: { }
23866:
23866: __weak_ptr(__weak_ptr&& __r) noexcept
23866: : _M_ptr(__r._M_ptr), _M_refcount(std::move(__r._M_refcount))
23866: { __r._M_ptr = nullptr; }
23866:
23866: template<typename _Yp, typename = _Compatible<_Yp>>
23866: __weak_ptr(__weak_ptr<_Yp, _Lp>&& __r) noexcept
23866: : _M_ptr(__r.lock().get()), _M_refcount(std::move(__r._M_refcount))
23866: { __r._M_ptr = nullptr; }
23866:
23866: __weak_ptr&
23866: operator=(const __weak_ptr& __r) noexcept = default;
23866:
23866: template<typename _Yp>
23866: _Assignable<_Yp>
23866: operator=(const __weak_ptr<_Yp, _Lp>& __r) noexcept
23866: {
23866: _M_ptr = __r.lock().get();
23866: _M_refcount = __r._M_refcount;
23866: return *this;
23866: }
23866:
23866: template<typename _Yp>
23866: _Assignable<_Yp>
23866: operator=(const __shared_ptr<_Yp, _Lp>& __r) noexcept
23866: {
23866: _M_ptr = __r._M_ptr;
23866: _M_refcount = __r._M_refcount;
23866: return *this;
23866: }
23866:
23866: __weak_ptr&
23866: operator=(__weak_ptr&& __r) noexcept
23866: {
23866: _M_ptr = __r._M_ptr;
23866: _M_refcount = std::move(__r._M_refcount);
23866: __r._M_ptr = nullptr;
23866: return *this;
23866: }
23866:
23866: template<typename _Yp>
23866: _Assignable<_Yp>
23866: operator=(__weak_ptr<_Yp, _Lp>&& __r) noexcept
23866: {
23866: _M_ptr = __r.lock().get();
23866: _M_refcount = std::move(__r._M_refcount);
23866: __r._M_ptr = nullptr;
23866: return *this;
23866: }
23866:
23866: __shared_ptr<_Tp, _Lp>
23866: lock() const noexcept
23866: { return __shared_ptr<element_type, _Lp>(*this, std::nothrow); }
23866:
23866: long
23866: use_count() const noexcept
23866: { return _M_refcount._M_get_use_count(); }
23866:
23866: bool
23866: expired() const noexcept
23866: { return _M_refcount._M_get_use_count() == 0; }
23866:
23866: template<typename _Tp1>
23866: bool
23866: owner_before(const __shared_ptr<_Tp1, _Lp>& __rhs) const noexcept
23866: { return _M_refcount._M_less(__rhs._M_refcount); }
23866:
23866: template<typename _Tp1>
23866: bool
23866: owner_before(const __weak_ptr<_Tp1, _Lp>& __rhs) const noexcept
23866: { return _M_refcount._M_less(__rhs._M_refcount); }
23866:
23866: void
23866: reset() noexcept
23866: { __weak_ptr().swap(*this); }
23866:
23866: void
23866: swap(__weak_ptr& __s) noexcept
23866: {
23866: std::swap(_M_ptr, __s._M_ptr);
23866: _M_refcount._M_swap(__s._M_refcount);
23866: }
23866:
23866: private:
23866:
23866: void
23866: _M_assign(_Tp* __ptr, const __shared_count<_Lp>& __refcount) noexcept
23866: {
23866: if (use_count() == 0)
23866: {
23866: _M_ptr = __ptr;
23866: _M_refcount = __refcount;
23866: }
23866: }
23866:
23866: template<typename _Tp1, _Lock_policy _Lp1> friend class __shared_ptr;
23866: template<typename _Tp1, _Lock_policy _Lp1> friend class __weak_ptr;
23866: friend class __enable_shared_from_this<_Tp, _Lp>;
23866: friend class enable_shared_from_this<_Tp>;
23866:
23866: element_type* _M_ptr;
23866: __weak_count<_Lp> _M_refcount;
23866: };
23866:
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: inline void
23866: swap(__weak_ptr<_Tp, _Lp>& __a, __weak_ptr<_Tp, _Lp>& __b) noexcept
23866: { __a.swap(__b); }
23866:
23866: template<typename _Tp, typename _Tp1>
23866: struct _Sp_owner_less : public binary_function<_Tp, _Tp, bool>
23866: {
23866: bool
23866: operator()(const _Tp& __lhs, const _Tp& __rhs) const noexcept
23866: { return __lhs.owner_before(__rhs); }
23866:
23866: bool
23866: operator()(const _Tp& __lhs, const _Tp1& __rhs) const noexcept
23866: { return __lhs.owner_before(__rhs); }
23866:
23866: bool
23866: operator()(const _Tp1& __lhs, const _Tp& __rhs) const noexcept
23866: { return __lhs.owner_before(__rhs); }
23866: };
23866:
23866: template<>
23866: struct _Sp_owner_less<void, void>
23866: {
23866: template<typename _Tp, typename _Up>
23866: auto
23866: operator()(const _Tp& __lhs, const _Up& __rhs) const noexcept
23866: -> decltype(__lhs.owner_before(__rhs))
23866: { return __lhs.owner_before(__rhs); }
23866:
23866: using is_transparent = void;
23866: };
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: struct owner_less<__shared_ptr<_Tp, _Lp>>
23866: : public _Sp_owner_less<__shared_ptr<_Tp, _Lp>, __weak_ptr<_Tp, _Lp>>
23866: { };
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: struct owner_less<__weak_ptr<_Tp, _Lp>>
23866: : public _Sp_owner_less<__weak_ptr<_Tp, _Lp>, __shared_ptr<_Tp, _Lp>>
23866: { };
23866:
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: class __enable_shared_from_this
23866: {
23866: protected:
23866: constexpr __enable_shared_from_this() noexcept { }
23866:
23866: __enable_shared_from_this(const __enable_shared_from_this&) noexcept { }
23866:
23866: __enable_shared_from_this&
23866: operator=(const __enable_shared_from_this&) noexcept
23866: { return *this; }
23866:
23866: ~__enable_shared_from_this() { }
23866:
23866: public:
23866: __shared_ptr<_Tp, _Lp>
23866: shared_from_this()
23866: { return __shared_ptr<_Tp, _Lp>(this->_M_weak_this); }
23866:
23866: __shared_ptr<const _Tp, _Lp>
23866: shared_from_this() const
23866: { return __shared_ptr<const _Tp, _Lp>(this->_M_weak_this); }
23866:
23866:
23866: __weak_ptr<_Tp, _Lp>
23866: weak_from_this() noexcept
23866: { return this->_M_weak_this; }
23866:
23866: __weak_ptr<const _Tp, _Lp>
23866: weak_from_this() const noexcept
23866: { return this->_M_weak_this; }
23866:
23866:
23866: private:
23866: template<typename _Tp1>
23866: void
23866: _M_weak_assign(_Tp1* __p, const __shared_count<_Lp>& __n) const noexcept
23866: { _M_weak_this._M_assign(__p, __n); }
23866:
23866: friend const __enable_shared_from_this*
23866: __enable_shared_from_this_base(const __shared_count<_Lp>&,
23866: const __enable_shared_from_this* __p)
23866: { return __p; }
23866:
23866: template<typename, _Lock_policy>
23866: friend class __shared_ptr;
23866:
23866: mutable __weak_ptr<_Tp, _Lp> _M_weak_this;
23866: };
23866:
23866: template<typename _Tp, _Lock_policy _Lp = __default_lock_policy,
23866: typename _Alloc, typename... _Args>
23866: inline __shared_ptr<_Tp, _Lp>
23866: __allocate_shared(const _Alloc& __a, _Args&&... __args)
23866: {
23866: return __shared_ptr<_Tp, _Lp>(_Sp_alloc_shared_tag<_Alloc>{__a},
23866: std::forward<_Args>(__args)...);
23866: }
23866:
23866: template<typename _Tp, _Lock_policy _Lp = __default_lock_policy,
23866: typename... _Args>
23866: inline __shared_ptr<_Tp, _Lp>
23866: __make_shared(_Args&&... __args)
23866: {
23866: typedef typename std::remove_const<_Tp>::type _Tp_nc;
23866: return std::__allocate_shared<_Tp, _Lp>(std::allocator<_Tp_nc>(),
23866: std::forward<_Args>(__args)...);
23866: }
23866:
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: struct hash<__shared_ptr<_Tp, _Lp>>
23866: : public __hash_base<size_t, __shared_ptr<_Tp, _Lp>>
23866: {
23866: size_t
23866: operator()(const __shared_ptr<_Tp, _Lp>& __s) const noexcept
23866: {
23866: return hash<typename __shared_ptr<_Tp, _Lp>::element_type*>()(
23866: __s.get());
23866: }
23866: };
23866:
23866:
23866: }
23866: # 53 "/usr/include/c++/10/bits/shared_ptr.h" 2 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 67 "/usr/include/c++/10/bits/shared_ptr.h" 3
23866: template<typename _Ch, typename _Tr, typename _Tp, _Lock_policy _Lp>
23866: inline std::basic_ostream<_Ch, _Tr>&
23866: operator<<(std::basic_ostream<_Ch, _Tr>& __os,
23866: const __shared_ptr<_Tp, _Lp>& __p)
23866: {
23866: __os << __p.get();
23866: return __os;
23866: }
23866:
23866: template<typename _Del, typename _Tp, _Lock_policy _Lp>
23866: inline _Del*
23866: get_deleter(const __shared_ptr<_Tp, _Lp>& __p) noexcept
23866: {
23866:
23866: return static_cast<_Del*>(__p._M_get_deleter(typeid(_Del)));
23866:
23866:
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Del, typename _Tp>
23866: inline _Del*
23866: get_deleter(const shared_ptr<_Tp>& __p) noexcept
23866: {
23866:
23866: return static_cast<_Del*>(__p._M_get_deleter(typeid(_Del)));
23866:
23866:
23866:
23866: }
23866: # 120 "/usr/include/c++/10/bits/shared_ptr.h" 3
23866: template<typename _Tp>
23866: class shared_ptr : public __shared_ptr<_Tp>
23866: {
23866: template<typename... _Args>
23866: using _Constructible = typename enable_if<
23866: is_constructible<__shared_ptr<_Tp>, _Args...>::value
23866: >::type;
23866:
23866: template<typename _Arg>
23866: using _Assignable = typename enable_if<
23866: is_assignable<__shared_ptr<_Tp>&, _Arg>::value, shared_ptr&
23866: >::type;
23866:
23866: public:
23866:
23866:
23866: using element_type = typename __shared_ptr<_Tp>::element_type;
23866:
23866:
23866: #define __cpp_lib_shared_ptr_weak_type 201606
23866:
23866: using weak_type = weak_ptr<_Tp>;
23866:
23866:
23866:
23866:
23866:
23866: constexpr shared_ptr() noexcept : __shared_ptr<_Tp>() { }
23866:
23866: shared_ptr(const shared_ptr&) noexcept = default;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Yp, typename = _Constructible<_Yp*>>
23866: explicit
23866: shared_ptr(_Yp* __p) : __shared_ptr<_Tp>(__p) { }
23866: # 174 "/usr/include/c++/10/bits/shared_ptr.h" 3
23866: template<typename _Yp, typename _Deleter,
23866: typename = _Constructible<_Yp*, _Deleter>>
23866: shared_ptr(_Yp* __p, _Deleter __d)
23866: : __shared_ptr<_Tp>(__p, std::move(__d)) { }
23866: # 192 "/usr/include/c++/10/bits/shared_ptr.h" 3
23866: template<typename _Deleter>
23866: shared_ptr(nullptr_t __p, _Deleter __d)
23866: : __shared_ptr<_Tp>(__p, std::move(__d)) { }
23866: # 211 "/usr/include/c++/10/bits/shared_ptr.h" 3
23866: template<typename _Yp, typename _Deleter, typename _Alloc,
23866: typename = _Constructible<_Yp*, _Deleter, _Alloc>>
23866: shared_ptr(_Yp* __p, _Deleter __d, _Alloc __a)
23866: : __shared_ptr<_Tp>(__p, std::move(__d), std::move(__a)) { }
23866: # 231 "/usr/include/c++/10/bits/shared_ptr.h" 3
23866: template<typename _Deleter, typename _Alloc>
23866: shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a)
23866: : __shared_ptr<_Tp>(__p, std::move(__d), std::move(__a)) { }
23866: # 255 "/usr/include/c++/10/bits/shared_ptr.h" 3
23866: template<typename _Yp>
23866: shared_ptr(const shared_ptr<_Yp>& __r, element_type* __p) noexcept
23866: : __shared_ptr<_Tp>(__r, __p) { }
23866: # 293 "/usr/include/c++/10/bits/shared_ptr.h" 3
23866: template<typename _Yp,
23866: typename = _Constructible<const shared_ptr<_Yp>&>>
23866: shared_ptr(const shared_ptr<_Yp>& __r) noexcept
23866: : __shared_ptr<_Tp>(__r) { }
23866:
23866:
23866:
23866:
23866:
23866:
23866: shared_ptr(shared_ptr&& __r) noexcept
23866: : __shared_ptr<_Tp>(std::move(__r)) { }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Yp, typename = _Constructible<shared_ptr<_Yp>>>
23866: shared_ptr(shared_ptr<_Yp>&& __r) noexcept
23866: : __shared_ptr<_Tp>(std::move(__r)) { }
23866: # 323 "/usr/include/c++/10/bits/shared_ptr.h" 3
23866: template<typename _Yp, typename = _Constructible<const weak_ptr<_Yp>&>>
23866: explicit shared_ptr(const weak_ptr<_Yp>& __r)
23866: : __shared_ptr<_Tp>(__r) { }
23866:
23866:
23866: #pragma GCC diagnostic push
23866: #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
23866: template<typename _Yp, typename = _Constructible<auto_ptr<_Yp>>>
23866: shared_ptr(auto_ptr<_Yp>&& __r);
23866: #pragma GCC diagnostic pop
23866:
23866:
23866:
23866:
23866: template<typename _Yp, typename _Del,
23866: typename = _Constructible<unique_ptr<_Yp, _Del>>>
23866: shared_ptr(unique_ptr<_Yp, _Del>&& __r)
23866: : __shared_ptr<_Tp>(std::move(__r)) { }
23866: # 356 "/usr/include/c++/10/bits/shared_ptr.h" 3
23866: constexpr shared_ptr(nullptr_t) noexcept : shared_ptr() { }
23866:
23866: shared_ptr& operator=(const shared_ptr&) noexcept = default;
23866:
23866: template<typename _Yp>
23866: _Assignable<const shared_ptr<_Yp>&>
23866: operator=(const shared_ptr<_Yp>& __r) noexcept
23866: {
23866: this->__shared_ptr<_Tp>::operator=(__r);
23866: return *this;
23866: }
23866:
23866:
23866: #pragma GCC diagnostic push
23866: #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
23866: template<typename _Yp>
23866: _Assignable<auto_ptr<_Yp>>
23866: operator=(auto_ptr<_Yp>&& __r)
23866: {
23866: this->__shared_ptr<_Tp>::operator=(std::move(__r));
23866: return *this;
23866: }
23866: #pragma GCC diagnostic pop
23866:
23866:
23866: shared_ptr&
23866: operator=(shared_ptr&& __r) noexcept
23866: {
23866: this->__shared_ptr<_Tp>::operator=(std::move(__r));
23866: return *this;
23866: }
23866:
23866: template<class _Yp>
23866: _Assignable<shared_ptr<_Yp>>
23866: operator=(shared_ptr<_Yp>&& __r) noexcept
23866: {
23866: this->__shared_ptr<_Tp>::operator=(std::move(__r));
23866: return *this;
23866: }
23866:
23866: template<typename _Yp, typename _Del>
23866: _Assignable<unique_ptr<_Yp, _Del>>
23866: operator=(unique_ptr<_Yp, _Del>&& __r)
23866: {
23866: this->__shared_ptr<_Tp>::operator=(std::move(__r));
23866: return *this;
23866: }
23866:
23866: private:
23866:
23866: template<typename _Alloc, typename... _Args>
23866: shared_ptr(_Sp_alloc_shared_tag<_Alloc> __tag, _Args&&... __args)
23866: : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...)
23866: { }
23866:
23866: template<typename _Yp, typename _Alloc, typename... _Args>
23866: friend shared_ptr<_Yp>
23866: allocate_shared(const _Alloc& __a, _Args&&... __args);
23866:
23866:
23866: shared_ptr(const weak_ptr<_Tp>& __r, std::nothrow_t)
23866: : __shared_ptr<_Tp>(__r, std::nothrow) { }
23866:
23866: friend class weak_ptr<_Tp>;
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: shared_ptr(weak_ptr<_Tp>) -> shared_ptr<_Tp>;
23866: template<typename _Tp, typename _Del>
23866: shared_ptr(unique_ptr<_Tp, _Del>) -> shared_ptr<_Tp>;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: [[__nodiscard__]] inline bool
23866: operator==(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept
23866: { return __a.get() == __b.get(); }
23866:
23866:
23866: template<typename _Tp>
23866: [[__nodiscard__]] inline bool
23866: operator==(const shared_ptr<_Tp>& __a, nullptr_t) noexcept
23866: { return !__a; }
23866: # 461 "/usr/include/c++/10/bits/shared_ptr.h" 3
23866: template<typename _Tp>
23866: [[__nodiscard__]] inline bool
23866: operator==(nullptr_t, const shared_ptr<_Tp>& __a) noexcept
23866: { return !__a; }
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: [[__nodiscard__]] inline bool
23866: operator!=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept
23866: { return __a.get() != __b.get(); }
23866:
23866:
23866: template<typename _Tp>
23866: [[__nodiscard__]] inline bool
23866: operator!=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept
23866: { return (bool)__a; }
23866:
23866:
23866: template<typename _Tp>
23866: [[__nodiscard__]] inline bool
23866: operator!=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept
23866: { return (bool)__a; }
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: [[__nodiscard__]] inline bool
23866: operator<(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept
23866: {
23866: using _Tp_elt = typename shared_ptr<_Tp>::element_type;
23866: using _Up_elt = typename shared_ptr<_Up>::element_type;
23866: using _Vp = typename common_type<_Tp_elt*, _Up_elt*>::type;
23866: return less<_Vp>()(__a.get(), __b.get());
23866: }
23866:
23866:
23866: template<typename _Tp>
23866: [[__nodiscard__]] inline bool
23866: operator<(const shared_ptr<_Tp>& __a, nullptr_t) noexcept
23866: {
23866: using _Tp_elt = typename shared_ptr<_Tp>::element_type;
23866: return less<_Tp_elt*>()(__a.get(), nullptr);
23866: }
23866:
23866:
23866: template<typename _Tp>
23866: [[__nodiscard__]] inline bool
23866: operator<(nullptr_t, const shared_ptr<_Tp>& __a) noexcept
23866: {
23866: using _Tp_elt = typename shared_ptr<_Tp>::element_type;
23866: return less<_Tp_elt*>()(nullptr, __a.get());
23866: }
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: [[__nodiscard__]] inline bool
23866: operator<=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept
23866: { return !(__b < __a); }
23866:
23866:
23866: template<typename _Tp>
23866: [[__nodiscard__]] inline bool
23866: operator<=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept
23866: { return !(nullptr < __a); }
23866:
23866:
23866: template<typename _Tp>
23866: [[__nodiscard__]] inline bool
23866: operator<=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept
23866: { return !(__a < nullptr); }
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: [[__nodiscard__]] inline bool
23866: operator>(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept
23866: { return (__b < __a); }
23866:
23866:
23866: template<typename _Tp>
23866: [[__nodiscard__]] inline bool
23866: operator>(const shared_ptr<_Tp>& __a, nullptr_t) noexcept
23866: { return nullptr < __a; }
23866:
23866:
23866: template<typename _Tp>
23866: [[__nodiscard__]] inline bool
23866: operator>(nullptr_t, const shared_ptr<_Tp>& __a) noexcept
23866: { return __a < nullptr; }
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: [[__nodiscard__]] inline bool
23866: operator>=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept
23866: { return !(__a < __b); }
23866:
23866:
23866: template<typename _Tp>
23866: [[__nodiscard__]] inline bool
23866: operator>=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept
23866: { return !(__a < nullptr); }
23866:
23866:
23866: template<typename _Tp>
23866: [[__nodiscard__]] inline bool
23866: operator>=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept
23866: { return !(nullptr < __a); }
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: inline void
23866: swap(shared_ptr<_Tp>& __a, shared_ptr<_Tp>& __b) noexcept
23866: { __a.swap(__b); }
23866:
23866:
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: inline shared_ptr<_Tp>
23866: static_pointer_cast(const shared_ptr<_Up>& __r) noexcept
23866: {
23866: using _Sp = shared_ptr<_Tp>;
23866: return _Sp(__r, static_cast<typename _Sp::element_type*>(__r.get()));
23866: }
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: inline shared_ptr<_Tp>
23866: const_pointer_cast(const shared_ptr<_Up>& __r) noexcept
23866: {
23866: using _Sp = shared_ptr<_Tp>;
23866: return _Sp(__r, const_cast<typename _Sp::element_type*>(__r.get()));
23866: }
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: inline shared_ptr<_Tp>
23866: dynamic_pointer_cast(const shared_ptr<_Up>& __r) noexcept
23866: {
23866: using _Sp = shared_ptr<_Tp>;
23866: if (auto* __p = dynamic_cast<typename _Sp::element_type*>(__r.get()))
23866: return _Sp(__r, __p);
23866: return _Sp();
23866: }
23866:
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: inline shared_ptr<_Tp>
23866: reinterpret_pointer_cast(const shared_ptr<_Up>& __r) noexcept
23866: {
23866: using _Sp = shared_ptr<_Tp>;
23866: return _Sp(__r, reinterpret_cast<typename _Sp::element_type*>(__r.get()));
23866: }
23866: # 684 "/usr/include/c++/10/bits/shared_ptr.h" 3
23866: template<typename _Tp>
23866: class weak_ptr : public __weak_ptr<_Tp>
23866: {
23866: template<typename _Arg>
23866: using _Constructible = typename enable_if<
23866: is_constructible<__weak_ptr<_Tp>, _Arg>::value
23866: >::type;
23866:
23866: template<typename _Arg>
23866: using _Assignable = typename enable_if<
23866: is_assignable<__weak_ptr<_Tp>&, _Arg>::value, weak_ptr&
23866: >::type;
23866:
23866: public:
23866: constexpr weak_ptr() noexcept = default;
23866:
23866: template<typename _Yp,
23866: typename = _Constructible<const shared_ptr<_Yp>&>>
23866: weak_ptr(const shared_ptr<_Yp>& __r) noexcept
23866: : __weak_ptr<_Tp>(__r) { }
23866:
23866: weak_ptr(const weak_ptr&) noexcept = default;
23866:
23866: template<typename _Yp, typename = _Constructible<const weak_ptr<_Yp>&>>
23866: weak_ptr(const weak_ptr<_Yp>& __r) noexcept
23866: : __weak_ptr<_Tp>(__r) { }
23866:
23866: weak_ptr(weak_ptr&&) noexcept = default;
23866:
23866: template<typename _Yp, typename = _Constructible<weak_ptr<_Yp>>>
23866: weak_ptr(weak_ptr<_Yp>&& __r) noexcept
23866: : __weak_ptr<_Tp>(std::move(__r)) { }
23866:
23866: weak_ptr&
23866: operator=(const weak_ptr& __r) noexcept = default;
23866:
23866: template<typename _Yp>
23866: _Assignable<const weak_ptr<_Yp>&>
23866: operator=(const weak_ptr<_Yp>& __r) noexcept
23866: {
23866: this->__weak_ptr<_Tp>::operator=(__r);
23866: return *this;
23866: }
23866:
23866: template<typename _Yp>
23866: _Assignable<const shared_ptr<_Yp>&>
23866: operator=(const shared_ptr<_Yp>& __r) noexcept
23866: {
23866: this->__weak_ptr<_Tp>::operator=(__r);
23866: return *this;
23866: }
23866:
23866: weak_ptr&
23866: operator=(weak_ptr&& __r) noexcept = default;
23866:
23866: template<typename _Yp>
23866: _Assignable<weak_ptr<_Yp>>
23866: operator=(weak_ptr<_Yp>&& __r) noexcept
23866: {
23866: this->__weak_ptr<_Tp>::operator=(std::move(__r));
23866: return *this;
23866: }
23866:
23866: shared_ptr<_Tp>
23866: lock() const noexcept
23866: { return shared_ptr<_Tp>(*this, std::nothrow); }
23866: };
23866:
23866:
23866: template<typename _Tp>
23866: weak_ptr(shared_ptr<_Tp>) -> weak_ptr<_Tp>;
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: inline void
23866: swap(weak_ptr<_Tp>& __a, weak_ptr<_Tp>& __b) noexcept
23866: { __a.swap(__b); }
23866:
23866:
23866:
23866: template<typename _Tp = void>
23866: struct owner_less;
23866:
23866:
23866: template<>
23866: struct owner_less<void> : _Sp_owner_less<void, void>
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct owner_less<shared_ptr<_Tp>>
23866: : public _Sp_owner_less<shared_ptr<_Tp>, weak_ptr<_Tp>>
23866: { };
23866:
23866:
23866: template<typename _Tp>
23866: struct owner_less<weak_ptr<_Tp>>
23866: : public _Sp_owner_less<weak_ptr<_Tp>, shared_ptr<_Tp>>
23866: { };
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: class enable_shared_from_this
23866: {
23866: protected:
23866: constexpr enable_shared_from_this() noexcept { }
23866:
23866: enable_shared_from_this(const enable_shared_from_this&) noexcept { }
23866:
23866: enable_shared_from_this&
23866: operator=(const enable_shared_from_this&) noexcept
23866: { return *this; }
23866:
23866: ~enable_shared_from_this() { }
23866:
23866: public:
23866: shared_ptr<_Tp>
23866: shared_from_this()
23866: { return shared_ptr<_Tp>(this->_M_weak_this); }
23866:
23866: shared_ptr<const _Tp>
23866: shared_from_this() const
23866: { return shared_ptr<const _Tp>(this->_M_weak_this); }
23866:
23866:
23866: #define __cpp_lib_enable_shared_from_this 201603
23866: weak_ptr<_Tp>
23866: weak_from_this() noexcept
23866: { return this->_M_weak_this; }
23866:
23866: weak_ptr<const _Tp>
23866: weak_from_this() const noexcept
23866: { return this->_M_weak_this; }
23866:
23866:
23866: private:
23866: template<typename _Tp1>
23866: void
23866: _M_weak_assign(_Tp1* __p, const __shared_count<>& __n) const noexcept
23866: { _M_weak_this._M_assign(__p, __n); }
23866:
23866:
23866: friend const enable_shared_from_this*
23866: __enable_shared_from_this_base(const __shared_count<>&,
23866: const enable_shared_from_this* __p)
23866: { return __p; }
23866:
23866: template<typename, _Lock_policy>
23866: friend class __shared_ptr;
23866:
23866: mutable weak_ptr<_Tp> _M_weak_this;
23866: };
23866: # 855 "/usr/include/c++/10/bits/shared_ptr.h" 3
23866: template<typename _Tp, typename _Alloc, typename... _Args>
23866: inline shared_ptr<_Tp>
23866: allocate_shared(const _Alloc& __a, _Args&&... __args)
23866: {
23866: return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a},
23866: std::forward<_Args>(__args)...);
23866: }
23866: # 870 "/usr/include/c++/10/bits/shared_ptr.h" 3
23866: template<typename _Tp, typename... _Args>
23866: inline shared_ptr<_Tp>
23866: make_shared(_Args&&... __args)
23866: {
23866: typedef typename std::remove_cv<_Tp>::type _Tp_nc;
23866: return std::allocate_shared<_Tp>(std::allocator<_Tp_nc>(),
23866: std::forward<_Args>(__args)...);
23866: }
23866:
23866:
23866: template<typename _Tp>
23866: struct hash<shared_ptr<_Tp>>
23866: : public __hash_base<size_t, shared_ptr<_Tp>>
23866: {
23866: size_t
23866: operator()(const shared_ptr<_Tp>& __s) const noexcept
23866: {
23866: return std::hash<typename shared_ptr<_Tp>::element_type*>()(__s.get());
23866: }
23866: };
23866:
23866:
23866:
23866:
23866:
23866: namespace __detail::__variant
23866: {
23866: template<typename> struct _Never_valueless_alt;
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct _Never_valueless_alt<std::shared_ptr<_Tp>>
23866: : std::true_type
23866: { };
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct _Never_valueless_alt<std::weak_ptr<_Tp>>
23866: : std::true_type
23866: { };
23866: }
23866:
23866:
23866:
23866: }
23866: # 47 "/usr/include/c++/10/bits/fs_path.h" 2 3
23866: # 58 "/usr/include/c++/10/bits/fs_path.h" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: namespace filesystem
23866: {
23866: namespace __cxx11 {
23866:
23866:
23866:
23866:
23866:
23866: class path;
23866:
23866:
23866: namespace __detail
23866: {
23866: template<typename _CharT>
23866: using __is_encoded_char = __is_one_of<remove_const_t<_CharT>,
23866: char,
23866:
23866:
23866:
23866:
23866: wchar_t,
23866:
23866: char16_t, char32_t>;
23866:
23866: template<typename _Iter,
23866: typename _Iter_traits = std::iterator_traits<_Iter>>
23866: using __is_path_iter_src
23866: = __and_<__is_encoded_char<typename _Iter_traits::value_type>,
23866: std::is_base_of<std::input_iterator_tag,
23866: typename _Iter_traits::iterator_category>>;
23866:
23866: template<typename _Iter>
23866: static __is_path_iter_src<_Iter>
23866: __is_path_src(_Iter, int);
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: static __is_encoded_char<_CharT>
23866: __is_path_src(const basic_string<_CharT, _Traits, _Alloc>&, int);
23866:
23866: template<typename _CharT, typename _Traits>
23866: static __is_encoded_char<_CharT>
23866: __is_path_src(const basic_string_view<_CharT, _Traits>&, int);
23866:
23866: template<typename _Unknown>
23866: static std::false_type
23866: __is_path_src(const _Unknown&, ...);
23866:
23866: template<typename _Tp1, typename _Tp2>
23866: struct __constructible_from;
23866:
23866: template<typename _Iter>
23866: struct __constructible_from<_Iter, _Iter>
23866: : __is_path_iter_src<_Iter>
23866: { };
23866:
23866: template<typename _Source>
23866: struct __constructible_from<_Source, void>
23866: : decltype(__is_path_src(std::declval<_Source>(), 0))
23866: { };
23866:
23866: template<typename _Tp1, typename _Tp2 = void>
23866: using _Path = typename
23866: std::enable_if<__and_<__not_<is_same<remove_cv_t<_Tp1>, path>>,
23866: __not_<is_void<remove_pointer_t<_Tp1>>>,
23866: __constructible_from<_Tp1, _Tp2>>::value,
23866: path>::type;
23866:
23866: template<typename _Source>
23866: _Source
23866: _S_range_begin(_Source __begin) { return __begin; }
23866:
23866: struct __null_terminated { };
23866:
23866: template<typename _Source>
23866: __null_terminated
23866: _S_range_end(_Source) { return {}; }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline const _CharT*
23866: _S_range_begin(const basic_string<_CharT, _Traits, _Alloc>& __str)
23866: { return __str.data(); }
23866:
23866: template<typename _CharT, typename _Traits, typename _Alloc>
23866: inline const _CharT*
23866: _S_range_end(const basic_string<_CharT, _Traits, _Alloc>& __str)
23866: { return __str.data() + __str.size(); }
23866:
23866: template<typename _CharT, typename _Traits>
23866: inline const _CharT*
23866: _S_range_begin(const basic_string_view<_CharT, _Traits>& __str)
23866: { return __str.data(); }
23866:
23866: template<typename _CharT, typename _Traits>
23866: inline const _CharT*
23866: _S_range_end(const basic_string_view<_CharT, _Traits>& __str)
23866: { return __str.data() + __str.size(); }
23866:
23866: template<typename _Tp,
23866: typename _Iter = decltype(_S_range_begin(std::declval<_Tp>())),
23866: typename _Val = typename std::iterator_traits<_Iter>::value_type,
23866: typename _UnqualVal = std::remove_const_t<_Val>>
23866: using __value_type_is_char
23866: = std::enable_if_t<std::is_same_v<_UnqualVal, char>,
23866: _UnqualVal>;
23866:
23866: template<typename _Tp,
23866: typename _Iter = decltype(_S_range_begin(std::declval<_Tp>())),
23866: typename _Val = typename std::iterator_traits<_Iter>::value_type,
23866: typename _UnqualVal = std::remove_const_t<_Val>>
23866: using __value_type_is_char_or_char8_t
23866: = std::enable_if_t<__or_v<
23866: std::is_same<_UnqualVal, char>
23866:
23866:
23866:
23866: >,
23866: _UnqualVal>;
23866:
23866: }
23866:
23866:
23866:
23866: class path
23866: {
23866: public:
23866: # 195 "/usr/include/c++/10/bits/fs_path.h" 3
23866: using value_type = char;
23866:
23866: static constexpr value_type preferred_separator = '/';
23866:
23866: using string_type = std::basic_string<value_type>;
23866:
23866:
23866: enum format : unsigned char { native_format, generic_format, auto_format };
23866:
23866:
23866:
23866: path() noexcept { }
23866:
23866: path(const path& __p) = default;
23866:
23866: path(path&& __p)
23866:
23866: noexcept
23866:
23866: : _M_pathname(std::move(__p._M_pathname)),
23866: _M_cmpts(std::move(__p._M_cmpts))
23866: { __p.clear(); }
23866:
23866: path(string_type&& __source, format = auto_format)
23866: : _M_pathname(std::move(__source))
23866: { _M_split_cmpts(); }
23866:
23866: template<typename _Source,
23866: typename _Require = __detail::_Path<_Source>>
23866: path(_Source const& __source, format = auto_format)
23866: : _M_pathname(_S_convert(__detail::_S_range_begin(__source),
23866: __detail::_S_range_end(__source)))
23866: { _M_split_cmpts(); }
23866:
23866: template<typename _InputIterator,
23866: typename _Require = __detail::_Path<_InputIterator, _InputIterator>>
23866: path(_InputIterator __first, _InputIterator __last, format = auto_format)
23866: : _M_pathname(_S_convert(__first, __last))
23866: { _M_split_cmpts(); }
23866:
23866: template<typename _Source,
23866: typename _Require = __detail::_Path<_Source>,
23866: typename _Require2 = __detail::__value_type_is_char<_Source>>
23866: path(_Source const& __source, const locale& __loc, format = auto_format)
23866: : _M_pathname(_S_convert_loc(__detail::_S_range_begin(__source),
23866: __detail::_S_range_end(__source), __loc))
23866: { _M_split_cmpts(); }
23866:
23866: template<typename _InputIterator,
23866: typename _Require = __detail::_Path<_InputIterator, _InputIterator>,
23866: typename _Require2 = __detail::__value_type_is_char<_InputIterator>>
23866: path(_InputIterator __first, _InputIterator __last, const locale& __loc,
23866: format = auto_format)
23866: : _M_pathname(_S_convert_loc(__first, __last, __loc))
23866: { _M_split_cmpts(); }
23866:
23866: ~path() = default;
23866:
23866:
23866:
23866: path& operator=(const path&);
23866: path& operator=(path&&) noexcept;
23866: path& operator=(string_type&& __source);
23866: path& assign(string_type&& __source);
23866:
23866: template<typename _Source>
23866: __detail::_Path<_Source>&
23866: operator=(_Source const& __source)
23866: { return *this = path(__source); }
23866:
23866: template<typename _Source>
23866: __detail::_Path<_Source>&
23866: assign(_Source const& __source)
23866: { return *this = path(__source); }
23866:
23866: template<typename _InputIterator>
23866: __detail::_Path<_InputIterator, _InputIterator>&
23866: assign(_InputIterator __first, _InputIterator __last)
23866: { return *this = path(__first, __last); }
23866:
23866:
23866:
23866: path& operator/=(const path& __p);
23866:
23866: template<typename _Source>
23866: __detail::_Path<_Source>&
23866: operator/=(_Source const& __source)
23866: {
23866: _M_append(_S_convert(__detail::_S_range_begin(__source),
23866: __detail::_S_range_end(__source)));
23866: return *this;
23866: }
23866:
23866: template<typename _Source>
23866: __detail::_Path<_Source>&
23866: append(_Source const& __source)
23866: {
23866: _M_append(_S_convert(__detail::_S_range_begin(__source),
23866: __detail::_S_range_end(__source)));
23866: return *this;
23866: }
23866:
23866: template<typename _InputIterator>
23866: __detail::_Path<_InputIterator, _InputIterator>&
23866: append(_InputIterator __first, _InputIterator __last)
23866: {
23866: _M_append(_S_convert(__first, __last));
23866: return *this;
23866: }
23866:
23866:
23866:
23866: path& operator+=(const path& __x);
23866: path& operator+=(const string_type& __x);
23866: path& operator+=(const value_type* __x);
23866: path& operator+=(value_type __x);
23866: path& operator+=(basic_string_view<value_type> __x);
23866:
23866: template<typename _Source>
23866: __detail::_Path<_Source>&
23866: operator+=(_Source const& __x) { return concat(__x); }
23866:
23866: template<typename _CharT>
23866: __detail::_Path<_CharT*, _CharT*>&
23866: operator+=(_CharT __x);
23866:
23866: template<typename _Source>
23866: __detail::_Path<_Source>&
23866: concat(_Source const& __x)
23866: {
23866: _M_concat(_S_convert(__detail::_S_range_begin(__x),
23866: __detail::_S_range_end(__x)));
23866: return *this;
23866: }
23866:
23866: template<typename _InputIterator>
23866: __detail::_Path<_InputIterator, _InputIterator>&
23866: concat(_InputIterator __first, _InputIterator __last)
23866: {
23866: _M_concat(_S_convert(__first, __last));
23866: return *this;
23866: }
23866:
23866:
23866:
23866: void clear() noexcept { _M_pathname.clear(); _M_split_cmpts(); }
23866:
23866: path& make_preferred();
23866: path& remove_filename();
23866: path& replace_filename(const path& __replacement);
23866: path& replace_extension(const path& __replacement = path());
23866:
23866: void swap(path& __rhs) noexcept;
23866:
23866:
23866:
23866: const string_type& native() const noexcept { return _M_pathname; }
23866: const value_type* c_str() const noexcept { return _M_pathname.c_str(); }
23866: operator string_type() const { return _M_pathname; }
23866:
23866: template<typename _CharT, typename _Traits = std::char_traits<_CharT>,
23866: typename _Allocator = std::allocator<_CharT>>
23866: std::basic_string<_CharT, _Traits, _Allocator>
23866: string(const _Allocator& __a = _Allocator()) const;
23866:
23866: std::string string() const;
23866:
23866: std::wstring wstring() const;
23866:
23866:
23866:
23866:
23866:
23866: std::string u8string() const;
23866:
23866: std::u16string u16string() const;
23866: std::u32string u32string() const;
23866:
23866:
23866: template<typename _CharT, typename _Traits = std::char_traits<_CharT>,
23866: typename _Allocator = std::allocator<_CharT>>
23866: std::basic_string<_CharT, _Traits, _Allocator>
23866: generic_string(const _Allocator& __a = _Allocator()) const;
23866:
23866: std::string generic_string() const;
23866:
23866: std::wstring generic_wstring() const;
23866:
23866:
23866:
23866:
23866:
23866: std::string generic_u8string() const;
23866:
23866: std::u16string generic_u16string() const;
23866: std::u32string generic_u32string() const;
23866:
23866:
23866:
23866: int compare(const path& __p) const noexcept;
23866: int compare(const string_type& __s) const noexcept;
23866: int compare(const value_type* __s) const noexcept;
23866: int compare(basic_string_view<value_type> __s) const noexcept;
23866:
23866:
23866:
23866: path root_name() const;
23866: path root_directory() const;
23866: path root_path() const;
23866: path relative_path() const;
23866: path parent_path() const;
23866: path filename() const;
23866: path stem() const;
23866: path extension() const;
23866:
23866:
23866:
23866: [[nodiscard]] bool empty() const noexcept { return _M_pathname.empty(); }
23866: bool has_root_name() const noexcept;
23866: bool has_root_directory() const noexcept;
23866: bool has_root_path() const noexcept;
23866: bool has_relative_path() const noexcept;
23866: bool has_parent_path() const noexcept;
23866: bool has_filename() const noexcept;
23866: bool has_stem() const noexcept;
23866: bool has_extension() const noexcept;
23866: bool is_absolute() const noexcept;
23866: bool is_relative() const noexcept { return !is_absolute(); }
23866:
23866:
23866: path lexically_normal() const;
23866: path lexically_relative(const path& base) const;
23866: path lexically_proximate(const path& base) const;
23866:
23866:
23866: class iterator;
23866: using const_iterator = iterator;
23866:
23866: iterator begin() const;
23866: iterator end() const;
23866:
23866:
23866: template<typename _CharT, typename _Traits>
23866: friend std::basic_ostream<_CharT, _Traits>&
23866: operator<<(std::basic_ostream<_CharT, _Traits>& __os, const path& __p)
23866: {
23866: __os << std::quoted(__p.string<_CharT, _Traits>());
23866: return __os;
23866: }
23866:
23866:
23866: template<typename _CharT, typename _Traits>
23866: friend std::basic_istream<_CharT, _Traits>&
23866: operator>>(std::basic_istream<_CharT, _Traits>& __is, path& __p)
23866: {
23866: std::basic_string<_CharT, _Traits> __tmp;
23866: if (__is >> std::quoted(__tmp))
23866: __p = std::move(__tmp);
23866: return __is;
23866: }
23866:
23866:
23866:
23866:
23866: friend bool operator==(const path& __lhs, const path& __rhs) noexcept
23866: { return __lhs.compare(__rhs) == 0; }
23866: # 469 "/usr/include/c++/10/bits/fs_path.h" 3
23866: friend bool operator!=(const path& __lhs, const path& __rhs) noexcept
23866: { return !(__lhs == __rhs); }
23866:
23866:
23866: friend bool operator<(const path& __lhs, const path& __rhs) noexcept
23866: { return __lhs.compare(__rhs) < 0; }
23866:
23866:
23866: friend bool operator<=(const path& __lhs, const path& __rhs) noexcept
23866: { return !(__rhs < __lhs); }
23866:
23866:
23866: friend bool operator>(const path& __lhs, const path& __rhs) noexcept
23866: { return __rhs < __lhs; }
23866:
23866:
23866: friend bool operator>=(const path& __lhs, const path& __rhs) noexcept
23866: { return !(__lhs < __rhs); }
23866:
23866:
23866:
23866: friend path operator/(const path& __lhs, const path& __rhs)
23866: {
23866: path __result(__lhs);
23866: __result /= __rhs;
23866: return __result;
23866: }
23866:
23866:
23866:
23866: template<typename _InputIterator,
23866: typename _Traits = std::iterator_traits<_InputIterator>,
23866: typename _CharT
23866: = typename std::remove_cv_t<typename _Traits::value_type>>
23866: static std::basic_string<_CharT>
23866: _S_string_from_iter(_InputIterator __source)
23866: {
23866: std::basic_string<_CharT> __str;
23866: for (_CharT __ch = *__source; __ch != _CharT(); __ch = *++__source)
23866: __str.push_back(__ch);
23866: return __str;
23866: }
23866:
23866:
23866: private:
23866: enum class _Type : unsigned char {
23866: _Multi = 0, _Root_name, _Root_dir, _Filename
23866: };
23866:
23866: path(basic_string_view<value_type> __str, _Type __type)
23866: : _M_pathname(__str)
23866: {
23866: ;
23866: _M_cmpts.type(__type);
23866: }
23866:
23866: enum class _Split { _Stem, _Extension };
23866:
23866: void _M_append(basic_string_view<value_type>);
23866: void _M_concat(basic_string_view<value_type>);
23866:
23866: pair<const string_type*, size_t> _M_find_extension() const noexcept;
23866:
23866: template<typename _CharT>
23866: struct _Cvt;
23866:
23866: static basic_string_view<value_type>
23866: _S_convert(value_type* __src, __detail::__null_terminated)
23866: { return __src; }
23866:
23866: static basic_string_view<value_type>
23866: _S_convert(const value_type* __src, __detail::__null_terminated)
23866: { return __src; }
23866:
23866: static basic_string_view<value_type>
23866: _S_convert(value_type* __first, value_type* __last)
23866: { return {__first, __last - __first}; }
23866:
23866: static basic_string_view<value_type>
23866: _S_convert(const value_type* __first, const value_type* __last)
23866: { return {__first, __last - __first}; }
23866:
23866: template<typename _Iter>
23866: static string_type
23866: _S_convert(_Iter __first, _Iter __last)
23866: {
23866: using __value_type = typename std::iterator_traits<_Iter>::value_type;
23866: return _Cvt<typename remove_cv<__value_type>::type>::
23866: _S_convert(__first, __last);
23866: }
23866:
23866: template<typename _InputIterator>
23866: static string_type
23866: _S_convert(_InputIterator __src, __detail::__null_terminated)
23866: {
23866:
23866: auto __s = _S_string_from_iter(__src);
23866:
23866: return string_type(_S_convert(__s.data(), __s.data() + __s.size()));
23866: }
23866:
23866: static string_type
23866: _S_convert_loc(const char* __first, const char* __last,
23866: const std::locale& __loc);
23866:
23866: template<typename _Iter>
23866: static string_type
23866: _S_convert_loc(_Iter __first, _Iter __last, const std::locale& __loc)
23866: {
23866: const std::string __str(__first, __last);
23866: return _S_convert_loc(__str.data(), __str.data()+__str.size(), __loc);
23866: }
23866:
23866: template<typename _InputIterator>
23866: static string_type
23866: _S_convert_loc(_InputIterator __src, __detail::__null_terminated,
23866: const std::locale& __loc)
23866: {
23866: const std::string __s = _S_string_from_iter(__src);
23866: return _S_convert_loc(__s.data(), __s.data() + __s.size(), __loc);
23866: }
23866:
23866: template<typename _CharT, typename _Traits, typename _Allocator>
23866: static basic_string<_CharT, _Traits, _Allocator>
23866: _S_str_convert(basic_string_view<value_type>, const _Allocator&);
23866:
23866: void _M_split_cmpts();
23866:
23866: _Type _M_type() const noexcept { return _M_cmpts.type(); }
23866:
23866: string_type _M_pathname;
23866:
23866: struct _Cmpt;
23866:
23866: struct _List
23866: {
23866: using value_type = _Cmpt;
23866: using iterator = value_type*;
23866: using const_iterator = const value_type*;
23866:
23866: _List();
23866: _List(const _List&);
23866: _List(_List&&) = default;
23866: _List& operator=(const _List&);
23866: _List& operator=(_List&&) = default;
23866: ~_List() = default;
23866:
23866: _Type type() const noexcept
23866: { return _Type{reinterpret_cast<uintptr_t>(_M_impl.get()) & 0x3}; }
23866:
23866: void type(_Type) noexcept;
23866:
23866: int size() const noexcept;
23866: bool empty() const noexcept;
23866: void clear();
23866: void swap(_List& __l) noexcept { _M_impl.swap(__l._M_impl); }
23866: int capacity() const noexcept;
23866: void reserve(int, bool);
23866:
23866:
23866:
23866:
23866: iterator begin();
23866: iterator end();
23866: const_iterator begin() const;
23866: const_iterator end() const;
23866:
23866: value_type& front() noexcept;
23866: value_type& back() noexcept;
23866: const value_type& front() const noexcept;
23866: const value_type& back() const noexcept;
23866:
23866: void pop_back();
23866: void _M_erase_from(const_iterator __pos);
23866:
23866: struct _Impl;
23866: struct _Impl_deleter
23866: {
23866: void operator()(_Impl*) const noexcept;
23866: };
23866: unique_ptr<_Impl, _Impl_deleter> _M_impl;
23866: };
23866: _List _M_cmpts;
23866:
23866: struct _Parser;
23866: };
23866:
23866:
23866:
23866: inline void swap(path& __lhs, path& __rhs) noexcept { __lhs.swap(__rhs); }
23866:
23866: size_t hash_value(const path& __p) noexcept;
23866:
23866:
23866:
23866:
23866: class filesystem_error : public std::system_error
23866: {
23866: public:
23866: filesystem_error(const string& __what_arg, error_code __ec);
23866:
23866: filesystem_error(const string& __what_arg, const path& __p1,
23866: error_code __ec);
23866:
23866: filesystem_error(const string& __what_arg, const path& __p1,
23866: const path& __p2, error_code __ec);
23866:
23866: filesystem_error(const filesystem_error&) = default;
23866: filesystem_error& operator=(const filesystem_error&) = default;
23866:
23866:
23866:
23866:
23866: ~filesystem_error();
23866:
23866: const path& path1() const noexcept;
23866: const path& path2() const noexcept;
23866: const char* what() const noexcept;
23866:
23866: private:
23866: struct _Impl;
23866: std::__shared_ptr<const _Impl> _M_impl;
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template<typename _InputIterator,
23866: typename _Require = __detail::_Path<_InputIterator, _InputIterator>,
23866: typename _CharT
23866: = __detail::__value_type_is_char_or_char8_t<_InputIterator>>
23866: inline path
23866: u8path(_InputIterator __first, _InputIterator __last)
23866: {
23866: # 730 "/usr/include/c++/10/bits/fs_path.h" 3
23866: return path{ __first, __last };
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Source,
23866: typename _Require = __detail::_Path<_Source>,
23866: typename _CharT = __detail::__value_type_is_char_or_char8_t<_Source>>
23866: inline path
23866: u8path(const _Source& __source)
23866: {
23866: # 761 "/usr/include/c++/10/bits/fs_path.h" 3
23866: return path{ __source };
23866:
23866: }
23866:
23866:
23866:
23866: struct path::_Cmpt : path
23866: {
23866: _Cmpt(basic_string_view<value_type> __s, _Type __t, size_t __pos)
23866: : path(__s, __t), _M_pos(__pos) { }
23866:
23866: _Cmpt() : _M_pos(-1) { }
23866:
23866: size_t _M_pos;
23866: };
23866:
23866:
23866: template<>
23866: struct path::_Cvt<path::value_type>
23866: {
23866: template<typename _Iter>
23866: static string_type
23866: _S_convert(_Iter __first, _Iter __last)
23866: { return string_type{__first, __last}; }
23866: };
23866: # 799 "/usr/include/c++/10/bits/fs_path.h" 3
23866: template<typename _CharT>
23866: struct path::_Cvt
23866: {
23866: static string_type
23866: _S_convert(const _CharT* __f, const _CharT* __l)
23866: {
23866: # 839 "/usr/include/c++/10/bits/fs_path.h" 3
23866: struct _UCvt : std::codecvt<_CharT, char, std::mbstate_t>
23866: { } __cvt;
23866: std::string __str;
23866: if (__str_codecvt_out_all(__f, __l, __str, __cvt))
23866: return __str;
23866:
23866: (throw (filesystem_error( "Cannot convert character sequence", std::make_error_code(errc::illegal_byte_sequence))))
23866:
23866: ;
23866: }
23866:
23866: static string_type
23866: _S_convert(_CharT* __f, _CharT* __l)
23866: {
23866: return _S_convert(const_cast<const _CharT*>(__f),
23866: const_cast<const _CharT*>(__l));
23866: }
23866:
23866: template<typename _Iter>
23866: static string_type
23866: _S_convert(_Iter __first, _Iter __last)
23866: {
23866: const std::basic_string<_CharT> __str(__first, __last);
23866: return _S_convert(__str.data(), __str.data() + __str.size());
23866: }
23866:
23866: template<typename _Iter, typename _Cont>
23866: static string_type
23866: _S_convert(__gnu_cxx::__normal_iterator<_Iter, _Cont> __first,
23866: __gnu_cxx::__normal_iterator<_Iter, _Cont> __last)
23866: { return _S_convert(__first.base(), __last.base()); }
23866: };
23866:
23866:
23866:
23866:
23866: class path::iterator
23866: {
23866: public:
23866: using difference_type = std::ptrdiff_t;
23866: using value_type = path;
23866: using reference = const path&;
23866: using pointer = const path*;
23866: using iterator_category = std::bidirectional_iterator_tag;
23866:
23866: iterator() : _M_path(nullptr), _M_cur(), _M_at_end() { }
23866:
23866: iterator(const iterator&) = default;
23866: iterator& operator=(const iterator&) = default;
23866:
23866: reference operator*() const;
23866: pointer operator->() const { return std::__addressof(**this); }
23866:
23866: iterator& operator++();
23866: iterator operator++(int) { auto __tmp = *this; ++*this; return __tmp; }
23866:
23866: iterator& operator--();
23866: iterator operator--(int) { auto __tmp = *this; --*this; return __tmp; }
23866:
23866: friend bool operator==(const iterator& __lhs, const iterator& __rhs)
23866: { return __lhs._M_equals(__rhs); }
23866:
23866: friend bool operator!=(const iterator& __lhs, const iterator& __rhs)
23866: { return !__lhs._M_equals(__rhs); }
23866:
23866: private:
23866: friend class path;
23866:
23866: bool _M_is_multi() const { return _M_path->_M_type() == _Type::_Multi; }
23866:
23866: friend difference_type
23866: __path_iter_distance(const iterator& __first, const iterator& __last)
23866: {
23866: ;
23866: ;
23866: if (__first._M_is_multi())
23866: return std::distance(__first._M_cur, __last._M_cur);
23866: else if (__first._M_at_end == __last._M_at_end)
23866: return 0;
23866: else
23866: return __first._M_at_end ? -1 : 1;
23866: }
23866:
23866: friend void
23866: __path_iter_advance(iterator& __i, difference_type __n)
23866: {
23866: if (__n == 1)
23866: ++__i;
23866: else if (__n == -1)
23866: --__i;
23866: else if (__n != 0)
23866: {
23866: ;
23866: ;
23866:
23866: __i._M_cur += __n;
23866: }
23866: }
23866:
23866: iterator(const path* __path, path::_List::const_iterator __iter)
23866: : _M_path(__path), _M_cur(__iter), _M_at_end()
23866: { }
23866:
23866: iterator(const path* __path, bool __at_end)
23866: : _M_path(__path), _M_cur(), _M_at_end(__at_end)
23866: { }
23866:
23866: bool _M_equals(iterator) const;
23866:
23866: const path* _M_path;
23866: path::_List::const_iterator _M_cur;
23866: bool _M_at_end;
23866: };
23866:
23866:
23866: inline path&
23866: path::operator=(path&& __p) noexcept
23866: {
23866: if (&__p == this) [[__unlikely__]]
23866: return *this;
23866:
23866: _M_pathname = std::move(__p._M_pathname);
23866: _M_cmpts = std::move(__p._M_cmpts);
23866: __p.clear();
23866: return *this;
23866: }
23866:
23866: inline path&
23866: path::operator=(string_type&& __source)
23866: { return *this = path(std::move(__source)); }
23866:
23866: inline path&
23866: path::assign(string_type&& __source)
23866: { return *this = path(std::move(__source)); }
23866:
23866: inline path&
23866: path::operator+=(const string_type& __x)
23866: {
23866: _M_concat(__x);
23866: return *this;
23866: }
23866:
23866: inline path&
23866: path::operator+=(const value_type* __x)
23866: {
23866: _M_concat(__x);
23866: return *this;
23866: }
23866:
23866: inline path&
23866: path::operator+=(value_type __x)
23866: {
23866: _M_concat(basic_string_view<value_type>(&__x, 1));
23866: return *this;
23866: }
23866:
23866: inline path&
23866: path::operator+=(basic_string_view<value_type> __x)
23866: {
23866: _M_concat(__x);
23866: return *this;
23866: }
23866:
23866: template<typename _CharT>
23866: inline __detail::_Path<_CharT*, _CharT*>&
23866: path::operator+=(_CharT __x)
23866: {
23866: auto* __addr = std::__addressof(__x);
23866: return concat(__addr, __addr + 1);
23866: }
23866:
23866: inline path&
23866: path::make_preferred()
23866: {
23866:
23866:
23866:
23866:
23866: return *this;
23866: }
23866:
23866: inline void path::swap(path& __rhs) noexcept
23866: {
23866: _M_pathname.swap(__rhs._M_pathname);
23866: _M_cmpts.swap(__rhs._M_cmpts);
23866: }
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Allocator>
23866: std::basic_string<_CharT, _Traits, _Allocator>
23866: path::_S_str_convert(basic_string_view<value_type> __str,
23866: const _Allocator& __a)
23866: {
23866: static_assert(!is_same_v<_CharT, value_type>);
23866:
23866: using _WString = basic_string<_CharT, _Traits, _Allocator>;
23866:
23866: if (__str.size() == 0)
23866: return _WString(__a);
23866: # 1057 "/usr/include/c++/10/bits/fs_path.h" 3
23866: const value_type* __first = __str.data();
23866: const value_type* __last = __first + __str.size();
23866: # 1067 "/usr/include/c++/10/bits/fs_path.h" 3
23866: {
23866:
23866: _WString __wstr(__a);
23866: struct _UCvt : std::codecvt<_CharT, char, std::mbstate_t> { } __cvt;
23866: if (__str_codecvt_in_all(__first, __last, __wstr, __cvt))
23866: return __wstr;
23866: }
23866:
23866:
23866:
23866:
23866: (throw (filesystem_error( "Cannot convert character sequence", std::make_error_code(errc::illegal_byte_sequence))))
23866:
23866: ;
23866: }
23866:
23866:
23866: template<typename _CharT, typename _Traits, typename _Allocator>
23866: inline basic_string<_CharT, _Traits, _Allocator>
23866: path::string(const _Allocator& __a) const
23866: {
23866: if constexpr (is_same_v<_CharT, value_type>)
23866: return { _M_pathname.c_str(), _M_pathname.length(), __a };
23866: else
23866: return _S_str_convert<_CharT, _Traits>(_M_pathname, __a);
23866: }
23866:
23866: inline std::string
23866: path::string() const { return string<char>(); }
23866:
23866:
23866: inline std::wstring
23866: path::wstring() const { return string<wchar_t>(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline std::string
23866: path::u8string() const
23866: {
23866: # 1121 "/usr/include/c++/10/bits/fs_path.h" 3
23866: return _M_pathname;
23866:
23866: }
23866:
23866:
23866: inline std::u16string
23866: path::u16string() const { return string<char16_t>(); }
23866:
23866: inline std::u32string
23866: path::u32string() const { return string<char32_t>(); }
23866:
23866: template<typename _CharT, typename _Traits, typename _Allocator>
23866: inline std::basic_string<_CharT, _Traits, _Allocator>
23866: path::generic_string(const _Allocator& __a) const
23866: {
23866:
23866:
23866:
23866: const value_type __slash = '/';
23866:
23866: using _Alloc2 = typename allocator_traits<_Allocator>::template
23866: rebind_alloc<value_type>;
23866: basic_string<value_type, char_traits<value_type>, _Alloc2> __str(__a);
23866:
23866: if (_M_type() == _Type::_Root_dir)
23866: __str.assign(1, __slash);
23866: else
23866: {
23866: __str.reserve(_M_pathname.size());
23866: bool __add_slash = false;
23866: for (auto& __elem : *this)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: if (__add_slash)
23866: __str += __slash;
23866: __str += basic_string_view<value_type>(__elem._M_pathname);
23866: __add_slash = __elem._M_type() == _Type::_Filename;
23866: }
23866: }
23866:
23866: if constexpr (is_same_v<_CharT, value_type>)
23866: return __str;
23866: else
23866: return _S_str_convert<_CharT, _Traits>(__str, __a);
23866: }
23866:
23866: inline std::string
23866: path::generic_string() const
23866: { return generic_string<char>(); }
23866:
23866:
23866: inline std::wstring
23866: path::generic_wstring() const
23866: { return generic_string<wchar_t>(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline std::string
23866: path::generic_u8string() const
23866: { return generic_string(); }
23866:
23866:
23866: inline std::u16string
23866: path::generic_u16string() const
23866: { return generic_string<char16_t>(); }
23866:
23866: inline std::u32string
23866: path::generic_u32string() const
23866: { return generic_string<char32_t>(); }
23866:
23866: inline int
23866: path::compare(const string_type& __s) const noexcept
23866: { return compare(basic_string_view<value_type>(__s)); }
23866:
23866: inline int
23866: path::compare(const value_type* __s) const noexcept
23866: { return compare(basic_string_view<value_type>(__s)); }
23866:
23866: inline path
23866: path::filename() const
23866: {
23866: if (empty())
23866: return {};
23866: else if (_M_type() == _Type::_Filename)
23866: return *this;
23866: else if (_M_type() == _Type::_Multi)
23866: {
23866: if (_M_pathname.back() == preferred_separator)
23866: return {};
23866: auto& __last = *--end();
23866: if (__last._M_type() == _Type::_Filename)
23866: return __last;
23866: }
23866: return {};
23866: }
23866:
23866: inline path
23866: path::stem() const
23866: {
23866: auto ext = _M_find_extension();
23866: if (ext.first && ext.second != 0)
23866: return path{ext.first->substr(0, ext.second)};
23866: return {};
23866: }
23866:
23866: inline path
23866: path::extension() const
23866: {
23866: auto ext = _M_find_extension();
23866: if (ext.first && ext.second != string_type::npos)
23866: return path{ext.first->substr(ext.second)};
23866: return {};
23866: }
23866:
23866: inline bool
23866: path::has_stem() const noexcept
23866: {
23866: auto ext = _M_find_extension();
23866: return ext.first && ext.second != 0;
23866: }
23866:
23866: inline bool
23866: path::has_extension() const noexcept
23866: {
23866: auto ext = _M_find_extension();
23866: return ext.first && ext.second != string_type::npos;
23866: }
23866:
23866: inline bool
23866: path::is_absolute() const noexcept
23866: {
23866:
23866:
23866:
23866: return has_root_directory();
23866:
23866: }
23866:
23866: inline path::iterator
23866: path::begin() const
23866: {
23866: if (_M_type() == _Type::_Multi)
23866: return iterator(this, _M_cmpts.begin());
23866: return iterator(this, empty());
23866: }
23866:
23866: inline path::iterator
23866: path::end() const
23866: {
23866: if (_M_type() == _Type::_Multi)
23866: return iterator(this, _M_cmpts.end());
23866: return iterator(this, true);
23866: }
23866:
23866: inline path::iterator&
23866: path::iterator::operator++()
23866: {
23866: ;
23866: if (_M_path->_M_type() == _Type::_Multi)
23866: {
23866: ;
23866: ++_M_cur;
23866: }
23866: else
23866: {
23866: ;
23866: _M_at_end = true;
23866: }
23866: return *this;
23866: }
23866:
23866: inline path::iterator&
23866: path::iterator::operator--()
23866: {
23866: ;
23866: if (_M_path->_M_type() == _Type::_Multi)
23866: {
23866: ;
23866: --_M_cur;
23866: }
23866: else
23866: {
23866: ;
23866: _M_at_end = false;
23866: }
23866: return *this;
23866: }
23866:
23866: inline path::iterator::reference
23866: path::iterator::operator*() const
23866: {
23866: ;
23866: if (_M_path->_M_type() == _Type::_Multi)
23866: {
23866: ;
23866: return *_M_cur;
23866: }
23866: return *_M_path;
23866: }
23866:
23866: inline bool
23866: path::iterator::_M_equals(iterator __rhs) const
23866: {
23866: if (_M_path != __rhs._M_path)
23866: return false;
23866: if (_M_path == nullptr)
23866: return true;
23866: if (_M_path->_M_type() == path::_Type::_Multi)
23866: return _M_cur == __rhs._M_cur;
23866: return _M_at_end == __rhs._M_at_end;
23866: }
23866:
23866:
23866: }
23866: }
23866:
23866: inline ptrdiff_t
23866: distance(filesystem::path::iterator __first, filesystem::path::iterator __last)
23866: { return __path_iter_distance(__first, __last); }
23866:
23866: template<typename _InputIterator, typename _Distance>
23866: void
23866: advance(filesystem::path::iterator& __i, _Distance __n)
23866: { __path_iter_advance(__i, static_cast<ptrdiff_t>(__n)); }
23866:
23866: extern template class __shared_ptr<const filesystem::filesystem_error::_Impl>;
23866:
23866:
23866: }
23866: # 46 "/usr/include/c++/10/filesystem" 2 3
23866: # 1 "/usr/include/c++/10/bits/fs_dir.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/fs_dir.h" 3
23866: #define _GLIBCXX_FS_DIR_H 1
23866: # 43 "/usr/include/c++/10/bits/fs_dir.h" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: namespace filesystem
23866: {
23866:
23866:
23866:
23866:
23866:
23866: class file_status
23866: {
23866: public:
23866:
23866: file_status() noexcept : file_status(file_type::none) {}
23866:
23866: explicit
23866: file_status(file_type __ft, perms __prms = perms::unknown) noexcept
23866: : _M_type(__ft), _M_perms(__prms) { }
23866:
23866: file_status(const file_status&) noexcept = default;
23866: file_status(file_status&&) noexcept = default;
23866: ~file_status() = default;
23866:
23866: file_status& operator=(const file_status&) noexcept = default;
23866: file_status& operator=(file_status&&) noexcept = default;
23866:
23866:
23866: file_type type() const noexcept { return _M_type; }
23866: perms permissions() const noexcept { return _M_perms; }
23866:
23866:
23866: void type(file_type __ft) noexcept { _M_type = __ft; }
23866: void permissions(perms __prms) noexcept { _M_perms = __prms; }
23866:
23866:
23866:
23866:
23866:
23866:
23866: private:
23866: file_type _M_type;
23866: perms _M_perms;
23866: };
23866:
23866: namespace __cxx11 {
23866:
23866: struct _Dir;
23866: class directory_iterator;
23866: class recursive_directory_iterator;
23866:
23866:
23866: class directory_entry
23866: {
23866: public:
23866:
23866: directory_entry() noexcept = default;
23866: directory_entry(const directory_entry&) = default;
23866: directory_entry(directory_entry&&) noexcept = default;
23866:
23866: explicit
23866: directory_entry(const filesystem::path& __p)
23866: : _M_path(__p)
23866: { refresh(); }
23866:
23866: directory_entry(const filesystem::path& __p, error_code& __ec)
23866: : _M_path(__p)
23866: {
23866: refresh(__ec);
23866: if (__ec)
23866: _M_path.clear();
23866: }
23866:
23866: ~directory_entry() = default;
23866:
23866:
23866: directory_entry& operator=(const directory_entry&) = default;
23866: directory_entry& operator=(directory_entry&&) noexcept = default;
23866:
23866: void
23866: assign(const filesystem::path& __p)
23866: {
23866: _M_path = __p;
23866: refresh();
23866: }
23866:
23866: void
23866: assign(const filesystem::path& __p, error_code& __ec)
23866: {
23866: _M_path = __p;
23866: refresh(__ec);
23866: }
23866:
23866: void
23866: replace_filename(const filesystem::path& __p)
23866: {
23866: _M_path.replace_filename(__p);
23866: refresh();
23866: }
23866:
23866: void
23866: replace_filename(const filesystem::path& __p, error_code& __ec)
23866: {
23866: _M_path.replace_filename(__p);
23866: refresh(__ec);
23866: }
23866:
23866: void
23866: refresh()
23866: { _M_type = symlink_status().type(); }
23866:
23866: void
23866: refresh(error_code& __ec) noexcept
23866: { _M_type = symlink_status(__ec).type(); }
23866:
23866:
23866: const filesystem::path& path() const noexcept { return _M_path; }
23866: operator const filesystem::path& () const noexcept { return _M_path; }
23866:
23866: bool
23866: exists() const
23866: { return filesystem::exists(file_status{_M_file_type()}); }
23866:
23866: bool
23866: exists(error_code& __ec) const noexcept
23866: { return filesystem::exists(file_status{_M_file_type(__ec)}); }
23866:
23866: bool
23866: is_block_file() const
23866: { return _M_file_type() == file_type::block; }
23866:
23866: bool
23866: is_block_file(error_code& __ec) const noexcept
23866: { return _M_file_type(__ec) == file_type::block; }
23866:
23866: bool
23866: is_character_file() const
23866: { return _M_file_type() == file_type::character; }
23866:
23866: bool
23866: is_character_file(error_code& __ec) const noexcept
23866: { return _M_file_type(__ec) == file_type::character; }
23866:
23866: bool
23866: is_directory() const
23866: { return _M_file_type() == file_type::directory; }
23866:
23866: bool
23866: is_directory(error_code& __ec) const noexcept
23866: { return _M_file_type(__ec) == file_type::directory; }
23866:
23866: bool
23866: is_fifo() const
23866: { return _M_file_type() == file_type::fifo; }
23866:
23866: bool
23866: is_fifo(error_code& __ec) const noexcept
23866: { return _M_file_type(__ec) == file_type::fifo; }
23866:
23866: bool
23866: is_other() const
23866: { return filesystem::is_other(file_status{_M_file_type()}); }
23866:
23866: bool
23866: is_other(error_code& __ec) const noexcept
23866: { return filesystem::is_other(file_status{_M_file_type(__ec)}); }
23866:
23866: bool
23866: is_regular_file() const
23866: { return _M_file_type() == file_type::regular; }
23866:
23866: bool
23866: is_regular_file(error_code& __ec) const noexcept
23866: { return _M_file_type(__ec) == file_type::regular; }
23866:
23866: bool
23866: is_socket() const
23866: { return _M_file_type() == file_type::socket; }
23866:
23866: bool
23866: is_socket(error_code& __ec) const noexcept
23866: { return _M_file_type(__ec) == file_type::socket; }
23866:
23866: bool
23866: is_symlink() const
23866: {
23866: if (_M_type != file_type::none)
23866: return _M_type == file_type::symlink;
23866: return symlink_status().type() == file_type::symlink;
23866: }
23866:
23866: bool
23866: is_symlink(error_code& __ec) const noexcept
23866: {
23866: if (_M_type != file_type::none)
23866: return _M_type == file_type::symlink;
23866: return symlink_status(__ec).type() == file_type::symlink;
23866: }
23866:
23866: uintmax_t
23866: file_size() const
23866: { return filesystem::file_size(_M_path); }
23866:
23866: uintmax_t
23866: file_size(error_code& __ec) const noexcept
23866: { return filesystem::file_size(_M_path, __ec); }
23866:
23866: uintmax_t
23866: hard_link_count() const
23866: { return filesystem::hard_link_count(_M_path); }
23866:
23866: uintmax_t
23866: hard_link_count(error_code& __ec) const noexcept
23866: { return filesystem::hard_link_count(_M_path, __ec); }
23866:
23866: file_time_type
23866: last_write_time() const
23866: { return filesystem::last_write_time(_M_path); }
23866:
23866:
23866: file_time_type
23866: last_write_time(error_code& __ec) const noexcept
23866: { return filesystem::last_write_time(_M_path, __ec); }
23866:
23866: file_status
23866: status() const
23866: { return filesystem::status(_M_path); }
23866:
23866: file_status
23866: status(error_code& __ec) const noexcept
23866: { return filesystem::status(_M_path, __ec); }
23866:
23866: file_status
23866: symlink_status() const
23866: { return filesystem::symlink_status(_M_path); }
23866:
23866: file_status
23866: symlink_status(error_code& __ec) const noexcept
23866: { return filesystem::symlink_status(_M_path, __ec); }
23866:
23866: bool
23866: operator==(const directory_entry& __rhs) const noexcept
23866: { return _M_path == __rhs._M_path; }
23866:
23866:
23866:
23866:
23866:
23866:
23866: bool
23866: operator!=(const directory_entry& __rhs) const noexcept
23866: { return _M_path != __rhs._M_path; }
23866:
23866: bool
23866: operator< (const directory_entry& __rhs) const noexcept
23866: { return _M_path < __rhs._M_path; }
23866:
23866: bool
23866: operator<=(const directory_entry& __rhs) const noexcept
23866: { return _M_path <= __rhs._M_path; }
23866:
23866: bool
23866: operator> (const directory_entry& __rhs) const noexcept
23866: { return _M_path > __rhs._M_path; }
23866:
23866: bool
23866: operator>=(const directory_entry& __rhs) const noexcept
23866: { return _M_path >= __rhs._M_path; }
23866:
23866:
23866: private:
23866: friend class _Dir;
23866: friend class directory_iterator;
23866: friend class recursive_directory_iterator;
23866:
23866:
23866:
23866: template<typename _CharT, typename _Traits>
23866: friend basic_ostream<_CharT, _Traits>&
23866: operator<<(basic_ostream<_CharT, _Traits>& __os,
23866: const directory_entry& __d)
23866: { return __os << __d.path(); }
23866:
23866: directory_entry(const filesystem::path& __p, file_type __t)
23866: : _M_path(__p), _M_type(__t)
23866: { }
23866:
23866:
23866: file_type
23866: _M_file_type() const
23866: {
23866: if (_M_type != file_type::none && _M_type != file_type::symlink)
23866: return _M_type;
23866: return status().type();
23866: }
23866:
23866:
23866: file_type
23866: _M_file_type(error_code& __ec) const noexcept
23866: {
23866: if (_M_type != file_type::none && _M_type != file_type::symlink)
23866: {
23866: __ec.clear();
23866: return _M_type;
23866: }
23866: return status(__ec).type();
23866: }
23866:
23866: filesystem::path _M_path;
23866: file_type _M_type = file_type::none;
23866: };
23866:
23866:
23866: struct __directory_iterator_proxy
23866: {
23866: const directory_entry& operator*() const& noexcept { return _M_entry; }
23866:
23866: directory_entry operator*() && noexcept { return std::move(_M_entry); }
23866:
23866: private:
23866: friend class directory_iterator;
23866: friend class recursive_directory_iterator;
23866:
23866: explicit
23866: __directory_iterator_proxy(const directory_entry& __e) : _M_entry(__e) { }
23866:
23866: directory_entry _M_entry;
23866: };
23866:
23866:
23866: class directory_iterator
23866: {
23866: public:
23866: typedef directory_entry value_type;
23866: typedef ptrdiff_t difference_type;
23866: typedef const directory_entry* pointer;
23866: typedef const directory_entry& reference;
23866: typedef input_iterator_tag iterator_category;
23866:
23866: directory_iterator() = default;
23866:
23866: explicit
23866: directory_iterator(const path& __p)
23866: : directory_iterator(__p, directory_options::none, nullptr) { }
23866:
23866: directory_iterator(const path& __p, directory_options __options)
23866: : directory_iterator(__p, __options, nullptr) { }
23866:
23866: directory_iterator(const path& __p, error_code& __ec)
23866: : directory_iterator(__p, directory_options::none, __ec) { }
23866:
23866: directory_iterator(const path& __p, directory_options __options,
23866: error_code& __ec)
23866: : directory_iterator(__p, __options, &__ec) { }
23866:
23866: directory_iterator(const directory_iterator& __rhs) = default;
23866:
23866: directory_iterator(directory_iterator&& __rhs) noexcept = default;
23866:
23866: ~directory_iterator() = default;
23866:
23866: directory_iterator&
23866: operator=(const directory_iterator& __rhs) = default;
23866:
23866: directory_iterator&
23866: operator=(directory_iterator&& __rhs) noexcept = default;
23866:
23866: const directory_entry& operator*() const noexcept;
23866: const directory_entry* operator->() const noexcept { return &**this; }
23866: directory_iterator& operator++();
23866: directory_iterator& increment(error_code& __ec);
23866:
23866: __directory_iterator_proxy operator++(int)
23866: {
23866: __directory_iterator_proxy __pr{**this};
23866: ++*this;
23866: return __pr;
23866: }
23866:
23866: private:
23866: directory_iterator(const path&, directory_options, error_code*);
23866:
23866: friend bool
23866: operator==(const directory_iterator& __lhs,
23866: const directory_iterator& __rhs) noexcept
23866: {
23866: return !__rhs._M_dir.owner_before(__lhs._M_dir)
23866: && !__lhs._M_dir.owner_before(__rhs._M_dir);
23866: }
23866:
23866: friend bool
23866: operator!=(const directory_iterator& __lhs,
23866: const directory_iterator& __rhs) noexcept
23866: { return !(__lhs == __rhs); }
23866:
23866: friend class recursive_directory_iterator;
23866:
23866: std::__shared_ptr<_Dir> _M_dir;
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline directory_iterator
23866: begin(directory_iterator __iter) noexcept
23866: { return __iter; }
23866:
23866:
23866: inline directory_iterator
23866: end(directory_iterator) noexcept
23866: { return directory_iterator(); }
23866:
23866:
23866:
23866: class recursive_directory_iterator
23866: {
23866: public:
23866: typedef directory_entry value_type;
23866: typedef ptrdiff_t difference_type;
23866: typedef const directory_entry* pointer;
23866: typedef const directory_entry& reference;
23866: typedef input_iterator_tag iterator_category;
23866:
23866: recursive_directory_iterator() = default;
23866:
23866: explicit
23866: recursive_directory_iterator(const path& __p)
23866: : recursive_directory_iterator(__p, directory_options::none, nullptr) { }
23866:
23866: recursive_directory_iterator(const path& __p, directory_options __options)
23866: : recursive_directory_iterator(__p, __options, nullptr) { }
23866:
23866: recursive_directory_iterator(const path& __p, directory_options __options,
23866: error_code& __ec)
23866: : recursive_directory_iterator(__p, __options, &__ec) { }
23866:
23866: recursive_directory_iterator(const path& __p, error_code& __ec)
23866: : recursive_directory_iterator(__p, directory_options::none, &__ec) { }
23866:
23866: recursive_directory_iterator(
23866: const recursive_directory_iterator&) = default;
23866:
23866: recursive_directory_iterator(recursive_directory_iterator&&) = default;
23866:
23866: ~recursive_directory_iterator();
23866:
23866:
23866: directory_options options() const noexcept;
23866: int depth() const noexcept;
23866: bool recursion_pending() const noexcept;
23866:
23866: const directory_entry& operator*() const noexcept;
23866: const directory_entry* operator->() const noexcept { return &**this; }
23866:
23866:
23866: recursive_directory_iterator&
23866: operator=(const recursive_directory_iterator& __rhs) noexcept;
23866: recursive_directory_iterator&
23866: operator=(recursive_directory_iterator&& __rhs) noexcept;
23866:
23866: recursive_directory_iterator& operator++();
23866: recursive_directory_iterator& increment(error_code& __ec);
23866:
23866: __directory_iterator_proxy operator++(int)
23866: {
23866: __directory_iterator_proxy __pr{**this};
23866: ++*this;
23866: return __pr;
23866: }
23866:
23866: void pop();
23866: void pop(error_code&);
23866:
23866: void disable_recursion_pending() noexcept;
23866:
23866: private:
23866: recursive_directory_iterator(const path&, directory_options, error_code*);
23866:
23866: friend bool
23866: operator==(const recursive_directory_iterator& __lhs,
23866: const recursive_directory_iterator& __rhs) noexcept
23866: {
23866: return !__rhs._M_dirs.owner_before(__lhs._M_dirs)
23866: && !__lhs._M_dirs.owner_before(__rhs._M_dirs);
23866: }
23866:
23866: friend bool
23866: operator!=(const recursive_directory_iterator& __lhs,
23866: const recursive_directory_iterator& __rhs) noexcept
23866: { return !(__lhs == __rhs); }
23866:
23866: struct _Dir_stack;
23866: std::__shared_ptr<_Dir_stack> _M_dirs;
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline recursive_directory_iterator
23866: begin(recursive_directory_iterator __iter) noexcept
23866: { return __iter; }
23866:
23866:
23866: inline recursive_directory_iterator
23866: end(recursive_directory_iterator) noexcept
23866: { return recursive_directory_iterator(); }
23866:
23866:
23866: }
23866:
23866:
23866: }
23866:
23866:
23866:
23866:
23866: extern template class
23866: __shared_ptr<filesystem::_Dir>;
23866: extern template class
23866: __shared_ptr<filesystem::recursive_directory_iterator::_Dir_stack>;
23866:
23866:
23866: }
23866: # 47 "/usr/include/c++/10/filesystem" 2 3
23866: # 1 "/usr/include/c++/10/bits/fs_ops.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/fs_ops.h" 3
23866: #define _GLIBCXX_FS_OPS_H 1
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: namespace filesystem
23866: {
23866:
23866:
23866:
23866:
23866: path absolute(const path& __p);
23866: path absolute(const path& __p, error_code& __ec);
23866:
23866: path canonical(const path& __p);
23866: path canonical(const path& __p, error_code& __ec);
23866:
23866: inline void
23866: copy(const path& __from, const path& __to)
23866: { copy(__from, __to, copy_options::none); }
23866:
23866: inline void
23866: copy(const path& __from, const path& __to, error_code& __ec)
23866: { copy(__from, __to, copy_options::none, __ec); }
23866:
23866: void copy(const path& __from, const path& __to, copy_options __options);
23866: void copy(const path& __from, const path& __to, copy_options __options,
23866: error_code& __ec);
23866:
23866: inline bool
23866: copy_file(const path& __from, const path& __to)
23866: { return copy_file(__from, __to, copy_options::none); }
23866:
23866: inline bool
23866: copy_file(const path& __from, const path& __to, error_code& __ec)
23866: { return copy_file(__from, __to, copy_options::none, __ec); }
23866:
23866: bool copy_file(const path& __from, const path& __to, copy_options __option);
23866: bool copy_file(const path& __from, const path& __to, copy_options __option,
23866: error_code& __ec);
23866:
23866: void copy_symlink(const path& __existing_symlink, const path& __new_symlink);
23866: void copy_symlink(const path& __existing_symlink, const path& __new_symlink,
23866: error_code& __ec) noexcept;
23866:
23866: bool create_directories(const path& __p);
23866: bool create_directories(const path& __p, error_code& __ec);
23866:
23866: bool create_directory(const path& __p);
23866: bool create_directory(const path& __p, error_code& __ec) noexcept;
23866:
23866: bool create_directory(const path& __p, const path& attributes);
23866: bool create_directory(const path& __p, const path& attributes,
23866: error_code& __ec) noexcept;
23866:
23866: void create_directory_symlink(const path& __to, const path& __new_symlink);
23866: void create_directory_symlink(const path& __to, const path& __new_symlink,
23866: error_code& __ec) noexcept;
23866:
23866: void create_hard_link(const path& __to, const path& __new_hard_link);
23866: void create_hard_link(const path& __to, const path& __new_hard_link,
23866: error_code& __ec) noexcept;
23866:
23866: void create_symlink(const path& __to, const path& __new_symlink);
23866: void create_symlink(const path& __to, const path& __new_symlink,
23866: error_code& __ec) noexcept;
23866:
23866: path current_path();
23866: path current_path(error_code& __ec);
23866: void current_path(const path& __p);
23866: void current_path(const path& __p, error_code& __ec) noexcept;
23866:
23866: bool
23866: equivalent(const path& __p1, const path& __p2);
23866:
23866: bool
23866: equivalent(const path& __p1, const path& __p2, error_code& __ec) noexcept;
23866:
23866: inline bool
23866: exists(file_status __s) noexcept
23866: { return status_known(__s) && __s.type() != file_type::not_found; }
23866:
23866: inline bool
23866: exists(const path& __p)
23866: { return exists(status(__p)); }
23866:
23866: inline bool
23866: exists(const path& __p, error_code& __ec) noexcept
23866: {
23866: auto __s = status(__p, __ec);
23866: if (status_known(__s))
23866: {
23866: __ec.clear();
23866: return __s.type() != file_type::not_found;
23866: }
23866: return false;
23866: }
23866:
23866: uintmax_t file_size(const path& __p);
23866: uintmax_t file_size(const path& __p, error_code& __ec) noexcept;
23866:
23866: uintmax_t hard_link_count(const path& __p);
23866: uintmax_t hard_link_count(const path& __p, error_code& __ec) noexcept;
23866:
23866: inline bool
23866: is_block_file(file_status __s) noexcept
23866: { return __s.type() == file_type::block; }
23866:
23866: inline bool
23866: is_block_file(const path& __p)
23866: { return is_block_file(status(__p)); }
23866:
23866: inline bool
23866: is_block_file(const path& __p, error_code& __ec) noexcept
23866: { return is_block_file(status(__p, __ec)); }
23866:
23866: inline bool
23866: is_character_file(file_status __s) noexcept
23866: { return __s.type() == file_type::character; }
23866:
23866: inline bool
23866: is_character_file(const path& __p)
23866: { return is_character_file(status(__p)); }
23866:
23866: inline bool
23866: is_character_file(const path& __p, error_code& __ec) noexcept
23866: { return is_character_file(status(__p, __ec)); }
23866:
23866: inline bool
23866: is_directory(file_status __s) noexcept
23866: { return __s.type() == file_type::directory; }
23866:
23866: inline bool
23866: is_directory(const path& __p)
23866: { return is_directory(status(__p)); }
23866:
23866: inline bool
23866: is_directory(const path& __p, error_code& __ec) noexcept
23866: { return is_directory(status(__p, __ec)); }
23866:
23866: bool is_empty(const path& __p);
23866: bool is_empty(const path& __p, error_code& __ec);
23866:
23866: inline bool
23866: is_fifo(file_status __s) noexcept
23866: { return __s.type() == file_type::fifo; }
23866:
23866: inline bool
23866: is_fifo(const path& __p)
23866: { return is_fifo(status(__p)); }
23866:
23866: inline bool
23866: is_fifo(const path& __p, error_code& __ec) noexcept
23866: { return is_fifo(status(__p, __ec)); }
23866:
23866: inline bool
23866: is_other(file_status __s) noexcept
23866: {
23866: return exists(__s) && !is_regular_file(__s) && !is_directory(__s)
23866: && !is_symlink(__s);
23866: }
23866:
23866: inline bool
23866: is_other(const path& __p)
23866: { return is_other(status(__p)); }
23866:
23866: inline bool
23866: is_other(const path& __p, error_code& __ec) noexcept
23866: { return is_other(status(__p, __ec)); }
23866:
23866: inline bool
23866: is_regular_file(file_status __s) noexcept
23866: { return __s.type() == file_type::regular; }
23866:
23866: inline bool
23866: is_regular_file(const path& __p)
23866: { return is_regular_file(status(__p)); }
23866:
23866: inline bool
23866: is_regular_file(const path& __p, error_code& __ec) noexcept
23866: { return is_regular_file(status(__p, __ec)); }
23866:
23866: inline bool
23866: is_socket(file_status __s) noexcept
23866: { return __s.type() == file_type::socket; }
23866:
23866: inline bool
23866: is_socket(const path& __p)
23866: { return is_socket(status(__p)); }
23866:
23866: inline bool
23866: is_socket(const path& __p, error_code& __ec) noexcept
23866: { return is_socket(status(__p, __ec)); }
23866:
23866: inline bool
23866: is_symlink(file_status __s) noexcept
23866: { return __s.type() == file_type::symlink; }
23866:
23866: inline bool
23866: is_symlink(const path& __p)
23866: { return is_symlink(symlink_status(__p)); }
23866:
23866: inline bool
23866: is_symlink(const path& __p, error_code& __ec) noexcept
23866: { return is_symlink(symlink_status(__p, __ec)); }
23866:
23866: file_time_type last_write_time(const path& __p);
23866: file_time_type last_write_time(const path& __p, error_code& __ec) noexcept;
23866: void last_write_time(const path& __p, file_time_type __new_time);
23866: void last_write_time(const path& __p, file_time_type __new_time,
23866: error_code& __ec) noexcept;
23866:
23866: void
23866: permissions(const path& __p, perms __prms,
23866: perm_options __opts = perm_options::replace);
23866:
23866: inline void
23866: permissions(const path& __p, perms __prms, error_code& __ec) noexcept
23866: { permissions(__p, __prms, perm_options::replace, __ec); }
23866:
23866: void
23866: permissions(const path& __p, perms __prms, perm_options __opts,
23866: error_code& __ec) noexcept;
23866:
23866: inline path proximate(const path& __p, error_code& __ec)
23866: { return proximate(__p, current_path(), __ec); }
23866:
23866: path proximate(const path& __p, const path& __base = current_path());
23866: path proximate(const path& __p, const path& __base, error_code& __ec);
23866:
23866: path read_symlink(const path& __p);
23866: path read_symlink(const path& __p, error_code& __ec);
23866:
23866: inline path relative(const path& __p, error_code& __ec)
23866: { return relative(__p, current_path(), __ec); }
23866:
23866: path relative(const path& __p, const path& __base = current_path());
23866: path relative(const path& __p, const path& __base, error_code& __ec);
23866:
23866: bool remove(const path& __p);
23866: bool remove(const path& __p, error_code& __ec) noexcept;
23866:
23866: uintmax_t remove_all(const path& __p);
23866: uintmax_t remove_all(const path& __p, error_code& __ec);
23866:
23866: void rename(const path& __from, const path& __to);
23866: void rename(const path& __from, const path& __to, error_code& __ec) noexcept;
23866:
23866: void resize_file(const path& __p, uintmax_t __size);
23866: void resize_file(const path& __p, uintmax_t __size, error_code& __ec) noexcept;
23866:
23866: space_info space(const path& __p);
23866: space_info space(const path& __p, error_code& __ec) noexcept;
23866:
23866: file_status status(const path& __p);
23866: file_status status(const path& __p, error_code& __ec) noexcept;
23866:
23866: inline bool status_known(file_status __s) noexcept
23866: { return __s.type() != file_type::none; }
23866:
23866: file_status symlink_status(const path& __p);
23866: file_status symlink_status(const path& __p, error_code& __ec) noexcept;
23866:
23866: path temp_directory_path();
23866: path temp_directory_path(error_code& __ec);
23866:
23866: path weakly_canonical(const path& __p);
23866: path weakly_canonical(const path& __p, error_code& __ec);
23866:
23866:
23866: }
23866:
23866:
23866: }
23866: # 48 "/usr/include/c++/10/filesystem" 2 3
23866:
23866: #define __cpp_lib_filesystem 201703
23866: # 26 "src/common/common.h" 2
23866:
23866: # 1 "/usr/include/c++/10/memory" 1 3
23866: # 45 "/usr/include/c++/10/memory" 3
23866: #define _GLIBCXX_MEMORY 1
23866:
23866:
23866: # 48 "/usr/include/c++/10/memory" 3
23866: # 68 "/usr/include/c++/10/memory" 3
23866: # 1 "/usr/include/c++/10/bits/stl_raw_storage_iter.h" 1 3
23866: # 57 "/usr/include/c++/10/bits/stl_raw_storage_iter.h" 3
23866: #define _STL_RAW_STORAGE_ITERATOR_H 1
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class _OutputIterator, class _Tp>
23866: class raw_storage_iterator
23866: : public iterator<output_iterator_tag, void, void, void, void>
23866: {
23866: protected:
23866: _OutputIterator _M_iter;
23866:
23866: public:
23866: explicit
23866: raw_storage_iterator(_OutputIterator __x)
23866: : _M_iter(__x) {}
23866:
23866: raw_storage_iterator&
23866: operator*() { return *this; }
23866:
23866: raw_storage_iterator&
23866: operator=(const _Tp& __element)
23866: {
23866: std::_Construct(std::__addressof(*_M_iter), __element);
23866: return *this;
23866: }
23866:
23866:
23866:
23866:
23866: raw_storage_iterator&
23866: operator=(_Tp&& __element)
23866: {
23866: std::_Construct(std::__addressof(*_M_iter), std::move(__element));
23866: return *this;
23866: }
23866:
23866:
23866: raw_storage_iterator&
23866: operator++()
23866: {
23866: ++_M_iter;
23866: return *this;
23866: }
23866:
23866: raw_storage_iterator
23866: operator++(int)
23866: {
23866: raw_storage_iterator __tmp = *this;
23866: ++_M_iter;
23866: return __tmp;
23866: }
23866:
23866:
23866:
23866: _OutputIterator base() const { return _M_iter; }
23866: };
23866:
23866:
23866: }
23866: # 69 "/usr/include/c++/10/memory" 2 3
23866: # 1 "/usr/include/c++/10/bits/ranges_uninitialized.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/ranges_uninitialized.h" 3
23866: #define _RANGES_UNINITIALIZED_H 1
23866: # 70 "/usr/include/c++/10/memory" 2 3
23866: # 85 "/usr/include/c++/10/memory" 3
23866: # 1 "/usr/include/c++/10/bits/shared_ptr_atomic.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/shared_ptr_atomic.h" 3
23866: #define _SHARED_PTR_ATOMIC_H 1
23866:
23866: # 1 "/usr/include/c++/10/bits/atomic_base.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/atomic_base.h" 3
23866: #define _GLIBCXX_ATOMIC_BASE_H 1
23866:
23866:
23866: # 34 "/usr/include/c++/10/bits/atomic_base.h" 3
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/atomic_lockfree_defines.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/atomic_lockfree_defines.h" 3
23866: #define _GLIBCXX_ATOMIC_LOCK_FREE_H 1
23866:
23866:
23866: # 34 "/usr/include/c++/10/bits/atomic_lockfree_defines.h" 3
23866: # 49 "/usr/include/c++/10/bits/atomic_lockfree_defines.h" 3
23866: #define ATOMIC_BOOL_LOCK_FREE __GCC_ATOMIC_BOOL_LOCK_FREE
23866: #define ATOMIC_CHAR_LOCK_FREE __GCC_ATOMIC_CHAR_LOCK_FREE
23866: #define ATOMIC_WCHAR_T_LOCK_FREE __GCC_ATOMIC_WCHAR_T_LOCK_FREE
23866:
23866:
23866:
23866: #define ATOMIC_CHAR16_T_LOCK_FREE __GCC_ATOMIC_CHAR16_T_LOCK_FREE
23866: #define ATOMIC_CHAR32_T_LOCK_FREE __GCC_ATOMIC_CHAR32_T_LOCK_FREE
23866: #define ATOMIC_SHORT_LOCK_FREE __GCC_ATOMIC_SHORT_LOCK_FREE
23866: #define ATOMIC_INT_LOCK_FREE __GCC_ATOMIC_INT_LOCK_FREE
23866: #define ATOMIC_LONG_LOCK_FREE __GCC_ATOMIC_LONG_LOCK_FREE
23866: #define ATOMIC_LLONG_LOCK_FREE __GCC_ATOMIC_LLONG_LOCK_FREE
23866: #define ATOMIC_POINTER_LOCK_FREE __GCC_ATOMIC_POINTER_LOCK_FREE
23866: # 38 "/usr/include/c++/10/bits/atomic_base.h" 2 3
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 74 "/usr/include/c++/10/bits/atomic_base.h" 3
23866: typedef enum memory_order
23866: {
23866: memory_order_relaxed,
23866: memory_order_consume,
23866: memory_order_acquire,
23866: memory_order_release,
23866: memory_order_acq_rel,
23866: memory_order_seq_cst
23866: } memory_order;
23866:
23866:
23866: enum __memory_order_modifier
23866: {
23866: __memory_order_mask = 0x0ffff,
23866: __memory_order_modifier_mask = 0xffff0000,
23866: __memory_order_hle_acquire = 0x10000,
23866: __memory_order_hle_release = 0x20000
23866: };
23866:
23866: constexpr memory_order
23866: operator|(memory_order __m, __memory_order_modifier __mod)
23866: {
23866: return memory_order(int(__m) | int(__mod));
23866: }
23866:
23866: constexpr memory_order
23866: operator&(memory_order __m, __memory_order_modifier __mod)
23866: {
23866: return memory_order(int(__m) & int(__mod));
23866: }
23866:
23866:
23866: constexpr memory_order
23866: __cmpexch_failure_order2(memory_order __m) noexcept
23866: {
23866: return __m == memory_order_acq_rel ? memory_order_acquire
23866: : __m == memory_order_release ? memory_order_relaxed : __m;
23866: }
23866:
23866: constexpr memory_order
23866: __cmpexch_failure_order(memory_order __m) noexcept
23866: {
23866: return memory_order(__cmpexch_failure_order2(__m & __memory_order_mask)
23866: | __memory_order_modifier(__m & __memory_order_modifier_mask));
23866: }
23866:
23866: inline __attribute__((__always_inline__)) void
23866: atomic_thread_fence(memory_order __m) noexcept
23866: { __atomic_thread_fence(int(__m)); }
23866:
23866: inline __attribute__((__always_inline__)) void
23866: atomic_signal_fence(memory_order __m) noexcept
23866: { __atomic_signal_fence(int(__m)); }
23866:
23866:
23866: template<typename _Tp>
23866: inline _Tp
23866: kill_dependency(_Tp __y) noexcept
23866: {
23866: _Tp __ret(__y);
23866: return __ret;
23866: }
23866:
23866:
23866:
23866: template<typename _IntTp>
23866: struct __atomic_base;
23866:
23866:
23866: #define _GLIBCXX20_INIT(I)
23866:
23866:
23866:
23866:
23866:
23866: #define ATOMIC_VAR_INIT(_VI) { _VI }
23866:
23866: template<typename _Tp>
23866: struct atomic;
23866:
23866: template<typename _Tp>
23866: struct atomic<_Tp*>;
23866:
23866:
23866:
23866: typedef bool __atomic_flag_data_type;
23866: # 174 "/usr/include/c++/10/bits/atomic_base.h" 3
23866: extern "C" {
23866:
23866: struct __atomic_flag_base
23866: {
23866: __atomic_flag_data_type _M_i ;
23866: };
23866:
23866: }
23866:
23866: #define ATOMIC_FLAG_INIT { 0 }
23866:
23866:
23866: struct atomic_flag : public __atomic_flag_base
23866: {
23866: atomic_flag() noexcept = default;
23866: ~atomic_flag() noexcept = default;
23866: atomic_flag(const atomic_flag&) = delete;
23866: atomic_flag& operator=(const atomic_flag&) = delete;
23866: atomic_flag& operator=(const atomic_flag&) volatile = delete;
23866:
23866:
23866: constexpr atomic_flag(bool __i) noexcept
23866: : __atomic_flag_base{ _S_init(__i) }
23866: { }
23866:
23866: inline __attribute__((__always_inline__)) bool
23866: test_and_set(memory_order __m = memory_order_seq_cst) noexcept
23866: {
23866: return __atomic_test_and_set (&_M_i, int(__m));
23866: }
23866:
23866: inline __attribute__((__always_inline__)) bool
23866: test_and_set(memory_order __m = memory_order_seq_cst) volatile noexcept
23866: {
23866: return __atomic_test_and_set (&_M_i, int(__m));
23866: }
23866:
23866: inline __attribute__((__always_inline__)) void
23866: clear(memory_order __m = memory_order_seq_cst) noexcept
23866: {
23866: memory_order __b = __m & __memory_order_mask;
23866: ;
23866: ;
23866: ;
23866:
23866: __atomic_clear (&_M_i, int(__m));
23866: }
23866:
23866: inline __attribute__((__always_inline__)) void
23866: clear(memory_order __m = memory_order_seq_cst) volatile noexcept
23866: {
23866: memory_order __b = __m & __memory_order_mask;
23866: ;
23866: ;
23866: ;
23866:
23866: __atomic_clear (&_M_i, int(__m));
23866: }
23866:
23866: private:
23866: static constexpr __atomic_flag_data_type
23866: _S_init(bool __i)
23866: { return __i ? 1 : 0; }
23866: };
23866: # 264 "/usr/include/c++/10/bits/atomic_base.h" 3
23866: template<typename _ITp>
23866: struct __atomic_base
23866: {
23866: using value_type = _ITp;
23866: using difference_type = value_type;
23866:
23866: private:
23866: typedef _ITp __int_type;
23866:
23866: static constexpr int _S_alignment =
23866: sizeof(_ITp) > alignof(_ITp) ? sizeof(_ITp) : alignof(_ITp);
23866:
23866: alignas(_S_alignment) __int_type _M_i ;
23866:
23866: public:
23866: __atomic_base() noexcept = default;
23866: ~__atomic_base() noexcept = default;
23866: __atomic_base(const __atomic_base&) = delete;
23866: __atomic_base& operator=(const __atomic_base&) = delete;
23866: __atomic_base& operator=(const __atomic_base&) volatile = delete;
23866:
23866:
23866: constexpr __atomic_base(__int_type __i) noexcept : _M_i (__i) { }
23866:
23866: operator __int_type() const noexcept
23866: { return load(); }
23866:
23866: operator __int_type() const volatile noexcept
23866: { return load(); }
23866:
23866: __int_type
23866: operator=(__int_type __i) noexcept
23866: {
23866: store(__i);
23866: return __i;
23866: }
23866:
23866: __int_type
23866: operator=(__int_type __i) volatile noexcept
23866: {
23866: store(__i);
23866: return __i;
23866: }
23866:
23866: __int_type
23866: operator++(int) noexcept
23866: { return fetch_add(1); }
23866:
23866: __int_type
23866: operator++(int) volatile noexcept
23866: { return fetch_add(1); }
23866:
23866: __int_type
23866: operator--(int) noexcept
23866: { return fetch_sub(1); }
23866:
23866: __int_type
23866: operator--(int) volatile noexcept
23866: { return fetch_sub(1); }
23866:
23866: __int_type
23866: operator++() noexcept
23866: { return __atomic_add_fetch(&_M_i, 1, int(memory_order_seq_cst)); }
23866:
23866: __int_type
23866: operator++() volatile noexcept
23866: { return __atomic_add_fetch(&_M_i, 1, int(memory_order_seq_cst)); }
23866:
23866: __int_type
23866: operator--() noexcept
23866: { return __atomic_sub_fetch(&_M_i, 1, int(memory_order_seq_cst)); }
23866:
23866: __int_type
23866: operator--() volatile noexcept
23866: { return __atomic_sub_fetch(&_M_i, 1, int(memory_order_seq_cst)); }
23866:
23866: __int_type
23866: operator+=(__int_type __i) noexcept
23866: { return __atomic_add_fetch(&_M_i, __i, int(memory_order_seq_cst)); }
23866:
23866: __int_type
23866: operator+=(__int_type __i) volatile noexcept
23866: { return __atomic_add_fetch(&_M_i, __i, int(memory_order_seq_cst)); }
23866:
23866: __int_type
23866: operator-=(__int_type __i) noexcept
23866: { return __atomic_sub_fetch(&_M_i, __i, int(memory_order_seq_cst)); }
23866:
23866: __int_type
23866: operator-=(__int_type __i) volatile noexcept
23866: { return __atomic_sub_fetch(&_M_i, __i, int(memory_order_seq_cst)); }
23866:
23866: __int_type
23866: operator&=(__int_type __i) noexcept
23866: { return __atomic_and_fetch(&_M_i, __i, int(memory_order_seq_cst)); }
23866:
23866: __int_type
23866: operator&=(__int_type __i) volatile noexcept
23866: { return __atomic_and_fetch(&_M_i, __i, int(memory_order_seq_cst)); }
23866:
23866: __int_type
23866: operator|=(__int_type __i) noexcept
23866: { return __atomic_or_fetch(&_M_i, __i, int(memory_order_seq_cst)); }
23866:
23866: __int_type
23866: operator|=(__int_type __i) volatile noexcept
23866: { return __atomic_or_fetch(&_M_i, __i, int(memory_order_seq_cst)); }
23866:
23866: __int_type
23866: operator^=(__int_type __i) noexcept
23866: { return __atomic_xor_fetch(&_M_i, __i, int(memory_order_seq_cst)); }
23866:
23866: __int_type
23866: operator^=(__int_type __i) volatile noexcept
23866: { return __atomic_xor_fetch(&_M_i, __i, int(memory_order_seq_cst)); }
23866:
23866: bool
23866: is_lock_free() const noexcept
23866: {
23866:
23866: return __atomic_is_lock_free(sizeof(_M_i),
23866: reinterpret_cast<void *>(-_S_alignment));
23866: }
23866:
23866: bool
23866: is_lock_free() const volatile noexcept
23866: {
23866:
23866: return __atomic_is_lock_free(sizeof(_M_i),
23866: reinterpret_cast<void *>(-_S_alignment));
23866: }
23866:
23866: inline __attribute__((__always_inline__)) void
23866: store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept
23866: {
23866: memory_order __b = __m & __memory_order_mask;
23866: ;
23866: ;
23866: ;
23866:
23866: __atomic_store_n(&_M_i, __i, int(__m));
23866: }
23866:
23866: inline __attribute__((__always_inline__)) void
23866: store(__int_type __i,
23866: memory_order __m = memory_order_seq_cst) volatile noexcept
23866: {
23866: memory_order __b = __m & __memory_order_mask;
23866: ;
23866: ;
23866: ;
23866:
23866: __atomic_store_n(&_M_i, __i, int(__m));
23866: }
23866:
23866: inline __attribute__((__always_inline__)) __int_type
23866: load(memory_order __m = memory_order_seq_cst) const noexcept
23866: {
23866: memory_order __b = __m & __memory_order_mask;
23866: ;
23866: ;
23866:
23866: return __atomic_load_n(&_M_i, int(__m));
23866: }
23866:
23866: inline __attribute__((__always_inline__)) __int_type
23866: load(memory_order __m = memory_order_seq_cst) const volatile noexcept
23866: {
23866: memory_order __b = __m & __memory_order_mask;
23866: ;
23866: ;
23866:
23866: return __atomic_load_n(&_M_i, int(__m));
23866: }
23866:
23866: inline __attribute__((__always_inline__)) __int_type
23866: exchange(__int_type __i,
23866: memory_order __m = memory_order_seq_cst) noexcept
23866: {
23866: return __atomic_exchange_n(&_M_i, __i, int(__m));
23866: }
23866:
23866:
23866: inline __attribute__((__always_inline__)) __int_type
23866: exchange(__int_type __i,
23866: memory_order __m = memory_order_seq_cst) volatile noexcept
23866: {
23866: return __atomic_exchange_n(&_M_i, __i, int(__m));
23866: }
23866:
23866: inline __attribute__((__always_inline__)) bool
23866: compare_exchange_weak(__int_type& __i1, __int_type __i2,
23866: memory_order __m1, memory_order __m2) noexcept
23866: {
23866: memory_order __b2 = __m2 & __memory_order_mask;
23866: memory_order __b1 = __m1 & __memory_order_mask;
23866: ;
23866: ;
23866: ;
23866:
23866: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1,
23866: int(__m1), int(__m2));
23866: }
23866:
23866: inline __attribute__((__always_inline__)) bool
23866: compare_exchange_weak(__int_type& __i1, __int_type __i2,
23866: memory_order __m1,
23866: memory_order __m2) volatile noexcept
23866: {
23866: memory_order __b2 = __m2 & __memory_order_mask;
23866: memory_order __b1 = __m1 & __memory_order_mask;
23866: ;
23866: ;
23866: ;
23866:
23866: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1,
23866: int(__m1), int(__m2));
23866: }
23866:
23866: inline __attribute__((__always_inline__)) bool
23866: compare_exchange_weak(__int_type& __i1, __int_type __i2,
23866: memory_order __m = memory_order_seq_cst) noexcept
23866: {
23866: return compare_exchange_weak(__i1, __i2, __m,
23866: __cmpexch_failure_order(__m));
23866: }
23866:
23866: inline __attribute__((__always_inline__)) bool
23866: compare_exchange_weak(__int_type& __i1, __int_type __i2,
23866: memory_order __m = memory_order_seq_cst) volatile noexcept
23866: {
23866: return compare_exchange_weak(__i1, __i2, __m,
23866: __cmpexch_failure_order(__m));
23866: }
23866:
23866: inline __attribute__((__always_inline__)) bool
23866: compare_exchange_strong(__int_type& __i1, __int_type __i2,
23866: memory_order __m1, memory_order __m2) noexcept
23866: {
23866: memory_order __b2 = __m2 & __memory_order_mask;
23866: memory_order __b1 = __m1 & __memory_order_mask;
23866: ;
23866: ;
23866: ;
23866:
23866: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0,
23866: int(__m1), int(__m2));
23866: }
23866:
23866: inline __attribute__((__always_inline__)) bool
23866: compare_exchange_strong(__int_type& __i1, __int_type __i2,
23866: memory_order __m1,
23866: memory_order __m2) volatile noexcept
23866: {
23866: memory_order __b2 = __m2 & __memory_order_mask;
23866: memory_order __b1 = __m1 & __memory_order_mask;
23866:
23866: ;
23866: ;
23866: ;
23866:
23866: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0,
23866: int(__m1), int(__m2));
23866: }
23866:
23866: inline __attribute__((__always_inline__)) bool
23866: compare_exchange_strong(__int_type& __i1, __int_type __i2,
23866: memory_order __m = memory_order_seq_cst) noexcept
23866: {
23866: return compare_exchange_strong(__i1, __i2, __m,
23866: __cmpexch_failure_order(__m));
23866: }
23866:
23866: inline __attribute__((__always_inline__)) bool
23866: compare_exchange_strong(__int_type& __i1, __int_type __i2,
23866: memory_order __m = memory_order_seq_cst) volatile noexcept
23866: {
23866: return compare_exchange_strong(__i1, __i2, __m,
23866: __cmpexch_failure_order(__m));
23866: }
23866:
23866: inline __attribute__((__always_inline__)) __int_type
23866: fetch_add(__int_type __i,
23866: memory_order __m = memory_order_seq_cst) noexcept
23866: { return __atomic_fetch_add(&_M_i, __i, int(__m)); }
23866:
23866: inline __attribute__((__always_inline__)) __int_type
23866: fetch_add(__int_type __i,
23866: memory_order __m = memory_order_seq_cst) volatile noexcept
23866: { return __atomic_fetch_add(&_M_i, __i, int(__m)); }
23866:
23866: inline __attribute__((__always_inline__)) __int_type
23866: fetch_sub(__int_type __i,
23866: memory_order __m = memory_order_seq_cst) noexcept
23866: { return __atomic_fetch_sub(&_M_i, __i, int(__m)); }
23866:
23866: inline __attribute__((__always_inline__)) __int_type
23866: fetch_sub(__int_type __i,
23866: memory_order __m = memory_order_seq_cst) volatile noexcept
23866: { return __atomic_fetch_sub(&_M_i, __i, int(__m)); }
23866:
23866: inline __attribute__((__always_inline__)) __int_type
23866: fetch_and(__int_type __i,
23866: memory_order __m = memory_order_seq_cst) noexcept
23866: { return __atomic_fetch_and(&_M_i, __i, int(__m)); }
23866:
23866: inline __attribute__((__always_inline__)) __int_type
23866: fetch_and(__int_type __i,
23866: memory_order __m = memory_order_seq_cst) volatile noexcept
23866: { return __atomic_fetch_and(&_M_i, __i, int(__m)); }
23866:
23866: inline __attribute__((__always_inline__)) __int_type
23866: fetch_or(__int_type __i,
23866: memory_order __m = memory_order_seq_cst) noexcept
23866: { return __atomic_fetch_or(&_M_i, __i, int(__m)); }
23866:
23866: inline __attribute__((__always_inline__)) __int_type
23866: fetch_or(__int_type __i,
23866: memory_order __m = memory_order_seq_cst) volatile noexcept
23866: { return __atomic_fetch_or(&_M_i, __i, int(__m)); }
23866:
23866: inline __attribute__((__always_inline__)) __int_type
23866: fetch_xor(__int_type __i,
23866: memory_order __m = memory_order_seq_cst) noexcept
23866: { return __atomic_fetch_xor(&_M_i, __i, int(__m)); }
23866:
23866: inline __attribute__((__always_inline__)) __int_type
23866: fetch_xor(__int_type __i,
23866: memory_order __m = memory_order_seq_cst) volatile noexcept
23866: { return __atomic_fetch_xor(&_M_i, __i, int(__m)); }
23866: };
23866:
23866:
23866:
23866: template<typename _PTp>
23866: struct __atomic_base<_PTp*>
23866: {
23866: private:
23866: typedef _PTp* __pointer_type;
23866:
23866: __pointer_type _M_p ;
23866:
23866:
23866: constexpr ptrdiff_t
23866: _M_type_size(ptrdiff_t __d) const { return __d * sizeof(_PTp); }
23866:
23866: constexpr ptrdiff_t
23866: _M_type_size(ptrdiff_t __d) const volatile { return __d * sizeof(_PTp); }
23866:
23866: public:
23866: __atomic_base() noexcept = default;
23866: ~__atomic_base() noexcept = default;
23866: __atomic_base(const __atomic_base&) = delete;
23866: __atomic_base& operator=(const __atomic_base&) = delete;
23866: __atomic_base& operator=(const __atomic_base&) volatile = delete;
23866:
23866:
23866: constexpr __atomic_base(__pointer_type __p) noexcept : _M_p (__p) { }
23866:
23866: operator __pointer_type() const noexcept
23866: { return load(); }
23866:
23866: operator __pointer_type() const volatile noexcept
23866: { return load(); }
23866:
23866: __pointer_type
23866: operator=(__pointer_type __p) noexcept
23866: {
23866: store(__p);
23866: return __p;
23866: }
23866:
23866: __pointer_type
23866: operator=(__pointer_type __p) volatile noexcept
23866: {
23866: store(__p);
23866: return __p;
23866: }
23866:
23866: __pointer_type
23866: operator++(int) noexcept
23866: { return fetch_add(1); }
23866:
23866: __pointer_type
23866: operator++(int) volatile noexcept
23866: { return fetch_add(1); }
23866:
23866: __pointer_type
23866: operator--(int) noexcept
23866: { return fetch_sub(1); }
23866:
23866: __pointer_type
23866: operator--(int) volatile noexcept
23866: { return fetch_sub(1); }
23866:
23866: __pointer_type
23866: operator++() noexcept
23866: { return __atomic_add_fetch(&_M_p, _M_type_size(1),
23866: int(memory_order_seq_cst)); }
23866:
23866: __pointer_type
23866: operator++() volatile noexcept
23866: { return __atomic_add_fetch(&_M_p, _M_type_size(1),
23866: int(memory_order_seq_cst)); }
23866:
23866: __pointer_type
23866: operator--() noexcept
23866: { return __atomic_sub_fetch(&_M_p, _M_type_size(1),
23866: int(memory_order_seq_cst)); }
23866:
23866: __pointer_type
23866: operator--() volatile noexcept
23866: { return __atomic_sub_fetch(&_M_p, _M_type_size(1),
23866: int(memory_order_seq_cst)); }
23866:
23866: __pointer_type
23866: operator+=(ptrdiff_t __d) noexcept
23866: { return __atomic_add_fetch(&_M_p, _M_type_size(__d),
23866: int(memory_order_seq_cst)); }
23866:
23866: __pointer_type
23866: operator+=(ptrdiff_t __d) volatile noexcept
23866: { return __atomic_add_fetch(&_M_p, _M_type_size(__d),
23866: int(memory_order_seq_cst)); }
23866:
23866: __pointer_type
23866: operator-=(ptrdiff_t __d) noexcept
23866: { return __atomic_sub_fetch(&_M_p, _M_type_size(__d),
23866: int(memory_order_seq_cst)); }
23866:
23866: __pointer_type
23866: operator-=(ptrdiff_t __d) volatile noexcept
23866: { return __atomic_sub_fetch(&_M_p, _M_type_size(__d),
23866: int(memory_order_seq_cst)); }
23866:
23866: bool
23866: is_lock_free() const noexcept
23866: {
23866:
23866: return __atomic_is_lock_free(sizeof(_M_p),
23866: reinterpret_cast<void *>(-__alignof(_M_p)));
23866: }
23866:
23866: bool
23866: is_lock_free() const volatile noexcept
23866: {
23866:
23866: return __atomic_is_lock_free(sizeof(_M_p),
23866: reinterpret_cast<void *>(-__alignof(_M_p)));
23866: }
23866:
23866: inline __attribute__((__always_inline__)) void
23866: store(__pointer_type __p,
23866: memory_order __m = memory_order_seq_cst) noexcept
23866: {
23866: memory_order __b = __m & __memory_order_mask;
23866:
23866: ;
23866: ;
23866: ;
23866:
23866: __atomic_store_n(&_M_p, __p, int(__m));
23866: }
23866:
23866: inline __attribute__((__always_inline__)) void
23866: store(__pointer_type __p,
23866: memory_order __m = memory_order_seq_cst) volatile noexcept
23866: {
23866: memory_order __b = __m & __memory_order_mask;
23866: ;
23866: ;
23866: ;
23866:
23866: __atomic_store_n(&_M_p, __p, int(__m));
23866: }
23866:
23866: inline __attribute__((__always_inline__)) __pointer_type
23866: load(memory_order __m = memory_order_seq_cst) const noexcept
23866: {
23866: memory_order __b = __m & __memory_order_mask;
23866: ;
23866: ;
23866:
23866: return __atomic_load_n(&_M_p, int(__m));
23866: }
23866:
23866: inline __attribute__((__always_inline__)) __pointer_type
23866: load(memory_order __m = memory_order_seq_cst) const volatile noexcept
23866: {
23866: memory_order __b = __m & __memory_order_mask;
23866: ;
23866: ;
23866:
23866: return __atomic_load_n(&_M_p, int(__m));
23866: }
23866:
23866: inline __attribute__((__always_inline__)) __pointer_type
23866: exchange(__pointer_type __p,
23866: memory_order __m = memory_order_seq_cst) noexcept
23866: {
23866: return __atomic_exchange_n(&_M_p, __p, int(__m));
23866: }
23866:
23866:
23866: inline __attribute__((__always_inline__)) __pointer_type
23866: exchange(__pointer_type __p,
23866: memory_order __m = memory_order_seq_cst) volatile noexcept
23866: {
23866: return __atomic_exchange_n(&_M_p, __p, int(__m));
23866: }
23866:
23866: inline __attribute__((__always_inline__)) bool
23866: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2,
23866: memory_order __m1,
23866: memory_order __m2) noexcept
23866: {
23866: memory_order __b2 = __m2 & __memory_order_mask;
23866: memory_order __b1 = __m1 & __memory_order_mask;
23866: ;
23866: ;
23866: ;
23866:
23866: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0,
23866: int(__m1), int(__m2));
23866: }
23866:
23866: inline __attribute__((__always_inline__)) bool
23866: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2,
23866: memory_order __m1,
23866: memory_order __m2) volatile noexcept
23866: {
23866: memory_order __b2 = __m2 & __memory_order_mask;
23866: memory_order __b1 = __m1 & __memory_order_mask;
23866:
23866: ;
23866: ;
23866: ;
23866:
23866: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0,
23866: int(__m1), int(__m2));
23866: }
23866:
23866: inline __attribute__((__always_inline__)) __pointer_type
23866: fetch_add(ptrdiff_t __d,
23866: memory_order __m = memory_order_seq_cst) noexcept
23866: { return __atomic_fetch_add(&_M_p, _M_type_size(__d), int(__m)); }
23866:
23866: inline __attribute__((__always_inline__)) __pointer_type
23866: fetch_add(ptrdiff_t __d,
23866: memory_order __m = memory_order_seq_cst) volatile noexcept
23866: { return __atomic_fetch_add(&_M_p, _M_type_size(__d), int(__m)); }
23866:
23866: inline __attribute__((__always_inline__)) __pointer_type
23866: fetch_sub(ptrdiff_t __d,
23866: memory_order __m = memory_order_seq_cst) noexcept
23866: { return __atomic_fetch_sub(&_M_p, _M_type_size(__d), int(__m)); }
23866:
23866: inline __attribute__((__always_inline__)) __pointer_type
23866: fetch_sub(ptrdiff_t __d,
23866: memory_order __m = memory_order_seq_cst) volatile noexcept
23866: { return __atomic_fetch_sub(&_M_p, _M_type_size(__d), int(__m)); }
23866: };
23866: # 1700 "/usr/include/c++/10/bits/atomic_base.h" 3
23866:
23866: }
23866: # 34 "/usr/include/c++/10/bits/shared_ptr_atomic.h" 2 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 47 "/usr/include/c++/10/bits/shared_ptr_atomic.h" 3
23866: struct _Sp_locker
23866: {
23866: _Sp_locker(const _Sp_locker&) = delete;
23866: _Sp_locker& operator=(const _Sp_locker&) = delete;
23866:
23866:
23866: explicit
23866: _Sp_locker(const void*) noexcept;
23866: _Sp_locker(const void*, const void*) noexcept;
23866: ~_Sp_locker();
23866:
23866: private:
23866: unsigned char _M_key1;
23866: unsigned char _M_key2;
23866:
23866:
23866:
23866: };
23866: # 74 "/usr/include/c++/10/bits/shared_ptr_atomic.h" 3
23866: template<typename _Tp, _Lock_policy _Lp>
23866: inline bool
23866: atomic_is_lock_free(const __shared_ptr<_Tp, _Lp>* __p)
23866: {
23866:
23866: return __gthread_active_p() == 0;
23866:
23866:
23866:
23866: }
23866:
23866: template<typename _Tp>
23866: inline bool
23866: atomic_is_lock_free(const shared_ptr<_Tp>* __p)
23866: { return std::atomic_is_lock_free<_Tp, __default_lock_policy>(__p); }
23866: # 101 "/usr/include/c++/10/bits/shared_ptr_atomic.h" 3
23866: template<typename _Tp>
23866: inline shared_ptr<_Tp>
23866: atomic_load_explicit(const shared_ptr<_Tp>* __p, memory_order)
23866: {
23866: _Sp_locker __lock{__p};
23866: return *__p;
23866: }
23866:
23866: template<typename _Tp>
23866: inline shared_ptr<_Tp>
23866: atomic_load(const shared_ptr<_Tp>* __p)
23866: { return std::atomic_load_explicit(__p, memory_order_seq_cst); }
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: inline __shared_ptr<_Tp, _Lp>
23866: atomic_load_explicit(const __shared_ptr<_Tp, _Lp>* __p, memory_order)
23866: {
23866: _Sp_locker __lock{__p};
23866: return *__p;
23866: }
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: inline __shared_ptr<_Tp, _Lp>
23866: atomic_load(const __shared_ptr<_Tp, _Lp>* __p)
23866: { return std::atomic_load_explicit(__p, memory_order_seq_cst); }
23866: # 137 "/usr/include/c++/10/bits/shared_ptr_atomic.h" 3
23866: template<typename _Tp>
23866: inline void
23866: atomic_store_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r,
23866: memory_order)
23866: {
23866: _Sp_locker __lock{__p};
23866: __p->swap(__r);
23866: }
23866:
23866: template<typename _Tp>
23866: inline void
23866: atomic_store(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r)
23866: { std::atomic_store_explicit(__p, std::move(__r), memory_order_seq_cst); }
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: inline void
23866: atomic_store_explicit(__shared_ptr<_Tp, _Lp>* __p,
23866: __shared_ptr<_Tp, _Lp> __r,
23866: memory_order)
23866: {
23866: _Sp_locker __lock{__p};
23866: __p->swap(__r);
23866: }
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: inline void
23866: atomic_store(__shared_ptr<_Tp, _Lp>* __p, __shared_ptr<_Tp, _Lp> __r)
23866: { std::atomic_store_explicit(__p, std::move(__r), memory_order_seq_cst); }
23866: # 174 "/usr/include/c++/10/bits/shared_ptr_atomic.h" 3
23866: template<typename _Tp>
23866: inline shared_ptr<_Tp>
23866: atomic_exchange_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r,
23866: memory_order)
23866: {
23866: _Sp_locker __lock{__p};
23866: __p->swap(__r);
23866: return __r;
23866: }
23866:
23866: template<typename _Tp>
23866: inline shared_ptr<_Tp>
23866: atomic_exchange(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r)
23866: {
23866: return std::atomic_exchange_explicit(__p, std::move(__r),
23866: memory_order_seq_cst);
23866: }
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: inline __shared_ptr<_Tp, _Lp>
23866: atomic_exchange_explicit(__shared_ptr<_Tp, _Lp>* __p,
23866: __shared_ptr<_Tp, _Lp> __r,
23866: memory_order)
23866: {
23866: _Sp_locker __lock{__p};
23866: __p->swap(__r);
23866: return __r;
23866: }
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: inline __shared_ptr<_Tp, _Lp>
23866: atomic_exchange(__shared_ptr<_Tp, _Lp>* __p, __shared_ptr<_Tp, _Lp> __r)
23866: {
23866: return std::atomic_exchange_explicit(__p, std::move(__r),
23866: memory_order_seq_cst);
23866: }
23866: # 223 "/usr/include/c++/10/bits/shared_ptr_atomic.h" 3
23866: template<typename _Tp>
23866: bool
23866: atomic_compare_exchange_strong_explicit(shared_ptr<_Tp>* __p,
23866: shared_ptr<_Tp>* __v,
23866: shared_ptr<_Tp> __w,
23866: memory_order,
23866: memory_order)
23866: {
23866: shared_ptr<_Tp> __x;
23866: _Sp_locker __lock{__p, __v};
23866: owner_less<shared_ptr<_Tp>> __less;
23866: if (*__p == *__v && !__less(*__p, *__v) && !__less(*__v, *__p))
23866: {
23866: __x = std::move(*__p);
23866: *__p = std::move(__w);
23866: return true;
23866: }
23866: __x = std::move(*__v);
23866: *__v = *__p;
23866: return false;
23866: }
23866:
23866: template<typename _Tp>
23866: inline bool
23866: atomic_compare_exchange_strong(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v,
23866: shared_ptr<_Tp> __w)
23866: {
23866: return std::atomic_compare_exchange_strong_explicit(__p, __v,
23866: std::move(__w), memory_order_seq_cst, memory_order_seq_cst);
23866: }
23866:
23866: template<typename _Tp>
23866: inline bool
23866: atomic_compare_exchange_weak_explicit(shared_ptr<_Tp>* __p,
23866: shared_ptr<_Tp>* __v,
23866: shared_ptr<_Tp> __w,
23866: memory_order __success,
23866: memory_order __failure)
23866: {
23866: return std::atomic_compare_exchange_strong_explicit(__p, __v,
23866: std::move(__w), __success, __failure);
23866: }
23866:
23866: template<typename _Tp>
23866: inline bool
23866: atomic_compare_exchange_weak(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v,
23866: shared_ptr<_Tp> __w)
23866: {
23866: return std::atomic_compare_exchange_weak_explicit(__p, __v,
23866: std::move(__w), memory_order_seq_cst, memory_order_seq_cst);
23866: }
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: bool
23866: atomic_compare_exchange_strong_explicit(__shared_ptr<_Tp, _Lp>* __p,
23866: __shared_ptr<_Tp, _Lp>* __v,
23866: __shared_ptr<_Tp, _Lp> __w,
23866: memory_order,
23866: memory_order)
23866: {
23866: __shared_ptr<_Tp, _Lp> __x;
23866: _Sp_locker __lock{__p, __v};
23866: owner_less<__shared_ptr<_Tp, _Lp>> __less;
23866: if (*__p == *__v && !__less(*__p, *__v) && !__less(*__v, *__p))
23866: {
23866: __x = std::move(*__p);
23866: *__p = std::move(__w);
23866: return true;
23866: }
23866: __x = std::move(*__v);
23866: *__v = *__p;
23866: return false;
23866: }
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: inline bool
23866: atomic_compare_exchange_strong(__shared_ptr<_Tp, _Lp>* __p,
23866: __shared_ptr<_Tp, _Lp>* __v,
23866: __shared_ptr<_Tp, _Lp> __w)
23866: {
23866: return std::atomic_compare_exchange_strong_explicit(__p, __v,
23866: std::move(__w), memory_order_seq_cst, memory_order_seq_cst);
23866: }
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: inline bool
23866: atomic_compare_exchange_weak_explicit(__shared_ptr<_Tp, _Lp>* __p,
23866: __shared_ptr<_Tp, _Lp>* __v,
23866: __shared_ptr<_Tp, _Lp> __w,
23866: memory_order __success,
23866: memory_order __failure)
23866: {
23866: return std::atomic_compare_exchange_strong_explicit(__p, __v,
23866: std::move(__w), __success, __failure);
23866: }
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: inline bool
23866: atomic_compare_exchange_weak(__shared_ptr<_Tp, _Lp>* __p,
23866: __shared_ptr<_Tp, _Lp>* __v,
23866: __shared_ptr<_Tp, _Lp> __w)
23866: {
23866: return std::atomic_compare_exchange_weak_explicit(__p, __v,
23866: std::move(__w), memory_order_seq_cst, memory_order_seq_cst);
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 86 "/usr/include/c++/10/memory" 2 3
23866:
23866: # 1 "/usr/include/c++/10/backward/auto_ptr.h" 1 3
23866: # 31 "/usr/include/c++/10/backward/auto_ptr.h" 3
23866: #define _BACKWARD_AUTO_PTR_H 1
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 47 "/usr/include/c++/10/backward/auto_ptr.h" 3
23866: template<typename _Tp1>
23866: struct auto_ptr_ref
23866: {
23866: _Tp1* _M_ptr;
23866:
23866: explicit
23866: auto_ptr_ref(_Tp1* __p): _M_ptr(__p) { }
23866: } __attribute__ ((__deprecated__));
23866:
23866: #pragma GCC diagnostic push
23866: #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
23866: # 88 "/usr/include/c++/10/backward/auto_ptr.h" 3
23866: template<typename _Tp>
23866: class auto_ptr
23866: {
23866: private:
23866: _Tp* _M_ptr;
23866:
23866: public:
23866:
23866: typedef _Tp element_type;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: explicit
23866: auto_ptr(element_type* __p = 0) throw() : _M_ptr(__p) { }
23866: # 114 "/usr/include/c++/10/backward/auto_ptr.h" 3
23866: auto_ptr(auto_ptr& __a) throw() : _M_ptr(__a.release()) { }
23866: # 126 "/usr/include/c++/10/backward/auto_ptr.h" 3
23866: template<typename _Tp1>
23866: auto_ptr(auto_ptr<_Tp1>& __a) throw() : _M_ptr(__a.release()) { }
23866: # 137 "/usr/include/c++/10/backward/auto_ptr.h" 3
23866: auto_ptr&
23866: operator=(auto_ptr& __a) throw()
23866: {
23866: reset(__a.release());
23866: return *this;
23866: }
23866: # 154 "/usr/include/c++/10/backward/auto_ptr.h" 3
23866: template<typename _Tp1>
23866: auto_ptr&
23866: operator=(auto_ptr<_Tp1>& __a) throw()
23866: {
23866: reset(__a.release());
23866: return *this;
23866: }
23866: # 172 "/usr/include/c++/10/backward/auto_ptr.h" 3
23866: ~auto_ptr() { delete _M_ptr; }
23866: # 182 "/usr/include/c++/10/backward/auto_ptr.h" 3
23866: element_type&
23866: operator*() const throw()
23866: {
23866: ;
23866: return *_M_ptr;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: element_type*
23866: operator->() const throw()
23866: {
23866: ;
23866: return _M_ptr;
23866: }
23866: # 212 "/usr/include/c++/10/backward/auto_ptr.h" 3
23866: element_type*
23866: get() const throw() { return _M_ptr; }
23866: # 226 "/usr/include/c++/10/backward/auto_ptr.h" 3
23866: element_type*
23866: release() throw()
23866: {
23866: element_type* __tmp = _M_ptr;
23866: _M_ptr = 0;
23866: return __tmp;
23866: }
23866: # 241 "/usr/include/c++/10/backward/auto_ptr.h" 3
23866: void
23866: reset(element_type* __p = 0) throw()
23866: {
23866: if (__p != _M_ptr)
23866: {
23866: delete _M_ptr;
23866: _M_ptr = __p;
23866: }
23866: }
23866: # 266 "/usr/include/c++/10/backward/auto_ptr.h" 3
23866: auto_ptr(auto_ptr_ref<element_type> __ref) throw()
23866: : _M_ptr(__ref._M_ptr) { }
23866:
23866: auto_ptr&
23866: operator=(auto_ptr_ref<element_type> __ref) throw()
23866: {
23866: if (__ref._M_ptr != this->get())
23866: {
23866: delete _M_ptr;
23866: _M_ptr = __ref._M_ptr;
23866: }
23866: return *this;
23866: }
23866:
23866: template<typename _Tp1>
23866: operator auto_ptr_ref<_Tp1>() throw()
23866: { return auto_ptr_ref<_Tp1>(this->release()); }
23866:
23866: template<typename _Tp1>
23866: operator auto_ptr<_Tp1>() throw()
23866: { return auto_ptr<_Tp1>(this->release()); }
23866: } __attribute__ ((__deprecated__));
23866:
23866:
23866:
23866: template<>
23866: class auto_ptr<void>
23866: {
23866: public:
23866: typedef void element_type;
23866: } __attribute__ ((__deprecated__));
23866:
23866:
23866: template<_Lock_policy _Lp>
23866: template<typename _Tp>
23866: inline
23866: __shared_count<_Lp>::__shared_count(std::auto_ptr<_Tp>&& __r)
23866: : _M_pi(new _Sp_counted_ptr<_Tp*, _Lp>(__r.get()))
23866: { __r.release(); }
23866:
23866: template<typename _Tp, _Lock_policy _Lp>
23866: template<typename _Tp1, typename>
23866: inline
23866: __shared_ptr<_Tp, _Lp>::__shared_ptr(std::auto_ptr<_Tp1>&& __r)
23866: : _M_ptr(__r.get()), _M_refcount()
23866: {
23866:
23866: static_assert( sizeof(_Tp1) > 0, "incomplete type" );
23866: _Tp1* __tmp = __r.get();
23866: _M_refcount = __shared_count<_Lp>(std::move(__r));
23866: _M_enable_shared_from_this_with(__tmp);
23866: }
23866:
23866: template<typename _Tp>
23866: template<typename _Tp1, typename>
23866: inline
23866: shared_ptr<_Tp>::shared_ptr(std::auto_ptr<_Tp1>&& __r)
23866: : __shared_ptr<_Tp>(std::move(__r)) { }
23866:
23866: template<typename _Tp, typename _Dp>
23866: template<typename _Up, typename>
23866: inline
23866: unique_ptr<_Tp, _Dp>::unique_ptr(auto_ptr<_Up>&& __u) noexcept
23866: : _M_t(__u.release(), deleter_type()) { }
23866:
23866:
23866: #pragma GCC diagnostic pop
23866:
23866:
23866: }
23866: # 88 "/usr/include/c++/10/memory" 2 3
23866: # 100 "/usr/include/c++/10/memory" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 122 "/usr/include/c++/10/memory" 3
23866: inline void*
23866: align(size_t __align, size_t __size, void*& __ptr, size_t& __space) noexcept
23866: {
23866:
23866: const auto __intptr = reinterpret_cast<uintptr_t>(__ptr);
23866:
23866:
23866:
23866:
23866:
23866:
23866: const auto __aligned = (__intptr - 1u + __align) & -__align;
23866: const auto __diff = __aligned - __intptr;
23866: if ((__size + __diff) > __space)
23866: return nullptr;
23866: else
23866: {
23866: __space -= __diff;
23866: return __ptr = reinterpret_cast<void*>(__aligned);
23866: }
23866: }
23866: # 158 "/usr/include/c++/10/memory" 3
23866: enum class pointer_safety { relaxed, preferred, strict };
23866:
23866:
23866: inline void
23866: declare_reachable(void*) { }
23866:
23866:
23866: template <typename _Tp>
23866: inline _Tp*
23866: undeclare_reachable(_Tp* __p) { return __p; }
23866:
23866:
23866: inline void
23866: declare_no_pointers(char*, size_t) { }
23866:
23866:
23866: inline void
23866: undeclare_no_pointers(char*, size_t) { }
23866:
23866:
23866: inline pointer_safety
23866: get_pointer_safety() noexcept { return pointer_safety::relaxed; }
23866: # 411 "/usr/include/c++/10/memory" 3
23866:
23866: }
23866: # 422 "/usr/include/c++/10/memory" 3
23866: # 1 "/usr/include/c++/10/pstl/glue_memory_defs.h" 1 3
23866: # 11 "/usr/include/c++/10/pstl/glue_memory_defs.h" 3
23866: #define _PSTL_GLUE_MEMORY_DEFS_H
23866:
23866:
23866:
23866: namespace std
23866: {
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _InputIterator, class _ForwardIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: uninitialized_copy(_ExecutionPolicy&& __exec, _InputIterator __first, _InputIterator __last, _ForwardIterator __result);
23866:
23866: template <class _ExecutionPolicy, class _InputIterator, class _Size, class _ForwardIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: uninitialized_copy_n(_ExecutionPolicy&& __exec, _InputIterator __first, _Size __n, _ForwardIterator __result);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _InputIterator, class _ForwardIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: uninitialized_move(_ExecutionPolicy&& __exec, _InputIterator __first, _InputIterator __last, _ForwardIterator __result);
23866:
23866: template <class _ExecutionPolicy, class _InputIterator, class _Size, class _ForwardIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: uninitialized_move_n(_ExecutionPolicy&& __exec, _InputIterator __first, _Size __n, _ForwardIterator __result);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Tp>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void>
23866: uninitialized_fill(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __value);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Size, class _Tp>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: uninitialized_fill_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size __n, const _Tp& __value);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void>
23866: destroy(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Size>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: destroy_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size __n);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void>
23866: uninitialized_default_construct(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Size>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: uninitialized_default_construct_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size __n);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void>
23866: uninitialized_value_construct(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Size>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23866: uninitialized_value_construct_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size __n);
23866:
23866: }
23866: # 423 "/usr/include/c++/10/memory" 2 3
23866:
23866:
23866:
23866: #define __cpp_lib_parallel_algorithm 201603L
23866: # 28 "src/common/common.h" 2
23866: # 1 "/usr/include/c++/10/numeric" 1 3
23866: # 56 "/usr/include/c++/10/numeric" 3
23866: #define _GLIBCXX_NUMERIC 1
23866:
23866:
23866: # 59 "/usr/include/c++/10/numeric" 3
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/stl_numeric.h" 1 3
23866: # 57 "/usr/include/c++/10/bits/stl_numeric.h" 3
23866: #define _STL_NUMERIC_H 1
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 85 "/usr/include/c++/10/bits/stl_numeric.h" 3
23866: template<typename _ForwardIterator, typename _Tp>
23866:
23866: void
23866: iota(_ForwardIterator __first, _ForwardIterator __last, _Tp __value)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: for (; __first != __last; ++__first)
23866: {
23866: *__first = __value;
23866: ++__value;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_MOVE_IF_20(_E) _E
23866: # 131 "/usr/include/c++/10/bits/stl_numeric.h" 3
23866: template<typename _InputIterator, typename _Tp>
23866:
23866: inline _Tp
23866: accumulate(_InputIterator __first, _InputIterator __last, _Tp __init)
23866: {
23866:
23866:
23866: ;
23866:
23866: for (; __first != __last; ++__first)
23866: __init = __init + *__first;
23866: return __init;
23866: }
23866: # 158 "/usr/include/c++/10/bits/stl_numeric.h" 3
23866: template<typename _InputIterator, typename _Tp, typename _BinaryOperation>
23866:
23866: inline _Tp
23866: accumulate(_InputIterator __first, _InputIterator __last, _Tp __init,
23866: _BinaryOperation __binary_op)
23866: {
23866:
23866:
23866: ;
23866:
23866: for (; __first != __last; ++__first)
23866: __init = __binary_op(__init, *__first);
23866: return __init;
23866: }
23866: # 187 "/usr/include/c++/10/bits/stl_numeric.h" 3
23866: template<typename _InputIterator1, typename _InputIterator2, typename _Tp>
23866:
23866: inline _Tp
23866: inner_product(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2, _Tp __init)
23866: {
23866:
23866:
23866:
23866: ;
23866:
23866: for (; __first1 != __last1; ++__first1, (void)++__first2)
23866: __init = __init + (*__first1 * *__first2);
23866: return __init;
23866: }
23866: # 219 "/usr/include/c++/10/bits/stl_numeric.h" 3
23866: template<typename _InputIterator1, typename _InputIterator2, typename _Tp,
23866: typename _BinaryOperation1, typename _BinaryOperation2>
23866:
23866: inline _Tp
23866: inner_product(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2, _Tp __init,
23866: _BinaryOperation1 __binary_op1,
23866: _BinaryOperation2 __binary_op2)
23866: {
23866:
23866:
23866:
23866: ;
23866:
23866: for (; __first1 != __last1; ++__first1, (void)++__first2)
23866: __init = __binary_op1(__init,
23866: __binary_op2(*__first1, *__first2));
23866: return __init;
23866: }
23866: # 253 "/usr/include/c++/10/bits/stl_numeric.h" 3
23866: template<typename _InputIterator, typename _OutputIterator>
23866:
23866: _OutputIterator
23866: partial_sum(_InputIterator __first, _InputIterator __last,
23866: _OutputIterator __result)
23866: {
23866: typedef typename iterator_traits<_InputIterator>::value_type _ValueType;
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: if (__first == __last)
23866: return __result;
23866: _ValueType __value = *__first;
23866: *__result = __value;
23866: while (++__first != __last)
23866: {
23866: __value = __value + *__first;
23866: *++__result = __value;
23866: }
23866: return ++__result;
23866: }
23866: # 294 "/usr/include/c++/10/bits/stl_numeric.h" 3
23866: template<typename _InputIterator, typename _OutputIterator,
23866: typename _BinaryOperation>
23866:
23866: _OutputIterator
23866: partial_sum(_InputIterator __first, _InputIterator __last,
23866: _OutputIterator __result, _BinaryOperation __binary_op)
23866: {
23866: typedef typename iterator_traits<_InputIterator>::value_type _ValueType;
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: if (__first == __last)
23866: return __result;
23866: _ValueType __value = *__first;
23866: *__result = __value;
23866: while (++__first != __last)
23866: {
23866: __value = __binary_op(__value, *__first);
23866: *++__result = __value;
23866: }
23866: return ++__result;
23866: }
23866: # 335 "/usr/include/c++/10/bits/stl_numeric.h" 3
23866: template<typename _InputIterator, typename _OutputIterator>
23866:
23866: _OutputIterator
23866: adjacent_difference(_InputIterator __first,
23866: _InputIterator __last, _OutputIterator __result)
23866: {
23866: typedef typename iterator_traits<_InputIterator>::value_type _ValueType;
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: if (__first == __last)
23866: return __result;
23866: _ValueType __value = *__first;
23866: *__result = __value;
23866: while (++__first != __last)
23866: {
23866: _ValueType __tmp = *__first;
23866: *++__result = __tmp - __value;
23866: __value = std::move(__tmp);
23866: }
23866: return ++__result;
23866: }
23866: # 378 "/usr/include/c++/10/bits/stl_numeric.h" 3
23866: template<typename _InputIterator, typename _OutputIterator,
23866: typename _BinaryOperation>
23866:
23866: _OutputIterator
23866: adjacent_difference(_InputIterator __first, _InputIterator __last,
23866: _OutputIterator __result, _BinaryOperation __binary_op)
23866: {
23866: typedef typename iterator_traits<_InputIterator>::value_type _ValueType;
23866:
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: if (__first == __last)
23866: return __result;
23866: _ValueType __value = *__first;
23866: *__result = __value;
23866: while (++__first != __last)
23866: {
23866: _ValueType __tmp = *__first;
23866: *++__result = __binary_op(__tmp, __value);
23866: __value = std::move(__tmp);
23866: }
23866: return ++__result;
23866: }
23866:
23866:
23866:
23866: #undef _GLIBCXX_MOVE_IF_20
23866:
23866:
23866: }
23866: # 63 "/usr/include/c++/10/numeric" 2 3
23866: # 80 "/usr/include/c++/10/numeric" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: namespace __detail
23866: {
23866:
23866:
23866: template<typename _Up, typename _Tp>
23866: constexpr _Up
23866: __absu(_Tp __val)
23866: {
23866: static_assert(is_unsigned<_Up>::value, "result type must be unsigned");
23866: static_assert(sizeof(_Up) >= sizeof(_Tp),
23866: "result type must be at least as wide as the input type");
23866: return __val < 0 ? -(_Up)__val : (_Up)__val;
23866: }
23866:
23866: template<typename _Up> void __absu(bool) = delete;
23866:
23866:
23866: template<typename _Tp>
23866: constexpr _Tp
23866: __gcd(_Tp __m, _Tp __n)
23866: {
23866: static_assert(is_unsigned<_Tp>::value, "type must be unsigned");
23866: return __m == 0 ? __n
23866: : __n == 0 ? __m
23866: : __detail::__gcd(__n, _Tp(__m % __n));
23866: }
23866:
23866:
23866: template<typename _Tp>
23866: constexpr _Tp
23866: __lcm(_Tp __m, _Tp __n)
23866: {
23866: return (__m != 0 && __n != 0)
23866: ? (__m / __detail::__gcd(__m, __n)) * __n
23866: : 0;
23866: }
23866: }
23866:
23866:
23866:
23866: #define __cpp_lib_gcd_lcm 201606
23866:
23866: #define __cpp_lib_gcd 201606
23866: #define __cpp_lib_lcm 201606
23866:
23866:
23866: template<typename _Mn, typename _Nn>
23866: constexpr common_type_t<_Mn, _Nn>
23866: gcd(_Mn __m, _Nn __n) noexcept
23866: {
23866: static_assert(is_integral_v<_Mn>, "std::gcd arguments must be integers");
23866: static_assert(is_integral_v<_Nn>, "std::gcd arguments must be integers");
23866: static_assert(_Mn(2) != _Mn(1), "std::gcd arguments must not be bool");
23866: static_assert(_Nn(2) != _Nn(1), "std::gcd arguments must not be bool");
23866: using _Up = make_unsigned_t<common_type_t<_Mn, _Nn>>;
23866: return __detail::__gcd(__detail::__absu<_Up>(__m),
23866: __detail::__absu<_Up>(__n));
23866: }
23866:
23866:
23866: template<typename _Mn, typename _Nn>
23866: constexpr common_type_t<_Mn, _Nn>
23866: lcm(_Mn __m, _Nn __n) noexcept
23866: {
23866: static_assert(is_integral_v<_Mn>, "std::lcm arguments must be integers");
23866: static_assert(is_integral_v<_Nn>, "std::lcm arguments must be integers");
23866: static_assert(_Mn(2) == 2, "std::lcm arguments must not be bool");
23866: static_assert(_Nn(2) == 2, "std::lcm arguments must not be bool");
23866: using _Up = make_unsigned_t<common_type_t<_Mn, _Nn>>;
23866: return __detail::__lcm(__detail::__absu<_Up>(__m),
23866: __detail::__absu<_Up>(__n));
23866: }
23866:
23866:
23866:
23866:
23866: }
23866: # 226 "/usr/include/c++/10/numeric" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 256 "/usr/include/c++/10/numeric" 3
23866: template<typename _InputIterator, typename _Tp, typename _BinaryOperation>
23866:
23866: _Tp
23866: reduce(_InputIterator __first, _InputIterator __last, _Tp __init,
23866: _BinaryOperation __binary_op)
23866: {
23866: using value_type = typename iterator_traits<_InputIterator>::value_type;
23866: static_assert(is_invocable_r_v<_Tp, _BinaryOperation&, _Tp&, _Tp&>);
23866: static_assert(is_convertible_v<value_type, _Tp>);
23866: if constexpr (__is_random_access_iter<_InputIterator>::value)
23866: {
23866: while ((__last - __first) >= 4)
23866: {
23866: _Tp __v1 = __binary_op(__first[0], __first[1]);
23866: _Tp __v2 = __binary_op(__first[2], __first[3]);
23866: _Tp __v3 = __binary_op(__v1, __v2);
23866: __init = __binary_op(__init, __v3);
23866: __first += 4;
23866: }
23866: }
23866: for (; __first != __last; ++__first)
23866: __init = __binary_op(__init, *__first);
23866: return __init;
23866: }
23866: # 292 "/usr/include/c++/10/numeric" 3
23866: template<typename _InputIterator, typename _Tp>
23866:
23866: inline _Tp
23866: reduce(_InputIterator __first, _InputIterator __last, _Tp __init)
23866: { return std::reduce(__first, __last, std::move(__init), plus<>()); }
23866: # 309 "/usr/include/c++/10/numeric" 3
23866: template<typename _InputIterator>
23866:
23866: inline typename iterator_traits<_InputIterator>::value_type
23866: reduce(_InputIterator __first, _InputIterator __last)
23866: {
23866: using value_type = typename iterator_traits<_InputIterator>::value_type;
23866: return std::reduce(__first, __last, value_type{}, plus<>());
23866: }
23866: # 336 "/usr/include/c++/10/numeric" 3
23866: template<typename _InputIterator1, typename _InputIterator2, typename _Tp,
23866: typename _BinaryOperation1, typename _BinaryOperation2>
23866:
23866: _Tp
23866: transform_reduce(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2, _Tp __init,
23866: _BinaryOperation1 __binary_op1,
23866: _BinaryOperation2 __binary_op2)
23866: {
23866: if constexpr (__and_v<__is_random_access_iter<_InputIterator1>,
23866: __is_random_access_iter<_InputIterator2>>)
23866: {
23866: while ((__last1 - __first1) >= 4)
23866: {
23866: _Tp __v1 = __binary_op1(__binary_op2(__first1[0], __first2[0]),
23866: __binary_op2(__first1[1], __first2[1]));
23866: _Tp __v2 = __binary_op1(__binary_op2(__first1[2], __first2[2]),
23866: __binary_op2(__first1[3], __first2[3]));
23866: _Tp __v3 = __binary_op1(__v1, __v2);
23866: __init = __binary_op1(__init, __v3);
23866: __first1 += 4;
23866: __first2 += 4;
23866: }
23866: }
23866: for (; __first1 != __last1; ++__first1, (void) ++__first2)
23866: __init = __binary_op1(__init, __binary_op2(*__first1, *__first2));
23866: return __init;
23866: }
23866: # 380 "/usr/include/c++/10/numeric" 3
23866: template<typename _InputIterator1, typename _InputIterator2, typename _Tp>
23866:
23866: inline _Tp
23866: transform_reduce(_InputIterator1 __first1, _InputIterator1 __last1,
23866: _InputIterator2 __first2, _Tp __init)
23866: {
23866: return std::transform_reduce(__first1, __last1, __first2,
23866: std::move(__init),
23866: plus<>(), multiplies<>());
23866: }
23866: # 405 "/usr/include/c++/10/numeric" 3
23866: template<typename _InputIterator, typename _Tp,
23866: typename _BinaryOperation, typename _UnaryOperation>
23866:
23866: _Tp
23866: transform_reduce(_InputIterator __first, _InputIterator __last, _Tp __init,
23866: _BinaryOperation __binary_op, _UnaryOperation __unary_op)
23866: {
23866: if constexpr (__is_random_access_iter<_InputIterator>::value)
23866: {
23866: while ((__last - __first) >= 4)
23866: {
23866: _Tp __v1 = __binary_op(__unary_op(__first[0]),
23866: __unary_op(__first[1]));
23866: _Tp __v2 = __binary_op(__unary_op(__first[2]),
23866: __unary_op(__first[3]));
23866: _Tp __v3 = __binary_op(__v1, __v2);
23866: __init = __binary_op(__init, __v3);
23866: __first += 4;
23866: }
23866: }
23866: for (; __first != __last; ++__first)
23866: __init = __binary_op(__init, __unary_op(*__first));
23866: return __init;
23866: }
23866: # 448 "/usr/include/c++/10/numeric" 3
23866: template<typename _InputIterator, typename _OutputIterator, typename _Tp,
23866: typename _BinaryOperation>
23866:
23866: _OutputIterator
23866: exclusive_scan(_InputIterator __first, _InputIterator __last,
23866: _OutputIterator __result, _Tp __init,
23866: _BinaryOperation __binary_op)
23866: {
23866: while (__first != __last)
23866: {
23866: auto __v = __init;
23866: __init = __binary_op(__init, *__first);
23866: ++__first;
23866: *__result++ = std::move(__v);
23866: }
23866: return __result;
23866: }
23866: # 483 "/usr/include/c++/10/numeric" 3
23866: template<typename _InputIterator, typename _OutputIterator, typename _Tp>
23866:
23866: inline _OutputIterator
23866: exclusive_scan(_InputIterator __first, _InputIterator __last,
23866: _OutputIterator __result, _Tp __init)
23866: {
23866: return std::exclusive_scan(__first, __last, __result, std::move(__init),
23866: plus<>());
23866: }
23866: # 511 "/usr/include/c++/10/numeric" 3
23866: template<typename _InputIterator, typename _OutputIterator,
23866: typename _BinaryOperation, typename _Tp>
23866:
23866: _OutputIterator
23866: inclusive_scan(_InputIterator __first, _InputIterator __last,
23866: _OutputIterator __result, _BinaryOperation __binary_op,
23866: _Tp __init)
23866: {
23866: for (; __first != __last; ++__first)
23866: *__result++ = __init = __binary_op(__init, *__first);
23866: return __result;
23866: }
23866: # 540 "/usr/include/c++/10/numeric" 3
23866: template<typename _InputIterator, typename _OutputIterator,
23866: typename _BinaryOperation>
23866:
23866: _OutputIterator
23866: inclusive_scan(_InputIterator __first, _InputIterator __last,
23866: _OutputIterator __result, _BinaryOperation __binary_op)
23866: {
23866: if (__first != __last)
23866: {
23866: auto __init = *__first;
23866: *__result++ = __init;
23866: ++__first;
23866: if (__first != __last)
23866: __result = std::inclusive_scan(__first, __last, __result,
23866: __binary_op, std::move(__init));
23866: }
23866: return __result;
23866: }
23866: # 574 "/usr/include/c++/10/numeric" 3
23866: template<typename _InputIterator, typename _OutputIterator>
23866:
23866: inline _OutputIterator
23866: inclusive_scan(_InputIterator __first, _InputIterator __last,
23866: _OutputIterator __result)
23866: { return std::inclusive_scan(__first, __last, __result, plus<>()); }
23866: # 601 "/usr/include/c++/10/numeric" 3
23866: template<typename _InputIterator, typename _OutputIterator, typename _Tp,
23866: typename _BinaryOperation, typename _UnaryOperation>
23866:
23866: _OutputIterator
23866: transform_exclusive_scan(_InputIterator __first, _InputIterator __last,
23866: _OutputIterator __result, _Tp __init,
23866: _BinaryOperation __binary_op,
23866: _UnaryOperation __unary_op)
23866: {
23866: while (__first != __last)
23866: {
23866: auto __v = __init;
23866: __init = __binary_op(__init, __unary_op(*__first));
23866: ++__first;
23866: *__result++ = std::move(__v);
23866: }
23866: return __result;
23866: }
23866: # 640 "/usr/include/c++/10/numeric" 3
23866: template<typename _InputIterator, typename _OutputIterator,
23866: typename _BinaryOperation, typename _UnaryOperation, typename _Tp>
23866:
23866: _OutputIterator
23866: transform_inclusive_scan(_InputIterator __first, _InputIterator __last,
23866: _OutputIterator __result,
23866: _BinaryOperation __binary_op,
23866: _UnaryOperation __unary_op,
23866: _Tp __init)
23866: {
23866: for (; __first != __last; ++__first)
23866: *__result++ = __init = __binary_op(__init, __unary_op(*__first));
23866: return __result;
23866: }
23866: # 674 "/usr/include/c++/10/numeric" 3
23866: template<typename _InputIterator, typename _OutputIterator,
23866: typename _BinaryOperation, typename _UnaryOperation>
23866:
23866: _OutputIterator
23866: transform_inclusive_scan(_InputIterator __first, _InputIterator __last,
23866: _OutputIterator __result,
23866: _BinaryOperation __binary_op,
23866: _UnaryOperation __unary_op)
23866: {
23866: if (__first != __last)
23866: {
23866: auto __init = __unary_op(*__first);
23866: *__result++ = __init;
23866: ++__first;
23866: if (__first != __last)
23866: __result = std::transform_inclusive_scan(__first, __last, __result,
23866: __binary_op, __unary_op,
23866: std::move(__init));
23866: }
23866: return __result;
23866: }
23866:
23866:
23866:
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/pstl/glue_numeric_defs.h" 1 3
23866: # 11 "/usr/include/c++/10/pstl/glue_numeric_defs.h" 3
23866: #define _PSTL_GLUE_NUMERIC_DEFS_H
23866:
23866:
23866:
23866: namespace std
23866: {
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Tp, class _BinaryOperation>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _Tp>
23866: reduce(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Tp __init,
23866: _BinaryOperation __binary_op);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Tp>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _Tp>
23866: reduce(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Tp __init);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy,
23866: typename iterator_traits<_ForwardIterator>::value_type>
23866: reduce(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Tp>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _Tp>
23866: transform_reduce(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1,
23866: _ForwardIterator2 __first2, _Tp __init);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Tp, class _BinaryOperation1,
23866: class _BinaryOperation2>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _Tp>
23866: transform_reduce(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1,
23866: _ForwardIterator2 __first2, _Tp __init, _BinaryOperation1 __binary_op1,
23866: _BinaryOperation2 __binary_op2);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator, class _Tp, class _BinaryOperation, class _UnaryOperation>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _Tp>
23866: transform_reduce(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Tp __init,
23866: _BinaryOperation __binary_op, _UnaryOperation __unary_op);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Tp>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
23866: exclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last,
23866: _ForwardIterator2 __result, _Tp __init);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Tp, class _BinaryOperation>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
23866: exclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last,
23866: _ForwardIterator2 __result, _Tp __init, _BinaryOperation __binary_op);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
23866: inclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last,
23866: _ForwardIterator2 __result);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryOperation>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
23866: inclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last,
23866: _ForwardIterator2 __result, _BinaryOperation __binary_op);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Tp, class _BinaryOperation>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
23866: inclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last,
23866: _ForwardIterator2 __result, _BinaryOperation __binary_op, _Tp __init);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Tp, class _BinaryOperation,
23866: class _UnaryOperation>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
23866: transform_exclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last,
23866: _ForwardIterator2 __result, _Tp __init, _BinaryOperation __binary_op,
23866: _UnaryOperation __unary_op);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryOperation,
23866: class _UnaryOperation, class _Tp>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
23866: transform_inclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last,
23866: _ForwardIterator2 __result, _BinaryOperation __binary_op, _UnaryOperation __unary_op,
23866: _Tp __init);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _UnaryOperation,
23866: class _BinaryOperation>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
23866: transform_inclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last,
23866: _ForwardIterator2 __result, _BinaryOperation __binary_op, _UnaryOperation __unary_op);
23866:
23866:
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _BinaryOperation>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
23866: adjacent_difference(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last,
23866: _ForwardIterator2 __d_first, _BinaryOperation op);
23866:
23866: template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2>
23866: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2>
23866: adjacent_difference(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last,
23866: _ForwardIterator2 __d_first);
23866:
23866: }
23866: # 708 "/usr/include/c++/10/numeric" 2 3
23866: #define _PSTL_NUMERIC_FORWARD_DECLARED 1
23866:
23866:
23866:
23866: #define __cpp_lib_parallel_algorithm 201603L
23866: # 29 "src/common/common.h" 2
23866: # 40 "src/common/common.h"
23866: #define FMT_USE_USER_DEFINED_LITERALS 0
23866:
23866:
23866: # 1 "/usr/include/fmt/format.h" 1 3 4
23866: # 34 "/usr/include/fmt/format.h" 3 4
23866: #define FMT_FORMAT_H_
23866:
23866:
23866: # 1 "/usr/include/c++/10/cerrno" 1 3 4
23866: # 39 "/usr/include/c++/10/cerrno" 3 4
23866:
23866: # 40 "/usr/include/c++/10/cerrno" 3
23866: # 38 "/usr/include/fmt/format.h" 2 3 4
23866: # 1 "/usr/include/c++/10/cmath" 1 3 4
23866: # 39 "/usr/include/c++/10/cmath" 3 4
23866:
23866: # 40 "/usr/include/c++/10/cmath" 3
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_INCLUDE_NEXT_C_HEADERS
23866: # 1 "/usr/include/math.h" 1 3 4
23866: # 24 "/usr/include/math.h" 3 4
23866: #define _MATH_H 1
23866:
23866: #define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4
23866: # 31 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 3 4
23866: #undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
23866:
23866:
23866:
23866:
23866:
23866: #undef __GLIBC_USE_LIB_EXT2
23866:
23866:
23866: #define __GLIBC_USE_LIB_EXT2 1
23866: # 49 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 3 4
23866: #undef __GLIBC_USE_IEC_60559_BFP_EXT
23866:
23866: #define __GLIBC_USE_IEC_60559_BFP_EXT 1
23866:
23866:
23866:
23866: #undef __GLIBC_USE_IEC_60559_BFP_EXT_C2X
23866:
23866: #define __GLIBC_USE_IEC_60559_BFP_EXT_C2X 1
23866: # 66 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 3 4
23866: #undef __GLIBC_USE_IEC_60559_FUNCS_EXT
23866:
23866: #define __GLIBC_USE_IEC_60559_FUNCS_EXT 1
23866:
23866:
23866:
23866: #undef __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X
23866:
23866: #define __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X 1
23866:
23866:
23866:
23866:
23866:
23866:
23866: #undef __GLIBC_USE_IEC_60559_TYPES_EXT
23866:
23866: #define __GLIBC_USE_IEC_60559_TYPES_EXT 1
23866: # 28 "/usr/include/math.h" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern "C" {
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/math-vector.h" 1 3 4
23866: # 27 "/usr/include/arm-linux-gnueabihf/bits/math-vector.h" 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/libm-simd-decl-stubs.h" 1 3 4
23866: # 34 "/usr/include/arm-linux-gnueabihf/bits/libm-simd-decl-stubs.h" 3 4
23866: #define _BITS_LIBM_SIMD_DECL_STUBS_H 1
23866:
23866: #define __DECL_SIMD_cos
23866: #define __DECL_SIMD_cosf
23866: #define __DECL_SIMD_cosl
23866: #define __DECL_SIMD_cosf16
23866: #define __DECL_SIMD_cosf32
23866: #define __DECL_SIMD_cosf64
23866: #define __DECL_SIMD_cosf128
23866: #define __DECL_SIMD_cosf32x
23866: #define __DECL_SIMD_cosf64x
23866: #define __DECL_SIMD_cosf128x
23866:
23866: #define __DECL_SIMD_sin
23866: #define __DECL_SIMD_sinf
23866: #define __DECL_SIMD_sinl
23866: #define __DECL_SIMD_sinf16
23866: #define __DECL_SIMD_sinf32
23866: #define __DECL_SIMD_sinf64
23866: #define __DECL_SIMD_sinf128
23866: #define __DECL_SIMD_sinf32x
23866: #define __DECL_SIMD_sinf64x
23866: #define __DECL_SIMD_sinf128x
23866:
23866: #define __DECL_SIMD_sincos
23866: #define __DECL_SIMD_sincosf
23866: #define __DECL_SIMD_sincosl
23866: #define __DECL_SIMD_sincosf16
23866: #define __DECL_SIMD_sincosf32
23866: #define __DECL_SIMD_sincosf64
23866: #define __DECL_SIMD_sincosf128
23866: #define __DECL_SIMD_sincosf32x
23866: #define __DECL_SIMD_sincosf64x
23866: #define __DECL_SIMD_sincosf128x
23866:
23866: #define __DECL_SIMD_log
23866: #define __DECL_SIMD_logf
23866: #define __DECL_SIMD_logl
23866: #define __DECL_SIMD_logf16
23866: #define __DECL_SIMD_logf32
23866: #define __DECL_SIMD_logf64
23866: #define __DECL_SIMD_logf128
23866: #define __DECL_SIMD_logf32x
23866: #define __DECL_SIMD_logf64x
23866: #define __DECL_SIMD_logf128x
23866:
23866: #define __DECL_SIMD_exp
23866: #define __DECL_SIMD_expf
23866: #define __DECL_SIMD_expl
23866: #define __DECL_SIMD_expf16
23866: #define __DECL_SIMD_expf32
23866: #define __DECL_SIMD_expf64
23866: #define __DECL_SIMD_expf128
23866: #define __DECL_SIMD_expf32x
23866: #define __DECL_SIMD_expf64x
23866: #define __DECL_SIMD_expf128x
23866:
23866: #define __DECL_SIMD_pow
23866: #define __DECL_SIMD_powf
23866: #define __DECL_SIMD_powl
23866: #define __DECL_SIMD_powf16
23866: #define __DECL_SIMD_powf32
23866: #define __DECL_SIMD_powf64
23866: #define __DECL_SIMD_powf128
23866: #define __DECL_SIMD_powf32x
23866: #define __DECL_SIMD_powf64x
23866: #define __DECL_SIMD_powf128x
23866: # 28 "/usr/include/arm-linux-gnueabihf/bits/math-vector.h" 2 3 4
23866: # 41 "/usr/include/math.h" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 1 3 4
23866: # 22 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 3 4
23866: #define __HAVE_FLOAT128 0
23866:
23866:
23866:
23866: #define __HAVE_DISTINCT_FLOAT128 0
23866:
23866:
23866:
23866:
23866: #define __HAVE_FLOAT64X 0
23866:
23866:
23866:
23866:
23866:
23866: #define __HAVE_FLOAT64X_LONG_DOUBLE 0
23866:
23866:
23866:
23866:
23866:
23866:
23866: #undef __f128
23866:
23866:
23866:
23866: #undef __CFLOAT128
23866: # 44 "/usr/include/math.h" 2 3 4
23866:
23866:
23866:
23866:
23866: #define HUGE_VAL (__builtin_huge_val ())
23866: # 59 "/usr/include/math.h" 3 4
23866: #define HUGE_VALF (__builtin_huge_valf ())
23866: #define HUGE_VALL (__builtin_huge_vall ())
23866: # 70 "/usr/include/math.h" 3 4
23866: #define HUGE_VAL_F32 (__builtin_huge_valf32 ())
23866:
23866:
23866: #define HUGE_VAL_F64 (__builtin_huge_valf64 ())
23866:
23866:
23866:
23866:
23866:
23866: #define HUGE_VAL_F32X (__builtin_huge_valf32x ())
23866: # 91 "/usr/include/math.h" 3 4
23866: #define INFINITY (__builtin_inff ())
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define NAN (__builtin_nanf (""))
23866: # 110 "/usr/include/math.h" 3 4
23866: #define SNANF (__builtin_nansf (""))
23866: #define SNAN (__builtin_nans (""))
23866: #define SNANL (__builtin_nansl (""))
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define SNANF32 (__builtin_nansf32 (""))
23866:
23866:
23866: #define SNANF64 (__builtin_nansf64 (""))
23866:
23866:
23866:
23866:
23866:
23866: #define SNANF32X (__builtin_nansf32x (""))
23866: # 138 "/usr/include/math.h" 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/flt-eval-method.h" 1 3 4
23866: # 38 "/usr/include/arm-linux-gnueabihf/bits/flt-eval-method.h" 3 4
23866: #define __GLIBC_FLT_EVAL_METHOD __FLT_EVAL_METHOD__
23866: # 139 "/usr/include/math.h" 2 3 4
23866: # 149 "/usr/include/math.h" 3 4
23866: typedef float float_t;
23866: typedef double double_t;
23866: # 190 "/usr/include/math.h" 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/fp-logb.h" 1 3 4
23866: # 27 "/usr/include/arm-linux-gnueabihf/bits/fp-logb.h" 3 4
23866: #define __FP_LOGB0_IS_MIN 0
23866: #define __FP_LOGBNAN_IS_MIN 0
23866: # 191 "/usr/include/math.h" 2 3 4
23866:
23866:
23866:
23866:
23866: #define FP_ILOGB0 (-2147483647)
23866:
23866:
23866:
23866:
23866: #define FP_ILOGBNAN 2147483647
23866:
23866:
23866:
23866:
23866: #define __FP_LONG_MAX 0x7fffffffL
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define FP_LLOGB0 (-__FP_LONG_MAX)
23866:
23866:
23866:
23866:
23866: #define FP_LLOGBNAN __FP_LONG_MAX
23866: # 233 "/usr/include/math.h" 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/fp-fast.h" 1 3 4
23866: # 234 "/usr/include/math.h" 2 3 4
23866:
23866:
23866:
23866: enum
23866: {
23866: FP_INT_UPWARD =
23866: #define FP_INT_UPWARD 0
23866: 0,
23866: FP_INT_DOWNWARD =
23866: #define FP_INT_DOWNWARD 1
23866: 1,
23866: FP_INT_TOWARDZERO =
23866: #define FP_INT_TOWARDZERO 2
23866: 2,
23866: FP_INT_TONEARESTFROMZERO =
23866: #define FP_INT_TONEARESTFROMZERO 3
23866: 3,
23866: FP_INT_TONEAREST =
23866: #define FP_INT_TONEAREST 4
23866: 4,
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __SIMD_DECL(function) __CONCAT (__DECL_SIMD_, function)
23866:
23866: #define __MATHCALL_VEC(function,suffix,args) __SIMD_DECL (__MATH_PRECNAME (function, suffix)) __MATHCALL (function, suffix, args)
23866:
23866:
23866:
23866: #define __MATHDECL_VEC(type,function,suffix,args) __SIMD_DECL (__MATH_PRECNAME (function, suffix)) __MATHDECL(type, function,suffix, args)
23866:
23866:
23866:
23866: #define __MATHCALL(function,suffix,args) __MATHDECL (_Mdouble_,function,suffix, args)
23866:
23866: #define __MATHDECL(type,function,suffix,args) __MATHDECL_1(type, function,suffix, args); __MATHDECL_1(type, __CONCAT(__,function),suffix, args)
23866:
23866:
23866: #define __MATHCALLX(function,suffix,args,attrib) __MATHDECLX (_Mdouble_,function,suffix, args, attrib)
23866:
23866: #define __MATHDECLX(type,function,suffix,args,attrib) __MATHDECL_1(type, function,suffix, args) __attribute__ (attrib); __MATHDECL_1(type, __CONCAT(__,function),suffix, args) __attribute__ (attrib)
23866:
23866:
23866: #define __MATHDECL_1(type,function,suffix,args) extern type __MATH_PRECNAME(function,suffix) args __THROW
23866:
23866:
23866: #define _Mdouble_ double
23866: #define __MATH_PRECNAME(name,r) __CONCAT(name,r)
23866: #define __MATH_DECLARING_DOUBLE 1
23866: #define __MATH_DECLARING_FLOATN 0
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 1 3 4
23866: # 21 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 3 4
23866: extern int __fpclassify (double __value) throw ()
23866: __attribute__ ((__const__));
23866:
23866:
23866: extern int __signbit (double __value) throw ()
23866: __attribute__ ((__const__));
23866:
23866:
23866:
23866: extern int __isinf (double __value) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern int __finite (double __value) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern int __isnan (double __value) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern int __iseqsig (double __x, double __y) throw ();
23866:
23866:
23866: extern int __issignaling (double __value) throw ()
23866: __attribute__ ((__const__));
23866: # 290 "/usr/include/math.h" 2 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4
23866: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4
23866: extern double acos (double __x) throw (); extern double __acos (double __x) throw ();
23866:
23866: extern double asin (double __x) throw (); extern double __asin (double __x) throw ();
23866:
23866: extern double atan (double __x) throw (); extern double __atan (double __x) throw ();
23866:
23866: extern double atan2 (double __y, double __x) throw (); extern double __atan2 (double __y, double __x) throw ();
23866:
23866:
23866: extern double cos (double __x) throw (); extern double __cos (double __x) throw ();
23866:
23866: extern double sin (double __x) throw (); extern double __sin (double __x) throw ();
23866:
23866: extern double tan (double __x) throw (); extern double __tan (double __x) throw ();
23866:
23866:
23866:
23866:
23866: extern double cosh (double __x) throw (); extern double __cosh (double __x) throw ();
23866:
23866: extern double sinh (double __x) throw (); extern double __sinh (double __x) throw ();
23866:
23866: extern double tanh (double __x) throw (); extern double __tanh (double __x) throw ();
23866:
23866:
23866:
23866: extern void sincos (double __x, double *__sinx, double *__cosx) throw (); extern void __sincos (double __x, double *__sinx, double *__cosx) throw ()
23866: ;
23866:
23866:
23866:
23866:
23866: extern double acosh (double __x) throw (); extern double __acosh (double __x) throw ();
23866:
23866: extern double asinh (double __x) throw (); extern double __asinh (double __x) throw ();
23866:
23866: extern double atanh (double __x) throw (); extern double __atanh (double __x) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern double exp (double __x) throw (); extern double __exp (double __x) throw ();
23866:
23866:
23866: extern double frexp (double __x, int *__exponent) throw (); extern double __frexp (double __x, int *__exponent) throw ();
23866:
23866:
23866: extern double ldexp (double __x, int __exponent) throw (); extern double __ldexp (double __x, int __exponent) throw ();
23866:
23866:
23866: extern double log (double __x) throw (); extern double __log (double __x) throw ();
23866:
23866:
23866: extern double log10 (double __x) throw (); extern double __log10 (double __x) throw ();
23866:
23866:
23866: extern double modf (double __x, double *__iptr) throw (); extern double __modf (double __x, double *__iptr) throw () __attribute__ ((__nonnull__ (2)));
23866:
23866:
23866:
23866: extern double exp10 (double __x) throw (); extern double __exp10 (double __x) throw ();
23866:
23866:
23866:
23866:
23866: extern double expm1 (double __x) throw (); extern double __expm1 (double __x) throw ();
23866:
23866:
23866: extern double log1p (double __x) throw (); extern double __log1p (double __x) throw ();
23866:
23866:
23866: extern double logb (double __x) throw (); extern double __logb (double __x) throw ();
23866:
23866:
23866:
23866:
23866: extern double exp2 (double __x) throw (); extern double __exp2 (double __x) throw ();
23866:
23866:
23866: extern double log2 (double __x) throw (); extern double __log2 (double __x) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern double pow (double __x, double __y) throw (); extern double __pow (double __x, double __y) throw ();
23866:
23866:
23866: extern double sqrt (double __x) throw (); extern double __sqrt (double __x) throw ();
23866:
23866:
23866:
23866: extern double hypot (double __x, double __y) throw (); extern double __hypot (double __x, double __y) throw ();
23866:
23866:
23866:
23866:
23866: extern double cbrt (double __x) throw (); extern double __cbrt (double __x) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern double ceil (double __x) throw () __attribute__ ((__const__)); extern double __ceil (double __x) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern double fabs (double __x) throw () __attribute__ ((__const__)); extern double __fabs (double __x) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern double floor (double __x) throw () __attribute__ ((__const__)); extern double __floor (double __x) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern double fmod (double __x, double __y) throw (); extern double __fmod (double __x, double __y) throw ();
23866: # 182 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4
23866: extern int finite (double __value) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern double drem (double __x, double __y) throw (); extern double __drem (double __x, double __y) throw ();
23866:
23866:
23866:
23866: extern double significand (double __x) throw (); extern double __significand (double __x) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern double copysign (double __x, double __y) throw () __attribute__ ((__const__)); extern double __copysign (double __x, double __y) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866:
23866: extern double nan (const char *__tagb) throw (); extern double __nan (const char *__tagb) throw ();
23866: # 217 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4
23866: extern double j0 (double) throw (); extern double __j0 (double) throw ();
23866: extern double j1 (double) throw (); extern double __j1 (double) throw ();
23866: extern double jn (int, double) throw (); extern double __jn (int, double) throw ();
23866: extern double y0 (double) throw (); extern double __y0 (double) throw ();
23866: extern double y1 (double) throw (); extern double __y1 (double) throw ();
23866: extern double yn (int, double) throw (); extern double __yn (int, double) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern double erf (double) throw (); extern double __erf (double) throw ();
23866: extern double erfc (double) throw (); extern double __erfc (double) throw ();
23866: extern double lgamma (double) throw (); extern double __lgamma (double) throw ();
23866:
23866:
23866:
23866:
23866: extern double tgamma (double) throw (); extern double __tgamma (double) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern double gamma (double) throw (); extern double __gamma (double) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern double lgamma_r (double, int *__signgamp) throw (); extern double __lgamma_r (double, int *__signgamp) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern double rint (double __x) throw (); extern double __rint (double __x) throw ();
23866:
23866:
23866: extern double nextafter (double __x, double __y) throw (); extern double __nextafter (double __x, double __y) throw ();
23866:
23866: extern double nexttoward (double __x, long double __y) throw (); extern double __nexttoward (double __x, long double __y) throw ();
23866:
23866:
23866:
23866:
23866: extern double nextdown (double __x) throw (); extern double __nextdown (double __x) throw ();
23866:
23866: extern double nextup (double __x) throw (); extern double __nextup (double __x) throw ();
23866:
23866:
23866:
23866: extern double remainder (double __x, double __y) throw (); extern double __remainder (double __x, double __y) throw ();
23866:
23866:
23866:
23866: extern double scalbn (double __x, int __n) throw (); extern double __scalbn (double __x, int __n) throw ();
23866:
23866:
23866:
23866: extern int ilogb (double __x) throw (); extern int __ilogb (double __x) throw ();
23866:
23866:
23866:
23866:
23866: extern long int llogb (double __x) throw (); extern long int __llogb (double __x) throw ();
23866:
23866:
23866:
23866:
23866: extern double scalbln (double __x, long int __n) throw (); extern double __scalbln (double __x, long int __n) throw ();
23866:
23866:
23866:
23866: extern double nearbyint (double __x) throw (); extern double __nearbyint (double __x) throw ();
23866:
23866:
23866:
23866: extern double round (double __x) throw () __attribute__ ((__const__)); extern double __round (double __x) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866: extern double trunc (double __x) throw () __attribute__ ((__const__)); extern double __trunc (double __x) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866:
23866: extern double remquo (double __x, double __y, int *__quo) throw (); extern double __remquo (double __x, double __y, int *__quo) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern long int lrint (double __x) throw (); extern long int __lrint (double __x) throw ();
23866: __extension__
23866: extern long long int llrint (double __x) throw (); extern long long int __llrint (double __x) throw ();
23866:
23866:
23866:
23866: extern long int lround (double __x) throw (); extern long int __lround (double __x) throw ();
23866: __extension__
23866: extern long long int llround (double __x) throw (); extern long long int __llround (double __x) throw ();
23866:
23866:
23866:
23866: extern double fdim (double __x, double __y) throw (); extern double __fdim (double __x, double __y) throw ();
23866:
23866:
23866: extern double fmax (double __x, double __y) throw () __attribute__ ((__const__)); extern double __fmax (double __x, double __y) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern double fmin (double __x, double __y) throw () __attribute__ ((__const__)); extern double __fmin (double __x, double __y) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern double fma (double __x, double __y, double __z) throw (); extern double __fma (double __x, double __y, double __z) throw ();
23866:
23866:
23866:
23866:
23866: extern double roundeven (double __x) throw () __attribute__ ((__const__)); extern double __roundeven (double __x) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866: extern __intmax_t fromfp (double __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfp (double __x, int __round, unsigned int __width) throw ()
23866: ;
23866:
23866:
23866:
23866: extern __uintmax_t ufromfp (double __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfp (double __x, int __round, unsigned int __width) throw ()
23866: ;
23866:
23866:
23866:
23866:
23866: extern __intmax_t fromfpx (double __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpx (double __x, int __round, unsigned int __width) throw ()
23866: ;
23866:
23866:
23866:
23866:
23866: extern __uintmax_t ufromfpx (double __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpx (double __x, int __round, unsigned int __width) throw ()
23866: ;
23866:
23866:
23866: extern double fmaxmag (double __x, double __y) throw () __attribute__ ((__const__)); extern double __fmaxmag (double __x, double __y) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern double fminmag (double __x, double __y) throw () __attribute__ ((__const__)); extern double __fminmag (double __x, double __y) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern int canonicalize (double *__cx, const double *__x) throw ();
23866:
23866:
23866:
23866:
23866: extern int totalorder (const double *__x, const double *__y) throw ()
23866:
23866: __attribute__ ((__pure__));
23866:
23866:
23866: extern int totalordermag (const double *__x, const double *__y) throw ()
23866:
23866: __attribute__ ((__pure__));
23866:
23866:
23866: extern double getpayload (const double *__x) throw (); extern double __getpayload (const double *__x) throw ();
23866:
23866:
23866: extern int setpayload (double *__x, double __payload) throw ();
23866:
23866:
23866: extern int setpayloadsig (double *__x, double __payload) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern double scalb (double __x, double __n) throw (); extern double __scalb (double __x, double __n) throw ();
23866: # 291 "/usr/include/math.h" 2 3 4
23866: #undef _Mdouble_
23866: #undef __MATH_PRECNAME
23866: #undef __MATH_DECLARING_DOUBLE
23866: #undef __MATH_DECLARING_FLOATN
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define _Mdouble_ float
23866: #define __MATH_PRECNAME(name,r) name ##f ##r
23866: #define __MATH_DECLARING_DOUBLE 0
23866: #define __MATH_DECLARING_FLOATN 0
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 1 3 4
23866: # 21 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 3 4
23866: extern int __fpclassifyf (float __value) throw ()
23866: __attribute__ ((__const__));
23866:
23866:
23866: extern int __signbitf (float __value) throw ()
23866: __attribute__ ((__const__));
23866:
23866:
23866:
23866: extern int __isinff (float __value) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern int __finitef (float __value) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern int __isnanf (float __value) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern int __iseqsigf (float __x, float __y) throw ();
23866:
23866:
23866: extern int __issignalingf (float __value) throw ()
23866: __attribute__ ((__const__));
23866: # 307 "/usr/include/math.h" 2 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4
23866: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4
23866: extern float acosf (float __x) throw (); extern float __acosf (float __x) throw ();
23866:
23866: extern float asinf (float __x) throw (); extern float __asinf (float __x) throw ();
23866:
23866: extern float atanf (float __x) throw (); extern float __atanf (float __x) throw ();
23866:
23866: extern float atan2f (float __y, float __x) throw (); extern float __atan2f (float __y, float __x) throw ();
23866:
23866:
23866: extern float cosf (float __x) throw (); extern float __cosf (float __x) throw ();
23866:
23866: extern float sinf (float __x) throw (); extern float __sinf (float __x) throw ();
23866:
23866: extern float tanf (float __x) throw (); extern float __tanf (float __x) throw ();
23866:
23866:
23866:
23866:
23866: extern float coshf (float __x) throw (); extern float __coshf (float __x) throw ();
23866:
23866: extern float sinhf (float __x) throw (); extern float __sinhf (float __x) throw ();
23866:
23866: extern float tanhf (float __x) throw (); extern float __tanhf (float __x) throw ();
23866:
23866:
23866:
23866: extern void sincosf (float __x, float *__sinx, float *__cosx) throw (); extern void __sincosf (float __x, float *__sinx, float *__cosx) throw ()
23866: ;
23866:
23866:
23866:
23866:
23866: extern float acoshf (float __x) throw (); extern float __acoshf (float __x) throw ();
23866:
23866: extern float asinhf (float __x) throw (); extern float __asinhf (float __x) throw ();
23866:
23866: extern float atanhf (float __x) throw (); extern float __atanhf (float __x) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern float expf (float __x) throw (); extern float __expf (float __x) throw ();
23866:
23866:
23866: extern float frexpf (float __x, int *__exponent) throw (); extern float __frexpf (float __x, int *__exponent) throw ();
23866:
23866:
23866: extern float ldexpf (float __x, int __exponent) throw (); extern float __ldexpf (float __x, int __exponent) throw ();
23866:
23866:
23866: extern float logf (float __x) throw (); extern float __logf (float __x) throw ();
23866:
23866:
23866: extern float log10f (float __x) throw (); extern float __log10f (float __x) throw ();
23866:
23866:
23866: extern float modff (float __x, float *__iptr) throw (); extern float __modff (float __x, float *__iptr) throw () __attribute__ ((__nonnull__ (2)));
23866:
23866:
23866:
23866: extern float exp10f (float __x) throw (); extern float __exp10f (float __x) throw ();
23866:
23866:
23866:
23866:
23866: extern float expm1f (float __x) throw (); extern float __expm1f (float __x) throw ();
23866:
23866:
23866: extern float log1pf (float __x) throw (); extern float __log1pf (float __x) throw ();
23866:
23866:
23866: extern float logbf (float __x) throw (); extern float __logbf (float __x) throw ();
23866:
23866:
23866:
23866:
23866: extern float exp2f (float __x) throw (); extern float __exp2f (float __x) throw ();
23866:
23866:
23866: extern float log2f (float __x) throw (); extern float __log2f (float __x) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern float powf (float __x, float __y) throw (); extern float __powf (float __x, float __y) throw ();
23866:
23866:
23866: extern float sqrtf (float __x) throw (); extern float __sqrtf (float __x) throw ();
23866:
23866:
23866:
23866: extern float hypotf (float __x, float __y) throw (); extern float __hypotf (float __x, float __y) throw ();
23866:
23866:
23866:
23866:
23866: extern float cbrtf (float __x) throw (); extern float __cbrtf (float __x) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern float ceilf (float __x) throw () __attribute__ ((__const__)); extern float __ceilf (float __x) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern float fabsf (float __x) throw () __attribute__ ((__const__)); extern float __fabsf (float __x) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern float floorf (float __x) throw () __attribute__ ((__const__)); extern float __floorf (float __x) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern float fmodf (float __x, float __y) throw (); extern float __fmodf (float __x, float __y) throw ();
23866: # 177 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4
23866: extern int isinff (float __value) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866:
23866: extern int finitef (float __value) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern float dremf (float __x, float __y) throw (); extern float __dremf (float __x, float __y) throw ();
23866:
23866:
23866:
23866: extern float significandf (float __x) throw (); extern float __significandf (float __x) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern float copysignf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866:
23866: extern float nanf (const char *__tagb) throw (); extern float __nanf (const char *__tagb) throw ();
23866: # 211 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4
23866: extern int isnanf (float __value) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866:
23866:
23866: extern float j0f (float) throw (); extern float __j0f (float) throw ();
23866: extern float j1f (float) throw (); extern float __j1f (float) throw ();
23866: extern float jnf (int, float) throw (); extern float __jnf (int, float) throw ();
23866: extern float y0f (float) throw (); extern float __y0f (float) throw ();
23866: extern float y1f (float) throw (); extern float __y1f (float) throw ();
23866: extern float ynf (int, float) throw (); extern float __ynf (int, float) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern float erff (float) throw (); extern float __erff (float) throw ();
23866: extern float erfcf (float) throw (); extern float __erfcf (float) throw ();
23866: extern float lgammaf (float) throw (); extern float __lgammaf (float) throw ();
23866:
23866:
23866:
23866:
23866: extern float tgammaf (float) throw (); extern float __tgammaf (float) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern float gammaf (float) throw (); extern float __gammaf (float) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern float lgammaf_r (float, int *__signgamp) throw (); extern float __lgammaf_r (float, int *__signgamp) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern float rintf (float __x) throw (); extern float __rintf (float __x) throw ();
23866:
23866:
23866: extern float nextafterf (float __x, float __y) throw (); extern float __nextafterf (float __x, float __y) throw ();
23866:
23866: extern float nexttowardf (float __x, long double __y) throw (); extern float __nexttowardf (float __x, long double __y) throw ();
23866:
23866:
23866:
23866:
23866: extern float nextdownf (float __x) throw (); extern float __nextdownf (float __x) throw ();
23866:
23866: extern float nextupf (float __x) throw (); extern float __nextupf (float __x) throw ();
23866:
23866:
23866:
23866: extern float remainderf (float __x, float __y) throw (); extern float __remainderf (float __x, float __y) throw ();
23866:
23866:
23866:
23866: extern float scalbnf (float __x, int __n) throw (); extern float __scalbnf (float __x, int __n) throw ();
23866:
23866:
23866:
23866: extern int ilogbf (float __x) throw (); extern int __ilogbf (float __x) throw ();
23866:
23866:
23866:
23866:
23866: extern long int llogbf (float __x) throw (); extern long int __llogbf (float __x) throw ();
23866:
23866:
23866:
23866:
23866: extern float scalblnf (float __x, long int __n) throw (); extern float __scalblnf (float __x, long int __n) throw ();
23866:
23866:
23866:
23866: extern float nearbyintf (float __x) throw (); extern float __nearbyintf (float __x) throw ();
23866:
23866:
23866:
23866: extern float roundf (float __x) throw () __attribute__ ((__const__)); extern float __roundf (float __x) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866: extern float truncf (float __x) throw () __attribute__ ((__const__)); extern float __truncf (float __x) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866:
23866: extern float remquof (float __x, float __y, int *__quo) throw (); extern float __remquof (float __x, float __y, int *__quo) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern long int lrintf (float __x) throw (); extern long int __lrintf (float __x) throw ();
23866: __extension__
23866: extern long long int llrintf (float __x) throw (); extern long long int __llrintf (float __x) throw ();
23866:
23866:
23866:
23866: extern long int lroundf (float __x) throw (); extern long int __lroundf (float __x) throw ();
23866: __extension__
23866: extern long long int llroundf (float __x) throw (); extern long long int __llroundf (float __x) throw ();
23866:
23866:
23866:
23866: extern float fdimf (float __x, float __y) throw (); extern float __fdimf (float __x, float __y) throw ();
23866:
23866:
23866: extern float fmaxf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __fmaxf (float __x, float __y) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern float fminf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __fminf (float __x, float __y) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern float fmaf (float __x, float __y, float __z) throw (); extern float __fmaf (float __x, float __y, float __z) throw ();
23866:
23866:
23866:
23866:
23866: extern float roundevenf (float __x) throw () __attribute__ ((__const__)); extern float __roundevenf (float __x) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866: extern __intmax_t fromfpf (float __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf (float __x, int __round, unsigned int __width) throw ()
23866: ;
23866:
23866:
23866:
23866: extern __uintmax_t ufromfpf (float __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf (float __x, int __round, unsigned int __width) throw ()
23866: ;
23866:
23866:
23866:
23866:
23866: extern __intmax_t fromfpxf (float __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf (float __x, int __round, unsigned int __width) throw ()
23866: ;
23866:
23866:
23866:
23866:
23866: extern __uintmax_t ufromfpxf (float __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf (float __x, int __round, unsigned int __width) throw ()
23866: ;
23866:
23866:
23866: extern float fmaxmagf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __fmaxmagf (float __x, float __y) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern float fminmagf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __fminmagf (float __x, float __y) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern int canonicalizef (float *__cx, const float *__x) throw ();
23866:
23866:
23866:
23866:
23866: extern int totalorderf (const float *__x, const float *__y) throw ()
23866:
23866: __attribute__ ((__pure__));
23866:
23866:
23866: extern int totalordermagf (const float *__x, const float *__y) throw ()
23866:
23866: __attribute__ ((__pure__));
23866:
23866:
23866: extern float getpayloadf (const float *__x) throw (); extern float __getpayloadf (const float *__x) throw ();
23866:
23866:
23866: extern int setpayloadf (float *__x, float __payload) throw ();
23866:
23866:
23866: extern int setpayloadsigf (float *__x, float __payload) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern float scalbf (float __x, float __n) throw (); extern float __scalbf (float __x, float __n) throw ();
23866: # 308 "/usr/include/math.h" 2 3 4
23866: #undef _Mdouble_
23866: #undef __MATH_PRECNAME
23866: #undef __MATH_DECLARING_DOUBLE
23866: #undef __MATH_DECLARING_FLOATN
23866: # 344 "/usr/include/math.h" 3 4
23866: #define _Mdouble_ long double
23866: #define __MATH_PRECNAME(name,r) name ##l ##r
23866: #define __MATH_DECLARING_DOUBLE 0
23866: #define __MATH_DECLARING_FLOATN 0
23866: #define __MATH_DECLARE_LDOUBLE 1
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 1 3 4
23866: # 21 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 3 4
23866: extern int __fpclassifyl (long double __value) throw ()
23866: __attribute__ ((__const__));
23866:
23866:
23866: extern int __signbitl (long double __value) throw ()
23866: __attribute__ ((__const__));
23866:
23866:
23866:
23866: extern int __isinfl (long double __value) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern int __finitel (long double __value) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern int __isnanl (long double __value) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern int __iseqsigl (long double __x, long double __y) throw ();
23866:
23866:
23866: extern int __issignalingl (long double __value) throw ()
23866: __attribute__ ((__const__));
23866: # 350 "/usr/include/math.h" 2 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4
23866: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4
23866: extern long double acosl (long double __x) throw (); extern long double __acosl (long double __x) throw ();
23866:
23866: extern long double asinl (long double __x) throw (); extern long double __asinl (long double __x) throw ();
23866:
23866: extern long double atanl (long double __x) throw (); extern long double __atanl (long double __x) throw ();
23866:
23866: extern long double atan2l (long double __y, long double __x) throw (); extern long double __atan2l (long double __y, long double __x) throw ();
23866:
23866:
23866: extern long double cosl (long double __x) throw (); extern long double __cosl (long double __x) throw ();
23866:
23866: extern long double sinl (long double __x) throw (); extern long double __sinl (long double __x) throw ();
23866:
23866: extern long double tanl (long double __x) throw (); extern long double __tanl (long double __x) throw ();
23866:
23866:
23866:
23866:
23866: extern long double coshl (long double __x) throw (); extern long double __coshl (long double __x) throw ();
23866:
23866: extern long double sinhl (long double __x) throw (); extern long double __sinhl (long double __x) throw ();
23866:
23866: extern long double tanhl (long double __x) throw (); extern long double __tanhl (long double __x) throw ();
23866:
23866:
23866:
23866: extern void sincosl (long double __x, long double *__sinx, long double *__cosx) throw (); extern void __sincosl (long double __x, long double *__sinx, long double *__cosx) throw ()
23866: ;
23866:
23866:
23866:
23866:
23866: extern long double acoshl (long double __x) throw (); extern long double __acoshl (long double __x) throw ();
23866:
23866: extern long double asinhl (long double __x) throw (); extern long double __asinhl (long double __x) throw ();
23866:
23866: extern long double atanhl (long double __x) throw (); extern long double __atanhl (long double __x) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern long double expl (long double __x) throw (); extern long double __expl (long double __x) throw ();
23866:
23866:
23866: extern long double frexpl (long double __x, int *__exponent) throw (); extern long double __frexpl (long double __x, int *__exponent) throw ();
23866:
23866:
23866: extern long double ldexpl (long double __x, int __exponent) throw (); extern long double __ldexpl (long double __x, int __exponent) throw ();
23866:
23866:
23866: extern long double logl (long double __x) throw (); extern long double __logl (long double __x) throw ();
23866:
23866:
23866: extern long double log10l (long double __x) throw (); extern long double __log10l (long double __x) throw ();
23866:
23866:
23866: extern long double modfl (long double __x, long double *__iptr) throw (); extern long double __modfl (long double __x, long double *__iptr) throw () __attribute__ ((__nonnull__ (2)));
23866:
23866:
23866:
23866: extern long double exp10l (long double __x) throw (); extern long double __exp10l (long double __x) throw ();
23866:
23866:
23866:
23866:
23866: extern long double expm1l (long double __x) throw (); extern long double __expm1l (long double __x) throw ();
23866:
23866:
23866: extern long double log1pl (long double __x) throw (); extern long double __log1pl (long double __x) throw ();
23866:
23866:
23866: extern long double logbl (long double __x) throw (); extern long double __logbl (long double __x) throw ();
23866:
23866:
23866:
23866:
23866: extern long double exp2l (long double __x) throw (); extern long double __exp2l (long double __x) throw ();
23866:
23866:
23866: extern long double log2l (long double __x) throw (); extern long double __log2l (long double __x) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern long double powl (long double __x, long double __y) throw (); extern long double __powl (long double __x, long double __y) throw ();
23866:
23866:
23866: extern long double sqrtl (long double __x) throw (); extern long double __sqrtl (long double __x) throw ();
23866:
23866:
23866:
23866: extern long double hypotl (long double __x, long double __y) throw (); extern long double __hypotl (long double __x, long double __y) throw ();
23866:
23866:
23866:
23866:
23866: extern long double cbrtl (long double __x) throw (); extern long double __cbrtl (long double __x) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern long double ceill (long double __x) throw () __attribute__ ((__const__)); extern long double __ceill (long double __x) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern long double fabsl (long double __x) throw () __attribute__ ((__const__)); extern long double __fabsl (long double __x) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern long double floorl (long double __x) throw () __attribute__ ((__const__)); extern long double __floorl (long double __x) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern long double fmodl (long double __x, long double __y) throw (); extern long double __fmodl (long double __x, long double __y) throw ();
23866: # 177 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4
23866: extern int isinfl (long double __value) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866:
23866: extern int finitel (long double __value) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern long double dreml (long double __x, long double __y) throw (); extern long double __dreml (long double __x, long double __y) throw ();
23866:
23866:
23866:
23866: extern long double significandl (long double __x) throw (); extern long double __significandl (long double __x) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern long double copysignl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866:
23866: extern long double nanl (const char *__tagb) throw (); extern long double __nanl (const char *__tagb) throw ();
23866: # 211 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4
23866: extern int isnanl (long double __value) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866:
23866:
23866: extern long double j0l (long double) throw (); extern long double __j0l (long double) throw ();
23866: extern long double j1l (long double) throw (); extern long double __j1l (long double) throw ();
23866: extern long double jnl (int, long double) throw (); extern long double __jnl (int, long double) throw ();
23866: extern long double y0l (long double) throw (); extern long double __y0l (long double) throw ();
23866: extern long double y1l (long double) throw (); extern long double __y1l (long double) throw ();
23866: extern long double ynl (int, long double) throw (); extern long double __ynl (int, long double) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern long double erfl (long double) throw (); extern long double __erfl (long double) throw ();
23866: extern long double erfcl (long double) throw (); extern long double __erfcl (long double) throw ();
23866: extern long double lgammal (long double) throw (); extern long double __lgammal (long double) throw ();
23866:
23866:
23866:
23866:
23866: extern long double tgammal (long double) throw (); extern long double __tgammal (long double) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern long double gammal (long double) throw (); extern long double __gammal (long double) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern long double lgammal_r (long double, int *__signgamp) throw (); extern long double __lgammal_r (long double, int *__signgamp) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern long double rintl (long double __x) throw (); extern long double __rintl (long double __x) throw ();
23866:
23866:
23866: extern long double nextafterl (long double __x, long double __y) throw (); extern long double __nextafterl (long double __x, long double __y) throw ();
23866:
23866: extern long double nexttowardl (long double __x, long double __y) throw (); extern long double __nexttowardl (long double __x, long double __y) throw ();
23866:
23866:
23866:
23866:
23866: extern long double nextdownl (long double __x) throw (); extern long double __nextdownl (long double __x) throw ();
23866:
23866: extern long double nextupl (long double __x) throw (); extern long double __nextupl (long double __x) throw ();
23866:
23866:
23866:
23866: extern long double remainderl (long double __x, long double __y) throw (); extern long double __remainderl (long double __x, long double __y) throw ();
23866:
23866:
23866:
23866: extern long double scalbnl (long double __x, int __n) throw (); extern long double __scalbnl (long double __x, int __n) throw ();
23866:
23866:
23866:
23866: extern int ilogbl (long double __x) throw (); extern int __ilogbl (long double __x) throw ();
23866:
23866:
23866:
23866:
23866: extern long int llogbl (long double __x) throw (); extern long int __llogbl (long double __x) throw ();
23866:
23866:
23866:
23866:
23866: extern long double scalblnl (long double __x, long int __n) throw (); extern long double __scalblnl (long double __x, long int __n) throw ();
23866:
23866:
23866:
23866: extern long double nearbyintl (long double __x) throw (); extern long double __nearbyintl (long double __x) throw ();
23866:
23866:
23866:
23866: extern long double roundl (long double __x) throw () __attribute__ ((__const__)); extern long double __roundl (long double __x) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866: extern long double truncl (long double __x) throw () __attribute__ ((__const__)); extern long double __truncl (long double __x) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866:
23866: extern long double remquol (long double __x, long double __y, int *__quo) throw (); extern long double __remquol (long double __x, long double __y, int *__quo) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern long int lrintl (long double __x) throw (); extern long int __lrintl (long double __x) throw ();
23866: __extension__
23866: extern long long int llrintl (long double __x) throw (); extern long long int __llrintl (long double __x) throw ();
23866:
23866:
23866:
23866: extern long int lroundl (long double __x) throw (); extern long int __lroundl (long double __x) throw ();
23866: __extension__
23866: extern long long int llroundl (long double __x) throw (); extern long long int __llroundl (long double __x) throw ();
23866:
23866:
23866:
23866: extern long double fdiml (long double __x, long double __y) throw (); extern long double __fdiml (long double __x, long double __y) throw ();
23866:
23866:
23866: extern long double fmaxl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __fmaxl (long double __x, long double __y) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern long double fminl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __fminl (long double __x, long double __y) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern long double fmal (long double __x, long double __y, long double __z) throw (); extern long double __fmal (long double __x, long double __y, long double __z) throw ();
23866:
23866:
23866:
23866:
23866: extern long double roundevenl (long double __x) throw () __attribute__ ((__const__)); extern long double __roundevenl (long double __x) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866: extern __intmax_t fromfpl (long double __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpl (long double __x, int __round, unsigned int __width) throw ()
23866: ;
23866:
23866:
23866:
23866: extern __uintmax_t ufromfpl (long double __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpl (long double __x, int __round, unsigned int __width) throw ()
23866: ;
23866:
23866:
23866:
23866:
23866: extern __intmax_t fromfpxl (long double __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxl (long double __x, int __round, unsigned int __width) throw ()
23866: ;
23866:
23866:
23866:
23866:
23866: extern __uintmax_t ufromfpxl (long double __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxl (long double __x, int __round, unsigned int __width) throw ()
23866: ;
23866:
23866:
23866: extern long double fmaxmagl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __fmaxmagl (long double __x, long double __y) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern long double fminmagl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __fminmagl (long double __x, long double __y) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern int canonicalizel (long double *__cx, const long double *__x) throw ();
23866:
23866:
23866:
23866:
23866: extern int totalorderl (const long double *__x, const long double *__y) throw ()
23866:
23866: __attribute__ ((__pure__));
23866:
23866:
23866: extern int totalordermagl (const long double *__x, const long double *__y) throw ()
23866:
23866: __attribute__ ((__pure__));
23866:
23866:
23866: extern long double getpayloadl (const long double *__x) throw (); extern long double __getpayloadl (const long double *__x) throw ();
23866:
23866:
23866: extern int setpayloadl (long double *__x, long double __payload) throw ();
23866:
23866:
23866: extern int setpayloadsigl (long double *__x, long double __payload) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern long double scalbl (long double __x, long double __n) throw (); extern long double __scalbl (long double __x, long double __n) throw ();
23866: # 351 "/usr/include/math.h" 2 3 4
23866: #undef _Mdouble_
23866: #undef __MATH_PRECNAME
23866: #undef __MATH_DECLARING_DOUBLE
23866: #undef __MATH_DECLARING_FLOATN
23866: # 381 "/usr/include/math.h" 3 4
23866: #define _Mdouble_ _Float32
23866: #define __MATH_PRECNAME(name,r) name ##f32 ##r
23866: #define __MATH_DECLARING_DOUBLE 0
23866: #define __MATH_DECLARING_FLOATN 1
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4
23866: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4
23866: extern _Float32 acosf32 (_Float32 __x) throw (); extern _Float32 __acosf32 (_Float32 __x) throw ();
23866:
23866: extern _Float32 asinf32 (_Float32 __x) throw (); extern _Float32 __asinf32 (_Float32 __x) throw ();
23866:
23866: extern _Float32 atanf32 (_Float32 __x) throw (); extern _Float32 __atanf32 (_Float32 __x) throw ();
23866:
23866: extern _Float32 atan2f32 (_Float32 __y, _Float32 __x) throw (); extern _Float32 __atan2f32 (_Float32 __y, _Float32 __x) throw ();
23866:
23866:
23866: extern _Float32 cosf32 (_Float32 __x) throw (); extern _Float32 __cosf32 (_Float32 __x) throw ();
23866:
23866: extern _Float32 sinf32 (_Float32 __x) throw (); extern _Float32 __sinf32 (_Float32 __x) throw ();
23866:
23866: extern _Float32 tanf32 (_Float32 __x) throw (); extern _Float32 __tanf32 (_Float32 __x) throw ();
23866:
23866:
23866:
23866:
23866: extern _Float32 coshf32 (_Float32 __x) throw (); extern _Float32 __coshf32 (_Float32 __x) throw ();
23866:
23866: extern _Float32 sinhf32 (_Float32 __x) throw (); extern _Float32 __sinhf32 (_Float32 __x) throw ();
23866:
23866: extern _Float32 tanhf32 (_Float32 __x) throw (); extern _Float32 __tanhf32 (_Float32 __x) throw ();
23866:
23866:
23866:
23866: extern void sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) throw (); extern void __sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) throw ()
23866: ;
23866:
23866:
23866:
23866:
23866: extern _Float32 acoshf32 (_Float32 __x) throw (); extern _Float32 __acoshf32 (_Float32 __x) throw ();
23866:
23866: extern _Float32 asinhf32 (_Float32 __x) throw (); extern _Float32 __asinhf32 (_Float32 __x) throw ();
23866:
23866: extern _Float32 atanhf32 (_Float32 __x) throw (); extern _Float32 __atanhf32 (_Float32 __x) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern _Float32 expf32 (_Float32 __x) throw (); extern _Float32 __expf32 (_Float32 __x) throw ();
23866:
23866:
23866: extern _Float32 frexpf32 (_Float32 __x, int *__exponent) throw (); extern _Float32 __frexpf32 (_Float32 __x, int *__exponent) throw ();
23866:
23866:
23866: extern _Float32 ldexpf32 (_Float32 __x, int __exponent) throw (); extern _Float32 __ldexpf32 (_Float32 __x, int __exponent) throw ();
23866:
23866:
23866: extern _Float32 logf32 (_Float32 __x) throw (); extern _Float32 __logf32 (_Float32 __x) throw ();
23866:
23866:
23866: extern _Float32 log10f32 (_Float32 __x) throw (); extern _Float32 __log10f32 (_Float32 __x) throw ();
23866:
23866:
23866: extern _Float32 modff32 (_Float32 __x, _Float32 *__iptr) throw (); extern _Float32 __modff32 (_Float32 __x, _Float32 *__iptr) throw () __attribute__ ((__nonnull__ (2)));
23866:
23866:
23866:
23866: extern _Float32 exp10f32 (_Float32 __x) throw (); extern _Float32 __exp10f32 (_Float32 __x) throw ();
23866:
23866:
23866:
23866:
23866: extern _Float32 expm1f32 (_Float32 __x) throw (); extern _Float32 __expm1f32 (_Float32 __x) throw ();
23866:
23866:
23866: extern _Float32 log1pf32 (_Float32 __x) throw (); extern _Float32 __log1pf32 (_Float32 __x) throw ();
23866:
23866:
23866: extern _Float32 logbf32 (_Float32 __x) throw (); extern _Float32 __logbf32 (_Float32 __x) throw ();
23866:
23866:
23866:
23866:
23866: extern _Float32 exp2f32 (_Float32 __x) throw (); extern _Float32 __exp2f32 (_Float32 __x) throw ();
23866:
23866:
23866: extern _Float32 log2f32 (_Float32 __x) throw (); extern _Float32 __log2f32 (_Float32 __x) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern _Float32 powf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __powf32 (_Float32 __x, _Float32 __y) throw ();
23866:
23866:
23866: extern _Float32 sqrtf32 (_Float32 __x) throw (); extern _Float32 __sqrtf32 (_Float32 __x) throw ();
23866:
23866:
23866:
23866: extern _Float32 hypotf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __hypotf32 (_Float32 __x, _Float32 __y) throw ();
23866:
23866:
23866:
23866:
23866: extern _Float32 cbrtf32 (_Float32 __x) throw (); extern _Float32 __cbrtf32 (_Float32 __x) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern _Float32 ceilf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __ceilf32 (_Float32 __x) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern _Float32 fabsf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __fabsf32 (_Float32 __x) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern _Float32 floorf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __floorf32 (_Float32 __x) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern _Float32 fmodf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __fmodf32 (_Float32 __x, _Float32 __y) throw ();
23866: # 196 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4
23866: extern _Float32 copysignf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __copysignf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866:
23866: extern _Float32 nanf32 (const char *__tagb) throw (); extern _Float32 __nanf32 (const char *__tagb) throw ();
23866: # 217 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4
23866: extern _Float32 j0f32 (_Float32) throw (); extern _Float32 __j0f32 (_Float32) throw ();
23866: extern _Float32 j1f32 (_Float32) throw (); extern _Float32 __j1f32 (_Float32) throw ();
23866: extern _Float32 jnf32 (int, _Float32) throw (); extern _Float32 __jnf32 (int, _Float32) throw ();
23866: extern _Float32 y0f32 (_Float32) throw (); extern _Float32 __y0f32 (_Float32) throw ();
23866: extern _Float32 y1f32 (_Float32) throw (); extern _Float32 __y1f32 (_Float32) throw ();
23866: extern _Float32 ynf32 (int, _Float32) throw (); extern _Float32 __ynf32 (int, _Float32) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern _Float32 erff32 (_Float32) throw (); extern _Float32 __erff32 (_Float32) throw ();
23866: extern _Float32 erfcf32 (_Float32) throw (); extern _Float32 __erfcf32 (_Float32) throw ();
23866: extern _Float32 lgammaf32 (_Float32) throw (); extern _Float32 __lgammaf32 (_Float32) throw ();
23866:
23866:
23866:
23866:
23866: extern _Float32 tgammaf32 (_Float32) throw (); extern _Float32 __tgammaf32 (_Float32) throw ();
23866: # 249 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4
23866: extern _Float32 lgammaf32_r (_Float32, int *__signgamp) throw (); extern _Float32 __lgammaf32_r (_Float32, int *__signgamp) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern _Float32 rintf32 (_Float32 __x) throw (); extern _Float32 __rintf32 (_Float32 __x) throw ();
23866:
23866:
23866: extern _Float32 nextafterf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __nextafterf32 (_Float32 __x, _Float32 __y) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern _Float32 nextdownf32 (_Float32 __x) throw (); extern _Float32 __nextdownf32 (_Float32 __x) throw ();
23866:
23866: extern _Float32 nextupf32 (_Float32 __x) throw (); extern _Float32 __nextupf32 (_Float32 __x) throw ();
23866:
23866:
23866:
23866: extern _Float32 remainderf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __remainderf32 (_Float32 __x, _Float32 __y) throw ();
23866:
23866:
23866:
23866: extern _Float32 scalbnf32 (_Float32 __x, int __n) throw (); extern _Float32 __scalbnf32 (_Float32 __x, int __n) throw ();
23866:
23866:
23866:
23866: extern int ilogbf32 (_Float32 __x) throw (); extern int __ilogbf32 (_Float32 __x) throw ();
23866:
23866:
23866:
23866:
23866: extern long int llogbf32 (_Float32 __x) throw (); extern long int __llogbf32 (_Float32 __x) throw ();
23866:
23866:
23866:
23866:
23866: extern _Float32 scalblnf32 (_Float32 __x, long int __n) throw (); extern _Float32 __scalblnf32 (_Float32 __x, long int __n) throw ();
23866:
23866:
23866:
23866: extern _Float32 nearbyintf32 (_Float32 __x) throw (); extern _Float32 __nearbyintf32 (_Float32 __x) throw ();
23866:
23866:
23866:
23866: extern _Float32 roundf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __roundf32 (_Float32 __x) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866: extern _Float32 truncf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __truncf32 (_Float32 __x) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866:
23866: extern _Float32 remquof32 (_Float32 __x, _Float32 __y, int *__quo) throw (); extern _Float32 __remquof32 (_Float32 __x, _Float32 __y, int *__quo) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern long int lrintf32 (_Float32 __x) throw (); extern long int __lrintf32 (_Float32 __x) throw ();
23866: __extension__
23866: extern long long int llrintf32 (_Float32 __x) throw (); extern long long int __llrintf32 (_Float32 __x) throw ();
23866:
23866:
23866:
23866: extern long int lroundf32 (_Float32 __x) throw (); extern long int __lroundf32 (_Float32 __x) throw ();
23866: __extension__
23866: extern long long int llroundf32 (_Float32 __x) throw (); extern long long int __llroundf32 (_Float32 __x) throw ();
23866:
23866:
23866:
23866: extern _Float32 fdimf32 (_Float32 __x, _Float32 __y) throw (); extern _Float32 __fdimf32 (_Float32 __x, _Float32 __y) throw ();
23866:
23866:
23866: extern _Float32 fmaxf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __fmaxf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern _Float32 fminf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __fminf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern _Float32 fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) throw (); extern _Float32 __fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) throw ();
23866:
23866:
23866:
23866:
23866: extern _Float32 roundevenf32 (_Float32 __x) throw () __attribute__ ((__const__)); extern _Float32 __roundevenf32 (_Float32 __x) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866: extern __intmax_t fromfpf32 (_Float32 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf32 (_Float32 __x, int __round, unsigned int __width) throw ()
23866: ;
23866:
23866:
23866:
23866: extern __uintmax_t ufromfpf32 (_Float32 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf32 (_Float32 __x, int __round, unsigned int __width) throw ()
23866: ;
23866:
23866:
23866:
23866:
23866: extern __intmax_t fromfpxf32 (_Float32 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf32 (_Float32 __x, int __round, unsigned int __width) throw ()
23866: ;
23866:
23866:
23866:
23866:
23866: extern __uintmax_t ufromfpxf32 (_Float32 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf32 (_Float32 __x, int __round, unsigned int __width) throw ()
23866: ;
23866:
23866:
23866: extern _Float32 fmaxmagf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __fmaxmagf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern _Float32 fminmagf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__)); extern _Float32 __fminmagf32 (_Float32 __x, _Float32 __y) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern int canonicalizef32 (_Float32 *__cx, const _Float32 *__x) throw ();
23866:
23866:
23866:
23866:
23866: extern int totalorderf32 (const _Float32 *__x, const _Float32 *__y) throw ()
23866:
23866: __attribute__ ((__pure__));
23866:
23866:
23866: extern int totalordermagf32 (const _Float32 *__x, const _Float32 *__y) throw ()
23866:
23866: __attribute__ ((__pure__));
23866:
23866:
23866: extern _Float32 getpayloadf32 (const _Float32 *__x) throw (); extern _Float32 __getpayloadf32 (const _Float32 *__x) throw ();
23866:
23866:
23866: extern int setpayloadf32 (_Float32 *__x, _Float32 __payload) throw ();
23866:
23866:
23866: extern int setpayloadsigf32 (_Float32 *__x, _Float32 __payload) throw ();
23866: # 390 "/usr/include/math.h" 2 3 4
23866:
23866: #undef _Mdouble_
23866: #undef __MATH_PRECNAME
23866: #undef __MATH_DECLARING_DOUBLE
23866: #undef __MATH_DECLARING_FLOATN
23866:
23866:
23866:
23866: #define _Mdouble_ _Float64
23866: #define __MATH_PRECNAME(name,r) name ##f64 ##r
23866: #define __MATH_DECLARING_DOUBLE 0
23866: #define __MATH_DECLARING_FLOATN 1
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4
23866: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4
23866: extern _Float64 acosf64 (_Float64 __x) throw (); extern _Float64 __acosf64 (_Float64 __x) throw ();
23866:
23866: extern _Float64 asinf64 (_Float64 __x) throw (); extern _Float64 __asinf64 (_Float64 __x) throw ();
23866:
23866: extern _Float64 atanf64 (_Float64 __x) throw (); extern _Float64 __atanf64 (_Float64 __x) throw ();
23866:
23866: extern _Float64 atan2f64 (_Float64 __y, _Float64 __x) throw (); extern _Float64 __atan2f64 (_Float64 __y, _Float64 __x) throw ();
23866:
23866:
23866: extern _Float64 cosf64 (_Float64 __x) throw (); extern _Float64 __cosf64 (_Float64 __x) throw ();
23866:
23866: extern _Float64 sinf64 (_Float64 __x) throw (); extern _Float64 __sinf64 (_Float64 __x) throw ();
23866:
23866: extern _Float64 tanf64 (_Float64 __x) throw (); extern _Float64 __tanf64 (_Float64 __x) throw ();
23866:
23866:
23866:
23866:
23866: extern _Float64 coshf64 (_Float64 __x) throw (); extern _Float64 __coshf64 (_Float64 __x) throw ();
23866:
23866: extern _Float64 sinhf64 (_Float64 __x) throw (); extern _Float64 __sinhf64 (_Float64 __x) throw ();
23866:
23866: extern _Float64 tanhf64 (_Float64 __x) throw (); extern _Float64 __tanhf64 (_Float64 __x) throw ();
23866:
23866:
23866:
23866: extern void sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) throw (); extern void __sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) throw ()
23866: ;
23866:
23866:
23866:
23866:
23866: extern _Float64 acoshf64 (_Float64 __x) throw (); extern _Float64 __acoshf64 (_Float64 __x) throw ();
23866:
23866: extern _Float64 asinhf64 (_Float64 __x) throw (); extern _Float64 __asinhf64 (_Float64 __x) throw ();
23866:
23866: extern _Float64 atanhf64 (_Float64 __x) throw (); extern _Float64 __atanhf64 (_Float64 __x) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern _Float64 expf64 (_Float64 __x) throw (); extern _Float64 __expf64 (_Float64 __x) throw ();
23866:
23866:
23866: extern _Float64 frexpf64 (_Float64 __x, int *__exponent) throw (); extern _Float64 __frexpf64 (_Float64 __x, int *__exponent) throw ();
23866:
23866:
23866: extern _Float64 ldexpf64 (_Float64 __x, int __exponent) throw (); extern _Float64 __ldexpf64 (_Float64 __x, int __exponent) throw ();
23866:
23866:
23866: extern _Float64 logf64 (_Float64 __x) throw (); extern _Float64 __logf64 (_Float64 __x) throw ();
23866:
23866:
23866: extern _Float64 log10f64 (_Float64 __x) throw (); extern _Float64 __log10f64 (_Float64 __x) throw ();
23866:
23866:
23866: extern _Float64 modff64 (_Float64 __x, _Float64 *__iptr) throw (); extern _Float64 __modff64 (_Float64 __x, _Float64 *__iptr) throw () __attribute__ ((__nonnull__ (2)));
23866:
23866:
23866:
23866: extern _Float64 exp10f64 (_Float64 __x) throw (); extern _Float64 __exp10f64 (_Float64 __x) throw ();
23866:
23866:
23866:
23866:
23866: extern _Float64 expm1f64 (_Float64 __x) throw (); extern _Float64 __expm1f64 (_Float64 __x) throw ();
23866:
23866:
23866: extern _Float64 log1pf64 (_Float64 __x) throw (); extern _Float64 __log1pf64 (_Float64 __x) throw ();
23866:
23866:
23866: extern _Float64 logbf64 (_Float64 __x) throw (); extern _Float64 __logbf64 (_Float64 __x) throw ();
23866:
23866:
23866:
23866:
23866: extern _Float64 exp2f64 (_Float64 __x) throw (); extern _Float64 __exp2f64 (_Float64 __x) throw ();
23866:
23866:
23866: extern _Float64 log2f64 (_Float64 __x) throw (); extern _Float64 __log2f64 (_Float64 __x) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern _Float64 powf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __powf64 (_Float64 __x, _Float64 __y) throw ();
23866:
23866:
23866: extern _Float64 sqrtf64 (_Float64 __x) throw (); extern _Float64 __sqrtf64 (_Float64 __x) throw ();
23866:
23866:
23866:
23866: extern _Float64 hypotf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __hypotf64 (_Float64 __x, _Float64 __y) throw ();
23866:
23866:
23866:
23866:
23866: extern _Float64 cbrtf64 (_Float64 __x) throw (); extern _Float64 __cbrtf64 (_Float64 __x) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern _Float64 ceilf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __ceilf64 (_Float64 __x) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern _Float64 fabsf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __fabsf64 (_Float64 __x) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern _Float64 floorf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __floorf64 (_Float64 __x) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern _Float64 fmodf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __fmodf64 (_Float64 __x, _Float64 __y) throw ();
23866: # 196 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4
23866: extern _Float64 copysignf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __copysignf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866:
23866: extern _Float64 nanf64 (const char *__tagb) throw (); extern _Float64 __nanf64 (const char *__tagb) throw ();
23866: # 217 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4
23866: extern _Float64 j0f64 (_Float64) throw (); extern _Float64 __j0f64 (_Float64) throw ();
23866: extern _Float64 j1f64 (_Float64) throw (); extern _Float64 __j1f64 (_Float64) throw ();
23866: extern _Float64 jnf64 (int, _Float64) throw (); extern _Float64 __jnf64 (int, _Float64) throw ();
23866: extern _Float64 y0f64 (_Float64) throw (); extern _Float64 __y0f64 (_Float64) throw ();
23866: extern _Float64 y1f64 (_Float64) throw (); extern _Float64 __y1f64 (_Float64) throw ();
23866: extern _Float64 ynf64 (int, _Float64) throw (); extern _Float64 __ynf64 (int, _Float64) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern _Float64 erff64 (_Float64) throw (); extern _Float64 __erff64 (_Float64) throw ();
23866: extern _Float64 erfcf64 (_Float64) throw (); extern _Float64 __erfcf64 (_Float64) throw ();
23866: extern _Float64 lgammaf64 (_Float64) throw (); extern _Float64 __lgammaf64 (_Float64) throw ();
23866:
23866:
23866:
23866:
23866: extern _Float64 tgammaf64 (_Float64) throw (); extern _Float64 __tgammaf64 (_Float64) throw ();
23866: # 249 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4
23866: extern _Float64 lgammaf64_r (_Float64, int *__signgamp) throw (); extern _Float64 __lgammaf64_r (_Float64, int *__signgamp) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern _Float64 rintf64 (_Float64 __x) throw (); extern _Float64 __rintf64 (_Float64 __x) throw ();
23866:
23866:
23866: extern _Float64 nextafterf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __nextafterf64 (_Float64 __x, _Float64 __y) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern _Float64 nextdownf64 (_Float64 __x) throw (); extern _Float64 __nextdownf64 (_Float64 __x) throw ();
23866:
23866: extern _Float64 nextupf64 (_Float64 __x) throw (); extern _Float64 __nextupf64 (_Float64 __x) throw ();
23866:
23866:
23866:
23866: extern _Float64 remainderf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __remainderf64 (_Float64 __x, _Float64 __y) throw ();
23866:
23866:
23866:
23866: extern _Float64 scalbnf64 (_Float64 __x, int __n) throw (); extern _Float64 __scalbnf64 (_Float64 __x, int __n) throw ();
23866:
23866:
23866:
23866: extern int ilogbf64 (_Float64 __x) throw (); extern int __ilogbf64 (_Float64 __x) throw ();
23866:
23866:
23866:
23866:
23866: extern long int llogbf64 (_Float64 __x) throw (); extern long int __llogbf64 (_Float64 __x) throw ();
23866:
23866:
23866:
23866:
23866: extern _Float64 scalblnf64 (_Float64 __x, long int __n) throw (); extern _Float64 __scalblnf64 (_Float64 __x, long int __n) throw ();
23866:
23866:
23866:
23866: extern _Float64 nearbyintf64 (_Float64 __x) throw (); extern _Float64 __nearbyintf64 (_Float64 __x) throw ();
23866:
23866:
23866:
23866: extern _Float64 roundf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __roundf64 (_Float64 __x) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866: extern _Float64 truncf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __truncf64 (_Float64 __x) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866:
23866: extern _Float64 remquof64 (_Float64 __x, _Float64 __y, int *__quo) throw (); extern _Float64 __remquof64 (_Float64 __x, _Float64 __y, int *__quo) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern long int lrintf64 (_Float64 __x) throw (); extern long int __lrintf64 (_Float64 __x) throw ();
23866: __extension__
23866: extern long long int llrintf64 (_Float64 __x) throw (); extern long long int __llrintf64 (_Float64 __x) throw ();
23866:
23866:
23866:
23866: extern long int lroundf64 (_Float64 __x) throw (); extern long int __lroundf64 (_Float64 __x) throw ();
23866: __extension__
23866: extern long long int llroundf64 (_Float64 __x) throw (); extern long long int __llroundf64 (_Float64 __x) throw ();
23866:
23866:
23866:
23866: extern _Float64 fdimf64 (_Float64 __x, _Float64 __y) throw (); extern _Float64 __fdimf64 (_Float64 __x, _Float64 __y) throw ();
23866:
23866:
23866: extern _Float64 fmaxf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __fmaxf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern _Float64 fminf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __fminf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern _Float64 fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) throw (); extern _Float64 __fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) throw ();
23866:
23866:
23866:
23866:
23866: extern _Float64 roundevenf64 (_Float64 __x) throw () __attribute__ ((__const__)); extern _Float64 __roundevenf64 (_Float64 __x) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866: extern __intmax_t fromfpf64 (_Float64 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf64 (_Float64 __x, int __round, unsigned int __width) throw ()
23866: ;
23866:
23866:
23866:
23866: extern __uintmax_t ufromfpf64 (_Float64 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf64 (_Float64 __x, int __round, unsigned int __width) throw ()
23866: ;
23866:
23866:
23866:
23866:
23866: extern __intmax_t fromfpxf64 (_Float64 __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf64 (_Float64 __x, int __round, unsigned int __width) throw ()
23866: ;
23866:
23866:
23866:
23866:
23866: extern __uintmax_t ufromfpxf64 (_Float64 __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf64 (_Float64 __x, int __round, unsigned int __width) throw ()
23866: ;
23866:
23866:
23866: extern _Float64 fmaxmagf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __fmaxmagf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern _Float64 fminmagf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__)); extern _Float64 __fminmagf64 (_Float64 __x, _Float64 __y) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern int canonicalizef64 (_Float64 *__cx, const _Float64 *__x) throw ();
23866:
23866:
23866:
23866:
23866: extern int totalorderf64 (const _Float64 *__x, const _Float64 *__y) throw ()
23866:
23866: __attribute__ ((__pure__));
23866:
23866:
23866: extern int totalordermagf64 (const _Float64 *__x, const _Float64 *__y) throw ()
23866:
23866: __attribute__ ((__pure__));
23866:
23866:
23866: extern _Float64 getpayloadf64 (const _Float64 *__x) throw (); extern _Float64 __getpayloadf64 (const _Float64 *__x) throw ();
23866:
23866:
23866: extern int setpayloadf64 (_Float64 *__x, _Float64 __payload) throw ();
23866:
23866:
23866: extern int setpayloadsigf64 (_Float64 *__x, _Float64 __payload) throw ();
23866: # 407 "/usr/include/math.h" 2 3 4
23866:
23866: #undef _Mdouble_
23866: #undef __MATH_PRECNAME
23866: #undef __MATH_DECLARING_DOUBLE
23866: #undef __MATH_DECLARING_FLOATN
23866: # 432 "/usr/include/math.h" 3 4
23866: #define _Mdouble_ _Float32x
23866: #define __MATH_PRECNAME(name,r) name ##f32x ##r
23866: #define __MATH_DECLARING_DOUBLE 0
23866: #define __MATH_DECLARING_FLOATN 1
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4
23866: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4
23866: extern _Float32x acosf32x (_Float32x __x) throw (); extern _Float32x __acosf32x (_Float32x __x) throw ();
23866:
23866: extern _Float32x asinf32x (_Float32x __x) throw (); extern _Float32x __asinf32x (_Float32x __x) throw ();
23866:
23866: extern _Float32x atanf32x (_Float32x __x) throw (); extern _Float32x __atanf32x (_Float32x __x) throw ();
23866:
23866: extern _Float32x atan2f32x (_Float32x __y, _Float32x __x) throw (); extern _Float32x __atan2f32x (_Float32x __y, _Float32x __x) throw ();
23866:
23866:
23866: extern _Float32x cosf32x (_Float32x __x) throw (); extern _Float32x __cosf32x (_Float32x __x) throw ();
23866:
23866: extern _Float32x sinf32x (_Float32x __x) throw (); extern _Float32x __sinf32x (_Float32x __x) throw ();
23866:
23866: extern _Float32x tanf32x (_Float32x __x) throw (); extern _Float32x __tanf32x (_Float32x __x) throw ();
23866:
23866:
23866:
23866:
23866: extern _Float32x coshf32x (_Float32x __x) throw (); extern _Float32x __coshf32x (_Float32x __x) throw ();
23866:
23866: extern _Float32x sinhf32x (_Float32x __x) throw (); extern _Float32x __sinhf32x (_Float32x __x) throw ();
23866:
23866: extern _Float32x tanhf32x (_Float32x __x) throw (); extern _Float32x __tanhf32x (_Float32x __x) throw ();
23866:
23866:
23866:
23866: extern void sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) throw (); extern void __sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) throw ()
23866: ;
23866:
23866:
23866:
23866:
23866: extern _Float32x acoshf32x (_Float32x __x) throw (); extern _Float32x __acoshf32x (_Float32x __x) throw ();
23866:
23866: extern _Float32x asinhf32x (_Float32x __x) throw (); extern _Float32x __asinhf32x (_Float32x __x) throw ();
23866:
23866: extern _Float32x atanhf32x (_Float32x __x) throw (); extern _Float32x __atanhf32x (_Float32x __x) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern _Float32x expf32x (_Float32x __x) throw (); extern _Float32x __expf32x (_Float32x __x) throw ();
23866:
23866:
23866: extern _Float32x frexpf32x (_Float32x __x, int *__exponent) throw (); extern _Float32x __frexpf32x (_Float32x __x, int *__exponent) throw ();
23866:
23866:
23866: extern _Float32x ldexpf32x (_Float32x __x, int __exponent) throw (); extern _Float32x __ldexpf32x (_Float32x __x, int __exponent) throw ();
23866:
23866:
23866: extern _Float32x logf32x (_Float32x __x) throw (); extern _Float32x __logf32x (_Float32x __x) throw ();
23866:
23866:
23866: extern _Float32x log10f32x (_Float32x __x) throw (); extern _Float32x __log10f32x (_Float32x __x) throw ();
23866:
23866:
23866: extern _Float32x modff32x (_Float32x __x, _Float32x *__iptr) throw (); extern _Float32x __modff32x (_Float32x __x, _Float32x *__iptr) throw () __attribute__ ((__nonnull__ (2)));
23866:
23866:
23866:
23866: extern _Float32x exp10f32x (_Float32x __x) throw (); extern _Float32x __exp10f32x (_Float32x __x) throw ();
23866:
23866:
23866:
23866:
23866: extern _Float32x expm1f32x (_Float32x __x) throw (); extern _Float32x __expm1f32x (_Float32x __x) throw ();
23866:
23866:
23866: extern _Float32x log1pf32x (_Float32x __x) throw (); extern _Float32x __log1pf32x (_Float32x __x) throw ();
23866:
23866:
23866: extern _Float32x logbf32x (_Float32x __x) throw (); extern _Float32x __logbf32x (_Float32x __x) throw ();
23866:
23866:
23866:
23866:
23866: extern _Float32x exp2f32x (_Float32x __x) throw (); extern _Float32x __exp2f32x (_Float32x __x) throw ();
23866:
23866:
23866: extern _Float32x log2f32x (_Float32x __x) throw (); extern _Float32x __log2f32x (_Float32x __x) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern _Float32x powf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __powf32x (_Float32x __x, _Float32x __y) throw ();
23866:
23866:
23866: extern _Float32x sqrtf32x (_Float32x __x) throw (); extern _Float32x __sqrtf32x (_Float32x __x) throw ();
23866:
23866:
23866:
23866: extern _Float32x hypotf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __hypotf32x (_Float32x __x, _Float32x __y) throw ();
23866:
23866:
23866:
23866:
23866: extern _Float32x cbrtf32x (_Float32x __x) throw (); extern _Float32x __cbrtf32x (_Float32x __x) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern _Float32x ceilf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __ceilf32x (_Float32x __x) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern _Float32x fabsf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __fabsf32x (_Float32x __x) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern _Float32x floorf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __floorf32x (_Float32x __x) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern _Float32x fmodf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __fmodf32x (_Float32x __x, _Float32x __y) throw ();
23866: # 196 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4
23866: extern _Float32x copysignf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __copysignf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866:
23866: extern _Float32x nanf32x (const char *__tagb) throw (); extern _Float32x __nanf32x (const char *__tagb) throw ();
23866: # 217 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4
23866: extern _Float32x j0f32x (_Float32x) throw (); extern _Float32x __j0f32x (_Float32x) throw ();
23866: extern _Float32x j1f32x (_Float32x) throw (); extern _Float32x __j1f32x (_Float32x) throw ();
23866: extern _Float32x jnf32x (int, _Float32x) throw (); extern _Float32x __jnf32x (int, _Float32x) throw ();
23866: extern _Float32x y0f32x (_Float32x) throw (); extern _Float32x __y0f32x (_Float32x) throw ();
23866: extern _Float32x y1f32x (_Float32x) throw (); extern _Float32x __y1f32x (_Float32x) throw ();
23866: extern _Float32x ynf32x (int, _Float32x) throw (); extern _Float32x __ynf32x (int, _Float32x) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern _Float32x erff32x (_Float32x) throw (); extern _Float32x __erff32x (_Float32x) throw ();
23866: extern _Float32x erfcf32x (_Float32x) throw (); extern _Float32x __erfcf32x (_Float32x) throw ();
23866: extern _Float32x lgammaf32x (_Float32x) throw (); extern _Float32x __lgammaf32x (_Float32x) throw ();
23866:
23866:
23866:
23866:
23866: extern _Float32x tgammaf32x (_Float32x) throw (); extern _Float32x __tgammaf32x (_Float32x) throw ();
23866: # 249 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4
23866: extern _Float32x lgammaf32x_r (_Float32x, int *__signgamp) throw (); extern _Float32x __lgammaf32x_r (_Float32x, int *__signgamp) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern _Float32x rintf32x (_Float32x __x) throw (); extern _Float32x __rintf32x (_Float32x __x) throw ();
23866:
23866:
23866: extern _Float32x nextafterf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __nextafterf32x (_Float32x __x, _Float32x __y) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern _Float32x nextdownf32x (_Float32x __x) throw (); extern _Float32x __nextdownf32x (_Float32x __x) throw ();
23866:
23866: extern _Float32x nextupf32x (_Float32x __x) throw (); extern _Float32x __nextupf32x (_Float32x __x) throw ();
23866:
23866:
23866:
23866: extern _Float32x remainderf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __remainderf32x (_Float32x __x, _Float32x __y) throw ();
23866:
23866:
23866:
23866: extern _Float32x scalbnf32x (_Float32x __x, int __n) throw (); extern _Float32x __scalbnf32x (_Float32x __x, int __n) throw ();
23866:
23866:
23866:
23866: extern int ilogbf32x (_Float32x __x) throw (); extern int __ilogbf32x (_Float32x __x) throw ();
23866:
23866:
23866:
23866:
23866: extern long int llogbf32x (_Float32x __x) throw (); extern long int __llogbf32x (_Float32x __x) throw ();
23866:
23866:
23866:
23866:
23866: extern _Float32x scalblnf32x (_Float32x __x, long int __n) throw (); extern _Float32x __scalblnf32x (_Float32x __x, long int __n) throw ();
23866:
23866:
23866:
23866: extern _Float32x nearbyintf32x (_Float32x __x) throw (); extern _Float32x __nearbyintf32x (_Float32x __x) throw ();
23866:
23866:
23866:
23866: extern _Float32x roundf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __roundf32x (_Float32x __x) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866: extern _Float32x truncf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __truncf32x (_Float32x __x) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866:
23866: extern _Float32x remquof32x (_Float32x __x, _Float32x __y, int *__quo) throw (); extern _Float32x __remquof32x (_Float32x __x, _Float32x __y, int *__quo) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern long int lrintf32x (_Float32x __x) throw (); extern long int __lrintf32x (_Float32x __x) throw ();
23866: __extension__
23866: extern long long int llrintf32x (_Float32x __x) throw (); extern long long int __llrintf32x (_Float32x __x) throw ();
23866:
23866:
23866:
23866: extern long int lroundf32x (_Float32x __x) throw (); extern long int __lroundf32x (_Float32x __x) throw ();
23866: __extension__
23866: extern long long int llroundf32x (_Float32x __x) throw (); extern long long int __llroundf32x (_Float32x __x) throw ();
23866:
23866:
23866:
23866: extern _Float32x fdimf32x (_Float32x __x, _Float32x __y) throw (); extern _Float32x __fdimf32x (_Float32x __x, _Float32x __y) throw ();
23866:
23866:
23866: extern _Float32x fmaxf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __fmaxf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern _Float32x fminf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __fminf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern _Float32x fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) throw (); extern _Float32x __fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) throw ();
23866:
23866:
23866:
23866:
23866: extern _Float32x roundevenf32x (_Float32x __x) throw () __attribute__ ((__const__)); extern _Float32x __roundevenf32x (_Float32x __x) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866: extern __intmax_t fromfpf32x (_Float32x __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpf32x (_Float32x __x, int __round, unsigned int __width) throw ()
23866: ;
23866:
23866:
23866:
23866: extern __uintmax_t ufromfpf32x (_Float32x __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpf32x (_Float32x __x, int __round, unsigned int __width) throw ()
23866: ;
23866:
23866:
23866:
23866:
23866: extern __intmax_t fromfpxf32x (_Float32x __x, int __round, unsigned int __width) throw (); extern __intmax_t __fromfpxf32x (_Float32x __x, int __round, unsigned int __width) throw ()
23866: ;
23866:
23866:
23866:
23866:
23866: extern __uintmax_t ufromfpxf32x (_Float32x __x, int __round, unsigned int __width) throw (); extern __uintmax_t __ufromfpxf32x (_Float32x __x, int __round, unsigned int __width) throw ()
23866: ;
23866:
23866:
23866: extern _Float32x fmaxmagf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __fmaxmagf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern _Float32x fminmagf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__)); extern _Float32x __fminmagf32x (_Float32x __x, _Float32x __y) throw () __attribute__ ((__const__));
23866:
23866:
23866: extern int canonicalizef32x (_Float32x *__cx, const _Float32x *__x) throw ();
23866:
23866:
23866:
23866:
23866: extern int totalorderf32x (const _Float32x *__x, const _Float32x *__y) throw ()
23866:
23866: __attribute__ ((__pure__));
23866:
23866:
23866: extern int totalordermagf32x (const _Float32x *__x, const _Float32x *__y) throw ()
23866:
23866: __attribute__ ((__pure__));
23866:
23866:
23866: extern _Float32x getpayloadf32x (const _Float32x *__x) throw (); extern _Float32x __getpayloadf32x (const _Float32x *__x) throw ();
23866:
23866:
23866: extern int setpayloadf32x (_Float32x *__x, _Float32x __payload) throw ();
23866:
23866:
23866: extern int setpayloadsigf32x (_Float32x *__x, _Float32x __payload) throw ();
23866: # 441 "/usr/include/math.h" 2 3 4
23866:
23866: #undef _Mdouble_
23866: #undef __MATH_PRECNAME
23866: #undef __MATH_DECLARING_DOUBLE
23866: #undef __MATH_DECLARING_FLOATN
23866: # 482 "/usr/include/math.h" 3 4
23866: #undef __MATHDECL_1
23866: #undef __MATHDECL
23866: #undef __MATHCALL
23866:
23866:
23866: #define __MATHCALL_NARROW_ARGS_1 (_Marg_ __x)
23866: #define __MATHCALL_NARROW_ARGS_2 (_Marg_ __x, _Marg_ __y)
23866: #define __MATHCALL_NARROW_ARGS_3 (_Marg_ __x, _Marg_ __y, _Marg_ __z)
23866: #define __MATHCALL_NARROW_NORMAL(func,nargs) extern _Mret_ func __MATHCALL_NARROW_ARGS_ ## nargs __THROW
23866:
23866: #define __MATHCALL_NARROW_REDIR(func,redir,nargs) extern _Mret_ __REDIRECT_NTH (func, __MATHCALL_NARROW_ARGS_ ## nargs, redir)
23866:
23866:
23866: #define __MATHCALL_NARROW(func,redir,nargs) __MATHCALL_NARROW_NORMAL (func, nargs)
23866:
23866:
23866:
23866:
23866: #define _Mret_ float
23866: #define _Marg_ double
23866: #define __MATHCALL_NAME(name) f ## name
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4
23866: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4
23866: extern float fadd (double __x, double __y) throw ();
23866:
23866:
23866: extern float fdiv (double __x, double __y) throw ();
23866:
23866:
23866: extern float fmul (double __x, double __y) throw ();
23866:
23866:
23866: extern float fsub (double __x, double __y) throw ();
23866: # 504 "/usr/include/math.h" 2 3 4
23866: #undef _Mret_
23866: #undef _Marg_
23866: #undef __MATHCALL_NAME
23866:
23866: #define _Mret_ float
23866: #define _Marg_ long double
23866: #define __MATHCALL_NAME(name) f ## name ## l
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4
23866: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4
23866: extern float faddl (long double __x, long double __y) throw ();
23866:
23866:
23866: extern float fdivl (long double __x, long double __y) throw ();
23866:
23866:
23866: extern float fmull (long double __x, long double __y) throw ();
23866:
23866:
23866: extern float fsubl (long double __x, long double __y) throw ();
23866: # 518 "/usr/include/math.h" 2 3 4
23866: #undef _Mret_
23866: #undef _Marg_
23866: #undef __MATHCALL_NAME
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define _Mret_ double
23866: #define _Marg_ long double
23866: #define __MATHCALL_NAME(name) d ## name ## l
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4
23866: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4
23866: extern double daddl (long double __x, long double __y) throw ();
23866:
23866:
23866: extern double ddivl (long double __x, long double __y) throw ();
23866:
23866:
23866: extern double dmull (long double __x, long double __y) throw ();
23866:
23866:
23866: extern double dsubl (long double __x, long double __y) throw ();
23866: # 538 "/usr/include/math.h" 2 3 4
23866: #undef _Mret_
23866: #undef _Marg_
23866: #undef __MATHCALL_NAME
23866: # 613 "/usr/include/math.h" 3 4
23866: #define _Mret_ _Float32
23866: #define _Marg_ _Float32x
23866: #define __MATHCALL_NAME(name) f32 ## name ## f32x
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4
23866: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4
23866: extern _Float32 f32addf32x (_Float32x __x, _Float32x __y) throw ();
23866:
23866:
23866: extern _Float32 f32divf32x (_Float32x __x, _Float32x __y) throw ();
23866:
23866:
23866: extern _Float32 f32mulf32x (_Float32x __x, _Float32x __y) throw ();
23866:
23866:
23866: extern _Float32 f32subf32x (_Float32x __x, _Float32x __y) throw ();
23866: # 617 "/usr/include/math.h" 2 3 4
23866: #undef _Mret_
23866: #undef _Marg_
23866: #undef __MATHCALL_NAME
23866:
23866:
23866:
23866: #define _Mret_ _Float32
23866: #define _Marg_ _Float64
23866: #define __MATHCALL_NAME(name) f32 ## name ## f64
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4
23866: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4
23866: extern _Float32 f32addf64 (_Float64 __x, _Float64 __y) throw ();
23866:
23866:
23866: extern _Float32 f32divf64 (_Float64 __x, _Float64 __y) throw ();
23866:
23866:
23866: extern _Float32 f32mulf64 (_Float64 __x, _Float64 __y) throw ();
23866:
23866:
23866: extern _Float32 f32subf64 (_Float64 __x, _Float64 __y) throw ();
23866: # 627 "/usr/include/math.h" 2 3 4
23866: #undef _Mret_
23866: #undef _Marg_
23866: #undef __MATHCALL_NAME
23866: # 663 "/usr/include/math.h" 3 4
23866: #define _Mret_ _Float32x
23866: #define _Marg_ _Float64
23866: #define __MATHCALL_NAME(name) f32x ## name ## f64
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4
23866: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4
23866: extern _Float32x f32xaddf64 (_Float64 __x, _Float64 __y) throw ();
23866:
23866:
23866: extern _Float32x f32xdivf64 (_Float64 __x, _Float64 __y) throw ();
23866:
23866:
23866: extern _Float32x f32xmulf64 (_Float64 __x, _Float64 __y) throw ();
23866:
23866:
23866: extern _Float32x f32xsubf64 (_Float64 __x, _Float64 __y) throw ();
23866: # 667 "/usr/include/math.h" 2 3 4
23866: #undef _Mret_
23866: #undef _Marg_
23866: #undef __MATHCALL_NAME
23866: # 764 "/usr/include/math.h" 3 4
23866: #undef __MATHCALL_NARROW_ARGS_1
23866: #undef __MATHCALL_NARROW_ARGS_2
23866: #undef __MATHCALL_NARROW_ARGS_3
23866: #undef __MATHCALL_NARROW_NORMAL
23866: #undef __MATHCALL_NARROW_REDIR
23866: #undef __MATHCALL_NARROW
23866:
23866:
23866:
23866: extern int signgam;
23866: # 798 "/usr/include/math.h" 3 4
23866: #define __MATH_TG(TG_ARG,FUNC,ARGS) (sizeof (TG_ARG) == sizeof (float) ? FUNC ## f ARGS : FUNC ARGS)
23866: # 853 "/usr/include/math.h" 3 4
23866: enum
23866: {
23866: FP_NAN =
23866: #define FP_NAN 0
23866: 0,
23866: FP_INFINITE =
23866: #define FP_INFINITE 1
23866: 1,
23866: FP_ZERO =
23866: #define FP_ZERO 2
23866: 2,
23866: FP_SUBNORMAL =
23866: #define FP_SUBNORMAL 3
23866: 3,
23866: FP_NORMAL =
23866: #define FP_NORMAL 4
23866: 4
23866: };
23866: # 886 "/usr/include/math.h" 3 4
23866: #define fpclassify(x) __builtin_fpclassify (FP_NAN, FP_INFINITE, FP_NORMAL, FP_SUBNORMAL, FP_ZERO, x)
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define signbit(x) __builtin_signbit (x)
23866: # 913 "/usr/include/math.h" 3 4
23866: #define isfinite(x) __builtin_isfinite (x)
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define isnormal(x) __builtin_isnormal (x)
23866: # 930 "/usr/include/math.h" 3 4
23866: #define isnan(x) __builtin_isnan (x)
23866: # 948 "/usr/include/math.h" 3 4
23866: #define isinf(x) __builtin_isinf_sign (x)
23866:
23866:
23866:
23866:
23866:
23866: #define MATH_ERRNO 1
23866: #define MATH_ERREXCEPT 2
23866: # 967 "/usr/include/math.h" 3 4
23866: #define math_errhandling (MATH_ERRNO | MATH_ERREXCEPT)
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/iscanonical.h" 1 3 4
23866: # 28 "/usr/include/arm-linux-gnueabihf/bits/iscanonical.h" 3 4
23866: #define iscanonical(x) ((void) (__typeof (x)) (x), 1)
23866: # 974 "/usr/include/math.h" 2 3 4
23866: # 985 "/usr/include/math.h" 3 4
23866: extern "C++" {
23866: inline int issignaling (float __val) { return __issignalingf (__val); }
23866: inline int issignaling (double __val) { return __issignaling (__val); }
23866: inline int
23866: issignaling (long double __val)
23866: {
23866:
23866: return __issignaling (__val);
23866:
23866:
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866: }
23866:
23866:
23866:
23866: #define issubnormal(x) (fpclassify (x) == FP_SUBNORMAL)
23866: # 1016 "/usr/include/math.h" 3 4
23866: extern "C++" {
23866: # 1047 "/usr/include/math.h" 3 4
23866: template <class __T> inline bool
23866: iszero (__T __val)
23866: {
23866: return __val == 0;
23866: }
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866: #define MAXFLOAT 3.40282347e+38F
23866:
23866:
23866:
23866:
23866:
23866: #define M_E 2.7182818284590452354
23866: #define M_LOG2E 1.4426950408889634074
23866: #define M_LOG10E 0.43429448190325182765
23866: #define M_LN2 0.69314718055994530942
23866: #define M_LN10 2.30258509299404568402
23866: #define M_PI 3.14159265358979323846
23866: #define M_PI_2 1.57079632679489661923
23866: #define M_PI_4 0.78539816339744830962
23866: #define M_1_PI 0.31830988618379067154
23866: #define M_2_PI 0.63661977236758134308
23866: #define M_2_SQRTPI 1.12837916709551257390
23866: #define M_SQRT2 1.41421356237309504880
23866: #define M_SQRT1_2 0.70710678118654752440
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define M_El 2.718281828459045235360287471352662498L
23866: #define M_LOG2El 1.442695040888963407359924681001892137L
23866: #define M_LOG10El 0.434294481903251827651128918916605082L
23866: #define M_LN2l 0.693147180559945309417232121458176568L
23866: #define M_LN10l 2.302585092994045684017991454684364208L
23866: #define M_PIl 3.141592653589793238462643383279502884L
23866: #define M_PI_2l 1.570796326794896619231321691639751442L
23866: #define M_PI_4l 0.785398163397448309615660845819875721L
23866: #define M_1_PIl 0.318309886183790671537767526745028724L
23866: #define M_2_PIl 0.636619772367581343075535053490057448L
23866: #define M_2_SQRTPIl 1.128379167095512573896158903121545172L
23866: #define M_SQRT2l 1.414213562373095048801688724209698079L
23866: #define M_SQRT1_2l 0.707106781186547524400844362104849039L
23866: # 1116 "/usr/include/math.h" 3 4
23866: #define M_Ef32 __f32 (2.718281828459045235360287471352662498)
23866: #define M_LOG2Ef32 __f32 (1.442695040888963407359924681001892137)
23866: #define M_LOG10Ef32 __f32 (0.434294481903251827651128918916605082)
23866: #define M_LN2f32 __f32 (0.693147180559945309417232121458176568)
23866: #define M_LN10f32 __f32 (2.302585092994045684017991454684364208)
23866: #define M_PIf32 __f32 (3.141592653589793238462643383279502884)
23866: #define M_PI_2f32 __f32 (1.570796326794896619231321691639751442)
23866: #define M_PI_4f32 __f32 (0.785398163397448309615660845819875721)
23866: #define M_1_PIf32 __f32 (0.318309886183790671537767526745028724)
23866: #define M_2_PIf32 __f32 (0.636619772367581343075535053490057448)
23866: #define M_2_SQRTPIf32 __f32 (1.128379167095512573896158903121545172)
23866: #define M_SQRT2f32 __f32 (1.414213562373095048801688724209698079)
23866: #define M_SQRT1_2f32 __f32 (0.707106781186547524400844362104849039)
23866:
23866:
23866:
23866: #define M_Ef64 __f64 (2.718281828459045235360287471352662498)
23866: #define M_LOG2Ef64 __f64 (1.442695040888963407359924681001892137)
23866: #define M_LOG10Ef64 __f64 (0.434294481903251827651128918916605082)
23866: #define M_LN2f64 __f64 (0.693147180559945309417232121458176568)
23866: #define M_LN10f64 __f64 (2.302585092994045684017991454684364208)
23866: #define M_PIf64 __f64 (3.141592653589793238462643383279502884)
23866: #define M_PI_2f64 __f64 (1.570796326794896619231321691639751442)
23866: #define M_PI_4f64 __f64 (0.785398163397448309615660845819875721)
23866: #define M_1_PIf64 __f64 (0.318309886183790671537767526745028724)
23866: #define M_2_PIf64 __f64 (0.636619772367581343075535053490057448)
23866: #define M_2_SQRTPIf64 __f64 (1.128379167095512573896158903121545172)
23866: #define M_SQRT2f64 __f64 (1.414213562373095048801688724209698079)
23866: #define M_SQRT1_2f64 __f64 (0.707106781186547524400844362104849039)
23866: # 1164 "/usr/include/math.h" 3 4
23866: #define M_Ef32x __f32x (2.718281828459045235360287471352662498)
23866: #define M_LOG2Ef32x __f32x (1.442695040888963407359924681001892137)
23866: #define M_LOG10Ef32x __f32x (0.434294481903251827651128918916605082)
23866: #define M_LN2f32x __f32x (0.693147180559945309417232121458176568)
23866: #define M_LN10f32x __f32x (2.302585092994045684017991454684364208)
23866: #define M_PIf32x __f32x (3.141592653589793238462643383279502884)
23866: #define M_PI_2f32x __f32x (1.570796326794896619231321691639751442)
23866: #define M_PI_4f32x __f32x (0.785398163397448309615660845819875721)
23866: #define M_1_PIf32x __f32x (0.318309886183790671537767526745028724)
23866: #define M_2_PIf32x __f32x (0.636619772367581343075535053490057448)
23866: #define M_2_SQRTPIf32x __f32x (1.128379167095512573896158903121545172)
23866: #define M_SQRT2f32x __f32x (1.414213562373095048801688724209698079)
23866: #define M_SQRT1_2f32x __f32x (0.707106781186547524400844362104849039)
23866: # 1203 "/usr/include/math.h" 3 4
23866: #define __NO_MATH_INLINES 1
23866: # 1214 "/usr/include/math.h" 3 4
23866: #define isgreater(x,y) __builtin_isgreater(x, y)
23866: #define isgreaterequal(x,y) __builtin_isgreaterequal(x, y)
23866: #define isless(x,y) __builtin_isless(x, y)
23866: #define islessequal(x,y) __builtin_islessequal(x, y)
23866: #define islessgreater(x,y) __builtin_islessgreater(x, y)
23866: #define isunordered(x,y) __builtin_isunordered(x, y)
23866: # 1245 "/usr/include/math.h" 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathinline.h" 1 3 4
23866: # 1246 "/usr/include/math.h" 2 3 4
23866: # 1257 "/usr/include/math.h" 3 4
23866: #define __MATH_EVAL_FMT2(x,y) ((x) + (y) + 0.0f)
23866: # 1278 "/usr/include/math.h" 3 4
23866: extern "C++" {
23866: template<typename> struct __iseqsig_type;
23866:
23866: template<> struct __iseqsig_type<float>
23866: {
23866: static int __call (float __x, float __y) throw ()
23866: {
23866: return __iseqsigf (__x, __y);
23866: }
23866: };
23866:
23866: template<> struct __iseqsig_type<double>
23866: {
23866: static int __call (double __x, double __y) throw ()
23866: {
23866: return __iseqsig (__x, __y);
23866: }
23866: };
23866:
23866: template<> struct __iseqsig_type<long double>
23866: {
23866: static int __call (long double __x, long double __y) throw ()
23866: {
23866:
23866:
23866:
23866: return __iseqsig (__x, __y);
23866:
23866: }
23866: };
23866: # 1321 "/usr/include/math.h" 3 4
23866: template<typename _T1, typename _T2>
23866: inline int
23866: iseqsig (_T1 __x, _T2 __y) throw ()
23866: {
23866:
23866: typedef decltype (((__x) + (__y) + 0.0f)) _T3;
23866:
23866:
23866:
23866: return __iseqsig_type<_T3>::__call (__x, __y);
23866: }
23866:
23866: }
23866:
23866:
23866:
23866:
23866: }
23866: # 46 "/usr/include/c++/10/cmath" 2 3
23866: #undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS
23866:
23866:
23866:
23866: #define _GLIBCXX_CMATH 1
23866:
23866:
23866: #undef div
23866: #undef acos
23866: #undef asin
23866: #undef atan
23866: #undef atan2
23866: #undef ceil
23866: #undef cos
23866: #undef cosh
23866: #undef exp
23866: #undef fabs
23866: #undef floor
23866: #undef fmod
23866: #undef frexp
23866: #undef ldexp
23866: #undef log
23866: #undef log10
23866: #undef modf
23866: #undef pow
23866: #undef sin
23866: #undef sinh
23866: #undef sqrt
23866: #undef tan
23866: #undef tanh
23866:
23866: extern "C++"
23866: {
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: using ::acos;
23866:
23866:
23866: inline constexpr float
23866: acos(float __x)
23866: { return __builtin_acosf(__x); }
23866:
23866: inline constexpr long double
23866: acos(long double __x)
23866: { return __builtin_acosl(__x); }
23866:
23866:
23866: template<typename _Tp>
23866: inline constexpr
23866: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: acos(_Tp __x)
23866: { return __builtin_acos(__x); }
23866:
23866: using ::asin;
23866:
23866:
23866: inline constexpr float
23866: asin(float __x)
23866: { return __builtin_asinf(__x); }
23866:
23866: inline constexpr long double
23866: asin(long double __x)
23866: { return __builtin_asinl(__x); }
23866:
23866:
23866: template<typename _Tp>
23866: inline constexpr
23866: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: asin(_Tp __x)
23866: { return __builtin_asin(__x); }
23866:
23866: using ::atan;
23866:
23866:
23866: inline constexpr float
23866: atan(float __x)
23866: { return __builtin_atanf(__x); }
23866:
23866: inline constexpr long double
23866: atan(long double __x)
23866: { return __builtin_atanl(__x); }
23866:
23866:
23866: template<typename _Tp>
23866: inline constexpr
23866: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: atan(_Tp __x)
23866: { return __builtin_atan(__x); }
23866:
23866: using ::atan2;
23866:
23866:
23866: inline constexpr float
23866: atan2(float __y, float __x)
23866: { return __builtin_atan2f(__y, __x); }
23866:
23866: inline constexpr long double
23866: atan2(long double __y, long double __x)
23866: { return __builtin_atan2l(__y, __x); }
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: inline constexpr
23866: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
23866: atan2(_Tp __y, _Up __x)
23866: {
23866: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
23866: return atan2(__type(__y), __type(__x));
23866: }
23866:
23866: using ::ceil;
23866:
23866:
23866: inline constexpr float
23866: ceil(float __x)
23866: { return __builtin_ceilf(__x); }
23866:
23866: inline constexpr long double
23866: ceil(long double __x)
23866: { return __builtin_ceill(__x); }
23866:
23866:
23866: template<typename _Tp>
23866: inline constexpr
23866: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: ceil(_Tp __x)
23866: { return __builtin_ceil(__x); }
23866:
23866: using ::cos;
23866:
23866:
23866: inline constexpr float
23866: cos(float __x)
23866: { return __builtin_cosf(__x); }
23866:
23866: inline constexpr long double
23866: cos(long double __x)
23866: { return __builtin_cosl(__x); }
23866:
23866:
23866: template<typename _Tp>
23866: inline constexpr
23866: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: cos(_Tp __x)
23866: { return __builtin_cos(__x); }
23866:
23866: using ::cosh;
23866:
23866:
23866: inline constexpr float
23866: cosh(float __x)
23866: { return __builtin_coshf(__x); }
23866:
23866: inline constexpr long double
23866: cosh(long double __x)
23866: { return __builtin_coshl(__x); }
23866:
23866:
23866: template<typename _Tp>
23866: inline constexpr
23866: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: cosh(_Tp __x)
23866: { return __builtin_cosh(__x); }
23866:
23866: using ::exp;
23866:
23866:
23866: inline constexpr float
23866: exp(float __x)
23866: { return __builtin_expf(__x); }
23866:
23866: inline constexpr long double
23866: exp(long double __x)
23866: { return __builtin_expl(__x); }
23866:
23866:
23866: template<typename _Tp>
23866: inline constexpr
23866: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: exp(_Tp __x)
23866: { return __builtin_exp(__x); }
23866:
23866: using ::fabs;
23866:
23866:
23866: inline constexpr float
23866: fabs(float __x)
23866: { return __builtin_fabsf(__x); }
23866:
23866: inline constexpr long double
23866: fabs(long double __x)
23866: { return __builtin_fabsl(__x); }
23866:
23866:
23866: template<typename _Tp>
23866: inline constexpr
23866: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: fabs(_Tp __x)
23866: { return __builtin_fabs(__x); }
23866:
23866: using ::floor;
23866:
23866:
23866: inline constexpr float
23866: floor(float __x)
23866: { return __builtin_floorf(__x); }
23866:
23866: inline constexpr long double
23866: floor(long double __x)
23866: { return __builtin_floorl(__x); }
23866:
23866:
23866: template<typename _Tp>
23866: inline constexpr
23866: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: floor(_Tp __x)
23866: { return __builtin_floor(__x); }
23866:
23866: using ::fmod;
23866:
23866:
23866: inline constexpr float
23866: fmod(float __x, float __y)
23866: { return __builtin_fmodf(__x, __y); }
23866:
23866: inline constexpr long double
23866: fmod(long double __x, long double __y)
23866: { return __builtin_fmodl(__x, __y); }
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: inline constexpr
23866: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
23866: fmod(_Tp __x, _Up __y)
23866: {
23866: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
23866: return fmod(__type(__x), __type(__y));
23866: }
23866:
23866: using ::frexp;
23866:
23866:
23866: inline float
23866: frexp(float __x, int* __exp)
23866: { return __builtin_frexpf(__x, __exp); }
23866:
23866: inline long double
23866: frexp(long double __x, int* __exp)
23866: { return __builtin_frexpl(__x, __exp); }
23866:
23866:
23866: template<typename _Tp>
23866: inline constexpr
23866: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: frexp(_Tp __x, int* __exp)
23866: { return __builtin_frexp(__x, __exp); }
23866:
23866: using ::ldexp;
23866:
23866:
23866: inline constexpr float
23866: ldexp(float __x, int __exp)
23866: { return __builtin_ldexpf(__x, __exp); }
23866:
23866: inline constexpr long double
23866: ldexp(long double __x, int __exp)
23866: { return __builtin_ldexpl(__x, __exp); }
23866:
23866:
23866: template<typename _Tp>
23866: inline constexpr
23866: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: ldexp(_Tp __x, int __exp)
23866: { return __builtin_ldexp(__x, __exp); }
23866:
23866: using ::log;
23866:
23866:
23866: inline constexpr float
23866: log(float __x)
23866: { return __builtin_logf(__x); }
23866:
23866: inline constexpr long double
23866: log(long double __x)
23866: { return __builtin_logl(__x); }
23866:
23866:
23866: template<typename _Tp>
23866: inline constexpr
23866: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: log(_Tp __x)
23866: { return __builtin_log(__x); }
23866:
23866: using ::log10;
23866:
23866:
23866: inline constexpr float
23866: log10(float __x)
23866: { return __builtin_log10f(__x); }
23866:
23866: inline constexpr long double
23866: log10(long double __x)
23866: { return __builtin_log10l(__x); }
23866:
23866:
23866: template<typename _Tp>
23866: inline constexpr
23866: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: log10(_Tp __x)
23866: { return __builtin_log10(__x); }
23866:
23866: using ::modf;
23866:
23866:
23866: inline float
23866: modf(float __x, float* __iptr)
23866: { return __builtin_modff(__x, __iptr); }
23866:
23866: inline long double
23866: modf(long double __x, long double* __iptr)
23866: { return __builtin_modfl(__x, __iptr); }
23866:
23866:
23866: using ::pow;
23866:
23866:
23866: inline constexpr float
23866: pow(float __x, float __y)
23866: { return __builtin_powf(__x, __y); }
23866:
23866: inline constexpr long double
23866: pow(long double __x, long double __y)
23866: { return __builtin_powl(__x, __y); }
23866: # 412 "/usr/include/c++/10/cmath" 3
23866: template<typename _Tp, typename _Up>
23866: inline constexpr
23866: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
23866: pow(_Tp __x, _Up __y)
23866: {
23866: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
23866: return pow(__type(__x), __type(__y));
23866: }
23866:
23866: using ::sin;
23866:
23866:
23866: inline constexpr float
23866: sin(float __x)
23866: { return __builtin_sinf(__x); }
23866:
23866: inline constexpr long double
23866: sin(long double __x)
23866: { return __builtin_sinl(__x); }
23866:
23866:
23866: template<typename _Tp>
23866: inline constexpr
23866: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: sin(_Tp __x)
23866: { return __builtin_sin(__x); }
23866:
23866: using ::sinh;
23866:
23866:
23866: inline constexpr float
23866: sinh(float __x)
23866: { return __builtin_sinhf(__x); }
23866:
23866: inline constexpr long double
23866: sinh(long double __x)
23866: { return __builtin_sinhl(__x); }
23866:
23866:
23866: template<typename _Tp>
23866: inline constexpr
23866: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: sinh(_Tp __x)
23866: { return __builtin_sinh(__x); }
23866:
23866: using ::sqrt;
23866:
23866:
23866: inline constexpr float
23866: sqrt(float __x)
23866: { return __builtin_sqrtf(__x); }
23866:
23866: inline constexpr long double
23866: sqrt(long double __x)
23866: { return __builtin_sqrtl(__x); }
23866:
23866:
23866: template<typename _Tp>
23866: inline constexpr
23866: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: sqrt(_Tp __x)
23866: { return __builtin_sqrt(__x); }
23866:
23866: using ::tan;
23866:
23866:
23866: inline constexpr float
23866: tan(float __x)
23866: { return __builtin_tanf(__x); }
23866:
23866: inline constexpr long double
23866: tan(long double __x)
23866: { return __builtin_tanl(__x); }
23866:
23866:
23866: template<typename _Tp>
23866: inline constexpr
23866: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: tan(_Tp __x)
23866: { return __builtin_tan(__x); }
23866:
23866: using ::tanh;
23866:
23866:
23866: inline constexpr float
23866: tanh(float __x)
23866: { return __builtin_tanhf(__x); }
23866:
23866: inline constexpr long double
23866: tanh(long double __x)
23866: { return __builtin_tanhl(__x); }
23866:
23866:
23866: template<typename _Tp>
23866: inline constexpr
23866: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: tanh(_Tp __x)
23866: { return __builtin_tanh(__x); }
23866:
23866:
23866:
23866:
23866:
23866: #undef fpclassify
23866: #undef isfinite
23866: #undef isinf
23866: #undef isnan
23866: #undef isnormal
23866: #undef signbit
23866: #undef isgreater
23866: #undef isgreaterequal
23866: #undef isless
23866: #undef islessequal
23866: #undef islessgreater
23866: #undef isunordered
23866:
23866:
23866:
23866:
23866: constexpr int
23866: fpclassify(float __x)
23866: { return __builtin_fpclassify(0, 1, 4,
23866: 3, 2, __x); }
23866:
23866: constexpr int
23866: fpclassify(double __x)
23866: { return __builtin_fpclassify(0, 1, 4,
23866: 3, 2, __x); }
23866:
23866: constexpr int
23866: fpclassify(long double __x)
23866: { return __builtin_fpclassify(0, 1, 4,
23866: 3, 2, __x); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: int>::__type
23866: fpclassify(_Tp __x)
23866: { return __x != 0 ? 4 : 2; }
23866:
23866:
23866:
23866: constexpr bool
23866: isfinite(float __x)
23866: { return __builtin_isfinite(__x); }
23866:
23866: constexpr bool
23866: isfinite(double __x)
23866: { return __builtin_isfinite(__x); }
23866:
23866: constexpr bool
23866: isfinite(long double __x)
23866: { return __builtin_isfinite(__x); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: bool>::__type
23866: isfinite(_Tp __x)
23866: { return true; }
23866:
23866:
23866:
23866: constexpr bool
23866: isinf(float __x)
23866: { return __builtin_isinf(__x); }
23866:
23866:
23866:
23866:
23866:
23866: constexpr bool
23866: isinf(double __x)
23866: { return __builtin_isinf(__x); }
23866:
23866:
23866: constexpr bool
23866: isinf(long double __x)
23866: { return __builtin_isinf(__x); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: bool>::__type
23866: isinf(_Tp __x)
23866: { return false; }
23866:
23866:
23866:
23866: constexpr bool
23866: isnan(float __x)
23866: { return __builtin_isnan(__x); }
23866:
23866:
23866:
23866:
23866:
23866: constexpr bool
23866: isnan(double __x)
23866: { return __builtin_isnan(__x); }
23866:
23866:
23866: constexpr bool
23866: isnan(long double __x)
23866: { return __builtin_isnan(__x); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: bool>::__type
23866: isnan(_Tp __x)
23866: { return false; }
23866:
23866:
23866:
23866: constexpr bool
23866: isnormal(float __x)
23866: { return __builtin_isnormal(__x); }
23866:
23866: constexpr bool
23866: isnormal(double __x)
23866: { return __builtin_isnormal(__x); }
23866:
23866: constexpr bool
23866: isnormal(long double __x)
23866: { return __builtin_isnormal(__x); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: bool>::__type
23866: isnormal(_Tp __x)
23866: { return __x != 0 ? true : false; }
23866:
23866:
23866:
23866:
23866: constexpr bool
23866: signbit(float __x)
23866: { return __builtin_signbit(__x); }
23866:
23866: constexpr bool
23866: signbit(double __x)
23866: { return __builtin_signbit(__x); }
23866:
23866: constexpr bool
23866: signbit(long double __x)
23866: { return __builtin_signbit(__x); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: bool>::__type
23866: signbit(_Tp __x)
23866: { return __x < 0 ? true : false; }
23866:
23866:
23866:
23866: constexpr bool
23866: isgreater(float __x, float __y)
23866: { return __builtin_isgreater(__x, __y); }
23866:
23866: constexpr bool
23866: isgreater(double __x, double __y)
23866: { return __builtin_isgreater(__x, __y); }
23866:
23866: constexpr bool
23866: isgreater(long double __x, long double __y)
23866: { return __builtin_isgreater(__x, __y); }
23866:
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr typename
23866: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
23866: && __is_arithmetic<_Up>::__value), bool>::__type
23866: isgreater(_Tp __x, _Up __y)
23866: {
23866: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
23866: return __builtin_isgreater(__type(__x), __type(__y));
23866: }
23866:
23866:
23866:
23866: constexpr bool
23866: isgreaterequal(float __x, float __y)
23866: { return __builtin_isgreaterequal(__x, __y); }
23866:
23866: constexpr bool
23866: isgreaterequal(double __x, double __y)
23866: { return __builtin_isgreaterequal(__x, __y); }
23866:
23866: constexpr bool
23866: isgreaterequal(long double __x, long double __y)
23866: { return __builtin_isgreaterequal(__x, __y); }
23866:
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr typename
23866: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
23866: && __is_arithmetic<_Up>::__value), bool>::__type
23866: isgreaterequal(_Tp __x, _Up __y)
23866: {
23866: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
23866: return __builtin_isgreaterequal(__type(__x), __type(__y));
23866: }
23866:
23866:
23866:
23866: constexpr bool
23866: isless(float __x, float __y)
23866: { return __builtin_isless(__x, __y); }
23866:
23866: constexpr bool
23866: isless(double __x, double __y)
23866: { return __builtin_isless(__x, __y); }
23866:
23866: constexpr bool
23866: isless(long double __x, long double __y)
23866: { return __builtin_isless(__x, __y); }
23866:
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr typename
23866: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
23866: && __is_arithmetic<_Up>::__value), bool>::__type
23866: isless(_Tp __x, _Up __y)
23866: {
23866: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
23866: return __builtin_isless(__type(__x), __type(__y));
23866: }
23866:
23866:
23866:
23866: constexpr bool
23866: islessequal(float __x, float __y)
23866: { return __builtin_islessequal(__x, __y); }
23866:
23866: constexpr bool
23866: islessequal(double __x, double __y)
23866: { return __builtin_islessequal(__x, __y); }
23866:
23866: constexpr bool
23866: islessequal(long double __x, long double __y)
23866: { return __builtin_islessequal(__x, __y); }
23866:
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr typename
23866: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
23866: && __is_arithmetic<_Up>::__value), bool>::__type
23866: islessequal(_Tp __x, _Up __y)
23866: {
23866: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
23866: return __builtin_islessequal(__type(__x), __type(__y));
23866: }
23866:
23866:
23866:
23866: constexpr bool
23866: islessgreater(float __x, float __y)
23866: { return __builtin_islessgreater(__x, __y); }
23866:
23866: constexpr bool
23866: islessgreater(double __x, double __y)
23866: { return __builtin_islessgreater(__x, __y); }
23866:
23866: constexpr bool
23866: islessgreater(long double __x, long double __y)
23866: { return __builtin_islessgreater(__x, __y); }
23866:
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr typename
23866: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
23866: && __is_arithmetic<_Up>::__value), bool>::__type
23866: islessgreater(_Tp __x, _Up __y)
23866: {
23866: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
23866: return __builtin_islessgreater(__type(__x), __type(__y));
23866: }
23866:
23866:
23866:
23866: constexpr bool
23866: isunordered(float __x, float __y)
23866: { return __builtin_isunordered(__x, __y); }
23866:
23866: constexpr bool
23866: isunordered(double __x, double __y)
23866: { return __builtin_isunordered(__x, __y); }
23866:
23866: constexpr bool
23866: isunordered(long double __x, long double __y)
23866: { return __builtin_isunordered(__x, __y); }
23866:
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr typename
23866: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
23866: && __is_arithmetic<_Up>::__value), bool>::__type
23866: isunordered(_Tp __x, _Up __y)
23866: {
23866: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
23866: return __builtin_isunordered(__type(__x), __type(__y));
23866: }
23866: # 956 "/usr/include/c++/10/cmath" 3
23866: #undef acosh
23866: #undef acoshf
23866: #undef acoshl
23866: #undef asinh
23866: #undef asinhf
23866: #undef asinhl
23866: #undef atanh
23866: #undef atanhf
23866: #undef atanhl
23866: #undef cbrt
23866: #undef cbrtf
23866: #undef cbrtl
23866: #undef copysign
23866: #undef copysignf
23866: #undef copysignl
23866: #undef erf
23866: #undef erff
23866: #undef erfl
23866: #undef erfc
23866: #undef erfcf
23866: #undef erfcl
23866: #undef exp2
23866: #undef exp2f
23866: #undef exp2l
23866: #undef expm1
23866: #undef expm1f
23866: #undef expm1l
23866: #undef fdim
23866: #undef fdimf
23866: #undef fdiml
23866: #undef fma
23866: #undef fmaf
23866: #undef fmal
23866: #undef fmax
23866: #undef fmaxf
23866: #undef fmaxl
23866: #undef fmin
23866: #undef fminf
23866: #undef fminl
23866: #undef hypot
23866: #undef hypotf
23866: #undef hypotl
23866: #undef ilogb
23866: #undef ilogbf
23866: #undef ilogbl
23866: #undef lgamma
23866: #undef lgammaf
23866: #undef lgammal
23866:
23866: #undef llrint
23866: #undef llrintf
23866: #undef llrintl
23866: #undef llround
23866: #undef llroundf
23866: #undef llroundl
23866:
23866: #undef log1p
23866: #undef log1pf
23866: #undef log1pl
23866: #undef log2
23866: #undef log2f
23866: #undef log2l
23866: #undef logb
23866: #undef logbf
23866: #undef logbl
23866: #undef lrint
23866: #undef lrintf
23866: #undef lrintl
23866: #undef lround
23866: #undef lroundf
23866: #undef lroundl
23866: #undef nan
23866: #undef nanf
23866: #undef nanl
23866: #undef nearbyint
23866: #undef nearbyintf
23866: #undef nearbyintl
23866: #undef nextafter
23866: #undef nextafterf
23866: #undef nextafterl
23866: #undef nexttoward
23866: #undef nexttowardf
23866: #undef nexttowardl
23866: #undef remainder
23866: #undef remainderf
23866: #undef remainderl
23866: #undef remquo
23866: #undef remquof
23866: #undef remquol
23866: #undef rint
23866: #undef rintf
23866: #undef rintl
23866: #undef round
23866: #undef roundf
23866: #undef roundl
23866: #undef scalbln
23866: #undef scalblnf
23866: #undef scalblnl
23866: #undef scalbn
23866: #undef scalbnf
23866: #undef scalbnl
23866: #undef tgamma
23866: #undef tgammaf
23866: #undef tgammal
23866: #undef trunc
23866: #undef truncf
23866: #undef truncl
23866:
23866:
23866: using ::double_t;
23866: using ::float_t;
23866:
23866:
23866: using ::acosh;
23866: using ::acoshf;
23866: using ::acoshl;
23866:
23866: using ::asinh;
23866: using ::asinhf;
23866: using ::asinhl;
23866:
23866: using ::atanh;
23866: using ::atanhf;
23866: using ::atanhl;
23866:
23866: using ::cbrt;
23866: using ::cbrtf;
23866: using ::cbrtl;
23866:
23866: using ::copysign;
23866: using ::copysignf;
23866: using ::copysignl;
23866:
23866: using ::erf;
23866: using ::erff;
23866: using ::erfl;
23866:
23866: using ::erfc;
23866: using ::erfcf;
23866: using ::erfcl;
23866:
23866: using ::exp2;
23866: using ::exp2f;
23866: using ::exp2l;
23866:
23866: using ::expm1;
23866: using ::expm1f;
23866: using ::expm1l;
23866:
23866: using ::fdim;
23866: using ::fdimf;
23866: using ::fdiml;
23866:
23866: using ::fma;
23866: using ::fmaf;
23866: using ::fmal;
23866:
23866: using ::fmax;
23866: using ::fmaxf;
23866: using ::fmaxl;
23866:
23866: using ::fmin;
23866: using ::fminf;
23866: using ::fminl;
23866:
23866: using ::hypot;
23866: using ::hypotf;
23866: using ::hypotl;
23866:
23866: using ::ilogb;
23866: using ::ilogbf;
23866: using ::ilogbl;
23866:
23866: using ::lgamma;
23866: using ::lgammaf;
23866: using ::lgammal;
23866:
23866:
23866: using ::llrint;
23866: using ::llrintf;
23866: using ::llrintl;
23866:
23866: using ::llround;
23866: using ::llroundf;
23866: using ::llroundl;
23866:
23866:
23866: using ::log1p;
23866: using ::log1pf;
23866: using ::log1pl;
23866:
23866: using ::log2;
23866: using ::log2f;
23866: using ::log2l;
23866:
23866: using ::logb;
23866: using ::logbf;
23866: using ::logbl;
23866:
23866: using ::lrint;
23866: using ::lrintf;
23866: using ::lrintl;
23866:
23866: using ::lround;
23866: using ::lroundf;
23866: using ::lroundl;
23866:
23866: using ::nan;
23866: using ::nanf;
23866: using ::nanl;
23866:
23866: using ::nearbyint;
23866: using ::nearbyintf;
23866: using ::nearbyintl;
23866:
23866: using ::nextafter;
23866: using ::nextafterf;
23866: using ::nextafterl;
23866:
23866: using ::nexttoward;
23866: using ::nexttowardf;
23866: using ::nexttowardl;
23866:
23866: using ::remainder;
23866: using ::remainderf;
23866: using ::remainderl;
23866:
23866: using ::remquo;
23866: using ::remquof;
23866: using ::remquol;
23866:
23866: using ::rint;
23866: using ::rintf;
23866: using ::rintl;
23866:
23866: using ::round;
23866: using ::roundf;
23866: using ::roundl;
23866:
23866: using ::scalbln;
23866: using ::scalblnf;
23866: using ::scalblnl;
23866:
23866: using ::scalbn;
23866: using ::scalbnf;
23866: using ::scalbnl;
23866:
23866: using ::tgamma;
23866: using ::tgammaf;
23866: using ::tgammal;
23866:
23866: using ::trunc;
23866: using ::truncf;
23866: using ::truncl;
23866:
23866:
23866:
23866: constexpr float
23866: acosh(float __x)
23866: { return __builtin_acoshf(__x); }
23866:
23866: constexpr long double
23866: acosh(long double __x)
23866: { return __builtin_acoshl(__x); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: acosh(_Tp __x)
23866: { return __builtin_acosh(__x); }
23866:
23866:
23866:
23866: constexpr float
23866: asinh(float __x)
23866: { return __builtin_asinhf(__x); }
23866:
23866: constexpr long double
23866: asinh(long double __x)
23866: { return __builtin_asinhl(__x); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: asinh(_Tp __x)
23866: { return __builtin_asinh(__x); }
23866:
23866:
23866:
23866: constexpr float
23866: atanh(float __x)
23866: { return __builtin_atanhf(__x); }
23866:
23866: constexpr long double
23866: atanh(long double __x)
23866: { return __builtin_atanhl(__x); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: atanh(_Tp __x)
23866: { return __builtin_atanh(__x); }
23866:
23866:
23866:
23866: constexpr float
23866: cbrt(float __x)
23866: { return __builtin_cbrtf(__x); }
23866:
23866: constexpr long double
23866: cbrt(long double __x)
23866: { return __builtin_cbrtl(__x); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: cbrt(_Tp __x)
23866: { return __builtin_cbrt(__x); }
23866:
23866:
23866:
23866: constexpr float
23866: copysign(float __x, float __y)
23866: { return __builtin_copysignf(__x, __y); }
23866:
23866: constexpr long double
23866: copysign(long double __x, long double __y)
23866: { return __builtin_copysignl(__x, __y); }
23866:
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
23866: copysign(_Tp __x, _Up __y)
23866: {
23866: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
23866: return copysign(__type(__x), __type(__y));
23866: }
23866:
23866:
23866:
23866: constexpr float
23866: erf(float __x)
23866: { return __builtin_erff(__x); }
23866:
23866: constexpr long double
23866: erf(long double __x)
23866: { return __builtin_erfl(__x); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: erf(_Tp __x)
23866: { return __builtin_erf(__x); }
23866:
23866:
23866:
23866: constexpr float
23866: erfc(float __x)
23866: { return __builtin_erfcf(__x); }
23866:
23866: constexpr long double
23866: erfc(long double __x)
23866: { return __builtin_erfcl(__x); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: erfc(_Tp __x)
23866: { return __builtin_erfc(__x); }
23866:
23866:
23866:
23866: constexpr float
23866: exp2(float __x)
23866: { return __builtin_exp2f(__x); }
23866:
23866: constexpr long double
23866: exp2(long double __x)
23866: { return __builtin_exp2l(__x); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: exp2(_Tp __x)
23866: { return __builtin_exp2(__x); }
23866:
23866:
23866:
23866: constexpr float
23866: expm1(float __x)
23866: { return __builtin_expm1f(__x); }
23866:
23866: constexpr long double
23866: expm1(long double __x)
23866: { return __builtin_expm1l(__x); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: expm1(_Tp __x)
23866: { return __builtin_expm1(__x); }
23866:
23866:
23866:
23866: constexpr float
23866: fdim(float __x, float __y)
23866: { return __builtin_fdimf(__x, __y); }
23866:
23866: constexpr long double
23866: fdim(long double __x, long double __y)
23866: { return __builtin_fdiml(__x, __y); }
23866:
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
23866: fdim(_Tp __x, _Up __y)
23866: {
23866: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
23866: return fdim(__type(__x), __type(__y));
23866: }
23866:
23866:
23866:
23866: constexpr float
23866: fma(float __x, float __y, float __z)
23866: { return __builtin_fmaf(__x, __y, __z); }
23866:
23866: constexpr long double
23866: fma(long double __x, long double __y, long double __z)
23866: { return __builtin_fmal(__x, __y, __z); }
23866:
23866:
23866:
23866: template<typename _Tp, typename _Up, typename _Vp>
23866: constexpr typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type
23866: fma(_Tp __x, _Up __y, _Vp __z)
23866: {
23866: typedef typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type __type;
23866: return fma(__type(__x), __type(__y), __type(__z));
23866: }
23866:
23866:
23866:
23866: constexpr float
23866: fmax(float __x, float __y)
23866: { return __builtin_fmaxf(__x, __y); }
23866:
23866: constexpr long double
23866: fmax(long double __x, long double __y)
23866: { return __builtin_fmaxl(__x, __y); }
23866:
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
23866: fmax(_Tp __x, _Up __y)
23866: {
23866: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
23866: return fmax(__type(__x), __type(__y));
23866: }
23866:
23866:
23866:
23866: constexpr float
23866: fmin(float __x, float __y)
23866: { return __builtin_fminf(__x, __y); }
23866:
23866: constexpr long double
23866: fmin(long double __x, long double __y)
23866: { return __builtin_fminl(__x, __y); }
23866:
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
23866: fmin(_Tp __x, _Up __y)
23866: {
23866: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
23866: return fmin(__type(__x), __type(__y));
23866: }
23866:
23866:
23866:
23866: constexpr float
23866: hypot(float __x, float __y)
23866: { return __builtin_hypotf(__x, __y); }
23866:
23866: constexpr long double
23866: hypot(long double __x, long double __y)
23866: { return __builtin_hypotl(__x, __y); }
23866:
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
23866: hypot(_Tp __x, _Up __y)
23866: {
23866: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
23866: return hypot(__type(__x), __type(__y));
23866: }
23866:
23866:
23866:
23866: constexpr int
23866: ilogb(float __x)
23866: { return __builtin_ilogbf(__x); }
23866:
23866: constexpr int
23866: ilogb(long double __x)
23866: { return __builtin_ilogbl(__x); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr
23866: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: int>::__type
23866: ilogb(_Tp __x)
23866: { return __builtin_ilogb(__x); }
23866:
23866:
23866:
23866: constexpr float
23866: lgamma(float __x)
23866: { return __builtin_lgammaf(__x); }
23866:
23866: constexpr long double
23866: lgamma(long double __x)
23866: { return __builtin_lgammal(__x); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: lgamma(_Tp __x)
23866: { return __builtin_lgamma(__x); }
23866:
23866:
23866:
23866: constexpr long long
23866: llrint(float __x)
23866: { return __builtin_llrintf(__x); }
23866:
23866: constexpr long long
23866: llrint(long double __x)
23866: { return __builtin_llrintl(__x); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: long long>::__type
23866: llrint(_Tp __x)
23866: { return __builtin_llrint(__x); }
23866:
23866:
23866:
23866: constexpr long long
23866: llround(float __x)
23866: { return __builtin_llroundf(__x); }
23866:
23866: constexpr long long
23866: llround(long double __x)
23866: { return __builtin_llroundl(__x); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: long long>::__type
23866: llround(_Tp __x)
23866: { return __builtin_llround(__x); }
23866:
23866:
23866:
23866: constexpr float
23866: log1p(float __x)
23866: { return __builtin_log1pf(__x); }
23866:
23866: constexpr long double
23866: log1p(long double __x)
23866: { return __builtin_log1pl(__x); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: log1p(_Tp __x)
23866: { return __builtin_log1p(__x); }
23866:
23866:
23866:
23866:
23866: constexpr float
23866: log2(float __x)
23866: { return __builtin_log2f(__x); }
23866:
23866: constexpr long double
23866: log2(long double __x)
23866: { return __builtin_log2l(__x); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: log2(_Tp __x)
23866: { return __builtin_log2(__x); }
23866:
23866:
23866:
23866: constexpr float
23866: logb(float __x)
23866: { return __builtin_logbf(__x); }
23866:
23866: constexpr long double
23866: logb(long double __x)
23866: { return __builtin_logbl(__x); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: logb(_Tp __x)
23866: { return __builtin_logb(__x); }
23866:
23866:
23866:
23866: constexpr long
23866: lrint(float __x)
23866: { return __builtin_lrintf(__x); }
23866:
23866: constexpr long
23866: lrint(long double __x)
23866: { return __builtin_lrintl(__x); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: long>::__type
23866: lrint(_Tp __x)
23866: { return __builtin_lrint(__x); }
23866:
23866:
23866:
23866: constexpr long
23866: lround(float __x)
23866: { return __builtin_lroundf(__x); }
23866:
23866: constexpr long
23866: lround(long double __x)
23866: { return __builtin_lroundl(__x); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: long>::__type
23866: lround(_Tp __x)
23866: { return __builtin_lround(__x); }
23866:
23866:
23866:
23866: constexpr float
23866: nearbyint(float __x)
23866: { return __builtin_nearbyintf(__x); }
23866:
23866: constexpr long double
23866: nearbyint(long double __x)
23866: { return __builtin_nearbyintl(__x); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: nearbyint(_Tp __x)
23866: { return __builtin_nearbyint(__x); }
23866:
23866:
23866:
23866: constexpr float
23866: nextafter(float __x, float __y)
23866: { return __builtin_nextafterf(__x, __y); }
23866:
23866: constexpr long double
23866: nextafter(long double __x, long double __y)
23866: { return __builtin_nextafterl(__x, __y); }
23866:
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
23866: nextafter(_Tp __x, _Up __y)
23866: {
23866: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
23866: return nextafter(__type(__x), __type(__y));
23866: }
23866:
23866:
23866:
23866: constexpr float
23866: nexttoward(float __x, long double __y)
23866: { return __builtin_nexttowardf(__x, __y); }
23866:
23866: constexpr long double
23866: nexttoward(long double __x, long double __y)
23866: { return __builtin_nexttowardl(__x, __y); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: nexttoward(_Tp __x, long double __y)
23866: { return __builtin_nexttoward(__x, __y); }
23866:
23866:
23866:
23866: constexpr float
23866: remainder(float __x, float __y)
23866: { return __builtin_remainderf(__x, __y); }
23866:
23866: constexpr long double
23866: remainder(long double __x, long double __y)
23866: { return __builtin_remainderl(__x, __y); }
23866:
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
23866: remainder(_Tp __x, _Up __y)
23866: {
23866: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
23866: return remainder(__type(__x), __type(__y));
23866: }
23866:
23866:
23866:
23866: inline float
23866: remquo(float __x, float __y, int* __pquo)
23866: { return __builtin_remquof(__x, __y, __pquo); }
23866:
23866: inline long double
23866: remquo(long double __x, long double __y, int* __pquo)
23866: { return __builtin_remquol(__x, __y, __pquo); }
23866:
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
23866: remquo(_Tp __x, _Up __y, int* __pquo)
23866: {
23866: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
23866: return remquo(__type(__x), __type(__y), __pquo);
23866: }
23866:
23866:
23866:
23866: constexpr float
23866: rint(float __x)
23866: { return __builtin_rintf(__x); }
23866:
23866: constexpr long double
23866: rint(long double __x)
23866: { return __builtin_rintl(__x); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: rint(_Tp __x)
23866: { return __builtin_rint(__x); }
23866:
23866:
23866:
23866: constexpr float
23866: round(float __x)
23866: { return __builtin_roundf(__x); }
23866:
23866: constexpr long double
23866: round(long double __x)
23866: { return __builtin_roundl(__x); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: round(_Tp __x)
23866: { return __builtin_round(__x); }
23866:
23866:
23866:
23866: constexpr float
23866: scalbln(float __x, long __ex)
23866: { return __builtin_scalblnf(__x, __ex); }
23866:
23866: constexpr long double
23866: scalbln(long double __x, long __ex)
23866: { return __builtin_scalblnl(__x, __ex); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: scalbln(_Tp __x, long __ex)
23866: { return __builtin_scalbln(__x, __ex); }
23866:
23866:
23866:
23866: constexpr float
23866: scalbn(float __x, int __ex)
23866: { return __builtin_scalbnf(__x, __ex); }
23866:
23866: constexpr long double
23866: scalbn(long double __x, int __ex)
23866: { return __builtin_scalbnl(__x, __ex); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: scalbn(_Tp __x, int __ex)
23866: { return __builtin_scalbn(__x, __ex); }
23866:
23866:
23866:
23866: constexpr float
23866: tgamma(float __x)
23866: { return __builtin_tgammaf(__x); }
23866:
23866: constexpr long double
23866: tgamma(long double __x)
23866: { return __builtin_tgammal(__x); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: tgamma(_Tp __x)
23866: { return __builtin_tgamma(__x); }
23866:
23866:
23866:
23866: constexpr float
23866: trunc(float __x)
23866: { return __builtin_truncf(__x); }
23866:
23866: constexpr long double
23866: trunc(long double __x)
23866: { return __builtin_truncl(__x); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
23866: double>::__type
23866: trunc(_Tp __x)
23866: { return __builtin_trunc(__x); }
23866: # 1850 "/usr/include/c++/10/cmath" 3
23866: #define __cpp_lib_hypot 201603
23866:
23866: template<typename _Tp>
23866: inline _Tp
23866: __hypot3(_Tp __x, _Tp __y, _Tp __z)
23866: {
23866: __x = std::abs(__x);
23866: __y = std::abs(__y);
23866: __z = std::abs(__z);
23866: if (_Tp __a = __x < __y ? __y < __z ? __z : __y : __x < __z ? __z : __x)
23866: return __a * std::sqrt((__x / __a) * (__x / __a)
23866: + (__y / __a) * (__y / __a)
23866: + (__z / __a) * (__z / __a));
23866: else
23866: return {};
23866: }
23866:
23866: inline float
23866: hypot(float __x, float __y, float __z)
23866: { return std::__hypot3<float>(__x, __y, __z); }
23866:
23866: inline double
23866: hypot(double __x, double __y, double __z)
23866: { return std::__hypot3<double>(__x, __y, __z); }
23866:
23866: inline long double
23866: hypot(long double __x, long double __y, long double __z)
23866: { return std::__hypot3<long double>(__x, __y, __z); }
23866:
23866: template<typename _Tp, typename _Up, typename _Vp>
23866: typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type
23866: hypot(_Tp __x, _Up __y, _Vp __z)
23866: {
23866: using __type = typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type;
23866: return std::__hypot3<__type>(__x, __y, __z);
23866: }
23866: # 1923 "/usr/include/c++/10/cmath" 3
23866:
23866: }
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/specfun.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/specfun.h" 3
23866: #define _GLIBCXX_BITS_SPECFUN_H 1
23866:
23866: #pragma GCC visibility push(default)
23866:
23866:
23866:
23866: #define __STDCPP_MATH_SPEC_FUNCS__ 201003L
23866:
23866: #define __cpp_lib_math_special_functions 201603L
23866: # 49 "/usr/include/c++/10/bits/specfun.h" 3
23866: # 1 "/usr/include/c++/10/tr1/gamma.tcc" 1 3
23866: # 47 "/usr/include/c++/10/tr1/gamma.tcc" 3
23866: #define _GLIBCXX_TR1_GAMMA_TCC 1
23866:
23866: # 1 "/usr/include/c++/10/tr1/special_function_util.h" 1 3
23866: # 37 "/usr/include/c++/10/tr1/special_function_util.h" 3
23866: #define _GLIBCXX_TR1_SPECIAL_FUNCTION_UTIL_H 1
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 50 "/usr/include/c++/10/tr1/special_function_util.h" 3
23866: namespace __detail
23866: {
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct __floating_point_constant
23866: {
23866: static const _Tp __value;
23866: };
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct __numeric_constants
23866: {
23866:
23866: static _Tp __pi() throw()
23866: { return static_cast<_Tp>(3.1415926535897932384626433832795029L); }
23866:
23866: static _Tp __pi_2() throw()
23866: { return static_cast<_Tp>(1.5707963267948966192313216916397514L); }
23866:
23866: static _Tp __pi_3() throw()
23866: { return static_cast<_Tp>(1.0471975511965977461542144610931676L); }
23866:
23866: static _Tp __pi_4() throw()
23866: { return static_cast<_Tp>(0.7853981633974483096156608458198757L); }
23866:
23866: static _Tp __1_pi() throw()
23866: { return static_cast<_Tp>(0.3183098861837906715377675267450287L); }
23866:
23866: static _Tp __2_sqrtpi() throw()
23866: { return static_cast<_Tp>(1.1283791670955125738961589031215452L); }
23866:
23866: static _Tp __sqrt2() throw()
23866: { return static_cast<_Tp>(1.4142135623730950488016887242096981L); }
23866:
23866: static _Tp __sqrt3() throw()
23866: { return static_cast<_Tp>(1.7320508075688772935274463415058723L); }
23866:
23866: static _Tp __sqrtpio2() throw()
23866: { return static_cast<_Tp>(1.2533141373155002512078826424055226L); }
23866:
23866: static _Tp __sqrt1_2() throw()
23866: { return static_cast<_Tp>(0.7071067811865475244008443621048490L); }
23866:
23866: static _Tp __lnpi() throw()
23866: { return static_cast<_Tp>(1.1447298858494001741434273513530587L); }
23866:
23866: static _Tp __gamma_e() throw()
23866: { return static_cast<_Tp>(0.5772156649015328606065120900824024L); }
23866:
23866: static _Tp __euler() throw()
23866: { return static_cast<_Tp>(2.7182818284590452353602874713526625L); }
23866: };
23866: # 114 "/usr/include/c++/10/tr1/special_function_util.h" 3
23866: template<typename _Tp>
23866: inline bool __isnan(_Tp __x)
23866: { return std::isnan(__x); }
23866: # 133 "/usr/include/c++/10/tr1/special_function_util.h" 3
23866: }
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 50 "/usr/include/c++/10/tr1/gamma.tcc" 2 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: #define _GLIBCXX_MATH_NS ::std
23866: # 65 "/usr/include/c++/10/tr1/gamma.tcc" 3
23866: namespace __detail
23866: {
23866: # 76 "/usr/include/c++/10/tr1/gamma.tcc" 3
23866: template <typename _Tp>
23866: _Tp
23866: __bernoulli_series(unsigned int __n)
23866: {
23866:
23866: static const _Tp __num[28] = {
23866: _Tp(1UL), -_Tp(1UL) / _Tp(2UL),
23866: _Tp(1UL) / _Tp(6UL), _Tp(0UL),
23866: -_Tp(1UL) / _Tp(30UL), _Tp(0UL),
23866: _Tp(1UL) / _Tp(42UL), _Tp(0UL),
23866: -_Tp(1UL) / _Tp(30UL), _Tp(0UL),
23866: _Tp(5UL) / _Tp(66UL), _Tp(0UL),
23866: -_Tp(691UL) / _Tp(2730UL), _Tp(0UL),
23866: _Tp(7UL) / _Tp(6UL), _Tp(0UL),
23866: -_Tp(3617UL) / _Tp(510UL), _Tp(0UL),
23866: _Tp(43867UL) / _Tp(798UL), _Tp(0UL),
23866: -_Tp(174611) / _Tp(330UL), _Tp(0UL),
23866: _Tp(854513UL) / _Tp(138UL), _Tp(0UL),
23866: -_Tp(236364091UL) / _Tp(2730UL), _Tp(0UL),
23866: _Tp(8553103UL) / _Tp(6UL), _Tp(0UL)
23866: };
23866:
23866: if (__n == 0)
23866: return _Tp(1);
23866:
23866: if (__n == 1)
23866: return -_Tp(1) / _Tp(2);
23866:
23866:
23866: if (__n % 2 == 1)
23866: return _Tp(0);
23866:
23866:
23866: if (__n < 28)
23866: return __num[__n];
23866:
23866:
23866: _Tp __fact = _Tp(1);
23866: if ((__n / 2) % 2 == 0)
23866: __fact *= _Tp(-1);
23866: for (unsigned int __k = 1; __k <= __n; ++__k)
23866: __fact *= __k / (_Tp(2) * __numeric_constants<_Tp>::__pi());
23866: __fact *= _Tp(2);
23866:
23866: _Tp __sum = _Tp(0);
23866: for (unsigned int __i = 1; __i < 1000; ++__i)
23866: {
23866: _Tp __term = std::pow(_Tp(__i), -_Tp(__n));
23866: if (__term < std::numeric_limits<_Tp>::epsilon())
23866: break;
23866: __sum += __term;
23866: }
23866:
23866: return __fact * __sum;
23866: }
23866: # 139 "/usr/include/c++/10/tr1/gamma.tcc" 3
23866: template<typename _Tp>
23866: inline _Tp
23866: __bernoulli(int __n)
23866: { return __bernoulli_series<_Tp>(__n); }
23866: # 153 "/usr/include/c++/10/tr1/gamma.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __log_gamma_bernoulli(_Tp __x)
23866: {
23866: _Tp __lg = (__x - _Tp(0.5L)) * std::log(__x) - __x
23866: + _Tp(0.5L) * std::log(_Tp(2)
23866: * __numeric_constants<_Tp>::__pi());
23866:
23866: const _Tp __xx = __x * __x;
23866: _Tp __help = _Tp(1) / __x;
23866: for ( unsigned int __i = 1; __i < 20; ++__i )
23866: {
23866: const _Tp __2i = _Tp(2 * __i);
23866: __help /= __2i * (__2i - _Tp(1)) * __xx;
23866: __lg += __bernoulli<_Tp>(2 * __i) * __help;
23866: }
23866:
23866: return __lg;
23866: }
23866: # 181 "/usr/include/c++/10/tr1/gamma.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __log_gamma_lanczos(_Tp __x)
23866: {
23866: const _Tp __xm1 = __x - _Tp(1);
23866:
23866: static const _Tp __lanczos_cheb_7[9] = {
23866: _Tp( 0.99999999999980993227684700473478L),
23866: _Tp( 676.520368121885098567009190444019L),
23866: _Tp(-1259.13921672240287047156078755283L),
23866: _Tp( 771.3234287776530788486528258894L),
23866: _Tp(-176.61502916214059906584551354L),
23866: _Tp( 12.507343278686904814458936853L),
23866: _Tp(-0.13857109526572011689554707L),
23866: _Tp( 9.984369578019570859563e-6L),
23866: _Tp( 1.50563273514931155834e-7L)
23866: };
23866:
23866: static const _Tp __LOGROOT2PI
23866: = _Tp(0.9189385332046727417803297364056176L);
23866:
23866: _Tp __sum = __lanczos_cheb_7[0];
23866: for(unsigned int __k = 1; __k < 9; ++__k)
23866: __sum += __lanczos_cheb_7[__k] / (__xm1 + __k);
23866:
23866: const _Tp __term1 = (__xm1 + _Tp(0.5L))
23866: * std::log((__xm1 + _Tp(7.5L))
23866: / __numeric_constants<_Tp>::__euler());
23866: const _Tp __term2 = __LOGROOT2PI + std::log(__sum);
23866: const _Tp __result = __term1 + (__term2 - _Tp(7));
23866:
23866: return __result;
23866: }
23866: # 225 "/usr/include/c++/10/tr1/gamma.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __log_gamma(_Tp __x)
23866: {
23866: if (__x > _Tp(0.5L))
23866: return __log_gamma_lanczos(__x);
23866: else
23866: {
23866: const _Tp __sin_fact
23866: = std::abs(std::sin(__numeric_constants<_Tp>::__pi() * __x));
23866: if (__sin_fact == _Tp(0))
23866: std::__throw_domain_error(("Argument is nonpositive integer " "in __log_gamma")
23866: );
23866: return __numeric_constants<_Tp>::__lnpi()
23866: - std::log(__sin_fact)
23866: - __log_gamma_lanczos(_Tp(1) - __x);
23866: }
23866: }
23866: # 252 "/usr/include/c++/10/tr1/gamma.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __log_gamma_sign(_Tp __x)
23866: {
23866: if (__x > _Tp(0))
23866: return _Tp(1);
23866: else
23866: {
23866: const _Tp __sin_fact
23866: = std::sin(__numeric_constants<_Tp>::__pi() * __x);
23866: if (__sin_fact > _Tp(0))
23866: return (1);
23866: else if (__sin_fact < _Tp(0))
23866: return -_Tp(1);
23866: else
23866: return _Tp(0);
23866: }
23866: }
23866: # 283 "/usr/include/c++/10/tr1/gamma.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __log_bincoef(unsigned int __n, unsigned int __k)
23866: {
23866:
23866: static const _Tp __max_bincoeff
23866: = std::numeric_limits<_Tp>::max_exponent10
23866: * std::log(_Tp(10)) - _Tp(1);
23866:
23866: _Tp __coeff = ::std::lgamma(_Tp(1 + __n))
23866: - ::std::lgamma(_Tp(1 + __k))
23866: - ::std::lgamma(_Tp(1 + __n - __k));
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 314 "/usr/include/c++/10/tr1/gamma.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __bincoef(unsigned int __n, unsigned int __k)
23866: {
23866:
23866: static const _Tp __max_bincoeff
23866: = std::numeric_limits<_Tp>::max_exponent10
23866: * std::log(_Tp(10)) - _Tp(1);
23866:
23866: const _Tp __log_coeff = __log_bincoef<_Tp>(__n, __k);
23866: if (__log_coeff > __max_bincoeff)
23866: return std::numeric_limits<_Tp>::quiet_NaN();
23866: else
23866: return std::exp(__log_coeff);
23866: }
23866: # 337 "/usr/include/c++/10/tr1/gamma.tcc" 3
23866: template<typename _Tp>
23866: inline _Tp
23866: __gamma(_Tp __x)
23866: { return std::exp(__log_gamma(__x)); }
23866: # 356 "/usr/include/c++/10/tr1/gamma.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __psi_series(_Tp __x)
23866: {
23866: _Tp __sum = -__numeric_constants<_Tp>::__gamma_e() - _Tp(1) / __x;
23866: const unsigned int __max_iter = 100000;
23866: for (unsigned int __k = 1; __k < __max_iter; ++__k)
23866: {
23866: const _Tp __term = __x / (__k * (__k + __x));
23866: __sum += __term;
23866: if (std::abs(__term / __sum) < std::numeric_limits<_Tp>::epsilon())
23866: break;
23866: }
23866: return __sum;
23866: }
23866: # 386 "/usr/include/c++/10/tr1/gamma.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __psi_asymp(_Tp __x)
23866: {
23866: _Tp __sum = std::log(__x) - _Tp(0.5L) / __x;
23866: const _Tp __xx = __x * __x;
23866: _Tp __xp = __xx;
23866: const unsigned int __max_iter = 100;
23866: for (unsigned int __k = 1; __k < __max_iter; ++__k)
23866: {
23866: const _Tp __term = __bernoulli<_Tp>(2 * __k) / (2 * __k * __xp);
23866: __sum -= __term;
23866: if (std::abs(__term / __sum) < std::numeric_limits<_Tp>::epsilon())
23866: break;
23866: __xp *= __xx;
23866: }
23866: return __sum;
23866: }
23866: # 417 "/usr/include/c++/10/tr1/gamma.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __psi(_Tp __x)
23866: {
23866: const int __n = static_cast<int>(__x + 0.5L);
23866: const _Tp __eps = _Tp(4) * std::numeric_limits<_Tp>::epsilon();
23866: if (__n <= 0 && std::abs(__x - _Tp(__n)) < __eps)
23866: return std::numeric_limits<_Tp>::quiet_NaN();
23866: else if (__x < _Tp(0))
23866: {
23866: const _Tp __pi = __numeric_constants<_Tp>::__pi();
23866: return __psi(_Tp(1) - __x)
23866: - __pi * std::cos(__pi * __x) / std::sin(__pi * __x);
23866: }
23866: else if (__x > _Tp(100))
23866: return __psi_asymp(__x);
23866: else
23866: return __psi_series(__x);
23866: }
23866: # 446 "/usr/include/c++/10/tr1/gamma.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __psi(unsigned int __n, _Tp __x)
23866: {
23866: if (__x <= _Tp(0))
23866: std::__throw_domain_error(("Argument out of range " "in __psi")
23866: );
23866: else if (__n == 0)
23866: return __psi(__x);
23866: else
23866: {
23866: const _Tp __hzeta = __hurwitz_zeta(_Tp(__n + 1), __x);
23866:
23866: const _Tp __ln_nfact = ::std::lgamma(_Tp(__n + 1));
23866:
23866:
23866:
23866: _Tp __result = std::exp(__ln_nfact) * __hzeta;
23866: if (__n % 2 == 1)
23866: __result = -__result;
23866: return __result;
23866: }
23866: }
23866: }
23866: #undef _GLIBCXX_MATH_NS
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 50 "/usr/include/c++/10/bits/specfun.h" 2 3
23866: # 1 "/usr/include/c++/10/tr1/bessel_function.tcc" 1 3
23866: # 51 "/usr/include/c++/10/tr1/bessel_function.tcc" 3
23866: #define _GLIBCXX_TR1_BESSEL_FUNCTION_TCC 1
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: #define _GLIBCXX_MATH_NS ::std
23866: # 71 "/usr/include/c++/10/tr1/bessel_function.tcc" 3
23866: namespace __detail
23866: {
23866: # 98 "/usr/include/c++/10/tr1/bessel_function.tcc" 3
23866: template <typename _Tp>
23866: void
23866: __gamma_temme(_Tp __mu,
23866: _Tp & __gam1, _Tp & __gam2, _Tp & __gampl, _Tp & __gammi)
23866: {
23866:
23866: __gampl = _Tp(1) / ::std::tgamma(_Tp(1) + __mu);
23866: __gammi = _Tp(1) / ::std::tgamma(_Tp(1) - __mu);
23866:
23866:
23866:
23866:
23866:
23866: if (std::abs(__mu) < std::numeric_limits<_Tp>::epsilon())
23866: __gam1 = -_Tp(__numeric_constants<_Tp>::__gamma_e());
23866: else
23866: __gam1 = (__gammi - __gampl) / (_Tp(2) * __mu);
23866:
23866: __gam2 = (__gammi + __gampl) / (_Tp(2));
23866:
23866: return;
23866: }
23866: # 136 "/usr/include/c++/10/tr1/bessel_function.tcc" 3
23866: template <typename _Tp>
23866: void
23866: __bessel_jn(_Tp __nu, _Tp __x,
23866: _Tp & __Jnu, _Tp & __Nnu, _Tp & __Jpnu, _Tp & __Npnu)
23866: {
23866: if (__x == _Tp(0))
23866: {
23866: if (__nu == _Tp(0))
23866: {
23866: __Jnu = _Tp(1);
23866: __Jpnu = _Tp(0);
23866: }
23866: else if (__nu == _Tp(1))
23866: {
23866: __Jnu = _Tp(0);
23866: __Jpnu = _Tp(0.5L);
23866: }
23866: else
23866: {
23866: __Jnu = _Tp(0);
23866: __Jpnu = _Tp(0);
23866: }
23866: __Nnu = -std::numeric_limits<_Tp>::infinity();
23866: __Npnu = std::numeric_limits<_Tp>::infinity();
23866: return;
23866: }
23866:
23866: const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
23866:
23866:
23866:
23866:
23866: const _Tp __fp_min = std::sqrt(std::numeric_limits<_Tp>::min());
23866: const int __max_iter = 15000;
23866: const _Tp __x_min = _Tp(2);
23866:
23866: const int __nl = (__x < __x_min
23866: ? static_cast<int>(__nu + _Tp(0.5L))
23866: : std::max(0, static_cast<int>(__nu - __x + _Tp(1.5L))));
23866:
23866: const _Tp __mu = __nu - __nl;
23866: const _Tp __mu2 = __mu * __mu;
23866: const _Tp __xi = _Tp(1) / __x;
23866: const _Tp __xi2 = _Tp(2) * __xi;
23866: _Tp __w = __xi2 / __numeric_constants<_Tp>::__pi();
23866: int __isign = 1;
23866: _Tp __h = __nu * __xi;
23866: if (__h < __fp_min)
23866: __h = __fp_min;
23866: _Tp __b = __xi2 * __nu;
23866: _Tp __d = _Tp(0);
23866: _Tp __c = __h;
23866: int __i;
23866: for (__i = 1; __i <= __max_iter; ++__i)
23866: {
23866: __b += __xi2;
23866: __d = __b - __d;
23866: if (std::abs(__d) < __fp_min)
23866: __d = __fp_min;
23866: __c = __b - _Tp(1) / __c;
23866: if (std::abs(__c) < __fp_min)
23866: __c = __fp_min;
23866: __d = _Tp(1) / __d;
23866: const _Tp __del = __c * __d;
23866: __h *= __del;
23866: if (__d < _Tp(0))
23866: __isign = -__isign;
23866: if (std::abs(__del - _Tp(1)) < __eps)
23866: break;
23866: }
23866: if (__i > __max_iter)
23866: std::__throw_runtime_error(("Argument x too large in __bessel_jn; " "try asymptotic expansion.")
23866: );
23866: _Tp __Jnul = __isign * __fp_min;
23866: _Tp __Jpnul = __h * __Jnul;
23866: _Tp __Jnul1 = __Jnul;
23866: _Tp __Jpnu1 = __Jpnul;
23866: _Tp __fact = __nu * __xi;
23866: for ( int __l = __nl; __l >= 1; --__l )
23866: {
23866: const _Tp __Jnutemp = __fact * __Jnul + __Jpnul;
23866: __fact -= __xi;
23866: __Jpnul = __fact * __Jnutemp - __Jnul;
23866: __Jnul = __Jnutemp;
23866: }
23866: if (__Jnul == _Tp(0))
23866: __Jnul = __eps;
23866: _Tp __f= __Jpnul / __Jnul;
23866: _Tp __Nmu, __Nnu1, __Npmu, __Jmu;
23866: if (__x < __x_min)
23866: {
23866: const _Tp __x2 = __x / _Tp(2);
23866: const _Tp __pimu = __numeric_constants<_Tp>::__pi() * __mu;
23866: _Tp __fact = (std::abs(__pimu) < __eps
23866: ? _Tp(1) : __pimu / std::sin(__pimu));
23866: _Tp __d = -std::log(__x2);
23866: _Tp __e = __mu * __d;
23866: _Tp __fact2 = (std::abs(__e) < __eps
23866: ? _Tp(1) : std::sinh(__e) / __e);
23866: _Tp __gam1, __gam2, __gampl, __gammi;
23866: __gamma_temme(__mu, __gam1, __gam2, __gampl, __gammi);
23866: _Tp __ff = (_Tp(2) / __numeric_constants<_Tp>::__pi())
23866: * __fact * (__gam1 * std::cosh(__e) + __gam2 * __fact2 * __d);
23866: __e = std::exp(__e);
23866: _Tp __p = __e / (__numeric_constants<_Tp>::__pi() * __gampl);
23866: _Tp __q = _Tp(1) / (__e * __numeric_constants<_Tp>::__pi() * __gammi);
23866: const _Tp __pimu2 = __pimu / _Tp(2);
23866: _Tp __fact3 = (std::abs(__pimu2) < __eps
23866: ? _Tp(1) : std::sin(__pimu2) / __pimu2 );
23866: _Tp __r = __numeric_constants<_Tp>::__pi() * __pimu2 * __fact3 * __fact3;
23866: _Tp __c = _Tp(1);
23866: __d = -__x2 * __x2;
23866: _Tp __sum = __ff + __r * __q;
23866: _Tp __sum1 = __p;
23866: for (__i = 1; __i <= __max_iter; ++__i)
23866: {
23866: __ff = (__i * __ff + __p + __q) / (__i * __i - __mu2);
23866: __c *= __d / _Tp(__i);
23866: __p /= _Tp(__i) - __mu;
23866: __q /= _Tp(__i) + __mu;
23866: const _Tp __del = __c * (__ff + __r * __q);
23866: __sum += __del;
23866: const _Tp __del1 = __c * __p - __i * __del;
23866: __sum1 += __del1;
23866: if ( std::abs(__del) < __eps * (_Tp(1) + std::abs(__sum)) )
23866: break;
23866: }
23866: if ( __i > __max_iter )
23866: std::__throw_runtime_error(("Bessel y series failed to converge " "in __bessel_jn.")
23866: );
23866: __Nmu = -__sum;
23866: __Nnu1 = -__sum1 * __xi2;
23866: __Npmu = __mu * __xi * __Nmu - __Nnu1;
23866: __Jmu = __w / (__Npmu - __f * __Nmu);
23866: }
23866: else
23866: {
23866: _Tp __a = _Tp(0.25L) - __mu2;
23866: _Tp __q = _Tp(1);
23866: _Tp __p = -__xi / _Tp(2);
23866: _Tp __br = _Tp(2) * __x;
23866: _Tp __bi = _Tp(2);
23866: _Tp __fact = __a * __xi / (__p * __p + __q * __q);
23866: _Tp __cr = __br + __q * __fact;
23866: _Tp __ci = __bi + __p * __fact;
23866: _Tp __den = __br * __br + __bi * __bi;
23866: _Tp __dr = __br / __den;
23866: _Tp __di = -__bi / __den;
23866: _Tp __dlr = __cr * __dr - __ci * __di;
23866: _Tp __dli = __cr * __di + __ci * __dr;
23866: _Tp __temp = __p * __dlr - __q * __dli;
23866: __q = __p * __dli + __q * __dlr;
23866: __p = __temp;
23866: int __i;
23866: for (__i = 2; __i <= __max_iter; ++__i)
23866: {
23866: __a += _Tp(2 * (__i - 1));
23866: __bi += _Tp(2);
23866: __dr = __a * __dr + __br;
23866: __di = __a * __di + __bi;
23866: if (std::abs(__dr) + std::abs(__di) < __fp_min)
23866: __dr = __fp_min;
23866: __fact = __a / (__cr * __cr + __ci * __ci);
23866: __cr = __br + __cr * __fact;
23866: __ci = __bi - __ci * __fact;
23866: if (std::abs(__cr) + std::abs(__ci) < __fp_min)
23866: __cr = __fp_min;
23866: __den = __dr * __dr + __di * __di;
23866: __dr /= __den;
23866: __di /= -__den;
23866: __dlr = __cr * __dr - __ci * __di;
23866: __dli = __cr * __di + __ci * __dr;
23866: __temp = __p * __dlr - __q * __dli;
23866: __q = __p * __dli + __q * __dlr;
23866: __p = __temp;
23866: if (std::abs(__dlr - _Tp(1)) + std::abs(__dli) < __eps)
23866: break;
23866: }
23866: if (__i > __max_iter)
23866: std::__throw_runtime_error(("Lentz's method failed " "in __bessel_jn.")
23866: );
23866: const _Tp __gam = (__p - __f) / __q;
23866: __Jmu = std::sqrt(__w / ((__p - __f) * __gam + __q));
23866:
23866: __Jmu = ::std::copysign(__Jmu, __Jnul);
23866:
23866:
23866:
23866:
23866: __Nmu = __gam * __Jmu;
23866: __Npmu = (__p + __q / __gam) * __Nmu;
23866: __Nnu1 = __mu * __xi * __Nmu - __Npmu;
23866: }
23866: __fact = __Jmu / __Jnul;
23866: __Jnu = __fact * __Jnul1;
23866: __Jpnu = __fact * __Jpnu1;
23866: for (__i = 1; __i <= __nl; ++__i)
23866: {
23866: const _Tp __Nnutemp = (__mu + __i) * __xi2 * __Nnu1 - __Nmu;
23866: __Nmu = __Nnu1;
23866: __Nnu1 = __Nnutemp;
23866: }
23866: __Nnu = __Nmu;
23866: __Npnu = __nu * __xi * __Nmu - __Nnu1;
23866:
23866: return;
23866: }
23866: # 361 "/usr/include/c++/10/tr1/bessel_function.tcc" 3
23866: template <typename _Tp>
23866: void
23866: __cyl_bessel_jn_asymp(_Tp __nu, _Tp __x, _Tp & __Jnu, _Tp & __Nnu)
23866: {
23866: const _Tp __mu = _Tp(4) * __nu * __nu;
23866: const _Tp __8x = _Tp(8) * __x;
23866:
23866: _Tp __P = _Tp(0);
23866: _Tp __Q = _Tp(0);
23866:
23866: _Tp __k = _Tp(0);
23866: _Tp __term = _Tp(1);
23866:
23866: int __epsP = 0;
23866: int __epsQ = 0;
23866:
23866: _Tp __eps = std::numeric_limits<_Tp>::epsilon();
23866:
23866: do
23866: {
23866: __term *= (__k == 0
23866: ? _Tp(1)
23866: : -(__mu - (2 * __k - 1) * (2 * __k - 1)) / (__k * __8x));
23866:
23866: __epsP = std::abs(__term) < __eps * std::abs(__P);
23866: __P += __term;
23866:
23866: __k++;
23866:
23866: __term *= (__mu - (2 * __k - 1) * (2 * __k - 1)) / (__k * __8x);
23866: __epsQ = std::abs(__term) < __eps * std::abs(__Q);
23866: __Q += __term;
23866:
23866: if (__epsP && __epsQ && __k > (__nu / 2.))
23866: break;
23866:
23866: __k++;
23866: }
23866: while (__k < 1000);
23866:
23866: const _Tp __chi = __x - (__nu + _Tp(0.5L))
23866: * __numeric_constants<_Tp>::__pi_2();
23866:
23866: const _Tp __c = std::cos(__chi);
23866: const _Tp __s = std::sin(__chi);
23866:
23866: const _Tp __coef = std::sqrt(_Tp(2)
23866: / (__numeric_constants<_Tp>::__pi() * __x));
23866:
23866: __Jnu = __coef * (__c * __P - __s * __Q);
23866: __Nnu = __coef * (__s * __P + __c * __Q);
23866:
23866: return;
23866: }
23866: # 444 "/usr/include/c++/10/tr1/bessel_function.tcc" 3
23866: template <typename _Tp>
23866: _Tp
23866: __cyl_bessel_ij_series(_Tp __nu, _Tp __x, _Tp __sgn,
23866: unsigned int __max_iter)
23866: {
23866: if (__x == _Tp(0))
23866: return __nu == _Tp(0) ? _Tp(1) : _Tp(0);
23866:
23866: const _Tp __x2 = __x / _Tp(2);
23866: _Tp __fact = __nu * std::log(__x2);
23866:
23866: __fact -= ::std::lgamma(__nu + _Tp(1));
23866:
23866:
23866:
23866: __fact = std::exp(__fact);
23866: const _Tp __xx4 = __sgn * __x2 * __x2;
23866: _Tp __Jn = _Tp(1);
23866: _Tp __term = _Tp(1);
23866:
23866: for (unsigned int __i = 1; __i < __max_iter; ++__i)
23866: {
23866: __term *= __xx4 / (_Tp(__i) * (__nu + _Tp(__i)));
23866: __Jn += __term;
23866: if (std::abs(__term / __Jn) < std::numeric_limits<_Tp>::epsilon())
23866: break;
23866: }
23866:
23866: return __fact * __Jn;
23866: }
23866: # 490 "/usr/include/c++/10/tr1/bessel_function.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __cyl_bessel_j(_Tp __nu, _Tp __x)
23866: {
23866: if (__nu < _Tp(0) || __x < _Tp(0))
23866: std::__throw_domain_error(("Bad argument " "in __cyl_bessel_j.")
23866: );
23866: else if (__isnan(__nu) || __isnan(__x))
23866: return std::numeric_limits<_Tp>::quiet_NaN();
23866: else if (__x * __x < _Tp(10) * (__nu + _Tp(1)))
23866: return __cyl_bessel_ij_series(__nu, __x, -_Tp(1), 200);
23866: else if (__x > _Tp(1000))
23866: {
23866: _Tp __J_nu, __N_nu;
23866: __cyl_bessel_jn_asymp(__nu, __x, __J_nu, __N_nu);
23866: return __J_nu;
23866: }
23866: else
23866: {
23866: _Tp __J_nu, __N_nu, __Jp_nu, __Np_nu;
23866: __bessel_jn(__nu, __x, __J_nu, __N_nu, __Jp_nu, __Np_nu);
23866: return __J_nu;
23866: }
23866: }
23866: # 532 "/usr/include/c++/10/tr1/bessel_function.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __cyl_neumann_n(_Tp __nu, _Tp __x)
23866: {
23866: if (__nu < _Tp(0) || __x < _Tp(0))
23866: std::__throw_domain_error(("Bad argument " "in __cyl_neumann_n.")
23866: );
23866: else if (__isnan(__nu) || __isnan(__x))
23866: return std::numeric_limits<_Tp>::quiet_NaN();
23866: else if (__x > _Tp(1000))
23866: {
23866: _Tp __J_nu, __N_nu;
23866: __cyl_bessel_jn_asymp(__nu, __x, __J_nu, __N_nu);
23866: return __N_nu;
23866: }
23866: else
23866: {
23866: _Tp __J_nu, __N_nu, __Jp_nu, __Np_nu;
23866: __bessel_jn(__nu, __x, __J_nu, __N_nu, __Jp_nu, __Np_nu);
23866: return __N_nu;
23866: }
23866: }
23866: # 569 "/usr/include/c++/10/tr1/bessel_function.tcc" 3
23866: template <typename _Tp>
23866: void
23866: __sph_bessel_jn(unsigned int __n, _Tp __x,
23866: _Tp & __j_n, _Tp & __n_n, _Tp & __jp_n, _Tp & __np_n)
23866: {
23866: const _Tp __nu = _Tp(__n) + _Tp(0.5L);
23866:
23866: _Tp __J_nu, __N_nu, __Jp_nu, __Np_nu;
23866: __bessel_jn(__nu, __x, __J_nu, __N_nu, __Jp_nu, __Np_nu);
23866:
23866: const _Tp __factor = __numeric_constants<_Tp>::__sqrtpio2()
23866: / std::sqrt(__x);
23866:
23866: __j_n = __factor * __J_nu;
23866: __n_n = __factor * __N_nu;
23866: __jp_n = __factor * __Jp_nu - __j_n / (_Tp(2) * __x);
23866: __np_n = __factor * __Np_nu - __n_n / (_Tp(2) * __x);
23866:
23866: return;
23866: }
23866: # 604 "/usr/include/c++/10/tr1/bessel_function.tcc" 3
23866: template <typename _Tp>
23866: _Tp
23866: __sph_bessel(unsigned int __n, _Tp __x)
23866: {
23866: if (__x < _Tp(0))
23866: std::__throw_domain_error(("Bad argument " "in __sph_bessel.")
23866: );
23866: else if (__isnan(__x))
23866: return std::numeric_limits<_Tp>::quiet_NaN();
23866: else if (__x == _Tp(0))
23866: {
23866: if (__n == 0)
23866: return _Tp(1);
23866: else
23866: return _Tp(0);
23866: }
23866: else
23866: {
23866: _Tp __j_n, __n_n, __jp_n, __np_n;
23866: __sph_bessel_jn(__n, __x, __j_n, __n_n, __jp_n, __np_n);
23866: return __j_n;
23866: }
23866: }
23866: # 642 "/usr/include/c++/10/tr1/bessel_function.tcc" 3
23866: template <typename _Tp>
23866: _Tp
23866: __sph_neumann(unsigned int __n, _Tp __x)
23866: {
23866: if (__x < _Tp(0))
23866: std::__throw_domain_error(("Bad argument " "in __sph_neumann.")
23866: );
23866: else if (__isnan(__x))
23866: return std::numeric_limits<_Tp>::quiet_NaN();
23866: else if (__x == _Tp(0))
23866: return -std::numeric_limits<_Tp>::infinity();
23866: else
23866: {
23866: _Tp __j_n, __n_n, __jp_n, __np_n;
23866: __sph_bessel_jn(__n, __x, __j_n, __n_n, __jp_n, __np_n);
23866: return __n_n;
23866: }
23866: }
23866: }
23866: #undef _GLIBCXX_MATH_NS
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 51 "/usr/include/c++/10/bits/specfun.h" 2 3
23866: # 1 "/usr/include/c++/10/tr1/beta_function.tcc" 1 3
23866: # 47 "/usr/include/c++/10/tr1/beta_function.tcc" 3
23866: #define _GLIBCXX_TR1_BETA_FUNCTION_TCC 1
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: #define _GLIBCXX_MATH_NS ::std
23866: # 65 "/usr/include/c++/10/tr1/beta_function.tcc" 3
23866: namespace __detail
23866: {
23866: # 79 "/usr/include/c++/10/tr1/beta_function.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __beta_gamma(_Tp __x, _Tp __y)
23866: {
23866:
23866: _Tp __bet;
23866:
23866: if (__x > __y)
23866: {
23866: __bet = ::std::tgamma(__x)
23866: / ::std::tgamma(__x + __y);
23866: __bet *= ::std::tgamma(__y);
23866: }
23866: else
23866: {
23866: __bet = ::std::tgamma(__y)
23866: / ::std::tgamma(__x + __y);
23866: __bet *= ::std::tgamma(__x);
23866: }
23866: # 111 "/usr/include/c++/10/tr1/beta_function.tcc" 3
23866: return __bet;
23866: }
23866: # 127 "/usr/include/c++/10/tr1/beta_function.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __beta_lgamma(_Tp __x, _Tp __y)
23866: {
23866:
23866: _Tp __bet = ::std::lgamma(__x)
23866: + ::std::lgamma(__y)
23866: - ::std::lgamma(__x + __y);
23866:
23866:
23866:
23866:
23866:
23866: __bet = std::exp(__bet);
23866: return __bet;
23866: }
23866: # 158 "/usr/include/c++/10/tr1/beta_function.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __beta_product(_Tp __x, _Tp __y)
23866: {
23866:
23866: _Tp __bet = (__x + __y) / (__x * __y);
23866:
23866: unsigned int __max_iter = 1000000;
23866: for (unsigned int __k = 1; __k < __max_iter; ++__k)
23866: {
23866: _Tp __term = (_Tp(1) + (__x + __y) / __k)
23866: / ((_Tp(1) + __x / __k) * (_Tp(1) + __y / __k));
23866: __bet *= __term;
23866: }
23866:
23866: return __bet;
23866: }
23866: # 189 "/usr/include/c++/10/tr1/beta_function.tcc" 3
23866: template<typename _Tp>
23866: inline _Tp
23866: __beta(_Tp __x, _Tp __y)
23866: {
23866: if (__isnan(__x) || __isnan(__y))
23866: return std::numeric_limits<_Tp>::quiet_NaN();
23866: else
23866: return __beta_lgamma(__x, __y);
23866: }
23866: }
23866: #undef _GLIBCXX_MATH_NS
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 52 "/usr/include/c++/10/bits/specfun.h" 2 3
23866: # 1 "/usr/include/c++/10/tr1/ell_integral.tcc" 1 3
23866: # 43 "/usr/include/c++/10/tr1/ell_integral.tcc" 3
23866: #define _GLIBCXX_TR1_ELL_INTEGRAL_TCC 1
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 59 "/usr/include/c++/10/tr1/ell_integral.tcc" 3
23866: namespace __detail
23866: {
23866: # 76 "/usr/include/c++/10/tr1/ell_integral.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __ellint_rf(_Tp __x, _Tp __y, _Tp __z)
23866: {
23866: const _Tp __min = std::numeric_limits<_Tp>::min();
23866: const _Tp __max = std::numeric_limits<_Tp>::max();
23866: const _Tp __lolim = _Tp(5) * __min;
23866: const _Tp __uplim = __max / _Tp(5);
23866:
23866: if (__x < _Tp(0) || __y < _Tp(0) || __z < _Tp(0))
23866: std::__throw_domain_error(("Argument less than zero " "in __ellint_rf.")
23866: );
23866: else if (__x + __y < __lolim || __x + __z < __lolim
23866: || __y + __z < __lolim)
23866: std::__throw_domain_error(("Argument too small in __ellint_rf"));
23866: else
23866: {
23866: const _Tp __c0 = _Tp(1) / _Tp(4);
23866: const _Tp __c1 = _Tp(1) / _Tp(24);
23866: const _Tp __c2 = _Tp(1) / _Tp(10);
23866: const _Tp __c3 = _Tp(3) / _Tp(44);
23866: const _Tp __c4 = _Tp(1) / _Tp(14);
23866:
23866: _Tp __xn = __x;
23866: _Tp __yn = __y;
23866: _Tp __zn = __z;
23866:
23866: const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
23866: const _Tp __errtol = std::pow(__eps, _Tp(1) / _Tp(6));
23866: _Tp __mu;
23866: _Tp __xndev, __yndev, __zndev;
23866:
23866: const unsigned int __max_iter = 100;
23866: for (unsigned int __iter = 0; __iter < __max_iter; ++__iter)
23866: {
23866: __mu = (__xn + __yn + __zn) / _Tp(3);
23866: __xndev = 2 - (__mu + __xn) / __mu;
23866: __yndev = 2 - (__mu + __yn) / __mu;
23866: __zndev = 2 - (__mu + __zn) / __mu;
23866: _Tp __epsilon = std::max(std::abs(__xndev), std::abs(__yndev));
23866: __epsilon = std::max(__epsilon, std::abs(__zndev));
23866: if (__epsilon < __errtol)
23866: break;
23866: const _Tp __xnroot = std::sqrt(__xn);
23866: const _Tp __ynroot = std::sqrt(__yn);
23866: const _Tp __znroot = std::sqrt(__zn);
23866: const _Tp __lambda = __xnroot * (__ynroot + __znroot)
23866: + __ynroot * __znroot;
23866: __xn = __c0 * (__xn + __lambda);
23866: __yn = __c0 * (__yn + __lambda);
23866: __zn = __c0 * (__zn + __lambda);
23866: }
23866:
23866: const _Tp __e2 = __xndev * __yndev - __zndev * __zndev;
23866: const _Tp __e3 = __xndev * __yndev * __zndev;
23866: const _Tp __s = _Tp(1) + (__c1 * __e2 - __c2 - __c3 * __e3) * __e2
23866: + __c4 * __e3;
23866:
23866: return __s / std::sqrt(__mu);
23866: }
23866: }
23866: # 155 "/usr/include/c++/10/tr1/ell_integral.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __comp_ellint_1_series(_Tp __k)
23866: {
23866:
23866: const _Tp __kk = __k * __k;
23866:
23866: _Tp __term = __kk / _Tp(4);
23866: _Tp __sum = _Tp(1) + __term;
23866:
23866: const unsigned int __max_iter = 1000;
23866: for (unsigned int __i = 2; __i < __max_iter; ++__i)
23866: {
23866: __term *= (2 * __i - 1) * __kk / (2 * __i);
23866: if (__term < std::numeric_limits<_Tp>::epsilon())
23866: break;
23866: __sum += __term;
23866: }
23866:
23866: return __numeric_constants<_Tp>::__pi_2() * __sum;
23866: }
23866: # 193 "/usr/include/c++/10/tr1/ell_integral.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __comp_ellint_1(_Tp __k)
23866: {
23866:
23866: if (__isnan(__k))
23866: return std::numeric_limits<_Tp>::quiet_NaN();
23866: else if (std::abs(__k) >= _Tp(1))
23866: return std::numeric_limits<_Tp>::quiet_NaN();
23866: else
23866: return __ellint_rf(_Tp(0), _Tp(1) - __k * __k, _Tp(1));
23866: }
23866: # 221 "/usr/include/c++/10/tr1/ell_integral.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __ellint_1(_Tp __k, _Tp __phi)
23866: {
23866:
23866: if (__isnan(__k) || __isnan(__phi))
23866: return std::numeric_limits<_Tp>::quiet_NaN();
23866: else if (std::abs(__k) > _Tp(1))
23866: std::__throw_domain_error(("Bad argument in __ellint_1."));
23866: else
23866: {
23866:
23866: const int __n = std::floor(__phi / __numeric_constants<_Tp>::__pi()
23866: + _Tp(0.5L));
23866: const _Tp __phi_red = __phi
23866: - __n * __numeric_constants<_Tp>::__pi();
23866:
23866: const _Tp __s = std::sin(__phi_red);
23866: const _Tp __c = std::cos(__phi_red);
23866:
23866: const _Tp __F = __s
23866: * __ellint_rf(__c * __c,
23866: _Tp(1) - __k * __k * __s * __s, _Tp(1));
23866:
23866: if (__n == 0)
23866: return __F;
23866: else
23866: return __F + _Tp(2) * __n * __comp_ellint_1(__k);
23866: }
23866: }
23866: # 268 "/usr/include/c++/10/tr1/ell_integral.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __comp_ellint_2_series(_Tp __k)
23866: {
23866:
23866: const _Tp __kk = __k * __k;
23866:
23866: _Tp __term = __kk;
23866: _Tp __sum = __term;
23866:
23866: const unsigned int __max_iter = 1000;
23866: for (unsigned int __i = 2; __i < __max_iter; ++__i)
23866: {
23866: const _Tp __i2m = 2 * __i - 1;
23866: const _Tp __i2 = 2 * __i;
23866: __term *= __i2m * __i2m * __kk / (__i2 * __i2);
23866: if (__term < std::numeric_limits<_Tp>::epsilon())
23866: break;
23866: __sum += __term / __i2m;
23866: }
23866:
23866: return __numeric_constants<_Tp>::__pi_2() * (_Tp(1) - __sum);
23866: }
23866: # 316 "/usr/include/c++/10/tr1/ell_integral.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __ellint_rd(_Tp __x, _Tp __y, _Tp __z)
23866: {
23866: const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
23866: const _Tp __errtol = std::pow(__eps / _Tp(8), _Tp(1) / _Tp(6));
23866: const _Tp __min = std::numeric_limits<_Tp>::min();
23866: const _Tp __max = std::numeric_limits<_Tp>::max();
23866: const _Tp __lolim = _Tp(2) / std::pow(__max, _Tp(2) / _Tp(3));
23866: const _Tp __uplim = std::pow(_Tp(0.1L) * __errtol / __min, _Tp(2) / _Tp(3));
23866:
23866: if (__x < _Tp(0) || __y < _Tp(0))
23866: std::__throw_domain_error(("Argument less than zero " "in __ellint_rd.")
23866: );
23866: else if (__x + __y < __lolim || __z < __lolim)
23866: std::__throw_domain_error(("Argument too small " "in __ellint_rd.")
23866: );
23866: else
23866: {
23866: const _Tp __c0 = _Tp(1) / _Tp(4);
23866: const _Tp __c1 = _Tp(3) / _Tp(14);
23866: const _Tp __c2 = _Tp(1) / _Tp(6);
23866: const _Tp __c3 = _Tp(9) / _Tp(22);
23866: const _Tp __c4 = _Tp(3) / _Tp(26);
23866:
23866: _Tp __xn = __x;
23866: _Tp __yn = __y;
23866: _Tp __zn = __z;
23866: _Tp __sigma = _Tp(0);
23866: _Tp __power4 = _Tp(1);
23866:
23866: _Tp __mu;
23866: _Tp __xndev, __yndev, __zndev;
23866:
23866: const unsigned int __max_iter = 100;
23866: for (unsigned int __iter = 0; __iter < __max_iter; ++__iter)
23866: {
23866: __mu = (__xn + __yn + _Tp(3) * __zn) / _Tp(5);
23866: __xndev = (__mu - __xn) / __mu;
23866: __yndev = (__mu - __yn) / __mu;
23866: __zndev = (__mu - __zn) / __mu;
23866: _Tp __epsilon = std::max(std::abs(__xndev), std::abs(__yndev));
23866: __epsilon = std::max(__epsilon, std::abs(__zndev));
23866: if (__epsilon < __errtol)
23866: break;
23866: _Tp __xnroot = std::sqrt(__xn);
23866: _Tp __ynroot = std::sqrt(__yn);
23866: _Tp __znroot = std::sqrt(__zn);
23866: _Tp __lambda = __xnroot * (__ynroot + __znroot)
23866: + __ynroot * __znroot;
23866: __sigma += __power4 / (__znroot * (__zn + __lambda));
23866: __power4 *= __c0;
23866: __xn = __c0 * (__xn + __lambda);
23866: __yn = __c0 * (__yn + __lambda);
23866: __zn = __c0 * (__zn + __lambda);
23866: }
23866:
23866: _Tp __ea = __xndev * __yndev;
23866: _Tp __eb = __zndev * __zndev;
23866: _Tp __ec = __ea - __eb;
23866: _Tp __ed = __ea - _Tp(6) * __eb;
23866: _Tp __ef = __ed + __ec + __ec;
23866: _Tp __s1 = __ed * (-__c1 + __c3 * __ed
23866: / _Tp(3) - _Tp(3) * __c4 * __zndev * __ef
23866: / _Tp(2));
23866: _Tp __s2 = __zndev
23866: * (__c2 * __ef
23866: + __zndev * (-__c3 * __ec - __zndev * __c4 - __ea));
23866:
23866: return _Tp(3) * __sigma + __power4 * (_Tp(1) + __s1 + __s2)
23866: / (__mu * std::sqrt(__mu));
23866: }
23866: }
23866: # 403 "/usr/include/c++/10/tr1/ell_integral.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __comp_ellint_2(_Tp __k)
23866: {
23866:
23866: if (__isnan(__k))
23866: return std::numeric_limits<_Tp>::quiet_NaN();
23866: else if (std::abs(__k) == 1)
23866: return _Tp(1);
23866: else if (std::abs(__k) > _Tp(1))
23866: std::__throw_domain_error(("Bad argument in __comp_ellint_2."));
23866: else
23866: {
23866: const _Tp __kk = __k * __k;
23866:
23866: return __ellint_rf(_Tp(0), _Tp(1) - __kk, _Tp(1))
23866: - __kk * __ellint_rd(_Tp(0), _Tp(1) - __kk, _Tp(1)) / _Tp(3);
23866: }
23866: }
23866: # 437 "/usr/include/c++/10/tr1/ell_integral.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __ellint_2(_Tp __k, _Tp __phi)
23866: {
23866:
23866: if (__isnan(__k) || __isnan(__phi))
23866: return std::numeric_limits<_Tp>::quiet_NaN();
23866: else if (std::abs(__k) > _Tp(1))
23866: std::__throw_domain_error(("Bad argument in __ellint_2."));
23866: else
23866: {
23866:
23866: const int __n = std::floor(__phi / __numeric_constants<_Tp>::__pi()
23866: + _Tp(0.5L));
23866: const _Tp __phi_red = __phi
23866: - __n * __numeric_constants<_Tp>::__pi();
23866:
23866: const _Tp __kk = __k * __k;
23866: const _Tp __s = std::sin(__phi_red);
23866: const _Tp __ss = __s * __s;
23866: const _Tp __sss = __ss * __s;
23866: const _Tp __c = std::cos(__phi_red);
23866: const _Tp __cc = __c * __c;
23866:
23866: const _Tp __E = __s
23866: * __ellint_rf(__cc, _Tp(1) - __kk * __ss, _Tp(1))
23866: - __kk * __sss
23866: * __ellint_rd(__cc, _Tp(1) - __kk * __ss, _Tp(1))
23866: / _Tp(3);
23866:
23866: if (__n == 0)
23866: return __E;
23866: else
23866: return __E + _Tp(2) * __n * __comp_ellint_2(__k);
23866: }
23866: }
23866: # 496 "/usr/include/c++/10/tr1/ell_integral.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __ellint_rc(_Tp __x, _Tp __y)
23866: {
23866: const _Tp __min = std::numeric_limits<_Tp>::min();
23866: const _Tp __max = std::numeric_limits<_Tp>::max();
23866: const _Tp __lolim = _Tp(5) * __min;
23866: const _Tp __uplim = __max / _Tp(5);
23866:
23866: if (__x < _Tp(0) || __y < _Tp(0) || __x + __y < __lolim)
23866: std::__throw_domain_error(("Argument less than zero " "in __ellint_rc.")
23866: );
23866: else
23866: {
23866: const _Tp __c0 = _Tp(1) / _Tp(4);
23866: const _Tp __c1 = _Tp(1) / _Tp(7);
23866: const _Tp __c2 = _Tp(9) / _Tp(22);
23866: const _Tp __c3 = _Tp(3) / _Tp(10);
23866: const _Tp __c4 = _Tp(3) / _Tp(8);
23866:
23866: _Tp __xn = __x;
23866: _Tp __yn = __y;
23866:
23866: const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
23866: const _Tp __errtol = std::pow(__eps / _Tp(30), _Tp(1) / _Tp(6));
23866: _Tp __mu;
23866: _Tp __sn;
23866:
23866: const unsigned int __max_iter = 100;
23866: for (unsigned int __iter = 0; __iter < __max_iter; ++__iter)
23866: {
23866: __mu = (__xn + _Tp(2) * __yn) / _Tp(3);
23866: __sn = (__yn + __mu) / __mu - _Tp(2);
23866: if (std::abs(__sn) < __errtol)
23866: break;
23866: const _Tp __lambda = _Tp(2) * std::sqrt(__xn) * std::sqrt(__yn)
23866: + __yn;
23866: __xn = __c0 * (__xn + __lambda);
23866: __yn = __c0 * (__yn + __lambda);
23866: }
23866:
23866: _Tp __s = __sn * __sn
23866: * (__c3 + __sn*(__c1 + __sn * (__c4 + __sn * __c2)));
23866:
23866: return (_Tp(1) + __s) / std::sqrt(__mu);
23866: }
23866: }
23866: # 567 "/usr/include/c++/10/tr1/ell_integral.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __ellint_rj(_Tp __x, _Tp __y, _Tp __z, _Tp __p)
23866: {
23866: const _Tp __min = std::numeric_limits<_Tp>::min();
23866: const _Tp __max = std::numeric_limits<_Tp>::max();
23866: const _Tp __lolim = std::pow(_Tp(5) * __min, _Tp(1)/_Tp(3));
23866: const _Tp __uplim = _Tp(0.3L)
23866: * std::pow(_Tp(0.2L) * __max, _Tp(1)/_Tp(3));
23866:
23866: if (__x < _Tp(0) || __y < _Tp(0) || __z < _Tp(0))
23866: std::__throw_domain_error(("Argument less than zero " "in __ellint_rj.")
23866: );
23866: else if (__x + __y < __lolim || __x + __z < __lolim
23866: || __y + __z < __lolim || __p < __lolim)
23866: std::__throw_domain_error(("Argument too small " "in __ellint_rj")
23866: );
23866: else
23866: {
23866: const _Tp __c0 = _Tp(1) / _Tp(4);
23866: const _Tp __c1 = _Tp(3) / _Tp(14);
23866: const _Tp __c2 = _Tp(1) / _Tp(3);
23866: const _Tp __c3 = _Tp(3) / _Tp(22);
23866: const _Tp __c4 = _Tp(3) / _Tp(26);
23866:
23866: _Tp __xn = __x;
23866: _Tp __yn = __y;
23866: _Tp __zn = __z;
23866: _Tp __pn = __p;
23866: _Tp __sigma = _Tp(0);
23866: _Tp __power4 = _Tp(1);
23866:
23866: const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
23866: const _Tp __errtol = std::pow(__eps / _Tp(8), _Tp(1) / _Tp(6));
23866:
23866: _Tp __lambda, __mu;
23866: _Tp __xndev, __yndev, __zndev, __pndev;
23866:
23866: const unsigned int __max_iter = 100;
23866: for (unsigned int __iter = 0; __iter < __max_iter; ++__iter)
23866: {
23866: __mu = (__xn + __yn + __zn + _Tp(2) * __pn) / _Tp(5);
23866: __xndev = (__mu - __xn) / __mu;
23866: __yndev = (__mu - __yn) / __mu;
23866: __zndev = (__mu - __zn) / __mu;
23866: __pndev = (__mu - __pn) / __mu;
23866: _Tp __epsilon = std::max(std::abs(__xndev), std::abs(__yndev));
23866: __epsilon = std::max(__epsilon, std::abs(__zndev));
23866: __epsilon = std::max(__epsilon, std::abs(__pndev));
23866: if (__epsilon < __errtol)
23866: break;
23866: const _Tp __xnroot = std::sqrt(__xn);
23866: const _Tp __ynroot = std::sqrt(__yn);
23866: const _Tp __znroot = std::sqrt(__zn);
23866: const _Tp __lambda = __xnroot * (__ynroot + __znroot)
23866: + __ynroot * __znroot;
23866: const _Tp __alpha1 = __pn * (__xnroot + __ynroot + __znroot)
23866: + __xnroot * __ynroot * __znroot;
23866: const _Tp __alpha2 = __alpha1 * __alpha1;
23866: const _Tp __beta = __pn * (__pn + __lambda)
23866: * (__pn + __lambda);
23866: __sigma += __power4 * __ellint_rc(__alpha2, __beta);
23866: __power4 *= __c0;
23866: __xn = __c0 * (__xn + __lambda);
23866: __yn = __c0 * (__yn + __lambda);
23866: __zn = __c0 * (__zn + __lambda);
23866: __pn = __c0 * (__pn + __lambda);
23866: }
23866:
23866: _Tp __ea = __xndev * (__yndev + __zndev) + __yndev * __zndev;
23866: _Tp __eb = __xndev * __yndev * __zndev;
23866: _Tp __ec = __pndev * __pndev;
23866: _Tp __e2 = __ea - _Tp(3) * __ec;
23866: _Tp __e3 = __eb + _Tp(2) * __pndev * (__ea - __ec);
23866: _Tp __s1 = _Tp(1) + __e2 * (-__c1 + _Tp(3) * __c3 * __e2 / _Tp(4)
23866: - _Tp(3) * __c4 * __e3 / _Tp(2));
23866: _Tp __s2 = __eb * (__c2 / _Tp(2)
23866: + __pndev * (-__c3 - __c3 + __pndev * __c4));
23866: _Tp __s3 = __pndev * __ea * (__c2 - __pndev * __c3)
23866: - __c2 * __pndev * __ec;
23866:
23866: return _Tp(3) * __sigma + __power4 * (__s1 + __s2 + __s3)
23866: / (__mu * std::sqrt(__mu));
23866: }
23866: }
23866: # 670 "/usr/include/c++/10/tr1/ell_integral.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __comp_ellint_3(_Tp __k, _Tp __nu)
23866: {
23866:
23866: if (__isnan(__k) || __isnan(__nu))
23866: return std::numeric_limits<_Tp>::quiet_NaN();
23866: else if (__nu == _Tp(1))
23866: return std::numeric_limits<_Tp>::infinity();
23866: else if (std::abs(__k) > _Tp(1))
23866: std::__throw_domain_error(("Bad argument in __comp_ellint_3."));
23866: else
23866: {
23866: const _Tp __kk = __k * __k;
23866:
23866: return __ellint_rf(_Tp(0), _Tp(1) - __kk, _Tp(1))
23866: + __nu
23866: * __ellint_rj(_Tp(0), _Tp(1) - __kk, _Tp(1), _Tp(1) - __nu)
23866: / _Tp(3);
23866: }
23866: }
23866: # 710 "/usr/include/c++/10/tr1/ell_integral.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __ellint_3(_Tp __k, _Tp __nu, _Tp __phi)
23866: {
23866:
23866: if (__isnan(__k) || __isnan(__nu) || __isnan(__phi))
23866: return std::numeric_limits<_Tp>::quiet_NaN();
23866: else if (std::abs(__k) > _Tp(1))
23866: std::__throw_domain_error(("Bad argument in __ellint_3."));
23866: else
23866: {
23866:
23866: const int __n = std::floor(__phi / __numeric_constants<_Tp>::__pi()
23866: + _Tp(0.5L));
23866: const _Tp __phi_red = __phi
23866: - __n * __numeric_constants<_Tp>::__pi();
23866:
23866: const _Tp __kk = __k * __k;
23866: const _Tp __s = std::sin(__phi_red);
23866: const _Tp __ss = __s * __s;
23866: const _Tp __sss = __ss * __s;
23866: const _Tp __c = std::cos(__phi_red);
23866: const _Tp __cc = __c * __c;
23866:
23866: const _Tp __Pi = __s
23866: * __ellint_rf(__cc, _Tp(1) - __kk * __ss, _Tp(1))
23866: + __nu * __sss
23866: * __ellint_rj(__cc, _Tp(1) - __kk * __ss, _Tp(1),
23866: _Tp(1) - __nu * __ss) / _Tp(3);
23866:
23866: if (__n == 0)
23866: return __Pi;
23866: else
23866: return __Pi + _Tp(2) * __n * __comp_ellint_3(__k, __nu);
23866: }
23866: }
23866: }
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 53 "/usr/include/c++/10/bits/specfun.h" 2 3
23866: # 1 "/usr/include/c++/10/tr1/exp_integral.tcc" 1 3
23866: # 46 "/usr/include/c++/10/tr1/exp_integral.tcc" 3
23866: #define _GLIBCXX_TR1_EXP_INTEGRAL_TCC 1
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 64 "/usr/include/c++/10/tr1/exp_integral.tcc" 3
23866: namespace __detail
23866: {
23866: template<typename _Tp> _Tp __expint_E1(_Tp);
23866: # 81 "/usr/include/c++/10/tr1/exp_integral.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __expint_E1_series(_Tp __x)
23866: {
23866: const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
23866: _Tp __term = _Tp(1);
23866: _Tp __esum = _Tp(0);
23866: _Tp __osum = _Tp(0);
23866: const unsigned int __max_iter = 1000;
23866: for (unsigned int __i = 1; __i < __max_iter; ++__i)
23866: {
23866: __term *= - __x / __i;
23866: if (std::abs(__term) < __eps)
23866: break;
23866: if (__term >= _Tp(0))
23866: __esum += __term / __i;
23866: else
23866: __osum += __term / __i;
23866: }
23866:
23866: return - __esum - __osum
23866: - __numeric_constants<_Tp>::__gamma_e() - std::log(__x);
23866: }
23866: # 118 "/usr/include/c++/10/tr1/exp_integral.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __expint_E1_asymp(_Tp __x)
23866: {
23866: _Tp __term = _Tp(1);
23866: _Tp __esum = _Tp(1);
23866: _Tp __osum = _Tp(0);
23866: const unsigned int __max_iter = 1000;
23866: for (unsigned int __i = 1; __i < __max_iter; ++__i)
23866: {
23866: _Tp __prev = __term;
23866: __term *= - __i / __x;
23866: if (std::abs(__term) > std::abs(__prev))
23866: break;
23866: if (__term >= _Tp(0))
23866: __esum += __term;
23866: else
23866: __osum += __term;
23866: }
23866:
23866: return std::exp(- __x) * (__esum + __osum) / __x;
23866: }
23866: # 155 "/usr/include/c++/10/tr1/exp_integral.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __expint_En_series(unsigned int __n, _Tp __x)
23866: {
23866: const unsigned int __max_iter = 1000;
23866: const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
23866: const int __nm1 = __n - 1;
23866: _Tp __ans = (__nm1 != 0
23866: ? _Tp(1) / __nm1 : -std::log(__x)
23866: - __numeric_constants<_Tp>::__gamma_e());
23866: _Tp __fact = _Tp(1);
23866: for (int __i = 1; __i <= __max_iter; ++__i)
23866: {
23866: __fact *= -__x / _Tp(__i);
23866: _Tp __del;
23866: if ( __i != __nm1 )
23866: __del = -__fact / _Tp(__i - __nm1);
23866: else
23866: {
23866: _Tp __psi = -__numeric_constants<_Tp>::gamma_e();
23866: for (int __ii = 1; __ii <= __nm1; ++__ii)
23866: __psi += _Tp(1) / _Tp(__ii);
23866: __del = __fact * (__psi - std::log(__x));
23866: }
23866: __ans += __del;
23866: if (std::abs(__del) < __eps * std::abs(__ans))
23866: return __ans;
23866: }
23866: std::__throw_runtime_error(("Series summation failed " "in __expint_En_series.")
23866: );
23866: }
23866: # 201 "/usr/include/c++/10/tr1/exp_integral.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __expint_En_cont_frac(unsigned int __n, _Tp __x)
23866: {
23866: const unsigned int __max_iter = 1000;
23866: const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
23866: const _Tp __fp_min = std::numeric_limits<_Tp>::min();
23866: const int __nm1 = __n - 1;
23866: _Tp __b = __x + _Tp(__n);
23866: _Tp __c = _Tp(1) / __fp_min;
23866: _Tp __d = _Tp(1) / __b;
23866: _Tp __h = __d;
23866: for ( unsigned int __i = 1; __i <= __max_iter; ++__i )
23866: {
23866: _Tp __a = -_Tp(__i * (__nm1 + __i));
23866: __b += _Tp(2);
23866: __d = _Tp(1) / (__a * __d + __b);
23866: __c = __b + __a / __c;
23866: const _Tp __del = __c * __d;
23866: __h *= __del;
23866: if (std::abs(__del - _Tp(1)) < __eps)
23866: {
23866: const _Tp __ans = __h * std::exp(-__x);
23866: return __ans;
23866: }
23866: }
23866: std::__throw_runtime_error(("Continued fraction failed " "in __expint_En_cont_frac.")
23866: );
23866: }
23866: # 246 "/usr/include/c++/10/tr1/exp_integral.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __expint_En_recursion(unsigned int __n, _Tp __x)
23866: {
23866: _Tp __En;
23866: _Tp __E1 = __expint_E1(__x);
23866: if (__x < _Tp(__n))
23866: {
23866:
23866: __En = __E1;
23866: for (unsigned int __j = 2; __j < __n; ++__j)
23866: __En = (std::exp(-__x) - __x * __En) / _Tp(__j - 1);
23866: }
23866: else
23866: {
23866:
23866: __En = _Tp(1);
23866: const int __N = __n + 20;
23866: _Tp __save = _Tp(0);
23866: for (int __j = __N; __j > 0; --__j)
23866: {
23866: __En = (std::exp(-__x) - __j * __En) / __x;
23866: if (__j == __n)
23866: __save = __En;
23866: }
23866: _Tp __norm = __En / __E1;
23866: __En /= __norm;
23866: }
23866:
23866: return __En;
23866: }
23866: # 290 "/usr/include/c++/10/tr1/exp_integral.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __expint_Ei_series(_Tp __x)
23866: {
23866: _Tp __term = _Tp(1);
23866: _Tp __sum = _Tp(0);
23866: const unsigned int __max_iter = 1000;
23866: for (unsigned int __i = 1; __i < __max_iter; ++__i)
23866: {
23866: __term *= __x / __i;
23866: __sum += __term / __i;
23866: if (__term < std::numeric_limits<_Tp>::epsilon() * __sum)
23866: break;
23866: }
23866:
23866: return __numeric_constants<_Tp>::__gamma_e() + __sum + std::log(__x);
23866: }
23866: # 321 "/usr/include/c++/10/tr1/exp_integral.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __expint_Ei_asymp(_Tp __x)
23866: {
23866: _Tp __term = _Tp(1);
23866: _Tp __sum = _Tp(1);
23866: const unsigned int __max_iter = 1000;
23866: for (unsigned int __i = 1; __i < __max_iter; ++__i)
23866: {
23866: _Tp __prev = __term;
23866: __term *= __i / __x;
23866: if (__term < std::numeric_limits<_Tp>::epsilon())
23866: break;
23866: if (__term >= __prev)
23866: break;
23866: __sum += __term;
23866: }
23866:
23866: return std::exp(__x) * __sum / __x;
23866: }
23866: # 354 "/usr/include/c++/10/tr1/exp_integral.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __expint_Ei(_Tp __x)
23866: {
23866: if (__x < _Tp(0))
23866: return -__expint_E1(-__x);
23866: else if (__x < -std::log(std::numeric_limits<_Tp>::epsilon()))
23866: return __expint_Ei_series(__x);
23866: else
23866: return __expint_Ei_asymp(__x);
23866: }
23866: # 378 "/usr/include/c++/10/tr1/exp_integral.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __expint_E1(_Tp __x)
23866: {
23866: if (__x < _Tp(0))
23866: return -__expint_Ei(-__x);
23866: else if (__x < _Tp(1))
23866: return __expint_E1_series(__x);
23866: else if (__x < _Tp(100))
23866: return __expint_En_cont_frac(1, __x);
23866: else
23866: return __expint_E1_asymp(__x);
23866: }
23866: # 408 "/usr/include/c++/10/tr1/exp_integral.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __expint_asymp(unsigned int __n, _Tp __x)
23866: {
23866: _Tp __term = _Tp(1);
23866: _Tp __sum = _Tp(1);
23866: for (unsigned int __i = 1; __i <= __n; ++__i)
23866: {
23866: _Tp __prev = __term;
23866: __term *= -(__n - __i + 1) / __x;
23866: if (std::abs(__term) > std::abs(__prev))
23866: break;
23866: __sum += __term;
23866: }
23866:
23866: return std::exp(-__x) * __sum / __x;
23866: }
23866: # 442 "/usr/include/c++/10/tr1/exp_integral.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __expint_large_n(unsigned int __n, _Tp __x)
23866: {
23866: const _Tp __xpn = __x + __n;
23866: const _Tp __xpn2 = __xpn * __xpn;
23866: _Tp __term = _Tp(1);
23866: _Tp __sum = _Tp(1);
23866: for (unsigned int __i = 1; __i <= __n; ++__i)
23866: {
23866: _Tp __prev = __term;
23866: __term *= (__n - 2 * (__i - 1) * __x) / __xpn2;
23866: if (std::abs(__term) < std::numeric_limits<_Tp>::epsilon())
23866: break;
23866: __sum += __term;
23866: }
23866:
23866: return std::exp(-__x) * __sum / __xpn;
23866: }
23866: # 476 "/usr/include/c++/10/tr1/exp_integral.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __expint(unsigned int __n, _Tp __x)
23866: {
23866:
23866: if (__isnan(__x))
23866: return std::numeric_limits<_Tp>::quiet_NaN();
23866: else if (__n <= 1 && __x == _Tp(0))
23866: return std::numeric_limits<_Tp>::infinity();
23866: else
23866: {
23866: _Tp __E0 = std::exp(__x) / __x;
23866: if (__n == 0)
23866: return __E0;
23866:
23866: _Tp __E1 = __expint_E1(__x);
23866: if (__n == 1)
23866: return __E1;
23866:
23866: if (__x == _Tp(0))
23866: return _Tp(1) / static_cast<_Tp>(__n - 1);
23866:
23866: _Tp __En = __expint_En_recursion(__n, __x);
23866:
23866: return __En;
23866: }
23866: }
23866: # 516 "/usr/include/c++/10/tr1/exp_integral.tcc" 3
23866: template<typename _Tp>
23866: inline _Tp
23866: __expint(_Tp __x)
23866: {
23866: if (__isnan(__x))
23866: return std::numeric_limits<_Tp>::quiet_NaN();
23866: else
23866: return __expint_Ei(__x);
23866: }
23866: }
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 54 "/usr/include/c++/10/bits/specfun.h" 2 3
23866: # 1 "/usr/include/c++/10/tr1/hypergeometric.tcc" 1 3
23866: # 42 "/usr/include/c++/10/tr1/hypergeometric.tcc" 3
23866: #define _GLIBCXX_TR1_HYPERGEOMETRIC_TCC 1
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: #define _GLIBCXX_MATH_NS ::std
23866: # 60 "/usr/include/c++/10/tr1/hypergeometric.tcc" 3
23866: namespace __detail
23866: {
23866: # 83 "/usr/include/c++/10/tr1/hypergeometric.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __conf_hyperg_series(_Tp __a, _Tp __c, _Tp __x)
23866: {
23866: const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
23866:
23866: _Tp __term = _Tp(1);
23866: _Tp __Fac = _Tp(1);
23866: const unsigned int __max_iter = 100000;
23866: unsigned int __i;
23866: for (__i = 0; __i < __max_iter; ++__i)
23866: {
23866: __term *= (__a + _Tp(__i)) * __x
23866: / ((__c + _Tp(__i)) * _Tp(1 + __i));
23866: if (std::abs(__term) < __eps)
23866: {
23866: break;
23866: }
23866: __Fac += __term;
23866: }
23866: if (__i == __max_iter)
23866: std::__throw_runtime_error(("Series failed to converge " "in __conf_hyperg_series.")
23866: );
23866:
23866: return __Fac;
23866: }
23866: # 120 "/usr/include/c++/10/tr1/hypergeometric.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __conf_hyperg_luke(_Tp __a, _Tp __c, _Tp __xin)
23866: {
23866: const _Tp __big = std::pow(std::numeric_limits<_Tp>::max(), _Tp(0.16L));
23866: const int __nmax = 20000;
23866: const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
23866: const _Tp __x = -__xin;
23866: const _Tp __x3 = __x * __x * __x;
23866: const _Tp __t0 = __a / __c;
23866: const _Tp __t1 = (__a + _Tp(1)) / (_Tp(2) * __c);
23866: const _Tp __t2 = (__a + _Tp(2)) / (_Tp(2) * (__c + _Tp(1)));
23866: _Tp __F = _Tp(1);
23866: _Tp __prec;
23866:
23866: _Tp __Bnm3 = _Tp(1);
23866: _Tp __Bnm2 = _Tp(1) + __t1 * __x;
23866: _Tp __Bnm1 = _Tp(1) + __t2 * __x * (_Tp(1) + __t1 / _Tp(3) * __x);
23866:
23866: _Tp __Anm3 = _Tp(1);
23866: _Tp __Anm2 = __Bnm2 - __t0 * __x;
23866: _Tp __Anm1 = __Bnm1 - __t0 * (_Tp(1) + __t2 * __x) * __x
23866: + __t0 * __t1 * (__c / (__c + _Tp(1))) * __x * __x;
23866:
23866: int __n = 3;
23866: while(1)
23866: {
23866: _Tp __npam1 = _Tp(__n - 1) + __a;
23866: _Tp __npcm1 = _Tp(__n - 1) + __c;
23866: _Tp __npam2 = _Tp(__n - 2) + __a;
23866: _Tp __npcm2 = _Tp(__n - 2) + __c;
23866: _Tp __tnm1 = _Tp(2 * __n - 1);
23866: _Tp __tnm3 = _Tp(2 * __n - 3);
23866: _Tp __tnm5 = _Tp(2 * __n - 5);
23866: _Tp __F1 = (_Tp(__n - 2) - __a) / (_Tp(2) * __tnm3 * __npcm1);
23866: _Tp __F2 = (_Tp(__n) + __a) * __npam1
23866: / (_Tp(4) * __tnm1 * __tnm3 * __npcm2 * __npcm1);
23866: _Tp __F3 = -__npam2 * __npam1 * (_Tp(__n - 2) - __a)
23866: / (_Tp(8) * __tnm3 * __tnm3 * __tnm5
23866: * (_Tp(__n - 3) + __c) * __npcm2 * __npcm1);
23866: _Tp __E = -__npam1 * (_Tp(__n - 1) - __c)
23866: / (_Tp(2) * __tnm3 * __npcm2 * __npcm1);
23866:
23866: _Tp __An = (_Tp(1) + __F1 * __x) * __Anm1
23866: + (__E + __F2 * __x) * __x * __Anm2 + __F3 * __x3 * __Anm3;
23866: _Tp __Bn = (_Tp(1) + __F1 * __x) * __Bnm1
23866: + (__E + __F2 * __x) * __x * __Bnm2 + __F3 * __x3 * __Bnm3;
23866: _Tp __r = __An / __Bn;
23866:
23866: __prec = std::abs((__F - __r) / __F);
23866: __F = __r;
23866:
23866: if (__prec < __eps || __n > __nmax)
23866: break;
23866:
23866: if (std::abs(__An) > __big || std::abs(__Bn) > __big)
23866: {
23866: __An /= __big;
23866: __Bn /= __big;
23866: __Anm1 /= __big;
23866: __Bnm1 /= __big;
23866: __Anm2 /= __big;
23866: __Bnm2 /= __big;
23866: __Anm3 /= __big;
23866: __Bnm3 /= __big;
23866: }
23866: else if (std::abs(__An) < _Tp(1) / __big
23866: || std::abs(__Bn) < _Tp(1) / __big)
23866: {
23866: __An *= __big;
23866: __Bn *= __big;
23866: __Anm1 *= __big;
23866: __Bnm1 *= __big;
23866: __Anm2 *= __big;
23866: __Bnm2 *= __big;
23866: __Anm3 *= __big;
23866: __Bnm3 *= __big;
23866: }
23866:
23866: ++__n;
23866: __Bnm3 = __Bnm2;
23866: __Bnm2 = __Bnm1;
23866: __Bnm1 = __Bn;
23866: __Anm3 = __Anm2;
23866: __Anm2 = __Anm1;
23866: __Anm1 = __An;
23866: }
23866:
23866: if (__n >= __nmax)
23866: std::__throw_runtime_error(("Iteration failed to converge " "in __conf_hyperg_luke.")
23866: );
23866:
23866: return __F;
23866: }
23866: # 227 "/usr/include/c++/10/tr1/hypergeometric.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __conf_hyperg(_Tp __a, _Tp __c, _Tp __x)
23866: {
23866:
23866: const _Tp __c_nint = ::std::nearbyint(__c);
23866:
23866:
23866:
23866: if (__isnan(__a) || __isnan(__c) || __isnan(__x))
23866: return std::numeric_limits<_Tp>::quiet_NaN();
23866: else if (__c_nint == __c && __c_nint <= 0)
23866: return std::numeric_limits<_Tp>::infinity();
23866: else if (__a == _Tp(0))
23866: return _Tp(1);
23866: else if (__c == __a)
23866: return std::exp(__x);
23866: else if (__x < _Tp(0))
23866: return __conf_hyperg_luke(__a, __c, __x);
23866: else
23866: return __conf_hyperg_series(__a, __c, __x);
23866: }
23866: # 271 "/usr/include/c++/10/tr1/hypergeometric.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __hyperg_series(_Tp __a, _Tp __b, _Tp __c, _Tp __x)
23866: {
23866: const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
23866:
23866: _Tp __term = _Tp(1);
23866: _Tp __Fabc = _Tp(1);
23866: const unsigned int __max_iter = 100000;
23866: unsigned int __i;
23866: for (__i = 0; __i < __max_iter; ++__i)
23866: {
23866: __term *= (__a + _Tp(__i)) * (__b + _Tp(__i)) * __x
23866: / ((__c + _Tp(__i)) * _Tp(1 + __i));
23866: if (std::abs(__term) < __eps)
23866: {
23866: break;
23866: }
23866: __Fabc += __term;
23866: }
23866: if (__i == __max_iter)
23866: std::__throw_runtime_error(("Series failed to converge " "in __hyperg_series.")
23866: );
23866:
23866: return __Fabc;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: _Tp
23866: __hyperg_luke(_Tp __a, _Tp __b, _Tp __c, _Tp __xin)
23866: {
23866: const _Tp __big = std::pow(std::numeric_limits<_Tp>::max(), _Tp(0.16L));
23866: const int __nmax = 20000;
23866: const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
23866: const _Tp __x = -__xin;
23866: const _Tp __x3 = __x * __x * __x;
23866: const _Tp __t0 = __a * __b / __c;
23866: const _Tp __t1 = (__a + _Tp(1)) * (__b + _Tp(1)) / (_Tp(2) * __c);
23866: const _Tp __t2 = (__a + _Tp(2)) * (__b + _Tp(2))
23866: / (_Tp(2) * (__c + _Tp(1)));
23866:
23866: _Tp __F = _Tp(1);
23866:
23866: _Tp __Bnm3 = _Tp(1);
23866: _Tp __Bnm2 = _Tp(1) + __t1 * __x;
23866: _Tp __Bnm1 = _Tp(1) + __t2 * __x * (_Tp(1) + __t1 / _Tp(3) * __x);
23866:
23866: _Tp __Anm3 = _Tp(1);
23866: _Tp __Anm2 = __Bnm2 - __t0 * __x;
23866: _Tp __Anm1 = __Bnm1 - __t0 * (_Tp(1) + __t2 * __x) * __x
23866: + __t0 * __t1 * (__c / (__c + _Tp(1))) * __x * __x;
23866:
23866: int __n = 3;
23866: while (1)
23866: {
23866: const _Tp __npam1 = _Tp(__n - 1) + __a;
23866: const _Tp __npbm1 = _Tp(__n - 1) + __b;
23866: const _Tp __npcm1 = _Tp(__n - 1) + __c;
23866: const _Tp __npam2 = _Tp(__n - 2) + __a;
23866: const _Tp __npbm2 = _Tp(__n - 2) + __b;
23866: const _Tp __npcm2 = _Tp(__n - 2) + __c;
23866: const _Tp __tnm1 = _Tp(2 * __n - 1);
23866: const _Tp __tnm3 = _Tp(2 * __n - 3);
23866: const _Tp __tnm5 = _Tp(2 * __n - 5);
23866: const _Tp __n2 = __n * __n;
23866: const _Tp __F1 = (_Tp(3) * __n2 + (__a + __b - _Tp(6)) * __n
23866: + _Tp(2) - __a * __b - _Tp(2) * (__a + __b))
23866: / (_Tp(2) * __tnm3 * __npcm1);
23866: const _Tp __F2 = -(_Tp(3) * __n2 - (__a + __b + _Tp(6)) * __n
23866: + _Tp(2) - __a * __b) * __npam1 * __npbm1
23866: / (_Tp(4) * __tnm1 * __tnm3 * __npcm2 * __npcm1);
23866: const _Tp __F3 = (__npam2 * __npam1 * __npbm2 * __npbm1
23866: * (_Tp(__n - 2) - __a) * (_Tp(__n - 2) - __b))
23866: / (_Tp(8) * __tnm3 * __tnm3 * __tnm5
23866: * (_Tp(__n - 3) + __c) * __npcm2 * __npcm1);
23866: const _Tp __E = -__npam1 * __npbm1 * (_Tp(__n - 1) - __c)
23866: / (_Tp(2) * __tnm3 * __npcm2 * __npcm1);
23866:
23866: _Tp __An = (_Tp(1) + __F1 * __x) * __Anm1
23866: + (__E + __F2 * __x) * __x * __Anm2 + __F3 * __x3 * __Anm3;
23866: _Tp __Bn = (_Tp(1) + __F1 * __x) * __Bnm1
23866: + (__E + __F2 * __x) * __x * __Bnm2 + __F3 * __x3 * __Bnm3;
23866: const _Tp __r = __An / __Bn;
23866:
23866: const _Tp __prec = std::abs((__F - __r) / __F);
23866: __F = __r;
23866:
23866: if (__prec < __eps || __n > __nmax)
23866: break;
23866:
23866: if (std::abs(__An) > __big || std::abs(__Bn) > __big)
23866: {
23866: __An /= __big;
23866: __Bn /= __big;
23866: __Anm1 /= __big;
23866: __Bnm1 /= __big;
23866: __Anm2 /= __big;
23866: __Bnm2 /= __big;
23866: __Anm3 /= __big;
23866: __Bnm3 /= __big;
23866: }
23866: else if (std::abs(__An) < _Tp(1) / __big
23866: || std::abs(__Bn) < _Tp(1) / __big)
23866: {
23866: __An *= __big;
23866: __Bn *= __big;
23866: __Anm1 *= __big;
23866: __Bnm1 *= __big;
23866: __Anm2 *= __big;
23866: __Bnm2 *= __big;
23866: __Anm3 *= __big;
23866: __Bnm3 *= __big;
23866: }
23866:
23866: ++__n;
23866: __Bnm3 = __Bnm2;
23866: __Bnm2 = __Bnm1;
23866: __Bnm1 = __Bn;
23866: __Anm3 = __Anm2;
23866: __Anm2 = __Anm1;
23866: __Anm1 = __An;
23866: }
23866:
23866: if (__n >= __nmax)
23866: std::__throw_runtime_error(("Iteration failed to converge " "in __hyperg_luke.")
23866: );
23866:
23866: return __F;
23866: }
23866: # 438 "/usr/include/c++/10/tr1/hypergeometric.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __hyperg_reflect(_Tp __a, _Tp __b, _Tp __c, _Tp __x)
23866: {
23866: const _Tp __d = __c - __a - __b;
23866: const int __intd = std::floor(__d + _Tp(0.5L));
23866: const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
23866: const _Tp __toler = _Tp(1000) * __eps;
23866: const _Tp __log_max = std::log(std::numeric_limits<_Tp>::max());
23866: const bool __d_integer = (std::abs(__d - __intd) < __toler);
23866:
23866: if (__d_integer)
23866: {
23866: const _Tp __ln_omx = std::log(_Tp(1) - __x);
23866: const _Tp __ad = std::abs(__d);
23866: _Tp __F1, __F2;
23866:
23866: _Tp __d1, __d2;
23866: if (__d >= _Tp(0))
23866: {
23866: __d1 = __d;
23866: __d2 = _Tp(0);
23866: }
23866: else
23866: {
23866: __d1 = _Tp(0);
23866: __d2 = __d;
23866: }
23866:
23866: const _Tp __lng_c = __log_gamma(__c);
23866:
23866:
23866: if (__ad < __eps)
23866: {
23866:
23866: __F1 = _Tp(0);
23866: }
23866: else
23866: {
23866:
23866: bool __ok_d1 = true;
23866: _Tp __lng_ad, __lng_ad1, __lng_bd1;
23866: try
23866: {
23866: __lng_ad = __log_gamma(__ad);
23866: __lng_ad1 = __log_gamma(__a + __d1);
23866: __lng_bd1 = __log_gamma(__b + __d1);
23866: }
23866: catch(...)
23866: {
23866: __ok_d1 = false;
23866: }
23866:
23866: if (__ok_d1)
23866: {
23866:
23866:
23866:
23866: _Tp __sum1 = _Tp(1);
23866: _Tp __term = _Tp(1);
23866: _Tp __ln_pre1 = __lng_ad + __lng_c + __d2 * __ln_omx
23866: - __lng_ad1 - __lng_bd1;
23866:
23866:
23866:
23866: for (int __i = 1; __i < __ad; ++__i)
23866: {
23866: const int __j = __i - 1;
23866: __term *= (__a + __d2 + __j) * (__b + __d2 + __j)
23866: / (_Tp(1) + __d2 + __j) / __i * (_Tp(1) - __x);
23866: __sum1 += __term;
23866: }
23866:
23866: if (__ln_pre1 > __log_max)
23866: std::__throw_runtime_error(("Overflow of gamma functions" " in __hyperg_luke.")
23866: );
23866: else
23866: __F1 = std::exp(__ln_pre1) * __sum1;
23866: }
23866: else
23866: {
23866:
23866:
23866: __F1 = _Tp(0);
23866: }
23866: }
23866:
23866:
23866: bool __ok_d2 = true;
23866: _Tp __lng_ad2, __lng_bd2;
23866: try
23866: {
23866: __lng_ad2 = __log_gamma(__a + __d2);
23866: __lng_bd2 = __log_gamma(__b + __d2);
23866: }
23866: catch(...)
23866: {
23866: __ok_d2 = false;
23866: }
23866:
23866: if (__ok_d2)
23866: {
23866:
23866:
23866: const int __maxiter = 2000;
23866: const _Tp __psi_1 = -__numeric_constants<_Tp>::__gamma_e();
23866: const _Tp __psi_1pd = __psi(_Tp(1) + __ad);
23866: const _Tp __psi_apd1 = __psi(__a + __d1);
23866: const _Tp __psi_bpd1 = __psi(__b + __d1);
23866:
23866: _Tp __psi_term = __psi_1 + __psi_1pd - __psi_apd1
23866: - __psi_bpd1 - __ln_omx;
23866: _Tp __fact = _Tp(1);
23866: _Tp __sum2 = __psi_term;
23866: _Tp __ln_pre2 = __lng_c + __d1 * __ln_omx
23866: - __lng_ad2 - __lng_bd2;
23866:
23866:
23866: int __j;
23866: for (__j = 1; __j < __maxiter; ++__j)
23866: {
23866:
23866:
23866: const _Tp __term1 = _Tp(1) / _Tp(__j)
23866: + _Tp(1) / (__ad + __j);
23866: const _Tp __term2 = _Tp(1) / (__a + __d1 + _Tp(__j - 1))
23866: + _Tp(1) / (__b + __d1 + _Tp(__j - 1));
23866: __psi_term += __term1 - __term2;
23866: __fact *= (__a + __d1 + _Tp(__j - 1))
23866: * (__b + __d1 + _Tp(__j - 1))
23866: / ((__ad + __j) * __j) * (_Tp(1) - __x);
23866: const _Tp __delta = __fact * __psi_term;
23866: __sum2 += __delta;
23866: if (std::abs(__delta) < __eps * std::abs(__sum2))
23866: break;
23866: }
23866: if (__j == __maxiter)
23866: std::__throw_runtime_error(("Sum F2 failed to converge " "in __hyperg_reflect")
23866: );
23866:
23866: if (__sum2 == _Tp(0))
23866: __F2 = _Tp(0);
23866: else
23866: __F2 = std::exp(__ln_pre2) * __sum2;
23866: }
23866: else
23866: {
23866:
23866:
23866: __F2 = _Tp(0);
23866: }
23866:
23866: const _Tp __sgn_2 = (__intd % 2 == 1 ? -_Tp(1) : _Tp(1));
23866: const _Tp __F = __F1 + __sgn_2 * __F2;
23866:
23866: return __F;
23866: }
23866: else
23866: {
23866:
23866:
23866:
23866:
23866: bool __ok1 = true;
23866: _Tp __sgn_g1ca = _Tp(0), __ln_g1ca = _Tp(0);
23866: _Tp __sgn_g1cb = _Tp(0), __ln_g1cb = _Tp(0);
23866: try
23866: {
23866: __sgn_g1ca = __log_gamma_sign(__c - __a);
23866: __ln_g1ca = __log_gamma(__c - __a);
23866: __sgn_g1cb = __log_gamma_sign(__c - __b);
23866: __ln_g1cb = __log_gamma(__c - __b);
23866: }
23866: catch(...)
23866: {
23866: __ok1 = false;
23866: }
23866:
23866: bool __ok2 = true;
23866: _Tp __sgn_g2a = _Tp(0), __ln_g2a = _Tp(0);
23866: _Tp __sgn_g2b = _Tp(0), __ln_g2b = _Tp(0);
23866: try
23866: {
23866: __sgn_g2a = __log_gamma_sign(__a);
23866: __ln_g2a = __log_gamma(__a);
23866: __sgn_g2b = __log_gamma_sign(__b);
23866: __ln_g2b = __log_gamma(__b);
23866: }
23866: catch(...)
23866: {
23866: __ok2 = false;
23866: }
23866:
23866: const _Tp __sgn_gc = __log_gamma_sign(__c);
23866: const _Tp __ln_gc = __log_gamma(__c);
23866: const _Tp __sgn_gd = __log_gamma_sign(__d);
23866: const _Tp __ln_gd = __log_gamma(__d);
23866: const _Tp __sgn_gmd = __log_gamma_sign(-__d);
23866: const _Tp __ln_gmd = __log_gamma(-__d);
23866:
23866: const _Tp __sgn1 = __sgn_gc * __sgn_gd * __sgn_g1ca * __sgn_g1cb;
23866: const _Tp __sgn2 = __sgn_gc * __sgn_gmd * __sgn_g2a * __sgn_g2b;
23866:
23866: _Tp __pre1, __pre2;
23866: if (__ok1 && __ok2)
23866: {
23866: _Tp __ln_pre1 = __ln_gc + __ln_gd - __ln_g1ca - __ln_g1cb;
23866: _Tp __ln_pre2 = __ln_gc + __ln_gmd - __ln_g2a - __ln_g2b
23866: + __d * std::log(_Tp(1) - __x);
23866: if (__ln_pre1 < __log_max && __ln_pre2 < __log_max)
23866: {
23866: __pre1 = std::exp(__ln_pre1);
23866: __pre2 = std::exp(__ln_pre2);
23866: __pre1 *= __sgn1;
23866: __pre2 *= __sgn2;
23866: }
23866: else
23866: {
23866: std::__throw_runtime_error(("Overflow of gamma functions " "in __hyperg_reflect")
23866: );
23866: }
23866: }
23866: else if (__ok1 && !__ok2)
23866: {
23866: _Tp __ln_pre1 = __ln_gc + __ln_gd - __ln_g1ca - __ln_g1cb;
23866: if (__ln_pre1 < __log_max)
23866: {
23866: __pre1 = std::exp(__ln_pre1);
23866: __pre1 *= __sgn1;
23866: __pre2 = _Tp(0);
23866: }
23866: else
23866: {
23866: std::__throw_runtime_error(("Overflow of gamma functions " "in __hyperg_reflect")
23866: );
23866: }
23866: }
23866: else if (!__ok1 && __ok2)
23866: {
23866: _Tp __ln_pre2 = __ln_gc + __ln_gmd - __ln_g2a - __ln_g2b
23866: + __d * std::log(_Tp(1) - __x);
23866: if (__ln_pre2 < __log_max)
23866: {
23866: __pre1 = _Tp(0);
23866: __pre2 = std::exp(__ln_pre2);
23866: __pre2 *= __sgn2;
23866: }
23866: else
23866: {
23866: std::__throw_runtime_error(("Overflow of gamma functions " "in __hyperg_reflect")
23866: );
23866: }
23866: }
23866: else
23866: {
23866: __pre1 = _Tp(0);
23866: __pre2 = _Tp(0);
23866: std::__throw_runtime_error(("Underflow of gamma functions " "in __hyperg_reflect")
23866: );
23866: }
23866:
23866: const _Tp __F1 = __hyperg_series(__a, __b, _Tp(1) - __d,
23866: _Tp(1) - __x);
23866: const _Tp __F2 = __hyperg_series(__c - __a, __c - __b, _Tp(1) + __d,
23866: _Tp(1) - __x);
23866:
23866: const _Tp __F = __pre1 * __F1 + __pre2 * __F2;
23866:
23866: return __F;
23866: }
23866: }
23866: # 728 "/usr/include/c++/10/tr1/hypergeometric.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __hyperg(_Tp __a, _Tp __b, _Tp __c, _Tp __x)
23866: {
23866:
23866: const _Tp __a_nint = ::std::nearbyint(__a);
23866: const _Tp __b_nint = ::std::nearbyint(__b);
23866: const _Tp __c_nint = ::std::nearbyint(__c);
23866:
23866:
23866:
23866:
23866:
23866: const _Tp __toler = _Tp(1000) * std::numeric_limits<_Tp>::epsilon();
23866: if (std::abs(__x) >= _Tp(1))
23866: std::__throw_domain_error(("Argument outside unit circle " "in __hyperg.")
23866: );
23866: else if (__isnan(__a) || __isnan(__b)
23866: || __isnan(__c) || __isnan(__x))
23866: return std::numeric_limits<_Tp>::quiet_NaN();
23866: else if (__c_nint == __c && __c_nint <= _Tp(0))
23866: return std::numeric_limits<_Tp>::infinity();
23866: else if (std::abs(__c - __b) < __toler || std::abs(__c - __a) < __toler)
23866: return std::pow(_Tp(1) - __x, __c - __a - __b);
23866: else if (__a >= _Tp(0) && __b >= _Tp(0) && __c >= _Tp(0)
23866: && __x >= _Tp(0) && __x < _Tp(0.995L))
23866: return __hyperg_series(__a, __b, __c, __x);
23866: else if (std::abs(__a) < _Tp(10) && std::abs(__b) < _Tp(10))
23866: {
23866:
23866:
23866: if (__a < _Tp(0) && std::abs(__a - __a_nint) < __toler)
23866: return __hyperg_series(__a_nint, __b, __c, __x);
23866: else if (__b < _Tp(0) && std::abs(__b - __b_nint) < __toler)
23866: return __hyperg_series(__a, __b_nint, __c, __x);
23866: else if (__x < -_Tp(0.25L))
23866: return __hyperg_luke(__a, __b, __c, __x);
23866: else if (__x < _Tp(0.5L))
23866: return __hyperg_series(__a, __b, __c, __x);
23866: else
23866: if (std::abs(__c) > _Tp(10))
23866: return __hyperg_series(__a, __b, __c, __x);
23866: else
23866: return __hyperg_reflect(__a, __b, __c, __x);
23866: }
23866: else
23866: return __hyperg_luke(__a, __b, __c, __x);
23866: }
23866: }
23866: #undef _GLIBCXX_MATH_NS
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 55 "/usr/include/c++/10/bits/specfun.h" 2 3
23866: # 1 "/usr/include/c++/10/tr1/legendre_function.tcc" 1 3
23866: # 45 "/usr/include/c++/10/tr1/legendre_function.tcc" 3
23866: #define _GLIBCXX_TR1_LEGENDRE_FUNCTION_TCC 1
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: #define _GLIBCXX_MATH_NS ::std
23866: # 65 "/usr/include/c++/10/tr1/legendre_function.tcc" 3
23866: namespace __detail
23866: {
23866: # 80 "/usr/include/c++/10/tr1/legendre_function.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __poly_legendre_p(unsigned int __l, _Tp __x)
23866: {
23866:
23866: if (__isnan(__x))
23866: return std::numeric_limits<_Tp>::quiet_NaN();
23866: else if (__x == +_Tp(1))
23866: return +_Tp(1);
23866: else if (__x == -_Tp(1))
23866: return (__l % 2 == 1 ? -_Tp(1) : +_Tp(1));
23866: else
23866: {
23866: _Tp __p_lm2 = _Tp(1);
23866: if (__l == 0)
23866: return __p_lm2;
23866:
23866: _Tp __p_lm1 = __x;
23866: if (__l == 1)
23866: return __p_lm1;
23866:
23866: _Tp __p_l = 0;
23866: for (unsigned int __ll = 2; __ll <= __l; ++__ll)
23866: {
23866:
23866:
23866: __p_l = _Tp(2) * __x * __p_lm1 - __p_lm2
23866: - (__x * __p_lm1 - __p_lm2) / _Tp(__ll);
23866: __p_lm2 = __p_lm1;
23866: __p_lm1 = __p_l;
23866: }
23866:
23866: return __p_l;
23866: }
23866: }
23866: # 136 "/usr/include/c++/10/tr1/legendre_function.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __assoc_legendre_p(unsigned int __l, unsigned int __m, _Tp __x,
23866: _Tp __phase = _Tp(+1))
23866: {
23866:
23866: if (__m > __l)
23866: return _Tp(0);
23866: else if (__isnan(__x))
23866: return std::numeric_limits<_Tp>::quiet_NaN();
23866: else if (__m == 0)
23866: return __poly_legendre_p(__l, __x);
23866: else
23866: {
23866: _Tp __p_mm = _Tp(1);
23866: if (__m > 0)
23866: {
23866:
23866:
23866: _Tp __root = std::sqrt(_Tp(1) - __x) * std::sqrt(_Tp(1) + __x);
23866: _Tp __fact = _Tp(1);
23866: for (unsigned int __i = 1; __i <= __m; ++__i)
23866: {
23866: __p_mm *= __phase * __fact * __root;
23866: __fact += _Tp(2);
23866: }
23866: }
23866: if (__l == __m)
23866: return __p_mm;
23866:
23866: _Tp __p_mp1m = _Tp(2 * __m + 1) * __x * __p_mm;
23866: if (__l == __m + 1)
23866: return __p_mp1m;
23866:
23866: _Tp __p_lm2m = __p_mm;
23866: _Tp __P_lm1m = __p_mp1m;
23866: _Tp __p_lm = _Tp(0);
23866: for (unsigned int __j = __m + 2; __j <= __l; ++__j)
23866: {
23866: __p_lm = (_Tp(2 * __j - 1) * __x * __P_lm1m
23866: - _Tp(__j + __m - 1) * __p_lm2m) / _Tp(__j - __m);
23866: __p_lm2m = __P_lm1m;
23866: __P_lm1m = __p_lm;
23866: }
23866:
23866: return __p_lm;
23866: }
23866: }
23866: # 214 "/usr/include/c++/10/tr1/legendre_function.tcc" 3
23866: template <typename _Tp>
23866: _Tp
23866: __sph_legendre(unsigned int __l, unsigned int __m, _Tp __theta)
23866: {
23866: if (__isnan(__theta))
23866: return std::numeric_limits<_Tp>::quiet_NaN();
23866:
23866: const _Tp __x = std::cos(__theta);
23866:
23866: if (__m > __l)
23866: return _Tp(0);
23866: else if (__m == 0)
23866: {
23866: _Tp __P = __poly_legendre_p(__l, __x);
23866: _Tp __fact = std::sqrt(_Tp(2 * __l + 1)
23866: / (_Tp(4) * __numeric_constants<_Tp>::__pi()));
23866: __P *= __fact;
23866: return __P;
23866: }
23866: else if (__x == _Tp(1) || __x == -_Tp(1))
23866: {
23866:
23866: return _Tp(0);
23866: }
23866: else
23866: {
23866:
23866:
23866:
23866:
23866:
23866: const _Tp __sgn = ( __m % 2 == 1 ? -_Tp(1) : _Tp(1));
23866: const _Tp __y_mp1m_factor = __x * std::sqrt(_Tp(2 * __m + 3));
23866:
23866: const _Tp __lncirc = ::std::log1p(-__x * __x);
23866:
23866:
23866:
23866:
23866:
23866: const _Tp __lnpoch = ::std::lgamma(_Tp(__m + _Tp(0.5L)))
23866: - ::std::lgamma(_Tp(__m));
23866:
23866:
23866:
23866:
23866: const _Tp __lnpre_val =
23866: -_Tp(0.25L) * __numeric_constants<_Tp>::__lnpi()
23866: + _Tp(0.5L) * (__lnpoch + __m * __lncirc);
23866: const _Tp __sr = std::sqrt((_Tp(2) + _Tp(1) / __m)
23866: / (_Tp(4) * __numeric_constants<_Tp>::__pi()));
23866: _Tp __y_mm = __sgn * __sr * std::exp(__lnpre_val);
23866: _Tp __y_mp1m = __y_mp1m_factor * __y_mm;
23866:
23866: if (__l == __m)
23866: return __y_mm;
23866: else if (__l == __m + 1)
23866: return __y_mp1m;
23866: else
23866: {
23866: _Tp __y_lm = _Tp(0);
23866:
23866:
23866: for (int __ll = __m + 2; __ll <= __l; ++__ll)
23866: {
23866: const _Tp __rat1 = _Tp(__ll - __m) / _Tp(__ll + __m);
23866: const _Tp __rat2 = _Tp(__ll - __m - 1) / _Tp(__ll + __m - 1);
23866: const _Tp __fact1 = std::sqrt(__rat1 * _Tp(2 * __ll + 1)
23866: * _Tp(2 * __ll - 1));
23866: const _Tp __fact2 = std::sqrt(__rat1 * __rat2 * _Tp(2 * __ll + 1)
23866: / _Tp(2 * __ll - 3));
23866: __y_lm = (__x * __y_mp1m * __fact1
23866: - (__ll + __m - 1) * __y_mm * __fact2) / _Tp(__ll - __m);
23866: __y_mm = __y_mp1m;
23866: __y_mp1m = __y_lm;
23866: }
23866:
23866: return __y_lm;
23866: }
23866: }
23866: }
23866: }
23866: #undef _GLIBCXX_MATH_NS
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 56 "/usr/include/c++/10/bits/specfun.h" 2 3
23866: # 1 "/usr/include/c++/10/tr1/modified_bessel_func.tcc" 1 3
23866: # 47 "/usr/include/c++/10/tr1/modified_bessel_func.tcc" 3
23866: #define _GLIBCXX_TR1_MODIFIED_BESSEL_FUNC_TCC 1
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 65 "/usr/include/c++/10/tr1/modified_bessel_func.tcc" 3
23866: namespace __detail
23866: {
23866: # 83 "/usr/include/c++/10/tr1/modified_bessel_func.tcc" 3
23866: template <typename _Tp>
23866: void
23866: __bessel_ik(_Tp __nu, _Tp __x,
23866: _Tp & __Inu, _Tp & __Knu, _Tp & __Ipnu, _Tp & __Kpnu)
23866: {
23866: if (__x == _Tp(0))
23866: {
23866: if (__nu == _Tp(0))
23866: {
23866: __Inu = _Tp(1);
23866: __Ipnu = _Tp(0);
23866: }
23866: else if (__nu == _Tp(1))
23866: {
23866: __Inu = _Tp(0);
23866: __Ipnu = _Tp(0.5L);
23866: }
23866: else
23866: {
23866: __Inu = _Tp(0);
23866: __Ipnu = _Tp(0);
23866: }
23866: __Knu = std::numeric_limits<_Tp>::infinity();
23866: __Kpnu = -std::numeric_limits<_Tp>::infinity();
23866: return;
23866: }
23866:
23866: const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
23866: const _Tp __fp_min = _Tp(10) * std::numeric_limits<_Tp>::epsilon();
23866: const int __max_iter = 15000;
23866: const _Tp __x_min = _Tp(2);
23866:
23866: const int __nl = static_cast<int>(__nu + _Tp(0.5L));
23866:
23866: const _Tp __mu = __nu - __nl;
23866: const _Tp __mu2 = __mu * __mu;
23866: const _Tp __xi = _Tp(1) / __x;
23866: const _Tp __xi2 = _Tp(2) * __xi;
23866: _Tp __h = __nu * __xi;
23866: if ( __h < __fp_min )
23866: __h = __fp_min;
23866: _Tp __b = __xi2 * __nu;
23866: _Tp __d = _Tp(0);
23866: _Tp __c = __h;
23866: int __i;
23866: for ( __i = 1; __i <= __max_iter; ++__i )
23866: {
23866: __b += __xi2;
23866: __d = _Tp(1) / (__b + __d);
23866: __c = __b + _Tp(1) / __c;
23866: const _Tp __del = __c * __d;
23866: __h *= __del;
23866: if (std::abs(__del - _Tp(1)) < __eps)
23866: break;
23866: }
23866: if (__i > __max_iter)
23866: std::__throw_runtime_error(("Argument x too large " "in __bessel_ik; " "try asymptotic expansion.")
23866:
23866: );
23866: _Tp __Inul = __fp_min;
23866: _Tp __Ipnul = __h * __Inul;
23866: _Tp __Inul1 = __Inul;
23866: _Tp __Ipnu1 = __Ipnul;
23866: _Tp __fact = __nu * __xi;
23866: for (int __l = __nl; __l >= 1; --__l)
23866: {
23866: const _Tp __Inutemp = __fact * __Inul + __Ipnul;
23866: __fact -= __xi;
23866: __Ipnul = __fact * __Inutemp + __Inul;
23866: __Inul = __Inutemp;
23866: }
23866: _Tp __f = __Ipnul / __Inul;
23866: _Tp __Kmu, __Knu1;
23866: if (__x < __x_min)
23866: {
23866: const _Tp __x2 = __x / _Tp(2);
23866: const _Tp __pimu = __numeric_constants<_Tp>::__pi() * __mu;
23866: const _Tp __fact = (std::abs(__pimu) < __eps
23866: ? _Tp(1) : __pimu / std::sin(__pimu));
23866: _Tp __d = -std::log(__x2);
23866: _Tp __e = __mu * __d;
23866: const _Tp __fact2 = (std::abs(__e) < __eps
23866: ? _Tp(1) : std::sinh(__e) / __e);
23866: _Tp __gam1, __gam2, __gampl, __gammi;
23866: __gamma_temme(__mu, __gam1, __gam2, __gampl, __gammi);
23866: _Tp __ff = __fact
23866: * (__gam1 * std::cosh(__e) + __gam2 * __fact2 * __d);
23866: _Tp __sum = __ff;
23866: __e = std::exp(__e);
23866: _Tp __p = __e / (_Tp(2) * __gampl);
23866: _Tp __q = _Tp(1) / (_Tp(2) * __e * __gammi);
23866: _Tp __c = _Tp(1);
23866: __d = __x2 * __x2;
23866: _Tp __sum1 = __p;
23866: int __i;
23866: for (__i = 1; __i <= __max_iter; ++__i)
23866: {
23866: __ff = (__i * __ff + __p + __q) / (__i * __i - __mu2);
23866: __c *= __d / __i;
23866: __p /= __i - __mu;
23866: __q /= __i + __mu;
23866: const _Tp __del = __c * __ff;
23866: __sum += __del;
23866: const _Tp __del1 = __c * (__p - __i * __ff);
23866: __sum1 += __del1;
23866: if (std::abs(__del) < __eps * std::abs(__sum))
23866: break;
23866: }
23866: if (__i > __max_iter)
23866: std::__throw_runtime_error(("Bessel k series failed to converge " "in __bessel_ik.")
23866: );
23866: __Kmu = __sum;
23866: __Knu1 = __sum1 * __xi2;
23866: }
23866: else
23866: {
23866: _Tp __b = _Tp(2) * (_Tp(1) + __x);
23866: _Tp __d = _Tp(1) / __b;
23866: _Tp __delh = __d;
23866: _Tp __h = __delh;
23866: _Tp __q1 = _Tp(0);
23866: _Tp __q2 = _Tp(1);
23866: _Tp __a1 = _Tp(0.25L) - __mu2;
23866: _Tp __q = __c = __a1;
23866: _Tp __a = -__a1;
23866: _Tp __s = _Tp(1) + __q * __delh;
23866: int __i;
23866: for (__i = 2; __i <= __max_iter; ++__i)
23866: {
23866: __a -= 2 * (__i - 1);
23866: __c = -__a * __c / __i;
23866: const _Tp __qnew = (__q1 - __b * __q2) / __a;
23866: __q1 = __q2;
23866: __q2 = __qnew;
23866: __q += __c * __qnew;
23866: __b += _Tp(2);
23866: __d = _Tp(1) / (__b + __a * __d);
23866: __delh = (__b * __d - _Tp(1)) * __delh;
23866: __h += __delh;
23866: const _Tp __dels = __q * __delh;
23866: __s += __dels;
23866: if ( std::abs(__dels / __s) < __eps )
23866: break;
23866: }
23866: if (__i > __max_iter)
23866: std::__throw_runtime_error(("Steed's method failed " "in __bessel_ik.")
23866: );
23866: __h = __a1 * __h;
23866: __Kmu = std::sqrt(__numeric_constants<_Tp>::__pi() / (_Tp(2) * __x))
23866: * std::exp(-__x) / __s;
23866: __Knu1 = __Kmu * (__mu + __x + _Tp(0.5L) - __h) * __xi;
23866: }
23866:
23866: _Tp __Kpmu = __mu * __xi * __Kmu - __Knu1;
23866: _Tp __Inumu = __xi / (__f * __Kmu - __Kpmu);
23866: __Inu = __Inumu * __Inul1 / __Inul;
23866: __Ipnu = __Inumu * __Ipnu1 / __Inul;
23866: for ( __i = 1; __i <= __nl; ++__i )
23866: {
23866: const _Tp __Knutemp = (__mu + __i) * __xi2 * __Knu1 + __Kmu;
23866: __Kmu = __Knu1;
23866: __Knu1 = __Knutemp;
23866: }
23866: __Knu = __Kmu;
23866: __Kpnu = __nu * __xi * __Kmu - __Knu1;
23866:
23866: return;
23866: }
23866: # 267 "/usr/include/c++/10/tr1/modified_bessel_func.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __cyl_bessel_i(_Tp __nu, _Tp __x)
23866: {
23866: if (__nu < _Tp(0) || __x < _Tp(0))
23866: std::__throw_domain_error(("Bad argument " "in __cyl_bessel_i.")
23866: );
23866: else if (__isnan(__nu) || __isnan(__x))
23866: return std::numeric_limits<_Tp>::quiet_NaN();
23866: else if (__x * __x < _Tp(10) * (__nu + _Tp(1)))
23866: return __cyl_bessel_ij_series(__nu, __x, +_Tp(1), 200);
23866: else
23866: {
23866: _Tp __I_nu, __K_nu, __Ip_nu, __Kp_nu;
23866: __bessel_ik(__nu, __x, __I_nu, __K_nu, __Ip_nu, __Kp_nu);
23866: return __I_nu;
23866: }
23866: }
23866: # 303 "/usr/include/c++/10/tr1/modified_bessel_func.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __cyl_bessel_k(_Tp __nu, _Tp __x)
23866: {
23866: if (__nu < _Tp(0) || __x < _Tp(0))
23866: std::__throw_domain_error(("Bad argument " "in __cyl_bessel_k.")
23866: );
23866: else if (__isnan(__nu) || __isnan(__x))
23866: return std::numeric_limits<_Tp>::quiet_NaN();
23866: else
23866: {
23866: _Tp __I_nu, __K_nu, __Ip_nu, __Kp_nu;
23866: __bessel_ik(__nu, __x, __I_nu, __K_nu, __Ip_nu, __Kp_nu);
23866: return __K_nu;
23866: }
23866: }
23866: # 337 "/usr/include/c++/10/tr1/modified_bessel_func.tcc" 3
23866: template <typename _Tp>
23866: void
23866: __sph_bessel_ik(unsigned int __n, _Tp __x,
23866: _Tp & __i_n, _Tp & __k_n, _Tp & __ip_n, _Tp & __kp_n)
23866: {
23866: const _Tp __nu = _Tp(__n) + _Tp(0.5L);
23866:
23866: _Tp __I_nu, __Ip_nu, __K_nu, __Kp_nu;
23866: __bessel_ik(__nu, __x, __I_nu, __K_nu, __Ip_nu, __Kp_nu);
23866:
23866: const _Tp __factor = __numeric_constants<_Tp>::__sqrtpio2()
23866: / std::sqrt(__x);
23866:
23866: __i_n = __factor * __I_nu;
23866: __k_n = __factor * __K_nu;
23866: __ip_n = __factor * __Ip_nu - __i_n / (_Tp(2) * __x);
23866: __kp_n = __factor * __Kp_nu - __k_n / (_Tp(2) * __x);
23866:
23866: return;
23866: }
23866: # 373 "/usr/include/c++/10/tr1/modified_bessel_func.tcc" 3
23866: template <typename _Tp>
23866: void
23866: __airy(_Tp __x, _Tp & __Ai, _Tp & __Bi, _Tp & __Aip, _Tp & __Bip)
23866: {
23866: const _Tp __absx = std::abs(__x);
23866: const _Tp __rootx = std::sqrt(__absx);
23866: const _Tp __z = _Tp(2) * __absx * __rootx / _Tp(3);
23866: const _Tp _S_NaN = std::numeric_limits<_Tp>::quiet_NaN();
23866: const _Tp _S_inf = std::numeric_limits<_Tp>::infinity();
23866:
23866: if (__isnan(__x))
23866: __Bip = __Aip = __Bi = __Ai = std::numeric_limits<_Tp>::quiet_NaN();
23866: else if (__z == _S_inf)
23866: {
23866: __Aip = __Ai = _Tp(0);
23866: __Bip = __Bi = _S_inf;
23866: }
23866: else if (__z == -_S_inf)
23866: __Bip = __Aip = __Bi = __Ai = _Tp(0);
23866: else if (__x > _Tp(0))
23866: {
23866: _Tp __I_nu, __Ip_nu, __K_nu, __Kp_nu;
23866:
23866: __bessel_ik(_Tp(1) / _Tp(3), __z, __I_nu, __K_nu, __Ip_nu, __Kp_nu);
23866: __Ai = __rootx * __K_nu
23866: / (__numeric_constants<_Tp>::__sqrt3()
23866: * __numeric_constants<_Tp>::__pi());
23866: __Bi = __rootx * (__K_nu / __numeric_constants<_Tp>::__pi()
23866: + _Tp(2) * __I_nu / __numeric_constants<_Tp>::__sqrt3());
23866:
23866: __bessel_ik(_Tp(2) / _Tp(3), __z, __I_nu, __K_nu, __Ip_nu, __Kp_nu);
23866: __Aip = -__x * __K_nu
23866: / (__numeric_constants<_Tp>::__sqrt3()
23866: * __numeric_constants<_Tp>::__pi());
23866: __Bip = __x * (__K_nu / __numeric_constants<_Tp>::__pi()
23866: + _Tp(2) * __I_nu
23866: / __numeric_constants<_Tp>::__sqrt3());
23866: }
23866: else if (__x < _Tp(0))
23866: {
23866: _Tp __J_nu, __Jp_nu, __N_nu, __Np_nu;
23866:
23866: __bessel_jn(_Tp(1) / _Tp(3), __z, __J_nu, __N_nu, __Jp_nu, __Np_nu);
23866: __Ai = __rootx * (__J_nu
23866: - __N_nu / __numeric_constants<_Tp>::__sqrt3()) / _Tp(2);
23866: __Bi = -__rootx * (__N_nu
23866: + __J_nu / __numeric_constants<_Tp>::__sqrt3()) / _Tp(2);
23866:
23866: __bessel_jn(_Tp(2) / _Tp(3), __z, __J_nu, __N_nu, __Jp_nu, __Np_nu);
23866: __Aip = __absx * (__N_nu / __numeric_constants<_Tp>::__sqrt3()
23866: + __J_nu) / _Tp(2);
23866: __Bip = __absx * (__J_nu / __numeric_constants<_Tp>::__sqrt3()
23866: - __N_nu) / _Tp(2);
23866: }
23866: else
23866: {
23866:
23866:
23866:
23866: __Ai = _Tp(0.35502805388781723926L);
23866: __Bi = __Ai * __numeric_constants<_Tp>::__sqrt3();
23866:
23866:
23866:
23866:
23866: __Aip = -_Tp(0.25881940379280679840L);
23866: __Bip = -__Aip * __numeric_constants<_Tp>::__sqrt3();
23866: }
23866:
23866: return;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 57 "/usr/include/c++/10/bits/specfun.h" 2 3
23866: # 1 "/usr/include/c++/10/tr1/poly_hermite.tcc" 1 3
23866: # 40 "/usr/include/c++/10/tr1/poly_hermite.tcc" 3
23866: #define _GLIBCXX_TR1_POLY_HERMITE_TCC 1
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 56 "/usr/include/c++/10/tr1/poly_hermite.tcc" 3
23866: namespace __detail
23866: {
23866: # 72 "/usr/include/c++/10/tr1/poly_hermite.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __poly_hermite_recursion(unsigned int __n, _Tp __x)
23866: {
23866:
23866: _Tp __H_0 = 1;
23866: if (__n == 0)
23866: return __H_0;
23866:
23866:
23866: _Tp __H_1 = 2 * __x;
23866: if (__n == 1)
23866: return __H_1;
23866:
23866:
23866: _Tp __H_n, __H_nm1, __H_nm2;
23866: unsigned int __i;
23866: for (__H_nm2 = __H_0, __H_nm1 = __H_1, __i = 2; __i <= __n; ++__i)
23866: {
23866: __H_n = 2 * (__x * __H_nm1 - (__i - 1) * __H_nm2);
23866: __H_nm2 = __H_nm1;
23866: __H_nm1 = __H_n;
23866: }
23866:
23866: return __H_n;
23866: }
23866: # 114 "/usr/include/c++/10/tr1/poly_hermite.tcc" 3
23866: template<typename _Tp>
23866: inline _Tp
23866: __poly_hermite(unsigned int __n, _Tp __x)
23866: {
23866: if (__isnan(__x))
23866: return std::numeric_limits<_Tp>::quiet_NaN();
23866: else
23866: return __poly_hermite_recursion(__n, __x);
23866: }
23866: }
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 58 "/usr/include/c++/10/bits/specfun.h" 2 3
23866: # 1 "/usr/include/c++/10/tr1/poly_laguerre.tcc" 1 3
23866: # 42 "/usr/include/c++/10/tr1/poly_laguerre.tcc" 3
23866: #define _GLIBCXX_TR1_POLY_LAGUERRE_TCC 1
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: #define _GLIBCXX_MATH_NS ::std
23866: # 60 "/usr/include/c++/10/tr1/poly_laguerre.tcc" 3
23866: namespace __detail
23866: {
23866: # 75 "/usr/include/c++/10/tr1/poly_laguerre.tcc" 3
23866: template<typename _Tpa, typename _Tp>
23866: _Tp
23866: __poly_laguerre_large_n(unsigned __n, _Tpa __alpha1, _Tp __x)
23866: {
23866: const _Tp __a = -_Tp(__n);
23866: const _Tp __b = _Tp(__alpha1) + _Tp(1);
23866: const _Tp __eta = _Tp(2) * __b - _Tp(4) * __a;
23866: const _Tp __cos2th = __x / __eta;
23866: const _Tp __sin2th = _Tp(1) - __cos2th;
23866: const _Tp __th = std::acos(std::sqrt(__cos2th));
23866: const _Tp __pre_h = __numeric_constants<_Tp>::__pi_2()
23866: * __numeric_constants<_Tp>::__pi_2()
23866: * __eta * __eta * __cos2th * __sin2th;
23866:
23866:
23866: const _Tp __lg_b = ::std::lgamma(_Tp(__n) + __b);
23866: const _Tp __lnfact = ::std::lgamma(_Tp(__n + 1));
23866:
23866:
23866:
23866:
23866:
23866: _Tp __pre_term1 = _Tp(0.5L) * (_Tp(1) - __b)
23866: * std::log(_Tp(0.25L) * __x * __eta);
23866: _Tp __pre_term2 = _Tp(0.25L) * std::log(__pre_h);
23866: _Tp __lnpre = __lg_b - __lnfact + _Tp(0.5L) * __x
23866: + __pre_term1 - __pre_term2;
23866: _Tp __ser_term1 = std::sin(__a * __numeric_constants<_Tp>::__pi());
23866: _Tp __ser_term2 = std::sin(_Tp(0.25L) * __eta
23866: * (_Tp(2) * __th
23866: - std::sin(_Tp(2) * __th))
23866: + __numeric_constants<_Tp>::__pi_4());
23866: _Tp __ser = __ser_term1 + __ser_term2;
23866:
23866: return std::exp(__lnpre) * __ser;
23866: }
23866: # 129 "/usr/include/c++/10/tr1/poly_laguerre.tcc" 3
23866: template<typename _Tpa, typename _Tp>
23866: _Tp
23866: __poly_laguerre_hyperg(unsigned int __n, _Tpa __alpha1, _Tp __x)
23866: {
23866: const _Tp __b = _Tp(__alpha1) + _Tp(1);
23866: const _Tp __mx = -__x;
23866: const _Tp __tc_sgn = (__x < _Tp(0) ? _Tp(1)
23866: : ((__n % 2 == 1) ? -_Tp(1) : _Tp(1)));
23866:
23866: _Tp __tc = _Tp(1);
23866: const _Tp __ax = std::abs(__x);
23866: for (unsigned int __k = 1; __k <= __n; ++__k)
23866: __tc *= (__ax / __k);
23866:
23866: _Tp __term = __tc * __tc_sgn;
23866: _Tp __sum = __term;
23866: for (int __k = int(__n) - 1; __k >= 0; --__k)
23866: {
23866: __term *= ((__b + _Tp(__k)) / _Tp(int(__n) - __k))
23866: * _Tp(__k + 1) / __mx;
23866: __sum += __term;
23866: }
23866:
23866: return __sum;
23866: }
23866: # 185 "/usr/include/c++/10/tr1/poly_laguerre.tcc" 3
23866: template<typename _Tpa, typename _Tp>
23866: _Tp
23866: __poly_laguerre_recursion(unsigned int __n, _Tpa __alpha1, _Tp __x)
23866: {
23866:
23866: _Tp __l_0 = _Tp(1);
23866: if (__n == 0)
23866: return __l_0;
23866:
23866:
23866: _Tp __l_1 = -__x + _Tp(1) + _Tp(__alpha1);
23866: if (__n == 1)
23866: return __l_1;
23866:
23866:
23866: _Tp __l_n2 = __l_0;
23866: _Tp __l_n1 = __l_1;
23866: _Tp __l_n = _Tp(0);
23866: for (unsigned int __nn = 2; __nn <= __n; ++__nn)
23866: {
23866: __l_n = (_Tp(2 * __nn - 1) + _Tp(__alpha1) - __x)
23866: * __l_n1 / _Tp(__nn)
23866: - (_Tp(__nn - 1) + _Tp(__alpha1)) * __l_n2 / _Tp(__nn);
23866: __l_n2 = __l_n1;
23866: __l_n1 = __l_n;
23866: }
23866:
23866: return __l_n;
23866: }
23866: # 244 "/usr/include/c++/10/tr1/poly_laguerre.tcc" 3
23866: template<typename _Tpa, typename _Tp>
23866: _Tp
23866: __poly_laguerre(unsigned int __n, _Tpa __alpha1, _Tp __x)
23866: {
23866: if (__x < _Tp(0))
23866: std::__throw_domain_error(("Negative argument " "in __poly_laguerre.")
23866: );
23866:
23866: else if (__isnan(__x))
23866: return std::numeric_limits<_Tp>::quiet_NaN();
23866: else if (__n == 0)
23866: return _Tp(1);
23866: else if (__n == 1)
23866: return _Tp(1) + _Tp(__alpha1) - __x;
23866: else if (__x == _Tp(0))
23866: {
23866: _Tp __prod = _Tp(__alpha1) + _Tp(1);
23866: for (unsigned int __k = 2; __k <= __n; ++__k)
23866: __prod *= (_Tp(__alpha1) + _Tp(__k)) / _Tp(__k);
23866: return __prod;
23866: }
23866: else if (__n > 10000000 && _Tp(__alpha1) > -_Tp(1)
23866: && __x < _Tp(2) * (_Tp(__alpha1) + _Tp(1)) + _Tp(4 * __n))
23866: return __poly_laguerre_large_n(__n, __alpha1, __x);
23866: else if (_Tp(__alpha1) >= _Tp(0)
23866: || (__x > _Tp(0) && _Tp(__alpha1) < -_Tp(__n + 1)))
23866: return __poly_laguerre_recursion(__n, __alpha1, __x);
23866: else
23866: return __poly_laguerre_hyperg(__n, __alpha1, __x);
23866: }
23866: # 296 "/usr/include/c++/10/tr1/poly_laguerre.tcc" 3
23866: template<typename _Tp>
23866: inline _Tp
23866: __assoc_laguerre(unsigned int __n, unsigned int __m, _Tp __x)
23866: { return __poly_laguerre<unsigned int, _Tp>(__n, __m, __x); }
23866: # 316 "/usr/include/c++/10/tr1/poly_laguerre.tcc" 3
23866: template<typename _Tp>
23866: inline _Tp
23866: __laguerre(unsigned int __n, _Tp __x)
23866: { return __poly_laguerre<unsigned int, _Tp>(__n, 0, __x); }
23866: }
23866: #undef _GLIBCXX_MATH_NS
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 59 "/usr/include/c++/10/bits/specfun.h" 2 3
23866: # 1 "/usr/include/c++/10/tr1/riemann_zeta.tcc" 1 3
23866: # 43 "/usr/include/c++/10/tr1/riemann_zeta.tcc" 3
23866: #define _GLIBCXX_TR1_RIEMANN_ZETA_TCC 1
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: #define _GLIBCXX_MATH_NS ::std
23866: # 63 "/usr/include/c++/10/tr1/riemann_zeta.tcc" 3
23866: namespace __detail
23866: {
23866: # 78 "/usr/include/c++/10/tr1/riemann_zeta.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __riemann_zeta_sum(_Tp __s)
23866: {
23866:
23866: if (__s < _Tp(1))
23866: std::__throw_domain_error(("Bad argument in zeta sum."));
23866:
23866: const unsigned int max_iter = 10000;
23866: _Tp __zeta = _Tp(0);
23866: for (unsigned int __k = 1; __k < max_iter; ++__k)
23866: {
23866: _Tp __term = std::pow(static_cast<_Tp>(__k), -__s);
23866: if (__term < std::numeric_limits<_Tp>::epsilon())
23866: {
23866: break;
23866: }
23866: __zeta += __term;
23866: }
23866:
23866: return __zeta;
23866: }
23866: # 115 "/usr/include/c++/10/tr1/riemann_zeta.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __riemann_zeta_alt(_Tp __s)
23866: {
23866: _Tp __sgn = _Tp(1);
23866: _Tp __zeta = _Tp(0);
23866: for (unsigned int __i = 1; __i < 10000000; ++__i)
23866: {
23866: _Tp __term = __sgn / std::pow(__i, __s);
23866: if (std::abs(__term) < std::numeric_limits<_Tp>::epsilon())
23866: break;
23866: __zeta += __term;
23866: __sgn *= _Tp(-1);
23866: }
23866: __zeta /= _Tp(1) - std::pow(_Tp(2), _Tp(1) - __s);
23866:
23866: return __zeta;
23866: }
23866: # 157 "/usr/include/c++/10/tr1/riemann_zeta.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __riemann_zeta_glob(_Tp __s)
23866: {
23866: _Tp __zeta = _Tp(0);
23866:
23866: const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
23866:
23866: const _Tp __max_bincoeff = std::numeric_limits<_Tp>::max_exponent10
23866: * std::log(_Tp(10)) - _Tp(1);
23866:
23866:
23866:
23866: if (__s < _Tp(0))
23866: {
23866:
23866: if (::std::fmod(__s,_Tp(2)) == _Tp(0))
23866: return _Tp(0);
23866: else
23866:
23866: {
23866: _Tp __zeta = __riemann_zeta_glob(_Tp(1) - __s);
23866: __zeta *= std::pow(_Tp(2)
23866: * __numeric_constants<_Tp>::__pi(), __s)
23866: * std::sin(__numeric_constants<_Tp>::__pi_2() * __s)
23866:
23866: * std::exp(::std::lgamma(_Tp(1) - __s))
23866:
23866:
23866:
23866: / __numeric_constants<_Tp>::__pi();
23866: return __zeta;
23866: }
23866: }
23866:
23866: _Tp __num = _Tp(0.5L);
23866: const unsigned int __maxit = 10000;
23866: for (unsigned int __i = 0; __i < __maxit; ++__i)
23866: {
23866: bool __punt = false;
23866: _Tp __sgn = _Tp(1);
23866: _Tp __term = _Tp(0);
23866: for (unsigned int __j = 0; __j <= __i; ++__j)
23866: {
23866:
23866: _Tp __bincoeff = ::std::lgamma(_Tp(1 + __i))
23866: - ::std::lgamma(_Tp(1 + __j))
23866: - ::std::lgamma(_Tp(1 + __i - __j));
23866:
23866:
23866:
23866:
23866:
23866: if (__bincoeff > __max_bincoeff)
23866: {
23866:
23866: __punt = true;
23866: break;
23866: }
23866: __bincoeff = std::exp(__bincoeff);
23866: __term += __sgn * __bincoeff * std::pow(_Tp(1 + __j), -__s);
23866: __sgn *= _Tp(-1);
23866: }
23866: if (__punt)
23866: break;
23866: __term *= __num;
23866: __zeta += __term;
23866: if (std::abs(__term/__zeta) < __eps)
23866: break;
23866: __num *= _Tp(0.5L);
23866: }
23866:
23866: __zeta /= _Tp(1) - std::pow(_Tp(2), _Tp(1) - __s);
23866:
23866: return __zeta;
23866: }
23866: # 252 "/usr/include/c++/10/tr1/riemann_zeta.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __riemann_zeta_product(_Tp __s)
23866: {
23866: static const _Tp __prime[] = {
23866: _Tp(2), _Tp(3), _Tp(5), _Tp(7), _Tp(11), _Tp(13), _Tp(17), _Tp(19),
23866: _Tp(23), _Tp(29), _Tp(31), _Tp(37), _Tp(41), _Tp(43), _Tp(47),
23866: _Tp(53), _Tp(59), _Tp(61), _Tp(67), _Tp(71), _Tp(73), _Tp(79),
23866: _Tp(83), _Tp(89), _Tp(97), _Tp(101), _Tp(103), _Tp(107), _Tp(109)
23866: };
23866: static const unsigned int __num_primes = sizeof(__prime) / sizeof(_Tp);
23866:
23866: _Tp __zeta = _Tp(1);
23866: for (unsigned int __i = 0; __i < __num_primes; ++__i)
23866: {
23866: const _Tp __fact = _Tp(1) - std::pow(__prime[__i], -__s);
23866: __zeta *= __fact;
23866: if (_Tp(1) - __fact < std::numeric_limits<_Tp>::epsilon())
23866: break;
23866: }
23866:
23866: __zeta = _Tp(1) / __zeta;
23866:
23866: return __zeta;
23866: }
23866: # 293 "/usr/include/c++/10/tr1/riemann_zeta.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __riemann_zeta(_Tp __s)
23866: {
23866: if (__isnan(__s))
23866: return std::numeric_limits<_Tp>::quiet_NaN();
23866: else if (__s == _Tp(1))
23866: return std::numeric_limits<_Tp>::infinity();
23866: else if (__s < -_Tp(19))
23866: {
23866: _Tp __zeta = __riemann_zeta_product(_Tp(1) - __s);
23866: __zeta *= std::pow(_Tp(2) * __numeric_constants<_Tp>::__pi(), __s)
23866: * std::sin(__numeric_constants<_Tp>::__pi_2() * __s)
23866:
23866: * std::exp(::std::lgamma(_Tp(1) - __s))
23866:
23866:
23866:
23866: / __numeric_constants<_Tp>::__pi();
23866: return __zeta;
23866: }
23866: else if (__s < _Tp(20))
23866: {
23866:
23866: bool __glob = true;
23866: if (__glob)
23866: return __riemann_zeta_glob(__s);
23866: else
23866: {
23866: if (__s > _Tp(1))
23866: return __riemann_zeta_sum(__s);
23866: else
23866: {
23866: _Tp __zeta = std::pow(_Tp(2)
23866: * __numeric_constants<_Tp>::__pi(), __s)
23866: * std::sin(__numeric_constants<_Tp>::__pi_2() * __s)
23866:
23866: * ::std::tgamma(_Tp(1) - __s)
23866:
23866:
23866:
23866: * __riemann_zeta_sum(_Tp(1) - __s);
23866: return __zeta;
23866: }
23866: }
23866: }
23866: else
23866: return __riemann_zeta_product(__s);
23866: }
23866: # 365 "/usr/include/c++/10/tr1/riemann_zeta.tcc" 3
23866: template<typename _Tp>
23866: _Tp
23866: __hurwitz_zeta_glob(_Tp __a, _Tp __s)
23866: {
23866: _Tp __zeta = _Tp(0);
23866:
23866: const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
23866:
23866: const _Tp __max_bincoeff = std::numeric_limits<_Tp>::max_exponent10
23866: * std::log(_Tp(10)) - _Tp(1);
23866:
23866: const unsigned int __maxit = 10000;
23866: for (unsigned int __i = 0; __i < __maxit; ++__i)
23866: {
23866: bool __punt = false;
23866: _Tp __sgn = _Tp(1);
23866: _Tp __term = _Tp(0);
23866: for (unsigned int __j = 0; __j <= __i; ++__j)
23866: {
23866:
23866: _Tp __bincoeff = ::std::lgamma(_Tp(1 + __i))
23866: - ::std::lgamma(_Tp(1 + __j))
23866: - ::std::lgamma(_Tp(1 + __i - __j));
23866:
23866:
23866:
23866:
23866:
23866: if (__bincoeff > __max_bincoeff)
23866: {
23866:
23866: __punt = true;
23866: break;
23866: }
23866: __bincoeff = std::exp(__bincoeff);
23866: __term += __sgn * __bincoeff * std::pow(_Tp(__a + __j), -__s);
23866: __sgn *= _Tp(-1);
23866: }
23866: if (__punt)
23866: break;
23866: __term /= _Tp(__i + 1);
23866: if (std::abs(__term / __zeta) < __eps)
23866: break;
23866: __zeta += __term;
23866: }
23866:
23866: __zeta /= __s - _Tp(1);
23866:
23866: return __zeta;
23866: }
23866: # 430 "/usr/include/c++/10/tr1/riemann_zeta.tcc" 3
23866: template<typename _Tp>
23866: inline _Tp
23866: __hurwitz_zeta(_Tp __a, _Tp __s)
23866: { return __hurwitz_zeta_glob(__a, __s); }
23866: }
23866: #undef _GLIBCXX_MATH_NS
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 60 "/usr/include/c++/10/bits/specfun.h" 2 3
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 205 "/usr/include/c++/10/bits/specfun.h" 3
23866: inline float
23866: assoc_laguerref(unsigned int __n, unsigned int __m, float __x)
23866: { return __detail::__assoc_laguerre<float>(__n, __m, __x); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline long double
23866: assoc_laguerrel(unsigned int __n, unsigned int __m, long double __x)
23866: { return __detail::__assoc_laguerre<long double>(__n, __m, __x); }
23866: # 250 "/usr/include/c++/10/bits/specfun.h" 3
23866: template<typename _Tp>
23866: inline typename __gnu_cxx::__promote<_Tp>::__type
23866: assoc_laguerre(unsigned int __n, unsigned int __m, _Tp __x)
23866: {
23866: typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
23866: return __detail::__assoc_laguerre<__type>(__n, __m, __x);
23866: }
23866: # 266 "/usr/include/c++/10/bits/specfun.h" 3
23866: inline float
23866: assoc_legendref(unsigned int __l, unsigned int __m, float __x)
23866: { return __detail::__assoc_legendre_p<float>(__l, __m, __x); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline long double
23866: assoc_legendrel(unsigned int __l, unsigned int __m, long double __x)
23866: { return __detail::__assoc_legendre_p<long double>(__l, __m, __x); }
23866: # 296 "/usr/include/c++/10/bits/specfun.h" 3
23866: template<typename _Tp>
23866: inline typename __gnu_cxx::__promote<_Tp>::__type
23866: assoc_legendre(unsigned int __l, unsigned int __m, _Tp __x)
23866: {
23866: typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
23866: return __detail::__assoc_legendre_p<__type>(__l, __m, __x);
23866: }
23866: # 311 "/usr/include/c++/10/bits/specfun.h" 3
23866: inline float
23866: betaf(float __a, float __b)
23866: { return __detail::__beta<float>(__a, __b); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline long double
23866: betal(long double __a, long double __b)
23866: { return __detail::__beta<long double>(__a, __b); }
23866: # 341 "/usr/include/c++/10/bits/specfun.h" 3
23866: template<typename _Tpa, typename _Tpb>
23866: inline typename __gnu_cxx::__promote_2<_Tpa, _Tpb>::__type
23866: beta(_Tpa __a, _Tpb __b)
23866: {
23866: typedef typename __gnu_cxx::__promote_2<_Tpa, _Tpb>::__type __type;
23866: return __detail::__beta<__type>(__a, __b);
23866: }
23866: # 357 "/usr/include/c++/10/bits/specfun.h" 3
23866: inline float
23866: comp_ellint_1f(float __k)
23866: { return __detail::__comp_ellint_1<float>(__k); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline long double
23866: comp_ellint_1l(long double __k)
23866: { return __detail::__comp_ellint_1<long double>(__k); }
23866: # 389 "/usr/include/c++/10/bits/specfun.h" 3
23866: template<typename _Tp>
23866: inline typename __gnu_cxx::__promote<_Tp>::__type
23866: comp_ellint_1(_Tp __k)
23866: {
23866: typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
23866: return __detail::__comp_ellint_1<__type>(__k);
23866: }
23866: # 405 "/usr/include/c++/10/bits/specfun.h" 3
23866: inline float
23866: comp_ellint_2f(float __k)
23866: { return __detail::__comp_ellint_2<float>(__k); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline long double
23866: comp_ellint_2l(long double __k)
23866: { return __detail::__comp_ellint_2<long double>(__k); }
23866: # 436 "/usr/include/c++/10/bits/specfun.h" 3
23866: template<typename _Tp>
23866: inline typename __gnu_cxx::__promote<_Tp>::__type
23866: comp_ellint_2(_Tp __k)
23866: {
23866: typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
23866: return __detail::__comp_ellint_2<__type>(__k);
23866: }
23866: # 452 "/usr/include/c++/10/bits/specfun.h" 3
23866: inline float
23866: comp_ellint_3f(float __k, float __nu)
23866: { return __detail::__comp_ellint_3<float>(__k, __nu); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline long double
23866: comp_ellint_3l(long double __k, long double __nu)
23866: { return __detail::__comp_ellint_3<long double>(__k, __nu); }
23866: # 487 "/usr/include/c++/10/bits/specfun.h" 3
23866: template<typename _Tp, typename _Tpn>
23866: inline typename __gnu_cxx::__promote_2<_Tp, _Tpn>::__type
23866: comp_ellint_3(_Tp __k, _Tpn __nu)
23866: {
23866: typedef typename __gnu_cxx::__promote_2<_Tp, _Tpn>::__type __type;
23866: return __detail::__comp_ellint_3<__type>(__k, __nu);
23866: }
23866: # 503 "/usr/include/c++/10/bits/specfun.h" 3
23866: inline float
23866: cyl_bessel_if(float __nu, float __x)
23866: { return __detail::__cyl_bessel_i<float>(__nu, __x); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline long double
23866: cyl_bessel_il(long double __nu, long double __x)
23866: { return __detail::__cyl_bessel_i<long double>(__nu, __x); }
23866: # 533 "/usr/include/c++/10/bits/specfun.h" 3
23866: template<typename _Tpnu, typename _Tp>
23866: inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type
23866: cyl_bessel_i(_Tpnu __nu, _Tp __x)
23866: {
23866: typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type;
23866: return __detail::__cyl_bessel_i<__type>(__nu, __x);
23866: }
23866: # 549 "/usr/include/c++/10/bits/specfun.h" 3
23866: inline float
23866: cyl_bessel_jf(float __nu, float __x)
23866: { return __detail::__cyl_bessel_j<float>(__nu, __x); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline long double
23866: cyl_bessel_jl(long double __nu, long double __x)
23866: { return __detail::__cyl_bessel_j<long double>(__nu, __x); }
23866: # 579 "/usr/include/c++/10/bits/specfun.h" 3
23866: template<typename _Tpnu, typename _Tp>
23866: inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type
23866: cyl_bessel_j(_Tpnu __nu, _Tp __x)
23866: {
23866: typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type;
23866: return __detail::__cyl_bessel_j<__type>(__nu, __x);
23866: }
23866: # 595 "/usr/include/c++/10/bits/specfun.h" 3
23866: inline float
23866: cyl_bessel_kf(float __nu, float __x)
23866: { return __detail::__cyl_bessel_k<float>(__nu, __x); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline long double
23866: cyl_bessel_kl(long double __nu, long double __x)
23866: { return __detail::__cyl_bessel_k<long double>(__nu, __x); }
23866: # 631 "/usr/include/c++/10/bits/specfun.h" 3
23866: template<typename _Tpnu, typename _Tp>
23866: inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type
23866: cyl_bessel_k(_Tpnu __nu, _Tp __x)
23866: {
23866: typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type;
23866: return __detail::__cyl_bessel_k<__type>(__nu, __x);
23866: }
23866: # 647 "/usr/include/c++/10/bits/specfun.h" 3
23866: inline float
23866: cyl_neumannf(float __nu, float __x)
23866: { return __detail::__cyl_neumann_n<float>(__nu, __x); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline long double
23866: cyl_neumannl(long double __nu, long double __x)
23866: { return __detail::__cyl_neumann_n<long double>(__nu, __x); }
23866: # 679 "/usr/include/c++/10/bits/specfun.h" 3
23866: template<typename _Tpnu, typename _Tp>
23866: inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type
23866: cyl_neumann(_Tpnu __nu, _Tp __x)
23866: {
23866: typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type;
23866: return __detail::__cyl_neumann_n<__type>(__nu, __x);
23866: }
23866: # 695 "/usr/include/c++/10/bits/specfun.h" 3
23866: inline float
23866: ellint_1f(float __k, float __phi)
23866: { return __detail::__ellint_1<float>(__k, __phi); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline long double
23866: ellint_1l(long double __k, long double __phi)
23866: { return __detail::__ellint_1<long double>(__k, __phi); }
23866: # 727 "/usr/include/c++/10/bits/specfun.h" 3
23866: template<typename _Tp, typename _Tpp>
23866: inline typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type
23866: ellint_1(_Tp __k, _Tpp __phi)
23866: {
23866: typedef typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type __type;
23866: return __detail::__ellint_1<__type>(__k, __phi);
23866: }
23866: # 743 "/usr/include/c++/10/bits/specfun.h" 3
23866: inline float
23866: ellint_2f(float __k, float __phi)
23866: { return __detail::__ellint_2<float>(__k, __phi); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline long double
23866: ellint_2l(long double __k, long double __phi)
23866: { return __detail::__ellint_2<long double>(__k, __phi); }
23866: # 775 "/usr/include/c++/10/bits/specfun.h" 3
23866: template<typename _Tp, typename _Tpp>
23866: inline typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type
23866: ellint_2(_Tp __k, _Tpp __phi)
23866: {
23866: typedef typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type __type;
23866: return __detail::__ellint_2<__type>(__k, __phi);
23866: }
23866: # 791 "/usr/include/c++/10/bits/specfun.h" 3
23866: inline float
23866: ellint_3f(float __k, float __nu, float __phi)
23866: { return __detail::__ellint_3<float>(__k, __nu, __phi); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline long double
23866: ellint_3l(long double __k, long double __nu, long double __phi)
23866: { return __detail::__ellint_3<long double>(__k, __nu, __phi); }
23866: # 828 "/usr/include/c++/10/bits/specfun.h" 3
23866: template<typename _Tp, typename _Tpn, typename _Tpp>
23866: inline typename __gnu_cxx::__promote_3<_Tp, _Tpn, _Tpp>::__type
23866: ellint_3(_Tp __k, _Tpn __nu, _Tpp __phi)
23866: {
23866: typedef typename __gnu_cxx::__promote_3<_Tp, _Tpn, _Tpp>::__type __type;
23866: return __detail::__ellint_3<__type>(__k, __nu, __phi);
23866: }
23866: # 843 "/usr/include/c++/10/bits/specfun.h" 3
23866: inline float
23866: expintf(float __x)
23866: { return __detail::__expint<float>(__x); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline long double
23866: expintl(long double __x)
23866: { return __detail::__expint<long double>(__x); }
23866: # 868 "/usr/include/c++/10/bits/specfun.h" 3
23866: template<typename _Tp>
23866: inline typename __gnu_cxx::__promote<_Tp>::__type
23866: expint(_Tp __x)
23866: {
23866: typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
23866: return __detail::__expint<__type>(__x);
23866: }
23866: # 884 "/usr/include/c++/10/bits/specfun.h" 3
23866: inline float
23866: hermitef(unsigned int __n, float __x)
23866: { return __detail::__poly_hermite<float>(__n, __x); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline long double
23866: hermitel(unsigned int __n, long double __x)
23866: { return __detail::__poly_hermite<long double>(__n, __x); }
23866: # 916 "/usr/include/c++/10/bits/specfun.h" 3
23866: template<typename _Tp>
23866: inline typename __gnu_cxx::__promote<_Tp>::__type
23866: hermite(unsigned int __n, _Tp __x)
23866: {
23866: typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
23866: return __detail::__poly_hermite<__type>(__n, __x);
23866: }
23866: # 932 "/usr/include/c++/10/bits/specfun.h" 3
23866: inline float
23866: laguerref(unsigned int __n, float __x)
23866: { return __detail::__laguerre<float>(__n, __x); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline long double
23866: laguerrel(unsigned int __n, long double __x)
23866: { return __detail::__laguerre<long double>(__n, __x); }
23866: # 960 "/usr/include/c++/10/bits/specfun.h" 3
23866: template<typename _Tp>
23866: inline typename __gnu_cxx::__promote<_Tp>::__type
23866: laguerre(unsigned int __n, _Tp __x)
23866: {
23866: typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
23866: return __detail::__laguerre<__type>(__n, __x);
23866: }
23866: # 976 "/usr/include/c++/10/bits/specfun.h" 3
23866: inline float
23866: legendref(unsigned int __l, float __x)
23866: { return __detail::__poly_legendre_p<float>(__l, __x); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline long double
23866: legendrel(unsigned int __l, long double __x)
23866: { return __detail::__poly_legendre_p<long double>(__l, __x); }
23866: # 1005 "/usr/include/c++/10/bits/specfun.h" 3
23866: template<typename _Tp>
23866: inline typename __gnu_cxx::__promote<_Tp>::__type
23866: legendre(unsigned int __l, _Tp __x)
23866: {
23866: typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
23866: return __detail::__poly_legendre_p<__type>(__l, __x);
23866: }
23866: # 1021 "/usr/include/c++/10/bits/specfun.h" 3
23866: inline float
23866: riemann_zetaf(float __s)
23866: { return __detail::__riemann_zeta<float>(__s); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline long double
23866: riemann_zetal(long double __s)
23866: { return __detail::__riemann_zeta<long double>(__s); }
23866: # 1056 "/usr/include/c++/10/bits/specfun.h" 3
23866: template<typename _Tp>
23866: inline typename __gnu_cxx::__promote<_Tp>::__type
23866: riemann_zeta(_Tp __s)
23866: {
23866: typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
23866: return __detail::__riemann_zeta<__type>(__s);
23866: }
23866: # 1072 "/usr/include/c++/10/bits/specfun.h" 3
23866: inline float
23866: sph_besself(unsigned int __n, float __x)
23866: { return __detail::__sph_bessel<float>(__n, __x); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline long double
23866: sph_bessell(unsigned int __n, long double __x)
23866: { return __detail::__sph_bessel<long double>(__n, __x); }
23866: # 1100 "/usr/include/c++/10/bits/specfun.h" 3
23866: template<typename _Tp>
23866: inline typename __gnu_cxx::__promote<_Tp>::__type
23866: sph_bessel(unsigned int __n, _Tp __x)
23866: {
23866: typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
23866: return __detail::__sph_bessel<__type>(__n, __x);
23866: }
23866: # 1116 "/usr/include/c++/10/bits/specfun.h" 3
23866: inline float
23866: sph_legendref(unsigned int __l, unsigned int __m, float __theta)
23866: { return __detail::__sph_legendre<float>(__l, __m, __theta); }
23866: # 1127 "/usr/include/c++/10/bits/specfun.h" 3
23866: inline long double
23866: sph_legendrel(unsigned int __l, unsigned int __m, long double __theta)
23866: { return __detail::__sph_legendre<long double>(__l, __m, __theta); }
23866: # 1147 "/usr/include/c++/10/bits/specfun.h" 3
23866: template<typename _Tp>
23866: inline typename __gnu_cxx::__promote<_Tp>::__type
23866: sph_legendre(unsigned int __l, unsigned int __m, _Tp __theta)
23866: {
23866: typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
23866: return __detail::__sph_legendre<__type>(__l, __m, __theta);
23866: }
23866: # 1163 "/usr/include/c++/10/bits/specfun.h" 3
23866: inline float
23866: sph_neumannf(unsigned int __n, float __x)
23866: { return __detail::__sph_neumann<float>(__n, __x); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline long double
23866: sph_neumannl(unsigned int __n, long double __x)
23866: { return __detail::__sph_neumann<long double>(__n, __x); }
23866: # 1191 "/usr/include/c++/10/bits/specfun.h" 3
23866: template<typename _Tp>
23866: inline typename __gnu_cxx::__promote<_Tp>::__type
23866: sph_neumann(unsigned int __n, _Tp __x)
23866: {
23866: typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
23866: return __detail::__sph_neumann<__type>(__n, __x);
23866: }
23866:
23866:
23866:
23866:
23866: }
23866: # 1388 "/usr/include/c++/10/bits/specfun.h" 3
23866: #pragma GCC visibility pop
23866: # 1928 "/usr/include/c++/10/cmath" 2 3
23866:
23866:
23866: }
23866: # 39 "/usr/include/fmt/format.h" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/fmt/core.h" 1 3 4
23866: # 9 "/usr/include/fmt/core.h" 3 4
23866: #define FMT_CORE_H_
23866:
23866: # 1 "/usr/include/c++/10/cstdio" 1 3 4
23866: # 39 "/usr/include/c++/10/cstdio" 3 4
23866:
23866: # 40 "/usr/include/c++/10/cstdio" 3
23866: # 12 "/usr/include/fmt/core.h" 2 3 4
23866: # 1 "/usr/include/c++/10/cstring" 1 3 4
23866: # 39 "/usr/include/c++/10/cstring" 3 4
23866:
23866: # 40 "/usr/include/c++/10/cstring" 3
23866: # 13 "/usr/include/fmt/core.h" 2 3 4
23866:
23866: # 1 "/usr/include/c++/10/iterator" 1 3 4
23866: # 56 "/usr/include/c++/10/iterator" 3 4
23866: #define _GLIBCXX_ITERATOR 1
23866:
23866:
23866: # 59 "/usr/include/c++/10/iterator" 3
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/stream_iterator.h" 1 3
23866: # 31 "/usr/include/c++/10/bits/stream_iterator.h" 3
23866: #define _STREAM_ITERATOR_H 1
23866:
23866:
23866: # 34 "/usr/include/c++/10/bits/stream_iterator.h" 3
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp, typename _CharT = char,
23866: typename _Traits = char_traits<_CharT>, typename _Dist = ptrdiff_t>
23866: class istream_iterator
23866: : public iterator<input_iterator_tag, _Tp, _Dist, const _Tp*, const _Tp&>
23866: {
23866: public:
23866: typedef _CharT char_type;
23866: typedef _Traits traits_type;
23866: typedef basic_istream<_CharT, _Traits> istream_type;
23866:
23866: private:
23866: istream_type* _M_stream;
23866: _Tp _M_value;
23866:
23866:
23866:
23866: bool _M_ok;
23866:
23866: public:
23866:
23866: constexpr istream_iterator()
23866: : _M_stream(0), _M_value(), _M_ok(false) {}
23866:
23866:
23866: istream_iterator(istream_type& __s)
23866: : _M_stream(std::__addressof(__s)), _M_ok(true)
23866: { _M_read(); }
23866:
23866: istream_iterator(const istream_iterator& __obj)
23866: : _M_stream(__obj._M_stream), _M_value(__obj._M_value),
23866: _M_ok(__obj._M_ok)
23866: { }
23866: # 88 "/usr/include/c++/10/bits/stream_iterator.h" 3
23866: istream_iterator& operator=(const istream_iterator&) = default;
23866: ~istream_iterator() = default;
23866:
23866:
23866: const _Tp&
23866: operator*() const
23866: {
23866:
23866:
23866: ;
23866: return _M_value;
23866: }
23866:
23866: const _Tp*
23866: operator->() const { return std::__addressof((operator*())); }
23866:
23866: istream_iterator&
23866: operator++()
23866: {
23866:
23866:
23866: ;
23866: _M_read();
23866: return *this;
23866: }
23866:
23866: istream_iterator
23866: operator++(int)
23866: {
23866:
23866:
23866: ;
23866: istream_iterator __tmp = *this;
23866: _M_read();
23866: return __tmp;
23866: }
23866:
23866: private:
23866: bool
23866: _M_equal(const istream_iterator& __x) const
23866: {
23866:
23866:
23866: return (_M_ok == __x._M_ok) && (!_M_ok || _M_stream == __x._M_stream);
23866: }
23866:
23866: void
23866: _M_read()
23866: {
23866: if (_M_stream && !(*_M_stream >> _M_value))
23866: {
23866: _M_stream = 0;
23866: _M_ok = false;
23866: }
23866: }
23866:
23866:
23866:
23866: friend bool
23866: operator==(const istream_iterator& __x, const istream_iterator& __y)
23866: { return __x._M_equal(__y); }
23866:
23866:
23866:
23866: friend bool
23866: operator!=(const istream_iterator& __x, const istream_iterator& __y)
23866: { return !__x._M_equal(__y); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: };
23866: # 174 "/usr/include/c++/10/bits/stream_iterator.h" 3
23866: template<typename _Tp, typename _CharT = char,
23866: typename _Traits = char_traits<_CharT> >
23866: class ostream_iterator
23866: : public iterator<output_iterator_tag, void, void, void, void>
23866: {
23866: public:
23866:
23866:
23866:
23866:
23866:
23866: typedef _CharT char_type;
23866: typedef _Traits traits_type;
23866: typedef basic_ostream<_CharT, _Traits> ostream_type;
23866:
23866:
23866: private:
23866: ostream_type* _M_stream;
23866: const _CharT* _M_string;
23866:
23866: public:
23866:
23866:
23866:
23866:
23866:
23866:
23866: ostream_iterator(ostream_type& __s)
23866: : _M_stream(std::__addressof(__s)), _M_string(0) {}
23866: # 214 "/usr/include/c++/10/bits/stream_iterator.h" 3
23866: ostream_iterator(ostream_type& __s, const _CharT* __c)
23866: : _M_stream(std::__addressof(__s)), _M_string(__c) { }
23866:
23866:
23866: ostream_iterator(const ostream_iterator& __obj)
23866: : _M_stream(__obj._M_stream), _M_string(__obj._M_string) { }
23866:
23866:
23866: ostream_iterator& operator=(const ostream_iterator&) = default;
23866:
23866:
23866:
23866:
23866: ostream_iterator&
23866: operator=(const _Tp& __value)
23866: {
23866:
23866:
23866: ;
23866: *_M_stream << __value;
23866: if (_M_string)
23866: *_M_stream << _M_string;
23866: return *this;
23866: }
23866:
23866: ostream_iterator&
23866: operator*()
23866: { return *this; }
23866:
23866: ostream_iterator&
23866: operator++()
23866: { return *this; }
23866:
23866: ostream_iterator&
23866: operator++(int)
23866: { return *this; }
23866: };
23866:
23866:
23866:
23866:
23866: }
23866: # 66 "/usr/include/c++/10/iterator" 2 3
23866:
23866:
23866:
23866:
23866: #define __cpp_lib_null_iterators 201304L
23866: # 15 "/usr/include/fmt/core.h" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define FMT_VERSION 70103
23866:
23866:
23866:
23866:
23866: #define FMT_CLANG_VERSION 0
23866:
23866:
23866:
23866: #define FMT_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define FMT_ICC_VERSION 0
23866:
23866:
23866:
23866: #define FMT_HAS_GXX_CXX11 FMT_GCC_VERSION
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define FMT_NVCC 0
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define FMT_MSC_VER 0
23866: #define FMT_SUPPRESS_MSC_WARNING(n)
23866:
23866:
23866:
23866:
23866:
23866: #define FMT_HAS_FEATURE(x) 0
23866:
23866:
23866:
23866:
23866: #define FMT_HAS_INCLUDE(x) __has_include(x)
23866:
23866:
23866:
23866:
23866:
23866: #define FMT_HAS_CPP_ATTRIBUTE(x) __has_cpp_attribute(x)
23866:
23866:
23866:
23866:
23866: #define FMT_HAS_CPP14_ATTRIBUTE(attribute) (__cplusplus >= 201402L && FMT_HAS_CPP_ATTRIBUTE(attribute))
23866:
23866:
23866: #define FMT_HAS_CPP17_ATTRIBUTE(attribute) (__cplusplus >= 201703L && FMT_HAS_CPP_ATTRIBUTE(attribute))
23866:
23866:
23866:
23866:
23866:
23866: #define FMT_USE_CONSTEXPR (FMT_HAS_FEATURE(cxx_relaxed_constexpr) || FMT_MSC_VER >= 1910 || (FMT_GCC_VERSION >= 600 && __cplusplus >= 201402L)) && !FMT_NVCC && !FMT_ICC_VERSION
23866:
23866:
23866:
23866:
23866:
23866: #define FMT_CONSTEXPR constexpr
23866: #define FMT_CONSTEXPR_DECL constexpr
23866: # 105 "/usr/include/fmt/core.h" 3 4
23866: #define FMT_OVERRIDE override
23866: # 117 "/usr/include/fmt/core.h" 3 4
23866: #define FMT_EXCEPTIONS 1
23866:
23866:
23866:
23866:
23866:
23866: #define FMT_USE_NOEXCEPT 0
23866:
23866:
23866:
23866:
23866: #define FMT_DETECTED_NOEXCEPT noexcept
23866: #define FMT_HAS_CXX11_NOEXCEPT 1
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define FMT_NOEXCEPT FMT_DETECTED_NOEXCEPT
23866: # 147 "/usr/include/fmt/core.h" 3 4
23866: #define FMT_NORETURN [[noreturn]]
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define FMT_DEPRECATED [[deprecated]]
23866: # 170 "/usr/include/fmt/core.h" 3 4
23866: #define FMT_DEPRECATED_ALIAS FMT_DEPRECATED
23866:
23866:
23866:
23866:
23866: #define FMT_INLINE inline __attribute__((always_inline))
23866: # 184 "/usr/include/fmt/core.h" 3 4
23866: #define FMT_USE_INLINE_NAMESPACES 1
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define FMT_INLINE_NAMESPACE inline namespace
23866: #define FMT_END_NAMESPACE } }
23866: # 203 "/usr/include/fmt/core.h" 3 4
23866: #define FMT_BEGIN_NAMESPACE namespace fmt { FMT_INLINE_NAMESPACE v7 {
23866: # 219 "/usr/include/fmt/core.h" 3 4
23866: #define FMT_CLASS_API
23866:
23866:
23866: #define FMT_API
23866:
23866:
23866: #define FMT_EXTERN_TEMPLATE_API
23866:
23866:
23866: #define FMT_INSTANTIATION_DEF_API FMT_API
23866:
23866:
23866:
23866: #define FMT_EXTERN extern
23866: # 242 "/usr/include/fmt/core.h" 3 4
23866: #define FMT_USE_STRING_VIEW
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define FMT_UNICODE !FMT_MSC_VER
23866:
23866:
23866:
23866:
23866:
23866: namespace fmt { inline namespace v7 {
23866:
23866:
23866: template <bool B, class T = void>
23866: using enable_if_t = typename std::enable_if<B, T>::type;
23866: template <bool B, class T, class F>
23866: using conditional_t = typename std::conditional<B, T, F>::type;
23866: template <bool B> using bool_constant = std::integral_constant<bool, B>;
23866: template <typename T>
23866: using remove_reference_t = typename std::remove_reference<T>::type;
23866: template <typename T>
23866: using remove_const_t = typename std::remove_const<T>::type;
23866: template <typename T>
23866: using remove_cvref_t = typename std::remove_cv<remove_reference_t<T>>::type;
23866: template <typename T> struct type_identity { using type = T; };
23866: template <typename T> using type_identity_t = typename type_identity<T>::type;
23866:
23866: struct monostate {};
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define FMT_ENABLE_IF(...) enable_if_t<(__VA_ARGS__), int> = 0
23866:
23866:
23866: namespace detail {
23866:
23866:
23866: template <typename T> constexpr T const_check(T value) { return value; }
23866:
23866: [[noreturn]] void assert_fail(const char* file, int line,
23866: const char* message);
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define FMT_ASSERT(condition,message) ((condition) ? (void)0 : ::fmt::detail::assert_fail(__FILE__, __LINE__, (message)))
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <typename Char> using std_string_view = std::basic_string_view<Char>;
23866: # 320 "/usr/include/fmt/core.h" 3 4
23866: #define FMT_USE_INT128 0
23866:
23866:
23866: struct int128_t {};
23866: struct uint128_t {};
23866:
23866:
23866:
23866: template <typename Int>
23866: constexpr typename std::make_unsigned<Int>::type to_unsigned(Int value) {
23866: ((value >= 0) ? (void)0 : ::fmt::detail::assert_fail("/usr/include/fmt/core.h", 330, ("negative value")));
23866: return static_cast<typename std::make_unsigned<Int>::type>(value);
23866: }
23866:
23866: constexpr unsigned char micro[] = "\u00B5";
23866:
23866: template <typename Char> constexpr bool is_unicode() {
23866: return !0 || sizeof(Char) != 1 ||
23866: (sizeof(micro) == 3 && micro[0] == 0xC2 && micro[1] == 0xB5);
23866: }
23866:
23866:
23866:
23866:
23866: enum char8_type : unsigned char {};
23866:
23866: }
23866: # 359 "/usr/include/fmt/core.h" 3 4
23866: template <typename Char> class basic_string_view {
23866: private:
23866: const Char* data_;
23866: size_t size_;
23866:
23866: public:
23866: using value_type = Char;
23866: using iterator = const Char*;
23866:
23866: constexpr basic_string_view() noexcept : data_(nullptr), size_(0) {}
23866:
23866:
23866: constexpr basic_string_view(const Char* s, size_t count) noexcept
23866: : data_(s),
23866: size_(count) {}
23866: # 382 "/usr/include/fmt/core.h" 3 4
23866: constexpr
23866:
23866: basic_string_view(const Char* s)
23866: : data_(s), size_(std::char_traits<Char>::length(s)) {}
23866:
23866:
23866: template <typename Traits, typename Alloc>
23866: constexpr basic_string_view(
23866: const std::basic_string<Char, Traits, Alloc>& s) noexcept
23866: : data_(s.data()),
23866: size_(s.size()) {}
23866:
23866: template <typename S, enable_if_t<(std::is_same< S, detail::std_string_view<Char>>::value), int> = 0
23866: >
23866: constexpr basic_string_view(S s) noexcept : data_(s.data()),
23866: size_(s.size()) {}
23866:
23866:
23866: constexpr const Char* data() const { return data_; }
23866:
23866:
23866: constexpr size_t size() const { return size_; }
23866:
23866: constexpr iterator begin() const { return data_; }
23866: constexpr iterator end() const { return data_ + size_; }
23866:
23866: constexpr const Char& operator[](size_t pos) const { return data_[pos]; }
23866:
23866: constexpr void remove_prefix(size_t n) {
23866: data_ += n;
23866: size_ -= n;
23866: }
23866:
23866:
23866: int compare(basic_string_view other) const {
23866: size_t str_size = size_ < other.size_ ? size_ : other.size_;
23866: int result = std::char_traits<Char>::compare(data_, other.data_, str_size);
23866: if (result == 0)
23866: result = size_ == other.size_ ? 0 : (size_ < other.size_ ? -1 : 1);
23866: return result;
23866: }
23866:
23866: friend bool operator==(basic_string_view lhs, basic_string_view rhs) {
23866: return lhs.compare(rhs) == 0;
23866: }
23866: friend bool operator!=(basic_string_view lhs, basic_string_view rhs) {
23866: return lhs.compare(rhs) != 0;
23866: }
23866: friend bool operator<(basic_string_view lhs, basic_string_view rhs) {
23866: return lhs.compare(rhs) < 0;
23866: }
23866: friend bool operator<=(basic_string_view lhs, basic_string_view rhs) {
23866: return lhs.compare(rhs) <= 0;
23866: }
23866: friend bool operator>(basic_string_view lhs, basic_string_view rhs) {
23866: return lhs.compare(rhs) > 0;
23866: }
23866: friend bool operator>=(basic_string_view lhs, basic_string_view rhs) {
23866: return lhs.compare(rhs) >= 0;
23866: }
23866: };
23866:
23866: using string_view = basic_string_view<char>;
23866: using wstring_view = basic_string_view<wchar_t>;
23866:
23866:
23866: template <typename T> struct is_char : std::false_type {};
23866: template <> struct is_char<char> : std::true_type {};
23866: template <> struct is_char<wchar_t> : std::true_type {};
23866: template <> struct is_char<detail::char8_type> : std::true_type {};
23866: template <> struct is_char<char16_t> : std::true_type {};
23866: template <> struct is_char<char32_t> : std::true_type {};
23866: # 471 "/usr/include/fmt/core.h" 3 4
23866: template <typename Char, enable_if_t<(is_char<Char>::value), int> = 0>
23866: inline basic_string_view<Char> to_string_view(const Char* s) {
23866: return s;
23866: }
23866:
23866: template <typename Char, typename Traits, typename Alloc>
23866: inline basic_string_view<Char> to_string_view(
23866: const std::basic_string<Char, Traits, Alloc>& s) {
23866: return s;
23866: }
23866:
23866: template <typename Char>
23866: inline basic_string_view<Char> to_string_view(basic_string_view<Char> s) {
23866: return s;
23866: }
23866:
23866: template <typename Char,
23866: enable_if_t<(!std::is_empty<detail::std_string_view<Char>>::value), int> = 0>
23866: inline basic_string_view<Char> to_string_view(detail::std_string_view<Char> s) {
23866: return s;
23866: }
23866:
23866:
23866:
23866: struct compile_string {};
23866:
23866: template <typename S>
23866: struct is_compile_string : std::is_base_of<compile_string, S> {};
23866:
23866: template <typename S, enable_if_t<(is_compile_string<S>::value), int> = 0>
23866: constexpr basic_string_view<typename S::char_type> to_string_view(const S& s) {
23866: return s;
23866: }
23866:
23866: namespace detail {
23866: void to_string_view(...);
23866: using fmt::v7::to_string_view;
23866:
23866:
23866:
23866:
23866: template <typename S>
23866: struct is_string : std::is_class<decltype(to_string_view(std::declval<S>()))> {
23866: };
23866:
23866: template <typename S, typename = void> struct char_t_impl {};
23866: template <typename S> struct char_t_impl<S, enable_if_t<is_string<S>::value>> {
23866: using result = decltype(to_string_view(std::declval<S>()));
23866: using type = typename result::value_type;
23866: };
23866:
23866:
23866: template <typename..., typename S, enable_if_t<(!is_compile_string<S>::value), int> = 0>
23866: inline __attribute__((always_inline)) void check_format_string(const S&) {
23866:
23866:
23866:
23866:
23866:
23866: }
23866: template <typename..., typename S, enable_if_t<(is_compile_string<S>::value), int> = 0>
23866: void check_format_string(S);
23866:
23866: struct error_handler {
23866: constexpr error_handler() = default;
23866: constexpr error_handler(const error_handler&) = default;
23866:
23866:
23866: [[noreturn]] void on_error(const char* message);
23866: };
23866: }
23866:
23866:
23866: template <typename S> using char_t = typename detail::char_t_impl<S>::type;
23866: # 562 "/usr/include/fmt/core.h" 3 4
23866: template <typename Char, typename ErrorHandler = detail::error_handler>
23866: class basic_format_parse_context : private ErrorHandler {
23866: private:
23866: basic_string_view<Char> format_str_;
23866: int next_arg_id_;
23866:
23866: public:
23866: using char_type = Char;
23866: using iterator = typename basic_string_view<Char>::iterator;
23866:
23866: explicit constexpr basic_format_parse_context(
23866: basic_string_view<Char> format_str, ErrorHandler eh = {},
23866: int next_arg_id = 0)
23866: : ErrorHandler(eh), format_str_(format_str), next_arg_id_(next_arg_id) {}
23866:
23866:
23866:
23866:
23866:
23866: constexpr iterator begin() const noexcept { return format_str_.begin(); }
23866:
23866:
23866:
23866:
23866: constexpr iterator end() const noexcept { return format_str_.end(); }
23866:
23866:
23866: constexpr void advance_to(iterator it) {
23866: format_str_.remove_prefix(detail::to_unsigned(it - begin()));
23866: }
23866:
23866:
23866:
23866:
23866:
23866: constexpr int next_arg_id() {
23866:
23866:
23866: if (next_arg_id_ >= 0) return next_arg_id_++;
23866: on_error("cannot switch from manual to automatic argument indexing");
23866: return 0;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: constexpr void check_arg_id(int) {
23866: if (next_arg_id_ > 0)
23866: on_error("cannot switch from automatic to manual argument indexing");
23866: else
23866: next_arg_id_ = -1;
23866: }
23866:
23866: constexpr void check_arg_id(basic_string_view<Char>) {}
23866:
23866: constexpr void on_error(const char* message) {
23866: ErrorHandler::on_error(message);
23866: }
23866:
23866: constexpr ErrorHandler error_handler() const { return *this; }
23866: };
23866:
23866: using format_parse_context = basic_format_parse_context<char>;
23866: using wformat_parse_context = basic_format_parse_context<wchar_t>;
23866:
23866: template <typename Context> class basic_format_arg;
23866: template <typename Context> class basic_format_args;
23866: template <typename Context> class dynamic_format_arg_store;
23866:
23866:
23866: template <typename T, typename Char = char, typename Enable = void>
23866: struct formatter {
23866:
23866: formatter() = delete;
23866: };
23866:
23866:
23866:
23866: template <typename T, typename Context>
23866: using has_formatter =
23866: std::is_constructible<typename Context::template formatter_type<T>>;
23866:
23866:
23866: template <typename T> struct is_contiguous : std::false_type {};
23866: template <typename Char>
23866: struct is_contiguous<std::basic_string<Char>> : std::true_type {};
23866:
23866: namespace detail {
23866:
23866:
23866: template <typename Container>
23866: inline Container& get_container(std::back_insert_iterator<Container> it) {
23866: using bi_iterator = std::back_insert_iterator<Container>;
23866: struct accessor : bi_iterator {
23866: accessor(bi_iterator iter) : bi_iterator(iter) {}
23866: using bi_iterator::container;
23866: };
23866: return *accessor(it).container;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <typename T> class buffer {
23866: private:
23866: T* ptr_;
23866: size_t size_;
23866: size_t capacity_;
23866:
23866: protected:
23866:
23866:
23866: buffer(size_t sz) noexcept : size_(sz), capacity_(sz) {}
23866:
23866: buffer(T* p = nullptr, size_t sz = 0, size_t cap = 0) noexcept
23866: : ptr_(p),
23866: size_(sz),
23866: capacity_(cap) {}
23866:
23866: ~buffer() = default;
23866:
23866:
23866: void set(T* buf_data, size_t buf_capacity) noexcept {
23866: ptr_ = buf_data;
23866: capacity_ = buf_capacity;
23866: }
23866:
23866:
23866: virtual void grow(size_t capacity) = 0;
23866:
23866: public:
23866: using value_type = T;
23866: using const_reference = const T&;
23866:
23866: buffer(const buffer&) = delete;
23866: void operator=(const buffer&) = delete;
23866:
23866: T* begin() noexcept { return ptr_; }
23866: T* end() noexcept { return ptr_ + size_; }
23866:
23866: const T* begin() const noexcept { return ptr_; }
23866: const T* end() const noexcept { return ptr_ + size_; }
23866:
23866:
23866: size_t size() const noexcept { return size_; }
23866:
23866:
23866: size_t capacity() const noexcept { return capacity_; }
23866:
23866:
23866: T* data() noexcept { return ptr_; }
23866:
23866:
23866: const T* data() const noexcept { return ptr_; }
23866:
23866:
23866: void clear() { size_ = 0; }
23866:
23866:
23866:
23866: void try_resize(size_t count) {
23866: try_reserve(count);
23866: size_ = count <= capacity_ ? count : capacity_;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: void try_reserve(size_t new_capacity) {
23866: if (new_capacity > capacity_) grow(new_capacity);
23866: }
23866:
23866: void push_back(const T& value) {
23866: try_reserve(size_ + 1);
23866: ptr_[size_++] = value;
23866: }
23866:
23866:
23866: template <typename U> void append(const U* begin, const U* end);
23866:
23866: template <typename I> T& operator[](I index) { return ptr_[index]; }
23866: template <typename I> const T& operator[](I index) const {
23866: return ptr_[index];
23866: }
23866: };
23866:
23866: struct buffer_traits {
23866: explicit buffer_traits(size_t) {}
23866: size_t count() const { return 0; }
23866: size_t limit(size_t size) { return size; }
23866: };
23866:
23866: class fixed_buffer_traits {
23866: private:
23866: size_t count_ = 0;
23866: size_t limit_;
23866:
23866: public:
23866: explicit fixed_buffer_traits(size_t limit) : limit_(limit) {}
23866: size_t count() const { return count_; }
23866: size_t limit(size_t size) {
23866: size_t n = limit_ > count_ ? limit_ - count_ : 0;
23866: count_ += size;
23866: return size < n ? size : n;
23866: }
23866: };
23866:
23866:
23866: template <typename OutputIt, typename T, typename Traits = buffer_traits>
23866: class iterator_buffer final : public Traits, public buffer<T> {
23866: private:
23866: OutputIt out_;
23866: enum { buffer_size = 256 };
23866: T data_[buffer_size];
23866:
23866: protected:
23866: void grow(size_t) final override {
23866: if (this->size() == buffer_size) flush();
23866: }
23866: void flush();
23866:
23866: public:
23866: explicit iterator_buffer(OutputIt out, size_t n = buffer_size)
23866: : Traits(n),
23866: buffer<T>(data_, 0, buffer_size),
23866: out_(out) {}
23866: ~iterator_buffer() { flush(); }
23866:
23866: OutputIt out() {
23866: flush();
23866: return out_;
23866: }
23866: size_t count() const { return Traits::count() + this->size(); }
23866: };
23866:
23866: template <typename T> class iterator_buffer<T*, T> final : public buffer<T> {
23866: protected:
23866: void grow(size_t) final override {}
23866:
23866: public:
23866: explicit iterator_buffer(T* out, size_t = 0) : buffer<T>(out, 0, ~size_t()) {}
23866:
23866: T* out() { return &*this->end(); }
23866: };
23866:
23866:
23866: template <typename Container>
23866: class iterator_buffer<std::back_insert_iterator<Container>,
23866: enable_if_t<is_contiguous<Container>::value,
23866: typename Container::value_type>>
23866: final : public buffer<typename Container::value_type> {
23866: private:
23866: Container& container_;
23866:
23866: protected:
23866: void grow(size_t capacity) final override {
23866: container_.resize(capacity);
23866: this->set(&container_[0], capacity);
23866: }
23866:
23866: public:
23866: explicit iterator_buffer(Container& c)
23866: : buffer<typename Container::value_type>(c.size()), container_(c) {}
23866: explicit iterator_buffer(std::back_insert_iterator<Container> out, size_t = 0)
23866: : iterator_buffer(get_container(out)) {}
23866: std::back_insert_iterator<Container> out() {
23866: return std::back_inserter(container_);
23866: }
23866: };
23866:
23866:
23866: template <typename T = char> class counting_buffer final : public buffer<T> {
23866: private:
23866: enum { buffer_size = 256 };
23866: T data_[buffer_size];
23866: size_t count_ = 0;
23866:
23866: protected:
23866: void grow(size_t) final override {
23866: if (this->size() != buffer_size) return;
23866: count_ += this->size();
23866: this->clear();
23866: }
23866:
23866: public:
23866: counting_buffer() : buffer<T>(data_, 0, buffer_size) {}
23866:
23866: size_t count() { return count_ + this->size(); }
23866: };
23866:
23866:
23866:
23866: template <typename T>
23866: class buffer_appender : public std::back_insert_iterator<buffer<T>> {
23866: using base = std::back_insert_iterator<buffer<T>>;
23866:
23866: public:
23866: explicit buffer_appender(buffer<T>& buf) : base(buf) {}
23866: buffer_appender(base it) : base(it) {}
23866:
23866: buffer_appender& operator++() {
23866: base::operator++();
23866: return *this;
23866: }
23866:
23866: buffer_appender operator++(int) {
23866: buffer_appender tmp = *this;
23866: ++*this;
23866: return tmp;
23866: }
23866: };
23866:
23866:
23866: template <typename T, typename OutputIt>
23866: iterator_buffer<OutputIt, T> get_buffer(OutputIt);
23866: template <typename T> buffer<T>& get_buffer(buffer_appender<T>);
23866:
23866: template <typename OutputIt> OutputIt get_buffer_init(OutputIt out) {
23866: return out;
23866: }
23866: template <typename T> buffer<T>& get_buffer_init(buffer_appender<T> out) {
23866: return get_container(out);
23866: }
23866:
23866: template <typename Buffer>
23866: auto get_iterator(Buffer& buf) -> decltype(buf.out()) {
23866: return buf.out();
23866: }
23866: template <typename T> buffer_appender<T> get_iterator(buffer<T>& buf) {
23866: return buffer_appender<T>(buf);
23866: }
23866:
23866: template <typename T, typename Char = char, typename Enable = void>
23866: struct fallback_formatter {
23866: fallback_formatter() = delete;
23866: };
23866:
23866:
23866: template <typename T, typename Context>
23866: using has_fallback_formatter =
23866: std::is_constructible<fallback_formatter<T, typename Context::char_type>>;
23866:
23866: struct view {};
23866:
23866: template <typename Char, typename T> struct named_arg : view {
23866: const Char* name;
23866: const T& value;
23866: named_arg(const Char* n, const T& v) : name(n), value(v) {}
23866: };
23866:
23866: template <typename Char> struct named_arg_info {
23866: const Char* name;
23866: int id;
23866: };
23866:
23866: template <typename T, typename Char, size_t NUM_ARGS, size_t NUM_NAMED_ARGS>
23866: struct arg_data {
23866:
23866:
23866: T args_[1 + (NUM_ARGS != 0 ? NUM_ARGS : +1)];
23866: named_arg_info<Char> named_args_[NUM_NAMED_ARGS];
23866:
23866: template <typename... U>
23866: arg_data(const U&... init) : args_{T(named_args_, NUM_NAMED_ARGS), init...} {}
23866: arg_data(const arg_data& other) = delete;
23866: const T* args() const { return args_ + 1; }
23866: named_arg_info<Char>* named_args() { return named_args_; }
23866: };
23866:
23866: template <typename T, typename Char, size_t NUM_ARGS>
23866: struct arg_data<T, Char, NUM_ARGS, 0> {
23866:
23866: T args_[NUM_ARGS != 0 ? NUM_ARGS : +1];
23866:
23866: template <typename... U>
23866: inline __attribute__((always_inline)) arg_data(const U&... init) : args_{init...} {}
23866: inline __attribute__((always_inline)) const T* args() const { return args_; }
23866: inline __attribute__((always_inline)) std::nullptr_t named_args() { return nullptr; }
23866: };
23866:
23866: template <typename Char>
23866: inline void init_named_args(named_arg_info<Char>*, int, int) {}
23866:
23866: template <typename Char, typename T, typename... Tail>
23866: void init_named_args(named_arg_info<Char>* named_args, int arg_count,
23866: int named_arg_count, const T&, const Tail&... args) {
23866: init_named_args(named_args, arg_count + 1, named_arg_count, args...);
23866: }
23866:
23866: template <typename Char, typename T, typename... Tail>
23866: void init_named_args(named_arg_info<Char>* named_args, int arg_count,
23866: int named_arg_count, const named_arg<Char, T>& arg,
23866: const Tail&... args) {
23866: named_args[named_arg_count++] = {arg.name, arg_count};
23866: init_named_args(named_args, arg_count + 1, named_arg_count, args...);
23866: }
23866:
23866: template <typename... Args>
23866: inline __attribute__((always_inline)) void init_named_args(std::nullptr_t, int, int, const Args&...) {}
23866:
23866: template <typename T> struct is_named_arg : std::false_type {};
23866:
23866: template <typename T, typename Char>
23866: struct is_named_arg<named_arg<Char, T>> : std::true_type {};
23866:
23866: template <bool B = false> constexpr size_t count() { return B ? 1 : 0; }
23866: template <bool B1, bool B2, bool... Tail> constexpr size_t count() {
23866: return (B1 ? 1 : 0) + count<B2, Tail...>();
23866: }
23866:
23866: template <typename... Args> constexpr size_t count_named_args() {
23866: return count<is_named_arg<Args>::value...>();
23866: }
23866:
23866: enum class type {
23866: none_type,
23866:
23866: int_type,
23866: uint_type,
23866: long_long_type,
23866: ulong_long_type,
23866: int128_type,
23866: uint128_type,
23866: bool_type,
23866: char_type,
23866: last_integer_type = char_type,
23866:
23866: float_type,
23866: double_type,
23866: long_double_type,
23866: last_numeric_type = long_double_type,
23866: cstring_type,
23866: string_type,
23866: pointer_type,
23866: custom_type
23866: };
23866:
23866:
23866: template <typename T, typename Char>
23866: struct type_constant : std::integral_constant<type, type::custom_type> {};
23866:
23866: #define FMT_TYPE_CONSTANT(Type,constant) template <typename Char> struct type_constant<Type, Char> : std::integral_constant<type, type::constant> {}
23866:
23866:
23866:
23866:
23866: template <typename Char> struct type_constant<int, Char> : std::integral_constant<type, type::int_type> {};
23866: template <typename Char> struct type_constant<unsigned, Char> : std::integral_constant<type, type::uint_type> {};
23866: template <typename Char> struct type_constant<long long, Char> : std::integral_constant<type, type::long_long_type> {};
23866: template <typename Char> struct type_constant<unsigned long long, Char> : std::integral_constant<type, type::ulong_long_type> {};
23866: template <typename Char> struct type_constant<int128_t, Char> : std::integral_constant<type, type::int128_type> {};
23866: template <typename Char> struct type_constant<uint128_t, Char> : std::integral_constant<type, type::uint128_type> {};
23866: template <typename Char> struct type_constant<bool, Char> : std::integral_constant<type, type::bool_type> {};
23866: template <typename Char> struct type_constant<Char, Char> : std::integral_constant<type, type::char_type> {};
23866: template <typename Char> struct type_constant<float, Char> : std::integral_constant<type, type::float_type> {};
23866: template <typename Char> struct type_constant<double, Char> : std::integral_constant<type, type::double_type> {};
23866: template <typename Char> struct type_constant<long double, Char> : std::integral_constant<type, type::long_double_type> {};
23866: template <typename Char> struct type_constant<const Char*, Char> : std::integral_constant<type, type::cstring_type> {};
23866: template <typename Char> struct type_constant<basic_string_view<Char>, Char> : std::integral_constant<type, type::string_type> {};
23866: template <typename Char> struct type_constant<const void*, Char> : std::integral_constant<type, type::pointer_type> {};
23866:
23866: constexpr bool is_integral_type(type t) {
23866: return t > type::none_type && t <= type::last_integer_type;
23866: }
23866:
23866: constexpr bool is_arithmetic_type(type t) {
23866: return t > type::none_type && t <= type::last_numeric_type;
23866: }
23866:
23866: template <typename Char> struct string_value {
23866: const Char* data;
23866: size_t size;
23866: };
23866:
23866: template <typename Char> struct named_arg_value {
23866: const named_arg_info<Char>* data;
23866: size_t size;
23866: };
23866:
23866: template <typename Context> struct custom_value {
23866: using parse_context = typename Context::parse_context_type;
23866: const void* value;
23866: void (*format)(const void* arg, parse_context& parse_ctx, Context& ctx);
23866: };
23866:
23866:
23866: template <typename Context> class value {
23866: public:
23866: using char_type = typename Context::char_type;
23866:
23866: union {
23866: int int_value;
23866: unsigned uint_value;
23866: long long long_long_value;
23866: unsigned long long ulong_long_value;
23866: int128_t int128_value;
23866: uint128_t uint128_value;
23866: bool bool_value;
23866: char_type char_value;
23866: float float_value;
23866: double double_value;
23866: long double long_double_value;
23866: const void* pointer;
23866: string_value<char_type> string;
23866: custom_value<Context> custom;
23866: named_arg_value<char_type> named_args;
23866: };
23866:
23866: constexpr inline __attribute__((always_inline)) value(int val = 0) : int_value(val) {}
23866: constexpr inline __attribute__((always_inline)) value(unsigned val) : uint_value(val) {}
23866: inline __attribute__((always_inline)) value(long long val) : long_long_value(val) {}
23866: inline __attribute__((always_inline)) value(unsigned long long val) : ulong_long_value(val) {}
23866: inline __attribute__((always_inline)) value(int128_t val) : int128_value(val) {}
23866: inline __attribute__((always_inline)) value(uint128_t val) : uint128_value(val) {}
23866: inline __attribute__((always_inline)) value(float val) : float_value(val) {}
23866: inline __attribute__((always_inline)) value(double val) : double_value(val) {}
23866: inline __attribute__((always_inline)) value(long double val) : long_double_value(val) {}
23866: inline __attribute__((always_inline)) value(bool val) : bool_value(val) {}
23866: inline __attribute__((always_inline)) value(char_type val) : char_value(val) {}
23866: inline __attribute__((always_inline)) value(const char_type* val) { string.data = val; }
23866: inline __attribute__((always_inline)) value(basic_string_view<char_type> val) {
23866: string.data = val.data();
23866: string.size = val.size();
23866: }
23866: inline __attribute__((always_inline)) value(const void* val) : pointer(val) {}
23866: inline __attribute__((always_inline)) value(const named_arg_info<char_type>* args, size_t size)
23866: : named_args{args, size} {}
23866:
23866: template <typename T> inline __attribute__((always_inline)) value(const T& val) {
23866: custom.value = &val;
23866:
23866:
23866:
23866: custom.format = format_custom_arg<
23866: T, conditional_t<has_formatter<T, Context>::value,
23866: typename Context::template formatter_type<T>,
23866: fallback_formatter<T, char_type>>>;
23866: }
23866:
23866: private:
23866:
23866: template <typename T, typename Formatter>
23866: static void format_custom_arg(const void* arg,
23866: typename Context::parse_context_type& parse_ctx,
23866: Context& ctx) {
23866: Formatter f;
23866: parse_ctx.advance_to(f.parse(parse_ctx));
23866: ctx.advance_to(f.format(*static_cast<const T*>(arg), ctx));
23866: }
23866: };
23866:
23866: template <typename Context, typename T>
23866: constexpr basic_format_arg<Context> make_arg(const T& value);
23866:
23866:
23866:
23866: enum { long_short = sizeof(long) == sizeof(int) };
23866: using long_type = conditional_t<long_short, int, long long>;
23866: using ulong_type = conditional_t<long_short, unsigned, unsigned long long>;
23866:
23866: struct unformattable {};
23866:
23866:
23866: template <typename Context> struct arg_mapper {
23866: using char_type = typename Context::char_type;
23866:
23866: constexpr int map(signed char val) { return val; }
23866: constexpr unsigned map(unsigned char val) { return val; }
23866: constexpr int map(short val) { return val; }
23866: constexpr unsigned map(unsigned short val) { return val; }
23866: constexpr int map(int val) { return val; }
23866: constexpr unsigned map(unsigned val) { return val; }
23866: constexpr long_type map(long val) { return val; }
23866: constexpr ulong_type map(unsigned long val) { return val; }
23866: constexpr long long map(long long val) { return val; }
23866: constexpr unsigned long long map(unsigned long long val) { return val; }
23866: constexpr int128_t map(int128_t val) { return val; }
23866: constexpr uint128_t map(uint128_t val) { return val; }
23866: constexpr bool map(bool val) { return val; }
23866:
23866: template <typename T, enable_if_t<(is_char<T>::value), int> = 0>
23866: constexpr char_type map(T val) {
23866: static_assert(
23866: std::is_same<T, char>::value || std::is_same<T, char_type>::value,
23866: "mixing character types is disallowed");
23866: return val;
23866: }
23866:
23866: constexpr float map(float val) { return val; }
23866: constexpr double map(double val) { return val; }
23866: constexpr long double map(long double val) { return val; }
23866:
23866: constexpr const char_type* map(char_type* val) { return val; }
23866: constexpr const char_type* map(const char_type* val) { return val; }
23866: template <typename T, enable_if_t<(is_string<T>::value), int> = 0>
23866: constexpr basic_string_view<char_type> map(const T& val) {
23866: static_assert(std::is_same<char_type, char_t<T>>::value,
23866: "mixing character types is disallowed");
23866: return to_string_view(val);
23866: }
23866: template <typename T,
23866: enable_if_t<(std::is_constructible<basic_string_view<char_type>, T>::value && !is_string<T>::value && !has_formatter<T, Context>::value && !has_fallback_formatter<T, Context>::value), int> = 0
23866:
23866:
23866: >
23866: constexpr basic_string_view<char_type> map(const T& val) {
23866: return basic_string_view<char_type>(val);
23866: }
23866: template <
23866: typename T,
23866: enable_if_t<(std::is_constructible<std_string_view<char_type>, T>::value && !std::is_constructible<basic_string_view<char_type>, T>::value && !is_string<T>::value && !has_formatter<T, Context>::value && !has_fallback_formatter<T, Context>::value), int> = 0
23866:
23866:
23866:
23866: >
23866: constexpr basic_string_view<char_type> map(const T& val) {
23866: return std_string_view<char_type>(val);
23866: }
23866: constexpr const char* map(const signed char* val) {
23866: static_assert(std::is_same<char_type, char>::value, "invalid string type");
23866: return reinterpret_cast<const char*>(val);
23866: }
23866: constexpr const char* map(const unsigned char* val) {
23866: static_assert(std::is_same<char_type, char>::value, "invalid string type");
23866: return reinterpret_cast<const char*>(val);
23866: }
23866: constexpr const char* map(signed char* val) {
23866: const auto* const_val = val;
23866: return map(const_val);
23866: }
23866: constexpr const char* map(unsigned char* val) {
23866: const auto* const_val = val;
23866: return map(const_val);
23866: }
23866:
23866: constexpr const void* map(void* val) { return val; }
23866: constexpr const void* map(const void* val) { return val; }
23866: constexpr const void* map(std::nullptr_t val) { return val; }
23866: template <typename T> constexpr int map(const T*) {
23866:
23866:
23866:
23866:
23866: static_assert(!sizeof(T), "formatting of non-void pointers is disallowed");
23866: return 0;
23866: }
23866:
23866: template <typename T,
23866: enable_if_t<(std::is_enum<T>::value && !has_formatter<T, Context>::value && !has_fallback_formatter<T, Context>::value), int> = 0
23866:
23866: >
23866: constexpr auto map(const T& val)
23866: -> decltype(std::declval<arg_mapper>().map(
23866: static_cast<typename std::underlying_type<T>::type>(val))) {
23866: return map(static_cast<typename std::underlying_type<T>::type>(val));
23866: }
23866: template <typename T,
23866: enable_if_t<(!is_string<T>::value && !is_char<T>::value && (has_formatter<T, Context>::value || has_fallback_formatter<T, Context>::value)), int> = 0
23866:
23866: >
23866: constexpr const T& map(const T& val) {
23866: return val;
23866: }
23866:
23866: template <typename T>
23866: constexpr auto map(const named_arg<char_type, T>& val)
23866: -> decltype(std::declval<arg_mapper>().map(val.value)) {
23866: return map(val.value);
23866: }
23866:
23866: unformattable map(...) { return {}; }
23866: };
23866:
23866:
23866: template <typename T, typename Context>
23866: using mapped_type_constant =
23866: type_constant<decltype(arg_mapper<Context>().map(std::declval<const T&>())),
23866: typename Context::char_type>;
23866:
23866: enum { packed_arg_bits = 4 };
23866:
23866: enum { max_packed_args = 62 / packed_arg_bits };
23866: enum : unsigned long long { is_unpacked_bit = 1ULL << 63 };
23866: enum : unsigned long long { has_named_args_bit = 1ULL << 62 };
23866: }
23866:
23866:
23866:
23866: template <typename Context> class basic_format_arg {
23866: private:
23866: detail::value<Context> value_;
23866: detail::type type_;
23866:
23866: template <typename ContextType, typename T>
23866: friend constexpr basic_format_arg<ContextType> detail::make_arg(
23866: const T& value);
23866:
23866: template <typename Visitor, typename Ctx>
23866: friend constexpr auto visit_format_arg(Visitor&& vis,
23866: const basic_format_arg<Ctx>& arg)
23866: -> decltype(vis(0));
23866:
23866: friend class basic_format_args<Context>;
23866: friend class dynamic_format_arg_store<Context>;
23866:
23866: using char_type = typename Context::char_type;
23866:
23866: template <typename T, typename Char, size_t NUM_ARGS, size_t NUM_NAMED_ARGS>
23866: friend struct detail::arg_data;
23866:
23866: basic_format_arg(const detail::named_arg_info<char_type>* args, size_t size)
23866: : value_(args, size) {}
23866:
23866: public:
23866: class handle {
23866: public:
23866: explicit handle(detail::custom_value<Context> custom) : custom_(custom) {}
23866:
23866: void format(typename Context::parse_context_type& parse_ctx,
23866: Context& ctx) const {
23866: custom_.format(custom_.value, parse_ctx, ctx);
23866: }
23866:
23866: private:
23866: detail::custom_value<Context> custom_;
23866: };
23866:
23866: constexpr basic_format_arg() : type_(detail::type::none_type) {}
23866:
23866: constexpr explicit operator bool() const noexcept {
23866: return type_ != detail::type::none_type;
23866: }
23866:
23866: detail::type type() const { return type_; }
23866:
23866: bool is_integral() const { return detail::is_integral_type(type_); }
23866: bool is_arithmetic() const { return detail::is_arithmetic_type(type_); }
23866: };
23866: # 1313 "/usr/include/fmt/core.h" 3 4
23866: template <typename Visitor, typename Context>
23866: constexpr inline __attribute__((always_inline)) auto visit_format_arg(
23866: Visitor&& vis, const basic_format_arg<Context>& arg) -> decltype(vis(0)) {
23866: using char_type = typename Context::char_type;
23866: switch (arg.type_) {
23866: case detail::type::none_type:
23866: break;
23866: case detail::type::int_type:
23866: return vis(arg.value_.int_value);
23866: case detail::type::uint_type:
23866: return vis(arg.value_.uint_value);
23866: case detail::type::long_long_type:
23866: return vis(arg.value_.long_long_value);
23866: case detail::type::ulong_long_type:
23866: return vis(arg.value_.ulong_long_value);
23866:
23866:
23866:
23866:
23866:
23866:
23866: case detail::type::int128_type:
23866: case detail::type::uint128_type:
23866: break;
23866:
23866: case detail::type::bool_type:
23866: return vis(arg.value_.bool_value);
23866: case detail::type::char_type:
23866: return vis(arg.value_.char_value);
23866: case detail::type::float_type:
23866: return vis(arg.value_.float_value);
23866: case detail::type::double_type:
23866: return vis(arg.value_.double_value);
23866: case detail::type::long_double_type:
23866: return vis(arg.value_.long_double_value);
23866: case detail::type::cstring_type:
23866: return vis(arg.value_.string.data);
23866: case detail::type::string_type:
23866: return vis(basic_string_view<char_type>(arg.value_.string.data,
23866: arg.value_.string.size));
23866: case detail::type::pointer_type:
23866: return vis(arg.value_.pointer);
23866: case detail::type::custom_type:
23866: return vis(typename basic_format_arg<Context>::handle(arg.value_.custom));
23866: }
23866: return vis(monostate());
23866: }
23866:
23866: template <typename T> struct formattable : std::false_type {};
23866:
23866: namespace detail {
23866:
23866:
23866: template <typename... Ts> struct void_t_impl { using type = void; };
23866: template <typename... Ts>
23866: using void_t = typename detail::void_t_impl<Ts...>::type;
23866:
23866: template <typename It, typename T, typename Enable = void>
23866: struct is_output_iterator : std::false_type {};
23866:
23866: template <typename It, typename T>
23866: struct is_output_iterator<
23866: It, T,
23866: void_t<typename std::iterator_traits<It>::iterator_category,
23866: decltype(*std::declval<It>() = std::declval<T>())>>
23866: : std::true_type {};
23866:
23866: template <typename OutputIt>
23866: struct is_back_insert_iterator : std::false_type {};
23866: template <typename Container>
23866: struct is_back_insert_iterator<std::back_insert_iterator<Container>>
23866: : std::true_type {};
23866:
23866: template <typename OutputIt>
23866: struct is_contiguous_back_insert_iterator : std::false_type {};
23866: template <typename Container>
23866: struct is_contiguous_back_insert_iterator<std::back_insert_iterator<Container>>
23866: : is_contiguous<Container> {};
23866: template <typename Char>
23866: struct is_contiguous_back_insert_iterator<buffer_appender<Char>>
23866: : std::true_type {};
23866:
23866:
23866: class locale_ref {
23866: private:
23866: const void* locale_;
23866:
23866: public:
23866: locale_ref() : locale_(nullptr) {}
23866: template <typename Locale> explicit locale_ref(const Locale& loc);
23866:
23866: explicit operator bool() const noexcept { return locale_ != nullptr; }
23866:
23866: template <typename Locale> Locale get() const;
23866: };
23866:
23866: template <typename> constexpr unsigned long long encode_types() { return 0; }
23866:
23866: template <typename Context, typename Arg, typename... Args>
23866: constexpr unsigned long long encode_types() {
23866: return static_cast<unsigned>(mapped_type_constant<Arg, Context>::value) |
23866: (encode_types<Context, Args...>() << packed_arg_bits);
23866: }
23866:
23866: template <typename Context, typename T>
23866: constexpr basic_format_arg<Context> make_arg(const T& value) {
23866: basic_format_arg<Context> arg;
23866: arg.type_ = mapped_type_constant<T, Context>::value;
23866: arg.value_ = arg_mapper<Context>().map(value);
23866: return arg;
23866: }
23866:
23866: template <typename T> int check(unformattable) {
23866: static_assert(
23866: formattable<T>(),
23866: "Cannot format an argument. To make type T formattable provide a "
23866: "formatter<T> specialization: https://fmt.dev/latest/api.html#udt");
23866: return 0;
23866: }
23866: template <typename T, typename U> inline const U& check(const U& val) {
23866: return val;
23866: }
23866:
23866:
23866:
23866:
23866: template <bool IS_PACKED, typename Context, type, typename T,
23866: enable_if_t<(IS_PACKED), int> = 0>
23866: inline value<Context> make_arg(const T& val) {
23866: return check<T>(arg_mapper<Context>().map(val));
23866: }
23866:
23866: template <bool IS_PACKED, typename Context, type, typename T,
23866: enable_if_t<(!IS_PACKED), int> = 0>
23866: inline basic_format_arg<Context> make_arg(const T& value) {
23866: return make_arg<Context>(value);
23866: }
23866:
23866: template <typename T> struct is_reference_wrapper : std::false_type {};
23866: template <typename T>
23866: struct is_reference_wrapper<std::reference_wrapper<T>> : std::true_type {};
23866:
23866: template <typename T> const T& unwrap(const T& v) { return v; }
23866: template <typename T> const T& unwrap(const std::reference_wrapper<T>& v) {
23866: return static_cast<const T&>(v);
23866: }
23866:
23866: class dynamic_arg_list {
23866:
23866:
23866:
23866: template <typename = void> struct node {
23866: virtual ~node() = default;
23866: std::unique_ptr<node<>> next;
23866: };
23866:
23866: template <typename T> struct typed_node : node<> {
23866: T value;
23866:
23866: template <typename Arg>
23866: constexpr typed_node(const Arg& arg) : value(arg) {}
23866:
23866: template <typename Char>
23866: constexpr typed_node(const basic_string_view<Char>& arg)
23866: : value(arg.data(), arg.size()) {}
23866: };
23866:
23866: std::unique_ptr<node<>> head_;
23866:
23866: public:
23866: template <typename T, typename Arg> const T& push(const Arg& arg) {
23866: auto new_node = std::unique_ptr<typed_node<T>>(new typed_node<T>(arg));
23866: auto& value = new_node->value;
23866: new_node->next = std::move(head_);
23866: head_ = std::move(new_node);
23866: return value;
23866: }
23866: };
23866: }
23866:
23866:
23866: template <typename OutputIt, typename Char> class basic_format_context {
23866: public:
23866:
23866: using char_type = Char;
23866:
23866: private:
23866: OutputIt out_;
23866: basic_format_args<basic_format_context> args_;
23866: detail::locale_ref loc_;
23866:
23866: public:
23866: using iterator = OutputIt;
23866: using format_arg = basic_format_arg<basic_format_context>;
23866: using parse_context_type = basic_format_parse_context<Char>;
23866: template <typename T> using formatter_type = formatter<T, char_type>;
23866:
23866: basic_format_context(const basic_format_context&) = delete;
23866: void operator=(const basic_format_context&) = delete;
23866:
23866:
23866:
23866:
23866: basic_format_context(OutputIt out,
23866: basic_format_args<basic_format_context> ctx_args,
23866: detail::locale_ref loc = detail::locale_ref())
23866: : out_(out), args_(ctx_args), loc_(loc) {}
23866:
23866: format_arg arg(int id) const { return args_.get(id); }
23866: format_arg arg(basic_string_view<char_type> name) { return args_.get(name); }
23866: int arg_id(basic_string_view<char_type> name) { return args_.get_id(name); }
23866: const basic_format_args<basic_format_context>& args() const { return args_; }
23866:
23866: detail::error_handler error_handler() { return {}; }
23866: void on_error(const char* message) { error_handler().on_error(message); }
23866:
23866:
23866: iterator out() { return out_; }
23866:
23866:
23866: void advance_to(iterator it) {
23866: if (!detail::is_back_insert_iterator<iterator>()) out_ = it;
23866: }
23866:
23866: detail::locale_ref locale() { return loc_; }
23866: };
23866:
23866: template <typename Char>
23866: using buffer_context =
23866: basic_format_context<detail::buffer_appender<Char>, Char>;
23866: using format_context = buffer_context<char>;
23866: using wformat_context = buffer_context<wchar_t>;
23866:
23866:
23866: #define FMT_BUFFER_CONTEXT(Char) basic_format_context<detail::buffer_appender<Char>, Char>
23866: # 1557 "/usr/include/fmt/core.h" 3 4
23866: template <typename Context, typename... Args>
23866: class format_arg_store
23866:
23866:
23866:
23866:
23866: {
23866: private:
23866: static const size_t num_args = sizeof...(Args);
23866: static const size_t num_named_args = detail::count_named_args<Args...>();
23866: static const bool is_packed = num_args <= detail::max_packed_args;
23866:
23866: using value_type = conditional_t<is_packed, detail::value<Context>,
23866: basic_format_arg<Context>>;
23866:
23866: detail::arg_data<value_type, typename Context::char_type, num_args,
23866: num_named_args>
23866: data_;
23866:
23866: friend class basic_format_args<Context>;
23866:
23866: static constexpr unsigned long long desc =
23866: (is_packed ? detail::encode_types<Context, Args...>()
23866: : detail::is_unpacked_bit | num_args) |
23866: (num_named_args != 0
23866: ? static_cast<unsigned long long>(detail::has_named_args_bit)
23866: : 0);
23866:
23866: public:
23866: format_arg_store(const Args&... args)
23866: :
23866:
23866:
23866:
23866: data_{detail::make_arg<
23866: is_packed, Context,
23866: detail::mapped_type_constant<Args, Context>::value>(args)...} {
23866: detail::init_named_args(data_.named_args(), 0, 0, args...);
23866: }
23866: };
23866: # 1606 "/usr/include/fmt/core.h" 3 4
23866: template <typename Context = format_context, typename... Args>
23866: inline format_arg_store<Context, Args...> make_format_args(
23866: const Args&... args) {
23866: return {args...};
23866: }
23866: # 1620 "/usr/include/fmt/core.h" 3 4
23866: template <typename... Args, typename S, typename Char = char_t<S>>
23866: inline auto make_args_checked(const S& format_str,
23866: const remove_reference_t<Args>&... args)
23866: -> format_arg_store<buffer_context<Char>, remove_reference_t<Args>...> {
23866: static_assert(
23866: detail::count<(
23866: std::is_base_of<detail::view, remove_reference_t<Args>>::value &&
23866: std::is_reference<Args>::value)...>() == 0,
23866: "passing views as lvalues is disallowed");
23866: detail::check_format_string<Args...>(format_str);
23866: return {args...};
23866: }
23866: # 1643 "/usr/include/fmt/core.h" 3 4
23866: template <typename Char, typename T>
23866: inline detail::named_arg<Char, T> arg(const Char* name, const T& arg) {
23866: static_assert(!detail::is_named_arg<T>(), "nested named arguments");
23866: return {name, arg};
23866: }
23866: # 1659 "/usr/include/fmt/core.h" 3 4
23866: template <typename Context>
23866: class dynamic_format_arg_store
23866:
23866:
23866:
23866:
23866: {
23866: private:
23866: using char_type = typename Context::char_type;
23866:
23866: template <typename T> struct need_copy {
23866: static constexpr detail::type mapped_type =
23866: detail::mapped_type_constant<T, Context>::value;
23866:
23866: enum {
23866: value = !(detail::is_reference_wrapper<T>::value ||
23866: std::is_same<T, basic_string_view<char_type>>::value ||
23866: std::is_same<T, detail::std_string_view<char_type>>::value ||
23866: (mapped_type != detail::type::cstring_type &&
23866: mapped_type != detail::type::string_type &&
23866: mapped_type != detail::type::custom_type))
23866: };
23866: };
23866:
23866: template <typename T>
23866: using stored_type = conditional_t<detail::is_string<T>::value,
23866: std::basic_string<char_type>, T>;
23866:
23866:
23866: std::vector<basic_format_arg<Context>> data_;
23866: std::vector<detail::named_arg_info<char_type>> named_info_;
23866:
23866:
23866:
23866: detail::dynamic_arg_list dynamic_args_;
23866:
23866: friend class basic_format_args<Context>;
23866:
23866: unsigned long long get_types() const {
23866: return detail::is_unpacked_bit | data_.size() |
23866: (named_info_.empty()
23866: ? 0ULL
23866: : static_cast<unsigned long long>(detail::has_named_args_bit));
23866: }
23866:
23866: const basic_format_arg<Context>* data() const {
23866: return named_info_.empty() ? data_.data() : data_.data() + 1;
23866: }
23866:
23866: template <typename T> void emplace_arg(const T& arg) {
23866: data_.emplace_back(detail::make_arg<Context>(arg));
23866: }
23866:
23866: template <typename T>
23866: void emplace_arg(const detail::named_arg<char_type, T>& arg) {
23866: if (named_info_.empty()) {
23866: constexpr const detail::named_arg_info<char_type>* zero_ptr{nullptr};
23866: data_.insert(data_.begin(), {zero_ptr, 0});
23866: }
23866: data_.emplace_back(detail::make_arg<Context>(detail::unwrap(arg.value)));
23866: auto pop_one = [](std::vector<basic_format_arg<Context>>* data) {
23866: data->pop_back();
23866: };
23866: std::unique_ptr<std::vector<basic_format_arg<Context>>, decltype(pop_one)>
23866: guard{&data_, pop_one};
23866: named_info_.push_back({arg.name, static_cast<int>(data_.size() - 2u)});
23866: data_[0].value_.named_args = {named_info_.data(), named_info_.size()};
23866: guard.release();
23866: }
23866:
23866: public:
23866: # 1747 "/usr/include/fmt/core.h" 3 4
23866: template <typename T> void push_back(const T& arg) {
23866: if (detail::const_check(need_copy<T>::value))
23866: emplace_arg(dynamic_args_.push<stored_type<T>>(arg));
23866: else
23866: emplace_arg(detail::unwrap(arg));
23866: }
23866: # 1776 "/usr/include/fmt/core.h" 3 4
23866: template <typename T> void push_back(std::reference_wrapper<T> arg) {
23866: static_assert(
23866: detail::is_named_arg<typename std::remove_cv<T>::type>::value ||
23866: need_copy<T>::value,
23866: "objects of built-in types and string views are always copied");
23866: emplace_arg(arg.get());
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <typename T>
23866: void push_back(const detail::named_arg<char_type, T>& arg) {
23866: const char_type* arg_name =
23866: dynamic_args_.push<std::basic_string<char_type>>(arg.name).c_str();
23866: if (detail::const_check(need_copy<T>::value)) {
23866: emplace_arg(
23866: fmt::arg(arg_name, dynamic_args_.push<stored_type<T>>(arg.value)));
23866: } else {
23866: emplace_arg(fmt::arg(arg_name, arg.value));
23866: }
23866: }
23866:
23866:
23866: void clear() {
23866: data_.clear();
23866: named_info_.clear();
23866: dynamic_args_ = detail::dynamic_arg_list();
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: void reserve(size_t new_cap, size_t new_cap_named) {
23866: ((new_cap >= new_cap_named) ? (void)0 : ::fmt::detail::assert_fail("/usr/include/fmt/core.h", 1815, ("Set of arguments includes set of named arguments")))
23866: ;
23866: data_.reserve(new_cap);
23866: named_info_.reserve(new_cap_named);
23866: }
23866: };
23866: # 1832 "/usr/include/fmt/core.h" 3 4
23866: template <typename Context> class basic_format_args {
23866: public:
23866: using size_type = int;
23866: using format_arg = basic_format_arg<Context>;
23866:
23866: private:
23866:
23866:
23866:
23866:
23866: unsigned long long desc_;
23866: union {
23866:
23866:
23866:
23866:
23866:
23866: const detail::value<Context>* values_;
23866: const format_arg* args_;
23866: };
23866:
23866: bool is_packed() const { return (desc_ & detail::is_unpacked_bit) == 0; }
23866: bool has_named_args() const {
23866: return (desc_ & detail::has_named_args_bit) != 0;
23866: }
23866:
23866: detail::type type(int index) const {
23866: int shift = index * detail::packed_arg_bits;
23866: unsigned int mask = (1 << detail::packed_arg_bits) - 1;
23866: return static_cast<detail::type>((desc_ >> shift) & mask);
23866: }
23866:
23866: basic_format_args(unsigned long long desc,
23866: const detail::value<Context>* values)
23866: : desc_(desc), values_(values) {}
23866: basic_format_args(unsigned long long desc, const format_arg* args)
23866: : desc_(desc), args_(args) {}
23866:
23866: public:
23866: basic_format_args() : desc_(0) {}
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <typename... Args>
23866: inline __attribute__((always_inline)) basic_format_args(const format_arg_store<Context, Args...>& store)
23866: : basic_format_args(store.desc, store.data_.args()) {}
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline __attribute__((always_inline)) basic_format_args(const dynamic_format_arg_store<Context>& store)
23866: : basic_format_args(store.get_types(), store.data()) {}
23866:
23866:
23866:
23866:
23866:
23866:
23866: basic_format_args(const format_arg* args, int count)
23866: : basic_format_args(detail::is_unpacked_bit | detail::to_unsigned(count),
23866: args) {}
23866:
23866:
23866: format_arg get(int id) const {
23866: format_arg arg;
23866: if (!is_packed()) {
23866: if (id < max_size()) arg = args_[id];
23866: return arg;
23866: }
23866: if (id >= detail::max_packed_args) return arg;
23866: arg.type_ = type(id);
23866: if (arg.type_ == detail::type::none_type) return arg;
23866: arg.value_ = values_[id];
23866: return arg;
23866: }
23866:
23866: template <typename Char> format_arg get(basic_string_view<Char> name) const {
23866: int id = get_id(name);
23866: return id >= 0 ? get(id) : format_arg();
23866: }
23866:
23866: template <typename Char> int get_id(basic_string_view<Char> name) const {
23866: if (!has_named_args()) return -1;
23866: const auto& named_args =
23866: (is_packed() ? values_[-1] : args_[-1].value_).named_args;
23866: for (size_t i = 0; i < named_args.size; ++i) {
23866: if (named_args.data[i].name == name) return named_args.data[i].id;
23866: }
23866: return -1;
23866: }
23866:
23866: int max_size() const {
23866: unsigned long long max_packed = detail::max_packed_args;
23866: return static_cast<int>(is_packed() ? max_packed
23866: : desc_ & ~detail::is_unpacked_bit);
23866: }
23866: };
23866: # 1945 "/usr/include/fmt/core.h" 3 4
23866: struct format_args : basic_format_args<format_context> {
23866: template <typename... Args>
23866: inline __attribute__((always_inline)) format_args(const Args&... args) : basic_format_args(args...) {}
23866: };
23866: struct wformat_args : basic_format_args<wformat_context> {
23866: using basic_format_args::basic_format_args;
23866: };
23866:
23866:
23866: namespace detail {
23866:
23866: template <typename Char, enable_if_t<(!std::is_same<Char, char>::value), int> = 0>
23866: std::basic_string<Char> vformat(
23866: basic_string_view<Char> format_str,
23866: basic_format_args<buffer_context<type_identity_t<Char>>> args);
23866:
23866: std::string vformat(string_view format_str, format_args args);
23866:
23866: template <typename Char>
23866: void vformat_to(
23866: buffer<Char>& buf, basic_string_view<Char> format_str,
23866: basic_format_args<basic_format_context<detail::buffer_appender<type_identity_t<Char> >, type_identity_t<Char> > > args,
23866: detail::locale_ref loc = {});
23866:
23866: template <typename Char, typename Args,
23866: enable_if_t<(!std::is_same<Char, char>::value), int> = 0>
23866: inline void vprint_mojibake(std::FILE*, basic_string_view<Char>, const Args&) {}
23866:
23866: void vprint_mojibake(std::FILE*, string_view, format_args);
23866:
23866: inline void vprint_mojibake(std::FILE*, string_view, format_args) {}
23866:
23866: }
23866:
23866:
23866:
23866:
23866: template <typename OutputIt, typename S, typename Char = char_t<S>,
23866: bool enable = detail::is_output_iterator<OutputIt, Char>::value>
23866: auto vformat_to(OutputIt out, const S& format_str,
23866: basic_format_args<buffer_context<type_identity_t<Char>>> args)
23866: -> typename std::enable_if<enable, OutputIt>::type {
23866: decltype(detail::get_buffer<Char>(out)) buf(detail::get_buffer_init(out));
23866: detail::vformat_to(buf, to_string_view(format_str), args);
23866: return detail::get_iterator(buf);
23866: }
23866: # 2004 "/usr/include/fmt/core.h" 3 4
23866: template <typename OutputIt, typename S, typename... Args,
23866: bool enable = detail::is_output_iterator<OutputIt, char_t<S>>::value>
23866: inline auto format_to(OutputIt out, const S& format_str, Args&&... args) ->
23866: typename std::enable_if<enable, OutputIt>::type {
23866: const auto& vargs = fmt::make_args_checked<Args...>(format_str, args...);
23866: return vformat_to(out, to_string_view(format_str), vargs);
23866: }
23866:
23866: template <typename OutputIt> struct format_to_n_result {
23866:
23866: OutputIt out;
23866:
23866: size_t size;
23866: };
23866:
23866: template <typename OutputIt, typename Char, typename... Args,
23866: enable_if_t<(detail::is_output_iterator<OutputIt, Char>::value), int> = 0>
23866: inline format_to_n_result<OutputIt> vformat_to_n(
23866: OutputIt out, size_t n, basic_string_view<Char> format_str,
23866: basic_format_args<buffer_context<type_identity_t<Char>>> args) {
23866: detail::iterator_buffer<OutputIt, Char, detail::fixed_buffer_traits> buf(out,
23866: n);
23866: detail::vformat_to(buf, format_str, args);
23866: return {buf.out(), buf.count()};
23866: }
23866: # 2037 "/usr/include/fmt/core.h" 3 4
23866: template <typename OutputIt, typename S, typename... Args,
23866: bool enable = detail::is_output_iterator<OutputIt, char_t<S>>::value>
23866: inline auto format_to_n(OutputIt out, size_t n, const S& format_str,
23866: const Args&... args) ->
23866: typename std::enable_if<enable, format_to_n_result<OutputIt>>::type {
23866: const auto& vargs = fmt::make_args_checked<Args...>(format_str, args...);
23866: return vformat_to_n(out, n, to_string_view(format_str), vargs);
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template <typename... Args>
23866: inline size_t formatted_size(string_view format_str, Args&&... args) {
23866: const auto& vargs = fmt::make_args_checked<Args...>(format_str, args...);
23866: detail::counting_buffer<> buf;
23866: detail::vformat_to(buf, format_str, vargs);
23866: return buf.count();
23866: }
23866:
23866: template <typename S, typename Char = char_t<S>>
23866: inline __attribute__((always_inline)) std::basic_string<Char> vformat(
23866: const S& format_str,
23866: basic_format_args<buffer_context<type_identity_t<Char>>> args) {
23866: return detail::vformat(to_string_view(format_str), args);
23866: }
23866: # 2077 "/usr/include/fmt/core.h" 3 4
23866: template <typename S, typename... Args, typename Char = char_t<S>>
23866: inline __attribute__((always_inline)) std::basic_string<Char> format(const S& format_str, Args&&... args) {
23866: const auto& vargs = fmt::make_args_checked<Args...>(format_str, args...);
23866: return detail::vformat(to_string_view(format_str), vargs);
23866: }
23866:
23866: void vprint(string_view, format_args);
23866: void vprint(std::FILE*, string_view, format_args);
23866: # 2097 "/usr/include/fmt/core.h" 3 4
23866: template <typename S, typename... Args, typename Char = char_t<S>>
23866: inline void print(std::FILE* f, const S& format_str, Args&&... args) {
23866: const auto& vargs = fmt::make_args_checked<Args...>(format_str, args...);
23866: return detail::is_unicode<Char>()
23866: ? vprint(f, to_string_view(format_str), vargs)
23866: : detail::vprint_mojibake(f, to_string_view(format_str), vargs);
23866: }
23866: # 2116 "/usr/include/fmt/core.h" 3 4
23866: template <typename S, typename... Args, typename Char = char_t<S>>
23866: inline void print(const S& format_str, Args&&... args) {
23866: const auto& vargs = fmt::make_args_checked<Args...>(format_str, args...);
23866: return detail::is_unicode<Char>()
23866: ? vprint(to_string_view(format_str), vargs)
23866: : detail::vprint_mojibake(stdout, to_string_view(format_str),
23866: vargs);
23866: }
23866: } }
23866: # 45 "/usr/include/fmt/format.h" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define FMT_ICC_VERSION 0
23866:
23866:
23866:
23866:
23866:
23866: #define FMT_CUDA_VERSION 0
23866:
23866:
23866:
23866: #define FMT_HAS_BUILTIN(x) __has_builtin(x)
23866:
23866:
23866:
23866:
23866:
23866: #define FMT_NOINLINE __attribute__((noinline))
23866: # 85 "/usr/include/fmt/format.h" 3 4
23866: #define FMT_FALLTHROUGH [[fallthrough]]
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define FMT_MAYBE_UNUSED [[maybe_unused]]
23866: # 113 "/usr/include/fmt/format.h" 3 4
23866: #define FMT_THROW(x) throw x
23866: # 125 "/usr/include/fmt/format.h" 3 4
23866: #define FMT_TRY try
23866: #define FMT_CATCH(x) catch (x)
23866: # 153 "/usr/include/fmt/format.h" 3 4
23866: #define FMT_USE_UDL_TEMPLATE 0
23866:
23866:
23866:
23866:
23866: #define FMT_USE_FLOAT 1
23866:
23866:
23866:
23866: #define FMT_USE_DOUBLE 1
23866:
23866:
23866:
23866: #define FMT_USE_LONG_DOUBLE 1
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define FMT_REDUCE_INT_INSTANTIATIONS 0
23866:
23866:
23866:
23866:
23866:
23866: #define FMT_BUILTIN_CLZ(n) __builtin_clz(n)
23866:
23866:
23866: #define FMT_BUILTIN_CLZLL(n) __builtin_clzll(n)
23866:
23866:
23866: #define FMT_BUILTIN_CTZ(n) __builtin_ctz(n)
23866:
23866:
23866: #define FMT_BUILTIN_CTZLL(n) __builtin_ctzll(n)
23866: # 272 "/usr/include/fmt/format.h" 3 4
23866: #define FMT_DEPRECATED_NUMERIC_ALIGN 0
23866:
23866:
23866: namespace fmt { inline namespace v7 {
23866: namespace detail {
23866:
23866:
23866:
23866:
23866: template <typename Dest, typename Source>
23866: inline Dest bit_cast(const Source& source) {
23866: static_assert(sizeof(Dest) == sizeof(Source), "size mismatch");
23866: Dest dest;
23866: std::memcpy(&dest, &source, sizeof(dest));
23866: return dest;
23866: }
23866:
23866: inline bool is_big_endian() {
23866: const auto u = 1u;
23866: struct bytes {
23866: char data[sizeof(u)];
23866: };
23866: return bit_cast<bytes>(u).data[0] == 0;
23866: }
23866:
23866:
23866: struct fallback_uintptr {
23866: unsigned char value[sizeof(void*)];
23866:
23866: fallback_uintptr() = default;
23866: explicit fallback_uintptr(const void* p) {
23866: *this = bit_cast<fallback_uintptr>(p);
23866: if (is_big_endian()) {
23866: for (size_t i = 0, j = sizeof(void*) - 1; i < j; ++i, --j)
23866: std::swap(value[i], value[j]);
23866: }
23866: }
23866: };
23866:
23866: using uintptr_t = ::uintptr_t;
23866: inline uintptr_t to_uintptr(const void* p) { return bit_cast<uintptr_t>(p); }
23866: # 322 "/usr/include/fmt/format.h" 3 4
23866: template <typename T> constexpr T max_value() {
23866: return (std::numeric_limits<T>::max)();
23866: }
23866: template <typename T> constexpr int num_bits() {
23866: return std::numeric_limits<T>::digits;
23866: }
23866:
23866: template <> constexpr int num_bits<int128_t>() { return 128; }
23866: template <> constexpr int num_bits<uint128_t>() { return 128; }
23866: template <> constexpr int num_bits<fallback_uintptr>() {
23866: return static_cast<int>(sizeof(void*) *
23866: std::numeric_limits<unsigned char>::digits);
23866: }
23866:
23866: inline __attribute__((always_inline)) void assume(bool condition) {
23866: (void)condition;
23866:
23866:
23866:
23866: }
23866:
23866:
23866: template <typename T>
23866: using iterator_t = decltype(std::begin(std::declval<T&>()));
23866: template <typename T> using sentinel_t = decltype(std::end(std::declval<T&>()));
23866:
23866:
23866: template <typename Char> inline Char* get_data(std::basic_string<Char>& s) {
23866: return &s[0];
23866: }
23866: template <typename Container>
23866: inline typename Container::value_type* get_data(Container& c) {
23866: return c.data();
23866: }
23866: # 364 "/usr/include/fmt/format.h" 3 4
23866: template <typename T> using checked_ptr = T*;
23866: template <typename T> inline T* make_checked(T* p, size_t) { return p; }
23866:
23866:
23866: template <typename Container, enable_if_t<(is_contiguous<Container>::value), int> = 0>
23866:
23866:
23866:
23866: inline checked_ptr<typename Container::value_type>
23866: reserve(std::back_insert_iterator<Container> it, size_t n) {
23866: Container& c = get_container(it);
23866: size_t size = c.size();
23866: c.resize(size + n);
23866: return make_checked(get_data(c) + size, n);
23866: }
23866:
23866: template <typename T>
23866: inline buffer_appender<T> reserve(buffer_appender<T> it, size_t n) {
23866: buffer<T>& buf = get_container(it);
23866: buf.try_reserve(buf.size() + n);
23866: return it;
23866: }
23866:
23866: template <typename Iterator> inline Iterator& reserve(Iterator& it, size_t) {
23866: return it;
23866: }
23866:
23866: template <typename T, typename OutputIt>
23866: constexpr T* to_pointer(OutputIt, size_t) {
23866: return nullptr;
23866: }
23866: template <typename T> T* to_pointer(buffer_appender<T> it, size_t n) {
23866: buffer<T>& buf = get_container(it);
23866: auto size = buf.size();
23866: if (buf.capacity() < size + n) return nullptr;
23866: buf.try_resize(size + n);
23866: return buf.data() + size;
23866: }
23866:
23866: template <typename Container, enable_if_t<(is_contiguous<Container>::value), int> = 0>
23866: inline std::back_insert_iterator<Container> base_iterator(
23866: std::back_insert_iterator<Container>& it,
23866: checked_ptr<typename Container::value_type>) {
23866: return it;
23866: }
23866:
23866: template <typename Iterator>
23866: inline Iterator base_iterator(Iterator, Iterator it) {
23866: return it;
23866: }
23866:
23866:
23866:
23866: class counting_iterator {
23866: private:
23866: size_t count_;
23866:
23866: public:
23866: using iterator_category = std::output_iterator_tag;
23866: using difference_type = std::ptrdiff_t;
23866: using pointer = void;
23866: using reference = void;
23866: using _Unchecked_type = counting_iterator;
23866:
23866: struct value_type {
23866: template <typename T> void operator=(const T&) {}
23866: };
23866:
23866: counting_iterator() : count_(0) {}
23866:
23866: size_t count() const { return count_; }
23866:
23866: counting_iterator& operator++() {
23866: ++count_;
23866: return *this;
23866: }
23866: counting_iterator operator++(int) {
23866: auto it = *this;
23866: ++*this;
23866: return it;
23866: }
23866:
23866: friend counting_iterator operator+(counting_iterator it, difference_type n) {
23866: it.count_ += static_cast<size_t>(n);
23866: return it;
23866: }
23866:
23866: value_type operator*() const { return {}; }
23866: };
23866:
23866: template <typename OutputIt> class truncating_iterator_base {
23866: protected:
23866: OutputIt out_;
23866: size_t limit_;
23866: size_t count_;
23866:
23866: truncating_iterator_base(OutputIt out, size_t limit)
23866: : out_(out), limit_(limit), count_(0) {}
23866:
23866: public:
23866: using iterator_category = std::output_iterator_tag;
23866: using value_type = typename std::iterator_traits<OutputIt>::value_type;
23866: using difference_type = void;
23866: using pointer = void;
23866: using reference = void;
23866: using _Unchecked_type =
23866: truncating_iterator_base;
23866:
23866: OutputIt base() const { return out_; }
23866: size_t count() const { return count_; }
23866: };
23866:
23866:
23866:
23866: template <typename OutputIt,
23866: typename Enable = typename std::is_void<
23866: typename std::iterator_traits<OutputIt>::value_type>::type>
23866: class truncating_iterator;
23866:
23866: template <typename OutputIt>
23866: class truncating_iterator<OutputIt, std::false_type>
23866: : public truncating_iterator_base<OutputIt> {
23866: mutable typename truncating_iterator_base<OutputIt>::value_type blackhole_;
23866:
23866: public:
23866: using value_type = typename truncating_iterator_base<OutputIt>::value_type;
23866:
23866: truncating_iterator(OutputIt out, size_t limit)
23866: : truncating_iterator_base<OutputIt>(out, limit) {}
23866:
23866: truncating_iterator& operator++() {
23866: if (this->count_++ < this->limit_) ++this->out_;
23866: return *this;
23866: }
23866:
23866: truncating_iterator operator++(int) {
23866: auto it = *this;
23866: ++*this;
23866: return it;
23866: }
23866:
23866: value_type& operator*() const {
23866: return this->count_ < this->limit_ ? *this->out_ : blackhole_;
23866: }
23866: };
23866:
23866: template <typename OutputIt>
23866: class truncating_iterator<OutputIt, std::true_type>
23866: : public truncating_iterator_base<OutputIt> {
23866: public:
23866: truncating_iterator(OutputIt out, size_t limit)
23866: : truncating_iterator_base<OutputIt>(out, limit) {}
23866:
23866: template <typename T> truncating_iterator& operator=(T val) {
23866: if (this->count_++ < this->limit_) *this->out_++ = val;
23866: return *this;
23866: }
23866:
23866: truncating_iterator& operator++() { return *this; }
23866: truncating_iterator& operator++(int) { return *this; }
23866: truncating_iterator& operator*() { return *this; }
23866: };
23866:
23866: template <typename Char>
23866: inline size_t count_code_points(basic_string_view<Char> s) {
23866: return s.size();
23866: }
23866:
23866:
23866: inline size_t count_code_points(basic_string_view<char> s) {
23866: const char* data = s.data();
23866: size_t num_code_points = 0;
23866: for (size_t i = 0, size = s.size(); i != size; ++i) {
23866: if ((data[i] & 0xc0) != 0x80) ++num_code_points;
23866: }
23866: return num_code_points;
23866: }
23866:
23866: inline size_t count_code_points(basic_string_view<char8_type> s) {
23866: return count_code_points(basic_string_view<char>(
23866: reinterpret_cast<const char*>(s.data()), s.size()));
23866: }
23866:
23866: template <typename Char>
23866: inline size_t code_point_index(basic_string_view<Char> s, size_t n) {
23866: size_t size = s.size();
23866: return n < size ? n : size;
23866: }
23866:
23866:
23866: inline size_t code_point_index(basic_string_view<char8_type> s, size_t n) {
23866: const char8_type* data = s.data();
23866: size_t num_code_points = 0;
23866: for (size_t i = 0, size = s.size(); i != size; ++i) {
23866: if ((data[i] & 0xc0) != 0x80 && ++num_code_points > n) {
23866: return i;
23866: }
23866: }
23866: return s.size();
23866: }
23866:
23866: template <typename InputIt, typename OutChar>
23866: using needs_conversion = bool_constant<
23866: std::is_same<typename std::iterator_traits<InputIt>::value_type,
23866: char>::value &&
23866: std::is_same<OutChar, char8_type>::value>;
23866:
23866: template <typename OutChar, typename InputIt, typename OutputIt,
23866: enable_if_t<(!needs_conversion<InputIt, OutChar>::value), int> = 0>
23866: OutputIt copy_str(InputIt begin, InputIt end, OutputIt it) {
23866: return std::copy(begin, end, it);
23866: }
23866:
23866: template <typename OutChar, typename InputIt, typename OutputIt,
23866: enable_if_t<(needs_conversion<InputIt, OutChar>::value), int> = 0>
23866: OutputIt copy_str(InputIt begin, InputIt end, OutputIt it) {
23866: return std::transform(begin, end, it,
23866: [](char c) { return static_cast<char8_type>(c); });
23866: }
23866:
23866: template <typename Char, typename InputIt>
23866: inline counting_iterator copy_str(InputIt begin, InputIt end,
23866: counting_iterator it) {
23866: return it + (end - begin);
23866: }
23866:
23866: template <typename T>
23866: using is_fast_float = bool_constant<std::numeric_limits<T>::is_iec559 &&
23866: sizeof(T) <= sizeof(double)>;
23866:
23866:
23866: #define FMT_USE_FULL_CACHE_DRAGONBOX 0
23866:
23866:
23866: template <typename T>
23866: template <typename U>
23866: void buffer<T>::append(const U* begin, const U* end) {
23866: do {
23866: auto count = to_unsigned(end - begin);
23866: try_reserve(size_ + count);
23866: auto free_cap = capacity_ - size_;
23866: if (free_cap < count) count = free_cap;
23866: std::uninitialized_copy_n(begin, count, make_checked(ptr_ + size_, count));
23866: size_ += count;
23866: begin += count;
23866: } while (begin != end);
23866: }
23866:
23866: template <typename OutputIt, typename T, typename Traits>
23866: void iterator_buffer<OutputIt, T, Traits>::flush() {
23866: out_ = std::copy_n(data_, this->limit(this->size()), out_);
23866: this->clear();
23866: }
23866: }
23866:
23866:
23866:
23866: enum { inline_buffer_size = 500 };
23866: # 652 "/usr/include/fmt/format.h" 3 4
23866: template <typename T, size_t SIZE = inline_buffer_size,
23866: typename Allocator = std::allocator<T>>
23866: class basic_memory_buffer final : public detail::buffer<T> {
23866: private:
23866: T store_[SIZE];
23866:
23866:
23866: Allocator alloc_;
23866:
23866:
23866: void deallocate() {
23866: T* data = this->data();
23866: if (data != store_) alloc_.deallocate(data, this->capacity());
23866: }
23866:
23866: protected:
23866: void grow(size_t size) final override;
23866:
23866: public:
23866: using value_type = T;
23866: using const_reference = const T&;
23866:
23866: explicit basic_memory_buffer(const Allocator& alloc = Allocator())
23866: : alloc_(alloc) {
23866: this->set(store_, SIZE);
23866: }
23866: ~basic_memory_buffer() { deallocate(); }
23866:
23866: private:
23866:
23866: void move(basic_memory_buffer& other) {
23866: alloc_ = std::move(other.alloc_);
23866: T* data = other.data();
23866: size_t size = other.size(), capacity = other.capacity();
23866: if (data == other.store_) {
23866: this->set(store_, capacity);
23866: std::uninitialized_copy(other.store_, other.store_ + size,
23866: detail::make_checked(store_, capacity));
23866: } else {
23866: this->set(data, capacity);
23866:
23866:
23866: other.set(other.store_, 0);
23866: }
23866: this->resize(size);
23866: }
23866:
23866: public:
23866:
23866:
23866:
23866:
23866:
23866:
23866: basic_memory_buffer(basic_memory_buffer&& other) noexcept { move(other); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: basic_memory_buffer& operator=(basic_memory_buffer&& other) noexcept {
23866: ((this != &other) ? (void)0 : ::fmt::detail::assert_fail("/usr/include/fmt/format.h", 714, ("")));
23866: deallocate();
23866: move(other);
23866: return *this;
23866: }
23866:
23866:
23866: Allocator get_allocator() const { return alloc_; }
23866:
23866:
23866:
23866:
23866:
23866: void resize(size_t count) { this->try_resize(count); }
23866:
23866:
23866: void reserve(size_t new_capacity) { this->try_reserve(new_capacity); }
23866:
23866:
23866: using detail::buffer<T>::append;
23866: template <typename ContiguousRange>
23866: void append(const ContiguousRange& range) {
23866: append(range.data(), range.data() + range.size());
23866: }
23866: };
23866:
23866: template <typename T, size_t SIZE, typename Allocator>
23866: void basic_memory_buffer<T, SIZE, Allocator>::grow(size_t size) {
23866:
23866:
23866:
23866: size_t old_capacity = this->capacity();
23866: size_t new_capacity = old_capacity + old_capacity / 2;
23866: if (size > new_capacity) new_capacity = size;
23866: T* old_data = this->data();
23866: T* new_data =
23866: std::allocator_traits<Allocator>::allocate(alloc_, new_capacity);
23866:
23866: std::uninitialized_copy(old_data, old_data + this->size(),
23866: detail::make_checked(new_data, new_capacity));
23866: this->set(new_data, new_capacity);
23866:
23866:
23866:
23866: if (old_data != store_) alloc_.deallocate(old_data, old_capacity);
23866: }
23866:
23866: using memory_buffer = basic_memory_buffer<char>;
23866: using wmemory_buffer = basic_memory_buffer<wchar_t>;
23866:
23866: template <typename T, size_t SIZE, typename Allocator>
23866: struct is_contiguous<basic_memory_buffer<T, SIZE, Allocator>> : std::true_type {
23866: };
23866:
23866:
23866:
23866: class format_error : public std::runtime_error {
23866: public:
23866: explicit format_error(const char* message) : std::runtime_error(message) {}
23866: explicit format_error(const std::string& message)
23866: : std::runtime_error(message) {}
23866: format_error(const format_error&) = default;
23866: format_error& operator=(const format_error&) = default;
23866: format_error(format_error&&) = default;
23866: format_error& operator=(format_error&&) = default;
23866: ~format_error() noexcept override;
23866: };
23866:
23866: namespace detail {
23866:
23866: template <typename T>
23866: using is_signed =
23866: std::integral_constant<bool, std::numeric_limits<T>::is_signed ||
23866: std::is_same<T, int128_t>::value>;
23866:
23866:
23866:
23866: template <typename T, enable_if_t<(is_signed<T>::value), int> = 0>
23866: constexpr bool is_negative(T value) {
23866: return value < 0;
23866: }
23866: template <typename T, enable_if_t<(!is_signed<T>::value), int> = 0>
23866: constexpr bool is_negative(T) {
23866: return false;
23866: }
23866:
23866: template <typename T, enable_if_t<(std::is_floating_point<T>::value), int> = 0>
23866: constexpr bool is_supported_floating_point(T) {
23866: return (std::is_same<T, float>::value && 1) ||
23866: (std::is_same<T, double>::value && 1) ||
23866: (std::is_same<T, long double>::value && 1);
23866: }
23866:
23866:
23866:
23866: template <typename T>
23866: using uint32_or_64_or_128_t =
23866: conditional_t<num_bits<T>() <= 32 && !0,
23866: uint32_t,
23866: conditional_t<num_bits<T>() <= 64, uint64_t, uint128_t>>;
23866:
23866:
23866: struct uint128_wrapper {
23866: uint128_wrapper() = default;
23866: # 836 "/usr/include/fmt/format.h" 3 4
23866: uint64_t high_;
23866: uint64_t low_;
23866:
23866: uint128_wrapper(uint64_t high, uint64_t low) noexcept : high_{high},
23866: low_{low} {}
23866:
23866: uint64_t high() const noexcept { return high_; }
23866: uint64_t low() const noexcept { return low_; }
23866:
23866: uint128_wrapper& operator+=(uint64_t n) noexcept {
23866:
23866:
23866:
23866:
23866:
23866: uint64_t sum = low_ + n;
23866: high_ += (sum < low_ ? 1 : 0);
23866: low_ = sum;
23866: return *this;
23866:
23866: }
23866:
23866: };
23866:
23866:
23866: template <typename T> struct divtest_table_entry {
23866: T mod_inv;
23866: T max_quotient;
23866: };
23866:
23866:
23866: template <typename T = void> struct basic_data {
23866: static const uint64_t powers_of_10_64[];
23866: static const uint32_t zero_or_powers_of_10_32_new[];
23866: static const uint64_t zero_or_powers_of_10_64_new[];
23866: static const uint64_t grisu_pow10_significands[];
23866: static const int16_t grisu_pow10_exponents[];
23866: static const divtest_table_entry<uint32_t> divtest_table_for_pow5_32[];
23866: static const divtest_table_entry<uint64_t> divtest_table_for_pow5_64[];
23866: static const uint64_t dragonbox_pow10_significands_64[];
23866: static const uint128_wrapper dragonbox_pow10_significands_128[];
23866:
23866: static const uint64_t log10_2_significand = 0x4d104d427de7fbcc;
23866:
23866: static const uint64_t powers_of_5_64[];
23866: static const uint32_t dragonbox_pow10_recovery_errors[];
23866:
23866:
23866: using digit_pair = char[2];
23866: static const digit_pair digits[];
23866: static const char hex_digits[];
23866: static const char foreground_color[];
23866: static const char background_color[];
23866: static const char reset_color[5];
23866: static const wchar_t wreset_color[5];
23866: static const char signs[];
23866: static const char left_padding_shifts[5];
23866: static const char right_padding_shifts[5];
23866:
23866:
23866: static const uint32_t zero_or_powers_of_10_32[];
23866: static const uint64_t zero_or_powers_of_10_64[];
23866: };
23866:
23866:
23866:
23866: inline __attribute__((always_inline)) uint16_t bsr2log10(int bsr) {
23866: static constexpr uint16_t data[] = {
23866: 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5,
23866: 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10,
23866: 10, 11, 11, 11, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 15, 15,
23866: 15, 16, 16, 16, 16, 17, 17, 17, 18, 18, 18, 19, 19, 19, 19, 20};
23866: return data[bsr];
23866: }
23866:
23866:
23866: extern template struct basic_data<void>;
23866:
23866:
23866:
23866: struct data : basic_data<> {};
23866:
23866:
23866:
23866:
23866: inline int count_digits(uint64_t n) {
23866:
23866: auto t = bsr2log10(__builtin_clzll(n | 1) ^ 63);
23866: return t - (n < data::zero_or_powers_of_10_64_new[t]);
23866: }
23866: # 962 "/usr/include/fmt/format.h" 3 4
23866: template <unsigned BITS, typename UInt> inline int count_digits(UInt n) {
23866: int num_digits = 0;
23866: do {
23866: ++num_digits;
23866: } while ((n >>= BITS) != 0);
23866: return num_digits;
23866: }
23866:
23866: template <> int count_digits<4>(detail::fallback_uintptr n);
23866:
23866:
23866: #define FMT_ALWAYS_INLINE inline __attribute__((always_inline))
23866: # 984 "/usr/include/fmt/format.h" 3 4
23866: #define FMT_SAFEBUFFERS
23866:
23866:
23866:
23866:
23866: inline int count_digits(uint32_t n) {
23866: auto t = bsr2log10(__builtin_clz(n | 1) ^ 31);
23866: return t - (n < data::zero_or_powers_of_10_32_new[t]);
23866: }
23866:
23866:
23866: template <typename Int> constexpr int digits10() noexcept {
23866: return std::numeric_limits<Int>::digits10;
23866: }
23866: template <> constexpr int digits10<int128_t>() noexcept { return 38; }
23866: template <> constexpr int digits10<uint128_t>() noexcept { return 38; }
23866:
23866: template <typename Char> std::string grouping_impl(locale_ref loc);
23866: template <typename Char> inline std::string grouping(locale_ref loc) {
23866: return grouping_impl<char>(loc);
23866: }
23866: template <> inline std::string grouping<wchar_t>(locale_ref loc) {
23866: return grouping_impl<wchar_t>(loc);
23866: }
23866:
23866: template <typename Char> Char thousands_sep_impl(locale_ref loc);
23866: template <typename Char> inline Char thousands_sep(locale_ref loc) {
23866: return Char(thousands_sep_impl<char>(loc));
23866: }
23866: template <> inline wchar_t thousands_sep(locale_ref loc) {
23866: return thousands_sep_impl<wchar_t>(loc);
23866: }
23866:
23866: template <typename Char> Char decimal_point_impl(locale_ref loc);
23866: template <typename Char> inline Char decimal_point(locale_ref loc) {
23866: return Char(decimal_point_impl<char>(loc));
23866: }
23866: template <> inline wchar_t decimal_point(locale_ref loc) {
23866: return decimal_point_impl<wchar_t>(loc);
23866: }
23866:
23866:
23866: template <typename Char> bool equal2(const Char* lhs, const char* rhs) {
23866: return lhs[0] == rhs[0] && lhs[1] == rhs[1];
23866: }
23866: inline bool equal2(const char* lhs, const char* rhs) {
23866: return memcmp(lhs, rhs, 2) == 0;
23866: }
23866:
23866:
23866: template <typename Char> void copy2(Char* dst, const char* src) {
23866: *dst++ = static_cast<Char>(*src++);
23866: *dst = static_cast<Char>(*src);
23866: }
23866: inline __attribute__((always_inline)) void copy2(char* dst, const char* src) { memcpy(dst, src, 2); }
23866:
23866: template <typename Iterator> struct format_decimal_result {
23866: Iterator begin;
23866: Iterator end;
23866: };
23866:
23866:
23866:
23866:
23866: template <typename Char, typename UInt>
23866: inline format_decimal_result<Char*> format_decimal(Char* out, UInt value,
23866: int size) {
23866: ((size >= count_digits(value)) ? (void)0 : ::fmt::detail::assert_fail("/usr/include/fmt/format.h", 1051, ("invalid digit count")));
23866: out += size;
23866: Char* end = out;
23866: while (value >= 100) {
23866:
23866:
23866:
23866: out -= 2;
23866: copy2(out, data::digits[value % 100]);
23866: value /= 100;
23866: }
23866: if (value < 10) {
23866: *--out = static_cast<Char>('0' + value);
23866: return {out, end};
23866: }
23866: out -= 2;
23866: copy2(out, data::digits[value]);
23866: return {out, end};
23866: }
23866:
23866: template <typename Char, typename UInt, typename Iterator,
23866: enable_if_t<(!std::is_pointer<remove_cvref_t<Iterator>>::value), int> = 0>
23866: inline format_decimal_result<Iterator> format_decimal(Iterator out, UInt value,
23866: int size) {
23866:
23866: Char buffer[digits10<UInt>() + 1];
23866: auto end = format_decimal(buffer, value, size).end;
23866: return {out, detail::copy_str<Char>(buffer, end, out)};
23866: }
23866:
23866: template <unsigned BASE_BITS, typename Char, typename UInt>
23866: inline Char* format_uint(Char* buffer, UInt value, int num_digits,
23866: bool upper = false) {
23866: buffer += num_digits;
23866: Char* end = buffer;
23866: do {
23866: const char* digits = upper ? "0123456789ABCDEF" : data::hex_digits;
23866: unsigned digit = (value & ((1 << BASE_BITS) - 1));
23866: *--buffer = static_cast<Char>(BASE_BITS < 4 ? static_cast<char>('0' + digit)
23866: : digits[digit]);
23866: } while ((value >>= BASE_BITS) != 0);
23866: return end;
23866: }
23866:
23866: template <unsigned BASE_BITS, typename Char>
23866: Char* format_uint(Char* buffer, detail::fallback_uintptr n, int num_digits,
23866: bool = false) {
23866: auto char_digits = std::numeric_limits<unsigned char>::digits / 4;
23866: int start = (num_digits + char_digits - 1) / char_digits - 1;
23866: if (int start_digits = num_digits % char_digits) {
23866: unsigned value = n.value[start--];
23866: buffer = format_uint<BASE_BITS>(buffer, value, start_digits);
23866: }
23866: for (; start >= 0; --start) {
23866: unsigned value = n.value[start];
23866: buffer += char_digits;
23866: auto p = buffer;
23866: for (int i = 0; i < char_digits; ++i) {
23866: unsigned digit = (value & ((1 << BASE_BITS) - 1));
23866: *--p = static_cast<Char>(data::hex_digits[digit]);
23866: value >>= BASE_BITS;
23866: }
23866: }
23866: return buffer;
23866: }
23866:
23866: template <unsigned BASE_BITS, typename Char, typename It, typename UInt>
23866: inline It format_uint(It out, UInt value, int num_digits, bool upper = false) {
23866: if (auto ptr = to_pointer<Char>(out, to_unsigned(num_digits))) {
23866: format_uint<BASE_BITS>(ptr, value, num_digits, upper);
23866: return out;
23866: }
23866:
23866: char buffer[num_bits<UInt>() / BASE_BITS + 1];
23866: format_uint<BASE_BITS>(buffer, value, num_digits, upper);
23866: return detail::copy_str<Char>(buffer, buffer + num_digits, out);
23866: }
23866:
23866:
23866: class utf8_to_utf16 {
23866: private:
23866: wmemory_buffer buffer_;
23866:
23866: public:
23866: explicit utf8_to_utf16(string_view s);
23866: operator wstring_view() const { return {&buffer_[0], size()}; }
23866: size_t size() const { return buffer_.size() - 1; }
23866: const wchar_t* c_str() const { return &buffer_[0]; }
23866: std::wstring str() const { return {&buffer_[0], size()}; }
23866: };
23866:
23866: template <typename T = void> struct null {};
23866:
23866:
23866: template <typename Char> struct fill_t {
23866: private:
23866: enum { max_size = 4 };
23866: Char data_[max_size] = {Char(' '), Char(0), Char(0), Char(0)};
23866: unsigned char size_ = 1;
23866:
23866: public:
23866: constexpr void operator=(basic_string_view<Char> s) {
23866: auto size = s.size();
23866: if (size > max_size) {
23866: throw format_error("invalid fill");
23866: return;
23866: }
23866: for (size_t i = 0; i < size; ++i) data_[i] = s[i];
23866: size_ = static_cast<unsigned char>(size);
23866: }
23866:
23866: size_t size() const { return size_; }
23866: const Char* data() const { return data_; }
23866:
23866: constexpr Char& operator[](size_t index) { return data_[index]; }
23866: constexpr const Char& operator[](size_t index) const {
23866: return data_[index];
23866: }
23866: };
23866: }
23866:
23866:
23866:
23866: namespace align {
23866: enum type { none, left, right, center, numeric };
23866: }
23866: using align_t = align::type;
23866:
23866: namespace sign {
23866: enum type { none, minus, plus, space };
23866: }
23866: using sign_t = sign::type;
23866:
23866:
23866: template <typename Char> struct basic_format_specs {
23866: int width;
23866: int precision;
23866: char type;
23866: align_t align : 4;
23866: sign_t sign : 3;
23866: bool alt : 1;
23866: detail::fill_t<Char> fill;
23866:
23866: constexpr basic_format_specs()
23866: : width(0),
23866: precision(-1),
23866: type(0),
23866: align(align::none),
23866: sign(sign::none),
23866: alt(false) {}
23866: };
23866:
23866: using format_specs = basic_format_specs<char>;
23866:
23866: namespace detail {
23866: namespace dragonbox {
23866:
23866:
23866: template <class T> struct float_info;
23866:
23866: template <> struct float_info<float> {
23866: using carrier_uint = uint32_t;
23866: static const int significand_bits = 23;
23866: static const int exponent_bits = 8;
23866: static const int min_exponent = -126;
23866: static const int max_exponent = 127;
23866: static const int exponent_bias = -127;
23866: static const int decimal_digits = 9;
23866: static const int kappa = 1;
23866: static const int big_divisor = 100;
23866: static const int small_divisor = 10;
23866: static const int min_k = -31;
23866: static const int max_k = 46;
23866: static const int cache_bits = 64;
23866: static const int divisibility_check_by_5_threshold = 39;
23866: static const int case_fc_pm_half_lower_threshold = -1;
23866: static const int case_fc_pm_half_upper_threshold = 6;
23866: static const int case_fc_lower_threshold = -2;
23866: static const int case_fc_upper_threshold = 6;
23866: static const int case_shorter_interval_left_endpoint_lower_threshold = 2;
23866: static const int case_shorter_interval_left_endpoint_upper_threshold = 3;
23866: static const int shorter_interval_tie_lower_threshold = -35;
23866: static const int shorter_interval_tie_upper_threshold = -35;
23866: static const int max_trailing_zeros = 7;
23866: };
23866:
23866: template <> struct float_info<double> {
23866: using carrier_uint = uint64_t;
23866: static const int significand_bits = 52;
23866: static const int exponent_bits = 11;
23866: static const int min_exponent = -1022;
23866: static const int max_exponent = 1023;
23866: static const int exponent_bias = -1023;
23866: static const int decimal_digits = 17;
23866: static const int kappa = 2;
23866: static const int big_divisor = 1000;
23866: static const int small_divisor = 100;
23866: static const int min_k = -292;
23866: static const int max_k = 326;
23866: static const int cache_bits = 128;
23866: static const int divisibility_check_by_5_threshold = 86;
23866: static const int case_fc_pm_half_lower_threshold = -2;
23866: static const int case_fc_pm_half_upper_threshold = 9;
23866: static const int case_fc_lower_threshold = -4;
23866: static const int case_fc_upper_threshold = 9;
23866: static const int case_shorter_interval_left_endpoint_lower_threshold = 2;
23866: static const int case_shorter_interval_left_endpoint_upper_threshold = 3;
23866: static const int shorter_interval_tie_lower_threshold = -77;
23866: static const int shorter_interval_tie_upper_threshold = -77;
23866: static const int max_trailing_zeros = 16;
23866: };
23866:
23866: template <typename T> struct decimal_fp {
23866: using significand_type = typename float_info<T>::carrier_uint;
23866: significand_type significand;
23866: int exponent;
23866: };
23866:
23866: template <typename T> decimal_fp<T> to_decimal(T x) noexcept;
23866: }
23866:
23866: template <typename T>
23866: constexpr typename dragonbox::float_info<T>::carrier_uint exponent_mask() {
23866: using uint = typename dragonbox::float_info<T>::carrier_uint;
23866: return ((uint(1) << dragonbox::float_info<T>::exponent_bits) - 1)
23866: << dragonbox::float_info<T>::significand_bits;
23866: }
23866:
23866:
23866: enum class float_format : unsigned char {
23866: general,
23866: exp,
23866: fixed,
23866: hex
23866: };
23866:
23866: struct float_specs {
23866: int precision;
23866: float_format format : 8;
23866: sign_t sign : 8;
23866: bool upper : 1;
23866: bool locale : 1;
23866: bool binary32 : 1;
23866: bool use_grisu : 1;
23866: bool showpoint : 1;
23866: };
23866:
23866:
23866: template <typename Char, typename It> It write_exponent(int exp, It it) {
23866: ((-10000 < exp && exp < 10000) ? (void)0 : ::fmt::detail::assert_fail("/usr/include/fmt/format.h", 1300, ("exponent out of range")));
23866: if (exp < 0) {
23866: *it++ = static_cast<Char>('-');
23866: exp = -exp;
23866: } else {
23866: *it++ = static_cast<Char>('+');
23866: }
23866: if (exp >= 100) {
23866: const char* top = data::digits[exp / 100];
23866: if (exp >= 1000) *it++ = static_cast<Char>(top[0]);
23866: *it++ = static_cast<Char>(top[1]);
23866: exp %= 100;
23866: }
23866: const char* d = data::digits[exp];
23866: *it++ = static_cast<Char>(d[0]);
23866: *it++ = static_cast<Char>(d[1]);
23866: return it;
23866: }
23866:
23866: template <typename T>
23866: int format_float(T value, int precision, float_specs specs, buffer<char>& buf);
23866:
23866:
23866: template <typename T>
23866: int snprintf_float(T value, int precision, float_specs specs,
23866: buffer<char>& buf);
23866:
23866: template <typename T> T promote_float(T value) { return value; }
23866: inline double promote_float(float value) { return static_cast<double>(value); }
23866:
23866: template <typename Handler>
23866: constexpr void handle_int_type_spec(char spec, Handler&& handler) {
23866: switch (spec) {
23866: case 0:
23866: case 'd':
23866: handler.on_dec();
23866: break;
23866: case 'x':
23866: case 'X':
23866: handler.on_hex();
23866: break;
23866: case 'b':
23866: case 'B':
23866: handler.on_bin();
23866: break;
23866: case 'o':
23866: handler.on_oct();
23866: break;
23866:
23866:
23866:
23866: case 'L':
23866: handler.on_num();
23866: break;
23866: case 'c':
23866: handler.on_chr();
23866: break;
23866: default:
23866: handler.on_error();
23866: }
23866: }
23866:
23866: template <typename ErrorHandler = error_handler, typename Char>
23866: constexpr float_specs parse_float_type_spec(
23866: const basic_format_specs<Char>& specs, ErrorHandler&& eh = {}) {
23866: auto result = float_specs();
23866: result.showpoint = specs.alt;
23866: switch (specs.type) {
23866: case 0:
23866: result.format = float_format::general;
23866: result.showpoint |= specs.precision > 0;
23866: break;
23866: case 'G':
23866: result.upper = true;
23866: [[fallthrough]];
23866: case 'g':
23866: result.format = float_format::general;
23866: break;
23866: case 'E':
23866: result.upper = true;
23866: [[fallthrough]];
23866: case 'e':
23866: result.format = float_format::exp;
23866: result.showpoint |= specs.precision != 0;
23866: break;
23866: case 'F':
23866: result.upper = true;
23866: [[fallthrough]];
23866: case 'f':
23866: result.format = float_format::fixed;
23866: result.showpoint |= specs.precision != 0;
23866: break;
23866: case 'A':
23866: result.upper = true;
23866: [[fallthrough]];
23866: case 'a':
23866: result.format = float_format::hex;
23866: break;
23866:
23866:
23866:
23866: case 'L':
23866: result.locale = true;
23866: break;
23866: default:
23866: eh.on_error("invalid type specifier");
23866: break;
23866: }
23866: return result;
23866: }
23866:
23866: template <typename Char, typename Handler>
23866: constexpr void handle_char_specs(const basic_format_specs<Char>* specs,
23866: Handler&& handler) {
23866: if (!specs) return handler.on_char();
23866: if (specs->type && specs->type != 'c') return handler.on_int();
23866: if (specs->align == align::numeric || specs->sign != sign::none || specs->alt)
23866: handler.on_error("invalid format specifier for char");
23866: handler.on_char();
23866: }
23866:
23866: template <typename Char, typename Handler>
23866: constexpr void handle_cstring_type_spec(Char spec, Handler&& handler) {
23866: if (spec == 0 || spec == 's')
23866: handler.on_string();
23866: else if (spec == 'p')
23866: handler.on_pointer();
23866: else
23866: handler.on_error("invalid type specifier");
23866: }
23866:
23866: template <typename Char, typename ErrorHandler>
23866: constexpr void check_string_type_spec(Char spec, ErrorHandler&& eh) {
23866: if (spec != 0 && spec != 's') eh.on_error("invalid type specifier");
23866: }
23866:
23866: template <typename Char, typename ErrorHandler>
23866: constexpr void check_pointer_type_spec(Char spec, ErrorHandler&& eh) {
23866: if (spec != 0 && spec != 'p') eh.on_error("invalid type specifier");
23866: }
23866:
23866: template <typename ErrorHandler> class int_type_checker : private ErrorHandler {
23866: public:
23866: constexpr explicit int_type_checker(ErrorHandler eh) : ErrorHandler(eh) {}
23866:
23866: constexpr void on_dec() {}
23866: constexpr void on_hex() {}
23866: constexpr void on_bin() {}
23866: constexpr void on_oct() {}
23866: constexpr void on_num() {}
23866: constexpr void on_chr() {}
23866:
23866: constexpr void on_error() {
23866: ErrorHandler::on_error("invalid type specifier");
23866: }
23866: };
23866:
23866: template <typename ErrorHandler>
23866: class char_specs_checker : public ErrorHandler {
23866: private:
23866: char type_;
23866:
23866: public:
23866: constexpr char_specs_checker(char type, ErrorHandler eh)
23866: : ErrorHandler(eh), type_(type) {}
23866:
23866: constexpr void on_int() {
23866: handle_int_type_spec(type_, int_type_checker<ErrorHandler>(*this));
23866: }
23866: constexpr void on_char() {}
23866: };
23866:
23866: template <typename ErrorHandler>
23866: class cstring_type_checker : public ErrorHandler {
23866: public:
23866: constexpr explicit cstring_type_checker(ErrorHandler eh)
23866: : ErrorHandler(eh) {}
23866:
23866: constexpr void on_string() {}
23866: constexpr void on_pointer() {}
23866: };
23866:
23866: template <typename OutputIt, typename Char>
23866: __attribute__((noinline)) OutputIt fill(OutputIt it, size_t n, const fill_t<Char>& fill) {
23866: auto fill_size = fill.size();
23866: if (fill_size == 1) return std::fill_n(it, n, fill[0]);
23866: for (size_t i = 0; i < n; ++i) it = std::copy_n(fill.data(), fill_size, it);
23866: return it;
23866: }
23866:
23866:
23866:
23866:
23866: template <align::type align = align::left, typename OutputIt, typename Char,
23866: typename F>
23866: inline OutputIt write_padded(OutputIt out,
23866: const basic_format_specs<Char>& specs, size_t size,
23866: size_t width, F&& f) {
23866: static_assert(align == align::left || align == align::right, "");
23866: unsigned spec_width = to_unsigned(specs.width);
23866: size_t padding = spec_width > width ? spec_width - width : 0;
23866: auto* shifts = align == align::left ? data::left_padding_shifts
23866: : data::right_padding_shifts;
23866: size_t left_padding = padding >> shifts[specs.align];
23866: auto it = reserve(out, size + padding * specs.fill.size());
23866: it = fill(it, left_padding, specs.fill);
23866: it = f(it);
23866: it = fill(it, padding - left_padding, specs.fill);
23866: return base_iterator(out, it);
23866: }
23866:
23866: template <align::type align = align::left, typename OutputIt, typename Char,
23866: typename F>
23866: inline OutputIt write_padded(OutputIt out,
23866: const basic_format_specs<Char>& specs, size_t size,
23866: F&& f) {
23866: return write_padded<align>(out, specs, size, size, f);
23866: }
23866:
23866: template <typename Char, typename OutputIt>
23866: OutputIt write_bytes(OutputIt out, string_view bytes,
23866: const basic_format_specs<Char>& specs) {
23866: using iterator = remove_reference_t<decltype(reserve(out, 0))>;
23866: return write_padded(out, specs, bytes.size(), [bytes](iterator it) {
23866: const char* data = bytes.data();
23866: return copy_str<Char>(data, data + bytes.size(), it);
23866: });
23866: }
23866:
23866:
23866:
23866: template <typename Char> struct write_int_data {
23866: size_t size;
23866: size_t padding;
23866:
23866: write_int_data(int num_digits, string_view prefix,
23866: const basic_format_specs<Char>& specs)
23866: : size(prefix.size() + to_unsigned(num_digits)), padding(0) {
23866: if (specs.align == align::numeric) {
23866: auto width = to_unsigned(specs.width);
23866: if (width > size) {
23866: padding = width - size;
23866: size = width;
23866: }
23866: } else if (specs.precision > num_digits) {
23866: size = prefix.size() + to_unsigned(specs.precision);
23866: padding = to_unsigned(specs.precision - num_digits);
23866: }
23866: }
23866: };
23866:
23866:
23866:
23866:
23866: template <typename OutputIt, typename Char, typename F>
23866: OutputIt write_int(OutputIt out, int num_digits, string_view prefix,
23866: const basic_format_specs<Char>& specs, F f) {
23866: auto data = write_int_data<Char>(num_digits, prefix, specs);
23866: using iterator = remove_reference_t<decltype(reserve(out, 0))>;
23866: return write_padded<align::right>(out, specs, data.size, [=](iterator it) {
23866: if (prefix.size() != 0)
23866: it = copy_str<Char>(prefix.begin(), prefix.end(), it);
23866: it = std::fill_n(it, data.padding, static_cast<Char>('0'));
23866: return f(it);
23866: });
23866: }
23866:
23866: template <typename StrChar, typename Char, typename OutputIt>
23866: OutputIt write(OutputIt out, basic_string_view<StrChar> s,
23866: const basic_format_specs<Char>& specs) {
23866: auto data = s.data();
23866: auto size = s.size();
23866: if (specs.precision >= 0 && to_unsigned(specs.precision) < size)
23866: size = code_point_index(s, to_unsigned(specs.precision));
23866: auto width = specs.width != 0
23866: ? count_code_points(basic_string_view<StrChar>(data, size))
23866: : 0;
23866: using iterator = remove_reference_t<decltype(reserve(out, 0))>;
23866: return write_padded(out, specs, size, width, [=](iterator it) {
23866: return copy_str<Char>(data, data + size, it);
23866: });
23866: }
23866:
23866:
23866: template <typename OutputIt, typename Char, typename UInt> struct int_writer {
23866: OutputIt out;
23866: locale_ref locale;
23866: const basic_format_specs<Char>& specs;
23866: UInt abs_value;
23866: char prefix[4];
23866: unsigned prefix_size;
23866:
23866: using iterator =
23866: remove_reference_t<decltype(reserve(std::declval<OutputIt&>(), 0))>;
23866:
23866: string_view get_prefix() const { return string_view(prefix, prefix_size); }
23866:
23866: template <typename Int>
23866: int_writer(OutputIt output, locale_ref loc, Int value,
23866: const basic_format_specs<Char>& s)
23866: : out(output),
23866: locale(loc),
23866: specs(s),
23866: abs_value(static_cast<UInt>(value)),
23866: prefix_size(0) {
23866: static_assert(std::is_same<uint32_or_64_or_128_t<Int>, UInt>::value, "");
23866: if (is_negative(value)) {
23866: prefix[0] = '-';
23866: ++prefix_size;
23866: abs_value = 0 - abs_value;
23866: } else if (specs.sign != sign::none && specs.sign != sign::minus) {
23866: prefix[0] = specs.sign == sign::plus ? '+' : ' ';
23866: ++prefix_size;
23866: }
23866: }
23866:
23866: void on_dec() {
23866: auto num_digits = count_digits(abs_value);
23866: out = write_int(
23866: out, num_digits, get_prefix(), specs, [this, num_digits](iterator it) {
23866: return format_decimal<Char>(it, abs_value, num_digits).end;
23866: });
23866: }
23866:
23866: void on_hex() {
23866: if (specs.alt) {
23866: prefix[prefix_size++] = '0';
23866: prefix[prefix_size++] = specs.type;
23866: }
23866: int num_digits = count_digits<4>(abs_value);
23866: out = write_int(out, num_digits, get_prefix(), specs,
23866: [this, num_digits](iterator it) {
23866: return format_uint<4, Char>(it, abs_value, num_digits,
23866: specs.type != 'x');
23866: });
23866: }
23866:
23866: void on_bin() {
23866: if (specs.alt) {
23866: prefix[prefix_size++] = '0';
23866: prefix[prefix_size++] = static_cast<char>(specs.type);
23866: }
23866: int num_digits = count_digits<1>(abs_value);
23866: out = write_int(out, num_digits, get_prefix(), specs,
23866: [this, num_digits](iterator it) {
23866: return format_uint<1, Char>(it, abs_value, num_digits);
23866: });
23866: }
23866:
23866: void on_oct() {
23866: int num_digits = count_digits<3>(abs_value);
23866: if (specs.alt && specs.precision <= num_digits && abs_value != 0) {
23866:
23866:
23866: prefix[prefix_size++] = '0';
23866: }
23866: out = write_int(out, num_digits, get_prefix(), specs,
23866: [this, num_digits](iterator it) {
23866: return format_uint<3, Char>(it, abs_value, num_digits);
23866: });
23866: }
23866:
23866: enum { sep_size = 1 };
23866:
23866: void on_num() {
23866: std::string groups = grouping<Char>(locale);
23866: if (groups.empty()) return on_dec();
23866: auto sep = thousands_sep<Char>(locale);
23866: if (!sep) return on_dec();
23866: int num_digits = count_digits(abs_value);
23866: int size = num_digits, n = num_digits;
23866: std::string::const_iterator group = groups.cbegin();
23866: while (group != groups.cend() && n > *group && *group > 0 &&
23866: *group != max_value<char>()) {
23866: size += sep_size;
23866: n -= *group;
23866: ++group;
23866: }
23866: if (group == groups.cend()) size += sep_size * ((n - 1) / groups.back());
23866: char digits[40];
23866: format_decimal(digits, abs_value, num_digits);
23866: basic_memory_buffer<Char> buffer;
23866: size += static_cast<int>(prefix_size);
23866: const auto usize = to_unsigned(size);
23866: buffer.resize(usize);
23866: basic_string_view<Char> s(&sep, sep_size);
23866:
23866: int digit_index = 0;
23866: group = groups.cbegin();
23866: auto p = buffer.data() + size - 1;
23866: for (int i = num_digits - 1; i > 0; --i) {
23866: *p-- = static_cast<Char>(digits[i]);
23866: if (*group <= 0 || ++digit_index % *group != 0 ||
23866: *group == max_value<char>())
23866: continue;
23866: if (group + 1 != groups.cend()) {
23866: digit_index = 0;
23866: ++group;
23866: }
23866: std::uninitialized_copy(s.data(), s.data() + s.size(),
23866: make_checked(p, s.size()));
23866: p -= s.size();
23866: }
23866: *p-- = static_cast<Char>(*digits);
23866: if (prefix_size != 0) *p = static_cast<Char>('-');
23866: auto data = buffer.data();
23866: out = write_padded<align::right>(
23866: out, specs, usize, usize,
23866: [=](iterator it) { return copy_str<Char>(data, data + size, it); });
23866: }
23866:
23866: void on_chr() { *out++ = static_cast<Char>(abs_value); }
23866:
23866: [[noreturn]] void on_error() {
23866: throw format_error("invalid type specifier");
23866: }
23866: };
23866:
23866: template <typename Char, typename OutputIt>
23866: OutputIt write_nonfinite(OutputIt out, bool isinf,
23866: const basic_format_specs<Char>& specs,
23866: const float_specs& fspecs) {
23866: auto str =
23866: isinf ? (fspecs.upper ? "INF" : "inf") : (fspecs.upper ? "NAN" : "nan");
23866: constexpr size_t str_size = 3;
23866: auto sign = fspecs.sign;
23866: auto size = str_size + (sign ? 1 : 0);
23866: using iterator = remove_reference_t<decltype(reserve(out, 0))>;
23866: return write_padded(out, specs, size, [=](iterator it) {
23866: if (sign) *it++ = static_cast<Char>(data::signs[sign]);
23866: return copy_str<Char>(str, str + str_size, it);
23866: });
23866: }
23866:
23866:
23866: struct big_decimal_fp {
23866: const char* significand;
23866: int significand_size;
23866: int exponent;
23866: };
23866:
23866: inline int get_significand_size(const big_decimal_fp& fp) {
23866: return fp.significand_size;
23866: }
23866: template <typename T>
23866: inline int get_significand_size(const dragonbox::decimal_fp<T>& fp) {
23866: return count_digits(fp.significand);
23866: }
23866:
23866: template <typename Char, typename OutputIt>
23866: inline OutputIt write_significand(OutputIt out, const char* significand,
23866: int& significand_size) {
23866: return copy_str<Char>(significand, significand + significand_size, out);
23866: }
23866: template <typename Char, typename OutputIt, typename UInt>
23866: inline OutputIt write_significand(OutputIt out, UInt significand,
23866: int significand_size) {
23866: return format_decimal<Char>(out, significand, significand_size).end;
23866: }
23866:
23866: template <typename Char, typename UInt,
23866: enable_if_t<(std::is_integral<UInt>::value), int> = 0>
23866: inline Char* write_significand(Char* out, UInt significand,
23866: int significand_size, int integral_size,
23866: Char decimal_point) {
23866: if (!decimal_point)
23866: return format_decimal(out, significand, significand_size).end;
23866: auto end = format_decimal(out + 1, significand, significand_size).end;
23866: if (integral_size == 1)
23866: out[0] = out[1];
23866: else
23866: std::copy_n(out + 1, integral_size, out);
23866: out[integral_size] = decimal_point;
23866: return end;
23866: }
23866:
23866: template <typename OutputIt, typename UInt, typename Char,
23866: enable_if_t<(!std::is_pointer<remove_cvref_t<OutputIt>>::value), int> = 0>
23866: inline OutputIt write_significand(OutputIt out, UInt significand,
23866: int significand_size, int integral_size,
23866: Char decimal_point) {
23866:
23866: Char buffer[digits10<UInt>() + 2];
23866: auto end = write_significand(buffer, significand, significand_size,
23866: integral_size, decimal_point);
23866: return detail::copy_str<Char>(buffer, end, out);
23866: }
23866:
23866: template <typename OutputIt, typename Char>
23866: inline OutputIt write_significand(OutputIt out, const char* significand,
23866: int significand_size, int integral_size,
23866: Char decimal_point) {
23866: out = detail::copy_str<Char>(significand, significand + integral_size, out);
23866: if (!decimal_point) return out;
23866: *out++ = decimal_point;
23866: return detail::copy_str<Char>(significand + integral_size,
23866: significand + significand_size, out);
23866: }
23866:
23866: template <typename OutputIt, typename DecimalFP, typename Char>
23866: OutputIt write_float(OutputIt out, const DecimalFP& fp,
23866: const basic_format_specs<Char>& specs, float_specs fspecs,
23866: Char decimal_point) {
23866: auto significand = fp.significand;
23866: int significand_size = get_significand_size(fp);
23866: static const Char zero = static_cast<Char>('0');
23866: auto sign = fspecs.sign;
23866: size_t size = to_unsigned(significand_size) + (sign ? 1 : 0);
23866: using iterator = remove_reference_t<decltype(reserve(out, 0))>;
23866:
23866: int output_exp = fp.exponent + significand_size - 1;
23866: auto use_exp_format = [=]() {
23866: if (fspecs.format == float_format::exp) return true;
23866: if (fspecs.format != float_format::general) return false;
23866:
23866:
23866: const int exp_lower = -4, exp_upper = 16;
23866: return output_exp < exp_lower ||
23866: output_exp >= (fspecs.precision > 0 ? fspecs.precision : exp_upper);
23866: };
23866: if (use_exp_format()) {
23866: int num_zeros = 0;
23866: if (fspecs.showpoint) {
23866: num_zeros = (std::max)(fspecs.precision - significand_size, 0);
23866: size += to_unsigned(num_zeros);
23866: } else if (significand_size == 1) {
23866: decimal_point = Char();
23866: }
23866: auto abs_output_exp = output_exp >= 0 ? output_exp : -output_exp;
23866: int exp_digits = 2;
23866: if (abs_output_exp >= 100) exp_digits = abs_output_exp >= 1000 ? 4 : 3;
23866:
23866: size += to_unsigned((decimal_point ? 1 : 0) + 2 + exp_digits);
23866: char exp_char = fspecs.upper ? 'E' : 'e';
23866: auto write = [=](iterator it) {
23866: if (sign) *it++ = static_cast<Char>(data::signs[sign]);
23866:
23866: it = write_significand(it, significand, significand_size, 1,
23866: decimal_point);
23866: if (num_zeros > 0) it = std::fill_n(it, num_zeros, zero);
23866: *it++ = static_cast<Char>(exp_char);
23866: return write_exponent<Char>(output_exp, it);
23866: };
23866: return specs.width > 0 ? write_padded<align::right>(out, specs, size, write)
23866: : base_iterator(out, write(reserve(out, size)));
23866: }
23866:
23866: int exp = fp.exponent + significand_size;
23866: if (fp.exponent >= 0) {
23866:
23866: size += to_unsigned(fp.exponent);
23866: int num_zeros = fspecs.precision - exp;
23866:
23866:
23866:
23866:
23866: if (fspecs.showpoint) {
23866: if (num_zeros <= 0 && fspecs.format != float_format::fixed) num_zeros = 1;
23866: if (num_zeros > 0) size += to_unsigned(num_zeros);
23866: }
23866: return write_padded<align::right>(out, specs, size, [&](iterator it) {
23866: if (sign) *it++ = static_cast<Char>(data::signs[sign]);
23866: it = write_significand<Char>(it, significand, significand_size);
23866: it = std::fill_n(it, fp.exponent, zero);
23866: if (!fspecs.showpoint) return it;
23866: *it++ = decimal_point;
23866: return num_zeros > 0 ? std::fill_n(it, num_zeros, zero) : it;
23866: });
23866: } else if (exp > 0) {
23866:
23866: int num_zeros = fspecs.showpoint ? fspecs.precision - significand_size : 0;
23866: size += 1 + to_unsigned(num_zeros > 0 ? num_zeros : 0);
23866: return write_padded<align::right>(out, specs, size, [&](iterator it) {
23866: if (sign) *it++ = static_cast<Char>(data::signs[sign]);
23866: it = write_significand(it, significand, significand_size, exp,
23866: decimal_point);
23866: return num_zeros > 0 ? std::fill_n(it, num_zeros, zero) : it;
23866: });
23866: }
23866:
23866: int num_zeros = -exp;
23866: if (significand_size == 0 && fspecs.precision >= 0 &&
23866: fspecs.precision < num_zeros) {
23866: num_zeros = fspecs.precision;
23866: }
23866: size += 2 + to_unsigned(num_zeros);
23866: return write_padded<align::right>(out, specs, size, [&](iterator it) {
23866: if (sign) *it++ = static_cast<Char>(data::signs[sign]);
23866: *it++ = zero;
23866: if (num_zeros == 0 && significand_size == 0 && !fspecs.showpoint) return it;
23866: *it++ = decimal_point;
23866: it = std::fill_n(it, num_zeros, zero);
23866: return write_significand<Char>(it, significand, significand_size);
23866: });
23866: }
23866:
23866: template <typename Char, typename OutputIt, typename T,
23866: enable_if_t<(std::is_floating_point<T>::value), int> = 0>
23866: OutputIt write(OutputIt out, T value, basic_format_specs<Char> specs,
23866: locale_ref loc = {}) {
23866: if (const_check(!is_supported_floating_point(value))) return out;
23866: float_specs fspecs = parse_float_type_spec(specs);
23866: fspecs.sign = specs.sign;
23866: if (std::signbit(value)) {
23866: fspecs.sign = sign::minus;
23866: value = -value;
23866: } else if (fspecs.sign == sign::minus) {
23866: fspecs.sign = sign::none;
23866: }
23866:
23866: if (!std::isfinite(value))
23866: return write_nonfinite(out, std::isinf(value), specs, fspecs);
23866:
23866: if (specs.align == align::numeric && fspecs.sign) {
23866: auto it = reserve(out, 1);
23866: *it++ = static_cast<Char>(data::signs[fspecs.sign]);
23866: out = base_iterator(out, it);
23866: fspecs.sign = sign::none;
23866: if (specs.width != 0) --specs.width;
23866: }
23866:
23866: memory_buffer buffer;
23866: if (fspecs.format == float_format::hex) {
23866: if (fspecs.sign) buffer.push_back(data::signs[fspecs.sign]);
23866: snprintf_float(promote_float(value), specs.precision, fspecs, buffer);
23866: return write_bytes(out, {buffer.data(), buffer.size()}, specs);
23866: }
23866: int precision = specs.precision >= 0 || !specs.type ? specs.precision : 6;
23866: if (fspecs.format == float_format::exp) {
23866: if (precision == max_value<int>())
23866: throw format_error("number is too big");
23866: else
23866: ++precision;
23866: }
23866: if (const_check(std::is_same<T, float>())) fspecs.binary32 = true;
23866: fspecs.use_grisu = is_fast_float<T>();
23866: int exp = format_float(promote_float(value), precision, fspecs, buffer);
23866: fspecs.precision = precision;
23866: Char point =
23866: fspecs.locale ? decimal_point<Char>(loc) : static_cast<Char>('.');
23866: auto fp = big_decimal_fp{buffer.data(), static_cast<int>(buffer.size()), exp};
23866: return write_float(out, fp, specs, fspecs, point);
23866: }
23866:
23866: template <typename Char, typename OutputIt, typename T,
23866: enable_if_t<(is_fast_float<T>::value), int> = 0>
23866: OutputIt write(OutputIt out, T value) {
23866: if (const_check(!is_supported_floating_point(value))) return out;
23866:
23866: using floaty = conditional_t<std::is_same<T, long double>::value, double, T>;
23866: using uint = typename dragonbox::float_info<floaty>::carrier_uint;
23866: auto bits = bit_cast<uint>(value);
23866:
23866: auto fspecs = float_specs();
23866: auto sign_bit = bits & (uint(1) << (num_bits<uint>() - 1));
23866: if (sign_bit != 0) {
23866: fspecs.sign = sign::minus;
23866: value = -value;
23866: }
23866:
23866: static const auto specs = basic_format_specs<Char>();
23866: uint mask = exponent_mask<floaty>();
23866: if ((bits & mask) == mask)
23866: return write_nonfinite(out, std::isinf(value), specs, fspecs);
23866:
23866: auto dec = dragonbox::to_decimal(static_cast<floaty>(value));
23866: return write_float(out, dec, specs, fspecs, static_cast<Char>('.'));
23866: }
23866:
23866: template <typename Char, typename OutputIt, typename T,
23866: enable_if_t<(std::is_floating_point<T>::value && !is_fast_float<T>::value), int> = 0
23866: >
23866: inline OutputIt write(OutputIt out, T value) {
23866: return write(out, value, basic_format_specs<Char>());
23866: }
23866:
23866: template <typename Char, typename OutputIt>
23866: OutputIt write_char(OutputIt out, Char value,
23866: const basic_format_specs<Char>& specs) {
23866: using iterator = remove_reference_t<decltype(reserve(out, 0))>;
23866: return write_padded(out, specs, 1, [=](iterator it) {
23866: *it++ = value;
23866: return it;
23866: });
23866: }
23866:
23866: template <typename Char, typename OutputIt, typename UIntPtr>
23866: OutputIt write_ptr(OutputIt out, UIntPtr value,
23866: const basic_format_specs<Char>* specs) {
23866: int num_digits = count_digits<4>(value);
23866: auto size = to_unsigned(num_digits) + size_t(2);
23866: using iterator = remove_reference_t<decltype(reserve(out, 0))>;
23866: auto write = [=](iterator it) {
23866: *it++ = static_cast<Char>('0');
23866: *it++ = static_cast<Char>('x');
23866: return format_uint<4, Char>(it, value, num_digits);
23866: };
23866: return specs ? write_padded<align::right>(out, *specs, size, write)
23866: : base_iterator(out, write(reserve(out, size)));
23866: }
23866:
23866: template <typename T> struct is_integral : std::is_integral<T> {};
23866: template <> struct is_integral<int128_t> : std::true_type {};
23866: template <> struct is_integral<uint128_t> : std::true_type {};
23866:
23866: template <typename Char, typename OutputIt>
23866: OutputIt write(OutputIt out, monostate) {
23866: ((false) ? (void)0 : ::fmt::detail::assert_fail("/usr/include/fmt/format.h", 2007, ("")));
23866: return out;
23866: }
23866:
23866: template <typename Char, typename OutputIt,
23866: enable_if_t<(!std::is_same<Char, char>::value), int> = 0>
23866: OutputIt write(OutputIt out, string_view value) {
23866: auto it = reserve(out, value.size());
23866: it = copy_str<Char>(value.begin(), value.end(), it);
23866: return base_iterator(out, it);
23866: }
23866:
23866: template <typename Char, typename OutputIt>
23866: OutputIt write(OutputIt out, basic_string_view<Char> value) {
23866: auto it = reserve(out, value.size());
23866: it = std::copy(value.begin(), value.end(), it);
23866: return base_iterator(out, it);
23866: }
23866:
23866: template <typename Char>
23866: buffer_appender<Char> write(buffer_appender<Char> out,
23866: basic_string_view<Char> value) {
23866: get_container(out).append(value.begin(), value.end());
23866: return out;
23866: }
23866:
23866: template <typename Char, typename OutputIt, typename T,
23866: enable_if_t<(is_integral<T>::value && !std::is_same<T, bool>::value && !std::is_same<T, Char>::value), int> = 0
23866:
23866: >
23866: OutputIt write(OutputIt out, T value) {
23866: auto abs_value = static_cast<uint32_or_64_or_128_t<T>>(value);
23866: bool negative = is_negative(value);
23866:
23866: if (negative) abs_value = ~abs_value + 1;
23866: int num_digits = count_digits(abs_value);
23866: auto size = (negative ? 1 : 0) + static_cast<size_t>(num_digits);
23866: auto it = reserve(out, size);
23866: if (auto ptr = to_pointer<Char>(it, size)) {
23866: if (negative) *ptr++ = static_cast<Char>('-');
23866: format_decimal<Char>(ptr, abs_value, num_digits);
23866: return out;
23866: }
23866: if (negative) *it++ = static_cast<Char>('-');
23866: it = format_decimal<Char>(it, abs_value, num_digits).end;
23866: return base_iterator(out, it);
23866: }
23866:
23866: template <typename Char, typename OutputIt>
23866: OutputIt write(OutputIt out, bool value) {
23866: return write<Char>(out, string_view(value ? "true" : "false"));
23866: }
23866:
23866: template <typename Char, typename OutputIt>
23866: OutputIt write(OutputIt out, Char value) {
23866: auto it = reserve(out, 1);
23866: *it++ = value;
23866: return base_iterator(out, it);
23866: }
23866:
23866: template <typename Char, typename OutputIt>
23866: OutputIt write(OutputIt out, const Char* value) {
23866: if (!value) {
23866: throw format_error("string pointer is null");
23866: } else {
23866: auto length = std::char_traits<Char>::length(value);
23866: out = write(out, basic_string_view<Char>(value, length));
23866: }
23866: return out;
23866: }
23866:
23866: template <typename Char, typename OutputIt>
23866: OutputIt write(OutputIt out, const void* value) {
23866: return write_ptr<Char>(out, to_uintptr(value), nullptr);
23866: }
23866:
23866: template <typename Char, typename OutputIt, typename T>
23866: auto write(OutputIt out, const T& value) -> typename std::enable_if<
23866: mapped_type_constant<T, basic_format_context<OutputIt, Char>>::value ==
23866: type::custom_type,
23866: OutputIt>::type {
23866: using context_type = basic_format_context<OutputIt, Char>;
23866: using formatter_type =
23866: conditional_t<has_formatter<T, context_type>::value,
23866: typename context_type::template formatter_type<T>,
23866: fallback_formatter<T, Char>>;
23866: context_type ctx(out, {}, {});
23866: return formatter_type().format(value, ctx);
23866: }
23866:
23866:
23866:
23866: template <typename OutputIt, typename Char> struct default_arg_formatter {
23866: using context = basic_format_context<OutputIt, Char>;
23866:
23866: OutputIt out;
23866: basic_format_args<context> args;
23866: locale_ref loc;
23866:
23866: template <typename T> OutputIt operator()(T value) {
23866: return write<Char>(out, value);
23866: }
23866:
23866: OutputIt operator()(typename basic_format_arg<context>::handle handle) {
23866: basic_format_parse_context<Char> parse_ctx({});
23866: basic_format_context<OutputIt, Char> format_ctx(out, args, loc);
23866: handle.format(parse_ctx, format_ctx);
23866: return format_ctx.out();
23866: }
23866: };
23866:
23866: template <typename OutputIt, typename Char,
23866: typename ErrorHandler = error_handler>
23866: class arg_formatter_base {
23866: public:
23866: using iterator = OutputIt;
23866: using char_type = Char;
23866: using format_specs = basic_format_specs<Char>;
23866:
23866: private:
23866: iterator out_;
23866: locale_ref locale_;
23866: format_specs* specs_;
23866:
23866:
23866:
23866: auto reserve(size_t n) -> decltype(detail::reserve(out_, n)) {
23866: return detail::reserve(out_, n);
23866: }
23866:
23866: using reserve_iterator = remove_reference_t<decltype(
23866: detail::reserve(std::declval<iterator&>(), 0))>;
23866:
23866: template <typename T> void write_int(T value, const format_specs& spec) {
23866: using uint_type = uint32_or_64_or_128_t<T>;
23866: int_writer<iterator, Char, uint_type> w(out_, locale_, value, spec);
23866: handle_int_type_spec(spec.type, w);
23866: out_ = w.out;
23866: }
23866:
23866: void write(char value) {
23866: auto&& it = reserve(1);
23866: *it++ = value;
23866: }
23866:
23866: template <typename Ch, enable_if_t<(std::is_same<Ch, Char>::value), int> = 0>
23866: void write(Ch value) {
23866: out_ = detail::write<Char>(out_, value);
23866: }
23866:
23866: void write(string_view value) {
23866: auto&& it = reserve(value.size());
23866: it = copy_str<Char>(value.begin(), value.end(), it);
23866: }
23866: void write(wstring_view value) {
23866: static_assert(std::is_same<Char, wchar_t>::value, "");
23866: auto&& it = reserve(value.size());
23866: it = std::copy(value.begin(), value.end(), it);
23866: }
23866:
23866: template <typename Ch>
23866: void write(const Ch* s, size_t size, const format_specs& specs) {
23866: auto width = specs.width != 0
23866: ? count_code_points(basic_string_view<Ch>(s, size))
23866: : 0;
23866: out_ = write_padded(out_, specs, size, width, [=](reserve_iterator it) {
23866: return copy_str<Char>(s, s + size, it);
23866: });
23866: }
23866:
23866: template <typename Ch>
23866: void write(basic_string_view<Ch> s, const format_specs& specs = {}) {
23866: out_ = detail::write(out_, s, specs);
23866: }
23866:
23866: void write_pointer(const void* p) {
23866: out_ = write_ptr<char_type>(out_, to_uintptr(p), specs_);
23866: }
23866:
23866: struct char_spec_handler : ErrorHandler {
23866: arg_formatter_base& formatter;
23866: Char value;
23866:
23866: char_spec_handler(arg_formatter_base& f, Char val)
23866: : formatter(f), value(val) {}
23866:
23866: void on_int() {
23866:
23866: formatter.write_int(static_cast<int>(value), *formatter.specs_);
23866: }
23866: void on_char() {
23866: if (formatter.specs_)
23866: formatter.out_ = write_char(formatter.out_, value, *formatter.specs_);
23866: else
23866: formatter.write(value);
23866: }
23866: };
23866:
23866: struct cstring_spec_handler : error_handler {
23866: arg_formatter_base& formatter;
23866: const Char* value;
23866:
23866: cstring_spec_handler(arg_formatter_base& f, const Char* val)
23866: : formatter(f), value(val) {}
23866:
23866: void on_string() { formatter.write(value); }
23866: void on_pointer() { formatter.write_pointer(value); }
23866: };
23866:
23866: protected:
23866: iterator out() { return out_; }
23866: format_specs* specs() { return specs_; }
23866:
23866: void write(bool value) {
23866: if (specs_)
23866: write(string_view(value ? "true" : "false"), *specs_);
23866: else
23866: out_ = detail::write<Char>(out_, value);
23866: }
23866:
23866: void write(const Char* value) {
23866: if (!value) {
23866: throw format_error("string pointer is null");
23866: } else {
23866: auto length = std::char_traits<char_type>::length(value);
23866: basic_string_view<char_type> sv(value, length);
23866: specs_ ? write(sv, *specs_) : write(sv);
23866: }
23866: }
23866:
23866: public:
23866: arg_formatter_base(OutputIt out, format_specs* s, locale_ref loc)
23866: : out_(out), locale_(loc), specs_(s) {}
23866:
23866: iterator operator()(monostate) {
23866: ((false) ? (void)0 : ::fmt::detail::assert_fail("/usr/include/fmt/format.h", 2242, ("invalid argument type")));
23866: return out_;
23866: }
23866:
23866: template <typename T, enable_if_t<(is_integral<T>::value), int> = 0>
23866: inline __attribute__((always_inline)) iterator operator()(T value) {
23866: if (specs_)
23866: write_int(value, *specs_);
23866: else
23866: out_ = detail::write<Char>(out_, value);
23866: return out_;
23866: }
23866:
23866: iterator operator()(Char value) {
23866: handle_char_specs(specs_,
23866: char_spec_handler(*this, static_cast<Char>(value)));
23866: return out_;
23866: }
23866:
23866: iterator operator()(bool value) {
23866: if (specs_ && specs_->type) return (*this)(value ? 1 : 0);
23866: write(value != 0);
23866: return out_;
23866: }
23866:
23866: template <typename T, enable_if_t<(std::is_floating_point<T>::value), int> = 0>
23866: iterator operator()(T value) {
23866: auto specs = specs_ ? *specs_ : format_specs();
23866: if (const_check(is_supported_floating_point(value)))
23866: out_ = detail::write(out_, value, specs, locale_);
23866: else
23866: ((false) ? (void)0 : ::fmt::detail::assert_fail("/usr/include/fmt/format.h", 2273, ("unsupported float argument type")));
23866: return out_;
23866: }
23866:
23866: iterator operator()(const Char* value) {
23866: if (!specs_) return write(value), out_;
23866: handle_cstring_type_spec(specs_->type, cstring_spec_handler(*this, value));
23866: return out_;
23866: }
23866:
23866: iterator operator()(basic_string_view<Char> value) {
23866: if (specs_) {
23866: check_string_type_spec(specs_->type, error_handler());
23866: write(value, *specs_);
23866: } else {
23866: write(value);
23866: }
23866: return out_;
23866: }
23866:
23866: iterator operator()(const void* value) {
23866: if (specs_) check_pointer_type_spec(specs_->type, error_handler());
23866: write_pointer(value);
23866: return out_;
23866: }
23866: };
23866:
23866:
23866: template <typename OutputIt, typename Char>
23866: class arg_formatter : public arg_formatter_base<OutputIt, Char> {
23866: private:
23866: using char_type = Char;
23866: using base = arg_formatter_base<OutputIt, Char>;
23866: using context_type = basic_format_context<OutputIt, Char>;
23866:
23866: context_type& ctx_;
23866: basic_format_parse_context<char_type>* parse_ctx_;
23866: const Char* ptr_;
23866:
23866: public:
23866: using iterator = typename base::iterator;
23866: using format_specs = typename base::format_specs;
23866: # 2323 "/usr/include/fmt/format.h" 3 4
23866: explicit arg_formatter(
23866: context_type& ctx,
23866: basic_format_parse_context<char_type>* parse_ctx = nullptr,
23866: format_specs* specs = nullptr, const Char* ptr = nullptr)
23866: : base(ctx.out(), specs, ctx.locale()),
23866: ctx_(ctx),
23866: parse_ctx_(parse_ctx),
23866: ptr_(ptr) {}
23866:
23866: using base::operator();
23866:
23866:
23866: iterator operator()(typename basic_format_arg<context_type>::handle handle) {
23866: if (ptr_) advance_to(*parse_ctx_, ptr_);
23866: handle.format(*parse_ctx_, ctx_);
23866: return ctx_.out();
23866: }
23866: };
23866:
23866: template <typename Char> constexpr bool is_name_start(Char c) {
23866: return ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || '_' == c;
23866: }
23866:
23866:
23866:
23866: template <typename Char, typename ErrorHandler>
23866: constexpr int parse_nonnegative_int(const Char*& begin, const Char* end,
23866: ErrorHandler&& eh) {
23866: ((begin != end && '0' <= *begin && *begin <= '9') ? (void)0 : ::fmt::detail::assert_fail("/usr/include/fmt/format.h", 2351, ("")));
23866: unsigned value = 0;
23866:
23866: constexpr unsigned max_int = max_value<int>();
23866: unsigned big = max_int / 10;
23866: do {
23866:
23866: if (value > big) {
23866: value = max_int + 1;
23866: break;
23866: }
23866: value = value * 10 + unsigned(*begin - '0');
23866: ++begin;
23866: } while (begin != end && '0' <= *begin && *begin <= '9');
23866: if (value > max_int) eh.on_error("number is too big");
23866: return static_cast<int>(value);
23866: }
23866:
23866: template <typename Context> class custom_formatter {
23866: private:
23866: using char_type = typename Context::char_type;
23866:
23866: basic_format_parse_context<char_type>& parse_ctx_;
23866: Context& ctx_;
23866:
23866: public:
23866: explicit custom_formatter(basic_format_parse_context<char_type>& parse_ctx,
23866: Context& ctx)
23866: : parse_ctx_(parse_ctx), ctx_(ctx) {}
23866:
23866: void operator()(typename basic_format_arg<Context>::handle h) const {
23866: h.format(parse_ctx_, ctx_);
23866: }
23866:
23866: template <typename T> void operator()(T) const {}
23866: };
23866:
23866: template <typename T>
23866: using is_integer =
23866: bool_constant<is_integral<T>::value && !std::is_same<T, bool>::value &&
23866: !std::is_same<T, char>::value &&
23866: !std::is_same<T, wchar_t>::value>;
23866:
23866: template <typename ErrorHandler> class width_checker {
23866: public:
23866: explicit constexpr width_checker(ErrorHandler& eh) : handler_(eh) {}
23866:
23866: template <typename T, enable_if_t<(is_integer<T>::value), int> = 0>
23866: constexpr unsigned long long operator()(T value) {
23866: if (is_negative(value)) handler_.on_error("negative width");
23866: return static_cast<unsigned long long>(value);
23866: }
23866:
23866: template <typename T, enable_if_t<(!is_integer<T>::value), int> = 0>
23866: constexpr unsigned long long operator()(T) {
23866: handler_.on_error("width is not integer");
23866: return 0;
23866: }
23866:
23866: private:
23866: ErrorHandler& handler_;
23866: };
23866:
23866: template <typename ErrorHandler> class precision_checker {
23866: public:
23866: explicit constexpr precision_checker(ErrorHandler& eh) : handler_(eh) {}
23866:
23866: template <typename T, enable_if_t<(is_integer<T>::value), int> = 0>
23866: constexpr unsigned long long operator()(T value) {
23866: if (is_negative(value)) handler_.on_error("negative precision");
23866: return static_cast<unsigned long long>(value);
23866: }
23866:
23866: template <typename T, enable_if_t<(!is_integer<T>::value), int> = 0>
23866: constexpr unsigned long long operator()(T) {
23866: handler_.on_error("precision is not integer");
23866: return 0;
23866: }
23866:
23866: private:
23866: ErrorHandler& handler_;
23866: };
23866:
23866:
23866: template <typename Char> class specs_setter {
23866: public:
23866: explicit constexpr specs_setter(basic_format_specs<Char>& specs)
23866: : specs_(specs) {}
23866:
23866: constexpr specs_setter(const specs_setter& other)
23866: : specs_(other.specs_) {}
23866:
23866: constexpr void on_align(align_t align) { specs_.align = align; }
23866: constexpr void on_fill(basic_string_view<Char> fill) {
23866: specs_.fill = fill;
23866: }
23866: constexpr void on_plus() { specs_.sign = sign::plus; }
23866: constexpr void on_minus() { specs_.sign = sign::minus; }
23866: constexpr void on_space() { specs_.sign = sign::space; }
23866: constexpr void on_hash() { specs_.alt = true; }
23866:
23866: constexpr void on_zero() {
23866: specs_.align = align::numeric;
23866: specs_.fill[0] = Char('0');
23866: }
23866:
23866: constexpr void on_width(int width) { specs_.width = width; }
23866: constexpr void on_precision(int precision) {
23866: specs_.precision = precision;
23866: }
23866: constexpr void end_precision() {}
23866:
23866: constexpr void on_type(Char type) {
23866: specs_.type = static_cast<char>(type);
23866: }
23866:
23866: protected:
23866: basic_format_specs<Char>& specs_;
23866: };
23866:
23866: template <typename ErrorHandler> class numeric_specs_checker {
23866: public:
23866: constexpr numeric_specs_checker(ErrorHandler& eh, detail::type arg_type)
23866: : error_handler_(eh), arg_type_(arg_type) {}
23866:
23866: constexpr void require_numeric_argument() {
23866: if (!is_arithmetic_type(arg_type_))
23866: error_handler_.on_error("format specifier requires numeric argument");
23866: }
23866:
23866: constexpr void check_sign() {
23866: require_numeric_argument();
23866: if (is_integral_type(arg_type_) && arg_type_ != type::int_type &&
23866: arg_type_ != type::long_long_type && arg_type_ != type::char_type) {
23866: error_handler_.on_error("format specifier requires signed argument");
23866: }
23866: }
23866:
23866: constexpr void check_precision() {
23866: if (is_integral_type(arg_type_) || arg_type_ == type::pointer_type)
23866: error_handler_.on_error("precision not allowed for this argument type");
23866: }
23866:
23866: private:
23866: ErrorHandler& error_handler_;
23866: detail::type arg_type_;
23866: };
23866:
23866:
23866:
23866: template <typename Handler> class specs_checker : public Handler {
23866: private:
23866: numeric_specs_checker<Handler> checker_;
23866:
23866:
23866: constexpr Handler& error_handler() { return *this; }
23866:
23866: public:
23866: constexpr specs_checker(const Handler& handler, detail::type arg_type)
23866: : Handler(handler), checker_(error_handler(), arg_type) {}
23866:
23866: constexpr specs_checker(const specs_checker& other)
23866: : Handler(other), checker_(error_handler(), other.arg_type_) {}
23866:
23866: constexpr void on_align(align_t align) {
23866: if (align == align::numeric) checker_.require_numeric_argument();
23866: Handler::on_align(align);
23866: }
23866:
23866: constexpr void on_plus() {
23866: checker_.check_sign();
23866: Handler::on_plus();
23866: }
23866:
23866: constexpr void on_minus() {
23866: checker_.check_sign();
23866: Handler::on_minus();
23866: }
23866:
23866: constexpr void on_space() {
23866: checker_.check_sign();
23866: Handler::on_space();
23866: }
23866:
23866: constexpr void on_hash() {
23866: checker_.require_numeric_argument();
23866: Handler::on_hash();
23866: }
23866:
23866: constexpr void on_zero() {
23866: checker_.require_numeric_argument();
23866: Handler::on_zero();
23866: }
23866:
23866: constexpr void end_precision() { checker_.check_precision(); }
23866: };
23866:
23866: template <template <typename> class Handler, typename FormatArg,
23866: typename ErrorHandler>
23866: constexpr int get_dynamic_spec(FormatArg arg, ErrorHandler eh) {
23866: unsigned long long value = visit_format_arg(Handler<ErrorHandler>(eh), arg);
23866: if (value > to_unsigned(max_value<int>())) eh.on_error("number is too big");
23866: return static_cast<int>(value);
23866: }
23866:
23866: struct auto_id {};
23866:
23866: template <typename Context, typename ID>
23866: constexpr typename Context::format_arg get_arg(Context& ctx, ID id) {
23866: auto arg = ctx.arg(id);
23866: if (!arg) ctx.on_error("argument not found");
23866: return arg;
23866: }
23866:
23866:
23866: template <typename ParseContext, typename Context>
23866: class specs_handler : public specs_setter<typename Context::char_type> {
23866: public:
23866: using char_type = typename Context::char_type;
23866:
23866: constexpr specs_handler(basic_format_specs<char_type>& specs,
23866: ParseContext& parse_ctx, Context& ctx)
23866: : specs_setter<char_type>(specs),
23866: parse_context_(parse_ctx),
23866: context_(ctx) {}
23866:
23866: template <typename Id> constexpr void on_dynamic_width(Id arg_id) {
23866: this->specs_.width = get_dynamic_spec<width_checker>(
23866: get_arg(arg_id), context_.error_handler());
23866: }
23866:
23866: template <typename Id> constexpr void on_dynamic_precision(Id arg_id) {
23866: this->specs_.precision = get_dynamic_spec<precision_checker>(
23866: get_arg(arg_id), context_.error_handler());
23866: }
23866:
23866: void on_error(const char* message) { context_.on_error(message); }
23866:
23866: private:
23866:
23866: using format_arg = typename Context::format_arg;
23866:
23866: constexpr format_arg get_arg(auto_id) {
23866: return detail::get_arg(context_, parse_context_.next_arg_id());
23866: }
23866:
23866: constexpr format_arg get_arg(int arg_id) {
23866: parse_context_.check_arg_id(arg_id);
23866: return detail::get_arg(context_, arg_id);
23866: }
23866:
23866: constexpr format_arg get_arg(basic_string_view<char_type> arg_id) {
23866: parse_context_.check_arg_id(arg_id);
23866: return detail::get_arg(context_, arg_id);
23866: }
23866:
23866: ParseContext& parse_context_;
23866: Context& context_;
23866: };
23866:
23866: enum class arg_id_kind { none, index, name };
23866:
23866:
23866: template <typename Char> struct arg_ref {
23866: constexpr arg_ref() : kind(arg_id_kind::none), val() {}
23866:
23866: constexpr explicit arg_ref(int index)
23866: : kind(arg_id_kind::index), val(index) {}
23866: constexpr explicit arg_ref(basic_string_view<Char> name)
23866: : kind(arg_id_kind::name), val(name) {}
23866:
23866: constexpr arg_ref& operator=(int idx) {
23866: kind = arg_id_kind::index;
23866: val.index = idx;
23866: return *this;
23866: }
23866:
23866: arg_id_kind kind;
23866: union value {
23866: constexpr value(int id = 0) : index{id} {}
23866: constexpr value(basic_string_view<Char> n) : name(n) {}
23866:
23866: int index;
23866: basic_string_view<Char> name;
23866: } val;
23866: };
23866:
23866:
23866:
23866:
23866: template <typename Char>
23866: struct dynamic_format_specs : basic_format_specs<Char> {
23866: arg_ref<Char> width_ref;
23866: arg_ref<Char> precision_ref;
23866: };
23866:
23866:
23866:
23866: template <typename ParseContext>
23866: class dynamic_specs_handler
23866: : public specs_setter<typename ParseContext::char_type> {
23866: public:
23866: using char_type = typename ParseContext::char_type;
23866:
23866: constexpr dynamic_specs_handler(dynamic_format_specs<char_type>& specs,
23866: ParseContext& ctx)
23866: : specs_setter<char_type>(specs), specs_(specs), context_(ctx) {}
23866:
23866: constexpr dynamic_specs_handler(const dynamic_specs_handler& other)
23866: : specs_setter<char_type>(other),
23866: specs_(other.specs_),
23866: context_(other.context_) {}
23866:
23866: template <typename Id> constexpr void on_dynamic_width(Id arg_id) {
23866: specs_.width_ref = make_arg_ref(arg_id);
23866: }
23866:
23866: template <typename Id> constexpr void on_dynamic_precision(Id arg_id) {
23866: specs_.precision_ref = make_arg_ref(arg_id);
23866: }
23866:
23866: constexpr void on_error(const char* message) {
23866: context_.on_error(message);
23866: }
23866:
23866: private:
23866: using arg_ref_type = arg_ref<char_type>;
23866:
23866: constexpr arg_ref_type make_arg_ref(int arg_id) {
23866: context_.check_arg_id(arg_id);
23866: return arg_ref_type(arg_id);
23866: }
23866:
23866: constexpr arg_ref_type make_arg_ref(auto_id) {
23866: return arg_ref_type(context_.next_arg_id());
23866: }
23866:
23866: constexpr arg_ref_type make_arg_ref(basic_string_view<char_type> arg_id) {
23866: context_.check_arg_id(arg_id);
23866: basic_string_view<char_type> format_str(
23866: context_.begin(), to_unsigned(context_.end() - context_.begin()));
23866: return arg_ref_type(arg_id);
23866: }
23866:
23866: dynamic_format_specs<char_type>& specs_;
23866: ParseContext& context_;
23866: };
23866:
23866: template <typename Char, typename IDHandler>
23866: constexpr const Char* parse_arg_id(const Char* begin, const Char* end,
23866: IDHandler&& handler) {
23866: ((begin != end) ? (void)0 : ::fmt::detail::assert_fail("/usr/include/fmt/format.h", 2702, ("")));
23866: Char c = *begin;
23866: if (c == '}' || c == ':') {
23866: handler();
23866: return begin;
23866: }
23866: if (c >= '0' && c <= '9') {
23866: int index = 0;
23866: if (c != '0')
23866: index = parse_nonnegative_int(begin, end, handler);
23866: else
23866: ++begin;
23866: if (begin == end || (*begin != '}' && *begin != ':'))
23866: handler.on_error("invalid format string");
23866: else
23866: handler(index);
23866: return begin;
23866: }
23866: if (!is_name_start(c)) {
23866: handler.on_error("invalid format string");
23866: return begin;
23866: }
23866: auto it = begin;
23866: do {
23866: ++it;
23866: } while (it != end && (is_name_start(c = *it) || ('0' <= c && c <= '9')));
23866: handler(basic_string_view<Char>(begin, to_unsigned(it - begin)));
23866: return it;
23866: }
23866:
23866:
23866: template <typename SpecHandler, typename Char> struct width_adapter {
23866: explicit constexpr width_adapter(SpecHandler& h) : handler(h) {}
23866:
23866: constexpr void operator()() { handler.on_dynamic_width(auto_id()); }
23866: constexpr void operator()(int id) { handler.on_dynamic_width(id); }
23866: constexpr void operator()(basic_string_view<Char> id) {
23866: handler.on_dynamic_width(id);
23866: }
23866:
23866: constexpr void on_error(const char* message) {
23866: handler.on_error(message);
23866: }
23866:
23866: SpecHandler& handler;
23866: };
23866:
23866:
23866: template <typename SpecHandler, typename Char> struct precision_adapter {
23866: explicit constexpr precision_adapter(SpecHandler& h) : handler(h) {}
23866:
23866: constexpr void operator()() { handler.on_dynamic_precision(auto_id()); }
23866: constexpr void operator()(int id) { handler.on_dynamic_precision(id); }
23866: constexpr void operator()(basic_string_view<Char> id) {
23866: handler.on_dynamic_precision(id);
23866: }
23866:
23866: constexpr void on_error(const char* message) {
23866: handler.on_error(message);
23866: }
23866:
23866: SpecHandler& handler;
23866: };
23866:
23866: template <typename Char>
23866: constexpr int code_point_length(const Char* begin) {
23866: if (const_check(sizeof(Char) != 1)) return 1;
23866: constexpr char lengths[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
23866: 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 3, 3, 4, 0};
23866: int len = lengths[static_cast<unsigned char>(*begin) >> 3];
23866:
23866:
23866:
23866:
23866: return len + !len;
23866: }
23866:
23866: template <typename Char> constexpr bool is_ascii_letter(Char c) {
23866: return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
23866: }
23866:
23866:
23866: template <typename Char, enable_if_t<(std::is_integral<Char>::value), int> = 0>
23866: constexpr Char to_ascii(Char value) {
23866: return value;
23866: }
23866: template <typename Char, enable_if_t<(std::is_enum<Char>::value), int> = 0>
23866: constexpr typename std::underlying_type<Char>::type to_ascii(Char value) {
23866: return value;
23866: }
23866:
23866:
23866: template <typename Char, typename Handler>
23866: constexpr const Char* parse_align(const Char* begin, const Char* end,
23866: Handler&& handler) {
23866: ((begin != end) ? (void)0 : ::fmt::detail::assert_fail("/usr/include/fmt/format.h", 2797, ("")));
23866: auto align = align::none;
23866: auto p = begin + code_point_length(begin);
23866: if (p >= end) p = begin;
23866: for (;;) {
23866: switch (to_ascii(*p)) {
23866: case '<':
23866: align = align::left;
23866: break;
23866: case '>':
23866: align = align::right;
23866: break;
23866:
23866:
23866:
23866:
23866:
23866: case '^':
23866: align = align::center;
23866: break;
23866: }
23866: if (align != align::none) {
23866: if (p != begin) {
23866: auto c = *begin;
23866: if (c == '{')
23866: return handler.on_error("invalid fill character '{'"), begin;
23866: handler.on_fill(basic_string_view<Char>(begin, to_unsigned(p - begin)));
23866: begin = p + 1;
23866: } else
23866: ++begin;
23866: handler.on_align(align);
23866: break;
23866: } else if (p == begin) {
23866: break;
23866: }
23866: p = begin;
23866: }
23866: return begin;
23866: }
23866:
23866: template <typename Char, typename Handler>
23866: constexpr const Char* parse_width(const Char* begin, const Char* end,
23866: Handler&& handler) {
23866: ((begin != end) ? (void)0 : ::fmt::detail::assert_fail("/usr/include/fmt/format.h", 2840, ("")));
23866: if ('0' <= *begin && *begin <= '9') {
23866: handler.on_width(parse_nonnegative_int(begin, end, handler));
23866: } else if (*begin == '{') {
23866: ++begin;
23866: if (begin != end)
23866: begin = parse_arg_id(begin, end, width_adapter<Handler, Char>(handler));
23866: if (begin == end || *begin != '}')
23866: return handler.on_error("invalid format string"), begin;
23866: ++begin;
23866: }
23866: return begin;
23866: }
23866:
23866: template <typename Char, typename Handler>
23866: constexpr const Char* parse_precision(const Char* begin, const Char* end,
23866: Handler&& handler) {
23866: ++begin;
23866: auto c = begin != end ? *begin : Char();
23866: if ('0' <= c && c <= '9') {
23866: handler.on_precision(parse_nonnegative_int(begin, end, handler));
23866: } else if (c == '{') {
23866: ++begin;
23866: if (begin != end) {
23866: begin =
23866: parse_arg_id(begin, end, precision_adapter<Handler, Char>(handler));
23866: }
23866: if (begin == end || *begin++ != '}')
23866: return handler.on_error("invalid format string"), begin;
23866: } else {
23866: return handler.on_error("missing precision specifier"), begin;
23866: }
23866: handler.end_precision();
23866: return begin;
23866: }
23866:
23866:
23866:
23866: template <typename Char, typename SpecHandler>
23866: constexpr const Char* parse_format_specs(const Char* begin, const Char* end,
23866: SpecHandler&& handler) {
23866: if (begin == end) return begin;
23866:
23866: begin = parse_align(begin, end, handler);
23866: if (begin == end) return begin;
23866:
23866:
23866: switch (to_ascii(*begin)) {
23866: case '+':
23866: handler.on_plus();
23866: ++begin;
23866: break;
23866: case '-':
23866: handler.on_minus();
23866: ++begin;
23866: break;
23866: case ' ':
23866: handler.on_space();
23866: ++begin;
23866: break;
23866: }
23866: if (begin == end) return begin;
23866:
23866: if (*begin == '#') {
23866: handler.on_hash();
23866: if (++begin == end) return begin;
23866: }
23866:
23866:
23866: if (*begin == '0') {
23866: handler.on_zero();
23866: if (++begin == end) return begin;
23866: }
23866:
23866: begin = parse_width(begin, end, handler);
23866: if (begin == end) return begin;
23866:
23866:
23866: if (*begin == '.') {
23866: begin = parse_precision(begin, end, handler);
23866: }
23866:
23866:
23866: if (begin != end && *begin != '}') handler.on_type(*begin++);
23866: return begin;
23866: }
23866:
23866:
23866: template <bool IS_CONSTEXPR, typename T, typename Ptr = const T*>
23866: constexpr bool find(Ptr first, Ptr last, T value, Ptr& out) {
23866: for (out = first; out != last; ++out) {
23866: if (*out == value) return true;
23866: }
23866: return false;
23866: }
23866:
23866: template <>
23866: inline bool find<false, char>(const char* first, const char* last, char value,
23866: const char*& out) {
23866: out = static_cast<const char*>(
23866: std::memchr(first, value, detail::to_unsigned(last - first)));
23866: return out != nullptr;
23866: }
23866:
23866: template <typename Handler, typename Char> struct id_adapter {
23866: Handler& handler;
23866: int arg_id;
23866:
23866: constexpr void operator()() { arg_id = handler.on_arg_id(); }
23866: constexpr void operator()(int id) { arg_id = handler.on_arg_id(id); }
23866: constexpr void operator()(basic_string_view<Char> id) {
23866: arg_id = handler.on_arg_id(id);
23866: }
23866: constexpr void on_error(const char* message) {
23866: handler.on_error(message);
23866: }
23866: };
23866:
23866: template <typename Char, typename Handler>
23866: constexpr const Char* parse_replacement_field(const Char* begin,
23866: const Char* end,
23866: Handler&& handler) {
23866: ++begin;
23866: if (begin == end) return handler.on_error("invalid format string"), end;
23866: if (*begin == '}') {
23866: handler.on_replacement_field(handler.on_arg_id(), begin);
23866: } else if (*begin == '{') {
23866: handler.on_text(begin, begin + 1);
23866: } else {
23866: auto adapter = id_adapter<Handler, Char>{handler, 0};
23866: begin = parse_arg_id(begin, end, adapter);
23866: Char c = begin != end ? *begin : Char();
23866: if (c == '}') {
23866: handler.on_replacement_field(adapter.arg_id, begin);
23866: } else if (c == ':') {
23866: begin = handler.on_format_specs(adapter.arg_id, begin + 1, end);
23866: if (begin == end || *begin != '}')
23866: return handler.on_error("unknown format specifier"), end;
23866: } else {
23866: return handler.on_error("missing '}' in format string"), end;
23866: }
23866: }
23866: return begin + 1;
23866: }
23866:
23866: template <bool IS_CONSTEXPR, typename Char, typename Handler>
23866: constexpr inline __attribute__((always_inline)) void parse_format_string(
23866: basic_string_view<Char> format_str, Handler&& handler) {
23866: auto begin = format_str.data();
23866: auto end = begin + format_str.size();
23866: if (end - begin < 32) {
23866:
23866: const Char* p = begin;
23866: while (p != end) {
23866: auto c = *p++;
23866: if (c == '{') {
23866: handler.on_text(begin, p - 1);
23866: begin = p = parse_replacement_field(p - 1, end, handler);
23866: } else if (c == '}') {
23866: if (p == end || *p != '}')
23866: return handler.on_error("unmatched '}' in format string");
23866: handler.on_text(begin, p);
23866: begin = ++p;
23866: }
23866: }
23866: handler.on_text(begin, end);
23866: return;
23866: }
23866: struct writer {
23866: constexpr void operator()(const Char* pbegin, const Char* pend) {
23866: if (pbegin == pend) return;
23866: for (;;) {
23866: const Char* p = nullptr;
23866: if (!find<IS_CONSTEXPR>(pbegin, pend, '}', p))
23866: return handler_.on_text(pbegin, pend);
23866: ++p;
23866: if (p == pend || *p != '}')
23866: return handler_.on_error("unmatched '}' in format string");
23866: handler_.on_text(pbegin, p);
23866: pbegin = p + 1;
23866: }
23866: }
23866: Handler& handler_;
23866: } write{handler};
23866: while (begin != end) {
23866:
23866:
23866: const Char* p = begin;
23866: if (*begin != '{' && !find<IS_CONSTEXPR>(begin + 1, end, '{', p))
23866: return write(begin, end);
23866: write(begin, p);
23866: begin = parse_replacement_field(p, end, handler);
23866: }
23866: }
23866:
23866: template <typename T, typename ParseContext>
23866: constexpr const typename ParseContext::char_type* parse_format_specs(
23866: ParseContext& ctx) {
23866: using char_type = typename ParseContext::char_type;
23866: using context = buffer_context<char_type>;
23866: using mapped_type =
23866: conditional_t<detail::mapped_type_constant<T, context>::value !=
23866: type::custom_type,
23866: decltype(arg_mapper<context>().map(std::declval<T>())), T>;
23866: auto f = conditional_t<has_formatter<mapped_type, context>::value,
23866: formatter<mapped_type, char_type>,
23866: detail::fallback_formatter<T, char_type>>();
23866: return f.parse(ctx);
23866: }
23866:
23866: template <typename OutputIt, typename Char, typename Context>
23866: struct format_handler : detail::error_handler {
23866: basic_format_parse_context<Char> parse_context;
23866: Context context;
23866:
23866: format_handler(OutputIt out, basic_string_view<Char> str,
23866: basic_format_args<Context> format_args, detail::locale_ref loc)
23866: : parse_context(str), context(out, format_args, loc) {}
23866:
23866: void on_text(const Char* begin, const Char* end) {
23866: auto size = to_unsigned(end - begin);
23866: auto out = context.out();
23866: auto&& it = reserve(out, size);
23866: it = std::copy_n(begin, size, it);
23866: context.advance_to(out);
23866: }
23866:
23866: int on_arg_id() { return parse_context.next_arg_id(); }
23866: int on_arg_id(int id) { return parse_context.check_arg_id(id), id; }
23866: int on_arg_id(basic_string_view<Char> id) {
23866: int arg_id = context.arg_id(id);
23866: if (arg_id < 0) on_error("argument not found");
23866: return arg_id;
23866: }
23866:
23866: inline __attribute__((always_inline)) void on_replacement_field(int id, const Char*) {
23866: auto arg = get_arg(context, id);
23866: context.advance_to(visit_format_arg(
23866: default_arg_formatter<OutputIt, Char>{context.out(), context.args(),
23866: context.locale()},
23866: arg));
23866: }
23866:
23866: const Char* on_format_specs(int id, const Char* begin, const Char* end) {
23866: auto arg = get_arg(context, id);
23866: if (arg.type() == type::custom_type) {
23866: advance_to(parse_context, begin);
23866: visit_format_arg(custom_formatter<Context>(parse_context, context), arg);
23866: return parse_context.begin();
23866: }
23866: auto specs = basic_format_specs<Char>();
23866: if (begin + 1 < end && begin[1] == '}' && is_ascii_letter(*begin)) {
23866: specs.type = static_cast<char>(*begin++);
23866: } else {
23866: using parse_context_t = basic_format_parse_context<Char>;
23866: specs_checker<specs_handler<parse_context_t, Context>> handler(
23866: specs_handler<parse_context_t, Context>(specs, parse_context,
23866: context),
23866: arg.type());
23866: begin = parse_format_specs(begin, end, handler);
23866: if (begin == end || *begin != '}')
23866: on_error("missing '}' in format string");
23866: }
23866: context.advance_to(visit_format_arg(
23866: arg_formatter<OutputIt, Char>(context, &parse_context, &specs), arg));
23866: return begin;
23866: }
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template <typename Char, typename ErrorHandler = error_handler>
23866: class compile_parse_context
23866: : public basic_format_parse_context<Char, ErrorHandler> {
23866: private:
23866: int num_args_;
23866: using base = basic_format_parse_context<Char, ErrorHandler>;
23866:
23866: public:
23866: explicit constexpr compile_parse_context(
23866: basic_string_view<Char> format_str, int num_args = max_value<int>(),
23866: ErrorHandler eh = {})
23866: : base(format_str, eh), num_args_(num_args) {}
23866:
23866: constexpr int next_arg_id() {
23866: int id = base::next_arg_id();
23866: if (id >= num_args_) this->on_error("argument not found");
23866: return id;
23866: }
23866:
23866: constexpr void check_arg_id(int id) {
23866: base::check_arg_id(id);
23866: if (id >= num_args_) this->on_error("argument not found");
23866: }
23866: using base::check_arg_id;
23866: };
23866:
23866: template <typename Char, typename ErrorHandler, typename... Args>
23866: class format_string_checker {
23866: public:
23866: explicit constexpr format_string_checker(
23866: basic_string_view<Char> format_str, ErrorHandler eh)
23866: : context_(format_str, num_args, eh),
23866: parse_funcs_{&parse_format_specs<Args, parse_context_type>...} {}
23866:
23866: constexpr void on_text(const Char*, const Char*) {}
23866:
23866: constexpr int on_arg_id() { return context_.next_arg_id(); }
23866: constexpr int on_arg_id(int id) { return context_.check_arg_id(id), id; }
23866: constexpr int on_arg_id(basic_string_view<Char>) {
23866: on_error("compile-time checks don't support named arguments");
23866: return 0;
23866: }
23866:
23866: constexpr void on_replacement_field(int, const Char*) {}
23866:
23866: constexpr const Char* on_format_specs(int id, const Char* begin,
23866: const Char*) {
23866: advance_to(context_, begin);
23866: return id < num_args ? parse_funcs_[id](context_) : begin;
23866: }
23866:
23866: constexpr void on_error(const char* message) {
23866: context_.on_error(message);
23866: }
23866:
23866: private:
23866: using parse_context_type = compile_parse_context<Char, ErrorHandler>;
23866: enum { num_args = sizeof...(Args) };
23866:
23866:
23866: using parse_func = const Char* (*)(parse_context_type&);
23866:
23866: parse_context_type context_;
23866: parse_func parse_funcs_[num_args > 0 ? num_args : 1];
23866: };
23866:
23866:
23866: template <typename Char, size_t N>
23866: constexpr basic_string_view<Char> compile_string_to_view(
23866: const Char (&s)[N]) {
23866:
23866:
23866: return {s,
23866: N - ((std::char_traits<Char>::to_int_type(s[N - 1]) == 0) ? 1 : 0)};
23866: }
23866:
23866:
23866: template <typename Char>
23866: constexpr basic_string_view<Char> compile_string_to_view(
23866: const std_string_view<Char>& s) {
23866: return {s.data(), s.size()};
23866: }
23866:
23866: #define FMT_STRING_IMPL(s,base) [] { struct FMT_COMPILE_STRING : base { using char_type = fmt::remove_cvref_t<decltype(s[0])>; FMT_MAYBE_UNUSED FMT_CONSTEXPR operator fmt::basic_string_view<char_type>() const { return fmt::detail::compile_string_to_view<char_type>(s); } }; return FMT_COMPILE_STRING(); }()
23866: # 3219 "/usr/include/fmt/format.h" 3 4
23866: #define FMT_STRING(s) FMT_STRING_IMPL(s, fmt::compile_string)
23866:
23866: template <typename... Args, typename S,
23866: enable_if_t<(is_compile_string<S>::value), int>>
23866: void check_format_string(S format_str) {
23866: constexpr auto s = to_string_view(format_str);
23866: using checker = format_string_checker<typename S::char_type, error_handler,
23866: remove_cvref_t<Args>...>;
23866: constexpr bool invalid_format =
23866: (parse_format_string<true>(s, checker(s, {})), true);
23866: (void)invalid_format;
23866: }
23866:
23866: template <template <typename> class Handler, typename Context>
23866: void handle_dynamic_spec(int& value, arg_ref<typename Context::char_type> ref,
23866: Context& ctx) {
23866: switch (ref.kind) {
23866: case arg_id_kind::none:
23866: break;
23866: case arg_id_kind::index:
23866: value = detail::get_dynamic_spec<Handler>(ctx.arg(ref.val.index),
23866: ctx.error_handler());
23866: break;
23866: case arg_id_kind::name:
23866: value = detail::get_dynamic_spec<Handler>(ctx.arg(ref.val.name),
23866: ctx.error_handler());
23866: break;
23866: }
23866: }
23866:
23866: using format_func = void (*)(detail::buffer<char>&, int, string_view);
23866:
23866: void format_error_code(buffer<char>& out, int error_code,
23866: string_view message) noexcept;
23866:
23866: void report_error(format_func func, int error_code,
23866: string_view message) noexcept;
23866: }
23866:
23866: template <typename OutputIt, typename Char>
23866: using arg_formatter [[deprecated]] =
23866: detail::arg_formatter<OutputIt, Char>;
23866:
23866:
23866:
23866:
23866:
23866:
23866: class system_error : public std::runtime_error {
23866: private:
23866: void init(int err_code, string_view format_str, format_args args);
23866:
23866: protected:
23866: int error_code_;
23866:
23866: system_error() : std::runtime_error(""), error_code_(0) {}
23866:
23866: public:
23866: # 3295 "/usr/include/fmt/format.h" 3 4
23866: template <typename... Args>
23866: system_error(int error_code, string_view message, const Args&... args)
23866: : std::runtime_error("") {
23866: init(error_code, message, make_format_args(args...));
23866: }
23866: system_error(const system_error&) = default;
23866: system_error& operator=(const system_error&) = default;
23866: system_error(system_error&&) = default;
23866: system_error& operator=(system_error&&) = default;
23866: ~system_error() noexcept override;
23866:
23866: int error_code() const { return error_code_; }
23866: };
23866: # 3325 "/usr/include/fmt/format.h" 3 4
23866: void format_system_error(detail::buffer<char>& out, int error_code,
23866: string_view message) noexcept;
23866:
23866:
23866:
23866: void report_system_error(int error_code,
23866: string_view message) noexcept;
23866:
23866:
23866: class format_int {
23866: private:
23866:
23866:
23866: enum { buffer_size = std::numeric_limits<unsigned long long>::digits10 + 3 };
23866: mutable char buffer_[buffer_size];
23866: char* str_;
23866:
23866: template <typename UInt> char* format_unsigned(UInt value) {
23866: auto n = static_cast<detail::uint32_or_64_or_128_t<UInt>>(value);
23866: return detail::format_decimal(buffer_, n, buffer_size - 1).begin;
23866: }
23866:
23866: template <typename Int> char* format_signed(Int value) {
23866: auto abs_value = static_cast<detail::uint32_or_64_or_128_t<Int>>(value);
23866: bool negative = value < 0;
23866: if (negative) abs_value = 0 - abs_value;
23866: auto begin = format_unsigned(abs_value);
23866: if (negative) *--begin = '-';
23866: return begin;
23866: }
23866:
23866: public:
23866: explicit format_int(int value) : str_(format_signed(value)) {}
23866: explicit format_int(long value) : str_(format_signed(value)) {}
23866: explicit format_int(long long value) : str_(format_signed(value)) {}
23866: explicit format_int(unsigned value) : str_(format_unsigned(value)) {}
23866: explicit format_int(unsigned long value) : str_(format_unsigned(value)) {}
23866: explicit format_int(unsigned long long value)
23866: : str_(format_unsigned(value)) {}
23866:
23866:
23866: size_t size() const {
23866: return detail::to_unsigned(buffer_ - str_ + buffer_size - 1);
23866: }
23866:
23866:
23866:
23866:
23866:
23866: const char* data() const { return str_; }
23866:
23866:
23866:
23866:
23866:
23866: const char* c_str() const {
23866: buffer_[buffer_size - 1] = '\0';
23866: return str_;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: std::string str() const { return std::string(str_, size()); }
23866: };
23866:
23866:
23866:
23866: template <typename T, typename Char>
23866: struct formatter<T, Char,
23866: enable_if_t<detail::type_constant<T, Char>::value !=
23866: detail::type::custom_type>> {
23866: constexpr formatter() = default;
23866:
23866:
23866:
23866: template <typename ParseContext>
23866: constexpr auto parse(ParseContext& ctx) -> decltype(ctx.begin()) {
23866: using handler_type = detail::dynamic_specs_handler<ParseContext>;
23866: auto type = detail::type_constant<T, Char>::value;
23866: detail::specs_checker<handler_type> handler(handler_type(specs_, ctx),
23866: type);
23866: auto it = parse_format_specs(ctx.begin(), ctx.end(), handler);
23866: auto eh = ctx.error_handler();
23866: switch (type) {
23866: case detail::type::none_type:
23866: ((false) ? (void)0 : ::fmt::detail::assert_fail("/usr/include/fmt/format.h", 3413, ("invalid argument type")));
23866: break;
23866: case detail::type::int_type:
23866: case detail::type::uint_type:
23866: case detail::type::long_long_type:
23866: case detail::type::ulong_long_type:
23866: case detail::type::int128_type:
23866: case detail::type::uint128_type:
23866: case detail::type::bool_type:
23866: handle_int_type_spec(specs_.type,
23866: detail::int_type_checker<decltype(eh)>(eh));
23866: break;
23866: case detail::type::char_type:
23866: handle_char_specs(
23866: &specs_, detail::char_specs_checker<decltype(eh)>(specs_.type, eh));
23866: break;
23866: case detail::type::float_type:
23866: if (detail::const_check(1))
23866: detail::parse_float_type_spec(specs_, eh);
23866: else
23866: ((false) ? (void)0 : ::fmt::detail::assert_fail("/usr/include/fmt/format.h", 3433, ("float support disabled")));
23866: break;
23866: case detail::type::double_type:
23866: if (detail::const_check(1))
23866: detail::parse_float_type_spec(specs_, eh);
23866: else
23866: ((false) ? (void)0 : ::fmt::detail::assert_fail("/usr/include/fmt/format.h", 3439, ("double support disabled")));
23866: break;
23866: case detail::type::long_double_type:
23866: if (detail::const_check(1))
23866: detail::parse_float_type_spec(specs_, eh);
23866: else
23866: ((false) ? (void)0 : ::fmt::detail::assert_fail("/usr/include/fmt/format.h", 3445, ("long double support disabled")));
23866: break;
23866: case detail::type::cstring_type:
23866: detail::handle_cstring_type_spec(
23866: specs_.type, detail::cstring_type_checker<decltype(eh)>(eh));
23866: break;
23866: case detail::type::string_type:
23866: detail::check_string_type_spec(specs_.type, eh);
23866: break;
23866: case detail::type::pointer_type:
23866: detail::check_pointer_type_spec(specs_.type, eh);
23866: break;
23866: case detail::type::custom_type:
23866:
23866:
23866: break;
23866: }
23866: return it;
23866: }
23866:
23866: template <typename FormatContext>
23866: auto format(const T& val, FormatContext& ctx) -> decltype(ctx.out()) {
23866: detail::handle_dynamic_spec<detail::width_checker>(specs_.width,
23866: specs_.width_ref, ctx);
23866: detail::handle_dynamic_spec<detail::precision_checker>(
23866: specs_.precision, specs_.precision_ref, ctx);
23866: using af = detail::arg_formatter<typename FormatContext::iterator,
23866: typename FormatContext::char_type>;
23866: return visit_format_arg(af(ctx, nullptr, &specs_),
23866: detail::make_arg<FormatContext>(val));
23866: }
23866:
23866: private:
23866: detail::dynamic_format_specs<Char> specs_;
23866: };
23866:
23866: #define FMT_FORMAT_AS(Type,Base) template <typename Char> struct formatter<Type, Char> : formatter<Base, Char> { template <typename FormatContext> auto format(Type const& val, FormatContext& ctx) -> decltype(ctx.out()) { return formatter<Base, Char>::format(val, ctx); } }
23866: # 3490 "/usr/include/fmt/format.h" 3 4
23866: template <typename Char> struct formatter<signed char, Char> : formatter<int, Char> { template <typename FormatContext> auto format(signed char const& val, FormatContext& ctx) -> decltype(ctx.out()) { return formatter<int, Char>::format(val, ctx); } };
23866: template <typename Char> struct formatter<unsigned char, Char> : formatter<unsigned, Char> { template <typename FormatContext> auto format(unsigned char const& val, FormatContext& ctx) -> decltype(ctx.out()) { return formatter<unsigned, Char>::format(val, ctx); } };
23866: template <typename Char> struct formatter<short, Char> : formatter<int, Char> { template <typename FormatContext> auto format(short const& val, FormatContext& ctx) -> decltype(ctx.out()) { return formatter<int, Char>::format(val, ctx); } };
23866: template <typename Char> struct formatter<unsigned short, Char> : formatter<unsigned, Char> { template <typename FormatContext> auto format(unsigned short const& val, FormatContext& ctx) -> decltype(ctx.out()) { return formatter<unsigned, Char>::format(val, ctx); } };
23866: template <typename Char> struct formatter<long, Char> : formatter<long long, Char> { template <typename FormatContext> auto format(long const& val, FormatContext& ctx) -> decltype(ctx.out()) { return formatter<long long, Char>::format(val, ctx); } };
23866: template <typename Char> struct formatter<unsigned long, Char> : formatter<unsigned long long, Char> { template <typename FormatContext> auto format(unsigned long const& val, FormatContext& ctx) -> decltype(ctx.out()) { return formatter<unsigned long long, Char>::format(val, ctx); } };
23866: template <typename Char> struct formatter<Char*, Char> : formatter<const Char*, Char> { template <typename FormatContext> auto format(Char* const& val, FormatContext& ctx) -> decltype(ctx.out()) { return formatter<const Char*, Char>::format(val, ctx); } };
23866: template <typename Char> struct formatter<std::basic_string<Char>, Char> : formatter<basic_string_view<Char>, Char> { template <typename FormatContext> auto format(std::basic_string<Char> const& val, FormatContext& ctx) -> decltype(ctx.out()) { return formatter<basic_string_view<Char>, Char>::format(val, ctx); } };
23866: template <typename Char> struct formatter<std::nullptr_t, Char> : formatter<const void*, Char> { template <typename FormatContext> auto format(std::nullptr_t const& val, FormatContext& ctx) -> decltype(ctx.out()) { return formatter<const void*, Char>::format(val, ctx); } };
23866: template <typename Char> struct formatter<detail::std_string_view<Char>, Char> : formatter<basic_string_view<Char>, Char> { template <typename FormatContext> auto format(detail::std_string_view<Char> const& val, FormatContext& ctx) -> decltype(ctx.out()) { return formatter<basic_string_view<Char>, Char>::format(val, ctx); } };
23866:
23866: template <typename Char>
23866: struct formatter<void*, Char> : formatter<const void*, Char> {
23866: template <typename FormatContext>
23866: auto format(void* val, FormatContext& ctx) -> decltype(ctx.out()) {
23866: return formatter<const void*, Char>::format(val, ctx);
23866: }
23866: };
23866:
23866: template <typename Char, size_t N>
23866: struct formatter<Char[N], Char> : formatter<basic_string_view<Char>, Char> {
23866: template <typename FormatContext>
23866: auto format(const Char* val, FormatContext& ctx) -> decltype(ctx.out()) {
23866: return formatter<basic_string_view<Char>, Char>::format(val, ctx);
23866: }
23866: };
23866: # 3529 "/usr/include/fmt/format.h" 3 4
23866: template <typename Char = char> class dynamic_formatter {
23866: private:
23866: struct null_handler : detail::error_handler {
23866: void on_align(align_t) {}
23866: void on_plus() {}
23866: void on_minus() {}
23866: void on_space() {}
23866: void on_hash() {}
23866: };
23866:
23866: public:
23866: template <typename ParseContext>
23866: auto parse(ParseContext& ctx) -> decltype(ctx.begin()) {
23866: format_str_ = ctx.begin();
23866:
23866: detail::dynamic_specs_handler<ParseContext> handler(specs_, ctx);
23866: return parse_format_specs(ctx.begin(), ctx.end(), handler);
23866: }
23866:
23866: template <typename T, typename FormatContext>
23866: auto format(const T& val, FormatContext& ctx) -> decltype(ctx.out()) {
23866: handle_specs(ctx);
23866: detail::specs_checker<null_handler> checker(
23866: null_handler(), detail::mapped_type_constant<T, FormatContext>::value);
23866: checker.on_align(specs_.align);
23866: switch (specs_.sign) {
23866: case sign::none:
23866: break;
23866: case sign::plus:
23866: checker.on_plus();
23866: break;
23866: case sign::minus:
23866: checker.on_minus();
23866: break;
23866: case sign::space:
23866: checker.on_space();
23866: break;
23866: }
23866: if (specs_.alt) checker.on_hash();
23866: if (specs_.precision >= 0) checker.end_precision();
23866: using af = detail::arg_formatter<typename FormatContext::iterator,
23866: typename FormatContext::char_type>;
23866: visit_format_arg(af(ctx, nullptr, &specs_),
23866: detail::make_arg<FormatContext>(val));
23866: return ctx.out();
23866: }
23866:
23866: private:
23866: template <typename Context> void handle_specs(Context& ctx) {
23866: detail::handle_dynamic_spec<detail::width_checker>(specs_.width,
23866: specs_.width_ref, ctx);
23866: detail::handle_dynamic_spec<detail::precision_checker>(
23866: specs_.precision, specs_.precision_ref, ctx);
23866: }
23866:
23866: detail::dynamic_format_specs<Char> specs_;
23866: const Char* format_str_;
23866: };
23866:
23866: template <typename Char, typename ErrorHandler>
23866: constexpr void advance_to(
23866: basic_format_parse_context<Char, ErrorHandler>& ctx, const Char* p) {
23866: ctx.advance_to(ctx.begin() + (p - &*ctx.begin()));
23866: }
23866: # 3603 "/usr/include/fmt/format.h" 3 4
23866: template <typename T> inline const void* ptr(const T* p) { return p; }
23866: template <typename T> inline const void* ptr(const std::unique_ptr<T>& p) {
23866: return p.get();
23866: }
23866: template <typename T> inline const void* ptr(const std::shared_ptr<T>& p) {
23866: return p.get();
23866: }
23866:
23866: class bytes {
23866: private:
23866: string_view data_;
23866: friend struct formatter<bytes>;
23866:
23866: public:
23866: explicit bytes(string_view data) : data_(data) {}
23866: };
23866:
23866: template <> struct formatter<bytes> {
23866: private:
23866: detail::dynamic_format_specs<char> specs_;
23866:
23866: public:
23866: template <typename ParseContext>
23866: constexpr auto parse(ParseContext& ctx) -> decltype(ctx.begin()) {
23866: using handler_type = detail::dynamic_specs_handler<ParseContext>;
23866: detail::specs_checker<handler_type> handler(handler_type(specs_, ctx),
23866: detail::type::string_type);
23866: auto it = parse_format_specs(ctx.begin(), ctx.end(), handler);
23866: detail::check_string_type_spec(specs_.type, ctx.error_handler());
23866: return it;
23866: }
23866:
23866: template <typename FormatContext>
23866: auto format(bytes b, FormatContext& ctx) -> decltype(ctx.out()) {
23866: detail::handle_dynamic_spec<detail::width_checker>(specs_.width,
23866: specs_.width_ref, ctx);
23866: detail::handle_dynamic_spec<detail::precision_checker>(
23866: specs_.precision, specs_.precision_ref, ctx);
23866: return detail::write_bytes(ctx.out(), b.data_, specs_);
23866: }
23866: };
23866:
23866: template <typename It, typename Sentinel, typename Char>
23866: struct arg_join : detail::view {
23866: It begin;
23866: Sentinel end;
23866: basic_string_view<Char> sep;
23866:
23866: arg_join(It b, Sentinel e, basic_string_view<Char> s)
23866: : begin(b), end(e), sep(s) {}
23866: };
23866:
23866: template <typename It, typename Sentinel, typename Char>
23866: struct formatter<arg_join<It, Sentinel, Char>, Char>
23866: : formatter<typename std::iterator_traits<It>::value_type, Char> {
23866: template <typename FormatContext>
23866: auto format(const arg_join<It, Sentinel, Char>& value, FormatContext& ctx)
23866: -> decltype(ctx.out()) {
23866: using base = formatter<typename std::iterator_traits<It>::value_type, Char>;
23866: auto it = value.begin;
23866: auto out = ctx.out();
23866: if (it != value.end) {
23866: out = base::format(*it++, ctx);
23866: while (it != value.end) {
23866: out = std::copy(value.sep.begin(), value.sep.end(), out);
23866: ctx.advance_to(out);
23866: out = base::format(*it++, ctx);
23866: }
23866: }
23866: return out;
23866: }
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template <typename It, typename Sentinel>
23866: arg_join<It, Sentinel, char> join(It begin, Sentinel end, string_view sep) {
23866: return {begin, end, sep};
23866: }
23866:
23866: template <typename It, typename Sentinel>
23866: arg_join<It, Sentinel, wchar_t> join(It begin, Sentinel end, wstring_view sep) {
23866: return {begin, end, sep};
23866: }
23866: # 3706 "/usr/include/fmt/format.h" 3 4
23866: template <typename Range>
23866: arg_join<detail::iterator_t<Range>, detail::sentinel_t<Range>, char> join(
23866: Range&& range, string_view sep) {
23866: return join(std::begin(range), std::end(range), sep);
23866: }
23866:
23866: template <typename Range>
23866: arg_join<detail::iterator_t<Range>, detail::sentinel_t<Range>, wchar_t> join(
23866: Range&& range, wstring_view sep) {
23866: return join(std::begin(range), std::end(range), sep);
23866: }
23866: # 3729 "/usr/include/fmt/format.h" 3 4
23866: template <typename T, enable_if_t<(!std::is_integral<T>::value), int> = 0>
23866: inline std::string to_string(const T& value) {
23866: std::string result;
23866: detail::write<char>(std::back_inserter(result), value);
23866: return result;
23866: }
23866:
23866: template <typename T, enable_if_t<(std::is_integral<T>::value), int> = 0>
23866: inline std::string to_string(T value) {
23866:
23866:
23866: constexpr int max_size = detail::digits10<T>() + 2;
23866: char buffer[max_size > 5 ? static_cast<unsigned>(max_size) : 5];
23866: char* begin = buffer;
23866: return std::string(begin, detail::write<char>(begin, value));
23866: }
23866:
23866:
23866:
23866:
23866: template <typename T> inline std::wstring to_wstring(const T& value) {
23866: return format(L"{}", value);
23866: }
23866:
23866: template <typename Char, size_t SIZE>
23866: std::basic_string<Char> to_string(const basic_memory_buffer<Char, SIZE>& buf) {
23866: auto size = buf.size();
23866: detail::assume(size < std::basic_string<Char>().max_size());
23866: return std::basic_string<Char>(buf.data(), size);
23866: }
23866:
23866: template <typename Char>
23866: void detail::vformat_to(
23866: detail::buffer<Char>& buf, basic_string_view<Char> format_str,
23866: basic_format_args<buffer_context<type_identity_t<Char>>> args,
23866: detail::locale_ref loc) {
23866: using iterator = typename buffer_context<Char>::iterator;
23866: auto out = buffer_appender<Char>(buf);
23866: if (format_str.size() == 2 && equal2(format_str.data(), "{}")) {
23866: auto arg = args.get(0);
23866: if (!arg) error_handler().on_error("argument not found");
23866: visit_format_arg(default_arg_formatter<iterator, Char>{out, args, loc},
23866: arg);
23866: return;
23866: }
23866: format_handler<iterator, Char, buffer_context<Char>> h(out, format_str, args,
23866: loc);
23866: parse_format_string<false>(format_str, h);
23866: }
23866:
23866:
23866: extern template void detail::vformat_to(detail::buffer<char>&, string_view,
23866: basic_format_args<format_context>,
23866: detail::locale_ref);
23866: namespace detail {
23866:
23866: extern template std::string grouping_impl<char>(locale_ref loc);
23866: extern template std::string grouping_impl<wchar_t>(locale_ref loc);
23866: extern template char thousands_sep_impl<char>(locale_ref loc);
23866: extern template wchar_t thousands_sep_impl<wchar_t>(locale_ref loc);
23866: extern template char decimal_point_impl(locale_ref loc);
23866: extern template wchar_t decimal_point_impl(locale_ref loc);
23866: extern template int format_float<double>(double value, int precision,
23866: float_specs specs, buffer<char>& buf);
23866: extern template int format_float<long double>(long double value, int precision,
23866: float_specs specs,
23866: buffer<char>& buf);
23866: int snprintf_float(float value, int precision, float_specs specs,
23866: buffer<char>& buf) = delete;
23866: extern template int snprintf_float<double>(double value, int precision,
23866: float_specs specs,
23866: buffer<char>& buf);
23866: extern template int snprintf_float<long double>(long double value,
23866: int precision,
23866: float_specs specs,
23866: buffer<char>& buf);
23866: }
23866:
23866:
23866: template <typename S, typename Char = char_t<S>,
23866: enable_if_t<(detail::is_string<S>::value), int> = 0>
23866: inline void vformat_to(
23866: detail::buffer<Char>& buf, const S& format_str,
23866: basic_format_args<basic_format_context<detail::buffer_appender<type_identity_t<Char> >, type_identity_t<Char> > > args) {
23866: return detail::vformat_to(buf, to_string_view(format_str), args);
23866: }
23866:
23866: template <typename S, typename... Args, size_t SIZE = inline_buffer_size,
23866: typename Char = enable_if_t<detail::is_string<S>::value, char_t<S>>>
23866: inline typename buffer_context<Char>::iterator format_to(
23866: basic_memory_buffer<Char, SIZE>& buf, const S& format_str, Args&&... args) {
23866: const auto& vargs = fmt::make_args_checked<Args...>(format_str, args...);
23866: detail::vformat_to(buf, to_string_view(format_str), vargs);
23866: return detail::buffer_appender<Char>(buf);
23866: }
23866:
23866: template <typename OutputIt, typename Char = char>
23866: using format_context_t = basic_format_context<OutputIt, Char>;
23866:
23866: template <typename OutputIt, typename Char = char>
23866: using format_args_t = basic_format_args<format_context_t<OutputIt, Char>>;
23866:
23866: template <typename OutputIt, typename Char = typename OutputIt::value_type>
23866: using format_to_n_context [[deprecated]] = buffer_context<Char>;
23866:
23866: template <typename OutputIt, typename Char = typename OutputIt::value_type>
23866: using format_to_n_args [[deprecated]] =
23866: basic_format_args<buffer_context<Char>>;
23866:
23866: template <typename OutputIt, typename Char, typename... Args>
23866: [[deprecated]] format_arg_store<buffer_context<Char>, Args...>
23866: make_format_to_n_args(const Args&... args) {
23866: return format_arg_store<buffer_context<Char>, Args...>(args...);
23866: }
23866:
23866: template <typename Char, enable_if_t<(!std::is_same<Char, char>::value), int>>
23866: std::basic_string<Char> detail::vformat(
23866: basic_string_view<Char> format_str,
23866: basic_format_args<buffer_context<type_identity_t<Char>>> args) {
23866: basic_memory_buffer<Char> buffer;
23866: detail::vformat_to(buffer, format_str, args);
23866: return to_string(buffer);
23866: }
23866:
23866: template <typename Char, enable_if_t<(std::is_same<Char, wchar_t>::value), int> = 0>
23866: void vprint(std::FILE* f, basic_string_view<Char> format_str,
23866: wformat_args args) {
23866: wmemory_buffer buffer;
23866: detail::vformat_to(buffer, format_str, args);
23866: buffer.push_back(L'\0');
23866: if (std::fputws(buffer.data(), f) == -1)
23866: throw system_error((*__errno_location ()), "cannot write to file");
23866: }
23866:
23866: template <typename Char, enable_if_t<(std::is_same<Char, wchar_t>::value), int> = 0>
23866: void vprint(basic_string_view<Char> format_str, wformat_args args) {
23866: vprint(stdout, format_str, args);
23866: }
23866: # 3951 "/usr/include/fmt/format.h" 3 4
23866: } }
23866:
23866:
23866:
23866:
23866:
23866: #define FMT_FUNC
23866: # 44 "src/common/common.h" 2
23866: # 1 "/usr/include/fmt/ostream.h" 1 3 4
23866: # 9 "/usr/include/fmt/ostream.h" 3 4
23866: #define FMT_OSTREAM_H_
23866:
23866:
23866:
23866: # 1 "/usr/include/fmt/format.h" 1 3 4
23866: # 14 "/usr/include/fmt/ostream.h" 2 3 4
23866:
23866: namespace fmt { inline namespace v7 {
23866:
23866: template <typename Char> class basic_printf_parse_context;
23866: template <typename OutputIt, typename Char> class basic_printf_context;
23866:
23866: namespace detail {
23866:
23866: template <class Char> class formatbuf : public std::basic_streambuf<Char> {
23866: private:
23866: using int_type = typename std::basic_streambuf<Char>::int_type;
23866: using traits_type = typename std::basic_streambuf<Char>::traits_type;
23866:
23866: buffer<Char>& buffer_;
23866:
23866: public:
23866: formatbuf(buffer<Char>& buf) : buffer_(buf) {}
23866:
23866: protected:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: int_type overflow(int_type ch = traits_type::eof()) override {
23866: if (!traits_type::eq_int_type(ch, traits_type::eof()))
23866: buffer_.push_back(static_cast<Char>(ch));
23866: return ch;
23866: }
23866:
23866: std::streamsize xsputn(const Char* s, std::streamsize count) override {
23866: buffer_.append(s, s + count);
23866: return count;
23866: }
23866: };
23866:
23866: struct converter {
23866: template <typename T, enable_if_t<(is_integral<T>::value), int> = 0> converter(T);
23866: };
23866:
23866: template <typename Char> struct test_stream : std::basic_ostream<Char> {
23866: private:
23866: void_t<> operator<<(converter);
23866: };
23866:
23866:
23866: template <typename Char, typename Traits>
23866: void_t<> operator<<(std::basic_ostream<Char, Traits>&, Char);
23866: template <typename Char, typename Traits>
23866: void_t<> operator<<(std::basic_ostream<Char, Traits>&, char);
23866: template <typename Traits>
23866: void_t<> operator<<(std::basic_ostream<char, Traits>&, char);
23866: template <typename Traits>
23866: void_t<> operator<<(std::basic_ostream<char, Traits>&, signed char);
23866: template <typename Traits>
23866: void_t<> operator<<(std::basic_ostream<char, Traits>&, unsigned char);
23866:
23866:
23866:
23866: template <typename T, typename Char> class is_streamable {
23866: private:
23866: template <typename U>
23866: static bool_constant<!std::is_same<decltype(std::declval<test_stream<Char>&>()
23866: << std::declval<U>()),
23866: void_t<>>::value>
23866: test(int);
23866:
23866: template <typename> static std::false_type test(...);
23866:
23866: using result = decltype(test<T>(0));
23866:
23866: public:
23866: static const bool value = result::value;
23866: };
23866:
23866:
23866: template <typename Char>
23866: void write_buffer(std::basic_ostream<Char>& os, buffer<Char>& buf) {
23866: const Char* buf_data = buf.data();
23866: using unsigned_streamsize = std::make_unsigned<std::streamsize>::type;
23866: unsigned_streamsize size = buf.size();
23866: unsigned_streamsize max_size = to_unsigned(max_value<std::streamsize>());
23866: do {
23866: unsigned_streamsize n = size <= max_size ? size : max_size;
23866: os.write(buf_data, static_cast<std::streamsize>(n));
23866: buf_data += n;
23866: size -= n;
23866: } while (size != 0);
23866: }
23866:
23866: template <typename Char, typename T>
23866: void format_value(buffer<Char>& buf, const T& value,
23866: locale_ref loc = locale_ref()) {
23866: formatbuf<Char> format_buf(buf);
23866: std::basic_ostream<Char> output(&format_buf);
23866:
23866: if (loc) output.imbue(loc.get<std::locale>());
23866:
23866: output << value;
23866: output.exceptions(std::ios_base::failbit | std::ios_base::badbit);
23866: buf.try_resize(buf.size());
23866: }
23866:
23866:
23866: template <typename T, typename Char>
23866: struct fallback_formatter<T, Char, enable_if_t<is_streamable<T, Char>::value>>
23866: : private formatter<basic_string_view<Char>, Char> {
23866: constexpr auto parse(basic_format_parse_context<Char>& ctx)
23866: -> decltype(ctx.begin()) {
23866: return formatter<basic_string_view<Char>, Char>::parse(ctx);
23866: }
23866: template <typename ParseCtx,
23866: enable_if_t<(std::is_same< ParseCtx, basic_printf_parse_context<Char>>::value), int> = 0
23866: >
23866: auto parse(ParseCtx& ctx) -> decltype(ctx.begin()) {
23866: return ctx.begin();
23866: }
23866:
23866: template <typename OutputIt>
23866: auto format(const T& value, basic_format_context<OutputIt, Char>& ctx)
23866: -> OutputIt {
23866: basic_memory_buffer<Char> buffer;
23866: format_value(buffer, value, ctx.locale());
23866: basic_string_view<Char> str(buffer.data(), buffer.size());
23866: return formatter<basic_string_view<Char>, Char>::format(str, ctx);
23866: }
23866: template <typename OutputIt>
23866: auto format(const T& value, basic_printf_context<OutputIt, Char>& ctx)
23866: -> OutputIt {
23866: basic_memory_buffer<Char> buffer;
23866: format_value(buffer, value, ctx.locale());
23866: return std::copy(buffer.begin(), buffer.end(), ctx.out());
23866: }
23866: };
23866: }
23866:
23866: template <typename Char>
23866: void vprint(std::basic_ostream<Char>& os, basic_string_view<Char> format_str,
23866: basic_format_args<buffer_context<type_identity_t<Char>>> args) {
23866: basic_memory_buffer<Char> buffer;
23866: detail::vformat_to(buffer, format_str, args);
23866: detail::write_buffer(os, buffer);
23866: }
23866: # 169 "/usr/include/fmt/ostream.h" 3 4
23866: template <typename S, typename... Args,
23866: typename Char = enable_if_t<detail::is_string<S>::value, char_t<S>>>
23866: void print(std::basic_ostream<Char>& os, const S& format_str, Args&&... args) {
23866: vprint(os, to_string_view(format_str),
23866: fmt::make_args_checked<Args...>(format_str, args...));
23866: }
23866: } }
23866: # 45 "src/common/common.h" 2
23866:
23866: # 1 "/usr/include/boost/algorithm/string.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string.hpp" 3 4
23866: #define BOOST_STRING_ALGO_HPP
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/algorithm/string/std_containers_traits.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/std_containers_traits.hpp" 3 4
23866: #define BOOST_STRING_STD_CONTAINERS_TRAITS_HPP
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/config.hpp" 1 3 4
23866: # 18 "/usr/include/boost/config.hpp" 3 4
23866: #define BOOST_CONFIG_HPP
23866:
23866:
23866:
23866: #define BOOST_USER_CONFIG <boost/config/user.hpp>
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/config/user.hpp" 1 3 4
23866: # 31 "/usr/include/boost/config.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/config/detail/select_compiler_config.hpp" 1 3 4
23866: # 60 "/usr/include/boost/config/detail/select_compiler_config.hpp" 3 4
23866: #define BOOST_COMPILER_CONFIG "boost/config/compiler/gcc.hpp"
23866: # 36 "/usr/include/boost/config.hpp" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/config/compiler/gcc.hpp" 1 3 4
23866: # 19 "/usr/include/boost/config/compiler/gcc.hpp" 3 4
23866: #define BOOST_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
23866:
23866: #define BOOST_GCC BOOST_GCC_VERSION
23866:
23866:
23866:
23866: #define BOOST_GCC_CXX11
23866: # 51 "/usr/include/boost/config/compiler/gcc.hpp" 3 4
23866: #define BOOST_HAS_PRAGMA_ONCE
23866: # 86 "/usr/include/boost/config/compiler/gcc.hpp" 3 4
23866: #define BOOST_HAS_LONG_LONG
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_HAS_NRVO
23866:
23866:
23866: #define BOOST_LIKELY(x) __builtin_expect(x, 1)
23866: #define BOOST_UNLIKELY(x) __builtin_expect(x, 0)
23866: # 110 "/usr/include/boost/config/compiler/gcc.hpp" 3 4
23866: #define BOOST_SYMBOL_EXPORT __attribute__((__visibility__("default")))
23866: #define BOOST_SYMBOL_IMPORT
23866:
23866: #define BOOST_SYMBOL_VISIBLE __attribute__((__visibility__("default")))
23866: # 165 "/usr/include/boost/config/compiler/gcc.hpp" 3 4
23866: # 1 "/usr/include/c++/10/cstddef" 1 3 4
23866: # 40 "/usr/include/c++/10/cstddef" 3 4
23866: #define _GLIBCXX_CSTDDEF 1
23866:
23866:
23866: # 43 "/usr/include/c++/10/cstddef" 3
23866:
23866: #undef __need_wchar_t
23866: #undef __need_ptrdiff_t
23866: #undef __need_size_t
23866: #undef __need_NULL
23866: #undef __need_wint_t
23866:
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 1 3 4
23866: # 51 "/usr/include/c++/10/cstddef" 2 3
23866:
23866: extern "C++"
23866: {
23866:
23866: namespace std
23866: {
23866:
23866: using ::max_align_t;
23866: }
23866:
23866:
23866:
23866: namespace std
23866: {
23866:
23866: #define __cpp_lib_byte 201603
23866:
23866:
23866: enum class byte : unsigned char {};
23866:
23866: template<typename _IntegerType> struct __byte_operand { };
23866: template<> struct __byte_operand<bool> { using __type = byte; };
23866: template<> struct __byte_operand<char> { using __type = byte; };
23866: template<> struct __byte_operand<signed char> { using __type = byte; };
23866: template<> struct __byte_operand<unsigned char> { using __type = byte; };
23866:
23866: template<> struct __byte_operand<wchar_t> { using __type = byte; };
23866:
23866:
23866:
23866:
23866: template<> struct __byte_operand<char16_t> { using __type = byte; };
23866: template<> struct __byte_operand<char32_t> { using __type = byte; };
23866: template<> struct __byte_operand<short> { using __type = byte; };
23866: template<> struct __byte_operand<unsigned short> { using __type = byte; };
23866: template<> struct __byte_operand<int> { using __type = byte; };
23866: template<> struct __byte_operand<unsigned int> { using __type = byte; };
23866: template<> struct __byte_operand<long> { using __type = byte; };
23866: template<> struct __byte_operand<unsigned long> { using __type = byte; };
23866: template<> struct __byte_operand<long long> { using __type = byte; };
23866: template<> struct __byte_operand<unsigned long long> { using __type = byte; };
23866: # 110 "/usr/include/c++/10/cstddef" 3
23866: template<typename _IntegerType>
23866: struct __byte_operand<const _IntegerType>
23866: : __byte_operand<_IntegerType> { };
23866: template<typename _IntegerType>
23866: struct __byte_operand<volatile _IntegerType>
23866: : __byte_operand<_IntegerType> { };
23866: template<typename _IntegerType>
23866: struct __byte_operand<const volatile _IntegerType>
23866: : __byte_operand<_IntegerType> { };
23866:
23866: template<typename _IntegerType>
23866: using __byte_op_t = typename __byte_operand<_IntegerType>::__type;
23866:
23866: template<typename _IntegerType>
23866: constexpr __byte_op_t<_IntegerType>
23866: operator<<(byte __b, _IntegerType __shift) noexcept
23866: { return (byte)(unsigned char)((unsigned)__b << __shift); }
23866:
23866: template<typename _IntegerType>
23866: constexpr __byte_op_t<_IntegerType>
23866: operator>>(byte __b, _IntegerType __shift) noexcept
23866: { return (byte)(unsigned char)((unsigned)__b >> __shift); }
23866:
23866: constexpr byte
23866: operator|(byte __l, byte __r) noexcept
23866: { return (byte)(unsigned char)((unsigned)__l | (unsigned)__r); }
23866:
23866: constexpr byte
23866: operator&(byte __l, byte __r) noexcept
23866: { return (byte)(unsigned char)((unsigned)__l & (unsigned)__r); }
23866:
23866: constexpr byte
23866: operator^(byte __l, byte __r) noexcept
23866: { return (byte)(unsigned char)((unsigned)__l ^ (unsigned)__r); }
23866:
23866: constexpr byte
23866: operator~(byte __b) noexcept
23866: { return (byte)(unsigned char)~(unsigned)__b; }
23866:
23866: template<typename _IntegerType>
23866: constexpr __byte_op_t<_IntegerType>&
23866: operator<<=(byte& __b, _IntegerType __shift) noexcept
23866: { return __b = __b << __shift; }
23866:
23866: template<typename _IntegerType>
23866: constexpr __byte_op_t<_IntegerType>&
23866: operator>>=(byte& __b, _IntegerType __shift) noexcept
23866: { return __b = __b >> __shift; }
23866:
23866: constexpr byte&
23866: operator|=(byte& __l, byte __r) noexcept
23866: { return __l = __l | __r; }
23866:
23866: constexpr byte&
23866: operator&=(byte& __l, byte __r) noexcept
23866: { return __l = __l & __r; }
23866:
23866: constexpr byte&
23866: operator^=(byte& __l, byte __r) noexcept
23866: { return __l = __l ^ __r; }
23866:
23866: template<typename _IntegerType>
23866: constexpr _IntegerType
23866: to_integer(__byte_op_t<_IntegerType> __b) noexcept
23866: { return _IntegerType(__b); }
23866:
23866:
23866: }
23866:
23866: }
23866: # 166 "/usr/include/boost/config/compiler/gcc.hpp" 2 3 4
23866: # 179 "/usr/include/boost/config/compiler/gcc.hpp" 3 4
23866: #define BOOST_HAS_DECLTYPE
23866: #define BOOST_HAS_RVALUE_REFS
23866: #define BOOST_HAS_STATIC_ASSERT
23866: #define BOOST_HAS_VARIADIC_TMPL
23866: # 323 "/usr/include/boost/config/compiler/gcc.hpp" 3 4
23866: #define BOOST_FALLTHROUGH __attribute__((fallthrough))
23866: # 336 "/usr/include/boost/config/compiler/gcc.hpp" 3 4
23866: #define BOOST_ATTRIBUTE_UNUSED __attribute__((__unused__))
23866:
23866:
23866:
23866: #define BOOST_MAY_ALIAS __attribute__((__may_alias__))
23866:
23866:
23866:
23866:
23866: #define BOOST_UNREACHABLE_RETURN(x) __builtin_unreachable();
23866:
23866:
23866:
23866: #define BOOST_COMPILER "GNU C++ version " __VERSION__
23866: # 40 "/usr/include/boost/config.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/config/detail/select_stdlib_config.hpp" 1 3 4
23866: # 24 "/usr/include/boost/config/detail/select_stdlib_config.hpp" 3 4
23866: # 1 "/usr/include/c++/10/version" 1 3 4
23866: # 31 "/usr/include/c++/10/version" 3 4
23866: #define _GLIBCXX_VERSION_INCLUDED
23866:
23866:
23866: # 34 "/usr/include/c++/10/version" 3
23866:
23866:
23866:
23866:
23866:
23866: #define __cpp_lib_incomplete_container_elements 201505
23866: # 49 "/usr/include/c++/10/version" 3
23866: #define __cpp_lib_is_null_pointer 201309
23866: #define __cpp_lib_result_of_sfinae 201210
23866:
23866:
23866: #define __cpp_lib_allocator_traits_is_always_equal 201411
23866: #define __cpp_lib_shared_ptr_arrays 201611L
23866: # 67 "/usr/include/c++/10/version" 3
23866: #define __STDCPP_MATH_SPEC_FUNCS__ 201003L
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __cpp_lib_integral_constant_callable 201304
23866: #define __cpp_lib_is_final 201402L
23866: #define __cpp_lib_transformation_trait_aliases 201304
23866:
23866:
23866: #define __cpp_lib_chrono_udls 201304
23866: #define __cpp_lib_complex_udls 201309
23866: #define __cpp_lib_exchange_function 201304
23866: #define __cpp_lib_generic_associative_lookup 201304
23866: #define __cpp_lib_integer_sequence 201304
23866: #define __cpp_lib_make_reverse_iterator 201402
23866: #define __cpp_lib_make_unique 201304
23866:
23866: #define __cpp_lib_null_iterators 201304L
23866:
23866: #define __cpp_lib_quoted_string_io 201304
23866: #define __cpp_lib_robust_nonmodifying_seq_ops 201304
23866:
23866: #define __cpp_lib_shared_timed_mutex 201402
23866:
23866: #define __cpp_lib_string_udls 201304
23866: #define __cpp_lib_transparent_operators 201510
23866: #define __cpp_lib_tuple_element_t 201402L
23866: #define __cpp_lib_tuples_by_type 201304
23866:
23866:
23866:
23866:
23866: #define __cpp_lib_addressof_constexpr 201603
23866: #define __cpp_lib_atomic_is_always_lock_free 201603
23866: #define __cpp_lib_bool_constant 201505
23866: #define __cpp_lib_byte 201603
23866:
23866: #define __cpp_lib_has_unique_object_representations 201606
23866:
23866:
23866: #define __cpp_lib_is_aggregate 201703
23866:
23866: #define __cpp_lib_is_invocable 201703
23866: #define __cpp_lib_is_swappable 201603
23866:
23866: #define __cpp_lib_launder 201606
23866:
23866: #define __cpp_lib_logical_traits 201510
23866: #define __cpp_lib_type_trait_variable_templates 201510L
23866: #define __cpp_lib_uncaught_exceptions 201411L
23866: #define __cpp_lib_void_t 201411
23866:
23866:
23866: #define __cpp_lib_any 201606L
23866: #define __cpp_lib_apply 201603
23866:
23866: #define __cpp_lib_array_constexpr 201803L
23866:
23866: #define __cpp_lib_as_const 201510
23866: #define __cpp_lib_boyer_moore_searcher 201603
23866: #define __cpp_lib_chrono 201611
23866: #define __cpp_lib_clamp 201603
23866:
23866: #define __cpp_lib_constexpr_char_traits 201611L
23866:
23866: #define __cpp_lib_enable_shared_from_this 201603
23866: #define __cpp_lib_execution 201902L
23866: #define __cpp_lib_filesystem 201703
23866: #define __cpp_lib_gcd 201606
23866: #define __cpp_lib_gcd_lcm 201606
23866: #define __cpp_lib_hypot 201603
23866: #define __cpp_lib_invoke 201411L
23866: #define __cpp_lib_lcm 201606
23866: #define __cpp_lib_make_from_tuple 201606
23866: #define __cpp_lib_map_try_emplace 201411
23866: #define __cpp_lib_math_special_functions 201603L
23866:
23866: #define __cpp_lib_memory_resource 201603
23866:
23866:
23866:
23866: #define __cpp_lib_node_extract 201606
23866: #define __cpp_lib_nonmember_container_access 201411
23866: #define __cpp_lib_not_fn 201603
23866: #define __cpp_lib_optional 201606L
23866: #define __cpp_lib_parallel_algorithm 201603L
23866: #define __cpp_lib_raw_memory_algorithms 201606L
23866: #define __cpp_lib_sample 201603
23866:
23866: #define __cpp_lib_scoped_lock 201703
23866: #define __cpp_lib_shared_mutex 201505
23866:
23866: #define __cpp_lib_shared_ptr_weak_type 201606
23866: #define __cpp_lib_string_view 201803L
23866:
23866: #define __cpp_lib_unordered_map_try_emplace 201411
23866: #define __cpp_lib_variant 201606L
23866: # 25 "/usr/include/boost/config/detail/select_stdlib_config.hpp" 2 3 4
23866: # 70 "/usr/include/boost/config/detail/select_stdlib_config.hpp" 3 4
23866: #define BOOST_STDLIB_CONFIG "boost/config/stdlib/libstdcpp3.hpp"
23866: # 45 "/usr/include/boost/config.hpp" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/config/stdlib/libstdcpp3.hpp" 1 3 4
23866: # 12 "/usr/include/boost/config/stdlib/libstdcpp3.hpp" 3 4
23866: #define BOOST_GNU_STDLIB 1
23866:
23866:
23866: #define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCXX__)
23866: # 46 "/usr/include/boost/config/stdlib/libstdcpp3.hpp" 3 4
23866: #define BOOST_HAS_THREADS
23866: # 78 "/usr/include/boost/config/stdlib/libstdcpp3.hpp" 3 4
23866: # 1 "/usr/include/unistd.h" 1 3 4
23866: # 23 "/usr/include/unistd.h" 3 4
23866: #define _UNISTD_H 1
23866:
23866:
23866:
23866: extern "C" {
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define _POSIX_VERSION 200809L
23866: # 53 "/usr/include/unistd.h" 3 4
23866: #define __POSIX2_THIS_VERSION 200809L
23866: # 67 "/usr/include/unistd.h" 3 4
23866: #define _POSIX2_VERSION __POSIX2_THIS_VERSION
23866:
23866:
23866: #define _POSIX2_C_VERSION __POSIX2_THIS_VERSION
23866:
23866:
23866:
23866: #define _POSIX2_C_BIND __POSIX2_THIS_VERSION
23866:
23866:
23866:
23866: #define _POSIX2_C_DEV __POSIX2_THIS_VERSION
23866:
23866:
23866:
23866: #define _POSIX2_SW_DEV __POSIX2_THIS_VERSION
23866:
23866:
23866:
23866: #define _POSIX2_LOCALEDEF __POSIX2_THIS_VERSION
23866:
23866:
23866:
23866: #define _XOPEN_VERSION 700
23866: # 100 "/usr/include/unistd.h" 3 4
23866: #define _XOPEN_XCU_VERSION 4
23866:
23866:
23866: #define _XOPEN_XPG2 1
23866: #define _XOPEN_XPG3 1
23866: #define _XOPEN_XPG4 1
23866:
23866:
23866: #define _XOPEN_UNIX 1
23866:
23866:
23866:
23866: #define _XOPEN_ENH_I18N 1
23866:
23866:
23866: #define _XOPEN_LEGACY 1
23866: # 202 "/usr/include/unistd.h" 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/posix_opt.h" 1 3 4
23866: # 20 "/usr/include/arm-linux-gnueabihf/bits/posix_opt.h" 3 4
23866: #define _BITS_POSIX_OPT_H 1
23866:
23866:
23866: #define _POSIX_JOB_CONTROL 1
23866:
23866:
23866: #define _POSIX_SAVED_IDS 1
23866:
23866:
23866:
23866:
23866:
23866: #define _POSIX_PRIORITY_SCHEDULING 200809L
23866:
23866:
23866: #define _POSIX_SYNCHRONIZED_IO 200809L
23866:
23866:
23866: #define _POSIX_FSYNC 200809L
23866:
23866:
23866: #define _POSIX_MAPPED_FILES 200809L
23866:
23866:
23866: #define _POSIX_MEMLOCK 200809L
23866:
23866:
23866: #define _POSIX_MEMLOCK_RANGE 200809L
23866:
23866:
23866: #define _POSIX_MEMORY_PROTECTION 200809L
23866:
23866:
23866: #define _POSIX_CHOWN_RESTRICTED 0
23866:
23866:
23866:
23866: #define _POSIX_VDISABLE '\0'
23866:
23866:
23866: #define _POSIX_NO_TRUNC 1
23866:
23866:
23866: #define _XOPEN_REALTIME 1
23866:
23866:
23866: #define _XOPEN_REALTIME_THREADS 1
23866:
23866:
23866: #define _XOPEN_SHM 1
23866:
23866:
23866: #define _POSIX_THREADS 200809L
23866:
23866:
23866: #define _POSIX_REENTRANT_FUNCTIONS 1
23866: #define _POSIX_THREAD_SAFE_FUNCTIONS 200809L
23866:
23866:
23866: #define _POSIX_THREAD_PRIORITY_SCHEDULING 200809L
23866:
23866:
23866: #define _POSIX_THREAD_ATTR_STACKSIZE 200809L
23866:
23866:
23866: #define _POSIX_THREAD_ATTR_STACKADDR 200809L
23866:
23866:
23866: #define _POSIX_THREAD_PRIO_INHERIT 200809L
23866:
23866:
23866:
23866: #define _POSIX_THREAD_PRIO_PROTECT 200809L
23866:
23866:
23866:
23866: #define _POSIX_THREAD_ROBUST_PRIO_INHERIT 200809L
23866:
23866:
23866: #define _POSIX_THREAD_ROBUST_PRIO_PROTECT -1
23866:
23866:
23866:
23866: #define _POSIX_SEMAPHORES 200809L
23866:
23866:
23866: #define _POSIX_REALTIME_SIGNALS 200809L
23866:
23866:
23866: #define _POSIX_ASYNCHRONOUS_IO 200809L
23866: #define _POSIX_ASYNC_IO 1
23866:
23866: #define _LFS_ASYNCHRONOUS_IO 1
23866:
23866: #define _POSIX_PRIORITIZED_IO 200809L
23866:
23866:
23866: #define _LFS64_ASYNCHRONOUS_IO 1
23866:
23866:
23866: #define _LFS_LARGEFILE 1
23866: #define _LFS64_LARGEFILE 1
23866: #define _LFS64_STDIO 1
23866:
23866:
23866: #define _POSIX_SHARED_MEMORY_OBJECTS 200809L
23866:
23866:
23866: #define _POSIX_CPUTIME 0
23866:
23866:
23866: #define _POSIX_THREAD_CPUTIME 0
23866:
23866:
23866: #define _POSIX_REGEXP 1
23866:
23866:
23866: #define _POSIX_READER_WRITER_LOCKS 200809L
23866:
23866:
23866: #define _POSIX_SHELL 1
23866:
23866:
23866: #define _POSIX_TIMEOUTS 200809L
23866:
23866:
23866: #define _POSIX_SPIN_LOCKS 200809L
23866:
23866:
23866: #define _POSIX_SPAWN 200809L
23866:
23866:
23866: #define _POSIX_TIMERS 200809L
23866:
23866:
23866: #define _POSIX_BARRIERS 200809L
23866:
23866:
23866: #define _POSIX_MESSAGE_PASSING 200809L
23866:
23866:
23866: #define _POSIX_THREAD_PROCESS_SHARED 200809L
23866:
23866:
23866: #define _POSIX_MONOTONIC_CLOCK 0
23866:
23866:
23866: #define _POSIX_CLOCK_SELECTION 200809L
23866:
23866:
23866: #define _POSIX_ADVISORY_INFO 200809L
23866:
23866:
23866: #define _POSIX_IPV6 200809L
23866:
23866:
23866: #define _POSIX_RAW_SOCKETS 200809L
23866:
23866:
23866: #define _POSIX2_CHAR_TERM 200809L
23866:
23866:
23866: #define _POSIX_SPORADIC_SERVER -1
23866: #define _POSIX_THREAD_SPORADIC_SERVER -1
23866:
23866:
23866: #define _POSIX_TRACE -1
23866: #define _POSIX_TRACE_EVENT_FILTER -1
23866: #define _POSIX_TRACE_INHERIT -1
23866: #define _POSIX_TRACE_LOG -1
23866:
23866:
23866: #define _POSIX_TYPED_MEMORY_OBJECTS -1
23866: # 203 "/usr/include/unistd.h" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/environments.h" 1 3 4
23866: # 22 "/usr/include/arm-linux-gnueabihf/bits/environments.h" 3 4
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4
23866: # 18 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 3 4
23866: #define __WORDSIZE 32
23866: #define __WORDSIZE_TIME64_COMPAT32 0
23866: #define __WORDSIZE32_SIZE_ULONG 0
23866: #define __WORDSIZE32_PTRDIFF_LONG 0
23866: # 23 "/usr/include/arm-linux-gnueabihf/bits/environments.h" 2 3 4
23866: # 66 "/usr/include/arm-linux-gnueabihf/bits/environments.h" 3 4
23866: #define _POSIX_V7_ILP32_OFF32 1
23866: #define _POSIX_V7_ILP32_OFFBIG 1
23866: #define _POSIX_V6_ILP32_OFF32 1
23866: #define _POSIX_V6_ILP32_OFFBIG 1
23866: #define _XBS5_ILP32_OFF32 1
23866: #define _XBS5_ILP32_OFFBIG 1
23866:
23866:
23866:
23866:
23866:
23866: #define _POSIX_V7_LP64_OFF64 -1
23866: #define _POSIX_V7_LPBIG_OFFBIG -1
23866: #define _POSIX_V6_LP64_OFF64 -1
23866: #define _POSIX_V6_LPBIG_OFFBIG -1
23866: #define _XBS5_LP64_OFF64 -1
23866: #define _XBS5_LPBIG_OFFBIG -1
23866:
23866:
23866: #define __ILP32_OFFBIG_CFLAGS "-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
23866: # 207 "/usr/include/unistd.h" 2 3 4
23866:
23866:
23866:
23866: #define STDIN_FILENO 0
23866: #define STDOUT_FILENO 1
23866: #define STDERR_FILENO 2
23866: # 224 "/usr/include/unistd.h" 3 4
23866: #define __need_size_t
23866: #define __need_NULL
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 1 3 4
23866: # 155 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_ptrdiff_t
23866: # 231 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_size_t
23866: # 340 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_wchar_t
23866: # 390 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef NULL
23866:
23866: #define NULL __null
23866: # 401 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 3 4
23866: #undef __need_NULL
23866:
23866:
23866:
23866:
23866: #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
23866: # 227 "/usr/include/unistd.h" 2 3 4
23866: # 274 "/usr/include/unistd.h" 3 4
23866: typedef __socklen_t socklen_t;
23866: #define __socklen_t_defined
23866:
23866:
23866:
23866:
23866:
23866: #define R_OK 4
23866: #define W_OK 2
23866: #define X_OK 1
23866: #define F_OK 0
23866:
23866:
23866: extern int access (const char *__name, int __type) throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866:
23866: extern int euidaccess (const char *__name, int __type)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern int eaccess (const char *__name, int __type)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int faccessat (int __fd, const char *__file, int __type, int __flag)
23866: throw () __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__));
23866: # 322 "/usr/include/unistd.h" 3 4
23866: #define L_SET SEEK_SET
23866: #define L_INCR SEEK_CUR
23866: #define L_XTND SEEK_END
23866: # 337 "/usr/include/unistd.h" 3 4
23866: extern __off64_t lseek (int __fd, __off64_t __offset, int __whence) throw () __asm__ ("" "lseek64")
23866:
23866: ;
23866:
23866:
23866:
23866:
23866:
23866: extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence)
23866: throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int close (int __fd);
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866: extern ssize_t write (int __fd, const void *__buf, size_t __n) __attribute__ ((__warn_unused_result__));
23866: # 388 "/usr/include/unistd.h" 3 4
23866: extern ssize_t pread (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pread64")
23866:
23866: __attribute__ ((__warn_unused_result__));
23866: extern ssize_t pwrite (int __fd, const void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pwrite64")
23866:
23866: __attribute__ ((__warn_unused_result__));
23866: # 404 "/usr/include/unistd.h" 3 4
23866: extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes,
23866: __off64_t __offset) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866: extern ssize_t pwrite64 (int __fd, const void *__buf, size_t __n,
23866: __off64_t __offset) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int pipe (int __pipedes[2]) throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: extern int pipe2 (int __pipedes[2], int __flags) throw () __attribute__ ((__warn_unused_result__));
23866: # 432 "/usr/include/unistd.h" 3 4
23866: extern unsigned int alarm (unsigned int __seconds) throw ();
23866: # 444 "/usr/include/unistd.h" 3 4
23866: extern unsigned int sleep (unsigned int __seconds);
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval)
23866: throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int usleep (__useconds_t __useconds);
23866: # 469 "/usr/include/unistd.h" 3 4
23866: extern int pause (void);
23866:
23866:
23866:
23866: extern int chown (const char *__file, __uid_t __owner, __gid_t __group)
23866: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866: extern int fchown (int __fd, __uid_t __owner, __gid_t __group) throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: extern int lchown (const char *__file, __uid_t __owner, __gid_t __group)
23866: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int fchownat (int __fd, const char *__file, __uid_t __owner,
23866: __gid_t __group, int __flag)
23866: throw () __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866: extern int chdir (const char *__path) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866: extern int fchdir (int __fd) throw () __attribute__ ((__warn_unused_result__));
23866: # 511 "/usr/include/unistd.h" 3 4
23866: extern char *getcwd (char *__buf, size_t __size) throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866: extern char *get_current_dir_name (void) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern char *getwd (char *__buf)
23866: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: extern int dup (int __fd) throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866: extern int dup2 (int __fd, int __fd2) throw ();
23866:
23866:
23866:
23866:
23866: extern int dup3 (int __fd, int __fd2, int __flags) throw ();
23866:
23866:
23866:
23866: extern char **__environ;
23866:
23866: extern char **environ;
23866:
23866:
23866:
23866:
23866:
23866: extern int execve (const char *__path, char *const __argv[],
23866: char *const __envp[]) throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866:
23866:
23866: extern int fexecve (int __fd, char *const __argv[], char *const __envp[])
23866: throw () __attribute__ ((__nonnull__ (2)));
23866:
23866:
23866:
23866:
23866: extern int execv (const char *__path, char *const __argv[])
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866:
23866: extern int execle (const char *__path, const char *__arg, ...)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866:
23866: extern int execl (const char *__path, const char *__arg, ...)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866:
23866: extern int execvp (const char *__file, char *const __argv[])
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866:
23866:
23866: extern int execlp (const char *__file, const char *__arg, ...)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866:
23866:
23866: extern int execvpe (const char *__file, char *const __argv[],
23866: char *const __envp[])
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866:
23866:
23866:
23866: extern int nice (int __inc) throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: extern void _exit (int __status) __attribute__ ((__noreturn__));
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/confname.h" 1 3 4
23866: # 24 "/usr/include/arm-linux-gnueabihf/bits/confname.h" 3 4
23866: enum
23866: {
23866: _PC_LINK_MAX,
23866: #define _PC_LINK_MAX _PC_LINK_MAX
23866: _PC_MAX_CANON,
23866: #define _PC_MAX_CANON _PC_MAX_CANON
23866: _PC_MAX_INPUT,
23866: #define _PC_MAX_INPUT _PC_MAX_INPUT
23866: _PC_NAME_MAX,
23866: #define _PC_NAME_MAX _PC_NAME_MAX
23866: _PC_PATH_MAX,
23866: #define _PC_PATH_MAX _PC_PATH_MAX
23866: _PC_PIPE_BUF,
23866: #define _PC_PIPE_BUF _PC_PIPE_BUF
23866: _PC_CHOWN_RESTRICTED,
23866: #define _PC_CHOWN_RESTRICTED _PC_CHOWN_RESTRICTED
23866: _PC_NO_TRUNC,
23866: #define _PC_NO_TRUNC _PC_NO_TRUNC
23866: _PC_VDISABLE,
23866: #define _PC_VDISABLE _PC_VDISABLE
23866: _PC_SYNC_IO,
23866: #define _PC_SYNC_IO _PC_SYNC_IO
23866: _PC_ASYNC_IO,
23866: #define _PC_ASYNC_IO _PC_ASYNC_IO
23866: _PC_PRIO_IO,
23866: #define _PC_PRIO_IO _PC_PRIO_IO
23866: _PC_SOCK_MAXBUF,
23866: #define _PC_SOCK_MAXBUF _PC_SOCK_MAXBUF
23866: _PC_FILESIZEBITS,
23866: #define _PC_FILESIZEBITS _PC_FILESIZEBITS
23866: _PC_REC_INCR_XFER_SIZE,
23866: #define _PC_REC_INCR_XFER_SIZE _PC_REC_INCR_XFER_SIZE
23866: _PC_REC_MAX_XFER_SIZE,
23866: #define _PC_REC_MAX_XFER_SIZE _PC_REC_MAX_XFER_SIZE
23866: _PC_REC_MIN_XFER_SIZE,
23866: #define _PC_REC_MIN_XFER_SIZE _PC_REC_MIN_XFER_SIZE
23866: _PC_REC_XFER_ALIGN,
23866: #define _PC_REC_XFER_ALIGN _PC_REC_XFER_ALIGN
23866: _PC_ALLOC_SIZE_MIN,
23866: #define _PC_ALLOC_SIZE_MIN _PC_ALLOC_SIZE_MIN
23866: _PC_SYMLINK_MAX,
23866: #define _PC_SYMLINK_MAX _PC_SYMLINK_MAX
23866: _PC_2_SYMLINKS
23866: #define _PC_2_SYMLINKS _PC_2_SYMLINKS
23866: };
23866:
23866:
23866: enum
23866: {
23866: _SC_ARG_MAX,
23866: #define _SC_ARG_MAX _SC_ARG_MAX
23866: _SC_CHILD_MAX,
23866: #define _SC_CHILD_MAX _SC_CHILD_MAX
23866: _SC_CLK_TCK,
23866: #define _SC_CLK_TCK _SC_CLK_TCK
23866: _SC_NGROUPS_MAX,
23866: #define _SC_NGROUPS_MAX _SC_NGROUPS_MAX
23866: _SC_OPEN_MAX,
23866: #define _SC_OPEN_MAX _SC_OPEN_MAX
23866: _SC_STREAM_MAX,
23866: #define _SC_STREAM_MAX _SC_STREAM_MAX
23866: _SC_TZNAME_MAX,
23866: #define _SC_TZNAME_MAX _SC_TZNAME_MAX
23866: _SC_JOB_CONTROL,
23866: #define _SC_JOB_CONTROL _SC_JOB_CONTROL
23866: _SC_SAVED_IDS,
23866: #define _SC_SAVED_IDS _SC_SAVED_IDS
23866: _SC_REALTIME_SIGNALS,
23866: #define _SC_REALTIME_SIGNALS _SC_REALTIME_SIGNALS
23866: _SC_PRIORITY_SCHEDULING,
23866: #define _SC_PRIORITY_SCHEDULING _SC_PRIORITY_SCHEDULING
23866: _SC_TIMERS,
23866: #define _SC_TIMERS _SC_TIMERS
23866: _SC_ASYNCHRONOUS_IO,
23866: #define _SC_ASYNCHRONOUS_IO _SC_ASYNCHRONOUS_IO
23866: _SC_PRIORITIZED_IO,
23866: #define _SC_PRIORITIZED_IO _SC_PRIORITIZED_IO
23866: _SC_SYNCHRONIZED_IO,
23866: #define _SC_SYNCHRONIZED_IO _SC_SYNCHRONIZED_IO
23866: _SC_FSYNC,
23866: #define _SC_FSYNC _SC_FSYNC
23866: _SC_MAPPED_FILES,
23866: #define _SC_MAPPED_FILES _SC_MAPPED_FILES
23866: _SC_MEMLOCK,
23866: #define _SC_MEMLOCK _SC_MEMLOCK
23866: _SC_MEMLOCK_RANGE,
23866: #define _SC_MEMLOCK_RANGE _SC_MEMLOCK_RANGE
23866: _SC_MEMORY_PROTECTION,
23866: #define _SC_MEMORY_PROTECTION _SC_MEMORY_PROTECTION
23866: _SC_MESSAGE_PASSING,
23866: #define _SC_MESSAGE_PASSING _SC_MESSAGE_PASSING
23866: _SC_SEMAPHORES,
23866: #define _SC_SEMAPHORES _SC_SEMAPHORES
23866: _SC_SHARED_MEMORY_OBJECTS,
23866: #define _SC_SHARED_MEMORY_OBJECTS _SC_SHARED_MEMORY_OBJECTS
23866: _SC_AIO_LISTIO_MAX,
23866: #define _SC_AIO_LISTIO_MAX _SC_AIO_LISTIO_MAX
23866: _SC_AIO_MAX,
23866: #define _SC_AIO_MAX _SC_AIO_MAX
23866: _SC_AIO_PRIO_DELTA_MAX,
23866: #define _SC_AIO_PRIO_DELTA_MAX _SC_AIO_PRIO_DELTA_MAX
23866: _SC_DELAYTIMER_MAX,
23866: #define _SC_DELAYTIMER_MAX _SC_DELAYTIMER_MAX
23866: _SC_MQ_OPEN_MAX,
23866: #define _SC_MQ_OPEN_MAX _SC_MQ_OPEN_MAX
23866: _SC_MQ_PRIO_MAX,
23866: #define _SC_MQ_PRIO_MAX _SC_MQ_PRIO_MAX
23866: _SC_VERSION,
23866: #define _SC_VERSION _SC_VERSION
23866: _SC_PAGESIZE,
23866: #define _SC_PAGESIZE _SC_PAGESIZE
23866: #define _SC_PAGE_SIZE _SC_PAGESIZE
23866: _SC_RTSIG_MAX,
23866: #define _SC_RTSIG_MAX _SC_RTSIG_MAX
23866: _SC_SEM_NSEMS_MAX,
23866: #define _SC_SEM_NSEMS_MAX _SC_SEM_NSEMS_MAX
23866: _SC_SEM_VALUE_MAX,
23866: #define _SC_SEM_VALUE_MAX _SC_SEM_VALUE_MAX
23866: _SC_SIGQUEUE_MAX,
23866: #define _SC_SIGQUEUE_MAX _SC_SIGQUEUE_MAX
23866: _SC_TIMER_MAX,
23866: #define _SC_TIMER_MAX _SC_TIMER_MAX
23866:
23866:
23866:
23866: _SC_BC_BASE_MAX,
23866: #define _SC_BC_BASE_MAX _SC_BC_BASE_MAX
23866: _SC_BC_DIM_MAX,
23866: #define _SC_BC_DIM_MAX _SC_BC_DIM_MAX
23866: _SC_BC_SCALE_MAX,
23866: #define _SC_BC_SCALE_MAX _SC_BC_SCALE_MAX
23866: _SC_BC_STRING_MAX,
23866: #define _SC_BC_STRING_MAX _SC_BC_STRING_MAX
23866: _SC_COLL_WEIGHTS_MAX,
23866: #define _SC_COLL_WEIGHTS_MAX _SC_COLL_WEIGHTS_MAX
23866: _SC_EQUIV_CLASS_MAX,
23866: #define _SC_EQUIV_CLASS_MAX _SC_EQUIV_CLASS_MAX
23866: _SC_EXPR_NEST_MAX,
23866: #define _SC_EXPR_NEST_MAX _SC_EXPR_NEST_MAX
23866: _SC_LINE_MAX,
23866: #define _SC_LINE_MAX _SC_LINE_MAX
23866: _SC_RE_DUP_MAX,
23866: #define _SC_RE_DUP_MAX _SC_RE_DUP_MAX
23866: _SC_CHARCLASS_NAME_MAX,
23866: #define _SC_CHARCLASS_NAME_MAX _SC_CHARCLASS_NAME_MAX
23866:
23866: _SC_2_VERSION,
23866: #define _SC_2_VERSION _SC_2_VERSION
23866: _SC_2_C_BIND,
23866: #define _SC_2_C_BIND _SC_2_C_BIND
23866: _SC_2_C_DEV,
23866: #define _SC_2_C_DEV _SC_2_C_DEV
23866: _SC_2_FORT_DEV,
23866: #define _SC_2_FORT_DEV _SC_2_FORT_DEV
23866: _SC_2_FORT_RUN,
23866: #define _SC_2_FORT_RUN _SC_2_FORT_RUN
23866: _SC_2_SW_DEV,
23866: #define _SC_2_SW_DEV _SC_2_SW_DEV
23866: _SC_2_LOCALEDEF,
23866: #define _SC_2_LOCALEDEF _SC_2_LOCALEDEF
23866:
23866: _SC_PII,
23866: #define _SC_PII _SC_PII
23866: _SC_PII_XTI,
23866: #define _SC_PII_XTI _SC_PII_XTI
23866: _SC_PII_SOCKET,
23866: #define _SC_PII_SOCKET _SC_PII_SOCKET
23866: _SC_PII_INTERNET,
23866: #define _SC_PII_INTERNET _SC_PII_INTERNET
23866: _SC_PII_OSI,
23866: #define _SC_PII_OSI _SC_PII_OSI
23866: _SC_POLL,
23866: #define _SC_POLL _SC_POLL
23866: _SC_SELECT,
23866: #define _SC_SELECT _SC_SELECT
23866: _SC_UIO_MAXIOV,
23866: #define _SC_UIO_MAXIOV _SC_UIO_MAXIOV
23866: _SC_IOV_MAX = _SC_UIO_MAXIOV,
23866: #define _SC_IOV_MAX _SC_IOV_MAX
23866: _SC_PII_INTERNET_STREAM,
23866: #define _SC_PII_INTERNET_STREAM _SC_PII_INTERNET_STREAM
23866: _SC_PII_INTERNET_DGRAM,
23866: #define _SC_PII_INTERNET_DGRAM _SC_PII_INTERNET_DGRAM
23866: _SC_PII_OSI_COTS,
23866: #define _SC_PII_OSI_COTS _SC_PII_OSI_COTS
23866: _SC_PII_OSI_CLTS,
23866: #define _SC_PII_OSI_CLTS _SC_PII_OSI_CLTS
23866: _SC_PII_OSI_M,
23866: #define _SC_PII_OSI_M _SC_PII_OSI_M
23866: _SC_T_IOV_MAX,
23866: #define _SC_T_IOV_MAX _SC_T_IOV_MAX
23866:
23866:
23866: _SC_THREADS,
23866: #define _SC_THREADS _SC_THREADS
23866: _SC_THREAD_SAFE_FUNCTIONS,
23866: #define _SC_THREAD_SAFE_FUNCTIONS _SC_THREAD_SAFE_FUNCTIONS
23866: _SC_GETGR_R_SIZE_MAX,
23866: #define _SC_GETGR_R_SIZE_MAX _SC_GETGR_R_SIZE_MAX
23866: _SC_GETPW_R_SIZE_MAX,
23866: #define _SC_GETPW_R_SIZE_MAX _SC_GETPW_R_SIZE_MAX
23866: _SC_LOGIN_NAME_MAX,
23866: #define _SC_LOGIN_NAME_MAX _SC_LOGIN_NAME_MAX
23866: _SC_TTY_NAME_MAX,
23866: #define _SC_TTY_NAME_MAX _SC_TTY_NAME_MAX
23866: _SC_THREAD_DESTRUCTOR_ITERATIONS,
23866: #define _SC_THREAD_DESTRUCTOR_ITERATIONS _SC_THREAD_DESTRUCTOR_ITERATIONS
23866: _SC_THREAD_KEYS_MAX,
23866: #define _SC_THREAD_KEYS_MAX _SC_THREAD_KEYS_MAX
23866: _SC_THREAD_STACK_MIN,
23866: #define _SC_THREAD_STACK_MIN _SC_THREAD_STACK_MIN
23866: _SC_THREAD_THREADS_MAX,
23866: #define _SC_THREAD_THREADS_MAX _SC_THREAD_THREADS_MAX
23866: _SC_THREAD_ATTR_STACKADDR,
23866: #define _SC_THREAD_ATTR_STACKADDR _SC_THREAD_ATTR_STACKADDR
23866: _SC_THREAD_ATTR_STACKSIZE,
23866: #define _SC_THREAD_ATTR_STACKSIZE _SC_THREAD_ATTR_STACKSIZE
23866: _SC_THREAD_PRIORITY_SCHEDULING,
23866: #define _SC_THREAD_PRIORITY_SCHEDULING _SC_THREAD_PRIORITY_SCHEDULING
23866: _SC_THREAD_PRIO_INHERIT,
23866: #define _SC_THREAD_PRIO_INHERIT _SC_THREAD_PRIO_INHERIT
23866: _SC_THREAD_PRIO_PROTECT,
23866: #define _SC_THREAD_PRIO_PROTECT _SC_THREAD_PRIO_PROTECT
23866: _SC_THREAD_PROCESS_SHARED,
23866: #define _SC_THREAD_PROCESS_SHARED _SC_THREAD_PROCESS_SHARED
23866:
23866: _SC_NPROCESSORS_CONF,
23866: #define _SC_NPROCESSORS_CONF _SC_NPROCESSORS_CONF
23866: _SC_NPROCESSORS_ONLN,
23866: #define _SC_NPROCESSORS_ONLN _SC_NPROCESSORS_ONLN
23866: _SC_PHYS_PAGES,
23866: #define _SC_PHYS_PAGES _SC_PHYS_PAGES
23866: _SC_AVPHYS_PAGES,
23866: #define _SC_AVPHYS_PAGES _SC_AVPHYS_PAGES
23866: _SC_ATEXIT_MAX,
23866: #define _SC_ATEXIT_MAX _SC_ATEXIT_MAX
23866: _SC_PASS_MAX,
23866: #define _SC_PASS_MAX _SC_PASS_MAX
23866:
23866: _SC_XOPEN_VERSION,
23866: #define _SC_XOPEN_VERSION _SC_XOPEN_VERSION
23866: _SC_XOPEN_XCU_VERSION,
23866: #define _SC_XOPEN_XCU_VERSION _SC_XOPEN_XCU_VERSION
23866: _SC_XOPEN_UNIX,
23866: #define _SC_XOPEN_UNIX _SC_XOPEN_UNIX
23866: _SC_XOPEN_CRYPT,
23866: #define _SC_XOPEN_CRYPT _SC_XOPEN_CRYPT
23866: _SC_XOPEN_ENH_I18N,
23866: #define _SC_XOPEN_ENH_I18N _SC_XOPEN_ENH_I18N
23866: _SC_XOPEN_SHM,
23866: #define _SC_XOPEN_SHM _SC_XOPEN_SHM
23866:
23866: _SC_2_CHAR_TERM,
23866: #define _SC_2_CHAR_TERM _SC_2_CHAR_TERM
23866: _SC_2_C_VERSION,
23866: #define _SC_2_C_VERSION _SC_2_C_VERSION
23866: _SC_2_UPE,
23866: #define _SC_2_UPE _SC_2_UPE
23866:
23866: _SC_XOPEN_XPG2,
23866: #define _SC_XOPEN_XPG2 _SC_XOPEN_XPG2
23866: _SC_XOPEN_XPG3,
23866: #define _SC_XOPEN_XPG3 _SC_XOPEN_XPG3
23866: _SC_XOPEN_XPG4,
23866: #define _SC_XOPEN_XPG4 _SC_XOPEN_XPG4
23866:
23866: _SC_CHAR_BIT,
23866: #define _SC_CHAR_BIT _SC_CHAR_BIT
23866: _SC_CHAR_MAX,
23866: #define _SC_CHAR_MAX _SC_CHAR_MAX
23866: _SC_CHAR_MIN,
23866: #define _SC_CHAR_MIN _SC_CHAR_MIN
23866: _SC_INT_MAX,
23866: #define _SC_INT_MAX _SC_INT_MAX
23866: _SC_INT_MIN,
23866: #define _SC_INT_MIN _SC_INT_MIN
23866: _SC_LONG_BIT,
23866: #define _SC_LONG_BIT _SC_LONG_BIT
23866: _SC_WORD_BIT,
23866: #define _SC_WORD_BIT _SC_WORD_BIT
23866: _SC_MB_LEN_MAX,
23866: #define _SC_MB_LEN_MAX _SC_MB_LEN_MAX
23866: _SC_NZERO,
23866: #define _SC_NZERO _SC_NZERO
23866: _SC_SSIZE_MAX,
23866: #define _SC_SSIZE_MAX _SC_SSIZE_MAX
23866: _SC_SCHAR_MAX,
23866: #define _SC_SCHAR_MAX _SC_SCHAR_MAX
23866: _SC_SCHAR_MIN,
23866: #define _SC_SCHAR_MIN _SC_SCHAR_MIN
23866: _SC_SHRT_MAX,
23866: #define _SC_SHRT_MAX _SC_SHRT_MAX
23866: _SC_SHRT_MIN,
23866: #define _SC_SHRT_MIN _SC_SHRT_MIN
23866: _SC_UCHAR_MAX,
23866: #define _SC_UCHAR_MAX _SC_UCHAR_MAX
23866: _SC_UINT_MAX,
23866: #define _SC_UINT_MAX _SC_UINT_MAX
23866: _SC_ULONG_MAX,
23866: #define _SC_ULONG_MAX _SC_ULONG_MAX
23866: _SC_USHRT_MAX,
23866: #define _SC_USHRT_MAX _SC_USHRT_MAX
23866:
23866: _SC_NL_ARGMAX,
23866: #define _SC_NL_ARGMAX _SC_NL_ARGMAX
23866: _SC_NL_LANGMAX,
23866: #define _SC_NL_LANGMAX _SC_NL_LANGMAX
23866: _SC_NL_MSGMAX,
23866: #define _SC_NL_MSGMAX _SC_NL_MSGMAX
23866: _SC_NL_NMAX,
23866: #define _SC_NL_NMAX _SC_NL_NMAX
23866: _SC_NL_SETMAX,
23866: #define _SC_NL_SETMAX _SC_NL_SETMAX
23866: _SC_NL_TEXTMAX,
23866: #define _SC_NL_TEXTMAX _SC_NL_TEXTMAX
23866:
23866: _SC_XBS5_ILP32_OFF32,
23866: #define _SC_XBS5_ILP32_OFF32 _SC_XBS5_ILP32_OFF32
23866: _SC_XBS5_ILP32_OFFBIG,
23866: #define _SC_XBS5_ILP32_OFFBIG _SC_XBS5_ILP32_OFFBIG
23866: _SC_XBS5_LP64_OFF64,
23866: #define _SC_XBS5_LP64_OFF64 _SC_XBS5_LP64_OFF64
23866: _SC_XBS5_LPBIG_OFFBIG,
23866: #define _SC_XBS5_LPBIG_OFFBIG _SC_XBS5_LPBIG_OFFBIG
23866:
23866: _SC_XOPEN_LEGACY,
23866: #define _SC_XOPEN_LEGACY _SC_XOPEN_LEGACY
23866: _SC_XOPEN_REALTIME,
23866: #define _SC_XOPEN_REALTIME _SC_XOPEN_REALTIME
23866: _SC_XOPEN_REALTIME_THREADS,
23866: #define _SC_XOPEN_REALTIME_THREADS _SC_XOPEN_REALTIME_THREADS
23866:
23866: _SC_ADVISORY_INFO,
23866: #define _SC_ADVISORY_INFO _SC_ADVISORY_INFO
23866: _SC_BARRIERS,
23866: #define _SC_BARRIERS _SC_BARRIERS
23866: _SC_BASE,
23866: #define _SC_BASE _SC_BASE
23866: _SC_C_LANG_SUPPORT,
23866: #define _SC_C_LANG_SUPPORT _SC_C_LANG_SUPPORT
23866: _SC_C_LANG_SUPPORT_R,
23866: #define _SC_C_LANG_SUPPORT_R _SC_C_LANG_SUPPORT_R
23866: _SC_CLOCK_SELECTION,
23866: #define _SC_CLOCK_SELECTION _SC_CLOCK_SELECTION
23866: _SC_CPUTIME,
23866: #define _SC_CPUTIME _SC_CPUTIME
23866: _SC_THREAD_CPUTIME,
23866: #define _SC_THREAD_CPUTIME _SC_THREAD_CPUTIME
23866: _SC_DEVICE_IO,
23866: #define _SC_DEVICE_IO _SC_DEVICE_IO
23866: _SC_DEVICE_SPECIFIC,
23866: #define _SC_DEVICE_SPECIFIC _SC_DEVICE_SPECIFIC
23866: _SC_DEVICE_SPECIFIC_R,
23866: #define _SC_DEVICE_SPECIFIC_R _SC_DEVICE_SPECIFIC_R
23866: _SC_FD_MGMT,
23866: #define _SC_FD_MGMT _SC_FD_MGMT
23866: _SC_FIFO,
23866: #define _SC_FIFO _SC_FIFO
23866: _SC_PIPE,
23866: #define _SC_PIPE _SC_PIPE
23866: _SC_FILE_ATTRIBUTES,
23866: #define _SC_FILE_ATTRIBUTES _SC_FILE_ATTRIBUTES
23866: _SC_FILE_LOCKING,
23866: #define _SC_FILE_LOCKING _SC_FILE_LOCKING
23866: _SC_FILE_SYSTEM,
23866: #define _SC_FILE_SYSTEM _SC_FILE_SYSTEM
23866: _SC_MONOTONIC_CLOCK,
23866: #define _SC_MONOTONIC_CLOCK _SC_MONOTONIC_CLOCK
23866: _SC_MULTI_PROCESS,
23866: #define _SC_MULTI_PROCESS _SC_MULTI_PROCESS
23866: _SC_SINGLE_PROCESS,
23866: #define _SC_SINGLE_PROCESS _SC_SINGLE_PROCESS
23866: _SC_NETWORKING,
23866: #define _SC_NETWORKING _SC_NETWORKING
23866: _SC_READER_WRITER_LOCKS,
23866: #define _SC_READER_WRITER_LOCKS _SC_READER_WRITER_LOCKS
23866: _SC_SPIN_LOCKS,
23866: #define _SC_SPIN_LOCKS _SC_SPIN_LOCKS
23866: _SC_REGEXP,
23866: #define _SC_REGEXP _SC_REGEXP
23866: _SC_REGEX_VERSION,
23866: #define _SC_REGEX_VERSION _SC_REGEX_VERSION
23866: _SC_SHELL,
23866: #define _SC_SHELL _SC_SHELL
23866: _SC_SIGNALS,
23866: #define _SC_SIGNALS _SC_SIGNALS
23866: _SC_SPAWN,
23866: #define _SC_SPAWN _SC_SPAWN
23866: _SC_SPORADIC_SERVER,
23866: #define _SC_SPORADIC_SERVER _SC_SPORADIC_SERVER
23866: _SC_THREAD_SPORADIC_SERVER,
23866: #define _SC_THREAD_SPORADIC_SERVER _SC_THREAD_SPORADIC_SERVER
23866: _SC_SYSTEM_DATABASE,
23866: #define _SC_SYSTEM_DATABASE _SC_SYSTEM_DATABASE
23866: _SC_SYSTEM_DATABASE_R,
23866: #define _SC_SYSTEM_DATABASE_R _SC_SYSTEM_DATABASE_R
23866: _SC_TIMEOUTS,
23866: #define _SC_TIMEOUTS _SC_TIMEOUTS
23866: _SC_TYPED_MEMORY_OBJECTS,
23866: #define _SC_TYPED_MEMORY_OBJECTS _SC_TYPED_MEMORY_OBJECTS
23866: _SC_USER_GROUPS,
23866: #define _SC_USER_GROUPS _SC_USER_GROUPS
23866: _SC_USER_GROUPS_R,
23866: #define _SC_USER_GROUPS_R _SC_USER_GROUPS_R
23866: _SC_2_PBS,
23866: #define _SC_2_PBS _SC_2_PBS
23866: _SC_2_PBS_ACCOUNTING,
23866: #define _SC_2_PBS_ACCOUNTING _SC_2_PBS_ACCOUNTING
23866: _SC_2_PBS_LOCATE,
23866: #define _SC_2_PBS_LOCATE _SC_2_PBS_LOCATE
23866: _SC_2_PBS_MESSAGE,
23866: #define _SC_2_PBS_MESSAGE _SC_2_PBS_MESSAGE
23866: _SC_2_PBS_TRACK,
23866: #define _SC_2_PBS_TRACK _SC_2_PBS_TRACK
23866: _SC_SYMLOOP_MAX,
23866: #define _SC_SYMLOOP_MAX _SC_SYMLOOP_MAX
23866: _SC_STREAMS,
23866: #define _SC_STREAMS _SC_STREAMS
23866: _SC_2_PBS_CHECKPOINT,
23866: #define _SC_2_PBS_CHECKPOINT _SC_2_PBS_CHECKPOINT
23866:
23866: _SC_V6_ILP32_OFF32,
23866: #define _SC_V6_ILP32_OFF32 _SC_V6_ILP32_OFF32
23866: _SC_V6_ILP32_OFFBIG,
23866: #define _SC_V6_ILP32_OFFBIG _SC_V6_ILP32_OFFBIG
23866: _SC_V6_LP64_OFF64,
23866: #define _SC_V6_LP64_OFF64 _SC_V6_LP64_OFF64
23866: _SC_V6_LPBIG_OFFBIG,
23866: #define _SC_V6_LPBIG_OFFBIG _SC_V6_LPBIG_OFFBIG
23866:
23866: _SC_HOST_NAME_MAX,
23866: #define _SC_HOST_NAME_MAX _SC_HOST_NAME_MAX
23866: _SC_TRACE,
23866: #define _SC_TRACE _SC_TRACE
23866: _SC_TRACE_EVENT_FILTER,
23866: #define _SC_TRACE_EVENT_FILTER _SC_TRACE_EVENT_FILTER
23866: _SC_TRACE_INHERIT,
23866: #define _SC_TRACE_INHERIT _SC_TRACE_INHERIT
23866: _SC_TRACE_LOG,
23866: #define _SC_TRACE_LOG _SC_TRACE_LOG
23866:
23866: _SC_LEVEL1_ICACHE_SIZE,
23866: #define _SC_LEVEL1_ICACHE_SIZE _SC_LEVEL1_ICACHE_SIZE
23866: _SC_LEVEL1_ICACHE_ASSOC,
23866: #define _SC_LEVEL1_ICACHE_ASSOC _SC_LEVEL1_ICACHE_ASSOC
23866: _SC_LEVEL1_ICACHE_LINESIZE,
23866: #define _SC_LEVEL1_ICACHE_LINESIZE _SC_LEVEL1_ICACHE_LINESIZE
23866: _SC_LEVEL1_DCACHE_SIZE,
23866: #define _SC_LEVEL1_DCACHE_SIZE _SC_LEVEL1_DCACHE_SIZE
23866: _SC_LEVEL1_DCACHE_ASSOC,
23866: #define _SC_LEVEL1_DCACHE_ASSOC _SC_LEVEL1_DCACHE_ASSOC
23866: _SC_LEVEL1_DCACHE_LINESIZE,
23866: #define _SC_LEVEL1_DCACHE_LINESIZE _SC_LEVEL1_DCACHE_LINESIZE
23866: _SC_LEVEL2_CACHE_SIZE,
23866: #define _SC_LEVEL2_CACHE_SIZE _SC_LEVEL2_CACHE_SIZE
23866: _SC_LEVEL2_CACHE_ASSOC,
23866: #define _SC_LEVEL2_CACHE_ASSOC _SC_LEVEL2_CACHE_ASSOC
23866: _SC_LEVEL2_CACHE_LINESIZE,
23866: #define _SC_LEVEL2_CACHE_LINESIZE _SC_LEVEL2_CACHE_LINESIZE
23866: _SC_LEVEL3_CACHE_SIZE,
23866: #define _SC_LEVEL3_CACHE_SIZE _SC_LEVEL3_CACHE_SIZE
23866: _SC_LEVEL3_CACHE_ASSOC,
23866: #define _SC_LEVEL3_CACHE_ASSOC _SC_LEVEL3_CACHE_ASSOC
23866: _SC_LEVEL3_CACHE_LINESIZE,
23866: #define _SC_LEVEL3_CACHE_LINESIZE _SC_LEVEL3_CACHE_LINESIZE
23866: _SC_LEVEL4_CACHE_SIZE,
23866: #define _SC_LEVEL4_CACHE_SIZE _SC_LEVEL4_CACHE_SIZE
23866: _SC_LEVEL4_CACHE_ASSOC,
23866: #define _SC_LEVEL4_CACHE_ASSOC _SC_LEVEL4_CACHE_ASSOC
23866: _SC_LEVEL4_CACHE_LINESIZE,
23866: #define _SC_LEVEL4_CACHE_LINESIZE _SC_LEVEL4_CACHE_LINESIZE
23866:
23866:
23866: _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50,
23866: #define _SC_IPV6 _SC_IPV6
23866: _SC_RAW_SOCKETS,
23866: #define _SC_RAW_SOCKETS _SC_RAW_SOCKETS
23866:
23866: _SC_V7_ILP32_OFF32,
23866: #define _SC_V7_ILP32_OFF32 _SC_V7_ILP32_OFF32
23866: _SC_V7_ILP32_OFFBIG,
23866: #define _SC_V7_ILP32_OFFBIG _SC_V7_ILP32_OFFBIG
23866: _SC_V7_LP64_OFF64,
23866: #define _SC_V7_LP64_OFF64 _SC_V7_LP64_OFF64
23866: _SC_V7_LPBIG_OFFBIG,
23866: #define _SC_V7_LPBIG_OFFBIG _SC_V7_LPBIG_OFFBIG
23866:
23866: _SC_SS_REPL_MAX,
23866: #define _SC_SS_REPL_MAX _SC_SS_REPL_MAX
23866:
23866: _SC_TRACE_EVENT_NAME_MAX,
23866: #define _SC_TRACE_EVENT_NAME_MAX _SC_TRACE_EVENT_NAME_MAX
23866: _SC_TRACE_NAME_MAX,
23866: #define _SC_TRACE_NAME_MAX _SC_TRACE_NAME_MAX
23866: _SC_TRACE_SYS_MAX,
23866: #define _SC_TRACE_SYS_MAX _SC_TRACE_SYS_MAX
23866: _SC_TRACE_USER_EVENT_MAX,
23866: #define _SC_TRACE_USER_EVENT_MAX _SC_TRACE_USER_EVENT_MAX
23866:
23866: _SC_XOPEN_STREAMS,
23866: #define _SC_XOPEN_STREAMS _SC_XOPEN_STREAMS
23866:
23866: _SC_THREAD_ROBUST_PRIO_INHERIT,
23866: #define _SC_THREAD_ROBUST_PRIO_INHERIT _SC_THREAD_ROBUST_PRIO_INHERIT
23866: _SC_THREAD_ROBUST_PRIO_PROTECT
23866: #define _SC_THREAD_ROBUST_PRIO_PROTECT _SC_THREAD_ROBUST_PRIO_PROTECT
23866: };
23866:
23866:
23866: enum
23866: {
23866: _CS_PATH,
23866: #define _CS_PATH _CS_PATH
23866:
23866: _CS_V6_WIDTH_RESTRICTED_ENVS,
23866: #define _CS_V6_WIDTH_RESTRICTED_ENVS _CS_V6_WIDTH_RESTRICTED_ENVS
23866: #define _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS _CS_V6_WIDTH_RESTRICTED_ENVS
23866:
23866: _CS_GNU_LIBC_VERSION,
23866: #define _CS_GNU_LIBC_VERSION _CS_GNU_LIBC_VERSION
23866: _CS_GNU_LIBPTHREAD_VERSION,
23866: #define _CS_GNU_LIBPTHREAD_VERSION _CS_GNU_LIBPTHREAD_VERSION
23866:
23866: _CS_V5_WIDTH_RESTRICTED_ENVS,
23866: #define _CS_V5_WIDTH_RESTRICTED_ENVS _CS_V5_WIDTH_RESTRICTED_ENVS
23866: #define _CS_POSIX_V5_WIDTH_RESTRICTED_ENVS _CS_V5_WIDTH_RESTRICTED_ENVS
23866:
23866: _CS_V7_WIDTH_RESTRICTED_ENVS,
23866: #define _CS_V7_WIDTH_RESTRICTED_ENVS _CS_V7_WIDTH_RESTRICTED_ENVS
23866: #define _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS _CS_V7_WIDTH_RESTRICTED_ENVS
23866:
23866: _CS_LFS_CFLAGS = 1000,
23866: #define _CS_LFS_CFLAGS _CS_LFS_CFLAGS
23866: _CS_LFS_LDFLAGS,
23866: #define _CS_LFS_LDFLAGS _CS_LFS_LDFLAGS
23866: _CS_LFS_LIBS,
23866: #define _CS_LFS_LIBS _CS_LFS_LIBS
23866: _CS_LFS_LINTFLAGS,
23866: #define _CS_LFS_LINTFLAGS _CS_LFS_LINTFLAGS
23866: _CS_LFS64_CFLAGS,
23866: #define _CS_LFS64_CFLAGS _CS_LFS64_CFLAGS
23866: _CS_LFS64_LDFLAGS,
23866: #define _CS_LFS64_LDFLAGS _CS_LFS64_LDFLAGS
23866: _CS_LFS64_LIBS,
23866: #define _CS_LFS64_LIBS _CS_LFS64_LIBS
23866: _CS_LFS64_LINTFLAGS,
23866: #define _CS_LFS64_LINTFLAGS _CS_LFS64_LINTFLAGS
23866:
23866: _CS_XBS5_ILP32_OFF32_CFLAGS = 1100,
23866: #define _CS_XBS5_ILP32_OFF32_CFLAGS _CS_XBS5_ILP32_OFF32_CFLAGS
23866: _CS_XBS5_ILP32_OFF32_LDFLAGS,
23866: #define _CS_XBS5_ILP32_OFF32_LDFLAGS _CS_XBS5_ILP32_OFF32_LDFLAGS
23866: _CS_XBS5_ILP32_OFF32_LIBS,
23866: #define _CS_XBS5_ILP32_OFF32_LIBS _CS_XBS5_ILP32_OFF32_LIBS
23866: _CS_XBS5_ILP32_OFF32_LINTFLAGS,
23866: #define _CS_XBS5_ILP32_OFF32_LINTFLAGS _CS_XBS5_ILP32_OFF32_LINTFLAGS
23866: _CS_XBS5_ILP32_OFFBIG_CFLAGS,
23866: #define _CS_XBS5_ILP32_OFFBIG_CFLAGS _CS_XBS5_ILP32_OFFBIG_CFLAGS
23866: _CS_XBS5_ILP32_OFFBIG_LDFLAGS,
23866: #define _CS_XBS5_ILP32_OFFBIG_LDFLAGS _CS_XBS5_ILP32_OFFBIG_LDFLAGS
23866: _CS_XBS5_ILP32_OFFBIG_LIBS,
23866: #define _CS_XBS5_ILP32_OFFBIG_LIBS _CS_XBS5_ILP32_OFFBIG_LIBS
23866: _CS_XBS5_ILP32_OFFBIG_LINTFLAGS,
23866: #define _CS_XBS5_ILP32_OFFBIG_LINTFLAGS _CS_XBS5_ILP32_OFFBIG_LINTFLAGS
23866: _CS_XBS5_LP64_OFF64_CFLAGS,
23866: #define _CS_XBS5_LP64_OFF64_CFLAGS _CS_XBS5_LP64_OFF64_CFLAGS
23866: _CS_XBS5_LP64_OFF64_LDFLAGS,
23866: #define _CS_XBS5_LP64_OFF64_LDFLAGS _CS_XBS5_LP64_OFF64_LDFLAGS
23866: _CS_XBS5_LP64_OFF64_LIBS,
23866: #define _CS_XBS5_LP64_OFF64_LIBS _CS_XBS5_LP64_OFF64_LIBS
23866: _CS_XBS5_LP64_OFF64_LINTFLAGS,
23866: #define _CS_XBS5_LP64_OFF64_LINTFLAGS _CS_XBS5_LP64_OFF64_LINTFLAGS
23866: _CS_XBS5_LPBIG_OFFBIG_CFLAGS,
23866: #define _CS_XBS5_LPBIG_OFFBIG_CFLAGS _CS_XBS5_LPBIG_OFFBIG_CFLAGS
23866: _CS_XBS5_LPBIG_OFFBIG_LDFLAGS,
23866: #define _CS_XBS5_LPBIG_OFFBIG_LDFLAGS _CS_XBS5_LPBIG_OFFBIG_LDFLAGS
23866: _CS_XBS5_LPBIG_OFFBIG_LIBS,
23866: #define _CS_XBS5_LPBIG_OFFBIG_LIBS _CS_XBS5_LPBIG_OFFBIG_LIBS
23866: _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS,
23866: #define _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS
23866:
23866: _CS_POSIX_V6_ILP32_OFF32_CFLAGS,
23866: #define _CS_POSIX_V6_ILP32_OFF32_CFLAGS _CS_POSIX_V6_ILP32_OFF32_CFLAGS
23866: _CS_POSIX_V6_ILP32_OFF32_LDFLAGS,
23866: #define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS _CS_POSIX_V6_ILP32_OFF32_LDFLAGS
23866: _CS_POSIX_V6_ILP32_OFF32_LIBS,
23866: #define _CS_POSIX_V6_ILP32_OFF32_LIBS _CS_POSIX_V6_ILP32_OFF32_LIBS
23866: _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS,
23866: #define _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS
23866: _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS,
23866: #define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS
23866: _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS,
23866: #define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS
23866: _CS_POSIX_V6_ILP32_OFFBIG_LIBS,
23866: #define _CS_POSIX_V6_ILP32_OFFBIG_LIBS _CS_POSIX_V6_ILP32_OFFBIG_LIBS
23866: _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS,
23866: #define _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS
23866: _CS_POSIX_V6_LP64_OFF64_CFLAGS,
23866: #define _CS_POSIX_V6_LP64_OFF64_CFLAGS _CS_POSIX_V6_LP64_OFF64_CFLAGS
23866: _CS_POSIX_V6_LP64_OFF64_LDFLAGS,
23866: #define _CS_POSIX_V6_LP64_OFF64_LDFLAGS _CS_POSIX_V6_LP64_OFF64_LDFLAGS
23866: _CS_POSIX_V6_LP64_OFF64_LIBS,
23866: #define _CS_POSIX_V6_LP64_OFF64_LIBS _CS_POSIX_V6_LP64_OFF64_LIBS
23866: _CS_POSIX_V6_LP64_OFF64_LINTFLAGS,
23866: #define _CS_POSIX_V6_LP64_OFF64_LINTFLAGS _CS_POSIX_V6_LP64_OFF64_LINTFLAGS
23866: _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS,
23866: #define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS
23866: _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS,
23866: #define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS
23866: _CS_POSIX_V6_LPBIG_OFFBIG_LIBS,
23866: #define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS _CS_POSIX_V6_LPBIG_OFFBIG_LIBS
23866: _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS,
23866: #define _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS
23866:
23866: _CS_POSIX_V7_ILP32_OFF32_CFLAGS,
23866: #define _CS_POSIX_V7_ILP32_OFF32_CFLAGS _CS_POSIX_V7_ILP32_OFF32_CFLAGS
23866: _CS_POSIX_V7_ILP32_OFF32_LDFLAGS,
23866: #define _CS_POSIX_V7_ILP32_OFF32_LDFLAGS _CS_POSIX_V7_ILP32_OFF32_LDFLAGS
23866: _CS_POSIX_V7_ILP32_OFF32_LIBS,
23866: #define _CS_POSIX_V7_ILP32_OFF32_LIBS _CS_POSIX_V7_ILP32_OFF32_LIBS
23866: _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS,
23866: #define _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS
23866: _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS,
23866: #define _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS
23866: _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS,
23866: #define _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS
23866: _CS_POSIX_V7_ILP32_OFFBIG_LIBS,
23866: #define _CS_POSIX_V7_ILP32_OFFBIG_LIBS _CS_POSIX_V7_ILP32_OFFBIG_LIBS
23866: _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS,
23866: #define _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS
23866: _CS_POSIX_V7_LP64_OFF64_CFLAGS,
23866: #define _CS_POSIX_V7_LP64_OFF64_CFLAGS _CS_POSIX_V7_LP64_OFF64_CFLAGS
23866: _CS_POSIX_V7_LP64_OFF64_LDFLAGS,
23866: #define _CS_POSIX_V7_LP64_OFF64_LDFLAGS _CS_POSIX_V7_LP64_OFF64_LDFLAGS
23866: _CS_POSIX_V7_LP64_OFF64_LIBS,
23866: #define _CS_POSIX_V7_LP64_OFF64_LIBS _CS_POSIX_V7_LP64_OFF64_LIBS
23866: _CS_POSIX_V7_LP64_OFF64_LINTFLAGS,
23866: #define _CS_POSIX_V7_LP64_OFF64_LINTFLAGS _CS_POSIX_V7_LP64_OFF64_LINTFLAGS
23866: _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS,
23866: #define _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS
23866: _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS,
23866: #define _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS
23866: _CS_POSIX_V7_LPBIG_OFFBIG_LIBS,
23866: #define _CS_POSIX_V7_LPBIG_OFFBIG_LIBS _CS_POSIX_V7_LPBIG_OFFBIG_LIBS
23866: _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS,
23866: #define _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS
23866:
23866: _CS_V6_ENV,
23866: #define _CS_V6_ENV _CS_V6_ENV
23866: _CS_V7_ENV
23866: #define _CS_V7_ENV _CS_V7_ENV
23866: };
23866: # 610 "/usr/include/unistd.h" 2 3 4
23866:
23866:
23866: extern long int pathconf (const char *__path, int __name)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866: extern long int fpathconf (int __fd, int __name) throw ();
23866:
23866:
23866: extern long int sysconf (int __name) throw ();
23866:
23866:
23866:
23866: extern size_t confstr (int __name, char *__buf, size_t __len) throw ();
23866:
23866:
23866:
23866:
23866: extern __pid_t getpid (void) throw ();
23866:
23866:
23866: extern __pid_t getppid (void) throw ();
23866:
23866:
23866: extern __pid_t getpgrp (void) throw ();
23866:
23866:
23866: extern __pid_t __getpgid (__pid_t __pid) throw ();
23866:
23866: extern __pid_t getpgid (__pid_t __pid) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int setpgid (__pid_t __pid, __pid_t __pgid) throw ();
23866: # 660 "/usr/include/unistd.h" 3 4
23866: extern int setpgrp (void) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern __pid_t setsid (void) throw ();
23866:
23866:
23866:
23866: extern __pid_t getsid (__pid_t __pid) throw ();
23866:
23866:
23866:
23866: extern __uid_t getuid (void) throw ();
23866:
23866:
23866: extern __uid_t geteuid (void) throw ();
23866:
23866:
23866: extern __gid_t getgid (void) throw ();
23866:
23866:
23866: extern __gid_t getegid (void) throw ();
23866:
23866:
23866:
23866:
23866: extern int getgroups (int __size, __gid_t __list[]) throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866: extern int group_member (__gid_t __gid) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int setuid (__uid_t __uid) throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: extern int setreuid (__uid_t __ruid, __uid_t __euid) throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: extern int seteuid (__uid_t __uid) throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int setgid (__gid_t __gid) throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: extern int setregid (__gid_t __rgid, __gid_t __egid) throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: extern int setegid (__gid_t __gid) throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866: extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid)
23866: throw ();
23866:
23866:
23866:
23866: extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid)
23866: throw ();
23866:
23866:
23866:
23866: extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid)
23866: throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866: extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid)
23866: throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern __pid_t fork (void) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern __pid_t vfork (void) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern char *ttyname (int __fd) throw ();
23866:
23866:
23866:
23866: extern int ttyname_r (int __fd, char *__buf, size_t __buflen)
23866: throw () __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866: extern int isatty (int __fd) throw ();
23866:
23866:
23866:
23866:
23866: extern int ttyslot (void) throw ();
23866:
23866:
23866:
23866:
23866: extern int link (const char *__from, const char *__to)
23866: throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: extern int linkat (int __fromfd, const char *__from, int __tofd,
23866: const char *__to, int __flags)
23866: throw () __attribute__ ((__nonnull__ (2, 4))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: extern int symlink (const char *__from, const char *__to)
23866: throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: extern ssize_t readlink (const char *__restrict __path,
23866: char *__restrict __buf, size_t __len)
23866: throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: extern int symlinkat (const char *__from, int __tofd,
23866: const char *__to) throw () __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866: extern ssize_t readlinkat (int __fd, const char *__restrict __path,
23866: char *__restrict __buf, size_t __len)
23866: throw () __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866: extern int unlink (const char *__name) throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866: extern int unlinkat (int __fd, const char *__name, int __flag)
23866: throw () __attribute__ ((__nonnull__ (2)));
23866:
23866:
23866:
23866: extern int rmdir (const char *__path) throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866: extern __pid_t tcgetpgrp (int __fd) throw ();
23866:
23866:
23866: extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern char *getlogin (void);
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int getlogin_r (char *__name, size_t __name_len) __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866:
23866: extern int setlogin (const char *__name) throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/getopt_posix.h" 1 3 4
23866: # 21 "/usr/include/arm-linux-gnueabihf/bits/getopt_posix.h" 3 4
23866: #define _GETOPT_POSIX_H 1
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/getopt_core.h" 1 3 4
23866: # 21 "/usr/include/arm-linux-gnueabihf/bits/getopt_core.h" 3 4
23866: #define _GETOPT_CORE_H 1
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern "C" {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern char *optarg;
23866: # 50 "/usr/include/arm-linux-gnueabihf/bits/getopt_core.h" 3 4
23866: extern int optind;
23866:
23866:
23866:
23866:
23866: extern int opterr;
23866:
23866:
23866:
23866: extern int optopt;
23866: # 91 "/usr/include/arm-linux-gnueabihf/bits/getopt_core.h" 3 4
23866: extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
23866: throw () __attribute__ ((__nonnull__ (2, 3)));
23866:
23866: }
23866: # 28 "/usr/include/arm-linux-gnueabihf/bits/getopt_posix.h" 2 3 4
23866:
23866: extern "C" {
23866: # 49 "/usr/include/arm-linux-gnueabihf/bits/getopt_posix.h" 3 4
23866: }
23866: # 870 "/usr/include/unistd.h" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int gethostname (char *__name, size_t __len) throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int sethostname (const char *__name, size_t __len)
23866: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866: extern int sethostid (long int __id) throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866: extern int getdomainname (char *__name, size_t __len)
23866: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866: extern int setdomainname (const char *__name, size_t __len)
23866: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866: extern int vhangup (void) throw ();
23866:
23866:
23866: extern int revoke (const char *__file) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int profil (unsigned short int *__sample_buffer, size_t __size,
23866: size_t __offset, unsigned int __scale)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866:
23866:
23866: extern int acct (const char *__name) throw ();
23866:
23866:
23866:
23866: extern char *getusershell (void) throw ();
23866: extern void endusershell (void) throw ();
23866: extern void setusershell (void) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern int daemon (int __nochdir, int __noclose) throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int chroot (const char *__path) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866: extern char *getpass (const char *__prompt) __attribute__ ((__nonnull__ (1)));
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern int fsync (int __fd);
23866:
23866:
23866:
23866:
23866:
23866: extern int syncfs (int __fd) throw ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern long int gethostid (void);
23866:
23866:
23866: extern void sync (void) throw ();
23866:
23866:
23866:
23866:
23866:
23866: extern int getpagesize (void) throw () __attribute__ ((__const__));
23866:
23866:
23866:
23866:
23866: extern int getdtablesize (void) throw ();
23866: # 995 "/usr/include/unistd.h" 3 4
23866: extern int truncate (const char *__file, __off64_t __length) throw () __asm__ ("" "truncate64")
23866:
23866: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866: extern int truncate64 (const char *__file, __off64_t __length)
23866: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866: # 1017 "/usr/include/unistd.h" 3 4
23866: extern int ftruncate (int __fd, __off64_t __length) throw () __asm__ ("" "ftruncate64")
23866: __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866: extern int ftruncate64 (int __fd, __off64_t __length) throw () __attribute__ ((__warn_unused_result__));
23866: # 1035 "/usr/include/unistd.h" 3 4
23866: extern int brk (void *__addr) throw () __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866: extern void *sbrk (intptr_t __delta) throw ();
23866: # 1056 "/usr/include/unistd.h" 3 4
23866: extern long int syscall (long int __sysno, ...) throw ();
23866: # 1073 "/usr/include/unistd.h" 3 4
23866: #define F_ULOCK 0
23866: #define F_LOCK 1
23866: #define F_TLOCK 2
23866: #define F_TEST 3
23866:
23866:
23866:
23866:
23866:
23866: extern int lockf (int __fd, int __cmd, __off64_t __len) __asm__ ("" "lockf64")
23866: __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866:
23866: extern int lockf64 (int __fd, int __cmd, __off64_t __len) __attribute__ ((__warn_unused_result__));
23866: # 1099 "/usr/include/unistd.h" 3 4
23866: #define TEMP_FAILURE_RETRY(expression) (__extension__ ({ long int __result; do __result = (long int) (expression); while (__result == -1L && errno == EINTR); __result; }))
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: ssize_t copy_file_range (int __infd, __off64_t *__pinoff,
23866: int __outfd, __off64_t *__poutoff,
23866: size_t __length, unsigned int __flags);
23866:
23866:
23866:
23866:
23866:
23866: extern int fdatasync (int __fildes);
23866: # 1124 "/usr/include/unistd.h" 3 4
23866: extern char *crypt (const char *__key, const char *__salt)
23866: throw () __attribute__ ((__nonnull__ (1, 2)));
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: extern void swab (const void *__restrict __from, void *__restrict __to,
23866: ssize_t __n) throw () __attribute__ ((__nonnull__ (1, 2)));
23866: # 1161 "/usr/include/unistd.h" 3 4
23866: int getentropy (void *__buffer, size_t __length) __attribute__ ((__warn_unused_result__));
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/unistd.h" 1 3 4
23866: # 23 "/usr/include/arm-linux-gnueabihf/bits/unistd.h" 3 4
23866: extern ssize_t __read_chk (int __fd, void *__buf, size_t __nbytes,
23866: size_t __buflen) __attribute__ ((__warn_unused_result__));
23866: extern ssize_t __read_alias (int __fd, void *__buf, size_t __nbytes) __asm__ ("" "read")
23866: __attribute__ ((__warn_unused_result__));
23866: extern ssize_t __read_chk_warn (int __fd, void *__buf, size_t __nbytes, size_t __buflen) __asm__ ("" "__read_chk")
23866:
23866:
23866: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("read called with bigger length than size of " "the destination buffer")))
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t
23866: read (int __fd, void *__buf, size_t __nbytes)
23866: {
23866: if (__builtin_object_size (__buf, 0) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__nbytes))
23866: return __read_chk (__fd, __buf, __nbytes, __builtin_object_size (__buf, 0));
23866:
23866: if (__nbytes > __builtin_object_size (__buf, 0))
23866: return __read_chk_warn (__fd, __buf, __nbytes, __builtin_object_size (__buf, 0));
23866: }
23866: return __read_alias (__fd, __buf, __nbytes);
23866: }
23866:
23866:
23866: extern ssize_t __pread_chk (int __fd, void *__buf, size_t __nbytes,
23866: __off_t __offset, size_t __bufsize) __attribute__ ((__warn_unused_result__));
23866: extern ssize_t __pread64_chk (int __fd, void *__buf, size_t __nbytes,
23866: __off64_t __offset, size_t __bufsize) __attribute__ ((__warn_unused_result__));
23866: extern ssize_t __pread_alias (int __fd, void *__buf, size_t __nbytes, __off_t __offset) __asm__ ("" "pread")
23866:
23866: __attribute__ ((__warn_unused_result__));
23866: extern ssize_t __pread64_alias (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pread64")
23866:
23866: __attribute__ ((__warn_unused_result__));
23866: extern ssize_t __pread_chk_warn (int __fd, void *__buf, size_t __nbytes, __off_t __offset, size_t __bufsize) __asm__ ("" "__pread_chk")
23866:
23866:
23866: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread called with bigger length than size of " "the destination buffer")))
23866: ;
23866: extern ssize_t __pread64_chk_warn (int __fd, void *__buf, size_t __nbytes, __off64_t __offset, size_t __bufsize) __asm__ ("" "__pread64_chk")
23866:
23866:
23866:
23866: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread64 called with bigger length than size of " "the destination buffer")))
23866: ;
23866: # 86 "/usr/include/arm-linux-gnueabihf/bits/unistd.h" 3 4
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t
23866: pread (int __fd, void *__buf, size_t __nbytes, __off64_t __offset)
23866: {
23866: if (__builtin_object_size (__buf, 0) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__nbytes))
23866: return __pread64_chk (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0));
23866:
23866: if ( __nbytes > __builtin_object_size (__buf, 0))
23866: return __pread64_chk_warn (__fd, __buf, __nbytes, __offset,
23866: __builtin_object_size (__buf, 0));
23866: }
23866:
23866: return __pread64_alias (__fd, __buf, __nbytes, __offset);
23866: }
23866:
23866:
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t
23866: pread64 (int __fd, void *__buf, size_t __nbytes, __off64_t __offset)
23866: {
23866: if (__builtin_object_size (__buf, 0) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__nbytes))
23866: return __pread64_chk (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0));
23866:
23866: if ( __nbytes > __builtin_object_size (__buf, 0))
23866: return __pread64_chk_warn (__fd, __buf, __nbytes, __offset,
23866: __builtin_object_size (__buf, 0));
23866: }
23866:
23866: return __pread64_alias (__fd, __buf, __nbytes, __offset);
23866: }
23866:
23866:
23866:
23866:
23866: extern ssize_t __readlink_chk (const char *__restrict __path,
23866: char *__restrict __buf, size_t __len,
23866: size_t __buflen)
23866: throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__));
23866: extern ssize_t __readlink_alias (const char *__restrict __path, char *__restrict __buf, size_t __len) throw () __asm__ ("" "readlink")
23866:
23866:
23866: __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__));
23866: extern ssize_t __readlink_chk_warn (const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) throw () __asm__ ("" "__readlink_chk")
23866:
23866:
23866:
23866: __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlink called with bigger length " "than size of destination buffer")))
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) ssize_t
23866: __attribute__ ((__leaf__)) readlink (const char *__restrict __path, char *__restrict __buf, size_t __len) throw ()
23866:
23866: {
23866: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__len))
23866: return __readlink_chk (__path, __buf, __len, __builtin_object_size (__buf, 2 > 1));
23866:
23866: if ( __len > __builtin_object_size (__buf, 2 > 1))
23866: return __readlink_chk_warn (__path, __buf, __len, __builtin_object_size (__buf, 2 > 1));
23866: }
23866: return __readlink_alias (__path, __buf, __len);
23866: }
23866:
23866:
23866:
23866: extern ssize_t __readlinkat_chk (int __fd, const char *__restrict __path,
23866: char *__restrict __buf, size_t __len,
23866: size_t __buflen)
23866: throw () __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__));
23866: extern ssize_t __readlinkat_alias (int __fd, const char *__restrict __path, char *__restrict __buf, size_t __len) throw () __asm__ ("" "readlinkat")
23866:
23866:
23866:
23866: __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__));
23866: extern ssize_t __readlinkat_chk_warn (int __fd, const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) throw () __asm__ ("" "__readlinkat_chk")
23866:
23866:
23866:
23866: __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlinkat called with bigger " "length than size of destination " "buffer")))
23866:
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) ssize_t
23866: __attribute__ ((__leaf__)) readlinkat (int __fd, const char *__restrict __path, char *__restrict __buf, size_t __len) throw ()
23866:
23866: {
23866: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__len))
23866: return __readlinkat_chk (__fd, __path, __buf, __len, __builtin_object_size (__buf, 2 > 1));
23866:
23866: if (__len > __builtin_object_size (__buf, 2 > 1))
23866: return __readlinkat_chk_warn (__fd, __path, __buf, __len,
23866: __builtin_object_size (__buf, 2 > 1));
23866: }
23866: return __readlinkat_alias (__fd, __path, __buf, __len);
23866: }
23866:
23866:
23866: extern char *__getcwd_chk (char *__buf, size_t __size, size_t __buflen)
23866: throw () __attribute__ ((__warn_unused_result__));
23866: extern char *__getcwd_alias (char *__buf, size_t __size) throw () __asm__ ("" "getcwd")
23866: __attribute__ ((__warn_unused_result__));
23866: extern char *__getcwd_chk_warn (char *__buf, size_t __size, size_t __buflen) throw () __asm__ ("" "__getcwd_chk")
23866:
23866:
23866: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getcwd caller with bigger length than size of " "destination buffer")))
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char *
23866: __attribute__ ((__leaf__)) getcwd (char *__buf, size_t __size) throw ()
23866: {
23866: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__size))
23866: return __getcwd_chk (__buf, __size, __builtin_object_size (__buf, 2 > 1));
23866:
23866: if (__size > __builtin_object_size (__buf, 2 > 1))
23866: return __getcwd_chk_warn (__buf, __size, __builtin_object_size (__buf, 2 > 1));
23866: }
23866: return __getcwd_alias (__buf, __size);
23866: }
23866:
23866:
23866: extern char *__getwd_chk (char *__buf, size_t buflen)
23866: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866: extern char *__getwd_warn (char *__buf) throw () __asm__ ("" "getwd")
23866: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("please use getcwd instead, as getwd " "doesn't specify buffer size")))
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__)) char *
23866: __attribute__ ((__leaf__)) getwd (char *__buf) throw ()
23866: {
23866: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
23866: return __getwd_chk (__buf, __builtin_object_size (__buf, 2 > 1));
23866: return __getwd_warn (__buf);
23866: }
23866:
23866:
23866: extern size_t __confstr_chk (int __name, char *__buf, size_t __len,
23866: size_t __buflen) throw ();
23866: extern size_t __confstr_alias (int __name, char *__buf, size_t __len) throw () __asm__ ("" "confstr")
23866: ;
23866: extern size_t __confstr_chk_warn (int __name, char *__buf, size_t __len, size_t __buflen) throw () __asm__ ("" "__confstr_chk")
23866:
23866:
23866: __attribute__((__warning__ ("confstr called with bigger length than size of destination " "buffer")))
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t
23866: __attribute__ ((__leaf__)) confstr (int __name, char *__buf, size_t __len) throw ()
23866: {
23866: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__len))
23866: return __confstr_chk (__name, __buf, __len, __builtin_object_size (__buf, 2 > 1));
23866:
23866: if (__builtin_object_size (__buf, 2 > 1) < __len)
23866: return __confstr_chk_warn (__name, __buf, __len, __builtin_object_size (__buf, 2 > 1));
23866: }
23866: return __confstr_alias (__name, __buf, __len);
23866: }
23866:
23866:
23866: extern int __getgroups_chk (int __size, __gid_t __list[], size_t __listlen)
23866: throw () __attribute__ ((__warn_unused_result__));
23866: extern int __getgroups_alias (int __size, __gid_t __list[]) throw () __asm__ ("" "getgroups")
23866: __attribute__ ((__warn_unused_result__));
23866: extern int __getgroups_chk_warn (int __size, __gid_t __list[], size_t __listlen) throw () __asm__ ("" "__getgroups_chk")
23866:
23866:
23866: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getgroups called with bigger group count than what " "can fit into destination buffer")))
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int
23866: __attribute__ ((__leaf__)) getgroups (int __size, __gid_t __list[]) throw ()
23866: {
23866: if (__builtin_object_size (__list, 2 > 1) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__size) || __size < 0)
23866: return __getgroups_chk (__size, __list, __builtin_object_size (__list, 2 > 1));
23866:
23866: if (__size * sizeof (__gid_t) > __builtin_object_size (__list, 2 > 1))
23866: return __getgroups_chk_warn (__size, __list, __builtin_object_size (__list, 2 > 1));
23866: }
23866: return __getgroups_alias (__size, __list);
23866: }
23866:
23866:
23866: extern int __ttyname_r_chk (int __fd, char *__buf, size_t __buflen,
23866: size_t __nreal) throw () __attribute__ ((__nonnull__ (2)));
23866: extern int __ttyname_r_alias (int __fd, char *__buf, size_t __buflen) throw () __asm__ ("" "ttyname_r")
23866:
23866: __attribute__ ((__nonnull__ (2)));
23866: extern int __ttyname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) throw () __asm__ ("" "__ttyname_r_chk")
23866:
23866:
23866: __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ttyname_r called with bigger buflen than " "size of destination buffer")))
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int
23866: __attribute__ ((__leaf__)) ttyname_r (int __fd, char *__buf, size_t __buflen) throw ()
23866: {
23866: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__buflen))
23866: return __ttyname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1));
23866:
23866: if (__buflen > __builtin_object_size (__buf, 2 > 1))
23866: return __ttyname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1));
23866: }
23866: return __ttyname_r_alias (__fd, __buf, __buflen);
23866: }
23866:
23866:
23866:
23866: extern int __getlogin_r_chk (char *__buf, size_t __buflen, size_t __nreal)
23866: __attribute__ ((__nonnull__ (1)));
23866: extern int __getlogin_r_alias (char *__buf, size_t __buflen) __asm__ ("" "getlogin_r")
23866: __attribute__ ((__nonnull__ (1)));
23866: extern int __getlogin_r_chk_warn (char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__getlogin_r_chk")
23866:
23866:
23866: __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("getlogin_r called with bigger buflen than " "size of destination buffer")))
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int
23866: getlogin_r (char *__buf, size_t __buflen)
23866: {
23866: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__buflen))
23866: return __getlogin_r_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
23866:
23866: if (__buflen > __builtin_object_size (__buf, 2 > 1))
23866: return __getlogin_r_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
23866: }
23866: return __getlogin_r_alias (__buf, __buflen);
23866: }
23866:
23866:
23866:
23866:
23866: extern int __gethostname_chk (char *__buf, size_t __buflen, size_t __nreal)
23866: throw () __attribute__ ((__nonnull__ (1)));
23866: extern int __gethostname_alias (char *__buf, size_t __buflen) throw () __asm__ ("" "gethostname")
23866: __attribute__ ((__nonnull__ (1)));
23866: extern int __gethostname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) throw () __asm__ ("" "__gethostname_chk")
23866:
23866:
23866: __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("gethostname called with bigger buflen than " "size of destination buffer")))
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int
23866: __attribute__ ((__leaf__)) gethostname (char *__buf, size_t __buflen) throw ()
23866: {
23866: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__buflen))
23866: return __gethostname_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
23866:
23866: if (__buflen > __builtin_object_size (__buf, 2 > 1))
23866: return __gethostname_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
23866: }
23866: return __gethostname_alias (__buf, __buflen);
23866: }
23866:
23866:
23866:
23866:
23866: extern int __getdomainname_chk (char *__buf, size_t __buflen, size_t __nreal)
23866: throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866: extern int __getdomainname_alias (char *__buf, size_t __buflen) throw () __asm__ ("" "getdomainname")
23866:
23866: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
23866: extern int __getdomainname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) throw () __asm__ ("" "__getdomainname_chk")
23866:
23866:
23866: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getdomainname called with bigger " "buflen than size of destination " "buffer")))
23866:
23866: ;
23866:
23866: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int
23866: __attribute__ ((__leaf__)) getdomainname (char *__buf, size_t __buflen) throw ()
23866: {
23866: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
23866: {
23866: if (!__builtin_constant_p (__buflen))
23866: return __getdomainname_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
23866:
23866: if (__buflen > __builtin_object_size (__buf, 2 > 1))
23866: return __getdomainname_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
23866: }
23866: return __getdomainname_alias (__buf, __buflen);
23866: }
23866: # 1167 "/usr/include/unistd.h" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/unistd_ext.h" 1 3 4
23866: # 34 "/usr/include/arm-linux-gnueabihf/bits/unistd_ext.h" 3 4
23866: extern __pid_t gettid (void) throw ();
23866: # 1171 "/usr/include/unistd.h" 2 3 4
23866:
23866: }
23866: # 79 "/usr/include/boost/config/stdlib/libstdcpp3.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: #define BOOST_STD_EXTENSION_NAMESPACE __gnu_cxx
23866: #define BOOST_HAS_SLIST
23866: #define BOOST_HAS_HASH
23866: #define BOOST_SLIST_HEADER <ext/slist>
23866:
23866:
23866:
23866:
23866: #define BOOST_HASH_SET_HEADER <backward/hash_set>
23866: #define BOOST_HASH_MAP_HEADER <backward/hash_map>
23866: # 101 "/usr/include/boost/config/stdlib/libstdcpp3.hpp" 3 4
23866: #define BOOST_LIBSTDCXX11
23866: # 205 "/usr/include/boost/config/stdlib/libstdcpp3.hpp" 3 4
23866: #define BOOST_LIBSTDCXX_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
23866: # 242 "/usr/include/boost/config/stdlib/libstdcpp3.hpp" 3 4
23866: #define BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG
23866: #define BOOST_HAS_TR1_COMPLEX_OVERLOADS
23866: # 49 "/usr/include/boost/config.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/config/detail/select_platform_config.hpp" 1 3 4
23866: # 18 "/usr/include/boost/config/detail/select_platform_config.hpp" 3 4
23866: #define BOOST_PLATFORM_CONFIG "boost/config/platform/linux.hpp"
23866: # 54 "/usr/include/boost/config.hpp" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/config/platform/linux.hpp" 1 3 4
23866: # 11 "/usr/include/boost/config/platform/linux.hpp" 3 4
23866: #define BOOST_PLATFORM "linux"
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/cstdlib" 1 3 4
23866: # 39 "/usr/include/c++/10/cstdlib" 3 4
23866:
23866: # 40 "/usr/include/c++/10/cstdlib" 3
23866: # 16 "/usr/include/boost/config/platform/linux.hpp" 2 3 4
23866: # 30 "/usr/include/boost/config/platform/linux.hpp" 3 4
23866: #define BOOST_HAS_STDINT_H
23866: # 55 "/usr/include/boost/config/platform/linux.hpp" 3 4
23866: #define BOOST_HAS_GETTIMEOFDAY
23866:
23866:
23866:
23866: #define BOOST_HAS_NANOSLEEP
23866: # 74 "/usr/include/boost/config/platform/linux.hpp" 3 4
23866: #define BOOST_HAS_UNISTD_H
23866: # 1 "/usr/include/boost/config/detail/posix_features.hpp" 1 3 4
23866: # 22 "/usr/include/boost/config/detail/posix_features.hpp" 3 4
23866: #define BOOST_HAS_NL_TYPES_H
23866:
23866:
23866:
23866:
23866: #define BOOST_HAS_STDINT_H
23866:
23866:
23866:
23866:
23866: #define BOOST_HAS_DIRENT_H
23866:
23866:
23866:
23866:
23866: #define BOOST_HAS_SIGACTION
23866: # 46 "/usr/include/boost/config/detail/posix_features.hpp" 3 4
23866: #define BOOST_HAS_PTHREADS
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_HAS_NANOSLEEP
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_HAS_CLOCK_GETTIME
23866: # 70 "/usr/include/boost/config/detail/posix_features.hpp" 3 4
23866: #define BOOST_HAS_SCHED_YIELD
23866: # 79 "/usr/include/boost/config/detail/posix_features.hpp" 3 4
23866: #define BOOST_HAS_GETTIMEOFDAY
23866:
23866: #define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
23866:
23866:
23866: #define BOOST_HAS_LOG1P
23866:
23866:
23866: #define BOOST_HAS_EXPM1
23866: # 76 "/usr/include/boost/config/platform/linux.hpp" 2 3 4
23866:
23866: #define BOOST_HAS_PTHREAD_YIELD
23866: # 58 "/usr/include/boost/config.hpp" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/config/detail/suffix.hpp" 1 3 4
23866: # 27 "/usr/include/boost/config/detail/suffix.hpp" 3 4
23866: #define BOOST_CONFIG_SUFFIX_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 35 "/usr/include/boost/config/detail/suffix.hpp" 3
23866: # 112 "/usr/include/boost/config/detail/suffix.hpp" 3
23866: #define BOOST_NO_MS_INT64_NUMERIC_LIMITS
23866: # 121 "/usr/include/boost/config/detail/suffix.hpp" 3
23866: #define BOOST_MSVC6_MEMBER_TEMPLATES
23866: # 195 "/usr/include/boost/config/detail/suffix.hpp" 3
23866: #define BOOST_HAS_PARTIAL_STD_ALLOCATOR
23866: # 358 "/usr/include/boost/config/detail/suffix.hpp" 3
23866: #define BOOST_PREVENT_MACRO_SUBSTITUTION
23866:
23866:
23866: #define BOOST_USING_STD_MIN() using std::min
23866:
23866:
23866:
23866: #define BOOST_USING_STD_MAX() using std::max
23866: # 394 "/usr/include/boost/config/detail/suffix.hpp" 3
23866: #define BOOST_STATIC_CONSTANT(type,assignment) static const type assignment
23866: # 422 "/usr/include/boost/config/detail/suffix.hpp" 3
23866: #define BOOST_USE_FACET(Type,loc) std::use_facet< Type >(loc)
23866: #define BOOST_HAS_FACET(Type,loc) std::has_facet< Type >(loc)
23866: # 437 "/usr/include/boost/config/detail/suffix.hpp" 3
23866: #define BOOST_NESTED_TEMPLATE template
23866: # 467 "/usr/include/boost/config/detail/suffix.hpp" 3
23866: #define BOOST_DEDUCED_TYPENAME typename
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_CTOR_TYPENAME typename
23866: # 484 "/usr/include/boost/config/detail/suffix.hpp" 3
23866: namespace boost{
23866:
23866: __extension__ typedef long long long_long_type;
23866: __extension__ typedef unsigned long long ulong_long_type;
23866:
23866:
23866:
23866:
23866: }
23866: # 521 "/usr/include/boost/config/detail/suffix.hpp" 3
23866: #define BOOST_EXPLICIT_TEMPLATE_TYPE(t)
23866: #define BOOST_EXPLICIT_TEMPLATE_TYPE_SPEC(t)
23866: #define BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t,v)
23866: #define BOOST_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t,v)
23866:
23866: #define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(t)
23866: #define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC(t)
23866: #define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t,v)
23866: #define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t,v)
23866: # 543 "/usr/include/boost/config/detail/suffix.hpp" 3
23866: # 1 "/usr/include/boost/config/helper_macros.hpp" 1 3 4
23866:
23866: #define BOOST_CONFIG_HELPER_MACROS_HPP_INCLUDED
23866: # 22 "/usr/include/boost/config/helper_macros.hpp" 3 4
23866: #define BOOST_STRINGIZE(X) BOOST_DO_STRINGIZE(X)
23866: #define BOOST_DO_STRINGIZE(X) #X
23866: # 33 "/usr/include/boost/config/helper_macros.hpp" 3 4
23866: #define BOOST_JOIN(X,Y) BOOST_DO_JOIN(X, Y)
23866: #define BOOST_DO_JOIN(X,Y) BOOST_DO_JOIN2(X,Y)
23866: #define BOOST_DO_JOIN2(X,Y) X ##Y
23866: # 544 "/usr/include/boost/config/detail/suffix.hpp" 2 3
23866: # 568 "/usr/include/boost/config/detail/suffix.hpp" 3
23866: #define BOOST_GPU_ENABLED
23866: # 581 "/usr/include/boost/config/detail/suffix.hpp" 3
23866: #define BOOST_RESTRICT __restrict__
23866: # 605 "/usr/include/boost/config/detail/suffix.hpp" 3
23866: #define BOOST_FORCEINLINE inline __attribute__ ((__always_inline__))
23866: # 623 "/usr/include/boost/config/detail/suffix.hpp" 3
23866: #define BOOST_NOINLINE __attribute__ ((__noinline__))
23866: # 638 "/usr/include/boost/config/detail/suffix.hpp" 3
23866: #define BOOST_NORETURN __attribute__ ((__noreturn__))
23866: # 671 "/usr/include/boost/config/detail/suffix.hpp" 3
23866: #define BOOST_OVERRIDE override
23866: # 680 "/usr/include/boost/config/detail/suffix.hpp" 3
23866: #define BOOST_ALIGNMENT(x) alignas(x)
23866: # 721 "/usr/include/boost/config/detail/suffix.hpp" 3
23866: #define BOOST_DEFAULTED_FUNCTION(fun,body) fun = default;
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_DELETED_FUNCTION(fun) fun = delete;
23866: # 956 "/usr/include/boost/config/detail/suffix.hpp" 3
23866: #define BOOST_FINAL final
23866: # 971 "/usr/include/boost/config/detail/suffix.hpp" 3
23866: #define BOOST_NOEXCEPT noexcept
23866: #define BOOST_NOEXCEPT_OR_NOTHROW noexcept
23866: #define BOOST_NOEXCEPT_IF(Predicate) noexcept((Predicate))
23866: #define BOOST_NOEXCEPT_EXPR(Expression) noexcept((Expression))
23866: # 994 "/usr/include/boost/config/detail/suffix.hpp" 3
23866: #define BOOST_CONSTEXPR constexpr
23866: #define BOOST_CONSTEXPR_OR_CONST constexpr
23866:
23866:
23866:
23866:
23866: #define BOOST_CXX14_CONSTEXPR constexpr
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_INLINE_VARIABLE inline
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_IF_CONSTEXPR if constexpr
23866:
23866:
23866:
23866:
23866: #define BOOST_INLINE_CONSTEXPR BOOST_INLINE_VARIABLE BOOST_CONSTEXPR_OR_CONST
23866: # 1041 "/usr/include/boost/config/detail/suffix.hpp" 3
23866: #define BOOST_ATTRIBUTE_NODISCARD [[nodiscard]]
23866:
23866:
23866: #define BOOST_ATTRIBUTE_NO_UNIQUE_ADDRESS [[no_unique_address]]
23866: # 1054 "/usr/include/boost/config/detail/suffix.hpp" 3
23866: #define BOOST_STATIC_CONSTEXPR static BOOST_CONSTEXPR_OR_CONST
23866: # 62 "/usr/include/boost/config.hpp" 2 3 4
23866:
23866:
23866:
23866: # 19 "/usr/include/boost/algorithm/string/std_containers_traits.hpp" 2 3 4
23866: # 1 "/usr/include/boost/algorithm/string/std/string_traits.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/std/string_traits.hpp" 3 4
23866: #define BOOST_STRING_STD_STRING_TRAITS_HPP
23866:
23866: # 1 "/usr/include/boost/algorithm/string/yes_no_type.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/yes_no_type.hpp" 3 4
23866: #define BOOST_STRING_YES_NO_TYPE_DETAIL_HPP
23866:
23866: namespace boost {
23866: namespace algorithm {
23866:
23866:
23866:
23866:
23866:
23866: template<int I> struct size_descriptor
23866: {
23866: typedef char (& type)[I];
23866: };
23866:
23866: typedef size_descriptor<1>::type yes_type;
23866: typedef size_descriptor<2>::type no_type;
23866:
23866: }
23866: }
23866: # 15 "/usr/include/boost/algorithm/string/std/string_traits.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/algorithm/string/sequence_traits.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/sequence_traits.hpp" 3 4
23866: #define BOOST_STRING_SEQUENCE_TRAITS_HPP
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/bool.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_BOOL_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/bool.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/bool_fwd.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_BOOL_FWD_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/bool_fwd.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/adl_barrier.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_ADL_BARRIER_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/aux_/adl_barrier.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/config/adl.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CONFIG_ADL_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/aux_/config/adl.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/config/msvc.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CONFIG_MSVC_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/aux_/config/adl.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/config/intel.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CONFIG_INTEL_HPP_INCLUDED
23866: # 19 "/usr/include/boost/mpl/aux_/config/adl.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/config/gcc.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CONFIG_GCC_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/aux_/config/gcc.hpp" 3 4
23866: #define BOOST_MPL_CFG_GCC ((__GNUC__ << 8) | __GNUC_MINOR__)
23866: # 20 "/usr/include/boost/mpl/aux_/config/adl.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/config/workaround.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CONFIG_WORKAROUND_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/aux_/config/workaround.hpp" 3 4
23866: # 1 "/usr/include/boost/detail/workaround.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866: #define WORKAROUND_DWA2002126_HPP
23866:
23866: # 1 "/usr/include/boost/config/workaround.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_CONFIG_WORKAROUND_HPP
23866: # 44 "/usr/include/boost/config/workaround.hpp" 3 4
23866: #define __BORLANDC___WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define __CODEGEARC___WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define BOOST_BORLANDC_WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define BOOST_CODEGEARC_WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define BOOST_EMBTC_WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define _MSC_VER_WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define _MSC_FULL_VER_WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define BOOST_MSVC_WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define BOOST_MSVC_FULL_VER_WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define __GNUC___WORKAROUND_GUARD 0
23866:
23866:
23866:
23866:
23866: #define __GNUC_MINOR___WORKAROUND_GUARD 0
23866:
23866:
23866:
23866:
23866: #define __GNUC_PATCHLEVEL___WORKAROUND_GUARD 0
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_GCC_WORKAROUND_GUARD 0
23866: #define BOOST_GCC_VERSION_WORKAROUND_GUARD 0
23866:
23866:
23866: #define BOOST_XLCPP_ZOS_WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define __IBMCPP___WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define __SUNPRO_CC_WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define __DECCXX_VER_WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define __MWERKS___WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define __EDG___WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define __EDG_VERSION___WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define __HP_aCC_WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define __hpxstd98_WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define _CRAYC_WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define __DMC___WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define MPW_CPLUS_WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define __COMO___WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define __COMO_VERSION___WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define __INTEL_COMPILER_WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define __ICL_WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define _COMPILER_VERSION_WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866:
23866: #define _RWSTD_VER_WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define BOOST_RWSTD_VER_WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define __GLIBCPP___WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC_WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define __SGI_STL_PORT_WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define _STLPORT_VERSION_WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define __LIBCOMO_VERSION___WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define _CPPLIB_VER_WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_INTEL_CXX_VERSION_WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define BOOST_INTEL_WIN_WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define BOOST_DINKUMWARE_STDLIB_WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define BOOST_INTEL_WORKAROUND_GUARD 1
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_CFG_GCC_WORKAROUND_GUARD 0
23866:
23866: #define BOOST_WORKAROUND(symbol,test) ((symbol ## _WORKAROUND_GUARD + 0 == 0) && (symbol != 0) && (1 % (( (symbol test) ) + 1)))
23866: # 285 "/usr/include/boost/config/workaround.hpp" 3 4
23866: #define BOOST_TESTED_AT(value) != ((value)-(value))
23866: # 9 "/usr/include/boost/detail/workaround.hpp" 2 3 4
23866: # 18 "/usr/include/boost/mpl/aux_/config/workaround.hpp" 2 3 4
23866: # 21 "/usr/include/boost/mpl/aux_/config/adl.hpp" 2 3 4
23866: # 18 "/usr/include/boost/mpl/aux_/adl_barrier.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE mpl_
23866: #define BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN namespace mpl_ {
23866: #define BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE }
23866: #define BOOST_MPL_AUX_ADL_BARRIER_DECL(type) namespace boost { namespace mpl { using ::BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::type; } }
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace mpl_ { namespace aux {} }
23866: namespace boost { namespace mpl { using namespace mpl_;
23866: namespace aux { using namespace mpl_::aux; }
23866: }}
23866: # 18 "/usr/include/boost/mpl/bool_fwd.hpp" 2 3 4
23866:
23866: namespace mpl_ {
23866:
23866: template< bool C_ > struct bool_;
23866:
23866:
23866: typedef bool_<true> true_;
23866: typedef bool_<false> false_;
23866:
23866: }
23866:
23866: namespace boost { namespace mpl { using ::mpl_::bool_; } }
23866: namespace boost { namespace mpl { using ::mpl_::true_; } }
23866: namespace boost { namespace mpl { using ::mpl_::false_; } }
23866: # 18 "/usr/include/boost/mpl/bool.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/integral_c_tag.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_INTEGRAL_C_TAG_HPP_INCLUDED
23866: # 19 "/usr/include/boost/mpl/integral_c_tag.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/config/static_constant.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CONFIG_STATIC_CONSTANT_HPP_INCLUDED
23866: # 20 "/usr/include/boost/mpl/integral_c_tag.hpp" 2 3 4
23866:
23866: namespace mpl_ {
23866: struct integral_c_tag { static const int value = 0; };
23866: }
23866: namespace boost { namespace mpl { using ::mpl_::integral_c_tag; } }
23866: # 19 "/usr/include/boost/mpl/bool.hpp" 2 3 4
23866:
23866:
23866: namespace mpl_ {
23866:
23866: template< bool C_ > struct bool_
23866: {
23866: static const bool value = C_;
23866: typedef integral_c_tag tag;
23866: typedef bool_ type;
23866: typedef bool value_type;
23866: constexpr operator bool() const { return this->value; }
23866: };
23866:
23866:
23866: template< bool C_ >
23866: bool const bool_<C_>::value;
23866:
23866:
23866: }
23866: # 16 "/usr/include/boost/algorithm/string/sequence_traits.hpp" 2 3 4
23866: # 34 "/usr/include/boost/algorithm/string/sequence_traits.hpp" 3 4
23866: namespace boost {
23866: namespace algorithm {
23866: # 44 "/usr/include/boost/algorithm/string/sequence_traits.hpp" 3 4
23866: template< typename T >
23866: class has_native_replace
23866: {
23866:
23866: public:
23866:
23866:
23866:
23866: static const bool value=false;
23866:
23866:
23866:
23866: typedef mpl::bool_<has_native_replace<T>::value> type;
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template< typename T >
23866: class has_stable_iterators
23866: {
23866: public:
23866:
23866:
23866:
23866: static const bool value=false;
23866:
23866:
23866: typedef mpl::bool_<has_stable_iterators<T>::value> type;
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template< typename T >
23866: class has_const_time_insert
23866: {
23866: public:
23866:
23866:
23866:
23866: static const bool value=false;
23866:
23866:
23866: typedef mpl::bool_<has_const_time_insert<T>::value> type;
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template< typename T >
23866: class has_const_time_erase
23866: {
23866: public:
23866:
23866:
23866:
23866: static const bool value=false;
23866:
23866:
23866: typedef mpl::bool_<has_const_time_erase<T>::value> type;
23866: };
23866:
23866: }
23866: }
23866: # 17 "/usr/include/boost/algorithm/string/std/string_traits.hpp" 2 3 4
23866:
23866: namespace boost {
23866: namespace algorithm {
23866:
23866:
23866:
23866:
23866:
23866: template<typename T, typename TraitsT, typename AllocT>
23866: class has_native_replace< std::basic_string<T, TraitsT, AllocT> >
23866: {
23866: public:
23866:
23866:
23866:
23866: static const bool value=true;
23866:
23866:
23866: typedef mpl::bool_<has_native_replace<T>::value> type;
23866: };
23866:
23866:
23866:
23866: }
23866: }
23866: # 20 "/usr/include/boost/algorithm/string/std_containers_traits.hpp" 2 3 4
23866: # 1 "/usr/include/boost/algorithm/string/std/list_traits.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/std/list_traits.hpp" 3 4
23866: #define BOOST_STRING_STD_LIST_TRAITS_HPP
23866:
23866:
23866: # 1 "/usr/include/c++/10/list" 1 3 4
23866: # 56 "/usr/include/c++/10/list" 3 4
23866: #define _GLIBCXX_LIST 1
23866:
23866:
23866: # 59 "/usr/include/c++/10/list" 3
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/stl_list.h" 1 3
23866: # 57 "/usr/include/c++/10/bits/stl_list.h" 3
23866: #define _STL_LIST_H 1
23866: # 67 "/usr/include/c++/10/bits/stl_list.h" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: namespace __detail
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: struct _List_node_base
23866: {
23866: _List_node_base* _M_next;
23866: _List_node_base* _M_prev;
23866:
23866: static void
23866: swap(_List_node_base& __x, _List_node_base& __y) noexcept;
23866:
23866: void
23866: _M_transfer(_List_node_base* const __first,
23866: _List_node_base* const __last) noexcept;
23866:
23866: void
23866: _M_reverse() noexcept;
23866:
23866: void
23866: _M_hook(_List_node_base* const __position) noexcept;
23866:
23866: void
23866: _M_unhook() noexcept;
23866: };
23866:
23866:
23866: struct _List_node_header : public _List_node_base
23866: {
23866:
23866: std::size_t _M_size;
23866:
23866:
23866: _List_node_header() noexcept
23866: { _M_init(); }
23866:
23866:
23866: _List_node_header(_List_node_header&& __x) noexcept
23866: : _List_node_base{ __x._M_next, __x._M_prev }
23866:
23866: , _M_size(__x._M_size)
23866:
23866: {
23866: if (__x._M_base()->_M_next == __x._M_base())
23866: this->_M_next = this->_M_prev = this;
23866: else
23866: {
23866: this->_M_next->_M_prev = this->_M_prev->_M_next = this->_M_base();
23866: __x._M_init();
23866: }
23866: }
23866:
23866: void
23866: _M_move_nodes(_List_node_header&& __x)
23866: {
23866: _List_node_base* const __xnode = __x._M_base();
23866: if (__xnode->_M_next == __xnode)
23866: _M_init();
23866: else
23866: {
23866: _List_node_base* const __node = this->_M_base();
23866: __node->_M_next = __xnode->_M_next;
23866: __node->_M_prev = __xnode->_M_prev;
23866: __node->_M_next->_M_prev = __node->_M_prev->_M_next = __node;
23866:
23866: _M_size = __x._M_size;
23866:
23866: __x._M_init();
23866: }
23866: }
23866:
23866:
23866: void
23866: _M_init() noexcept
23866: {
23866: this->_M_next = this->_M_prev = this;
23866:
23866: this->_M_size = 0;
23866:
23866: }
23866:
23866: private:
23866: _List_node_base* _M_base() { return this; }
23866: };
23866: }
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct _List_node : public __detail::_List_node_base
23866: {
23866:
23866: __gnu_cxx::__aligned_membuf<_Tp> _M_storage;
23866: _Tp* _M_valptr() { return _M_storage._M_ptr(); }
23866: _Tp const* _M_valptr() const { return _M_storage._M_ptr(); }
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct _List_iterator
23866: {
23866: typedef _List_iterator<_Tp> _Self;
23866: typedef _List_node<_Tp> _Node;
23866:
23866: typedef ptrdiff_t difference_type;
23866: typedef std::bidirectional_iterator_tag iterator_category;
23866: typedef _Tp value_type;
23866: typedef _Tp* pointer;
23866: typedef _Tp& reference;
23866:
23866: _List_iterator() noexcept
23866: : _M_node() { }
23866:
23866: explicit
23866: _List_iterator(__detail::_List_node_base* __x) noexcept
23866: : _M_node(__x) { }
23866:
23866: _Self
23866: _M_const_cast() const noexcept
23866: { return *this; }
23866:
23866:
23866: reference
23866: operator*() const noexcept
23866: { return *static_cast<_Node*>(_M_node)->_M_valptr(); }
23866:
23866: pointer
23866: operator->() const noexcept
23866: { return static_cast<_Node*>(_M_node)->_M_valptr(); }
23866:
23866: _Self&
23866: operator++() noexcept
23866: {
23866: _M_node = _M_node->_M_next;
23866: return *this;
23866: }
23866:
23866: _Self
23866: operator++(int) noexcept
23866: {
23866: _Self __tmp = *this;
23866: _M_node = _M_node->_M_next;
23866: return __tmp;
23866: }
23866:
23866: _Self&
23866: operator--() noexcept
23866: {
23866: _M_node = _M_node->_M_prev;
23866: return *this;
23866: }
23866:
23866: _Self
23866: operator--(int) noexcept
23866: {
23866: _Self __tmp = *this;
23866: _M_node = _M_node->_M_prev;
23866: return __tmp;
23866: }
23866:
23866: friend bool
23866: operator==(const _Self& __x, const _Self& __y) noexcept
23866: { return __x._M_node == __y._M_node; }
23866:
23866:
23866: friend bool
23866: operator!=(const _Self& __x, const _Self& __y) noexcept
23866: { return __x._M_node != __y._M_node; }
23866:
23866:
23866:
23866: __detail::_List_node_base* _M_node;
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct _List_const_iterator
23866: {
23866: typedef _List_const_iterator<_Tp> _Self;
23866: typedef const _List_node<_Tp> _Node;
23866: typedef _List_iterator<_Tp> iterator;
23866:
23866: typedef ptrdiff_t difference_type;
23866: typedef std::bidirectional_iterator_tag iterator_category;
23866: typedef _Tp value_type;
23866: typedef const _Tp* pointer;
23866: typedef const _Tp& reference;
23866:
23866: _List_const_iterator() noexcept
23866: : _M_node() { }
23866:
23866: explicit
23866: _List_const_iterator(const __detail::_List_node_base* __x)
23866: noexcept
23866: : _M_node(__x) { }
23866:
23866: _List_const_iterator(const iterator& __x) noexcept
23866: : _M_node(__x._M_node) { }
23866:
23866: iterator
23866: _M_const_cast() const noexcept
23866: { return iterator(const_cast<__detail::_List_node_base*>(_M_node)); }
23866:
23866:
23866: reference
23866: operator*() const noexcept
23866: { return *static_cast<_Node*>(_M_node)->_M_valptr(); }
23866:
23866: pointer
23866: operator->() const noexcept
23866: { return static_cast<_Node*>(_M_node)->_M_valptr(); }
23866:
23866: _Self&
23866: operator++() noexcept
23866: {
23866: _M_node = _M_node->_M_next;
23866: return *this;
23866: }
23866:
23866: _Self
23866: operator++(int) noexcept
23866: {
23866: _Self __tmp = *this;
23866: _M_node = _M_node->_M_next;
23866: return __tmp;
23866: }
23866:
23866: _Self&
23866: operator--() noexcept
23866: {
23866: _M_node = _M_node->_M_prev;
23866: return *this;
23866: }
23866:
23866: _Self
23866: operator--(int) noexcept
23866: {
23866: _Self __tmp = *this;
23866: _M_node = _M_node->_M_prev;
23866: return __tmp;
23866: }
23866:
23866: friend bool
23866: operator==(const _Self& __x, const _Self& __y) noexcept
23866: { return __x._M_node == __y._M_node; }
23866:
23866:
23866: friend bool
23866: operator!=(const _Self& __x, const _Self& __y) noexcept
23866: { return __x._M_node != __y._M_node; }
23866:
23866:
23866:
23866: const __detail::_List_node_base* _M_node;
23866: };
23866:
23866: namespace __cxx11 {
23866:
23866: template<typename _Tp, typename _Alloc>
23866: class _List_base
23866: {
23866: protected:
23866: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template
23866: rebind<_Tp>::other _Tp_alloc_type;
23866: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tp_alloc_traits;
23866: typedef typename _Tp_alloc_traits::template
23866: rebind<_List_node<_Tp> >::other _Node_alloc_type;
23866: typedef __gnu_cxx::__alloc_traits<_Node_alloc_type> _Node_alloc_traits;
23866:
23866:
23866: static size_t
23866: _S_distance(const __detail::_List_node_base* __first,
23866: const __detail::_List_node_base* __last)
23866: {
23866: size_t __n = 0;
23866: while (__first != __last)
23866: {
23866: __first = __first->_M_next;
23866: ++__n;
23866: }
23866: return __n;
23866: }
23866:
23866:
23866: struct _List_impl
23866: : public _Node_alloc_type
23866: {
23866: __detail::_List_node_header _M_node;
23866:
23866: _List_impl() noexcept(is_nothrow_default_constructible<_Node_alloc_type>::value)
23866:
23866: : _Node_alloc_type()
23866: { }
23866:
23866: _List_impl(const _Node_alloc_type& __a) noexcept
23866: : _Node_alloc_type(__a)
23866: { }
23866:
23866:
23866: _List_impl(_List_impl&&) = default;
23866:
23866: _List_impl(_Node_alloc_type&& __a, _List_impl&& __x)
23866: : _Node_alloc_type(std::move(__a)), _M_node(std::move(__x._M_node))
23866: { }
23866:
23866: _List_impl(_Node_alloc_type&& __a) noexcept
23866: : _Node_alloc_type(std::move(__a))
23866: { }
23866:
23866: };
23866:
23866: _List_impl _M_impl;
23866:
23866:
23866: size_t _M_get_size() const { return _M_impl._M_node._M_size; }
23866:
23866: void _M_set_size(size_t __n) { _M_impl._M_node._M_size = __n; }
23866:
23866: void _M_inc_size(size_t __n) { _M_impl._M_node._M_size += __n; }
23866:
23866: void _M_dec_size(size_t __n) { _M_impl._M_node._M_size -= __n; }
23866:
23866:
23866: size_t
23866: _M_distance(const __detail::_List_node_base* __first,
23866: const __detail::_List_node_base* __last) const
23866: { return _S_distance(__first, __last); }
23866:
23866:
23866: size_t _M_node_count() const { return _M_get_size(); }
23866: # 440 "/usr/include/c++/10/bits/stl_list.h" 3
23866: typename _Node_alloc_traits::pointer
23866: _M_get_node()
23866: { return _Node_alloc_traits::allocate(_M_impl, 1); }
23866:
23866: void
23866: _M_put_node(typename _Node_alloc_traits::pointer __p) noexcept
23866: { _Node_alloc_traits::deallocate(_M_impl, __p, 1); }
23866:
23866: public:
23866: typedef _Alloc allocator_type;
23866:
23866: _Node_alloc_type&
23866: _M_get_Node_allocator() noexcept
23866: { return _M_impl; }
23866:
23866: const _Node_alloc_type&
23866: _M_get_Node_allocator() const noexcept
23866: { return _M_impl; }
23866:
23866:
23866: _List_base() = default;
23866:
23866:
23866:
23866:
23866: _List_base(const _Node_alloc_type& __a) noexcept
23866: : _M_impl(__a)
23866: { }
23866:
23866:
23866: _List_base(_List_base&&) = default;
23866:
23866:
23866: _List_base(_List_base&& __x, _Node_alloc_type&& __a)
23866: : _M_impl(std::move(__a))
23866: {
23866: if (__x._M_get_Node_allocator() == _M_get_Node_allocator())
23866: _M_move_nodes(std::move(__x));
23866:
23866: }
23866:
23866:
23866:
23866: _List_base(_Node_alloc_type&& __a, _List_base&& __x)
23866: : _M_impl(std::move(__a), std::move(__x._M_impl))
23866: { }
23866:
23866:
23866: _List_base(_Node_alloc_type&& __a)
23866: : _M_impl(std::move(__a))
23866: { }
23866:
23866: void
23866: _M_move_nodes(_List_base&& __x)
23866: { _M_impl._M_node._M_move_nodes(std::move(__x._M_impl._M_node)); }
23866:
23866:
23866:
23866: ~_List_base() noexcept
23866: { _M_clear(); }
23866:
23866: void
23866: _M_clear() noexcept;
23866:
23866: void
23866: _M_init() noexcept
23866: { this->_M_impl._M_node._M_init(); }
23866: };
23866: # 555 "/usr/include/c++/10/bits/stl_list.h" 3
23866: template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
23866: class list : protected _List_base<_Tp, _Alloc>
23866: {
23866: # 568 "/usr/include/c++/10/bits/stl_list.h" 3
23866: static_assert(is_same<typename remove_cv<_Tp>::type, _Tp>::value,
23866: "std::list must have a non-const, non-volatile value_type");
23866:
23866: static_assert(is_same<typename _Alloc::value_type, _Tp>::value,
23866: "std::list must have the same value_type as its allocator");
23866:
23866:
23866:
23866: typedef _List_base<_Tp, _Alloc> _Base;
23866: typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
23866: typedef typename _Base::_Tp_alloc_traits _Tp_alloc_traits;
23866: typedef typename _Base::_Node_alloc_type _Node_alloc_type;
23866: typedef typename _Base::_Node_alloc_traits _Node_alloc_traits;
23866:
23866: public:
23866: typedef _Tp value_type;
23866: typedef typename _Tp_alloc_traits::pointer pointer;
23866: typedef typename _Tp_alloc_traits::const_pointer const_pointer;
23866: typedef typename _Tp_alloc_traits::reference reference;
23866: typedef typename _Tp_alloc_traits::const_reference const_reference;
23866: typedef _List_iterator<_Tp> iterator;
23866: typedef _List_const_iterator<_Tp> const_iterator;
23866: typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
23866: typedef std::reverse_iterator<iterator> reverse_iterator;
23866: typedef size_t size_type;
23866: typedef ptrdiff_t difference_type;
23866: typedef _Alloc allocator_type;
23866:
23866: protected:
23866:
23866:
23866: typedef _List_node<_Tp> _Node;
23866:
23866: using _Base::_M_impl;
23866: using _Base::_M_put_node;
23866: using _Base::_M_get_node;
23866: using _Base::_M_get_Node_allocator;
23866: # 630 "/usr/include/c++/10/bits/stl_list.h" 3
23866: template<typename... _Args>
23866: _Node*
23866: _M_create_node(_Args&&... __args)
23866: {
23866: auto __p = this->_M_get_node();
23866: auto& __alloc = _M_get_Node_allocator();
23866: __allocated_ptr<_Node_alloc_type> __guard{__alloc, __p};
23866: _Node_alloc_traits::construct(__alloc, __p->_M_valptr(),
23866: std::forward<_Args>(__args)...);
23866: __guard = nullptr;
23866: return __p;
23866: }
23866:
23866:
23866:
23866: static size_t
23866: _S_distance(const_iterator __first, const_iterator __last)
23866: { return std::distance(__first, __last); }
23866:
23866:
23866: size_t
23866: _M_node_count() const
23866: { return this->_M_get_size(); }
23866: # 665 "/usr/include/c++/10/bits/stl_list.h" 3
23866: public:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: list() = default;
23866: # 682 "/usr/include/c++/10/bits/stl_list.h" 3
23866: explicit
23866: list(const allocator_type& __a) noexcept
23866: : _Base(_Node_alloc_type(__a)) { }
23866: # 695 "/usr/include/c++/10/bits/stl_list.h" 3
23866: explicit
23866: list(size_type __n, const allocator_type& __a = allocator_type())
23866: : _Base(_Node_alloc_type(__a))
23866: { _M_default_initialize(__n); }
23866: # 708 "/usr/include/c++/10/bits/stl_list.h" 3
23866: list(size_type __n, const value_type& __value,
23866: const allocator_type& __a = allocator_type())
23866: : _Base(_Node_alloc_type(__a))
23866: { _M_fill_initialize(__n, __value); }
23866: # 735 "/usr/include/c++/10/bits/stl_list.h" 3
23866: list(const list& __x)
23866: : _Base(_Node_alloc_traits::
23866: _S_select_on_copy(__x._M_get_Node_allocator()))
23866: { _M_initialize_dispatch(__x.begin(), __x.end(), __false_type()); }
23866: # 748 "/usr/include/c++/10/bits/stl_list.h" 3
23866: list(list&&) = default;
23866: # 758 "/usr/include/c++/10/bits/stl_list.h" 3
23866: list(initializer_list<value_type> __l,
23866: const allocator_type& __a = allocator_type())
23866: : _Base(_Node_alloc_type(__a))
23866: { _M_initialize_dispatch(__l.begin(), __l.end(), __false_type()); }
23866:
23866: list(const list& __x, const allocator_type& __a)
23866: : _Base(_Node_alloc_type(__a))
23866: { _M_initialize_dispatch(__x.begin(), __x.end(), __false_type()); }
23866:
23866: private:
23866: list(list&& __x, const allocator_type& __a, true_type) noexcept
23866: : _Base(_Node_alloc_type(__a), std::move(__x))
23866: { }
23866:
23866: list(list&& __x, const allocator_type& __a, false_type)
23866: : _Base(_Node_alloc_type(__a))
23866: {
23866: if (__x._M_get_Node_allocator() == this->_M_get_Node_allocator())
23866: this->_M_move_nodes(std::move(__x));
23866: else
23866: insert(begin(), std::__make_move_if_noexcept_iterator(__x.begin()),
23866: std::__make_move_if_noexcept_iterator(__x.end()));
23866: }
23866:
23866: public:
23866: list(list&& __x, const allocator_type& __a)
23866: noexcept(_Node_alloc_traits::_S_always_equal())
23866: : list(std::move(__x), __a,
23866: typename _Node_alloc_traits::is_always_equal{})
23866: { }
23866: # 801 "/usr/include/c++/10/bits/stl_list.h" 3
23866: template<typename _InputIterator,
23866: typename = std::_RequireInputIter<_InputIterator>>
23866: list(_InputIterator __first, _InputIterator __last,
23866: const allocator_type& __a = allocator_type())
23866: : _Base(_Node_alloc_type(__a))
23866: { _M_initialize_dispatch(__first, __last, __false_type()); }
23866: # 827 "/usr/include/c++/10/bits/stl_list.h" 3
23866: ~list() = default;
23866: # 838 "/usr/include/c++/10/bits/stl_list.h" 3
23866: list&
23866: operator=(const list& __x);
23866: # 852 "/usr/include/c++/10/bits/stl_list.h" 3
23866: list&
23866: operator=(list&& __x)
23866: noexcept(_Node_alloc_traits::_S_nothrow_move())
23866: {
23866: constexpr bool __move_storage =
23866: _Node_alloc_traits::_S_propagate_on_move_assign()
23866: || _Node_alloc_traits::_S_always_equal();
23866: _M_move_assign(std::move(__x), __bool_constant<__move_storage>());
23866: return *this;
23866: }
23866: # 870 "/usr/include/c++/10/bits/stl_list.h" 3
23866: list&
23866: operator=(initializer_list<value_type> __l)
23866: {
23866: this->assign(__l.begin(), __l.end());
23866: return *this;
23866: }
23866: # 888 "/usr/include/c++/10/bits/stl_list.h" 3
23866: void
23866: assign(size_type __n, const value_type& __val)
23866: { _M_fill_assign(__n, __val); }
23866: # 905 "/usr/include/c++/10/bits/stl_list.h" 3
23866: template<typename _InputIterator,
23866: typename = std::_RequireInputIter<_InputIterator>>
23866: void
23866: assign(_InputIterator __first, _InputIterator __last)
23866: { _M_assign_dispatch(__first, __last, __false_type()); }
23866: # 929 "/usr/include/c++/10/bits/stl_list.h" 3
23866: void
23866: assign(initializer_list<value_type> __l)
23866: { this->_M_assign_dispatch(__l.begin(), __l.end(), __false_type()); }
23866:
23866:
23866:
23866: allocator_type
23866: get_allocator() const noexcept
23866: { return allocator_type(_Base::_M_get_Node_allocator()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: iterator
23866: begin() noexcept
23866: { return iterator(this->_M_impl._M_node._M_next); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_iterator
23866: begin() const noexcept
23866: { return const_iterator(this->_M_impl._M_node._M_next); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: iterator
23866: end() noexcept
23866: { return iterator(&this->_M_impl._M_node); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_iterator
23866: end() const noexcept
23866: { return const_iterator(&this->_M_impl._M_node); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: reverse_iterator
23866: rbegin() noexcept
23866: { return reverse_iterator(end()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_reverse_iterator
23866: rbegin() const noexcept
23866: { return const_reverse_iterator(end()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: reverse_iterator
23866: rend() noexcept
23866: { return reverse_iterator(begin()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_reverse_iterator
23866: rend() const noexcept
23866: { return const_reverse_iterator(begin()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_iterator
23866: cbegin() const noexcept
23866: { return const_iterator(this->_M_impl._M_node._M_next); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_iterator
23866: cend() const noexcept
23866: { return const_iterator(&this->_M_impl._M_node); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_reverse_iterator
23866: crbegin() const noexcept
23866: { return const_reverse_iterator(end()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_reverse_iterator
23866: crend() const noexcept
23866: { return const_reverse_iterator(begin()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: [[__nodiscard__]] bool
23866: empty() const noexcept
23866: { return this->_M_impl._M_node._M_next == &this->_M_impl._M_node; }
23866:
23866:
23866: size_type
23866: size() const noexcept
23866: { return _M_node_count(); }
23866:
23866:
23866: size_type
23866: max_size() const noexcept
23866: { return _Node_alloc_traits::max_size(_M_get_Node_allocator()); }
23866: # 1078 "/usr/include/c++/10/bits/stl_list.h" 3
23866: void
23866: resize(size_type __new_size);
23866: # 1091 "/usr/include/c++/10/bits/stl_list.h" 3
23866: void
23866: resize(size_type __new_size, const value_type& __x);
23866: # 1113 "/usr/include/c++/10/bits/stl_list.h" 3
23866: reference
23866: front() noexcept
23866: { return *begin(); }
23866:
23866:
23866:
23866:
23866:
23866: const_reference
23866: front() const noexcept
23866: { return *begin(); }
23866:
23866:
23866:
23866:
23866:
23866: reference
23866: back() noexcept
23866: {
23866: iterator __tmp = end();
23866: --__tmp;
23866: return *__tmp;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: const_reference
23866: back() const noexcept
23866: {
23866: const_iterator __tmp = end();
23866: --__tmp;
23866: return *__tmp;
23866: }
23866: # 1160 "/usr/include/c++/10/bits/stl_list.h" 3
23866: void
23866: push_front(const value_type& __x)
23866: { this->_M_insert(begin(), __x); }
23866:
23866:
23866: void
23866: push_front(value_type&& __x)
23866: { this->_M_insert(begin(), std::move(__x)); }
23866:
23866: template<typename... _Args>
23866:
23866: reference
23866:
23866:
23866:
23866: emplace_front(_Args&&... __args)
23866: {
23866: this->_M_insert(begin(), std::forward<_Args>(__args)...);
23866:
23866: return front();
23866:
23866: }
23866: # 1196 "/usr/include/c++/10/bits/stl_list.h" 3
23866: void
23866: pop_front() noexcept
23866: { this->_M_erase(begin()); }
23866: # 1210 "/usr/include/c++/10/bits/stl_list.h" 3
23866: void
23866: push_back(const value_type& __x)
23866: { this->_M_insert(end(), __x); }
23866:
23866:
23866: void
23866: push_back(value_type&& __x)
23866: { this->_M_insert(end(), std::move(__x)); }
23866:
23866: template<typename... _Args>
23866:
23866: reference
23866:
23866:
23866:
23866: emplace_back(_Args&&... __args)
23866: {
23866: this->_M_insert(end(), std::forward<_Args>(__args)...);
23866:
23866: return back();
23866:
23866: }
23866: # 1245 "/usr/include/c++/10/bits/stl_list.h" 3
23866: void
23866: pop_back() noexcept
23866: { this->_M_erase(iterator(this->_M_impl._M_node._M_prev)); }
23866: # 1262 "/usr/include/c++/10/bits/stl_list.h" 3
23866: template<typename... _Args>
23866: iterator
23866: emplace(const_iterator __position, _Args&&... __args);
23866: # 1277 "/usr/include/c++/10/bits/stl_list.h" 3
23866: iterator
23866: insert(const_iterator __position, const value_type& __x);
23866: # 1307 "/usr/include/c++/10/bits/stl_list.h" 3
23866: iterator
23866: insert(const_iterator __position, value_type&& __x)
23866: { return emplace(__position, std::move(__x)); }
23866: # 1326 "/usr/include/c++/10/bits/stl_list.h" 3
23866: iterator
23866: insert(const_iterator __p, initializer_list<value_type> __l)
23866: { return this->insert(__p, __l.begin(), __l.end()); }
23866: # 1346 "/usr/include/c++/10/bits/stl_list.h" 3
23866: iterator
23866: insert(const_iterator __position, size_type __n, const value_type& __x);
23866: # 1385 "/usr/include/c++/10/bits/stl_list.h" 3
23866: template<typename _InputIterator,
23866: typename = std::_RequireInputIter<_InputIterator>>
23866: iterator
23866: insert(const_iterator __position, _InputIterator __first,
23866: _InputIterator __last);
23866: # 1429 "/usr/include/c++/10/bits/stl_list.h" 3
23866: iterator
23866:
23866: erase(const_iterator __position) noexcept;
23866: # 1454 "/usr/include/c++/10/bits/stl_list.h" 3
23866: iterator
23866:
23866: erase(const_iterator __first, const_iterator __last) noexcept
23866:
23866:
23866:
23866: {
23866: while (__first != __last)
23866: __first = erase(__first);
23866: return __last._M_const_cast();
23866: }
23866: # 1477 "/usr/include/c++/10/bits/stl_list.h" 3
23866: void
23866: swap(list& __x) noexcept
23866: {
23866: __detail::_List_node_base::swap(this->_M_impl._M_node,
23866: __x._M_impl._M_node);
23866:
23866: size_t __xsize = __x._M_get_size();
23866: __x._M_set_size(this->_M_get_size());
23866: this->_M_set_size(__xsize);
23866:
23866: _Node_alloc_traits::_S_on_swap(this->_M_get_Node_allocator(),
23866: __x._M_get_Node_allocator());
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: void
23866: clear() noexcept
23866: {
23866: _Base::_M_clear();
23866: _Base::_M_init();
23866: }
23866: # 1516 "/usr/include/c++/10/bits/stl_list.h" 3
23866: void
23866:
23866: splice(const_iterator __position, list&& __x) noexcept
23866:
23866:
23866:
23866: {
23866: if (!__x.empty())
23866: {
23866: _M_check_equal_allocators(__x);
23866:
23866: this->_M_transfer(__position._M_const_cast(),
23866: __x.begin(), __x.end());
23866:
23866: this->_M_inc_size(__x._M_get_size());
23866: __x._M_set_size(0);
23866: }
23866: }
23866:
23866:
23866: void
23866: splice(const_iterator __position, list& __x) noexcept
23866: { splice(__position, std::move(__x)); }
23866: # 1552 "/usr/include/c++/10/bits/stl_list.h" 3
23866: void
23866: splice(const_iterator __position, list&& __x, const_iterator __i) noexcept
23866: # 1567 "/usr/include/c++/10/bits/stl_list.h" 3
23866: {
23866: iterator __j = __i._M_const_cast();
23866: ++__j;
23866: if (__position == __i || __position == __j)
23866: return;
23866:
23866: if (this != std::__addressof(__x))
23866: _M_check_equal_allocators(__x);
23866:
23866: this->_M_transfer(__position._M_const_cast(),
23866: __i._M_const_cast(), __j);
23866:
23866: this->_M_inc_size(1);
23866: __x._M_dec_size(1);
23866: }
23866: # 1594 "/usr/include/c++/10/bits/stl_list.h" 3
23866: void
23866: splice(const_iterator __position, list& __x, const_iterator __i) noexcept
23866: { splice(__position, std::move(__x), __i); }
23866: # 1613 "/usr/include/c++/10/bits/stl_list.h" 3
23866: void
23866: splice(const_iterator __position, list&& __x, const_iterator __first,
23866: const_iterator __last) noexcept
23866: # 1633 "/usr/include/c++/10/bits/stl_list.h" 3
23866: {
23866: if (__first != __last)
23866: {
23866: if (this != std::__addressof(__x))
23866: _M_check_equal_allocators(__x);
23866:
23866: size_t __n = _S_distance(__first, __last);
23866: this->_M_inc_size(__n);
23866: __x._M_dec_size(__n);
23866:
23866: this->_M_transfer(__position._M_const_cast(),
23866: __first._M_const_cast(),
23866: __last._M_const_cast());
23866: }
23866: }
23866: # 1663 "/usr/include/c++/10/bits/stl_list.h" 3
23866: void
23866: splice(const_iterator __position, list& __x, const_iterator __first,
23866: const_iterator __last) noexcept
23866: { splice(__position, std::move(__x), __first, __last); }
23866:
23866:
23866: private:
23866:
23866:
23866:
23866:
23866:
23866:
23866: typedef void __remove_return_type;
23866: #define _GLIBCXX_LIST_REMOVE_RETURN_TYPE_TAG
23866:
23866: public:
23866: # 1692 "/usr/include/c++/10/bits/stl_list.h" 3
23866:
23866: __remove_return_type
23866: remove(const _Tp& __value);
23866: # 1707 "/usr/include/c++/10/bits/stl_list.h" 3
23866: template<typename _Predicate>
23866: __remove_return_type
23866: remove_if(_Predicate);
23866: # 1721 "/usr/include/c++/10/bits/stl_list.h" 3
23866:
23866: __remove_return_type
23866: unique();
23866: # 1737 "/usr/include/c++/10/bits/stl_list.h" 3
23866: template<typename _BinaryPredicate>
23866: __remove_return_type
23866: unique(_BinaryPredicate);
23866:
23866: #undef _GLIBCXX_LIST_REMOVE_RETURN_TYPE_TAG
23866: # 1753 "/usr/include/c++/10/bits/stl_list.h" 3
23866: void
23866: merge(list&& __x);
23866:
23866: void
23866: merge(list& __x)
23866: { merge(std::move(__x)); }
23866: # 1778 "/usr/include/c++/10/bits/stl_list.h" 3
23866: template<typename _StrictWeakOrdering>
23866: void
23866: merge(list&& __x, _StrictWeakOrdering __comp);
23866:
23866: template<typename _StrictWeakOrdering>
23866: void
23866: merge(list& __x, _StrictWeakOrdering __comp)
23866: { merge(std::move(__x), __comp); }
23866: # 1797 "/usr/include/c++/10/bits/stl_list.h" 3
23866: void
23866: reverse() noexcept
23866: { this->_M_impl._M_node._M_reverse(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: void
23866: sort();
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _StrictWeakOrdering>
23866: void
23866: sort(_StrictWeakOrdering);
23866:
23866: protected:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Integer>
23866: void
23866: _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type)
23866: { _M_fill_initialize(static_cast<size_type>(__n), __x); }
23866:
23866:
23866: template<typename _InputIterator>
23866: void
23866: _M_initialize_dispatch(_InputIterator __first, _InputIterator __last,
23866: __false_type)
23866: {
23866: for (; __first != __last; ++__first)
23866:
23866: emplace_back(*__first);
23866:
23866:
23866:
23866: }
23866:
23866:
23866:
23866: void
23866: _M_fill_initialize(size_type __n, const value_type& __x)
23866: {
23866: for (; __n; --__n)
23866: push_back(__x);
23866: }
23866:
23866:
23866:
23866: void
23866: _M_default_initialize(size_type __n)
23866: {
23866: for (; __n; --__n)
23866: emplace_back();
23866: }
23866:
23866:
23866: void
23866: _M_default_append(size_type __n);
23866: # 1875 "/usr/include/c++/10/bits/stl_list.h" 3
23866: template<typename _Integer>
23866: void
23866: _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
23866: { _M_fill_assign(__n, __val); }
23866:
23866:
23866: template<typename _InputIterator>
23866: void
23866: _M_assign_dispatch(_InputIterator __first, _InputIterator __last,
23866: __false_type);
23866:
23866:
23866:
23866: void
23866: _M_fill_assign(size_type __n, const value_type& __val);
23866:
23866:
23866:
23866: void
23866: _M_transfer(iterator __position, iterator __first, iterator __last)
23866: { __position._M_node->_M_transfer(__first._M_node, __last._M_node); }
23866: # 1907 "/usr/include/c++/10/bits/stl_list.h" 3
23866: template<typename... _Args>
23866: void
23866: _M_insert(iterator __position, _Args&&... __args)
23866: {
23866: _Node* __tmp = _M_create_node(std::forward<_Args>(__args)...);
23866: __tmp->_M_hook(__position._M_node);
23866: this->_M_inc_size(1);
23866: }
23866:
23866:
23866:
23866: void
23866: _M_erase(iterator __position) noexcept
23866: {
23866: this->_M_dec_size(1);
23866: __position._M_node->_M_unhook();
23866: _Node* __n = static_cast<_Node*>(__position._M_node);
23866:
23866: _Node_alloc_traits::destroy(_M_get_Node_allocator(), __n->_M_valptr());
23866:
23866:
23866:
23866:
23866: _M_put_node(__n);
23866: }
23866:
23866:
23866: void
23866: _M_check_equal_allocators(list& __x) noexcept
23866: {
23866: if (std::__alloc_neq<typename _Base::_Node_alloc_type>::
23866: _S_do_it(_M_get_Node_allocator(), __x._M_get_Node_allocator()))
23866: __builtin_abort();
23866: }
23866:
23866:
23866: const_iterator
23866: _M_resize_pos(size_type& __new_size) const;
23866:
23866:
23866: void
23866: _M_move_assign(list&& __x, true_type) noexcept
23866: {
23866: this->_M_clear();
23866: this->_M_move_nodes(std::move(__x));
23866: std::__alloc_on_move(this->_M_get_Node_allocator(),
23866: __x._M_get_Node_allocator());
23866: }
23866:
23866: void
23866: _M_move_assign(list&& __x, false_type)
23866: {
23866: if (__x._M_get_Node_allocator() == this->_M_get_Node_allocator())
23866: _M_move_assign(std::move(__x), true_type{});
23866: else
23866:
23866:
23866: _M_assign_dispatch(std::make_move_iterator(__x.begin()),
23866: std::make_move_iterator(__x.end()),
23866: __false_type{});
23866: }
23866:
23866: };
23866:
23866:
23866: template<typename _InputIterator, typename _ValT
23866: = typename iterator_traits<_InputIterator>::value_type,
23866: typename _Allocator = allocator<_ValT>,
23866: typename = _RequireInputIter<_InputIterator>,
23866: typename = _RequireAllocator<_Allocator>>
23866: list(_InputIterator, _InputIterator, _Allocator = _Allocator())
23866: -> list<_ValT, _Allocator>;
23866:
23866:
23866: }
23866: # 1993 "/usr/include/c++/10/bits/stl_list.h" 3
23866: template<typename _Tp, typename _Alloc>
23866: inline bool
23866: operator==(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
23866: {
23866:
23866: if (__x.size() != __y.size())
23866: return false;
23866:
23866:
23866: typedef typename list<_Tp, _Alloc>::const_iterator const_iterator;
23866: const_iterator __end1 = __x.end();
23866: const_iterator __end2 = __y.end();
23866:
23866: const_iterator __i1 = __x.begin();
23866: const_iterator __i2 = __y.begin();
23866: while (__i1 != __end1 && __i2 != __end2 && *__i1 == *__i2)
23866: {
23866: ++__i1;
23866: ++__i2;
23866: }
23866: return __i1 == __end1 && __i2 == __end2;
23866: }
23866: # 2048 "/usr/include/c++/10/bits/stl_list.h" 3
23866: template<typename _Tp, typename _Alloc>
23866: inline bool
23866: operator<(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
23866: { return std::lexicographical_compare(__x.begin(), __x.end(),
23866: __y.begin(), __y.end()); }
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: inline bool
23866: operator!=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
23866: { return !(__x == __y); }
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: inline bool
23866: operator>(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
23866: { return __y < __x; }
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: inline bool
23866: operator<=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
23866: { return !(__y < __x); }
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: inline bool
23866: operator>=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
23866: { return !(__x < __y); }
23866:
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: inline void
23866: swap(list<_Tp, _Alloc>& __x, list<_Tp, _Alloc>& __y)
23866: noexcept(noexcept(__x.swap(__y)))
23866: { __x.swap(__y); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: inline ptrdiff_t
23866: __distance(std::_List_iterator<_Tp> __first,
23866: std::_List_iterator<_Tp> __last,
23866: input_iterator_tag __tag)
23866: {
23866: typedef std::_List_const_iterator<_Tp> _CIter;
23866: return std::__distance(_CIter(__first), _CIter(__last), __tag);
23866: }
23866:
23866: template<typename _Tp>
23866: inline ptrdiff_t
23866: __distance(std::_List_const_iterator<_Tp> __first,
23866: std::_List_const_iterator<_Tp> __last,
23866: input_iterator_tag)
23866: {
23866: typedef __detail::_List_node_header _Sentinel;
23866: std::_List_const_iterator<_Tp> __beyond = __last;
23866: ++__beyond;
23866: const bool __whole = __first == __beyond;
23866: if (__builtin_constant_p (__whole) && __whole)
23866: return static_cast<const _Sentinel*>(__last._M_node)->_M_size;
23866:
23866: ptrdiff_t __n = 0;
23866: while (__first != __last)
23866: {
23866: ++__first;
23866: ++__n;
23866: }
23866: return __n;
23866: }
23866:
23866:
23866:
23866: }
23866: # 64 "/usr/include/c++/10/list" 2 3
23866: # 1 "/usr/include/c++/10/bits/list.tcc" 1 3
23866: # 57 "/usr/include/c++/10/bits/list.tcc" 3
23866: #define _LIST_TCC 1
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: void
23866: _List_base<_Tp, _Alloc>::
23866: _M_clear() noexcept
23866: {
23866: typedef _List_node<_Tp> _Node;
23866: __detail::_List_node_base* __cur = _M_impl._M_node._M_next;
23866: while (__cur != &_M_impl._M_node)
23866: {
23866: _Node* __tmp = static_cast<_Node*>(__cur);
23866: __cur = __tmp->_M_next;
23866: _Tp* __val = __tmp->_M_valptr();
23866:
23866: _Node_alloc_traits::destroy(_M_get_Node_allocator(), __val);
23866:
23866:
23866:
23866: _M_put_node(__tmp);
23866: }
23866: }
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: template<typename... _Args>
23866: typename list<_Tp, _Alloc>::iterator
23866: list<_Tp, _Alloc>::
23866: emplace(const_iterator __position, _Args&&... __args)
23866: {
23866: _Node* __tmp = _M_create_node(std::forward<_Args>(__args)...);
23866: __tmp->_M_hook(__position._M_const_cast()._M_node);
23866: this->_M_inc_size(1);
23866: return iterator(__tmp);
23866: }
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: typename list<_Tp, _Alloc>::iterator
23866: list<_Tp, _Alloc>::
23866:
23866: insert(const_iterator __position, const value_type& __x)
23866:
23866:
23866:
23866: {
23866: _Node* __tmp = _M_create_node(__x);
23866: __tmp->_M_hook(__position._M_const_cast()._M_node);
23866: this->_M_inc_size(1);
23866: return iterator(__tmp);
23866: }
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: typename list<_Tp, _Alloc>::iterator
23866: list<_Tp, _Alloc>::
23866: insert(const_iterator __position, size_type __n, const value_type& __x)
23866: {
23866: if (__n)
23866: {
23866: list __tmp(__n, __x, get_allocator());
23866: iterator __it = __tmp.begin();
23866: splice(__position, __tmp);
23866: return __it;
23866: }
23866: return __position._M_const_cast();
23866: }
23866:
23866: template<typename _Tp, typename _Alloc>
23866: template<typename _InputIterator, typename>
23866: typename list<_Tp, _Alloc>::iterator
23866: list<_Tp, _Alloc>::
23866: insert(const_iterator __position, _InputIterator __first,
23866: _InputIterator __last)
23866: {
23866: list __tmp(__first, __last, get_allocator());
23866: if (!__tmp.empty())
23866: {
23866: iterator __it = __tmp.begin();
23866: splice(__position, __tmp);
23866: return __it;
23866: }
23866: return __position._M_const_cast();
23866: }
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: typename list<_Tp, _Alloc>::iterator
23866: list<_Tp, _Alloc>::
23866:
23866: erase(const_iterator __position) noexcept
23866:
23866:
23866:
23866: {
23866: iterator __ret = iterator(__position._M_node->_M_next);
23866: _M_erase(__position._M_const_cast());
23866: return __ret;
23866: }
23866: # 173 "/usr/include/c++/10/bits/list.tcc" 3
23866: template<typename _Tp, typename _Alloc>
23866: typename list<_Tp, _Alloc>::const_iterator
23866: list<_Tp, _Alloc>::
23866: _M_resize_pos(size_type& __new_size) const
23866: {
23866: const_iterator __i;
23866:
23866: const size_type __len = size();
23866: if (__new_size < __len)
23866: {
23866: if (__new_size <= __len / 2)
23866: {
23866: __i = begin();
23866: std::advance(__i, __new_size);
23866: }
23866: else
23866: {
23866: __i = end();
23866: ptrdiff_t __num_erase = __len - __new_size;
23866: std::advance(__i, -__num_erase);
23866: }
23866: __new_size = 0;
23866: return __i;
23866: }
23866: else
23866: __i = end();
23866:
23866:
23866:
23866:
23866:
23866: __new_size -= __len;
23866: return __i;
23866: }
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: void
23866: list<_Tp, _Alloc>::
23866: _M_default_append(size_type __n)
23866: {
23866: size_type __i = 0;
23866: try
23866: {
23866: for (; __i < __n; ++__i)
23866: emplace_back();
23866: }
23866: catch(...)
23866: {
23866: for (; __i; --__i)
23866: pop_back();
23866: throw;
23866: }
23866: }
23866:
23866: template<typename _Tp, typename _Alloc>
23866: void
23866: list<_Tp, _Alloc>::
23866: resize(size_type __new_size)
23866: {
23866: const_iterator __i = _M_resize_pos(__new_size);
23866: if (__new_size)
23866: _M_default_append(__new_size);
23866: else
23866: erase(__i, end());
23866: }
23866:
23866: template<typename _Tp, typename _Alloc>
23866: void
23866: list<_Tp, _Alloc>::
23866: resize(size_type __new_size, const value_type& __x)
23866: {
23866: const_iterator __i = _M_resize_pos(__new_size);
23866: if (__new_size)
23866: insert(end(), __new_size, __x);
23866: else
23866: erase(__i, end());
23866: }
23866: # 265 "/usr/include/c++/10/bits/list.tcc" 3
23866: template<typename _Tp, typename _Alloc>
23866: list<_Tp, _Alloc>&
23866: list<_Tp, _Alloc>::
23866: operator=(const list& __x)
23866: {
23866: if (this != std::__addressof(__x))
23866: {
23866:
23866: if (_Node_alloc_traits::_S_propagate_on_copy_assign())
23866: {
23866: auto& __this_alloc = this->_M_get_Node_allocator();
23866: auto& __that_alloc = __x._M_get_Node_allocator();
23866: if (!_Node_alloc_traits::_S_always_equal()
23866: && __this_alloc != __that_alloc)
23866: {
23866:
23866: clear();
23866: }
23866: std::__alloc_on_copy(__this_alloc, __that_alloc);
23866: }
23866:
23866: _M_assign_dispatch(__x.begin(), __x.end(), __false_type());
23866: }
23866: return *this;
23866: }
23866:
23866: template<typename _Tp, typename _Alloc>
23866: void
23866: list<_Tp, _Alloc>::
23866: _M_fill_assign(size_type __n, const value_type& __val)
23866: {
23866: iterator __i = begin();
23866: for (; __i != end() && __n > 0; ++__i, --__n)
23866: *__i = __val;
23866: if (__n > 0)
23866: insert(end(), __n, __val);
23866: else
23866: erase(__i, end());
23866: }
23866:
23866: template<typename _Tp, typename _Alloc>
23866: template <typename _InputIterator>
23866: void
23866: list<_Tp, _Alloc>::
23866: _M_assign_dispatch(_InputIterator __first2, _InputIterator __last2,
23866: __false_type)
23866: {
23866: iterator __first1 = begin();
23866: iterator __last1 = end();
23866: for (; __first1 != __last1 && __first2 != __last2;
23866: ++__first1, (void)++__first2)
23866: *__first1 = *__first2;
23866: if (__first2 == __last2)
23866: erase(__first1, __last1);
23866: else
23866: insert(__last1, __first2, __last2);
23866: }
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX20_ONLY(__expr)
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: typename list<_Tp, _Alloc>::__remove_return_type
23866: list<_Tp, _Alloc>::
23866: remove(const value_type& __value)
23866: {
23866: size_type __removed __attribute__((__unused__)) = 0;
23866: iterator __first = begin();
23866: iterator __last = end();
23866: iterator __extra = __last;
23866: while (__first != __last)
23866: {
23866: iterator __next = __first;
23866: ++__next;
23866: if (*__first == __value)
23866: {
23866:
23866:
23866:
23866: if (std::__addressof(*__first) != std::__addressof(__value))
23866: {
23866: _M_erase(__first);
23866: ;
23866: }
23866: else
23866: __extra = __first;
23866: }
23866: __first = __next;
23866: }
23866: if (__extra != __last)
23866: {
23866: _M_erase(__extra);
23866: ;
23866: }
23866: return ;
23866: }
23866:
23866: template<typename _Tp, typename _Alloc>
23866: typename list<_Tp, _Alloc>::__remove_return_type
23866: list<_Tp, _Alloc>::
23866: unique()
23866: {
23866: iterator __first = begin();
23866: iterator __last = end();
23866: if (__first == __last)
23866: return ;
23866: size_type __removed __attribute__((__unused__)) = 0;
23866: iterator __next = __first;
23866: while (++__next != __last)
23866: {
23866: if (*__first == *__next)
23866: {
23866: _M_erase(__next);
23866: ;
23866: }
23866: else
23866: __first = __next;
23866: __next = __first;
23866: }
23866: return ;
23866: }
23866:
23866: template<typename _Tp, typename _Alloc>
23866: void
23866: list<_Tp, _Alloc>::
23866:
23866: merge(list&& __x)
23866:
23866:
23866:
23866: {
23866:
23866:
23866: if (this != std::__addressof(__x))
23866: {
23866: _M_check_equal_allocators(__x);
23866:
23866: iterator __first1 = begin();
23866: iterator __last1 = end();
23866: iterator __first2 = __x.begin();
23866: iterator __last2 = __x.end();
23866: const size_t __orig_size = __x.size();
23866: try {
23866: while (__first1 != __last1 && __first2 != __last2)
23866: if (*__first2 < *__first1)
23866: {
23866: iterator __next = __first2;
23866: _M_transfer(__first1, __first2, ++__next);
23866: __first2 = __next;
23866: }
23866: else
23866: ++__first1;
23866: if (__first2 != __last2)
23866: _M_transfer(__last1, __first2, __last2);
23866:
23866: this->_M_inc_size(__x._M_get_size());
23866: __x._M_set_size(0);
23866: }
23866: catch(...)
23866: {
23866: const size_t __dist = std::distance(__first2, __last2);
23866: this->_M_inc_size(__orig_size - __dist);
23866: __x._M_set_size(__dist);
23866: throw;
23866: }
23866: }
23866: }
23866:
23866: template<typename _Tp, typename _Alloc>
23866: template <typename _StrictWeakOrdering>
23866: void
23866: list<_Tp, _Alloc>::
23866:
23866: merge(list&& __x, _StrictWeakOrdering __comp)
23866:
23866:
23866:
23866: {
23866:
23866:
23866: if (this != std::__addressof(__x))
23866: {
23866: _M_check_equal_allocators(__x);
23866:
23866: iterator __first1 = begin();
23866: iterator __last1 = end();
23866: iterator __first2 = __x.begin();
23866: iterator __last2 = __x.end();
23866: const size_t __orig_size = __x.size();
23866: try
23866: {
23866: while (__first1 != __last1 && __first2 != __last2)
23866: if (__comp(*__first2, *__first1))
23866: {
23866: iterator __next = __first2;
23866: _M_transfer(__first1, __first2, ++__next);
23866: __first2 = __next;
23866: }
23866: else
23866: ++__first1;
23866: if (__first2 != __last2)
23866: _M_transfer(__last1, __first2, __last2);
23866:
23866: this->_M_inc_size(__x._M_get_size());
23866: __x._M_set_size(0);
23866: }
23866: catch(...)
23866: {
23866: const size_t __dist = std::distance(__first2, __last2);
23866: this->_M_inc_size(__orig_size - __dist);
23866: __x._M_set_size(__dist);
23866: throw;
23866: }
23866: }
23866: }
23866:
23866: template<typename _Tp, typename _Alloc>
23866: void
23866: list<_Tp, _Alloc>::
23866: sort()
23866: {
23866:
23866: if (this->_M_impl._M_node._M_next != &this->_M_impl._M_node
23866: && this->_M_impl._M_node._M_next->_M_next != &this->_M_impl._M_node)
23866: {
23866: list __carry;
23866: list __tmp[64];
23866: list * __fill = __tmp;
23866: list * __counter;
23866: try
23866: {
23866: do
23866: {
23866: __carry.splice(__carry.begin(), *this, begin());
23866:
23866: for(__counter = __tmp;
23866: __counter != __fill && !__counter->empty();
23866: ++__counter)
23866: {
23866: __counter->merge(__carry);
23866: __carry.swap(*__counter);
23866: }
23866: __carry.swap(*__counter);
23866: if (__counter == __fill)
23866: ++__fill;
23866: }
23866: while ( !empty() );
23866:
23866: for (__counter = __tmp + 1; __counter != __fill; ++__counter)
23866: __counter->merge(*(__counter - 1));
23866: swap( *(__fill - 1) );
23866: }
23866: catch(...)
23866: {
23866: this->splice(this->end(), __carry);
23866: for (int __i = 0; __i < sizeof(__tmp)/sizeof(__tmp[0]); ++__i)
23866: this->splice(this->end(), __tmp[__i]);
23866: throw;
23866: }
23866: }
23866: }
23866:
23866: template<typename _Tp, typename _Alloc>
23866: template <typename _Predicate>
23866: typename list<_Tp, _Alloc>::__remove_return_type
23866: list<_Tp, _Alloc>::
23866: remove_if(_Predicate __pred)
23866: {
23866: size_type __removed __attribute__((__unused__)) = 0;
23866: iterator __first = begin();
23866: iterator __last = end();
23866: while (__first != __last)
23866: {
23866: iterator __next = __first;
23866: ++__next;
23866: if (__pred(*__first))
23866: {
23866: _M_erase(__first);
23866: ;
23866: }
23866: __first = __next;
23866: }
23866: return ;
23866: }
23866:
23866: template<typename _Tp, typename _Alloc>
23866: template <typename _BinaryPredicate>
23866: typename list<_Tp, _Alloc>::__remove_return_type
23866: list<_Tp, _Alloc>::
23866: unique(_BinaryPredicate __binary_pred)
23866: {
23866: iterator __first = begin();
23866: iterator __last = end();
23866: if (__first == __last)
23866: return ;
23866: size_type __removed __attribute__((__unused__)) = 0;
23866: iterator __next = __first;
23866: while (++__next != __last)
23866: {
23866: if (__binary_pred(*__first, *__next))
23866: {
23866: _M_erase(__next);
23866: ;
23866: }
23866: else
23866: __first = __next;
23866: __next = __first;
23866: }
23866: return ;
23866: }
23866:
23866: #undef _GLIBCXX20_ONLY
23866:
23866: template<typename _Tp, typename _Alloc>
23866: template <typename _StrictWeakOrdering>
23866: void
23866: list<_Tp, _Alloc>::
23866: sort(_StrictWeakOrdering __comp)
23866: {
23866:
23866: if (this->_M_impl._M_node._M_next != &this->_M_impl._M_node
23866: && this->_M_impl._M_node._M_next->_M_next != &this->_M_impl._M_node)
23866: {
23866: list __carry;
23866: list __tmp[64];
23866: list * __fill = __tmp;
23866: list * __counter;
23866: try
23866: {
23866: do
23866: {
23866: __carry.splice(__carry.begin(), *this, begin());
23866:
23866: for(__counter = __tmp;
23866: __counter != __fill && !__counter->empty();
23866: ++__counter)
23866: {
23866: __counter->merge(__carry, __comp);
23866: __carry.swap(*__counter);
23866: }
23866: __carry.swap(*__counter);
23866: if (__counter == __fill)
23866: ++__fill;
23866: }
23866: while ( !empty() );
23866:
23866: for (__counter = __tmp + 1; __counter != __fill; ++__counter)
23866: __counter->merge(*(__counter - 1), __comp);
23866: swap(*(__fill - 1));
23866: }
23866: catch(...)
23866: {
23866: this->splice(this->end(), __carry);
23866: for (int __i = 0; __i < sizeof(__tmp)/sizeof(__tmp[0]); ++__i)
23866: this->splice(this->end(), __tmp[__i]);
23866: throw;
23866: }
23866: }
23866: }
23866:
23866:
23866:
23866: }
23866: # 65 "/usr/include/c++/10/list" 2 3
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: namespace pmr
23866: {
23866: template<typename _Tp> class polymorphic_allocator;
23866: template<typename _Tp>
23866: using list = std::list<_Tp, polymorphic_allocator<_Tp>>;
23866: }
23866:
23866: }
23866: # 16 "/usr/include/boost/algorithm/string/std/list_traits.hpp" 2 3 4
23866:
23866:
23866: namespace boost {
23866: namespace algorithm {
23866:
23866:
23866:
23866:
23866:
23866: template<typename T, typename AllocT>
23866: class has_stable_iterators< ::std::list<T,AllocT> >
23866: {
23866: public:
23866:
23866:
23866:
23866: static const bool value=true;
23866:
23866: typedef mpl::bool_<has_stable_iterators<T>::value> type;
23866: };
23866:
23866:
23866: template<typename T, typename AllocT>
23866: class has_const_time_insert< ::std::list<T,AllocT> >
23866: {
23866: public:
23866:
23866:
23866:
23866: static const bool value=true;
23866:
23866: typedef mpl::bool_<has_const_time_insert<T>::value> type;
23866: };
23866:
23866:
23866: template<typename T, typename AllocT>
23866: class has_const_time_erase< ::std::list<T,AllocT> >
23866: {
23866: public:
23866:
23866:
23866:
23866: static const bool value=true;
23866:
23866: typedef mpl::bool_<has_const_time_erase<T>::value> type;
23866: };
23866:
23866:
23866: }
23866: }
23866: # 21 "/usr/include/boost/algorithm/string/std_containers_traits.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/algorithm/string/std/slist_traits.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/std/slist_traits.hpp" 3 4
23866: #define BOOST_STRING_STD_SLIST_TRAITS_HPP
23866:
23866: # 1 "/usr/include/boost/algorithm/string/config.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/config.hpp" 3 4
23866: #define BOOST_STRING_CONFIG_HPP
23866: # 21 "/usr/include/boost/algorithm/string/config.hpp" 3 4
23866: #define BOOST_STRING_TYPENAME BOOST_DEDUCED_TYPENAME
23866: # 15 "/usr/include/boost/algorithm/string/std/slist_traits.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/c++/10/ext/slist" 1 3 4
23866: # 45 "/usr/include/c++/10/ext/slist" 3 4
23866: #define _SLIST 1
23866: # 54 "/usr/include/c++/10/ext/slist" 3 4
23866: namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: struct _Slist_node_base
23866: {
23866: _Slist_node_base* _M_next;
23866: };
23866:
23866: inline _Slist_node_base*
23866: __slist_make_link(_Slist_node_base* __prev_node,
23866: _Slist_node_base* __new_node)
23866: {
23866: __new_node->_M_next = __prev_node->_M_next;
23866: __prev_node->_M_next = __new_node;
23866: return __new_node;
23866: }
23866:
23866: inline _Slist_node_base*
23866: __slist_previous(_Slist_node_base* __head,
23866: const _Slist_node_base* __node)
23866: {
23866: while (__head && __head->_M_next != __node)
23866: __head = __head->_M_next;
23866: return __head;
23866: }
23866:
23866: inline const _Slist_node_base*
23866: __slist_previous(const _Slist_node_base* __head,
23866: const _Slist_node_base* __node)
23866: {
23866: while (__head && __head->_M_next != __node)
23866: __head = __head->_M_next;
23866: return __head;
23866: }
23866:
23866: inline void
23866: __slist_splice_after(_Slist_node_base* __pos,
23866: _Slist_node_base* __before_first,
23866: _Slist_node_base* __before_last)
23866: {
23866: if (__pos != __before_first && __pos != __before_last)
23866: {
23866: _Slist_node_base* __first = __before_first->_M_next;
23866: _Slist_node_base* __after = __pos->_M_next;
23866: __before_first->_M_next = __before_last->_M_next;
23866: __pos->_M_next = __first;
23866: __before_last->_M_next = __after;
23866: }
23866: }
23866:
23866: inline void
23866: __slist_splice_after(_Slist_node_base* __pos, _Slist_node_base* __head)
23866: {
23866: _Slist_node_base* __before_last = __slist_previous(__head, 0);
23866: if (__before_last != __head)
23866: {
23866: _Slist_node_base* __after = __pos->_M_next;
23866: __pos->_M_next = __head->_M_next;
23866: __head->_M_next = 0;
23866: __before_last->_M_next = __after;
23866: }
23866: }
23866:
23866: inline _Slist_node_base*
23866: __slist_reverse(_Slist_node_base* __node)
23866: {
23866: _Slist_node_base* __result = __node;
23866: __node = __node->_M_next;
23866: __result->_M_next = 0;
23866: while(__node)
23866: {
23866: _Slist_node_base* __next = __node->_M_next;
23866: __node->_M_next = __result;
23866: __result = __node;
23866: __node = __next;
23866: }
23866: return __result;
23866: }
23866:
23866: inline std::size_t
23866: __slist_size(_Slist_node_base* __node)
23866: {
23866: std::size_t __result = 0;
23866: for (; __node != 0; __node = __node->_M_next)
23866: ++__result;
23866: return __result;
23866: }
23866:
23866: template <class _Tp>
23866: struct _Slist_node : public _Slist_node_base
23866: {
23866: _Tp _M_data;
23866: };
23866:
23866: struct _Slist_iterator_base
23866: {
23866: typedef std::size_t size_type;
23866: typedef std::ptrdiff_t difference_type;
23866: typedef std::forward_iterator_tag iterator_category;
23866:
23866: _Slist_node_base* _M_node;
23866:
23866: _Slist_iterator_base(_Slist_node_base* __x)
23866: : _M_node(__x) {}
23866:
23866: void
23866: _M_incr()
23866: { _M_node = _M_node->_M_next; }
23866:
23866: bool
23866: operator==(const _Slist_iterator_base& __x) const
23866: { return _M_node == __x._M_node; }
23866:
23866: bool
23866: operator!=(const _Slist_iterator_base& __x) const
23866: { return _M_node != __x._M_node; }
23866: };
23866:
23866: template <class _Tp, class _Ref, class _Ptr>
23866: struct _Slist_iterator : public _Slist_iterator_base
23866: {
23866: typedef _Slist_iterator<_Tp, _Tp&, _Tp*> iterator;
23866: typedef _Slist_iterator<_Tp, const _Tp&, const _Tp*> const_iterator;
23866: typedef _Slist_iterator<_Tp, _Ref, _Ptr> _Self;
23866:
23866: typedef _Tp value_type;
23866: typedef _Ptr pointer;
23866: typedef _Ref reference;
23866: typedef _Slist_node<_Tp> _Node;
23866:
23866: explicit
23866: _Slist_iterator(_Node* __x)
23866: : _Slist_iterator_base(__x) {}
23866:
23866: _Slist_iterator()
23866: : _Slist_iterator_base(0) {}
23866:
23866: _Slist_iterator(const iterator& __x)
23866: : _Slist_iterator_base(__x._M_node) {}
23866:
23866: reference
23866: operator*() const
23866: { return ((_Node*) _M_node)->_M_data; }
23866:
23866: pointer
23866: operator->() const
23866: { return &(operator*()); }
23866:
23866: _Self&
23866: operator++()
23866: {
23866: _M_incr();
23866: return *this;
23866: }
23866:
23866: _Self
23866: operator++(int)
23866: {
23866: _Self __tmp = *this;
23866: _M_incr();
23866: return __tmp;
23866: }
23866: };
23866:
23866: template <class _Tp, class _Alloc>
23866: struct _Slist_base
23866: : public __alloc_traits<_Alloc>::template rebind<_Slist_node<_Tp> >::other
23866: {
23866: typedef typename __alloc_traits<_Alloc>::template
23866: rebind<_Slist_node<_Tp> >::other _Node_alloc;
23866: typedef _Alloc allocator_type;
23866:
23866: allocator_type
23866: get_allocator() const
23866: { return *static_cast<const _Node_alloc*>(this); }
23866:
23866: _Slist_base(const allocator_type& __a)
23866: : _Node_alloc(__a)
23866: { this->_M_head._M_next = 0; }
23866:
23866: ~_Slist_base()
23866: { _M_erase_after(&this->_M_head, 0); }
23866:
23866: protected:
23866: _Slist_node_base _M_head;
23866:
23866: _Slist_node<_Tp>*
23866: _M_get_node()
23866: { return _Node_alloc::allocate(1); }
23866:
23866: void
23866: _M_put_node(_Slist_node<_Tp>* __p)
23866: { _Node_alloc::deallocate(__p, 1); }
23866:
23866: protected:
23866: _Slist_node_base* _M_erase_after(_Slist_node_base* __pos)
23866: {
23866: _Slist_node<_Tp>* __next = (_Slist_node<_Tp>*) (__pos->_M_next);
23866: _Slist_node_base* __next_next = __next->_M_next;
23866: __pos->_M_next = __next_next;
23866: allocator_type __a = get_allocator();
23866: __alloc_traits<allocator_type>::destroy(__a, &__next->_M_data);
23866: _M_put_node(__next);
23866: return __next_next;
23866: }
23866: _Slist_node_base* _M_erase_after(_Slist_node_base*, _Slist_node_base*);
23866: };
23866:
23866: template <class _Tp, class _Alloc>
23866: _Slist_node_base*
23866: _Slist_base<_Tp,_Alloc>::_M_erase_after(_Slist_node_base* __before_first,
23866: _Slist_node_base* __last_node)
23866: {
23866: _Slist_node<_Tp>* __cur = (_Slist_node<_Tp>*) (__before_first->_M_next);
23866: while (__cur != __last_node)
23866: {
23866: _Slist_node<_Tp>* __tmp = __cur;
23866: __cur = (_Slist_node<_Tp>*) __cur->_M_next;
23866: allocator_type __a = get_allocator();
23866: __alloc_traits<allocator_type>::destroy(__a, &__tmp->_M_data);
23866: _M_put_node(__tmp);
23866: }
23866: __before_first->_M_next = __last_node;
23866: return __last_node;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class _Tp, class _Alloc = std::allocator<_Tp> >
23866: class slist : private _Slist_base<_Tp,_Alloc>
23866: {
23866:
23866:
23866:
23866: private:
23866: typedef _Slist_base<_Tp,_Alloc> _Base;
23866:
23866: public:
23866: typedef _Tp value_type;
23866: typedef value_type* pointer;
23866: typedef const value_type* const_pointer;
23866: typedef value_type& reference;
23866: typedef const value_type& const_reference;
23866: typedef std::size_t size_type;
23866: typedef std::ptrdiff_t difference_type;
23866:
23866: typedef _Slist_iterator<_Tp, _Tp&, _Tp*> iterator;
23866: typedef _Slist_iterator<_Tp, const _Tp&, const _Tp*> const_iterator;
23866:
23866: typedef typename _Base::allocator_type allocator_type;
23866:
23866: allocator_type
23866: get_allocator() const
23866: { return _Base::get_allocator(); }
23866:
23866: private:
23866: typedef _Slist_node<_Tp> _Node;
23866: typedef _Slist_node_base _Node_base;
23866: typedef _Slist_iterator_base _Iterator_base;
23866:
23866: _Node*
23866: _M_create_node(const value_type& __x)
23866: {
23866: _Node* __node = this->_M_get_node();
23866: try
23866: {
23866: allocator_type __a = get_allocator();
23866: __alloc_traits<allocator_type>::construct(__a, &__node->_M_data,
23866: __x);
23866: __node->_M_next = 0;
23866: }
23866: catch(...)
23866: {
23866: this->_M_put_node(__node);
23866: throw;
23866: }
23866: return __node;
23866: }
23866:
23866: _Node*
23866: _M_create_node()
23866: {
23866: _Node* __node = this->_M_get_node();
23866: try
23866: {
23866: allocator_type __a = get_allocator();
23866: __alloc_traits<allocator_type>::construct(__a, &__node->_M_data,
23866: value_type());
23866: __node->_M_next = 0;
23866: }
23866: catch(...)
23866: {
23866: this->_M_put_node(__node);
23866: throw;
23866: }
23866: return __node;
23866: }
23866:
23866: public:
23866: explicit
23866: slist(const allocator_type& __a = allocator_type())
23866: : _Base(__a) {}
23866:
23866: slist(size_type __n, const value_type& __x,
23866: const allocator_type& __a = allocator_type())
23866: : _Base(__a)
23866: { _M_insert_after_fill(&this->_M_head, __n, __x); }
23866:
23866: explicit
23866: slist(size_type __n)
23866: : _Base(allocator_type())
23866: { _M_insert_after_fill(&this->_M_head, __n, value_type()); }
23866:
23866:
23866:
23866: template <class _InputIterator>
23866: slist(_InputIterator __first, _InputIterator __last,
23866: const allocator_type& __a = allocator_type())
23866: : _Base(__a)
23866: { _M_insert_after_range(&this->_M_head, __first, __last); }
23866:
23866: slist(const slist& __x)
23866: : _Base(__x.get_allocator())
23866: { _M_insert_after_range(&this->_M_head, __x.begin(), __x.end()); }
23866:
23866: slist&
23866: operator= (const slist& __x);
23866:
23866: ~slist() {}
23866:
23866: public:
23866:
23866:
23866:
23866:
23866:
23866: void
23866: assign(size_type __n, const _Tp& __val)
23866: { _M_fill_assign(__n, __val); }
23866:
23866: void
23866: _M_fill_assign(size_type __n, const _Tp& __val);
23866:
23866: template <class _InputIterator>
23866: void
23866: assign(_InputIterator __first, _InputIterator __last)
23866: {
23866: typedef typename std::__is_integer<_InputIterator>::__type _Integral;
23866: _M_assign_dispatch(__first, __last, _Integral());
23866: }
23866:
23866: template <class _Integer>
23866: void
23866: _M_assign_dispatch(_Integer __n, _Integer __val, std::__true_type)
23866: { _M_fill_assign((size_type) __n, (_Tp) __val); }
23866:
23866: template <class _InputIterator>
23866: void
23866: _M_assign_dispatch(_InputIterator __first, _InputIterator __last,
23866: std::__false_type);
23866:
23866: public:
23866:
23866: iterator
23866: begin()
23866: { return iterator((_Node*)this->_M_head._M_next); }
23866:
23866: const_iterator
23866: begin() const
23866: { return const_iterator((_Node*)this->_M_head._M_next);}
23866:
23866: iterator
23866: end()
23866: { return iterator(0); }
23866:
23866: const_iterator
23866: end() const
23866: { return const_iterator(0); }
23866: # 444 "/usr/include/c++/10/ext/slist" 3 4
23866: iterator
23866: before_begin()
23866: { return iterator((_Node*) &this->_M_head); }
23866:
23866: const_iterator
23866: before_begin() const
23866: { return const_iterator((_Node*) &this->_M_head); }
23866:
23866: size_type
23866: size() const
23866: { return __slist_size(this->_M_head._M_next); }
23866:
23866: size_type
23866: max_size() const
23866: { return size_type(-1); }
23866:
23866: [[__nodiscard__]] bool
23866: empty() const
23866: { return this->_M_head._M_next == 0; }
23866:
23866: void
23866: swap(slist& __x)
23866: { std::swap(this->_M_head._M_next, __x._M_head._M_next); }
23866:
23866: public:
23866:
23866: reference
23866: front()
23866: { return ((_Node*) this->_M_head._M_next)->_M_data; }
23866:
23866: const_reference
23866: front() const
23866: { return ((_Node*) this->_M_head._M_next)->_M_data; }
23866:
23866: void
23866: push_front(const value_type& __x)
23866: { __slist_make_link(&this->_M_head, _M_create_node(__x)); }
23866:
23866: void
23866: push_front()
23866: { __slist_make_link(&this->_M_head, _M_create_node()); }
23866:
23866: void
23866: pop_front()
23866: {
23866: _Node* __node = (_Node*) this->_M_head._M_next;
23866: this->_M_head._M_next = __node->_M_next;
23866: allocator_type __a = get_allocator();
23866: __alloc_traits<allocator_type>::destroy(__a, &__node->_M_data);
23866: this->_M_put_node(__node);
23866: }
23866:
23866: iterator
23866: previous(const_iterator __pos)
23866: { return iterator((_Node*) __slist_previous(&this->_M_head,
23866: __pos._M_node)); }
23866:
23866: const_iterator
23866: previous(const_iterator __pos) const
23866: { return const_iterator((_Node*) __slist_previous(&this->_M_head,
23866: __pos._M_node)); }
23866:
23866: private:
23866: _Node*
23866: _M_insert_after(_Node_base* __pos, const value_type& __x)
23866: { return (_Node*) (__slist_make_link(__pos, _M_create_node(__x))); }
23866:
23866: _Node*
23866: _M_insert_after(_Node_base* __pos)
23866: { return (_Node*) (__slist_make_link(__pos, _M_create_node())); }
23866:
23866: void
23866: _M_insert_after_fill(_Node_base* __pos,
23866: size_type __n, const value_type& __x)
23866: {
23866: for (size_type __i = 0; __i < __n; ++__i)
23866: __pos = __slist_make_link(__pos, _M_create_node(__x));
23866: }
23866:
23866:
23866: template <class _InIterator>
23866: void
23866: _M_insert_after_range(_Node_base* __pos,
23866: _InIterator __first, _InIterator __last)
23866: {
23866: typedef typename std::__is_integer<_InIterator>::__type _Integral;
23866: _M_insert_after_range(__pos, __first, __last, _Integral());
23866: }
23866:
23866: template <class _Integer>
23866: void
23866: _M_insert_after_range(_Node_base* __pos, _Integer __n, _Integer __x,
23866: std::__true_type)
23866: { _M_insert_after_fill(__pos, __n, __x); }
23866:
23866: template <class _InIterator>
23866: void
23866: _M_insert_after_range(_Node_base* __pos,
23866: _InIterator __first, _InIterator __last,
23866: std::__false_type)
23866: {
23866: while (__first != __last)
23866: {
23866: __pos = __slist_make_link(__pos, _M_create_node(*__first));
23866: ++__first;
23866: }
23866: }
23866:
23866: public:
23866: iterator
23866: insert_after(iterator __pos, const value_type& __x)
23866: { return iterator(_M_insert_after(__pos._M_node, __x)); }
23866:
23866: iterator
23866: insert_after(iterator __pos)
23866: { return insert_after(__pos, value_type()); }
23866:
23866: void
23866: insert_after(iterator __pos, size_type __n, const value_type& __x)
23866: { _M_insert_after_fill(__pos._M_node, __n, __x); }
23866:
23866:
23866:
23866: template <class _InIterator>
23866: void
23866: insert_after(iterator __pos, _InIterator __first, _InIterator __last)
23866: { _M_insert_after_range(__pos._M_node, __first, __last); }
23866:
23866: iterator
23866: insert(iterator __pos, const value_type& __x)
23866: { return iterator(_M_insert_after(__slist_previous(&this->_M_head,
23866: __pos._M_node),
23866: __x)); }
23866:
23866: iterator
23866: insert(iterator __pos)
23866: { return iterator(_M_insert_after(__slist_previous(&this->_M_head,
23866: __pos._M_node),
23866: value_type())); }
23866:
23866: void
23866: insert(iterator __pos, size_type __n, const value_type& __x)
23866: { _M_insert_after_fill(__slist_previous(&this->_M_head, __pos._M_node),
23866: __n, __x); }
23866:
23866:
23866:
23866: template <class _InIterator>
23866: void
23866: insert(iterator __pos, _InIterator __first, _InIterator __last)
23866: { _M_insert_after_range(__slist_previous(&this->_M_head, __pos._M_node),
23866: __first, __last); }
23866:
23866: public:
23866: iterator
23866: erase_after(iterator __pos)
23866: { return iterator((_Node*) this->_M_erase_after(__pos._M_node)); }
23866:
23866: iterator
23866: erase_after(iterator __before_first, iterator __last)
23866: {
23866: return iterator((_Node*) this->_M_erase_after(__before_first._M_node,
23866: __last._M_node));
23866: }
23866:
23866: iterator
23866: erase(iterator __pos)
23866: {
23866: return iterator((_Node*) this->_M_erase_after
23866: (__slist_previous(&this->_M_head, __pos._M_node)));
23866: }
23866:
23866: iterator
23866: erase(iterator __first, iterator __last)
23866: {
23866: return iterator((_Node*) this->_M_erase_after
23866: (__slist_previous(&this->_M_head, __first._M_node),
23866: __last._M_node));
23866: }
23866:
23866: void
23866: resize(size_type new_size, const _Tp& __x);
23866:
23866: void
23866: resize(size_type new_size)
23866: { resize(new_size, _Tp()); }
23866:
23866: void
23866: clear()
23866: { this->_M_erase_after(&this->_M_head, 0); }
23866:
23866: public:
23866:
23866:
23866: void
23866: splice_after(iterator __pos,
23866: iterator __before_first, iterator __before_last)
23866: {
23866: if (__before_first != __before_last)
23866: __slist_splice_after(__pos._M_node, __before_first._M_node,
23866: __before_last._M_node);
23866: }
23866:
23866:
23866:
23866: void
23866: splice_after(iterator __pos, iterator __prev)
23866: { __slist_splice_after(__pos._M_node,
23866: __prev._M_node, __prev._M_node->_M_next); }
23866:
23866:
23866:
23866:
23866: void
23866: splice_after(iterator __pos, slist& __x)
23866: { __slist_splice_after(__pos._M_node, &__x._M_head); }
23866:
23866:
23866: void
23866: splice(iterator __pos, slist& __x)
23866: {
23866: if (__x._M_head._M_next)
23866: __slist_splice_after(__slist_previous(&this->_M_head, __pos._M_node),
23866: &__x._M_head,
23866: __slist_previous(&__x._M_head, 0)); }
23866:
23866:
23866: void
23866: splice(iterator __pos, slist& __x, iterator __i)
23866: { __slist_splice_after(__slist_previous(&this->_M_head, __pos._M_node),
23866: __slist_previous(&__x._M_head, __i._M_node),
23866: __i._M_node); }
23866:
23866:
23866:
23866: void
23866: splice(iterator __pos, slist& __x, iterator __first, iterator __last)
23866: {
23866: if (__first != __last)
23866: __slist_splice_after(__slist_previous(&this->_M_head, __pos._M_node),
23866: __slist_previous(&__x._M_head, __first._M_node),
23866: __slist_previous(__first._M_node,
23866: __last._M_node));
23866: }
23866:
23866: public:
23866: void
23866: reverse()
23866: {
23866: if (this->_M_head._M_next)
23866: this->_M_head._M_next = __slist_reverse(this->_M_head._M_next);
23866: }
23866:
23866: void
23866: remove(const _Tp& __val);
23866:
23866: void
23866: unique();
23866:
23866: void
23866: merge(slist& __x);
23866:
23866: void
23866: sort();
23866:
23866: template <class _Predicate>
23866: void
23866: remove_if(_Predicate __pred);
23866:
23866: template <class _BinaryPredicate>
23866: void
23866: unique(_BinaryPredicate __pred);
23866:
23866: template <class _StrictWeakOrdering>
23866: void
23866: merge(slist&, _StrictWeakOrdering);
23866:
23866: template <class _StrictWeakOrdering>
23866: void
23866: sort(_StrictWeakOrdering __comp);
23866: };
23866:
23866: template <class _Tp, class _Alloc>
23866: slist<_Tp, _Alloc>&
23866: slist<_Tp, _Alloc>::operator=(const slist<_Tp, _Alloc>& __x)
23866: {
23866: if (&__x != this)
23866: {
23866: _Node_base* __p1 = &this->_M_head;
23866: _Node* __n1 = (_Node*) this->_M_head._M_next;
23866: const _Node* __n2 = (const _Node*) __x._M_head._M_next;
23866: while (__n1 && __n2)
23866: {
23866: __n1->_M_data = __n2->_M_data;
23866: __p1 = __n1;
23866: __n1 = (_Node*) __n1->_M_next;
23866: __n2 = (const _Node*) __n2->_M_next;
23866: }
23866: if (__n2 == 0)
23866: this->_M_erase_after(__p1, 0);
23866: else
23866: _M_insert_after_range(__p1, const_iterator((_Node*)__n2),
23866: const_iterator(0));
23866: }
23866: return *this;
23866: }
23866:
23866: template <class _Tp, class _Alloc>
23866: void
23866: slist<_Tp, _Alloc>::_M_fill_assign(size_type __n, const _Tp& __val)
23866: {
23866: _Node_base* __prev = &this->_M_head;
23866: _Node* __node = (_Node*) this->_M_head._M_next;
23866: for (; __node != 0 && __n > 0; --__n)
23866: {
23866: __node->_M_data = __val;
23866: __prev = __node;
23866: __node = (_Node*) __node->_M_next;
23866: }
23866: if (__n > 0)
23866: _M_insert_after_fill(__prev, __n, __val);
23866: else
23866: this->_M_erase_after(__prev, 0);
23866: }
23866:
23866: template <class _Tp, class _Alloc>
23866: template <class _InputIterator>
23866: void
23866: slist<_Tp, _Alloc>::_M_assign_dispatch(_InputIterator __first,
23866: _InputIterator __last,
23866: std::__false_type)
23866: {
23866: _Node_base* __prev = &this->_M_head;
23866: _Node* __node = (_Node*) this->_M_head._M_next;
23866: while (__node != 0 && __first != __last)
23866: {
23866: __node->_M_data = *__first;
23866: __prev = __node;
23866: __node = (_Node*) __node->_M_next;
23866: ++__first;
23866: }
23866: if (__first != __last)
23866: _M_insert_after_range(__prev, __first, __last);
23866: else
23866: this->_M_erase_after(__prev, 0);
23866: }
23866:
23866: template <class _Tp, class _Alloc>
23866: inline bool
23866: operator==(const slist<_Tp, _Alloc>& _SL1, const slist<_Tp, _Alloc>& _SL2)
23866: {
23866: typedef typename slist<_Tp,_Alloc>::const_iterator const_iterator;
23866: const_iterator __end1 = _SL1.end();
23866: const_iterator __end2 = _SL2.end();
23866:
23866: const_iterator __i1 = _SL1.begin();
23866: const_iterator __i2 = _SL2.begin();
23866: while (__i1 != __end1 && __i2 != __end2 && *__i1 == *__i2)
23866: {
23866: ++__i1;
23866: ++__i2;
23866: }
23866: return __i1 == __end1 && __i2 == __end2;
23866: }
23866:
23866:
23866: template <class _Tp, class _Alloc>
23866: inline bool
23866: operator<(const slist<_Tp, _Alloc>& _SL1, const slist<_Tp, _Alloc>& _SL2)
23866: { return std::lexicographical_compare(_SL1.begin(), _SL1.end(),
23866: _SL2.begin(), _SL2.end()); }
23866:
23866: template <class _Tp, class _Alloc>
23866: inline bool
23866: operator!=(const slist<_Tp, _Alloc>& _SL1, const slist<_Tp, _Alloc>& _SL2)
23866: { return !(_SL1 == _SL2); }
23866:
23866: template <class _Tp, class _Alloc>
23866: inline bool
23866: operator>(const slist<_Tp, _Alloc>& _SL1, const slist<_Tp, _Alloc>& _SL2)
23866: { return _SL2 < _SL1; }
23866:
23866: template <class _Tp, class _Alloc>
23866: inline bool
23866: operator<=(const slist<_Tp, _Alloc>& _SL1, const slist<_Tp, _Alloc>& _SL2)
23866: { return !(_SL2 < _SL1); }
23866:
23866: template <class _Tp, class _Alloc>
23866: inline bool
23866: operator>=(const slist<_Tp, _Alloc>& _SL1, const slist<_Tp, _Alloc>& _SL2)
23866: { return !(_SL1 < _SL2); }
23866:
23866: template <class _Tp, class _Alloc>
23866: inline void
23866: swap(slist<_Tp, _Alloc>& __x, slist<_Tp, _Alloc>& __y)
23866: { __x.swap(__y); }
23866:
23866: template <class _Tp, class _Alloc>
23866: void
23866: slist<_Tp, _Alloc>::resize(size_type __len, const _Tp& __x)
23866: {
23866: _Node_base* __cur = &this->_M_head;
23866: while (__cur->_M_next != 0 && __len > 0)
23866: {
23866: --__len;
23866: __cur = __cur->_M_next;
23866: }
23866: if (__cur->_M_next)
23866: this->_M_erase_after(__cur, 0);
23866: else
23866: _M_insert_after_fill(__cur, __len, __x);
23866: }
23866:
23866: template <class _Tp, class _Alloc>
23866: void
23866: slist<_Tp, _Alloc>::remove(const _Tp& __val)
23866: {
23866: _Node_base* __cur = &this->_M_head;
23866: while (__cur && __cur->_M_next)
23866: {
23866: if (((_Node*) __cur->_M_next)->_M_data == __val)
23866: this->_M_erase_after(__cur);
23866: else
23866: __cur = __cur->_M_next;
23866: }
23866: }
23866:
23866: template <class _Tp, class _Alloc>
23866: void
23866: slist<_Tp, _Alloc>::unique()
23866: {
23866: _Node_base* __cur = this->_M_head._M_next;
23866: if (__cur)
23866: {
23866: while (__cur->_M_next)
23866: {
23866: if (((_Node*)__cur)->_M_data
23866: == ((_Node*)(__cur->_M_next))->_M_data)
23866: this->_M_erase_after(__cur);
23866: else
23866: __cur = __cur->_M_next;
23866: }
23866: }
23866: }
23866:
23866: template <class _Tp, class _Alloc>
23866: void
23866: slist<_Tp, _Alloc>::merge(slist<_Tp, _Alloc>& __x)
23866: {
23866: _Node_base* __n1 = &this->_M_head;
23866: while (__n1->_M_next && __x._M_head._M_next)
23866: {
23866: if (((_Node*) __x._M_head._M_next)->_M_data
23866: < ((_Node*) __n1->_M_next)->_M_data)
23866: __slist_splice_after(__n1, &__x._M_head, __x._M_head._M_next);
23866: __n1 = __n1->_M_next;
23866: }
23866: if (__x._M_head._M_next)
23866: {
23866: __n1->_M_next = __x._M_head._M_next;
23866: __x._M_head._M_next = 0;
23866: }
23866: }
23866:
23866: template <class _Tp, class _Alloc>
23866: void
23866: slist<_Tp, _Alloc>::sort()
23866: {
23866: if (this->_M_head._M_next && this->_M_head._M_next->_M_next)
23866: {
23866: slist __carry;
23866: slist __counter[64];
23866: int __fill = 0;
23866: while (!empty())
23866: {
23866: __slist_splice_after(&__carry._M_head,
23866: &this->_M_head, this->_M_head._M_next);
23866: int __i = 0;
23866: while (__i < __fill && !__counter[__i].empty())
23866: {
23866: __counter[__i].merge(__carry);
23866: __carry.swap(__counter[__i]);
23866: ++__i;
23866: }
23866: __carry.swap(__counter[__i]);
23866: if (__i == __fill)
23866: ++__fill;
23866: }
23866:
23866: for (int __i = 1; __i < __fill; ++__i)
23866: __counter[__i].merge(__counter[__i-1]);
23866: this->swap(__counter[__fill-1]);
23866: }
23866: }
23866:
23866: template <class _Tp, class _Alloc>
23866: template <class _Predicate>
23866: void slist<_Tp, _Alloc>::remove_if(_Predicate __pred)
23866: {
23866: _Node_base* __cur = &this->_M_head;
23866: while (__cur->_M_next)
23866: {
23866: if (__pred(((_Node*) __cur->_M_next)->_M_data))
23866: this->_M_erase_after(__cur);
23866: else
23866: __cur = __cur->_M_next;
23866: }
23866: }
23866:
23866: template <class _Tp, class _Alloc>
23866: template <class _BinaryPredicate>
23866: void
23866: slist<_Tp, _Alloc>::unique(_BinaryPredicate __pred)
23866: {
23866: _Node* __cur = (_Node*) this->_M_head._M_next;
23866: if (__cur)
23866: {
23866: while (__cur->_M_next)
23866: {
23866: if (__pred(((_Node*)__cur)->_M_data,
23866: ((_Node*)(__cur->_M_next))->_M_data))
23866: this->_M_erase_after(__cur);
23866: else
23866: __cur = (_Node*) __cur->_M_next;
23866: }
23866: }
23866: }
23866:
23866: template <class _Tp, class _Alloc>
23866: template <class _StrictWeakOrdering>
23866: void
23866: slist<_Tp, _Alloc>::merge(slist<_Tp, _Alloc>& __x,
23866: _StrictWeakOrdering __comp)
23866: {
23866: _Node_base* __n1 = &this->_M_head;
23866: while (__n1->_M_next && __x._M_head._M_next)
23866: {
23866: if (__comp(((_Node*) __x._M_head._M_next)->_M_data,
23866: ((_Node*) __n1->_M_next)->_M_data))
23866: __slist_splice_after(__n1, &__x._M_head, __x._M_head._M_next);
23866: __n1 = __n1->_M_next;
23866: }
23866: if (__x._M_head._M_next)
23866: {
23866: __n1->_M_next = __x._M_head._M_next;
23866: __x._M_head._M_next = 0;
23866: }
23866: }
23866:
23866: template <class _Tp, class _Alloc>
23866: template <class _StrictWeakOrdering>
23866: void
23866: slist<_Tp, _Alloc>::sort(_StrictWeakOrdering __comp)
23866: {
23866: if (this->_M_head._M_next && this->_M_head._M_next->_M_next)
23866: {
23866: slist __carry;
23866: slist __counter[64];
23866: int __fill = 0;
23866: while (!empty())
23866: {
23866: __slist_splice_after(&__carry._M_head,
23866: &this->_M_head, this->_M_head._M_next);
23866: int __i = 0;
23866: while (__i < __fill && !__counter[__i].empty())
23866: {
23866: __counter[__i].merge(__carry, __comp);
23866: __carry.swap(__counter[__i]);
23866: ++__i;
23866: }
23866: __carry.swap(__counter[__i]);
23866: if (__i == __fill)
23866: ++__fill;
23866: }
23866:
23866: for (int __i = 1; __i < __fill; ++__i)
23866: __counter[__i].merge(__counter[__i-1], __comp);
23866: this->swap(__counter[__fill-1]);
23866: }
23866: }
23866:
23866:
23866: }
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866: template <class _Tp, class _Alloc>
23866: class insert_iterator<__gnu_cxx::slist<_Tp, _Alloc> >
23866: {
23866: protected:
23866: typedef __gnu_cxx::slist<_Tp, _Alloc> _Container;
23866: _Container* container;
23866: typename _Container::iterator iter;
23866:
23866: public:
23866: typedef _Container container_type;
23866: typedef output_iterator_tag iterator_category;
23866: typedef void value_type;
23866: typedef void difference_type;
23866: typedef void pointer;
23866: typedef void reference;
23866:
23866: insert_iterator(_Container& __x, typename _Container::iterator __i)
23866: : container(&__x)
23866: {
23866: if (__i == __x.begin())
23866: iter = __x.before_begin();
23866: else
23866: iter = __x.previous(__i);
23866: }
23866:
23866: insert_iterator<_Container>&
23866: operator=(const typename _Container::value_type& __value)
23866: {
23866: iter = container->insert_after(iter, __value);
23866: return *this;
23866: }
23866:
23866: insert_iterator<_Container>&
23866: operator*()
23866: { return *this; }
23866:
23866: insert_iterator<_Container>&
23866: operator++()
23866: { return *this; }
23866:
23866: insert_iterator<_Container>&
23866: operator++(int)
23866: { return *this; }
23866: };
23866:
23866:
23866: }
23866: # 17 "/usr/include/boost/algorithm/string/std/slist_traits.hpp" 2 3 4
23866:
23866:
23866: namespace boost {
23866: namespace algorithm {
23866:
23866:
23866:
23866:
23866:
23866: template<typename T, typename AllocT>
23866: class has_stable_iterators< __gnu_cxx::slist<T,AllocT> >
23866: {
23866: public:
23866:
23866:
23866:
23866: static const bool value=true;
23866:
23866: typedef mpl::bool_<has_stable_iterators<T>::value> type;
23866: };
23866:
23866:
23866: template<typename T, typename AllocT>
23866: class has_const_time_insert< __gnu_cxx::slist<T,AllocT> >
23866: {
23866: public:
23866:
23866:
23866:
23866: static const bool value=true;
23866:
23866: typedef mpl::bool_<has_const_time_insert<T>::value> type;
23866: };
23866:
23866:
23866: template<typename T, typename AllocT>
23866: class has_const_time_erase< __gnu_cxx::slist<T,AllocT> >
23866: {
23866: public:
23866:
23866:
23866:
23866: static const bool value=true;
23866:
23866: typedef mpl::bool_<has_const_time_erase<T>::value> type;
23866: };
23866:
23866:
23866: }
23866: }
23866: # 24 "/usr/include/boost/algorithm/string/std_containers_traits.hpp" 2 3 4
23866: # 19 "/usr/include/boost/algorithm/string.hpp" 2 3 4
23866: # 1 "/usr/include/boost/algorithm/string/trim.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/trim.hpp" 3 4
23866: #define BOOST_STRING_TRIM_HPP
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/range/begin.hpp" 1 3 4
23866: # 12 "/usr/include/boost/range/begin.hpp" 3 4
23866: #define BOOST_RANGE_BEGIN_HPP
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/range/config.hpp" 1 3 4
23866: # 12 "/usr/include/boost/range/config.hpp" 3 4
23866: #define BOOST_RANGE_CONFIG_HPP
23866: # 29 "/usr/include/boost/range/config.hpp" 3 4
23866: #define BOOST_RANGE_DEDUCED_TYPENAME BOOST_DEDUCED_TYPENAME
23866: # 44 "/usr/include/boost/range/config.hpp" 3 4
23866: #define BOOST_RANGE_ARRAY_REF() (&boost_range_array)
23866:
23866:
23866:
23866: #define BOOST_RANGE_UNUSED __attribute__((unused))
23866: # 19 "/usr/include/boost/range/begin.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/range/iterator.hpp" 1 3 4
23866: # 12 "/usr/include/boost/range/iterator.hpp" 3 4
23866: #define BOOST_RANGE_ITERATOR_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/range/range_fwd.hpp" 1 3 4
23866: # 11 "/usr/include/boost/range/range_fwd.hpp" 3 4
23866: #define BOOST_RANGE_RANGE_FWD_HPP_INCLUDED
23866:
23866: namespace boost
23866: {
23866:
23866:
23866: template<typename C, typename Enabler>
23866: struct range_iterator;
23866:
23866: template<typename C, typename Enabler>
23866: struct range_mutable_iterator;
23866:
23866: template<typename C, typename Enabler>
23866: struct range_const_iterator;
23866:
23866:
23866: template<typename IteratorT>
23866: class iterator_range;
23866:
23866: template<typename ForwardRange>
23866: class sub_range;
23866:
23866:
23866: template<typename T>
23866: struct range_category;
23866:
23866: template<typename T>
23866: struct range_difference;
23866:
23866: template<typename T>
23866: struct range_pointer;
23866:
23866: template<typename T>
23866: struct range_reference;
23866:
23866: template<typename T>
23866: struct range_reverse_iterator;
23866:
23866: template<typename T>
23866: struct range_size;
23866:
23866: template<typename T>
23866: struct range_value;
23866:
23866: template<typename T>
23866: struct has_range_iterator;
23866:
23866: template<typename T>
23866: struct has_range_const_iterator;
23866:
23866: }
23866: # 20 "/usr/include/boost/range/iterator.hpp" 2 3 4
23866: # 1 "/usr/include/boost/range/mutable_iterator.hpp" 1 3 4
23866: # 12 "/usr/include/boost/range/mutable_iterator.hpp" 3 4
23866: #define BOOST_RANGE_MUTABLE_ITERATOR_HPP
23866: # 21 "/usr/include/boost/range/mutable_iterator.hpp" 3 4
23866: # 1 "/usr/include/boost/range/detail/extract_optional_type.hpp" 1 3 4
23866: # 11 "/usr/include/boost/range/detail/extract_optional_type.hpp" 3 4
23866: #define BOOST_RANGE_DETAIL_EXTRACT_OPTIONAL_TYPE_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/cat.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/cat.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_CAT_HPP
23866:
23866: # 1 "/usr/include/boost/preprocessor/config/config.hpp" 1 3 4
23866: # 14 "/usr/include/boost/preprocessor/config/config.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_CONFIG_CONFIG_HPP
23866:
23866:
23866:
23866: #define BOOST_PP_CONFIG_STRICT() 0x0001
23866: #define BOOST_PP_CONFIG_IDEAL() 0x0002
23866:
23866: #define BOOST_PP_CONFIG_MSVC() 0x0004
23866: #define BOOST_PP_CONFIG_MWCC() 0x0008
23866: #define BOOST_PP_CONFIG_BCC() 0x0010
23866: #define BOOST_PP_CONFIG_EDG() 0x0020
23866: #define BOOST_PP_CONFIG_DMC() 0x0040
23866: # 57 "/usr/include/boost/preprocessor/config/config.hpp" 3 4
23866: #define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_STRICT())
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_CONFIG_EXTENDED_LINE_INFO 0
23866: # 73 "/usr/include/boost/preprocessor/config/config.hpp" 3 4
23866: #define BOOST_PP_CONFIG_ERRORS 1
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_VARIADICS_MSVC 0
23866: # 96 "/usr/include/boost/preprocessor/config/config.hpp" 3 4
23866: #define BOOST_PP_VARIADICS 1
23866: # 18 "/usr/include/boost/preprocessor/cat.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_CAT(a,b) BOOST_PP_CAT_I(a, b)
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_CAT_I(a,b) a ## b
23866: # 19 "/usr/include/boost/range/detail/extract_optional_type.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/has_xxx.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_HAS_XXX_HPP_INCLUDED
23866: # 20 "/usr/include/boost/mpl/has_xxx.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/na_spec.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_NA_SPEC_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/aux_/na_spec.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/lambda_fwd.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_LAMBDA_FWD_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/lambda_fwd.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/void_fwd.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_VOID_FWD_HPP_INCLUDED
23866: # 19 "/usr/include/boost/mpl/void_fwd.hpp" 3 4
23866: namespace mpl_ {
23866:
23866: struct void_;
23866:
23866: }
23866: namespace boost { namespace mpl { using ::mpl_::void_; } }
23866: # 18 "/usr/include/boost/mpl/lambda_fwd.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/na.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_NA_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/aux_/na.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/na_fwd.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_NA_FWD_HPP_INCLUDED
23866: # 19 "/usr/include/boost/mpl/aux_/na_fwd.hpp" 3 4
23866: namespace mpl_ {
23866:
23866:
23866: struct na
23866: {
23866: typedef na type;
23866: enum { value = 0 };
23866: };
23866:
23866: }
23866: namespace boost { namespace mpl { using ::mpl_::na; } }
23866: # 19 "/usr/include/boost/mpl/aux_/na.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/config/ctps.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CONFIG_CTPS_HPP_INCLUDED
23866: # 21 "/usr/include/boost/mpl/aux_/na.hpp" 2 3 4
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template< typename T >
23866: struct is_na
23866: : false_
23866: {
23866:
23866:
23866:
23866: };
23866:
23866: template<>
23866: struct is_na<na>
23866: : true_
23866: {
23866:
23866:
23866:
23866: };
23866:
23866: template< typename T >
23866: struct is_not_na
23866: : true_
23866: {
23866:
23866:
23866:
23866: };
23866:
23866: template<>
23866: struct is_not_na<na>
23866: : false_
23866: {
23866:
23866:
23866:
23866: };
23866:
23866:
23866: template< typename T, typename U > struct if_na
23866: {
23866: typedef T type;
23866: };
23866:
23866: template< typename U > struct if_na<na,U>
23866: {
23866: typedef U type;
23866: };
23866: # 93 "/usr/include/boost/mpl/aux_/na.hpp" 3 4
23866: }}
23866: # 19 "/usr/include/boost/mpl/lambda_fwd.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/config/lambda.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CONFIG_LAMBDA_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/aux_/config/lambda.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/config/ttp.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CONFIG_TTP_HPP_INCLUDED
23866: # 37 "/usr/include/boost/mpl/aux_/config/ttp.hpp" 3 4
23866: #define BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING
23866: # 18 "/usr/include/boost/mpl/aux_/config/lambda.hpp" 2 3 4
23866: # 20 "/usr/include/boost/mpl/lambda_fwd.hpp" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/int.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_INT_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/int.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/int_fwd.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_INT_FWD_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/int_fwd.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/nttp_decl.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_NTTP_DECL_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/aux_/nttp_decl.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/config/nttp.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CONFIG_NTTP_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/aux_/nttp_decl.hpp" 2 3 4
23866: # 31 "/usr/include/boost/mpl/aux_/nttp_decl.hpp" 3 4
23866: #define BOOST_MPL_AUX_NTTP_DECL(T,x) T x
23866: # 19 "/usr/include/boost/mpl/int_fwd.hpp" 2 3 4
23866:
23866: namespace mpl_ {
23866:
23866: template< int N > struct int_;
23866:
23866: }
23866: namespace boost { namespace mpl { using ::mpl_::int_; } }
23866: # 18 "/usr/include/boost/mpl/int.hpp" 2 3 4
23866:
23866: #define AUX_WRAPPER_VALUE_TYPE int
23866: # 1 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 1 3 4
23866: # 17 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/static_cast.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_STATIC_CAST_HPP_INCLUDED
23866: # 24 "/usr/include/boost/mpl/aux_/static_cast.hpp" 3 4
23866: #define BOOST_MPL_AUX_STATIC_CAST(T,expr) static_cast<T>(expr)
23866: # 18 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define AUX_WRAPPER_NAME BOOST_PP_CAT(AUX_WRAPPER_VALUE_TYPE,_)
23866:
23866:
23866:
23866: #define AUX_WRAPPER_PARAMS(N) BOOST_MPL_AUX_NTTP_DECL(AUX_WRAPPER_VALUE_TYPE, N)
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define AUX_WRAPPER_INST(value) BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::AUX_WRAPPER_NAME< value >
23866:
23866:
23866:
23866: namespace mpl_ {
23866:
23866: template< int N >
23866: struct int_
23866: {
23866: static const int value = N;
23866:
23866:
23866:
23866:
23866:
23866: typedef int_ type;
23866:
23866: typedef int value_type;
23866: typedef integral_c_tag tag;
23866: # 72 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 3 4
23866: typedef mpl_::int_< static_cast<int>((value + 1)) > next;
23866: typedef mpl_::int_< static_cast<int>((value - 1)) > prior;
23866:
23866:
23866:
23866:
23866:
23866:
23866: constexpr operator int() const { return static_cast<int>(this->value); }
23866: };
23866:
23866:
23866: template< int N >
23866: int const mpl_::int_< N >::value;
23866:
23866:
23866: }
23866:
23866: #undef AUX_WRAPPER_NAME
23866: #undef AUX_WRAPPER_PARAMS
23866: #undef AUX_WRAPPER_INST
23866: #undef AUX_WRAPPER_VALUE_TYPE
23866: # 21 "/usr/include/boost/mpl/int.hpp" 2 3 4
23866: # 24 "/usr/include/boost/mpl/lambda_fwd.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/lambda_arity_param.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_LAMBDA_ARITY_PARAM_HPP_INCLUDED
23866: # 22 "/usr/include/boost/mpl/aux_/lambda_arity_param.hpp" 3 4
23866: #define BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(param) , param
23866: # 25 "/usr/include/boost/mpl/lambda_fwd.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/template_arity_fwd.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_TEMPLATE_ARITY_FWD_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/aux_/template_arity_fwd.hpp" 3 4
23866: namespace boost { namespace mpl { namespace aux {
23866:
23866: template< typename F > struct template_arity;
23866:
23866: }}}
23866: # 26 "/usr/include/boost/mpl/lambda_fwd.hpp" 2 3 4
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename T = na
23866: , typename Tag = void_
23866: , typename Arity = int_< aux::template_arity<T>::value >
23866:
23866:
23866: >
23866: struct lambda;
23866:
23866: }}
23866: # 19 "/usr/include/boost/mpl/aux_/na_spec.hpp" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/arity.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_ARITY_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/aux_/arity.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/config/dtp.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CONFIG_DTP_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/aux_/arity.hpp" 2 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/na_spec.hpp" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessor/params.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_PREPROCESSOR_PARAMS_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/aux_/preprocessor/params.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/config/preprocessor.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CONFIG_PREPROCESSOR_HPP_INCLUDED
23866: # 30 "/usr/include/boost/mpl/aux_/config/preprocessor.hpp" 3 4
23866: #define BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES
23866: # 18 "/usr/include/boost/mpl/aux_/preprocessor/params.hpp" 2 3 4
23866: # 45 "/usr/include/boost/mpl/aux_/preprocessor/params.hpp" 3 4
23866: # 1 "/usr/include/boost/preprocessor/comma_if.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/comma_if.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_COMMA_IF_HPP
23866:
23866: # 1 "/usr/include/boost/preprocessor/punctuation/comma_if.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/punctuation/comma_if.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_PUNCTUATION_COMMA_IF_HPP
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/control/if.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/control/if.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_CONTROL_IF_HPP
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/control/iif.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/control/iif.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_CONTROL_IIF_HPP
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_IIF(bit,t,f) BOOST_PP_IIF_I(bit, t, f)
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_IIF_I(bit,t,f) BOOST_PP_IIF_ ## bit(t, f)
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_IIF_0(t,f) f
23866: #define BOOST_PP_IIF_1(t,f) t
23866: # 19 "/usr/include/boost/preprocessor/control/if.hpp" 2 3 4
23866: # 1 "/usr/include/boost/preprocessor/logical/bool.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/logical/bool.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_LOGICAL_BOOL_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_BOOL(x) BOOST_PP_BOOL_I(x)
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_BOOL_I(x) BOOST_PP_BOOL_ ## x
23866:
23866: #define BOOST_PP_BOOL_0 0
23866: #define BOOST_PP_BOOL_1 1
23866: #define BOOST_PP_BOOL_2 1
23866: #define BOOST_PP_BOOL_3 1
23866: #define BOOST_PP_BOOL_4 1
23866: #define BOOST_PP_BOOL_5 1
23866: #define BOOST_PP_BOOL_6 1
23866: #define BOOST_PP_BOOL_7 1
23866: #define BOOST_PP_BOOL_8 1
23866: #define BOOST_PP_BOOL_9 1
23866: #define BOOST_PP_BOOL_10 1
23866: #define BOOST_PP_BOOL_11 1
23866: #define BOOST_PP_BOOL_12 1
23866: #define BOOST_PP_BOOL_13 1
23866: #define BOOST_PP_BOOL_14 1
23866: #define BOOST_PP_BOOL_15 1
23866: #define BOOST_PP_BOOL_16 1
23866: #define BOOST_PP_BOOL_17 1
23866: #define BOOST_PP_BOOL_18 1
23866: #define BOOST_PP_BOOL_19 1
23866: #define BOOST_PP_BOOL_20 1
23866: #define BOOST_PP_BOOL_21 1
23866: #define BOOST_PP_BOOL_22 1
23866: #define BOOST_PP_BOOL_23 1
23866: #define BOOST_PP_BOOL_24 1
23866: #define BOOST_PP_BOOL_25 1
23866: #define BOOST_PP_BOOL_26 1
23866: #define BOOST_PP_BOOL_27 1
23866: #define BOOST_PP_BOOL_28 1
23866: #define BOOST_PP_BOOL_29 1
23866: #define BOOST_PP_BOOL_30 1
23866: #define BOOST_PP_BOOL_31 1
23866: #define BOOST_PP_BOOL_32 1
23866: #define BOOST_PP_BOOL_33 1
23866: #define BOOST_PP_BOOL_34 1
23866: #define BOOST_PP_BOOL_35 1
23866: #define BOOST_PP_BOOL_36 1
23866: #define BOOST_PP_BOOL_37 1
23866: #define BOOST_PP_BOOL_38 1
23866: #define BOOST_PP_BOOL_39 1
23866: #define BOOST_PP_BOOL_40 1
23866: #define BOOST_PP_BOOL_41 1
23866: #define BOOST_PP_BOOL_42 1
23866: #define BOOST_PP_BOOL_43 1
23866: #define BOOST_PP_BOOL_44 1
23866: #define BOOST_PP_BOOL_45 1
23866: #define BOOST_PP_BOOL_46 1
23866: #define BOOST_PP_BOOL_47 1
23866: #define BOOST_PP_BOOL_48 1
23866: #define BOOST_PP_BOOL_49 1
23866: #define BOOST_PP_BOOL_50 1
23866: #define BOOST_PP_BOOL_51 1
23866: #define BOOST_PP_BOOL_52 1
23866: #define BOOST_PP_BOOL_53 1
23866: #define BOOST_PP_BOOL_54 1
23866: #define BOOST_PP_BOOL_55 1
23866: #define BOOST_PP_BOOL_56 1
23866: #define BOOST_PP_BOOL_57 1
23866: #define BOOST_PP_BOOL_58 1
23866: #define BOOST_PP_BOOL_59 1
23866: #define BOOST_PP_BOOL_60 1
23866: #define BOOST_PP_BOOL_61 1
23866: #define BOOST_PP_BOOL_62 1
23866: #define BOOST_PP_BOOL_63 1
23866: #define BOOST_PP_BOOL_64 1
23866: #define BOOST_PP_BOOL_65 1
23866: #define BOOST_PP_BOOL_66 1
23866: #define BOOST_PP_BOOL_67 1
23866: #define BOOST_PP_BOOL_68 1
23866: #define BOOST_PP_BOOL_69 1
23866: #define BOOST_PP_BOOL_70 1
23866: #define BOOST_PP_BOOL_71 1
23866: #define BOOST_PP_BOOL_72 1
23866: #define BOOST_PP_BOOL_73 1
23866: #define BOOST_PP_BOOL_74 1
23866: #define BOOST_PP_BOOL_75 1
23866: #define BOOST_PP_BOOL_76 1
23866: #define BOOST_PP_BOOL_77 1
23866: #define BOOST_PP_BOOL_78 1
23866: #define BOOST_PP_BOOL_79 1
23866: #define BOOST_PP_BOOL_80 1
23866: #define BOOST_PP_BOOL_81 1
23866: #define BOOST_PP_BOOL_82 1
23866: #define BOOST_PP_BOOL_83 1
23866: #define BOOST_PP_BOOL_84 1
23866: #define BOOST_PP_BOOL_85 1
23866: #define BOOST_PP_BOOL_86 1
23866: #define BOOST_PP_BOOL_87 1
23866: #define BOOST_PP_BOOL_88 1
23866: #define BOOST_PP_BOOL_89 1
23866: #define BOOST_PP_BOOL_90 1
23866: #define BOOST_PP_BOOL_91 1
23866: #define BOOST_PP_BOOL_92 1
23866: #define BOOST_PP_BOOL_93 1
23866: #define BOOST_PP_BOOL_94 1
23866: #define BOOST_PP_BOOL_95 1
23866: #define BOOST_PP_BOOL_96 1
23866: #define BOOST_PP_BOOL_97 1
23866: #define BOOST_PP_BOOL_98 1
23866: #define BOOST_PP_BOOL_99 1
23866: #define BOOST_PP_BOOL_100 1
23866: #define BOOST_PP_BOOL_101 1
23866: #define BOOST_PP_BOOL_102 1
23866: #define BOOST_PP_BOOL_103 1
23866: #define BOOST_PP_BOOL_104 1
23866: #define BOOST_PP_BOOL_105 1
23866: #define BOOST_PP_BOOL_106 1
23866: #define BOOST_PP_BOOL_107 1
23866: #define BOOST_PP_BOOL_108 1
23866: #define BOOST_PP_BOOL_109 1
23866: #define BOOST_PP_BOOL_110 1
23866: #define BOOST_PP_BOOL_111 1
23866: #define BOOST_PP_BOOL_112 1
23866: #define BOOST_PP_BOOL_113 1
23866: #define BOOST_PP_BOOL_114 1
23866: #define BOOST_PP_BOOL_115 1
23866: #define BOOST_PP_BOOL_116 1
23866: #define BOOST_PP_BOOL_117 1
23866: #define BOOST_PP_BOOL_118 1
23866: #define BOOST_PP_BOOL_119 1
23866: #define BOOST_PP_BOOL_120 1
23866: #define BOOST_PP_BOOL_121 1
23866: #define BOOST_PP_BOOL_122 1
23866: #define BOOST_PP_BOOL_123 1
23866: #define BOOST_PP_BOOL_124 1
23866: #define BOOST_PP_BOOL_125 1
23866: #define BOOST_PP_BOOL_126 1
23866: #define BOOST_PP_BOOL_127 1
23866: #define BOOST_PP_BOOL_128 1
23866: #define BOOST_PP_BOOL_129 1
23866: #define BOOST_PP_BOOL_130 1
23866: #define BOOST_PP_BOOL_131 1
23866: #define BOOST_PP_BOOL_132 1
23866: #define BOOST_PP_BOOL_133 1
23866: #define BOOST_PP_BOOL_134 1
23866: #define BOOST_PP_BOOL_135 1
23866: #define BOOST_PP_BOOL_136 1
23866: #define BOOST_PP_BOOL_137 1
23866: #define BOOST_PP_BOOL_138 1
23866: #define BOOST_PP_BOOL_139 1
23866: #define BOOST_PP_BOOL_140 1
23866: #define BOOST_PP_BOOL_141 1
23866: #define BOOST_PP_BOOL_142 1
23866: #define BOOST_PP_BOOL_143 1
23866: #define BOOST_PP_BOOL_144 1
23866: #define BOOST_PP_BOOL_145 1
23866: #define BOOST_PP_BOOL_146 1
23866: #define BOOST_PP_BOOL_147 1
23866: #define BOOST_PP_BOOL_148 1
23866: #define BOOST_PP_BOOL_149 1
23866: #define BOOST_PP_BOOL_150 1
23866: #define BOOST_PP_BOOL_151 1
23866: #define BOOST_PP_BOOL_152 1
23866: #define BOOST_PP_BOOL_153 1
23866: #define BOOST_PP_BOOL_154 1
23866: #define BOOST_PP_BOOL_155 1
23866: #define BOOST_PP_BOOL_156 1
23866: #define BOOST_PP_BOOL_157 1
23866: #define BOOST_PP_BOOL_158 1
23866: #define BOOST_PP_BOOL_159 1
23866: #define BOOST_PP_BOOL_160 1
23866: #define BOOST_PP_BOOL_161 1
23866: #define BOOST_PP_BOOL_162 1
23866: #define BOOST_PP_BOOL_163 1
23866: #define BOOST_PP_BOOL_164 1
23866: #define BOOST_PP_BOOL_165 1
23866: #define BOOST_PP_BOOL_166 1
23866: #define BOOST_PP_BOOL_167 1
23866: #define BOOST_PP_BOOL_168 1
23866: #define BOOST_PP_BOOL_169 1
23866: #define BOOST_PP_BOOL_170 1
23866: #define BOOST_PP_BOOL_171 1
23866: #define BOOST_PP_BOOL_172 1
23866: #define BOOST_PP_BOOL_173 1
23866: #define BOOST_PP_BOOL_174 1
23866: #define BOOST_PP_BOOL_175 1
23866: #define BOOST_PP_BOOL_176 1
23866: #define BOOST_PP_BOOL_177 1
23866: #define BOOST_PP_BOOL_178 1
23866: #define BOOST_PP_BOOL_179 1
23866: #define BOOST_PP_BOOL_180 1
23866: #define BOOST_PP_BOOL_181 1
23866: #define BOOST_PP_BOOL_182 1
23866: #define BOOST_PP_BOOL_183 1
23866: #define BOOST_PP_BOOL_184 1
23866: #define BOOST_PP_BOOL_185 1
23866: #define BOOST_PP_BOOL_186 1
23866: #define BOOST_PP_BOOL_187 1
23866: #define BOOST_PP_BOOL_188 1
23866: #define BOOST_PP_BOOL_189 1
23866: #define BOOST_PP_BOOL_190 1
23866: #define BOOST_PP_BOOL_191 1
23866: #define BOOST_PP_BOOL_192 1
23866: #define BOOST_PP_BOOL_193 1
23866: #define BOOST_PP_BOOL_194 1
23866: #define BOOST_PP_BOOL_195 1
23866: #define BOOST_PP_BOOL_196 1
23866: #define BOOST_PP_BOOL_197 1
23866: #define BOOST_PP_BOOL_198 1
23866: #define BOOST_PP_BOOL_199 1
23866: #define BOOST_PP_BOOL_200 1
23866: #define BOOST_PP_BOOL_201 1
23866: #define BOOST_PP_BOOL_202 1
23866: #define BOOST_PP_BOOL_203 1
23866: #define BOOST_PP_BOOL_204 1
23866: #define BOOST_PP_BOOL_205 1
23866: #define BOOST_PP_BOOL_206 1
23866: #define BOOST_PP_BOOL_207 1
23866: #define BOOST_PP_BOOL_208 1
23866: #define BOOST_PP_BOOL_209 1
23866: #define BOOST_PP_BOOL_210 1
23866: #define BOOST_PP_BOOL_211 1
23866: #define BOOST_PP_BOOL_212 1
23866: #define BOOST_PP_BOOL_213 1
23866: #define BOOST_PP_BOOL_214 1
23866: #define BOOST_PP_BOOL_215 1
23866: #define BOOST_PP_BOOL_216 1
23866: #define BOOST_PP_BOOL_217 1
23866: #define BOOST_PP_BOOL_218 1
23866: #define BOOST_PP_BOOL_219 1
23866: #define BOOST_PP_BOOL_220 1
23866: #define BOOST_PP_BOOL_221 1
23866: #define BOOST_PP_BOOL_222 1
23866: #define BOOST_PP_BOOL_223 1
23866: #define BOOST_PP_BOOL_224 1
23866: #define BOOST_PP_BOOL_225 1
23866: #define BOOST_PP_BOOL_226 1
23866: #define BOOST_PP_BOOL_227 1
23866: #define BOOST_PP_BOOL_228 1
23866: #define BOOST_PP_BOOL_229 1
23866: #define BOOST_PP_BOOL_230 1
23866: #define BOOST_PP_BOOL_231 1
23866: #define BOOST_PP_BOOL_232 1
23866: #define BOOST_PP_BOOL_233 1
23866: #define BOOST_PP_BOOL_234 1
23866: #define BOOST_PP_BOOL_235 1
23866: #define BOOST_PP_BOOL_236 1
23866: #define BOOST_PP_BOOL_237 1
23866: #define BOOST_PP_BOOL_238 1
23866: #define BOOST_PP_BOOL_239 1
23866: #define BOOST_PP_BOOL_240 1
23866: #define BOOST_PP_BOOL_241 1
23866: #define BOOST_PP_BOOL_242 1
23866: #define BOOST_PP_BOOL_243 1
23866: #define BOOST_PP_BOOL_244 1
23866: #define BOOST_PP_BOOL_245 1
23866: #define BOOST_PP_BOOL_246 1
23866: #define BOOST_PP_BOOL_247 1
23866: #define BOOST_PP_BOOL_248 1
23866: #define BOOST_PP_BOOL_249 1
23866: #define BOOST_PP_BOOL_250 1
23866: #define BOOST_PP_BOOL_251 1
23866: #define BOOST_PP_BOOL_252 1
23866: #define BOOST_PP_BOOL_253 1
23866: #define BOOST_PP_BOOL_254 1
23866: #define BOOST_PP_BOOL_255 1
23866: #define BOOST_PP_BOOL_256 1
23866: # 20 "/usr/include/boost/preprocessor/control/if.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_IF(cond,t,f) BOOST_PP_IIF(BOOST_PP_BOOL(cond), t, f)
23866: # 19 "/usr/include/boost/preprocessor/punctuation/comma_if.hpp" 2 3 4
23866: # 1 "/usr/include/boost/preprocessor/facilities/empty.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/facilities/empty.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_FACILITIES_EMPTY_HPP
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_EMPTY()
23866: # 20 "/usr/include/boost/preprocessor/punctuation/comma_if.hpp" 2 3 4
23866: # 1 "/usr/include/boost/preprocessor/punctuation/comma.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/punctuation/comma.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_PUNCTUATION_COMMA_HPP
23866:
23866:
23866:
23866: #define BOOST_PP_COMMA() ,
23866: # 21 "/usr/include/boost/preprocessor/punctuation/comma_if.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_COMMA_IF(cond) BOOST_PP_IF(cond, BOOST_PP_COMMA, BOOST_PP_EMPTY)()
23866: # 16 "/usr/include/boost/preprocessor/comma_if.hpp" 2 3 4
23866: # 46 "/usr/include/boost/mpl/aux_/preprocessor/params.hpp" 2 3 4
23866: # 1 "/usr/include/boost/preprocessor/repeat.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/repeat.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_REPEAT_HPP
23866:
23866: # 1 "/usr/include/boost/preprocessor/repetition/repeat.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/repetition/repeat.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_REPETITION_REPEAT_HPP
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/debug/error.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/debug/error.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_DEBUG_ERROR_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_ERROR(code) BOOST_PP_CAT(BOOST_PP_ERROR_, code)
23866:
23866:
23866: #define BOOST_PP_ERROR_0x0000 BOOST_PP_ERROR(0x0000, BOOST_PP_INDEX_OUT_OF_BOUNDS)
23866: #define BOOST_PP_ERROR_0x0001 BOOST_PP_ERROR(0x0001, BOOST_PP_WHILE_OVERFLOW)
23866: #define BOOST_PP_ERROR_0x0002 BOOST_PP_ERROR(0x0002, BOOST_PP_FOR_OVERFLOW)
23866: #define BOOST_PP_ERROR_0x0003 BOOST_PP_ERROR(0x0003, BOOST_PP_REPEAT_OVERFLOW)
23866: #define BOOST_PP_ERROR_0x0004 BOOST_PP_ERROR(0x0004, BOOST_PP_LIST_FOLD_OVERFLOW)
23866: #define BOOST_PP_ERROR_0x0005 BOOST_PP_ERROR(0x0005, BOOST_PP_SEQ_FOLD_OVERFLOW)
23866: #define BOOST_PP_ERROR_0x0006 BOOST_PP_ERROR(0x0006, BOOST_PP_ARITHMETIC_OVERFLOW)
23866: #define BOOST_PP_ERROR_0x0007 BOOST_PP_ERROR(0x0007, BOOST_PP_DIVISION_BY_ZERO)
23866: # 20 "/usr/include/boost/preprocessor/repetition/repeat.hpp" 2 3 4
23866: # 1 "/usr/include/boost/preprocessor/detail/auto_rec.hpp" 1 3 4
23866: # 19 "/usr/include/boost/preprocessor/detail/auto_rec.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_DETAIL_AUTO_REC_HPP
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_AUTO_REC(pred,n) BOOST_PP_NODE_ENTRY_ ## n(pred)
23866:
23866: #define BOOST_PP_NODE_ENTRY_256(p) BOOST_PP_NODE_128(p)(p)(p)(p)(p)(p)(p)(p)
23866: #define BOOST_PP_NODE_ENTRY_128(p) BOOST_PP_NODE_64(p)(p)(p)(p)(p)(p)(p)
23866: #define BOOST_PP_NODE_ENTRY_64(p) BOOST_PP_NODE_32(p)(p)(p)(p)(p)(p)
23866: #define BOOST_PP_NODE_ENTRY_32(p) BOOST_PP_NODE_16(p)(p)(p)(p)(p)
23866: #define BOOST_PP_NODE_ENTRY_16(p) BOOST_PP_NODE_8(p)(p)(p)(p)
23866: #define BOOST_PP_NODE_ENTRY_8(p) BOOST_PP_NODE_4(p)(p)(p)
23866: #define BOOST_PP_NODE_ENTRY_4(p) BOOST_PP_NODE_2(p)(p)
23866: #define BOOST_PP_NODE_ENTRY_2(p) BOOST_PP_NODE_1(p)
23866:
23866: #define BOOST_PP_NODE_128(p) BOOST_PP_IIF(p(128), BOOST_PP_NODE_64, BOOST_PP_NODE_192)
23866: #define BOOST_PP_NODE_64(p) BOOST_PP_IIF(p(64), BOOST_PP_NODE_32, BOOST_PP_NODE_96)
23866: #define BOOST_PP_NODE_32(p) BOOST_PP_IIF(p(32), BOOST_PP_NODE_16, BOOST_PP_NODE_48)
23866: #define BOOST_PP_NODE_16(p) BOOST_PP_IIF(p(16), BOOST_PP_NODE_8, BOOST_PP_NODE_24)
23866: #define BOOST_PP_NODE_8(p) BOOST_PP_IIF(p(8), BOOST_PP_NODE_4, BOOST_PP_NODE_12)
23866: #define BOOST_PP_NODE_4(p) BOOST_PP_IIF(p(4), BOOST_PP_NODE_2, BOOST_PP_NODE_6)
23866: #define BOOST_PP_NODE_2(p) BOOST_PP_IIF(p(2), BOOST_PP_NODE_1, BOOST_PP_NODE_3)
23866: #define BOOST_PP_NODE_1(p) BOOST_PP_IIF(p(1), 1, 2)
23866: #define BOOST_PP_NODE_3(p) BOOST_PP_IIF(p(3), 3, 4)
23866: #define BOOST_PP_NODE_6(p) BOOST_PP_IIF(p(6), BOOST_PP_NODE_5, BOOST_PP_NODE_7)
23866: #define BOOST_PP_NODE_5(p) BOOST_PP_IIF(p(5), 5, 6)
23866: #define BOOST_PP_NODE_7(p) BOOST_PP_IIF(p(7), 7, 8)
23866: #define BOOST_PP_NODE_12(p) BOOST_PP_IIF(p(12), BOOST_PP_NODE_10, BOOST_PP_NODE_14)
23866: #define BOOST_PP_NODE_10(p) BOOST_PP_IIF(p(10), BOOST_PP_NODE_9, BOOST_PP_NODE_11)
23866: #define BOOST_PP_NODE_9(p) BOOST_PP_IIF(p(9), 9, 10)
23866: #define BOOST_PP_NODE_11(p) BOOST_PP_IIF(p(11), 11, 12)
23866: #define BOOST_PP_NODE_14(p) BOOST_PP_IIF(p(14), BOOST_PP_NODE_13, BOOST_PP_NODE_15)
23866: #define BOOST_PP_NODE_13(p) BOOST_PP_IIF(p(13), 13, 14)
23866: #define BOOST_PP_NODE_15(p) BOOST_PP_IIF(p(15), 15, 16)
23866: #define BOOST_PP_NODE_24(p) BOOST_PP_IIF(p(24), BOOST_PP_NODE_20, BOOST_PP_NODE_28)
23866: #define BOOST_PP_NODE_20(p) BOOST_PP_IIF(p(20), BOOST_PP_NODE_18, BOOST_PP_NODE_22)
23866: #define BOOST_PP_NODE_18(p) BOOST_PP_IIF(p(18), BOOST_PP_NODE_17, BOOST_PP_NODE_19)
23866: #define BOOST_PP_NODE_17(p) BOOST_PP_IIF(p(17), 17, 18)
23866: #define BOOST_PP_NODE_19(p) BOOST_PP_IIF(p(19), 19, 20)
23866: #define BOOST_PP_NODE_22(p) BOOST_PP_IIF(p(22), BOOST_PP_NODE_21, BOOST_PP_NODE_23)
23866: #define BOOST_PP_NODE_21(p) BOOST_PP_IIF(p(21), 21, 22)
23866: #define BOOST_PP_NODE_23(p) BOOST_PP_IIF(p(23), 23, 24)
23866: #define BOOST_PP_NODE_28(p) BOOST_PP_IIF(p(28), BOOST_PP_NODE_26, BOOST_PP_NODE_30)
23866: #define BOOST_PP_NODE_26(p) BOOST_PP_IIF(p(26), BOOST_PP_NODE_25, BOOST_PP_NODE_27)
23866: #define BOOST_PP_NODE_25(p) BOOST_PP_IIF(p(25), 25, 26)
23866: #define BOOST_PP_NODE_27(p) BOOST_PP_IIF(p(27), 27, 28)
23866: #define BOOST_PP_NODE_30(p) BOOST_PP_IIF(p(30), BOOST_PP_NODE_29, BOOST_PP_NODE_31)
23866: #define BOOST_PP_NODE_29(p) BOOST_PP_IIF(p(29), 29, 30)
23866: #define BOOST_PP_NODE_31(p) BOOST_PP_IIF(p(31), 31, 32)
23866: #define BOOST_PP_NODE_48(p) BOOST_PP_IIF(p(48), BOOST_PP_NODE_40, BOOST_PP_NODE_56)
23866: #define BOOST_PP_NODE_40(p) BOOST_PP_IIF(p(40), BOOST_PP_NODE_36, BOOST_PP_NODE_44)
23866: #define BOOST_PP_NODE_36(p) BOOST_PP_IIF(p(36), BOOST_PP_NODE_34, BOOST_PP_NODE_38)
23866: #define BOOST_PP_NODE_34(p) BOOST_PP_IIF(p(34), BOOST_PP_NODE_33, BOOST_PP_NODE_35)
23866: #define BOOST_PP_NODE_33(p) BOOST_PP_IIF(p(33), 33, 34)
23866: #define BOOST_PP_NODE_35(p) BOOST_PP_IIF(p(35), 35, 36)
23866: #define BOOST_PP_NODE_38(p) BOOST_PP_IIF(p(38), BOOST_PP_NODE_37, BOOST_PP_NODE_39)
23866: #define BOOST_PP_NODE_37(p) BOOST_PP_IIF(p(37), 37, 38)
23866: #define BOOST_PP_NODE_39(p) BOOST_PP_IIF(p(39), 39, 40)
23866: #define BOOST_PP_NODE_44(p) BOOST_PP_IIF(p(44), BOOST_PP_NODE_42, BOOST_PP_NODE_46)
23866: #define BOOST_PP_NODE_42(p) BOOST_PP_IIF(p(42), BOOST_PP_NODE_41, BOOST_PP_NODE_43)
23866: #define BOOST_PP_NODE_41(p) BOOST_PP_IIF(p(41), 41, 42)
23866: #define BOOST_PP_NODE_43(p) BOOST_PP_IIF(p(43), 43, 44)
23866: #define BOOST_PP_NODE_46(p) BOOST_PP_IIF(p(46), BOOST_PP_NODE_45, BOOST_PP_NODE_47)
23866: #define BOOST_PP_NODE_45(p) BOOST_PP_IIF(p(45), 45, 46)
23866: #define BOOST_PP_NODE_47(p) BOOST_PP_IIF(p(47), 47, 48)
23866: #define BOOST_PP_NODE_56(p) BOOST_PP_IIF(p(56), BOOST_PP_NODE_52, BOOST_PP_NODE_60)
23866: #define BOOST_PP_NODE_52(p) BOOST_PP_IIF(p(52), BOOST_PP_NODE_50, BOOST_PP_NODE_54)
23866: #define BOOST_PP_NODE_50(p) BOOST_PP_IIF(p(50), BOOST_PP_NODE_49, BOOST_PP_NODE_51)
23866: #define BOOST_PP_NODE_49(p) BOOST_PP_IIF(p(49), 49, 50)
23866: #define BOOST_PP_NODE_51(p) BOOST_PP_IIF(p(51), 51, 52)
23866: #define BOOST_PP_NODE_54(p) BOOST_PP_IIF(p(54), BOOST_PP_NODE_53, BOOST_PP_NODE_55)
23866: #define BOOST_PP_NODE_53(p) BOOST_PP_IIF(p(53), 53, 54)
23866: #define BOOST_PP_NODE_55(p) BOOST_PP_IIF(p(55), 55, 56)
23866: #define BOOST_PP_NODE_60(p) BOOST_PP_IIF(p(60), BOOST_PP_NODE_58, BOOST_PP_NODE_62)
23866: #define BOOST_PP_NODE_58(p) BOOST_PP_IIF(p(58), BOOST_PP_NODE_57, BOOST_PP_NODE_59)
23866: #define BOOST_PP_NODE_57(p) BOOST_PP_IIF(p(57), 57, 58)
23866: #define BOOST_PP_NODE_59(p) BOOST_PP_IIF(p(59), 59, 60)
23866: #define BOOST_PP_NODE_62(p) BOOST_PP_IIF(p(62), BOOST_PP_NODE_61, BOOST_PP_NODE_63)
23866: #define BOOST_PP_NODE_61(p) BOOST_PP_IIF(p(61), 61, 62)
23866: #define BOOST_PP_NODE_63(p) BOOST_PP_IIF(p(63), 63, 64)
23866: #define BOOST_PP_NODE_96(p) BOOST_PP_IIF(p(96), BOOST_PP_NODE_80, BOOST_PP_NODE_112)
23866: #define BOOST_PP_NODE_80(p) BOOST_PP_IIF(p(80), BOOST_PP_NODE_72, BOOST_PP_NODE_88)
23866: #define BOOST_PP_NODE_72(p) BOOST_PP_IIF(p(72), BOOST_PP_NODE_68, BOOST_PP_NODE_76)
23866: #define BOOST_PP_NODE_68(p) BOOST_PP_IIF(p(68), BOOST_PP_NODE_66, BOOST_PP_NODE_70)
23866: #define BOOST_PP_NODE_66(p) BOOST_PP_IIF(p(66), BOOST_PP_NODE_65, BOOST_PP_NODE_67)
23866: #define BOOST_PP_NODE_65(p) BOOST_PP_IIF(p(65), 65, 66)
23866: #define BOOST_PP_NODE_67(p) BOOST_PP_IIF(p(67), 67, 68)
23866: #define BOOST_PP_NODE_70(p) BOOST_PP_IIF(p(70), BOOST_PP_NODE_69, BOOST_PP_NODE_71)
23866: #define BOOST_PP_NODE_69(p) BOOST_PP_IIF(p(69), 69, 70)
23866: #define BOOST_PP_NODE_71(p) BOOST_PP_IIF(p(71), 71, 72)
23866: #define BOOST_PP_NODE_76(p) BOOST_PP_IIF(p(76), BOOST_PP_NODE_74, BOOST_PP_NODE_78)
23866: #define BOOST_PP_NODE_74(p) BOOST_PP_IIF(p(74), BOOST_PP_NODE_73, BOOST_PP_NODE_75)
23866: #define BOOST_PP_NODE_73(p) BOOST_PP_IIF(p(73), 73, 74)
23866: #define BOOST_PP_NODE_75(p) BOOST_PP_IIF(p(75), 75, 76)
23866: #define BOOST_PP_NODE_78(p) BOOST_PP_IIF(p(78), BOOST_PP_NODE_77, BOOST_PP_NODE_79)
23866: #define BOOST_PP_NODE_77(p) BOOST_PP_IIF(p(77), 77, 78)
23866: #define BOOST_PP_NODE_79(p) BOOST_PP_IIF(p(79), 79, 80)
23866: #define BOOST_PP_NODE_88(p) BOOST_PP_IIF(p(88), BOOST_PP_NODE_84, BOOST_PP_NODE_92)
23866: #define BOOST_PP_NODE_84(p) BOOST_PP_IIF(p(84), BOOST_PP_NODE_82, BOOST_PP_NODE_86)
23866: #define BOOST_PP_NODE_82(p) BOOST_PP_IIF(p(82), BOOST_PP_NODE_81, BOOST_PP_NODE_83)
23866: #define BOOST_PP_NODE_81(p) BOOST_PP_IIF(p(81), 81, 82)
23866: #define BOOST_PP_NODE_83(p) BOOST_PP_IIF(p(83), 83, 84)
23866: #define BOOST_PP_NODE_86(p) BOOST_PP_IIF(p(86), BOOST_PP_NODE_85, BOOST_PP_NODE_87)
23866: #define BOOST_PP_NODE_85(p) BOOST_PP_IIF(p(85), 85, 86)
23866: #define BOOST_PP_NODE_87(p) BOOST_PP_IIF(p(87), 87, 88)
23866: #define BOOST_PP_NODE_92(p) BOOST_PP_IIF(p(92), BOOST_PP_NODE_90, BOOST_PP_NODE_94)
23866: #define BOOST_PP_NODE_90(p) BOOST_PP_IIF(p(90), BOOST_PP_NODE_89, BOOST_PP_NODE_91)
23866: #define BOOST_PP_NODE_89(p) BOOST_PP_IIF(p(89), 89, 90)
23866: #define BOOST_PP_NODE_91(p) BOOST_PP_IIF(p(91), 91, 92)
23866: #define BOOST_PP_NODE_94(p) BOOST_PP_IIF(p(94), BOOST_PP_NODE_93, BOOST_PP_NODE_95)
23866: #define BOOST_PP_NODE_93(p) BOOST_PP_IIF(p(93), 93, 94)
23866: #define BOOST_PP_NODE_95(p) BOOST_PP_IIF(p(95), 95, 96)
23866: #define BOOST_PP_NODE_112(p) BOOST_PP_IIF(p(112), BOOST_PP_NODE_104, BOOST_PP_NODE_120)
23866: #define BOOST_PP_NODE_104(p) BOOST_PP_IIF(p(104), BOOST_PP_NODE_100, BOOST_PP_NODE_108)
23866: #define BOOST_PP_NODE_100(p) BOOST_PP_IIF(p(100), BOOST_PP_NODE_98, BOOST_PP_NODE_102)
23866: #define BOOST_PP_NODE_98(p) BOOST_PP_IIF(p(98), BOOST_PP_NODE_97, BOOST_PP_NODE_99)
23866: #define BOOST_PP_NODE_97(p) BOOST_PP_IIF(p(97), 97, 98)
23866: #define BOOST_PP_NODE_99(p) BOOST_PP_IIF(p(99), 99, 100)
23866: #define BOOST_PP_NODE_102(p) BOOST_PP_IIF(p(102), BOOST_PP_NODE_101, BOOST_PP_NODE_103)
23866: #define BOOST_PP_NODE_101(p) BOOST_PP_IIF(p(101), 101, 102)
23866: #define BOOST_PP_NODE_103(p) BOOST_PP_IIF(p(103), 103, 104)
23866: #define BOOST_PP_NODE_108(p) BOOST_PP_IIF(p(108), BOOST_PP_NODE_106, BOOST_PP_NODE_110)
23866: #define BOOST_PP_NODE_106(p) BOOST_PP_IIF(p(106), BOOST_PP_NODE_105, BOOST_PP_NODE_107)
23866: #define BOOST_PP_NODE_105(p) BOOST_PP_IIF(p(105), 105, 106)
23866: #define BOOST_PP_NODE_107(p) BOOST_PP_IIF(p(107), 107, 108)
23866: #define BOOST_PP_NODE_110(p) BOOST_PP_IIF(p(110), BOOST_PP_NODE_109, BOOST_PP_NODE_111)
23866: #define BOOST_PP_NODE_109(p) BOOST_PP_IIF(p(109), 109, 110)
23866: #define BOOST_PP_NODE_111(p) BOOST_PP_IIF(p(111), 111, 112)
23866: #define BOOST_PP_NODE_120(p) BOOST_PP_IIF(p(120), BOOST_PP_NODE_116, BOOST_PP_NODE_124)
23866: #define BOOST_PP_NODE_116(p) BOOST_PP_IIF(p(116), BOOST_PP_NODE_114, BOOST_PP_NODE_118)
23866: #define BOOST_PP_NODE_114(p) BOOST_PP_IIF(p(114), BOOST_PP_NODE_113, BOOST_PP_NODE_115)
23866: #define BOOST_PP_NODE_113(p) BOOST_PP_IIF(p(113), 113, 114)
23866: #define BOOST_PP_NODE_115(p) BOOST_PP_IIF(p(115), 115, 116)
23866: #define BOOST_PP_NODE_118(p) BOOST_PP_IIF(p(118), BOOST_PP_NODE_117, BOOST_PP_NODE_119)
23866: #define BOOST_PP_NODE_117(p) BOOST_PP_IIF(p(117), 117, 118)
23866: #define BOOST_PP_NODE_119(p) BOOST_PP_IIF(p(119), 119, 120)
23866: #define BOOST_PP_NODE_124(p) BOOST_PP_IIF(p(124), BOOST_PP_NODE_122, BOOST_PP_NODE_126)
23866: #define BOOST_PP_NODE_122(p) BOOST_PP_IIF(p(122), BOOST_PP_NODE_121, BOOST_PP_NODE_123)
23866: #define BOOST_PP_NODE_121(p) BOOST_PP_IIF(p(121), 121, 122)
23866: #define BOOST_PP_NODE_123(p) BOOST_PP_IIF(p(123), 123, 124)
23866: #define BOOST_PP_NODE_126(p) BOOST_PP_IIF(p(126), BOOST_PP_NODE_125, BOOST_PP_NODE_127)
23866: #define BOOST_PP_NODE_125(p) BOOST_PP_IIF(p(125), 125, 126)
23866: #define BOOST_PP_NODE_127(p) BOOST_PP_IIF(p(127), 127, 128)
23866: #define BOOST_PP_NODE_192(p) BOOST_PP_IIF(p(192), BOOST_PP_NODE_160, BOOST_PP_NODE_224)
23866: #define BOOST_PP_NODE_160(p) BOOST_PP_IIF(p(160), BOOST_PP_NODE_144, BOOST_PP_NODE_176)
23866: #define BOOST_PP_NODE_144(p) BOOST_PP_IIF(p(144), BOOST_PP_NODE_136, BOOST_PP_NODE_152)
23866: #define BOOST_PP_NODE_136(p) BOOST_PP_IIF(p(136), BOOST_PP_NODE_132, BOOST_PP_NODE_140)
23866: #define BOOST_PP_NODE_132(p) BOOST_PP_IIF(p(132), BOOST_PP_NODE_130, BOOST_PP_NODE_134)
23866: #define BOOST_PP_NODE_130(p) BOOST_PP_IIF(p(130), BOOST_PP_NODE_129, BOOST_PP_NODE_131)
23866: #define BOOST_PP_NODE_129(p) BOOST_PP_IIF(p(129), 129, 130)
23866: #define BOOST_PP_NODE_131(p) BOOST_PP_IIF(p(131), 131, 132)
23866: #define BOOST_PP_NODE_134(p) BOOST_PP_IIF(p(134), BOOST_PP_NODE_133, BOOST_PP_NODE_135)
23866: #define BOOST_PP_NODE_133(p) BOOST_PP_IIF(p(133), 133, 134)
23866: #define BOOST_PP_NODE_135(p) BOOST_PP_IIF(p(135), 135, 136)
23866: #define BOOST_PP_NODE_140(p) BOOST_PP_IIF(p(140), BOOST_PP_NODE_138, BOOST_PP_NODE_142)
23866: #define BOOST_PP_NODE_138(p) BOOST_PP_IIF(p(138), BOOST_PP_NODE_137, BOOST_PP_NODE_139)
23866: #define BOOST_PP_NODE_137(p) BOOST_PP_IIF(p(137), 137, 138)
23866: #define BOOST_PP_NODE_139(p) BOOST_PP_IIF(p(139), 139, 140)
23866: #define BOOST_PP_NODE_142(p) BOOST_PP_IIF(p(142), BOOST_PP_NODE_141, BOOST_PP_NODE_143)
23866: #define BOOST_PP_NODE_141(p) BOOST_PP_IIF(p(141), 141, 142)
23866: #define BOOST_PP_NODE_143(p) BOOST_PP_IIF(p(143), 143, 144)
23866: #define BOOST_PP_NODE_152(p) BOOST_PP_IIF(p(152), BOOST_PP_NODE_148, BOOST_PP_NODE_156)
23866: #define BOOST_PP_NODE_148(p) BOOST_PP_IIF(p(148), BOOST_PP_NODE_146, BOOST_PP_NODE_150)
23866: #define BOOST_PP_NODE_146(p) BOOST_PP_IIF(p(146), BOOST_PP_NODE_145, BOOST_PP_NODE_147)
23866: #define BOOST_PP_NODE_145(p) BOOST_PP_IIF(p(145), 145, 146)
23866: #define BOOST_PP_NODE_147(p) BOOST_PP_IIF(p(147), 147, 148)
23866: #define BOOST_PP_NODE_150(p) BOOST_PP_IIF(p(150), BOOST_PP_NODE_149, BOOST_PP_NODE_151)
23866: #define BOOST_PP_NODE_149(p) BOOST_PP_IIF(p(149), 149, 150)
23866: #define BOOST_PP_NODE_151(p) BOOST_PP_IIF(p(151), 151, 152)
23866: #define BOOST_PP_NODE_156(p) BOOST_PP_IIF(p(156), BOOST_PP_NODE_154, BOOST_PP_NODE_158)
23866: #define BOOST_PP_NODE_154(p) BOOST_PP_IIF(p(154), BOOST_PP_NODE_153, BOOST_PP_NODE_155)
23866: #define BOOST_PP_NODE_153(p) BOOST_PP_IIF(p(153), 153, 154)
23866: #define BOOST_PP_NODE_155(p) BOOST_PP_IIF(p(155), 155, 156)
23866: #define BOOST_PP_NODE_158(p) BOOST_PP_IIF(p(158), BOOST_PP_NODE_157, BOOST_PP_NODE_159)
23866: #define BOOST_PP_NODE_157(p) BOOST_PP_IIF(p(157), 157, 158)
23866: #define BOOST_PP_NODE_159(p) BOOST_PP_IIF(p(159), 159, 160)
23866: #define BOOST_PP_NODE_176(p) BOOST_PP_IIF(p(176), BOOST_PP_NODE_168, BOOST_PP_NODE_184)
23866: #define BOOST_PP_NODE_168(p) BOOST_PP_IIF(p(168), BOOST_PP_NODE_164, BOOST_PP_NODE_172)
23866: #define BOOST_PP_NODE_164(p) BOOST_PP_IIF(p(164), BOOST_PP_NODE_162, BOOST_PP_NODE_166)
23866: #define BOOST_PP_NODE_162(p) BOOST_PP_IIF(p(162), BOOST_PP_NODE_161, BOOST_PP_NODE_163)
23866: #define BOOST_PP_NODE_161(p) BOOST_PP_IIF(p(161), 161, 162)
23866: #define BOOST_PP_NODE_163(p) BOOST_PP_IIF(p(163), 163, 164)
23866: #define BOOST_PP_NODE_166(p) BOOST_PP_IIF(p(166), BOOST_PP_NODE_165, BOOST_PP_NODE_167)
23866: #define BOOST_PP_NODE_165(p) BOOST_PP_IIF(p(165), 165, 166)
23866: #define BOOST_PP_NODE_167(p) BOOST_PP_IIF(p(167), 167, 168)
23866: #define BOOST_PP_NODE_172(p) BOOST_PP_IIF(p(172), BOOST_PP_NODE_170, BOOST_PP_NODE_174)
23866: #define BOOST_PP_NODE_170(p) BOOST_PP_IIF(p(170), BOOST_PP_NODE_169, BOOST_PP_NODE_171)
23866: #define BOOST_PP_NODE_169(p) BOOST_PP_IIF(p(169), 169, 170)
23866: #define BOOST_PP_NODE_171(p) BOOST_PP_IIF(p(171), 171, 172)
23866: #define BOOST_PP_NODE_174(p) BOOST_PP_IIF(p(174), BOOST_PP_NODE_173, BOOST_PP_NODE_175)
23866: #define BOOST_PP_NODE_173(p) BOOST_PP_IIF(p(173), 173, 174)
23866: #define BOOST_PP_NODE_175(p) BOOST_PP_IIF(p(175), 175, 176)
23866: #define BOOST_PP_NODE_184(p) BOOST_PP_IIF(p(184), BOOST_PP_NODE_180, BOOST_PP_NODE_188)
23866: #define BOOST_PP_NODE_180(p) BOOST_PP_IIF(p(180), BOOST_PP_NODE_178, BOOST_PP_NODE_182)
23866: #define BOOST_PP_NODE_178(p) BOOST_PP_IIF(p(178), BOOST_PP_NODE_177, BOOST_PP_NODE_179)
23866: #define BOOST_PP_NODE_177(p) BOOST_PP_IIF(p(177), 177, 178)
23866: #define BOOST_PP_NODE_179(p) BOOST_PP_IIF(p(179), 179, 180)
23866: #define BOOST_PP_NODE_182(p) BOOST_PP_IIF(p(182), BOOST_PP_NODE_181, BOOST_PP_NODE_183)
23866: #define BOOST_PP_NODE_181(p) BOOST_PP_IIF(p(181), 181, 182)
23866: #define BOOST_PP_NODE_183(p) BOOST_PP_IIF(p(183), 183, 184)
23866: #define BOOST_PP_NODE_188(p) BOOST_PP_IIF(p(188), BOOST_PP_NODE_186, BOOST_PP_NODE_190)
23866: #define BOOST_PP_NODE_186(p) BOOST_PP_IIF(p(186), BOOST_PP_NODE_185, BOOST_PP_NODE_187)
23866: #define BOOST_PP_NODE_185(p) BOOST_PP_IIF(p(185), 185, 186)
23866: #define BOOST_PP_NODE_187(p) BOOST_PP_IIF(p(187), 187, 188)
23866: #define BOOST_PP_NODE_190(p) BOOST_PP_IIF(p(190), BOOST_PP_NODE_189, BOOST_PP_NODE_191)
23866: #define BOOST_PP_NODE_189(p) BOOST_PP_IIF(p(189), 189, 190)
23866: #define BOOST_PP_NODE_191(p) BOOST_PP_IIF(p(191), 191, 192)
23866: #define BOOST_PP_NODE_224(p) BOOST_PP_IIF(p(224), BOOST_PP_NODE_208, BOOST_PP_NODE_240)
23866: #define BOOST_PP_NODE_208(p) BOOST_PP_IIF(p(208), BOOST_PP_NODE_200, BOOST_PP_NODE_216)
23866: #define BOOST_PP_NODE_200(p) BOOST_PP_IIF(p(200), BOOST_PP_NODE_196, BOOST_PP_NODE_204)
23866: #define BOOST_PP_NODE_196(p) BOOST_PP_IIF(p(196), BOOST_PP_NODE_194, BOOST_PP_NODE_198)
23866: #define BOOST_PP_NODE_194(p) BOOST_PP_IIF(p(194), BOOST_PP_NODE_193, BOOST_PP_NODE_195)
23866: #define BOOST_PP_NODE_193(p) BOOST_PP_IIF(p(193), 193, 194)
23866: #define BOOST_PP_NODE_195(p) BOOST_PP_IIF(p(195), 195, 196)
23866: #define BOOST_PP_NODE_198(p) BOOST_PP_IIF(p(198), BOOST_PP_NODE_197, BOOST_PP_NODE_199)
23866: #define BOOST_PP_NODE_197(p) BOOST_PP_IIF(p(197), 197, 198)
23866: #define BOOST_PP_NODE_199(p) BOOST_PP_IIF(p(199), 199, 200)
23866: #define BOOST_PP_NODE_204(p) BOOST_PP_IIF(p(204), BOOST_PP_NODE_202, BOOST_PP_NODE_206)
23866: #define BOOST_PP_NODE_202(p) BOOST_PP_IIF(p(202), BOOST_PP_NODE_201, BOOST_PP_NODE_203)
23866: #define BOOST_PP_NODE_201(p) BOOST_PP_IIF(p(201), 201, 202)
23866: #define BOOST_PP_NODE_203(p) BOOST_PP_IIF(p(203), 203, 204)
23866: #define BOOST_PP_NODE_206(p) BOOST_PP_IIF(p(206), BOOST_PP_NODE_205, BOOST_PP_NODE_207)
23866: #define BOOST_PP_NODE_205(p) BOOST_PP_IIF(p(205), 205, 206)
23866: #define BOOST_PP_NODE_207(p) BOOST_PP_IIF(p(207), 207, 208)
23866: #define BOOST_PP_NODE_216(p) BOOST_PP_IIF(p(216), BOOST_PP_NODE_212, BOOST_PP_NODE_220)
23866: #define BOOST_PP_NODE_212(p) BOOST_PP_IIF(p(212), BOOST_PP_NODE_210, BOOST_PP_NODE_214)
23866: #define BOOST_PP_NODE_210(p) BOOST_PP_IIF(p(210), BOOST_PP_NODE_209, BOOST_PP_NODE_211)
23866: #define BOOST_PP_NODE_209(p) BOOST_PP_IIF(p(209), 209, 210)
23866: #define BOOST_PP_NODE_211(p) BOOST_PP_IIF(p(211), 211, 212)
23866: #define BOOST_PP_NODE_214(p) BOOST_PP_IIF(p(214), BOOST_PP_NODE_213, BOOST_PP_NODE_215)
23866: #define BOOST_PP_NODE_213(p) BOOST_PP_IIF(p(213), 213, 214)
23866: #define BOOST_PP_NODE_215(p) BOOST_PP_IIF(p(215), 215, 216)
23866: #define BOOST_PP_NODE_220(p) BOOST_PP_IIF(p(220), BOOST_PP_NODE_218, BOOST_PP_NODE_222)
23866: #define BOOST_PP_NODE_218(p) BOOST_PP_IIF(p(218), BOOST_PP_NODE_217, BOOST_PP_NODE_219)
23866: #define BOOST_PP_NODE_217(p) BOOST_PP_IIF(p(217), 217, 218)
23866: #define BOOST_PP_NODE_219(p) BOOST_PP_IIF(p(219), 219, 220)
23866: #define BOOST_PP_NODE_222(p) BOOST_PP_IIF(p(222), BOOST_PP_NODE_221, BOOST_PP_NODE_223)
23866: #define BOOST_PP_NODE_221(p) BOOST_PP_IIF(p(221), 221, 222)
23866: #define BOOST_PP_NODE_223(p) BOOST_PP_IIF(p(223), 223, 224)
23866: #define BOOST_PP_NODE_240(p) BOOST_PP_IIF(p(240), BOOST_PP_NODE_232, BOOST_PP_NODE_248)
23866: #define BOOST_PP_NODE_232(p) BOOST_PP_IIF(p(232), BOOST_PP_NODE_228, BOOST_PP_NODE_236)
23866: #define BOOST_PP_NODE_228(p) BOOST_PP_IIF(p(228), BOOST_PP_NODE_226, BOOST_PP_NODE_230)
23866: #define BOOST_PP_NODE_226(p) BOOST_PP_IIF(p(226), BOOST_PP_NODE_225, BOOST_PP_NODE_227)
23866: #define BOOST_PP_NODE_225(p) BOOST_PP_IIF(p(225), 225, 226)
23866: #define BOOST_PP_NODE_227(p) BOOST_PP_IIF(p(227), 227, 228)
23866: #define BOOST_PP_NODE_230(p) BOOST_PP_IIF(p(230), BOOST_PP_NODE_229, BOOST_PP_NODE_231)
23866: #define BOOST_PP_NODE_229(p) BOOST_PP_IIF(p(229), 229, 230)
23866: #define BOOST_PP_NODE_231(p) BOOST_PP_IIF(p(231), 231, 232)
23866: #define BOOST_PP_NODE_236(p) BOOST_PP_IIF(p(236), BOOST_PP_NODE_234, BOOST_PP_NODE_238)
23866: #define BOOST_PP_NODE_234(p) BOOST_PP_IIF(p(234), BOOST_PP_NODE_233, BOOST_PP_NODE_235)
23866: #define BOOST_PP_NODE_233(p) BOOST_PP_IIF(p(233), 233, 234)
23866: #define BOOST_PP_NODE_235(p) BOOST_PP_IIF(p(235), 235, 236)
23866: #define BOOST_PP_NODE_238(p) BOOST_PP_IIF(p(238), BOOST_PP_NODE_237, BOOST_PP_NODE_239)
23866: #define BOOST_PP_NODE_237(p) BOOST_PP_IIF(p(237), 237, 238)
23866: #define BOOST_PP_NODE_239(p) BOOST_PP_IIF(p(239), 239, 240)
23866: #define BOOST_PP_NODE_248(p) BOOST_PP_IIF(p(248), BOOST_PP_NODE_244, BOOST_PP_NODE_252)
23866: #define BOOST_PP_NODE_244(p) BOOST_PP_IIF(p(244), BOOST_PP_NODE_242, BOOST_PP_NODE_246)
23866: #define BOOST_PP_NODE_242(p) BOOST_PP_IIF(p(242), BOOST_PP_NODE_241, BOOST_PP_NODE_243)
23866: #define BOOST_PP_NODE_241(p) BOOST_PP_IIF(p(241), 241, 242)
23866: #define BOOST_PP_NODE_243(p) BOOST_PP_IIF(p(243), 243, 244)
23866: #define BOOST_PP_NODE_246(p) BOOST_PP_IIF(p(246), BOOST_PP_NODE_245, BOOST_PP_NODE_247)
23866: #define BOOST_PP_NODE_245(p) BOOST_PP_IIF(p(245), 245, 246)
23866: #define BOOST_PP_NODE_247(p) BOOST_PP_IIF(p(247), 247, 248)
23866: #define BOOST_PP_NODE_252(p) BOOST_PP_IIF(p(252), BOOST_PP_NODE_250, BOOST_PP_NODE_254)
23866: #define BOOST_PP_NODE_250(p) BOOST_PP_IIF(p(250), BOOST_PP_NODE_249, BOOST_PP_NODE_251)
23866: #define BOOST_PP_NODE_249(p) BOOST_PP_IIF(p(249), 249, 250)
23866: #define BOOST_PP_NODE_251(p) BOOST_PP_IIF(p(251), 251, 252)
23866: #define BOOST_PP_NODE_254(p) BOOST_PP_IIF(p(254), BOOST_PP_NODE_253, BOOST_PP_NODE_255)
23866: #define BOOST_PP_NODE_253(p) BOOST_PP_IIF(p(253), 253, 254)
23866: #define BOOST_PP_NODE_255(p) BOOST_PP_IIF(p(255), 255, 256)
23866: # 21 "/usr/include/boost/preprocessor/repetition/repeat.hpp" 2 3 4
23866: # 1 "/usr/include/boost/preprocessor/tuple/eat.hpp" 1 3 4
23866: # 16 "/usr/include/boost/preprocessor/tuple/eat.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_TUPLE_EAT_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_EAT(...)
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_TUPLE_EAT(size) BOOST_PP_EAT
23866: # 43 "/usr/include/boost/preprocessor/tuple/eat.hpp" 3 4
23866: #define BOOST_PP_TUPLE_EAT_N(size) BOOST_PP_TUPLE_EAT_N_I(size)
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_TUPLE_EAT_N_I(size) BOOST_PP_TUPLE_EAT_ ## size
23866:
23866: #define BOOST_PP_TUPLE_EAT_1(e0)
23866: #define BOOST_PP_TUPLE_EAT_2(e0,e1)
23866: #define BOOST_PP_TUPLE_EAT_3(e0,e1,e2)
23866: #define BOOST_PP_TUPLE_EAT_4(e0,e1,e2,e3)
23866: #define BOOST_PP_TUPLE_EAT_5(e0,e1,e2,e3,e4)
23866: #define BOOST_PP_TUPLE_EAT_6(e0,e1,e2,e3,e4,e5)
23866: #define BOOST_PP_TUPLE_EAT_7(e0,e1,e2,e3,e4,e5,e6)
23866: #define BOOST_PP_TUPLE_EAT_8(e0,e1,e2,e3,e4,e5,e6,e7)
23866: #define BOOST_PP_TUPLE_EAT_9(e0,e1,e2,e3,e4,e5,e6,e7,e8)
23866: #define BOOST_PP_TUPLE_EAT_10(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9)
23866: #define BOOST_PP_TUPLE_EAT_11(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10)
23866: #define BOOST_PP_TUPLE_EAT_12(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11)
23866: #define BOOST_PP_TUPLE_EAT_13(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12)
23866: #define BOOST_PP_TUPLE_EAT_14(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13)
23866: #define BOOST_PP_TUPLE_EAT_15(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14)
23866: #define BOOST_PP_TUPLE_EAT_16(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15)
23866: #define BOOST_PP_TUPLE_EAT_17(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15,e16)
23866: #define BOOST_PP_TUPLE_EAT_18(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15,e16,e17)
23866: #define BOOST_PP_TUPLE_EAT_19(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15,e16,e17,e18)
23866: #define BOOST_PP_TUPLE_EAT_20(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15,e16,e17,e18,e19)
23866: #define BOOST_PP_TUPLE_EAT_21(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15,e16,e17,e18,e19,e20)
23866: #define BOOST_PP_TUPLE_EAT_22(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15,e16,e17,e18,e19,e20,e21)
23866: #define BOOST_PP_TUPLE_EAT_23(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15,e16,e17,e18,e19,e20,e21,e22)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: #define BOOST_PP_TUPLE_EAT_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)
23866: # 22 "/usr/include/boost/preprocessor/repetition/repeat.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_REPEAT BOOST_PP_CAT(BOOST_PP_REPEAT_, BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4))
23866:
23866: #define BOOST_PP_REPEAT_P(n) BOOST_PP_CAT(BOOST_PP_REPEAT_CHECK_, BOOST_PP_REPEAT_ ## n(1, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3, BOOST_PP_NIL))
23866:
23866: #define BOOST_PP_REPEAT_CHECK_BOOST_PP_NIL 1
23866: #define BOOST_PP_REPEAT_CHECK_BOOST_PP_REPEAT_1(c,m,d) 0
23866: #define BOOST_PP_REPEAT_CHECK_BOOST_PP_REPEAT_2(c,m,d) 0
23866: #define BOOST_PP_REPEAT_CHECK_BOOST_PP_REPEAT_3(c,m,d) 0
23866:
23866: #define BOOST_PP_REPEAT_1(c,m,d) BOOST_PP_REPEAT_1_I(c, m, d)
23866: #define BOOST_PP_REPEAT_2(c,m,d) BOOST_PP_REPEAT_2_I(c, m, d)
23866: #define BOOST_PP_REPEAT_3(c,m,d) BOOST_PP_REPEAT_3_I(c, m, d)
23866: #define BOOST_PP_REPEAT_4(c,m,d) BOOST_PP_ERROR(0x0003)
23866:
23866: #define BOOST_PP_REPEAT_1_I(c,m,d) BOOST_PP_REPEAT_1_ ## c(m, d)
23866: #define BOOST_PP_REPEAT_2_I(c,m,d) BOOST_PP_REPEAT_2_ ## c(m, d)
23866: #define BOOST_PP_REPEAT_3_I(c,m,d) BOOST_PP_REPEAT_3_ ## c(m, d)
23866:
23866: #define BOOST_PP_REPEAT_1ST BOOST_PP_REPEAT_1
23866: #define BOOST_PP_REPEAT_2ND BOOST_PP_REPEAT_2
23866: #define BOOST_PP_REPEAT_3RD BOOST_PP_REPEAT_3
23866:
23866: #define BOOST_PP_REPEAT_1_0(m,d)
23866: #define BOOST_PP_REPEAT_1_1(m,d) m(2, 0, d)
23866: #define BOOST_PP_REPEAT_1_2(m,d) BOOST_PP_REPEAT_1_1(m, d) m(2, 1, d)
23866: #define BOOST_PP_REPEAT_1_3(m,d) BOOST_PP_REPEAT_1_2(m, d) m(2, 2, d)
23866: #define BOOST_PP_REPEAT_1_4(m,d) BOOST_PP_REPEAT_1_3(m, d) m(2, 3, d)
23866: #define BOOST_PP_REPEAT_1_5(m,d) BOOST_PP_REPEAT_1_4(m, d) m(2, 4, d)
23866: #define BOOST_PP_REPEAT_1_6(m,d) BOOST_PP_REPEAT_1_5(m, d) m(2, 5, d)
23866: #define BOOST_PP_REPEAT_1_7(m,d) BOOST_PP_REPEAT_1_6(m, d) m(2, 6, d)
23866: #define BOOST_PP_REPEAT_1_8(m,d) BOOST_PP_REPEAT_1_7(m, d) m(2, 7, d)
23866: #define BOOST_PP_REPEAT_1_9(m,d) BOOST_PP_REPEAT_1_8(m, d) m(2, 8, d)
23866: #define BOOST_PP_REPEAT_1_10(m,d) BOOST_PP_REPEAT_1_9(m, d) m(2, 9, d)
23866: #define BOOST_PP_REPEAT_1_11(m,d) BOOST_PP_REPEAT_1_10(m, d) m(2, 10, d)
23866: #define BOOST_PP_REPEAT_1_12(m,d) BOOST_PP_REPEAT_1_11(m, d) m(2, 11, d)
23866: #define BOOST_PP_REPEAT_1_13(m,d) BOOST_PP_REPEAT_1_12(m, d) m(2, 12, d)
23866: #define BOOST_PP_REPEAT_1_14(m,d) BOOST_PP_REPEAT_1_13(m, d) m(2, 13, d)
23866: #define BOOST_PP_REPEAT_1_15(m,d) BOOST_PP_REPEAT_1_14(m, d) m(2, 14, d)
23866: #define BOOST_PP_REPEAT_1_16(m,d) BOOST_PP_REPEAT_1_15(m, d) m(2, 15, d)
23866: #define BOOST_PP_REPEAT_1_17(m,d) BOOST_PP_REPEAT_1_16(m, d) m(2, 16, d)
23866: #define BOOST_PP_REPEAT_1_18(m,d) BOOST_PP_REPEAT_1_17(m, d) m(2, 17, d)
23866: #define BOOST_PP_REPEAT_1_19(m,d) BOOST_PP_REPEAT_1_18(m, d) m(2, 18, d)
23866: #define BOOST_PP_REPEAT_1_20(m,d) BOOST_PP_REPEAT_1_19(m, d) m(2, 19, d)
23866: #define BOOST_PP_REPEAT_1_21(m,d) BOOST_PP_REPEAT_1_20(m, d) m(2, 20, d)
23866: #define BOOST_PP_REPEAT_1_22(m,d) BOOST_PP_REPEAT_1_21(m, d) m(2, 21, d)
23866: #define BOOST_PP_REPEAT_1_23(m,d) BOOST_PP_REPEAT_1_22(m, d) m(2, 22, d)
23866: #define BOOST_PP_REPEAT_1_24(m,d) BOOST_PP_REPEAT_1_23(m, d) m(2, 23, d)
23866: #define BOOST_PP_REPEAT_1_25(m,d) BOOST_PP_REPEAT_1_24(m, d) m(2, 24, d)
23866: #define BOOST_PP_REPEAT_1_26(m,d) BOOST_PP_REPEAT_1_25(m, d) m(2, 25, d)
23866: #define BOOST_PP_REPEAT_1_27(m,d) BOOST_PP_REPEAT_1_26(m, d) m(2, 26, d)
23866: #define BOOST_PP_REPEAT_1_28(m,d) BOOST_PP_REPEAT_1_27(m, d) m(2, 27, d)
23866: #define BOOST_PP_REPEAT_1_29(m,d) BOOST_PP_REPEAT_1_28(m, d) m(2, 28, d)
23866: #define BOOST_PP_REPEAT_1_30(m,d) BOOST_PP_REPEAT_1_29(m, d) m(2, 29, d)
23866: #define BOOST_PP_REPEAT_1_31(m,d) BOOST_PP_REPEAT_1_30(m, d) m(2, 30, d)
23866: #define BOOST_PP_REPEAT_1_32(m,d) BOOST_PP_REPEAT_1_31(m, d) m(2, 31, d)
23866: #define BOOST_PP_REPEAT_1_33(m,d) BOOST_PP_REPEAT_1_32(m, d) m(2, 32, d)
23866: #define BOOST_PP_REPEAT_1_34(m,d) BOOST_PP_REPEAT_1_33(m, d) m(2, 33, d)
23866: #define BOOST_PP_REPEAT_1_35(m,d) BOOST_PP_REPEAT_1_34(m, d) m(2, 34, d)
23866: #define BOOST_PP_REPEAT_1_36(m,d) BOOST_PP_REPEAT_1_35(m, d) m(2, 35, d)
23866: #define BOOST_PP_REPEAT_1_37(m,d) BOOST_PP_REPEAT_1_36(m, d) m(2, 36, d)
23866: #define BOOST_PP_REPEAT_1_38(m,d) BOOST_PP_REPEAT_1_37(m, d) m(2, 37, d)
23866: #define BOOST_PP_REPEAT_1_39(m,d) BOOST_PP_REPEAT_1_38(m, d) m(2, 38, d)
23866: #define BOOST_PP_REPEAT_1_40(m,d) BOOST_PP_REPEAT_1_39(m, d) m(2, 39, d)
23866: #define BOOST_PP_REPEAT_1_41(m,d) BOOST_PP_REPEAT_1_40(m, d) m(2, 40, d)
23866: #define BOOST_PP_REPEAT_1_42(m,d) BOOST_PP_REPEAT_1_41(m, d) m(2, 41, d)
23866: #define BOOST_PP_REPEAT_1_43(m,d) BOOST_PP_REPEAT_1_42(m, d) m(2, 42, d)
23866: #define BOOST_PP_REPEAT_1_44(m,d) BOOST_PP_REPEAT_1_43(m, d) m(2, 43, d)
23866: #define BOOST_PP_REPEAT_1_45(m,d) BOOST_PP_REPEAT_1_44(m, d) m(2, 44, d)
23866: #define BOOST_PP_REPEAT_1_46(m,d) BOOST_PP_REPEAT_1_45(m, d) m(2, 45, d)
23866: #define BOOST_PP_REPEAT_1_47(m,d) BOOST_PP_REPEAT_1_46(m, d) m(2, 46, d)
23866: #define BOOST_PP_REPEAT_1_48(m,d) BOOST_PP_REPEAT_1_47(m, d) m(2, 47, d)
23866: #define BOOST_PP_REPEAT_1_49(m,d) BOOST_PP_REPEAT_1_48(m, d) m(2, 48, d)
23866: #define BOOST_PP_REPEAT_1_50(m,d) BOOST_PP_REPEAT_1_49(m, d) m(2, 49, d)
23866: #define BOOST_PP_REPEAT_1_51(m,d) BOOST_PP_REPEAT_1_50(m, d) m(2, 50, d)
23866: #define BOOST_PP_REPEAT_1_52(m,d) BOOST_PP_REPEAT_1_51(m, d) m(2, 51, d)
23866: #define BOOST_PP_REPEAT_1_53(m,d) BOOST_PP_REPEAT_1_52(m, d) m(2, 52, d)
23866: #define BOOST_PP_REPEAT_1_54(m,d) BOOST_PP_REPEAT_1_53(m, d) m(2, 53, d)
23866: #define BOOST_PP_REPEAT_1_55(m,d) BOOST_PP_REPEAT_1_54(m, d) m(2, 54, d)
23866: #define BOOST_PP_REPEAT_1_56(m,d) BOOST_PP_REPEAT_1_55(m, d) m(2, 55, d)
23866: #define BOOST_PP_REPEAT_1_57(m,d) BOOST_PP_REPEAT_1_56(m, d) m(2, 56, d)
23866: #define BOOST_PP_REPEAT_1_58(m,d) BOOST_PP_REPEAT_1_57(m, d) m(2, 57, d)
23866: #define BOOST_PP_REPEAT_1_59(m,d) BOOST_PP_REPEAT_1_58(m, d) m(2, 58, d)
23866: #define BOOST_PP_REPEAT_1_60(m,d) BOOST_PP_REPEAT_1_59(m, d) m(2, 59, d)
23866: #define BOOST_PP_REPEAT_1_61(m,d) BOOST_PP_REPEAT_1_60(m, d) m(2, 60, d)
23866: #define BOOST_PP_REPEAT_1_62(m,d) BOOST_PP_REPEAT_1_61(m, d) m(2, 61, d)
23866: #define BOOST_PP_REPEAT_1_63(m,d) BOOST_PP_REPEAT_1_62(m, d) m(2, 62, d)
23866: #define BOOST_PP_REPEAT_1_64(m,d) BOOST_PP_REPEAT_1_63(m, d) m(2, 63, d)
23866: #define BOOST_PP_REPEAT_1_65(m,d) BOOST_PP_REPEAT_1_64(m, d) m(2, 64, d)
23866: #define BOOST_PP_REPEAT_1_66(m,d) BOOST_PP_REPEAT_1_65(m, d) m(2, 65, d)
23866: #define BOOST_PP_REPEAT_1_67(m,d) BOOST_PP_REPEAT_1_66(m, d) m(2, 66, d)
23866: #define BOOST_PP_REPEAT_1_68(m,d) BOOST_PP_REPEAT_1_67(m, d) m(2, 67, d)
23866: #define BOOST_PP_REPEAT_1_69(m,d) BOOST_PP_REPEAT_1_68(m, d) m(2, 68, d)
23866: #define BOOST_PP_REPEAT_1_70(m,d) BOOST_PP_REPEAT_1_69(m, d) m(2, 69, d)
23866: #define BOOST_PP_REPEAT_1_71(m,d) BOOST_PP_REPEAT_1_70(m, d) m(2, 70, d)
23866: #define BOOST_PP_REPEAT_1_72(m,d) BOOST_PP_REPEAT_1_71(m, d) m(2, 71, d)
23866: #define BOOST_PP_REPEAT_1_73(m,d) BOOST_PP_REPEAT_1_72(m, d) m(2, 72, d)
23866: #define BOOST_PP_REPEAT_1_74(m,d) BOOST_PP_REPEAT_1_73(m, d) m(2, 73, d)
23866: #define BOOST_PP_REPEAT_1_75(m,d) BOOST_PP_REPEAT_1_74(m, d) m(2, 74, d)
23866: #define BOOST_PP_REPEAT_1_76(m,d) BOOST_PP_REPEAT_1_75(m, d) m(2, 75, d)
23866: #define BOOST_PP_REPEAT_1_77(m,d) BOOST_PP_REPEAT_1_76(m, d) m(2, 76, d)
23866: #define BOOST_PP_REPEAT_1_78(m,d) BOOST_PP_REPEAT_1_77(m, d) m(2, 77, d)
23866: #define BOOST_PP_REPEAT_1_79(m,d) BOOST_PP_REPEAT_1_78(m, d) m(2, 78, d)
23866: #define BOOST_PP_REPEAT_1_80(m,d) BOOST_PP_REPEAT_1_79(m, d) m(2, 79, d)
23866: #define BOOST_PP_REPEAT_1_81(m,d) BOOST_PP_REPEAT_1_80(m, d) m(2, 80, d)
23866: #define BOOST_PP_REPEAT_1_82(m,d) BOOST_PP_REPEAT_1_81(m, d) m(2, 81, d)
23866: #define BOOST_PP_REPEAT_1_83(m,d) BOOST_PP_REPEAT_1_82(m, d) m(2, 82, d)
23866: #define BOOST_PP_REPEAT_1_84(m,d) BOOST_PP_REPEAT_1_83(m, d) m(2, 83, d)
23866: #define BOOST_PP_REPEAT_1_85(m,d) BOOST_PP_REPEAT_1_84(m, d) m(2, 84, d)
23866: #define BOOST_PP_REPEAT_1_86(m,d) BOOST_PP_REPEAT_1_85(m, d) m(2, 85, d)
23866: #define BOOST_PP_REPEAT_1_87(m,d) BOOST_PP_REPEAT_1_86(m, d) m(2, 86, d)
23866: #define BOOST_PP_REPEAT_1_88(m,d) BOOST_PP_REPEAT_1_87(m, d) m(2, 87, d)
23866: #define BOOST_PP_REPEAT_1_89(m,d) BOOST_PP_REPEAT_1_88(m, d) m(2, 88, d)
23866: #define BOOST_PP_REPEAT_1_90(m,d) BOOST_PP_REPEAT_1_89(m, d) m(2, 89, d)
23866: #define BOOST_PP_REPEAT_1_91(m,d) BOOST_PP_REPEAT_1_90(m, d) m(2, 90, d)
23866: #define BOOST_PP_REPEAT_1_92(m,d) BOOST_PP_REPEAT_1_91(m, d) m(2, 91, d)
23866: #define BOOST_PP_REPEAT_1_93(m,d) BOOST_PP_REPEAT_1_92(m, d) m(2, 92, d)
23866: #define BOOST_PP_REPEAT_1_94(m,d) BOOST_PP_REPEAT_1_93(m, d) m(2, 93, d)
23866: #define BOOST_PP_REPEAT_1_95(m,d) BOOST_PP_REPEAT_1_94(m, d) m(2, 94, d)
23866: #define BOOST_PP_REPEAT_1_96(m,d) BOOST_PP_REPEAT_1_95(m, d) m(2, 95, d)
23866: #define BOOST_PP_REPEAT_1_97(m,d) BOOST_PP_REPEAT_1_96(m, d) m(2, 96, d)
23866: #define BOOST_PP_REPEAT_1_98(m,d) BOOST_PP_REPEAT_1_97(m, d) m(2, 97, d)
23866: #define BOOST_PP_REPEAT_1_99(m,d) BOOST_PP_REPEAT_1_98(m, d) m(2, 98, d)
23866: #define BOOST_PP_REPEAT_1_100(m,d) BOOST_PP_REPEAT_1_99(m, d) m(2, 99, d)
23866: #define BOOST_PP_REPEAT_1_101(m,d) BOOST_PP_REPEAT_1_100(m, d) m(2, 100, d)
23866: #define BOOST_PP_REPEAT_1_102(m,d) BOOST_PP_REPEAT_1_101(m, d) m(2, 101, d)
23866: #define BOOST_PP_REPEAT_1_103(m,d) BOOST_PP_REPEAT_1_102(m, d) m(2, 102, d)
23866: #define BOOST_PP_REPEAT_1_104(m,d) BOOST_PP_REPEAT_1_103(m, d) m(2, 103, d)
23866: #define BOOST_PP_REPEAT_1_105(m,d) BOOST_PP_REPEAT_1_104(m, d) m(2, 104, d)
23866: #define BOOST_PP_REPEAT_1_106(m,d) BOOST_PP_REPEAT_1_105(m, d) m(2, 105, d)
23866: #define BOOST_PP_REPEAT_1_107(m,d) BOOST_PP_REPEAT_1_106(m, d) m(2, 106, d)
23866: #define BOOST_PP_REPEAT_1_108(m,d) BOOST_PP_REPEAT_1_107(m, d) m(2, 107, d)
23866: #define BOOST_PP_REPEAT_1_109(m,d) BOOST_PP_REPEAT_1_108(m, d) m(2, 108, d)
23866: #define BOOST_PP_REPEAT_1_110(m,d) BOOST_PP_REPEAT_1_109(m, d) m(2, 109, d)
23866: #define BOOST_PP_REPEAT_1_111(m,d) BOOST_PP_REPEAT_1_110(m, d) m(2, 110, d)
23866: #define BOOST_PP_REPEAT_1_112(m,d) BOOST_PP_REPEAT_1_111(m, d) m(2, 111, d)
23866: #define BOOST_PP_REPEAT_1_113(m,d) BOOST_PP_REPEAT_1_112(m, d) m(2, 112, d)
23866: #define BOOST_PP_REPEAT_1_114(m,d) BOOST_PP_REPEAT_1_113(m, d) m(2, 113, d)
23866: #define BOOST_PP_REPEAT_1_115(m,d) BOOST_PP_REPEAT_1_114(m, d) m(2, 114, d)
23866: #define BOOST_PP_REPEAT_1_116(m,d) BOOST_PP_REPEAT_1_115(m, d) m(2, 115, d)
23866: #define BOOST_PP_REPEAT_1_117(m,d) BOOST_PP_REPEAT_1_116(m, d) m(2, 116, d)
23866: #define BOOST_PP_REPEAT_1_118(m,d) BOOST_PP_REPEAT_1_117(m, d) m(2, 117, d)
23866: #define BOOST_PP_REPEAT_1_119(m,d) BOOST_PP_REPEAT_1_118(m, d) m(2, 118, d)
23866: #define BOOST_PP_REPEAT_1_120(m,d) BOOST_PP_REPEAT_1_119(m, d) m(2, 119, d)
23866: #define BOOST_PP_REPEAT_1_121(m,d) BOOST_PP_REPEAT_1_120(m, d) m(2, 120, d)
23866: #define BOOST_PP_REPEAT_1_122(m,d) BOOST_PP_REPEAT_1_121(m, d) m(2, 121, d)
23866: #define BOOST_PP_REPEAT_1_123(m,d) BOOST_PP_REPEAT_1_122(m, d) m(2, 122, d)
23866: #define BOOST_PP_REPEAT_1_124(m,d) BOOST_PP_REPEAT_1_123(m, d) m(2, 123, d)
23866: #define BOOST_PP_REPEAT_1_125(m,d) BOOST_PP_REPEAT_1_124(m, d) m(2, 124, d)
23866: #define BOOST_PP_REPEAT_1_126(m,d) BOOST_PP_REPEAT_1_125(m, d) m(2, 125, d)
23866: #define BOOST_PP_REPEAT_1_127(m,d) BOOST_PP_REPEAT_1_126(m, d) m(2, 126, d)
23866: #define BOOST_PP_REPEAT_1_128(m,d) BOOST_PP_REPEAT_1_127(m, d) m(2, 127, d)
23866: #define BOOST_PP_REPEAT_1_129(m,d) BOOST_PP_REPEAT_1_128(m, d) m(2, 128, d)
23866: #define BOOST_PP_REPEAT_1_130(m,d) BOOST_PP_REPEAT_1_129(m, d) m(2, 129, d)
23866: #define BOOST_PP_REPEAT_1_131(m,d) BOOST_PP_REPEAT_1_130(m, d) m(2, 130, d)
23866: #define BOOST_PP_REPEAT_1_132(m,d) BOOST_PP_REPEAT_1_131(m, d) m(2, 131, d)
23866: #define BOOST_PP_REPEAT_1_133(m,d) BOOST_PP_REPEAT_1_132(m, d) m(2, 132, d)
23866: #define BOOST_PP_REPEAT_1_134(m,d) BOOST_PP_REPEAT_1_133(m, d) m(2, 133, d)
23866: #define BOOST_PP_REPEAT_1_135(m,d) BOOST_PP_REPEAT_1_134(m, d) m(2, 134, d)
23866: #define BOOST_PP_REPEAT_1_136(m,d) BOOST_PP_REPEAT_1_135(m, d) m(2, 135, d)
23866: #define BOOST_PP_REPEAT_1_137(m,d) BOOST_PP_REPEAT_1_136(m, d) m(2, 136, d)
23866: #define BOOST_PP_REPEAT_1_138(m,d) BOOST_PP_REPEAT_1_137(m, d) m(2, 137, d)
23866: #define BOOST_PP_REPEAT_1_139(m,d) BOOST_PP_REPEAT_1_138(m, d) m(2, 138, d)
23866: #define BOOST_PP_REPEAT_1_140(m,d) BOOST_PP_REPEAT_1_139(m, d) m(2, 139, d)
23866: #define BOOST_PP_REPEAT_1_141(m,d) BOOST_PP_REPEAT_1_140(m, d) m(2, 140, d)
23866: #define BOOST_PP_REPEAT_1_142(m,d) BOOST_PP_REPEAT_1_141(m, d) m(2, 141, d)
23866: #define BOOST_PP_REPEAT_1_143(m,d) BOOST_PP_REPEAT_1_142(m, d) m(2, 142, d)
23866: #define BOOST_PP_REPEAT_1_144(m,d) BOOST_PP_REPEAT_1_143(m, d) m(2, 143, d)
23866: #define BOOST_PP_REPEAT_1_145(m,d) BOOST_PP_REPEAT_1_144(m, d) m(2, 144, d)
23866: #define BOOST_PP_REPEAT_1_146(m,d) BOOST_PP_REPEAT_1_145(m, d) m(2, 145, d)
23866: #define BOOST_PP_REPEAT_1_147(m,d) BOOST_PP_REPEAT_1_146(m, d) m(2, 146, d)
23866: #define BOOST_PP_REPEAT_1_148(m,d) BOOST_PP_REPEAT_1_147(m, d) m(2, 147, d)
23866: #define BOOST_PP_REPEAT_1_149(m,d) BOOST_PP_REPEAT_1_148(m, d) m(2, 148, d)
23866: #define BOOST_PP_REPEAT_1_150(m,d) BOOST_PP_REPEAT_1_149(m, d) m(2, 149, d)
23866: #define BOOST_PP_REPEAT_1_151(m,d) BOOST_PP_REPEAT_1_150(m, d) m(2, 150, d)
23866: #define BOOST_PP_REPEAT_1_152(m,d) BOOST_PP_REPEAT_1_151(m, d) m(2, 151, d)
23866: #define BOOST_PP_REPEAT_1_153(m,d) BOOST_PP_REPEAT_1_152(m, d) m(2, 152, d)
23866: #define BOOST_PP_REPEAT_1_154(m,d) BOOST_PP_REPEAT_1_153(m, d) m(2, 153, d)
23866: #define BOOST_PP_REPEAT_1_155(m,d) BOOST_PP_REPEAT_1_154(m, d) m(2, 154, d)
23866: #define BOOST_PP_REPEAT_1_156(m,d) BOOST_PP_REPEAT_1_155(m, d) m(2, 155, d)
23866: #define BOOST_PP_REPEAT_1_157(m,d) BOOST_PP_REPEAT_1_156(m, d) m(2, 156, d)
23866: #define BOOST_PP_REPEAT_1_158(m,d) BOOST_PP_REPEAT_1_157(m, d) m(2, 157, d)
23866: #define BOOST_PP_REPEAT_1_159(m,d) BOOST_PP_REPEAT_1_158(m, d) m(2, 158, d)
23866: #define BOOST_PP_REPEAT_1_160(m,d) BOOST_PP_REPEAT_1_159(m, d) m(2, 159, d)
23866: #define BOOST_PP_REPEAT_1_161(m,d) BOOST_PP_REPEAT_1_160(m, d) m(2, 160, d)
23866: #define BOOST_PP_REPEAT_1_162(m,d) BOOST_PP_REPEAT_1_161(m, d) m(2, 161, d)
23866: #define BOOST_PP_REPEAT_1_163(m,d) BOOST_PP_REPEAT_1_162(m, d) m(2, 162, d)
23866: #define BOOST_PP_REPEAT_1_164(m,d) BOOST_PP_REPEAT_1_163(m, d) m(2, 163, d)
23866: #define BOOST_PP_REPEAT_1_165(m,d) BOOST_PP_REPEAT_1_164(m, d) m(2, 164, d)
23866: #define BOOST_PP_REPEAT_1_166(m,d) BOOST_PP_REPEAT_1_165(m, d) m(2, 165, d)
23866: #define BOOST_PP_REPEAT_1_167(m,d) BOOST_PP_REPEAT_1_166(m, d) m(2, 166, d)
23866: #define BOOST_PP_REPEAT_1_168(m,d) BOOST_PP_REPEAT_1_167(m, d) m(2, 167, d)
23866: #define BOOST_PP_REPEAT_1_169(m,d) BOOST_PP_REPEAT_1_168(m, d) m(2, 168, d)
23866: #define BOOST_PP_REPEAT_1_170(m,d) BOOST_PP_REPEAT_1_169(m, d) m(2, 169, d)
23866: #define BOOST_PP_REPEAT_1_171(m,d) BOOST_PP_REPEAT_1_170(m, d) m(2, 170, d)
23866: #define BOOST_PP_REPEAT_1_172(m,d) BOOST_PP_REPEAT_1_171(m, d) m(2, 171, d)
23866: #define BOOST_PP_REPEAT_1_173(m,d) BOOST_PP_REPEAT_1_172(m, d) m(2, 172, d)
23866: #define BOOST_PP_REPEAT_1_174(m,d) BOOST_PP_REPEAT_1_173(m, d) m(2, 173, d)
23866: #define BOOST_PP_REPEAT_1_175(m,d) BOOST_PP_REPEAT_1_174(m, d) m(2, 174, d)
23866: #define BOOST_PP_REPEAT_1_176(m,d) BOOST_PP_REPEAT_1_175(m, d) m(2, 175, d)
23866: #define BOOST_PP_REPEAT_1_177(m,d) BOOST_PP_REPEAT_1_176(m, d) m(2, 176, d)
23866: #define BOOST_PP_REPEAT_1_178(m,d) BOOST_PP_REPEAT_1_177(m, d) m(2, 177, d)
23866: #define BOOST_PP_REPEAT_1_179(m,d) BOOST_PP_REPEAT_1_178(m, d) m(2, 178, d)
23866: #define BOOST_PP_REPEAT_1_180(m,d) BOOST_PP_REPEAT_1_179(m, d) m(2, 179, d)
23866: #define BOOST_PP_REPEAT_1_181(m,d) BOOST_PP_REPEAT_1_180(m, d) m(2, 180, d)
23866: #define BOOST_PP_REPEAT_1_182(m,d) BOOST_PP_REPEAT_1_181(m, d) m(2, 181, d)
23866: #define BOOST_PP_REPEAT_1_183(m,d) BOOST_PP_REPEAT_1_182(m, d) m(2, 182, d)
23866: #define BOOST_PP_REPEAT_1_184(m,d) BOOST_PP_REPEAT_1_183(m, d) m(2, 183, d)
23866: #define BOOST_PP_REPEAT_1_185(m,d) BOOST_PP_REPEAT_1_184(m, d) m(2, 184, d)
23866: #define BOOST_PP_REPEAT_1_186(m,d) BOOST_PP_REPEAT_1_185(m, d) m(2, 185, d)
23866: #define BOOST_PP_REPEAT_1_187(m,d) BOOST_PP_REPEAT_1_186(m, d) m(2, 186, d)
23866: #define BOOST_PP_REPEAT_1_188(m,d) BOOST_PP_REPEAT_1_187(m, d) m(2, 187, d)
23866: #define BOOST_PP_REPEAT_1_189(m,d) BOOST_PP_REPEAT_1_188(m, d) m(2, 188, d)
23866: #define BOOST_PP_REPEAT_1_190(m,d) BOOST_PP_REPEAT_1_189(m, d) m(2, 189, d)
23866: #define BOOST_PP_REPEAT_1_191(m,d) BOOST_PP_REPEAT_1_190(m, d) m(2, 190, d)
23866: #define BOOST_PP_REPEAT_1_192(m,d) BOOST_PP_REPEAT_1_191(m, d) m(2, 191, d)
23866: #define BOOST_PP_REPEAT_1_193(m,d) BOOST_PP_REPEAT_1_192(m, d) m(2, 192, d)
23866: #define BOOST_PP_REPEAT_1_194(m,d) BOOST_PP_REPEAT_1_193(m, d) m(2, 193, d)
23866: #define BOOST_PP_REPEAT_1_195(m,d) BOOST_PP_REPEAT_1_194(m, d) m(2, 194, d)
23866: #define BOOST_PP_REPEAT_1_196(m,d) BOOST_PP_REPEAT_1_195(m, d) m(2, 195, d)
23866: #define BOOST_PP_REPEAT_1_197(m,d) BOOST_PP_REPEAT_1_196(m, d) m(2, 196, d)
23866: #define BOOST_PP_REPEAT_1_198(m,d) BOOST_PP_REPEAT_1_197(m, d) m(2, 197, d)
23866: #define BOOST_PP_REPEAT_1_199(m,d) BOOST_PP_REPEAT_1_198(m, d) m(2, 198, d)
23866: #define BOOST_PP_REPEAT_1_200(m,d) BOOST_PP_REPEAT_1_199(m, d) m(2, 199, d)
23866: #define BOOST_PP_REPEAT_1_201(m,d) BOOST_PP_REPEAT_1_200(m, d) m(2, 200, d)
23866: #define BOOST_PP_REPEAT_1_202(m,d) BOOST_PP_REPEAT_1_201(m, d) m(2, 201, d)
23866: #define BOOST_PP_REPEAT_1_203(m,d) BOOST_PP_REPEAT_1_202(m, d) m(2, 202, d)
23866: #define BOOST_PP_REPEAT_1_204(m,d) BOOST_PP_REPEAT_1_203(m, d) m(2, 203, d)
23866: #define BOOST_PP_REPEAT_1_205(m,d) BOOST_PP_REPEAT_1_204(m, d) m(2, 204, d)
23866: #define BOOST_PP_REPEAT_1_206(m,d) BOOST_PP_REPEAT_1_205(m, d) m(2, 205, d)
23866: #define BOOST_PP_REPEAT_1_207(m,d) BOOST_PP_REPEAT_1_206(m, d) m(2, 206, d)
23866: #define BOOST_PP_REPEAT_1_208(m,d) BOOST_PP_REPEAT_1_207(m, d) m(2, 207, d)
23866: #define BOOST_PP_REPEAT_1_209(m,d) BOOST_PP_REPEAT_1_208(m, d) m(2, 208, d)
23866: #define BOOST_PP_REPEAT_1_210(m,d) BOOST_PP_REPEAT_1_209(m, d) m(2, 209, d)
23866: #define BOOST_PP_REPEAT_1_211(m,d) BOOST_PP_REPEAT_1_210(m, d) m(2, 210, d)
23866: #define BOOST_PP_REPEAT_1_212(m,d) BOOST_PP_REPEAT_1_211(m, d) m(2, 211, d)
23866: #define BOOST_PP_REPEAT_1_213(m,d) BOOST_PP_REPEAT_1_212(m, d) m(2, 212, d)
23866: #define BOOST_PP_REPEAT_1_214(m,d) BOOST_PP_REPEAT_1_213(m, d) m(2, 213, d)
23866: #define BOOST_PP_REPEAT_1_215(m,d) BOOST_PP_REPEAT_1_214(m, d) m(2, 214, d)
23866: #define BOOST_PP_REPEAT_1_216(m,d) BOOST_PP_REPEAT_1_215(m, d) m(2, 215, d)
23866: #define BOOST_PP_REPEAT_1_217(m,d) BOOST_PP_REPEAT_1_216(m, d) m(2, 216, d)
23866: #define BOOST_PP_REPEAT_1_218(m,d) BOOST_PP_REPEAT_1_217(m, d) m(2, 217, d)
23866: #define BOOST_PP_REPEAT_1_219(m,d) BOOST_PP_REPEAT_1_218(m, d) m(2, 218, d)
23866: #define BOOST_PP_REPEAT_1_220(m,d) BOOST_PP_REPEAT_1_219(m, d) m(2, 219, d)
23866: #define BOOST_PP_REPEAT_1_221(m,d) BOOST_PP_REPEAT_1_220(m, d) m(2, 220, d)
23866: #define BOOST_PP_REPEAT_1_222(m,d) BOOST_PP_REPEAT_1_221(m, d) m(2, 221, d)
23866: #define BOOST_PP_REPEAT_1_223(m,d) BOOST_PP_REPEAT_1_222(m, d) m(2, 222, d)
23866: #define BOOST_PP_REPEAT_1_224(m,d) BOOST_PP_REPEAT_1_223(m, d) m(2, 223, d)
23866: #define BOOST_PP_REPEAT_1_225(m,d) BOOST_PP_REPEAT_1_224(m, d) m(2, 224, d)
23866: #define BOOST_PP_REPEAT_1_226(m,d) BOOST_PP_REPEAT_1_225(m, d) m(2, 225, d)
23866: #define BOOST_PP_REPEAT_1_227(m,d) BOOST_PP_REPEAT_1_226(m, d) m(2, 226, d)
23866: #define BOOST_PP_REPEAT_1_228(m,d) BOOST_PP_REPEAT_1_227(m, d) m(2, 227, d)
23866: #define BOOST_PP_REPEAT_1_229(m,d) BOOST_PP_REPEAT_1_228(m, d) m(2, 228, d)
23866: #define BOOST_PP_REPEAT_1_230(m,d) BOOST_PP_REPEAT_1_229(m, d) m(2, 229, d)
23866: #define BOOST_PP_REPEAT_1_231(m,d) BOOST_PP_REPEAT_1_230(m, d) m(2, 230, d)
23866: #define BOOST_PP_REPEAT_1_232(m,d) BOOST_PP_REPEAT_1_231(m, d) m(2, 231, d)
23866: #define BOOST_PP_REPEAT_1_233(m,d) BOOST_PP_REPEAT_1_232(m, d) m(2, 232, d)
23866: #define BOOST_PP_REPEAT_1_234(m,d) BOOST_PP_REPEAT_1_233(m, d) m(2, 233, d)
23866: #define BOOST_PP_REPEAT_1_235(m,d) BOOST_PP_REPEAT_1_234(m, d) m(2, 234, d)
23866: #define BOOST_PP_REPEAT_1_236(m,d) BOOST_PP_REPEAT_1_235(m, d) m(2, 235, d)
23866: #define BOOST_PP_REPEAT_1_237(m,d) BOOST_PP_REPEAT_1_236(m, d) m(2, 236, d)
23866: #define BOOST_PP_REPEAT_1_238(m,d) BOOST_PP_REPEAT_1_237(m, d) m(2, 237, d)
23866: #define BOOST_PP_REPEAT_1_239(m,d) BOOST_PP_REPEAT_1_238(m, d) m(2, 238, d)
23866: #define BOOST_PP_REPEAT_1_240(m,d) BOOST_PP_REPEAT_1_239(m, d) m(2, 239, d)
23866: #define BOOST_PP_REPEAT_1_241(m,d) BOOST_PP_REPEAT_1_240(m, d) m(2, 240, d)
23866: #define BOOST_PP_REPEAT_1_242(m,d) BOOST_PP_REPEAT_1_241(m, d) m(2, 241, d)
23866: #define BOOST_PP_REPEAT_1_243(m,d) BOOST_PP_REPEAT_1_242(m, d) m(2, 242, d)
23866: #define BOOST_PP_REPEAT_1_244(m,d) BOOST_PP_REPEAT_1_243(m, d) m(2, 243, d)
23866: #define BOOST_PP_REPEAT_1_245(m,d) BOOST_PP_REPEAT_1_244(m, d) m(2, 244, d)
23866: #define BOOST_PP_REPEAT_1_246(m,d) BOOST_PP_REPEAT_1_245(m, d) m(2, 245, d)
23866: #define BOOST_PP_REPEAT_1_247(m,d) BOOST_PP_REPEAT_1_246(m, d) m(2, 246, d)
23866: #define BOOST_PP_REPEAT_1_248(m,d) BOOST_PP_REPEAT_1_247(m, d) m(2, 247, d)
23866: #define BOOST_PP_REPEAT_1_249(m,d) BOOST_PP_REPEAT_1_248(m, d) m(2, 248, d)
23866: #define BOOST_PP_REPEAT_1_250(m,d) BOOST_PP_REPEAT_1_249(m, d) m(2, 249, d)
23866: #define BOOST_PP_REPEAT_1_251(m,d) BOOST_PP_REPEAT_1_250(m, d) m(2, 250, d)
23866: #define BOOST_PP_REPEAT_1_252(m,d) BOOST_PP_REPEAT_1_251(m, d) m(2, 251, d)
23866: #define BOOST_PP_REPEAT_1_253(m,d) BOOST_PP_REPEAT_1_252(m, d) m(2, 252, d)
23866: #define BOOST_PP_REPEAT_1_254(m,d) BOOST_PP_REPEAT_1_253(m, d) m(2, 253, d)
23866: #define BOOST_PP_REPEAT_1_255(m,d) BOOST_PP_REPEAT_1_254(m, d) m(2, 254, d)
23866: #define BOOST_PP_REPEAT_1_256(m,d) BOOST_PP_REPEAT_1_255(m, d) m(2, 255, d)
23866:
23866: #define BOOST_PP_REPEAT_2_0(m,d)
23866: #define BOOST_PP_REPEAT_2_1(m,d) m(3, 0, d)
23866: #define BOOST_PP_REPEAT_2_2(m,d) BOOST_PP_REPEAT_2_1(m, d) m(3, 1, d)
23866: #define BOOST_PP_REPEAT_2_3(m,d) BOOST_PP_REPEAT_2_2(m, d) m(3, 2, d)
23866: #define BOOST_PP_REPEAT_2_4(m,d) BOOST_PP_REPEAT_2_3(m, d) m(3, 3, d)
23866: #define BOOST_PP_REPEAT_2_5(m,d) BOOST_PP_REPEAT_2_4(m, d) m(3, 4, d)
23866: #define BOOST_PP_REPEAT_2_6(m,d) BOOST_PP_REPEAT_2_5(m, d) m(3, 5, d)
23866: #define BOOST_PP_REPEAT_2_7(m,d) BOOST_PP_REPEAT_2_6(m, d) m(3, 6, d)
23866: #define BOOST_PP_REPEAT_2_8(m,d) BOOST_PP_REPEAT_2_7(m, d) m(3, 7, d)
23866: #define BOOST_PP_REPEAT_2_9(m,d) BOOST_PP_REPEAT_2_8(m, d) m(3, 8, d)
23866: #define BOOST_PP_REPEAT_2_10(m,d) BOOST_PP_REPEAT_2_9(m, d) m(3, 9, d)
23866: #define BOOST_PP_REPEAT_2_11(m,d) BOOST_PP_REPEAT_2_10(m, d) m(3, 10, d)
23866: #define BOOST_PP_REPEAT_2_12(m,d) BOOST_PP_REPEAT_2_11(m, d) m(3, 11, d)
23866: #define BOOST_PP_REPEAT_2_13(m,d) BOOST_PP_REPEAT_2_12(m, d) m(3, 12, d)
23866: #define BOOST_PP_REPEAT_2_14(m,d) BOOST_PP_REPEAT_2_13(m, d) m(3, 13, d)
23866: #define BOOST_PP_REPEAT_2_15(m,d) BOOST_PP_REPEAT_2_14(m, d) m(3, 14, d)
23866: #define BOOST_PP_REPEAT_2_16(m,d) BOOST_PP_REPEAT_2_15(m, d) m(3, 15, d)
23866: #define BOOST_PP_REPEAT_2_17(m,d) BOOST_PP_REPEAT_2_16(m, d) m(3, 16, d)
23866: #define BOOST_PP_REPEAT_2_18(m,d) BOOST_PP_REPEAT_2_17(m, d) m(3, 17, d)
23866: #define BOOST_PP_REPEAT_2_19(m,d) BOOST_PP_REPEAT_2_18(m, d) m(3, 18, d)
23866: #define BOOST_PP_REPEAT_2_20(m,d) BOOST_PP_REPEAT_2_19(m, d) m(3, 19, d)
23866: #define BOOST_PP_REPEAT_2_21(m,d) BOOST_PP_REPEAT_2_20(m, d) m(3, 20, d)
23866: #define BOOST_PP_REPEAT_2_22(m,d) BOOST_PP_REPEAT_2_21(m, d) m(3, 21, d)
23866: #define BOOST_PP_REPEAT_2_23(m,d) BOOST_PP_REPEAT_2_22(m, d) m(3, 22, d)
23866: #define BOOST_PP_REPEAT_2_24(m,d) BOOST_PP_REPEAT_2_23(m, d) m(3, 23, d)
23866: #define BOOST_PP_REPEAT_2_25(m,d) BOOST_PP_REPEAT_2_24(m, d) m(3, 24, d)
23866: #define BOOST_PP_REPEAT_2_26(m,d) BOOST_PP_REPEAT_2_25(m, d) m(3, 25, d)
23866: #define BOOST_PP_REPEAT_2_27(m,d) BOOST_PP_REPEAT_2_26(m, d) m(3, 26, d)
23866: #define BOOST_PP_REPEAT_2_28(m,d) BOOST_PP_REPEAT_2_27(m, d) m(3, 27, d)
23866: #define BOOST_PP_REPEAT_2_29(m,d) BOOST_PP_REPEAT_2_28(m, d) m(3, 28, d)
23866: #define BOOST_PP_REPEAT_2_30(m,d) BOOST_PP_REPEAT_2_29(m, d) m(3, 29, d)
23866: #define BOOST_PP_REPEAT_2_31(m,d) BOOST_PP_REPEAT_2_30(m, d) m(3, 30, d)
23866: #define BOOST_PP_REPEAT_2_32(m,d) BOOST_PP_REPEAT_2_31(m, d) m(3, 31, d)
23866: #define BOOST_PP_REPEAT_2_33(m,d) BOOST_PP_REPEAT_2_32(m, d) m(3, 32, d)
23866: #define BOOST_PP_REPEAT_2_34(m,d) BOOST_PP_REPEAT_2_33(m, d) m(3, 33, d)
23866: #define BOOST_PP_REPEAT_2_35(m,d) BOOST_PP_REPEAT_2_34(m, d) m(3, 34, d)
23866: #define BOOST_PP_REPEAT_2_36(m,d) BOOST_PP_REPEAT_2_35(m, d) m(3, 35, d)
23866: #define BOOST_PP_REPEAT_2_37(m,d) BOOST_PP_REPEAT_2_36(m, d) m(3, 36, d)
23866: #define BOOST_PP_REPEAT_2_38(m,d) BOOST_PP_REPEAT_2_37(m, d) m(3, 37, d)
23866: #define BOOST_PP_REPEAT_2_39(m,d) BOOST_PP_REPEAT_2_38(m, d) m(3, 38, d)
23866: #define BOOST_PP_REPEAT_2_40(m,d) BOOST_PP_REPEAT_2_39(m, d) m(3, 39, d)
23866: #define BOOST_PP_REPEAT_2_41(m,d) BOOST_PP_REPEAT_2_40(m, d) m(3, 40, d)
23866: #define BOOST_PP_REPEAT_2_42(m,d) BOOST_PP_REPEAT_2_41(m, d) m(3, 41, d)
23866: #define BOOST_PP_REPEAT_2_43(m,d) BOOST_PP_REPEAT_2_42(m, d) m(3, 42, d)
23866: #define BOOST_PP_REPEAT_2_44(m,d) BOOST_PP_REPEAT_2_43(m, d) m(3, 43, d)
23866: #define BOOST_PP_REPEAT_2_45(m,d) BOOST_PP_REPEAT_2_44(m, d) m(3, 44, d)
23866: #define BOOST_PP_REPEAT_2_46(m,d) BOOST_PP_REPEAT_2_45(m, d) m(3, 45, d)
23866: #define BOOST_PP_REPEAT_2_47(m,d) BOOST_PP_REPEAT_2_46(m, d) m(3, 46, d)
23866: #define BOOST_PP_REPEAT_2_48(m,d) BOOST_PP_REPEAT_2_47(m, d) m(3, 47, d)
23866: #define BOOST_PP_REPEAT_2_49(m,d) BOOST_PP_REPEAT_2_48(m, d) m(3, 48, d)
23866: #define BOOST_PP_REPEAT_2_50(m,d) BOOST_PP_REPEAT_2_49(m, d) m(3, 49, d)
23866: #define BOOST_PP_REPEAT_2_51(m,d) BOOST_PP_REPEAT_2_50(m, d) m(3, 50, d)
23866: #define BOOST_PP_REPEAT_2_52(m,d) BOOST_PP_REPEAT_2_51(m, d) m(3, 51, d)
23866: #define BOOST_PP_REPEAT_2_53(m,d) BOOST_PP_REPEAT_2_52(m, d) m(3, 52, d)
23866: #define BOOST_PP_REPEAT_2_54(m,d) BOOST_PP_REPEAT_2_53(m, d) m(3, 53, d)
23866: #define BOOST_PP_REPEAT_2_55(m,d) BOOST_PP_REPEAT_2_54(m, d) m(3, 54, d)
23866: #define BOOST_PP_REPEAT_2_56(m,d) BOOST_PP_REPEAT_2_55(m, d) m(3, 55, d)
23866: #define BOOST_PP_REPEAT_2_57(m,d) BOOST_PP_REPEAT_2_56(m, d) m(3, 56, d)
23866: #define BOOST_PP_REPEAT_2_58(m,d) BOOST_PP_REPEAT_2_57(m, d) m(3, 57, d)
23866: #define BOOST_PP_REPEAT_2_59(m,d) BOOST_PP_REPEAT_2_58(m, d) m(3, 58, d)
23866: #define BOOST_PP_REPEAT_2_60(m,d) BOOST_PP_REPEAT_2_59(m, d) m(3, 59, d)
23866: #define BOOST_PP_REPEAT_2_61(m,d) BOOST_PP_REPEAT_2_60(m, d) m(3, 60, d)
23866: #define BOOST_PP_REPEAT_2_62(m,d) BOOST_PP_REPEAT_2_61(m, d) m(3, 61, d)
23866: #define BOOST_PP_REPEAT_2_63(m,d) BOOST_PP_REPEAT_2_62(m, d) m(3, 62, d)
23866: #define BOOST_PP_REPEAT_2_64(m,d) BOOST_PP_REPEAT_2_63(m, d) m(3, 63, d)
23866: #define BOOST_PP_REPEAT_2_65(m,d) BOOST_PP_REPEAT_2_64(m, d) m(3, 64, d)
23866: #define BOOST_PP_REPEAT_2_66(m,d) BOOST_PP_REPEAT_2_65(m, d) m(3, 65, d)
23866: #define BOOST_PP_REPEAT_2_67(m,d) BOOST_PP_REPEAT_2_66(m, d) m(3, 66, d)
23866: #define BOOST_PP_REPEAT_2_68(m,d) BOOST_PP_REPEAT_2_67(m, d) m(3, 67, d)
23866: #define BOOST_PP_REPEAT_2_69(m,d) BOOST_PP_REPEAT_2_68(m, d) m(3, 68, d)
23866: #define BOOST_PP_REPEAT_2_70(m,d) BOOST_PP_REPEAT_2_69(m, d) m(3, 69, d)
23866: #define BOOST_PP_REPEAT_2_71(m,d) BOOST_PP_REPEAT_2_70(m, d) m(3, 70, d)
23866: #define BOOST_PP_REPEAT_2_72(m,d) BOOST_PP_REPEAT_2_71(m, d) m(3, 71, d)
23866: #define BOOST_PP_REPEAT_2_73(m,d) BOOST_PP_REPEAT_2_72(m, d) m(3, 72, d)
23866: #define BOOST_PP_REPEAT_2_74(m,d) BOOST_PP_REPEAT_2_73(m, d) m(3, 73, d)
23866: #define BOOST_PP_REPEAT_2_75(m,d) BOOST_PP_REPEAT_2_74(m, d) m(3, 74, d)
23866: #define BOOST_PP_REPEAT_2_76(m,d) BOOST_PP_REPEAT_2_75(m, d) m(3, 75, d)
23866: #define BOOST_PP_REPEAT_2_77(m,d) BOOST_PP_REPEAT_2_76(m, d) m(3, 76, d)
23866: #define BOOST_PP_REPEAT_2_78(m,d) BOOST_PP_REPEAT_2_77(m, d) m(3, 77, d)
23866: #define BOOST_PP_REPEAT_2_79(m,d) BOOST_PP_REPEAT_2_78(m, d) m(3, 78, d)
23866: #define BOOST_PP_REPEAT_2_80(m,d) BOOST_PP_REPEAT_2_79(m, d) m(3, 79, d)
23866: #define BOOST_PP_REPEAT_2_81(m,d) BOOST_PP_REPEAT_2_80(m, d) m(3, 80, d)
23866: #define BOOST_PP_REPEAT_2_82(m,d) BOOST_PP_REPEAT_2_81(m, d) m(3, 81, d)
23866: #define BOOST_PP_REPEAT_2_83(m,d) BOOST_PP_REPEAT_2_82(m, d) m(3, 82, d)
23866: #define BOOST_PP_REPEAT_2_84(m,d) BOOST_PP_REPEAT_2_83(m, d) m(3, 83, d)
23866: #define BOOST_PP_REPEAT_2_85(m,d) BOOST_PP_REPEAT_2_84(m, d) m(3, 84, d)
23866: #define BOOST_PP_REPEAT_2_86(m,d) BOOST_PP_REPEAT_2_85(m, d) m(3, 85, d)
23866: #define BOOST_PP_REPEAT_2_87(m,d) BOOST_PP_REPEAT_2_86(m, d) m(3, 86, d)
23866: #define BOOST_PP_REPEAT_2_88(m,d) BOOST_PP_REPEAT_2_87(m, d) m(3, 87, d)
23866: #define BOOST_PP_REPEAT_2_89(m,d) BOOST_PP_REPEAT_2_88(m, d) m(3, 88, d)
23866: #define BOOST_PP_REPEAT_2_90(m,d) BOOST_PP_REPEAT_2_89(m, d) m(3, 89, d)
23866: #define BOOST_PP_REPEAT_2_91(m,d) BOOST_PP_REPEAT_2_90(m, d) m(3, 90, d)
23866: #define BOOST_PP_REPEAT_2_92(m,d) BOOST_PP_REPEAT_2_91(m, d) m(3, 91, d)
23866: #define BOOST_PP_REPEAT_2_93(m,d) BOOST_PP_REPEAT_2_92(m, d) m(3, 92, d)
23866: #define BOOST_PP_REPEAT_2_94(m,d) BOOST_PP_REPEAT_2_93(m, d) m(3, 93, d)
23866: #define BOOST_PP_REPEAT_2_95(m,d) BOOST_PP_REPEAT_2_94(m, d) m(3, 94, d)
23866: #define BOOST_PP_REPEAT_2_96(m,d) BOOST_PP_REPEAT_2_95(m, d) m(3, 95, d)
23866: #define BOOST_PP_REPEAT_2_97(m,d) BOOST_PP_REPEAT_2_96(m, d) m(3, 96, d)
23866: #define BOOST_PP_REPEAT_2_98(m,d) BOOST_PP_REPEAT_2_97(m, d) m(3, 97, d)
23866: #define BOOST_PP_REPEAT_2_99(m,d) BOOST_PP_REPEAT_2_98(m, d) m(3, 98, d)
23866: #define BOOST_PP_REPEAT_2_100(m,d) BOOST_PP_REPEAT_2_99(m, d) m(3, 99, d)
23866: #define BOOST_PP_REPEAT_2_101(m,d) BOOST_PP_REPEAT_2_100(m, d) m(3, 100, d)
23866: #define BOOST_PP_REPEAT_2_102(m,d) BOOST_PP_REPEAT_2_101(m, d) m(3, 101, d)
23866: #define BOOST_PP_REPEAT_2_103(m,d) BOOST_PP_REPEAT_2_102(m, d) m(3, 102, d)
23866: #define BOOST_PP_REPEAT_2_104(m,d) BOOST_PP_REPEAT_2_103(m, d) m(3, 103, d)
23866: #define BOOST_PP_REPEAT_2_105(m,d) BOOST_PP_REPEAT_2_104(m, d) m(3, 104, d)
23866: #define BOOST_PP_REPEAT_2_106(m,d) BOOST_PP_REPEAT_2_105(m, d) m(3, 105, d)
23866: #define BOOST_PP_REPEAT_2_107(m,d) BOOST_PP_REPEAT_2_106(m, d) m(3, 106, d)
23866: #define BOOST_PP_REPEAT_2_108(m,d) BOOST_PP_REPEAT_2_107(m, d) m(3, 107, d)
23866: #define BOOST_PP_REPEAT_2_109(m,d) BOOST_PP_REPEAT_2_108(m, d) m(3, 108, d)
23866: #define BOOST_PP_REPEAT_2_110(m,d) BOOST_PP_REPEAT_2_109(m, d) m(3, 109, d)
23866: #define BOOST_PP_REPEAT_2_111(m,d) BOOST_PP_REPEAT_2_110(m, d) m(3, 110, d)
23866: #define BOOST_PP_REPEAT_2_112(m,d) BOOST_PP_REPEAT_2_111(m, d) m(3, 111, d)
23866: #define BOOST_PP_REPEAT_2_113(m,d) BOOST_PP_REPEAT_2_112(m, d) m(3, 112, d)
23866: #define BOOST_PP_REPEAT_2_114(m,d) BOOST_PP_REPEAT_2_113(m, d) m(3, 113, d)
23866: #define BOOST_PP_REPEAT_2_115(m,d) BOOST_PP_REPEAT_2_114(m, d) m(3, 114, d)
23866: #define BOOST_PP_REPEAT_2_116(m,d) BOOST_PP_REPEAT_2_115(m, d) m(3, 115, d)
23866: #define BOOST_PP_REPEAT_2_117(m,d) BOOST_PP_REPEAT_2_116(m, d) m(3, 116, d)
23866: #define BOOST_PP_REPEAT_2_118(m,d) BOOST_PP_REPEAT_2_117(m, d) m(3, 117, d)
23866: #define BOOST_PP_REPEAT_2_119(m,d) BOOST_PP_REPEAT_2_118(m, d) m(3, 118, d)
23866: #define BOOST_PP_REPEAT_2_120(m,d) BOOST_PP_REPEAT_2_119(m, d) m(3, 119, d)
23866: #define BOOST_PP_REPEAT_2_121(m,d) BOOST_PP_REPEAT_2_120(m, d) m(3, 120, d)
23866: #define BOOST_PP_REPEAT_2_122(m,d) BOOST_PP_REPEAT_2_121(m, d) m(3, 121, d)
23866: #define BOOST_PP_REPEAT_2_123(m,d) BOOST_PP_REPEAT_2_122(m, d) m(3, 122, d)
23866: #define BOOST_PP_REPEAT_2_124(m,d) BOOST_PP_REPEAT_2_123(m, d) m(3, 123, d)
23866: #define BOOST_PP_REPEAT_2_125(m,d) BOOST_PP_REPEAT_2_124(m, d) m(3, 124, d)
23866: #define BOOST_PP_REPEAT_2_126(m,d) BOOST_PP_REPEAT_2_125(m, d) m(3, 125, d)
23866: #define BOOST_PP_REPEAT_2_127(m,d) BOOST_PP_REPEAT_2_126(m, d) m(3, 126, d)
23866: #define BOOST_PP_REPEAT_2_128(m,d) BOOST_PP_REPEAT_2_127(m, d) m(3, 127, d)
23866: #define BOOST_PP_REPEAT_2_129(m,d) BOOST_PP_REPEAT_2_128(m, d) m(3, 128, d)
23866: #define BOOST_PP_REPEAT_2_130(m,d) BOOST_PP_REPEAT_2_129(m, d) m(3, 129, d)
23866: #define BOOST_PP_REPEAT_2_131(m,d) BOOST_PP_REPEAT_2_130(m, d) m(3, 130, d)
23866: #define BOOST_PP_REPEAT_2_132(m,d) BOOST_PP_REPEAT_2_131(m, d) m(3, 131, d)
23866: #define BOOST_PP_REPEAT_2_133(m,d) BOOST_PP_REPEAT_2_132(m, d) m(3, 132, d)
23866: #define BOOST_PP_REPEAT_2_134(m,d) BOOST_PP_REPEAT_2_133(m, d) m(3, 133, d)
23866: #define BOOST_PP_REPEAT_2_135(m,d) BOOST_PP_REPEAT_2_134(m, d) m(3, 134, d)
23866: #define BOOST_PP_REPEAT_2_136(m,d) BOOST_PP_REPEAT_2_135(m, d) m(3, 135, d)
23866: #define BOOST_PP_REPEAT_2_137(m,d) BOOST_PP_REPEAT_2_136(m, d) m(3, 136, d)
23866: #define BOOST_PP_REPEAT_2_138(m,d) BOOST_PP_REPEAT_2_137(m, d) m(3, 137, d)
23866: #define BOOST_PP_REPEAT_2_139(m,d) BOOST_PP_REPEAT_2_138(m, d) m(3, 138, d)
23866: #define BOOST_PP_REPEAT_2_140(m,d) BOOST_PP_REPEAT_2_139(m, d) m(3, 139, d)
23866: #define BOOST_PP_REPEAT_2_141(m,d) BOOST_PP_REPEAT_2_140(m, d) m(3, 140, d)
23866: #define BOOST_PP_REPEAT_2_142(m,d) BOOST_PP_REPEAT_2_141(m, d) m(3, 141, d)
23866: #define BOOST_PP_REPEAT_2_143(m,d) BOOST_PP_REPEAT_2_142(m, d) m(3, 142, d)
23866: #define BOOST_PP_REPEAT_2_144(m,d) BOOST_PP_REPEAT_2_143(m, d) m(3, 143, d)
23866: #define BOOST_PP_REPEAT_2_145(m,d) BOOST_PP_REPEAT_2_144(m, d) m(3, 144, d)
23866: #define BOOST_PP_REPEAT_2_146(m,d) BOOST_PP_REPEAT_2_145(m, d) m(3, 145, d)
23866: #define BOOST_PP_REPEAT_2_147(m,d) BOOST_PP_REPEAT_2_146(m, d) m(3, 146, d)
23866: #define BOOST_PP_REPEAT_2_148(m,d) BOOST_PP_REPEAT_2_147(m, d) m(3, 147, d)
23866: #define BOOST_PP_REPEAT_2_149(m,d) BOOST_PP_REPEAT_2_148(m, d) m(3, 148, d)
23866: #define BOOST_PP_REPEAT_2_150(m,d) BOOST_PP_REPEAT_2_149(m, d) m(3, 149, d)
23866: #define BOOST_PP_REPEAT_2_151(m,d) BOOST_PP_REPEAT_2_150(m, d) m(3, 150, d)
23866: #define BOOST_PP_REPEAT_2_152(m,d) BOOST_PP_REPEAT_2_151(m, d) m(3, 151, d)
23866: #define BOOST_PP_REPEAT_2_153(m,d) BOOST_PP_REPEAT_2_152(m, d) m(3, 152, d)
23866: #define BOOST_PP_REPEAT_2_154(m,d) BOOST_PP_REPEAT_2_153(m, d) m(3, 153, d)
23866: #define BOOST_PP_REPEAT_2_155(m,d) BOOST_PP_REPEAT_2_154(m, d) m(3, 154, d)
23866: #define BOOST_PP_REPEAT_2_156(m,d) BOOST_PP_REPEAT_2_155(m, d) m(3, 155, d)
23866: #define BOOST_PP_REPEAT_2_157(m,d) BOOST_PP_REPEAT_2_156(m, d) m(3, 156, d)
23866: #define BOOST_PP_REPEAT_2_158(m,d) BOOST_PP_REPEAT_2_157(m, d) m(3, 157, d)
23866: #define BOOST_PP_REPEAT_2_159(m,d) BOOST_PP_REPEAT_2_158(m, d) m(3, 158, d)
23866: #define BOOST_PP_REPEAT_2_160(m,d) BOOST_PP_REPEAT_2_159(m, d) m(3, 159, d)
23866: #define BOOST_PP_REPEAT_2_161(m,d) BOOST_PP_REPEAT_2_160(m, d) m(3, 160, d)
23866: #define BOOST_PP_REPEAT_2_162(m,d) BOOST_PP_REPEAT_2_161(m, d) m(3, 161, d)
23866: #define BOOST_PP_REPEAT_2_163(m,d) BOOST_PP_REPEAT_2_162(m, d) m(3, 162, d)
23866: #define BOOST_PP_REPEAT_2_164(m,d) BOOST_PP_REPEAT_2_163(m, d) m(3, 163, d)
23866: #define BOOST_PP_REPEAT_2_165(m,d) BOOST_PP_REPEAT_2_164(m, d) m(3, 164, d)
23866: #define BOOST_PP_REPEAT_2_166(m,d) BOOST_PP_REPEAT_2_165(m, d) m(3, 165, d)
23866: #define BOOST_PP_REPEAT_2_167(m,d) BOOST_PP_REPEAT_2_166(m, d) m(3, 166, d)
23866: #define BOOST_PP_REPEAT_2_168(m,d) BOOST_PP_REPEAT_2_167(m, d) m(3, 167, d)
23866: #define BOOST_PP_REPEAT_2_169(m,d) BOOST_PP_REPEAT_2_168(m, d) m(3, 168, d)
23866: #define BOOST_PP_REPEAT_2_170(m,d) BOOST_PP_REPEAT_2_169(m, d) m(3, 169, d)
23866: #define BOOST_PP_REPEAT_2_171(m,d) BOOST_PP_REPEAT_2_170(m, d) m(3, 170, d)
23866: #define BOOST_PP_REPEAT_2_172(m,d) BOOST_PP_REPEAT_2_171(m, d) m(3, 171, d)
23866: #define BOOST_PP_REPEAT_2_173(m,d) BOOST_PP_REPEAT_2_172(m, d) m(3, 172, d)
23866: #define BOOST_PP_REPEAT_2_174(m,d) BOOST_PP_REPEAT_2_173(m, d) m(3, 173, d)
23866: #define BOOST_PP_REPEAT_2_175(m,d) BOOST_PP_REPEAT_2_174(m, d) m(3, 174, d)
23866: #define BOOST_PP_REPEAT_2_176(m,d) BOOST_PP_REPEAT_2_175(m, d) m(3, 175, d)
23866: #define BOOST_PP_REPEAT_2_177(m,d) BOOST_PP_REPEAT_2_176(m, d) m(3, 176, d)
23866: #define BOOST_PP_REPEAT_2_178(m,d) BOOST_PP_REPEAT_2_177(m, d) m(3, 177, d)
23866: #define BOOST_PP_REPEAT_2_179(m,d) BOOST_PP_REPEAT_2_178(m, d) m(3, 178, d)
23866: #define BOOST_PP_REPEAT_2_180(m,d) BOOST_PP_REPEAT_2_179(m, d) m(3, 179, d)
23866: #define BOOST_PP_REPEAT_2_181(m,d) BOOST_PP_REPEAT_2_180(m, d) m(3, 180, d)
23866: #define BOOST_PP_REPEAT_2_182(m,d) BOOST_PP_REPEAT_2_181(m, d) m(3, 181, d)
23866: #define BOOST_PP_REPEAT_2_183(m,d) BOOST_PP_REPEAT_2_182(m, d) m(3, 182, d)
23866: #define BOOST_PP_REPEAT_2_184(m,d) BOOST_PP_REPEAT_2_183(m, d) m(3, 183, d)
23866: #define BOOST_PP_REPEAT_2_185(m,d) BOOST_PP_REPEAT_2_184(m, d) m(3, 184, d)
23866: #define BOOST_PP_REPEAT_2_186(m,d) BOOST_PP_REPEAT_2_185(m, d) m(3, 185, d)
23866: #define BOOST_PP_REPEAT_2_187(m,d) BOOST_PP_REPEAT_2_186(m, d) m(3, 186, d)
23866: #define BOOST_PP_REPEAT_2_188(m,d) BOOST_PP_REPEAT_2_187(m, d) m(3, 187, d)
23866: #define BOOST_PP_REPEAT_2_189(m,d) BOOST_PP_REPEAT_2_188(m, d) m(3, 188, d)
23866: #define BOOST_PP_REPEAT_2_190(m,d) BOOST_PP_REPEAT_2_189(m, d) m(3, 189, d)
23866: #define BOOST_PP_REPEAT_2_191(m,d) BOOST_PP_REPEAT_2_190(m, d) m(3, 190, d)
23866: #define BOOST_PP_REPEAT_2_192(m,d) BOOST_PP_REPEAT_2_191(m, d) m(3, 191, d)
23866: #define BOOST_PP_REPEAT_2_193(m,d) BOOST_PP_REPEAT_2_192(m, d) m(3, 192, d)
23866: #define BOOST_PP_REPEAT_2_194(m,d) BOOST_PP_REPEAT_2_193(m, d) m(3, 193, d)
23866: #define BOOST_PP_REPEAT_2_195(m,d) BOOST_PP_REPEAT_2_194(m, d) m(3, 194, d)
23866: #define BOOST_PP_REPEAT_2_196(m,d) BOOST_PP_REPEAT_2_195(m, d) m(3, 195, d)
23866: #define BOOST_PP_REPEAT_2_197(m,d) BOOST_PP_REPEAT_2_196(m, d) m(3, 196, d)
23866: #define BOOST_PP_REPEAT_2_198(m,d) BOOST_PP_REPEAT_2_197(m, d) m(3, 197, d)
23866: #define BOOST_PP_REPEAT_2_199(m,d) BOOST_PP_REPEAT_2_198(m, d) m(3, 198, d)
23866: #define BOOST_PP_REPEAT_2_200(m,d) BOOST_PP_REPEAT_2_199(m, d) m(3, 199, d)
23866: #define BOOST_PP_REPEAT_2_201(m,d) BOOST_PP_REPEAT_2_200(m, d) m(3, 200, d)
23866: #define BOOST_PP_REPEAT_2_202(m,d) BOOST_PP_REPEAT_2_201(m, d) m(3, 201, d)
23866: #define BOOST_PP_REPEAT_2_203(m,d) BOOST_PP_REPEAT_2_202(m, d) m(3, 202, d)
23866: #define BOOST_PP_REPEAT_2_204(m,d) BOOST_PP_REPEAT_2_203(m, d) m(3, 203, d)
23866: #define BOOST_PP_REPEAT_2_205(m,d) BOOST_PP_REPEAT_2_204(m, d) m(3, 204, d)
23866: #define BOOST_PP_REPEAT_2_206(m,d) BOOST_PP_REPEAT_2_205(m, d) m(3, 205, d)
23866: #define BOOST_PP_REPEAT_2_207(m,d) BOOST_PP_REPEAT_2_206(m, d) m(3, 206, d)
23866: #define BOOST_PP_REPEAT_2_208(m,d) BOOST_PP_REPEAT_2_207(m, d) m(3, 207, d)
23866: #define BOOST_PP_REPEAT_2_209(m,d) BOOST_PP_REPEAT_2_208(m, d) m(3, 208, d)
23866: #define BOOST_PP_REPEAT_2_210(m,d) BOOST_PP_REPEAT_2_209(m, d) m(3, 209, d)
23866: #define BOOST_PP_REPEAT_2_211(m,d) BOOST_PP_REPEAT_2_210(m, d) m(3, 210, d)
23866: #define BOOST_PP_REPEAT_2_212(m,d) BOOST_PP_REPEAT_2_211(m, d) m(3, 211, d)
23866: #define BOOST_PP_REPEAT_2_213(m,d) BOOST_PP_REPEAT_2_212(m, d) m(3, 212, d)
23866: #define BOOST_PP_REPEAT_2_214(m,d) BOOST_PP_REPEAT_2_213(m, d) m(3, 213, d)
23866: #define BOOST_PP_REPEAT_2_215(m,d) BOOST_PP_REPEAT_2_214(m, d) m(3, 214, d)
23866: #define BOOST_PP_REPEAT_2_216(m,d) BOOST_PP_REPEAT_2_215(m, d) m(3, 215, d)
23866: #define BOOST_PP_REPEAT_2_217(m,d) BOOST_PP_REPEAT_2_216(m, d) m(3, 216, d)
23866: #define BOOST_PP_REPEAT_2_218(m,d) BOOST_PP_REPEAT_2_217(m, d) m(3, 217, d)
23866: #define BOOST_PP_REPEAT_2_219(m,d) BOOST_PP_REPEAT_2_218(m, d) m(3, 218, d)
23866: #define BOOST_PP_REPEAT_2_220(m,d) BOOST_PP_REPEAT_2_219(m, d) m(3, 219, d)
23866: #define BOOST_PP_REPEAT_2_221(m,d) BOOST_PP_REPEAT_2_220(m, d) m(3, 220, d)
23866: #define BOOST_PP_REPEAT_2_222(m,d) BOOST_PP_REPEAT_2_221(m, d) m(3, 221, d)
23866: #define BOOST_PP_REPEAT_2_223(m,d) BOOST_PP_REPEAT_2_222(m, d) m(3, 222, d)
23866: #define BOOST_PP_REPEAT_2_224(m,d) BOOST_PP_REPEAT_2_223(m, d) m(3, 223, d)
23866: #define BOOST_PP_REPEAT_2_225(m,d) BOOST_PP_REPEAT_2_224(m, d) m(3, 224, d)
23866: #define BOOST_PP_REPEAT_2_226(m,d) BOOST_PP_REPEAT_2_225(m, d) m(3, 225, d)
23866: #define BOOST_PP_REPEAT_2_227(m,d) BOOST_PP_REPEAT_2_226(m, d) m(3, 226, d)
23866: #define BOOST_PP_REPEAT_2_228(m,d) BOOST_PP_REPEAT_2_227(m, d) m(3, 227, d)
23866: #define BOOST_PP_REPEAT_2_229(m,d) BOOST_PP_REPEAT_2_228(m, d) m(3, 228, d)
23866: #define BOOST_PP_REPEAT_2_230(m,d) BOOST_PP_REPEAT_2_229(m, d) m(3, 229, d)
23866: #define BOOST_PP_REPEAT_2_231(m,d) BOOST_PP_REPEAT_2_230(m, d) m(3, 230, d)
23866: #define BOOST_PP_REPEAT_2_232(m,d) BOOST_PP_REPEAT_2_231(m, d) m(3, 231, d)
23866: #define BOOST_PP_REPEAT_2_233(m,d) BOOST_PP_REPEAT_2_232(m, d) m(3, 232, d)
23866: #define BOOST_PP_REPEAT_2_234(m,d) BOOST_PP_REPEAT_2_233(m, d) m(3, 233, d)
23866: #define BOOST_PP_REPEAT_2_235(m,d) BOOST_PP_REPEAT_2_234(m, d) m(3, 234, d)
23866: #define BOOST_PP_REPEAT_2_236(m,d) BOOST_PP_REPEAT_2_235(m, d) m(3, 235, d)
23866: #define BOOST_PP_REPEAT_2_237(m,d) BOOST_PP_REPEAT_2_236(m, d) m(3, 236, d)
23866: #define BOOST_PP_REPEAT_2_238(m,d) BOOST_PP_REPEAT_2_237(m, d) m(3, 237, d)
23866: #define BOOST_PP_REPEAT_2_239(m,d) BOOST_PP_REPEAT_2_238(m, d) m(3, 238, d)
23866: #define BOOST_PP_REPEAT_2_240(m,d) BOOST_PP_REPEAT_2_239(m, d) m(3, 239, d)
23866: #define BOOST_PP_REPEAT_2_241(m,d) BOOST_PP_REPEAT_2_240(m, d) m(3, 240, d)
23866: #define BOOST_PP_REPEAT_2_242(m,d) BOOST_PP_REPEAT_2_241(m, d) m(3, 241, d)
23866: #define BOOST_PP_REPEAT_2_243(m,d) BOOST_PP_REPEAT_2_242(m, d) m(3, 242, d)
23866: #define BOOST_PP_REPEAT_2_244(m,d) BOOST_PP_REPEAT_2_243(m, d) m(3, 243, d)
23866: #define BOOST_PP_REPEAT_2_245(m,d) BOOST_PP_REPEAT_2_244(m, d) m(3, 244, d)
23866: #define BOOST_PP_REPEAT_2_246(m,d) BOOST_PP_REPEAT_2_245(m, d) m(3, 245, d)
23866: #define BOOST_PP_REPEAT_2_247(m,d) BOOST_PP_REPEAT_2_246(m, d) m(3, 246, d)
23866: #define BOOST_PP_REPEAT_2_248(m,d) BOOST_PP_REPEAT_2_247(m, d) m(3, 247, d)
23866: #define BOOST_PP_REPEAT_2_249(m,d) BOOST_PP_REPEAT_2_248(m, d) m(3, 248, d)
23866: #define BOOST_PP_REPEAT_2_250(m,d) BOOST_PP_REPEAT_2_249(m, d) m(3, 249, d)
23866: #define BOOST_PP_REPEAT_2_251(m,d) BOOST_PP_REPEAT_2_250(m, d) m(3, 250, d)
23866: #define BOOST_PP_REPEAT_2_252(m,d) BOOST_PP_REPEAT_2_251(m, d) m(3, 251, d)
23866: #define BOOST_PP_REPEAT_2_253(m,d) BOOST_PP_REPEAT_2_252(m, d) m(3, 252, d)
23866: #define BOOST_PP_REPEAT_2_254(m,d) BOOST_PP_REPEAT_2_253(m, d) m(3, 253, d)
23866: #define BOOST_PP_REPEAT_2_255(m,d) BOOST_PP_REPEAT_2_254(m, d) m(3, 254, d)
23866: #define BOOST_PP_REPEAT_2_256(m,d) BOOST_PP_REPEAT_2_255(m, d) m(3, 255, d)
23866:
23866: #define BOOST_PP_REPEAT_3_0(m,d)
23866: #define BOOST_PP_REPEAT_3_1(m,d) m(4, 0, d)
23866: #define BOOST_PP_REPEAT_3_2(m,d) BOOST_PP_REPEAT_3_1(m, d) m(4, 1, d)
23866: #define BOOST_PP_REPEAT_3_3(m,d) BOOST_PP_REPEAT_3_2(m, d) m(4, 2, d)
23866: #define BOOST_PP_REPEAT_3_4(m,d) BOOST_PP_REPEAT_3_3(m, d) m(4, 3, d)
23866: #define BOOST_PP_REPEAT_3_5(m,d) BOOST_PP_REPEAT_3_4(m, d) m(4, 4, d)
23866: #define BOOST_PP_REPEAT_3_6(m,d) BOOST_PP_REPEAT_3_5(m, d) m(4, 5, d)
23866: #define BOOST_PP_REPEAT_3_7(m,d) BOOST_PP_REPEAT_3_6(m, d) m(4, 6, d)
23866: #define BOOST_PP_REPEAT_3_8(m,d) BOOST_PP_REPEAT_3_7(m, d) m(4, 7, d)
23866: #define BOOST_PP_REPEAT_3_9(m,d) BOOST_PP_REPEAT_3_8(m, d) m(4, 8, d)
23866: #define BOOST_PP_REPEAT_3_10(m,d) BOOST_PP_REPEAT_3_9(m, d) m(4, 9, d)
23866: #define BOOST_PP_REPEAT_3_11(m,d) BOOST_PP_REPEAT_3_10(m, d) m(4, 10, d)
23866: #define BOOST_PP_REPEAT_3_12(m,d) BOOST_PP_REPEAT_3_11(m, d) m(4, 11, d)
23866: #define BOOST_PP_REPEAT_3_13(m,d) BOOST_PP_REPEAT_3_12(m, d) m(4, 12, d)
23866: #define BOOST_PP_REPEAT_3_14(m,d) BOOST_PP_REPEAT_3_13(m, d) m(4, 13, d)
23866: #define BOOST_PP_REPEAT_3_15(m,d) BOOST_PP_REPEAT_3_14(m, d) m(4, 14, d)
23866: #define BOOST_PP_REPEAT_3_16(m,d) BOOST_PP_REPEAT_3_15(m, d) m(4, 15, d)
23866: #define BOOST_PP_REPEAT_3_17(m,d) BOOST_PP_REPEAT_3_16(m, d) m(4, 16, d)
23866: #define BOOST_PP_REPEAT_3_18(m,d) BOOST_PP_REPEAT_3_17(m, d) m(4, 17, d)
23866: #define BOOST_PP_REPEAT_3_19(m,d) BOOST_PP_REPEAT_3_18(m, d) m(4, 18, d)
23866: #define BOOST_PP_REPEAT_3_20(m,d) BOOST_PP_REPEAT_3_19(m, d) m(4, 19, d)
23866: #define BOOST_PP_REPEAT_3_21(m,d) BOOST_PP_REPEAT_3_20(m, d) m(4, 20, d)
23866: #define BOOST_PP_REPEAT_3_22(m,d) BOOST_PP_REPEAT_3_21(m, d) m(4, 21, d)
23866: #define BOOST_PP_REPEAT_3_23(m,d) BOOST_PP_REPEAT_3_22(m, d) m(4, 22, d)
23866: #define BOOST_PP_REPEAT_3_24(m,d) BOOST_PP_REPEAT_3_23(m, d) m(4, 23, d)
23866: #define BOOST_PP_REPEAT_3_25(m,d) BOOST_PP_REPEAT_3_24(m, d) m(4, 24, d)
23866: #define BOOST_PP_REPEAT_3_26(m,d) BOOST_PP_REPEAT_3_25(m, d) m(4, 25, d)
23866: #define BOOST_PP_REPEAT_3_27(m,d) BOOST_PP_REPEAT_3_26(m, d) m(4, 26, d)
23866: #define BOOST_PP_REPEAT_3_28(m,d) BOOST_PP_REPEAT_3_27(m, d) m(4, 27, d)
23866: #define BOOST_PP_REPEAT_3_29(m,d) BOOST_PP_REPEAT_3_28(m, d) m(4, 28, d)
23866: #define BOOST_PP_REPEAT_3_30(m,d) BOOST_PP_REPEAT_3_29(m, d) m(4, 29, d)
23866: #define BOOST_PP_REPEAT_3_31(m,d) BOOST_PP_REPEAT_3_30(m, d) m(4, 30, d)
23866: #define BOOST_PP_REPEAT_3_32(m,d) BOOST_PP_REPEAT_3_31(m, d) m(4, 31, d)
23866: #define BOOST_PP_REPEAT_3_33(m,d) BOOST_PP_REPEAT_3_32(m, d) m(4, 32, d)
23866: #define BOOST_PP_REPEAT_3_34(m,d) BOOST_PP_REPEAT_3_33(m, d) m(4, 33, d)
23866: #define BOOST_PP_REPEAT_3_35(m,d) BOOST_PP_REPEAT_3_34(m, d) m(4, 34, d)
23866: #define BOOST_PP_REPEAT_3_36(m,d) BOOST_PP_REPEAT_3_35(m, d) m(4, 35, d)
23866: #define BOOST_PP_REPEAT_3_37(m,d) BOOST_PP_REPEAT_3_36(m, d) m(4, 36, d)
23866: #define BOOST_PP_REPEAT_3_38(m,d) BOOST_PP_REPEAT_3_37(m, d) m(4, 37, d)
23866: #define BOOST_PP_REPEAT_3_39(m,d) BOOST_PP_REPEAT_3_38(m, d) m(4, 38, d)
23866: #define BOOST_PP_REPEAT_3_40(m,d) BOOST_PP_REPEAT_3_39(m, d) m(4, 39, d)
23866: #define BOOST_PP_REPEAT_3_41(m,d) BOOST_PP_REPEAT_3_40(m, d) m(4, 40, d)
23866: #define BOOST_PP_REPEAT_3_42(m,d) BOOST_PP_REPEAT_3_41(m, d) m(4, 41, d)
23866: #define BOOST_PP_REPEAT_3_43(m,d) BOOST_PP_REPEAT_3_42(m, d) m(4, 42, d)
23866: #define BOOST_PP_REPEAT_3_44(m,d) BOOST_PP_REPEAT_3_43(m, d) m(4, 43, d)
23866: #define BOOST_PP_REPEAT_3_45(m,d) BOOST_PP_REPEAT_3_44(m, d) m(4, 44, d)
23866: #define BOOST_PP_REPEAT_3_46(m,d) BOOST_PP_REPEAT_3_45(m, d) m(4, 45, d)
23866: #define BOOST_PP_REPEAT_3_47(m,d) BOOST_PP_REPEAT_3_46(m, d) m(4, 46, d)
23866: #define BOOST_PP_REPEAT_3_48(m,d) BOOST_PP_REPEAT_3_47(m, d) m(4, 47, d)
23866: #define BOOST_PP_REPEAT_3_49(m,d) BOOST_PP_REPEAT_3_48(m, d) m(4, 48, d)
23866: #define BOOST_PP_REPEAT_3_50(m,d) BOOST_PP_REPEAT_3_49(m, d) m(4, 49, d)
23866: #define BOOST_PP_REPEAT_3_51(m,d) BOOST_PP_REPEAT_3_50(m, d) m(4, 50, d)
23866: #define BOOST_PP_REPEAT_3_52(m,d) BOOST_PP_REPEAT_3_51(m, d) m(4, 51, d)
23866: #define BOOST_PP_REPEAT_3_53(m,d) BOOST_PP_REPEAT_3_52(m, d) m(4, 52, d)
23866: #define BOOST_PP_REPEAT_3_54(m,d) BOOST_PP_REPEAT_3_53(m, d) m(4, 53, d)
23866: #define BOOST_PP_REPEAT_3_55(m,d) BOOST_PP_REPEAT_3_54(m, d) m(4, 54, d)
23866: #define BOOST_PP_REPEAT_3_56(m,d) BOOST_PP_REPEAT_3_55(m, d) m(4, 55, d)
23866: #define BOOST_PP_REPEAT_3_57(m,d) BOOST_PP_REPEAT_3_56(m, d) m(4, 56, d)
23866: #define BOOST_PP_REPEAT_3_58(m,d) BOOST_PP_REPEAT_3_57(m, d) m(4, 57, d)
23866: #define BOOST_PP_REPEAT_3_59(m,d) BOOST_PP_REPEAT_3_58(m, d) m(4, 58, d)
23866: #define BOOST_PP_REPEAT_3_60(m,d) BOOST_PP_REPEAT_3_59(m, d) m(4, 59, d)
23866: #define BOOST_PP_REPEAT_3_61(m,d) BOOST_PP_REPEAT_3_60(m, d) m(4, 60, d)
23866: #define BOOST_PP_REPEAT_3_62(m,d) BOOST_PP_REPEAT_3_61(m, d) m(4, 61, d)
23866: #define BOOST_PP_REPEAT_3_63(m,d) BOOST_PP_REPEAT_3_62(m, d) m(4, 62, d)
23866: #define BOOST_PP_REPEAT_3_64(m,d) BOOST_PP_REPEAT_3_63(m, d) m(4, 63, d)
23866: #define BOOST_PP_REPEAT_3_65(m,d) BOOST_PP_REPEAT_3_64(m, d) m(4, 64, d)
23866: #define BOOST_PP_REPEAT_3_66(m,d) BOOST_PP_REPEAT_3_65(m, d) m(4, 65, d)
23866: #define BOOST_PP_REPEAT_3_67(m,d) BOOST_PP_REPEAT_3_66(m, d) m(4, 66, d)
23866: #define BOOST_PP_REPEAT_3_68(m,d) BOOST_PP_REPEAT_3_67(m, d) m(4, 67, d)
23866: #define BOOST_PP_REPEAT_3_69(m,d) BOOST_PP_REPEAT_3_68(m, d) m(4, 68, d)
23866: #define BOOST_PP_REPEAT_3_70(m,d) BOOST_PP_REPEAT_3_69(m, d) m(4, 69, d)
23866: #define BOOST_PP_REPEAT_3_71(m,d) BOOST_PP_REPEAT_3_70(m, d) m(4, 70, d)
23866: #define BOOST_PP_REPEAT_3_72(m,d) BOOST_PP_REPEAT_3_71(m, d) m(4, 71, d)
23866: #define BOOST_PP_REPEAT_3_73(m,d) BOOST_PP_REPEAT_3_72(m, d) m(4, 72, d)
23866: #define BOOST_PP_REPEAT_3_74(m,d) BOOST_PP_REPEAT_3_73(m, d) m(4, 73, d)
23866: #define BOOST_PP_REPEAT_3_75(m,d) BOOST_PP_REPEAT_3_74(m, d) m(4, 74, d)
23866: #define BOOST_PP_REPEAT_3_76(m,d) BOOST_PP_REPEAT_3_75(m, d) m(4, 75, d)
23866: #define BOOST_PP_REPEAT_3_77(m,d) BOOST_PP_REPEAT_3_76(m, d) m(4, 76, d)
23866: #define BOOST_PP_REPEAT_3_78(m,d) BOOST_PP_REPEAT_3_77(m, d) m(4, 77, d)
23866: #define BOOST_PP_REPEAT_3_79(m,d) BOOST_PP_REPEAT_3_78(m, d) m(4, 78, d)
23866: #define BOOST_PP_REPEAT_3_80(m,d) BOOST_PP_REPEAT_3_79(m, d) m(4, 79, d)
23866: #define BOOST_PP_REPEAT_3_81(m,d) BOOST_PP_REPEAT_3_80(m, d) m(4, 80, d)
23866: #define BOOST_PP_REPEAT_3_82(m,d) BOOST_PP_REPEAT_3_81(m, d) m(4, 81, d)
23866: #define BOOST_PP_REPEAT_3_83(m,d) BOOST_PP_REPEAT_3_82(m, d) m(4, 82, d)
23866: #define BOOST_PP_REPEAT_3_84(m,d) BOOST_PP_REPEAT_3_83(m, d) m(4, 83, d)
23866: #define BOOST_PP_REPEAT_3_85(m,d) BOOST_PP_REPEAT_3_84(m, d) m(4, 84, d)
23866: #define BOOST_PP_REPEAT_3_86(m,d) BOOST_PP_REPEAT_3_85(m, d) m(4, 85, d)
23866: #define BOOST_PP_REPEAT_3_87(m,d) BOOST_PP_REPEAT_3_86(m, d) m(4, 86, d)
23866: #define BOOST_PP_REPEAT_3_88(m,d) BOOST_PP_REPEAT_3_87(m, d) m(4, 87, d)
23866: #define BOOST_PP_REPEAT_3_89(m,d) BOOST_PP_REPEAT_3_88(m, d) m(4, 88, d)
23866: #define BOOST_PP_REPEAT_3_90(m,d) BOOST_PP_REPEAT_3_89(m, d) m(4, 89, d)
23866: #define BOOST_PP_REPEAT_3_91(m,d) BOOST_PP_REPEAT_3_90(m, d) m(4, 90, d)
23866: #define BOOST_PP_REPEAT_3_92(m,d) BOOST_PP_REPEAT_3_91(m, d) m(4, 91, d)
23866: #define BOOST_PP_REPEAT_3_93(m,d) BOOST_PP_REPEAT_3_92(m, d) m(4, 92, d)
23866: #define BOOST_PP_REPEAT_3_94(m,d) BOOST_PP_REPEAT_3_93(m, d) m(4, 93, d)
23866: #define BOOST_PP_REPEAT_3_95(m,d) BOOST_PP_REPEAT_3_94(m, d) m(4, 94, d)
23866: #define BOOST_PP_REPEAT_3_96(m,d) BOOST_PP_REPEAT_3_95(m, d) m(4, 95, d)
23866: #define BOOST_PP_REPEAT_3_97(m,d) BOOST_PP_REPEAT_3_96(m, d) m(4, 96, d)
23866: #define BOOST_PP_REPEAT_3_98(m,d) BOOST_PP_REPEAT_3_97(m, d) m(4, 97, d)
23866: #define BOOST_PP_REPEAT_3_99(m,d) BOOST_PP_REPEAT_3_98(m, d) m(4, 98, d)
23866: #define BOOST_PP_REPEAT_3_100(m,d) BOOST_PP_REPEAT_3_99(m, d) m(4, 99, d)
23866: #define BOOST_PP_REPEAT_3_101(m,d) BOOST_PP_REPEAT_3_100(m, d) m(4, 100, d)
23866: #define BOOST_PP_REPEAT_3_102(m,d) BOOST_PP_REPEAT_3_101(m, d) m(4, 101, d)
23866: #define BOOST_PP_REPEAT_3_103(m,d) BOOST_PP_REPEAT_3_102(m, d) m(4, 102, d)
23866: #define BOOST_PP_REPEAT_3_104(m,d) BOOST_PP_REPEAT_3_103(m, d) m(4, 103, d)
23866: #define BOOST_PP_REPEAT_3_105(m,d) BOOST_PP_REPEAT_3_104(m, d) m(4, 104, d)
23866: #define BOOST_PP_REPEAT_3_106(m,d) BOOST_PP_REPEAT_3_105(m, d) m(4, 105, d)
23866: #define BOOST_PP_REPEAT_3_107(m,d) BOOST_PP_REPEAT_3_106(m, d) m(4, 106, d)
23866: #define BOOST_PP_REPEAT_3_108(m,d) BOOST_PP_REPEAT_3_107(m, d) m(4, 107, d)
23866: #define BOOST_PP_REPEAT_3_109(m,d) BOOST_PP_REPEAT_3_108(m, d) m(4, 108, d)
23866: #define BOOST_PP_REPEAT_3_110(m,d) BOOST_PP_REPEAT_3_109(m, d) m(4, 109, d)
23866: #define BOOST_PP_REPEAT_3_111(m,d) BOOST_PP_REPEAT_3_110(m, d) m(4, 110, d)
23866: #define BOOST_PP_REPEAT_3_112(m,d) BOOST_PP_REPEAT_3_111(m, d) m(4, 111, d)
23866: #define BOOST_PP_REPEAT_3_113(m,d) BOOST_PP_REPEAT_3_112(m, d) m(4, 112, d)
23866: #define BOOST_PP_REPEAT_3_114(m,d) BOOST_PP_REPEAT_3_113(m, d) m(4, 113, d)
23866: #define BOOST_PP_REPEAT_3_115(m,d) BOOST_PP_REPEAT_3_114(m, d) m(4, 114, d)
23866: #define BOOST_PP_REPEAT_3_116(m,d) BOOST_PP_REPEAT_3_115(m, d) m(4, 115, d)
23866: #define BOOST_PP_REPEAT_3_117(m,d) BOOST_PP_REPEAT_3_116(m, d) m(4, 116, d)
23866: #define BOOST_PP_REPEAT_3_118(m,d) BOOST_PP_REPEAT_3_117(m, d) m(4, 117, d)
23866: #define BOOST_PP_REPEAT_3_119(m,d) BOOST_PP_REPEAT_3_118(m, d) m(4, 118, d)
23866: #define BOOST_PP_REPEAT_3_120(m,d) BOOST_PP_REPEAT_3_119(m, d) m(4, 119, d)
23866: #define BOOST_PP_REPEAT_3_121(m,d) BOOST_PP_REPEAT_3_120(m, d) m(4, 120, d)
23866: #define BOOST_PP_REPEAT_3_122(m,d) BOOST_PP_REPEAT_3_121(m, d) m(4, 121, d)
23866: #define BOOST_PP_REPEAT_3_123(m,d) BOOST_PP_REPEAT_3_122(m, d) m(4, 122, d)
23866: #define BOOST_PP_REPEAT_3_124(m,d) BOOST_PP_REPEAT_3_123(m, d) m(4, 123, d)
23866: #define BOOST_PP_REPEAT_3_125(m,d) BOOST_PP_REPEAT_3_124(m, d) m(4, 124, d)
23866: #define BOOST_PP_REPEAT_3_126(m,d) BOOST_PP_REPEAT_3_125(m, d) m(4, 125, d)
23866: #define BOOST_PP_REPEAT_3_127(m,d) BOOST_PP_REPEAT_3_126(m, d) m(4, 126, d)
23866: #define BOOST_PP_REPEAT_3_128(m,d) BOOST_PP_REPEAT_3_127(m, d) m(4, 127, d)
23866: #define BOOST_PP_REPEAT_3_129(m,d) BOOST_PP_REPEAT_3_128(m, d) m(4, 128, d)
23866: #define BOOST_PP_REPEAT_3_130(m,d) BOOST_PP_REPEAT_3_129(m, d) m(4, 129, d)
23866: #define BOOST_PP_REPEAT_3_131(m,d) BOOST_PP_REPEAT_3_130(m, d) m(4, 130, d)
23866: #define BOOST_PP_REPEAT_3_132(m,d) BOOST_PP_REPEAT_3_131(m, d) m(4, 131, d)
23866: #define BOOST_PP_REPEAT_3_133(m,d) BOOST_PP_REPEAT_3_132(m, d) m(4, 132, d)
23866: #define BOOST_PP_REPEAT_3_134(m,d) BOOST_PP_REPEAT_3_133(m, d) m(4, 133, d)
23866: #define BOOST_PP_REPEAT_3_135(m,d) BOOST_PP_REPEAT_3_134(m, d) m(4, 134, d)
23866: #define BOOST_PP_REPEAT_3_136(m,d) BOOST_PP_REPEAT_3_135(m, d) m(4, 135, d)
23866: #define BOOST_PP_REPEAT_3_137(m,d) BOOST_PP_REPEAT_3_136(m, d) m(4, 136, d)
23866: #define BOOST_PP_REPEAT_3_138(m,d) BOOST_PP_REPEAT_3_137(m, d) m(4, 137, d)
23866: #define BOOST_PP_REPEAT_3_139(m,d) BOOST_PP_REPEAT_3_138(m, d) m(4, 138, d)
23866: #define BOOST_PP_REPEAT_3_140(m,d) BOOST_PP_REPEAT_3_139(m, d) m(4, 139, d)
23866: #define BOOST_PP_REPEAT_3_141(m,d) BOOST_PP_REPEAT_3_140(m, d) m(4, 140, d)
23866: #define BOOST_PP_REPEAT_3_142(m,d) BOOST_PP_REPEAT_3_141(m, d) m(4, 141, d)
23866: #define BOOST_PP_REPEAT_3_143(m,d) BOOST_PP_REPEAT_3_142(m, d) m(4, 142, d)
23866: #define BOOST_PP_REPEAT_3_144(m,d) BOOST_PP_REPEAT_3_143(m, d) m(4, 143, d)
23866: #define BOOST_PP_REPEAT_3_145(m,d) BOOST_PP_REPEAT_3_144(m, d) m(4, 144, d)
23866: #define BOOST_PP_REPEAT_3_146(m,d) BOOST_PP_REPEAT_3_145(m, d) m(4, 145, d)
23866: #define BOOST_PP_REPEAT_3_147(m,d) BOOST_PP_REPEAT_3_146(m, d) m(4, 146, d)
23866: #define BOOST_PP_REPEAT_3_148(m,d) BOOST_PP_REPEAT_3_147(m, d) m(4, 147, d)
23866: #define BOOST_PP_REPEAT_3_149(m,d) BOOST_PP_REPEAT_3_148(m, d) m(4, 148, d)
23866: #define BOOST_PP_REPEAT_3_150(m,d) BOOST_PP_REPEAT_3_149(m, d) m(4, 149, d)
23866: #define BOOST_PP_REPEAT_3_151(m,d) BOOST_PP_REPEAT_3_150(m, d) m(4, 150, d)
23866: #define BOOST_PP_REPEAT_3_152(m,d) BOOST_PP_REPEAT_3_151(m, d) m(4, 151, d)
23866: #define BOOST_PP_REPEAT_3_153(m,d) BOOST_PP_REPEAT_3_152(m, d) m(4, 152, d)
23866: #define BOOST_PP_REPEAT_3_154(m,d) BOOST_PP_REPEAT_3_153(m, d) m(4, 153, d)
23866: #define BOOST_PP_REPEAT_3_155(m,d) BOOST_PP_REPEAT_3_154(m, d) m(4, 154, d)
23866: #define BOOST_PP_REPEAT_3_156(m,d) BOOST_PP_REPEAT_3_155(m, d) m(4, 155, d)
23866: #define BOOST_PP_REPEAT_3_157(m,d) BOOST_PP_REPEAT_3_156(m, d) m(4, 156, d)
23866: #define BOOST_PP_REPEAT_3_158(m,d) BOOST_PP_REPEAT_3_157(m, d) m(4, 157, d)
23866: #define BOOST_PP_REPEAT_3_159(m,d) BOOST_PP_REPEAT_3_158(m, d) m(4, 158, d)
23866: #define BOOST_PP_REPEAT_3_160(m,d) BOOST_PP_REPEAT_3_159(m, d) m(4, 159, d)
23866: #define BOOST_PP_REPEAT_3_161(m,d) BOOST_PP_REPEAT_3_160(m, d) m(4, 160, d)
23866: #define BOOST_PP_REPEAT_3_162(m,d) BOOST_PP_REPEAT_3_161(m, d) m(4, 161, d)
23866: #define BOOST_PP_REPEAT_3_163(m,d) BOOST_PP_REPEAT_3_162(m, d) m(4, 162, d)
23866: #define BOOST_PP_REPEAT_3_164(m,d) BOOST_PP_REPEAT_3_163(m, d) m(4, 163, d)
23866: #define BOOST_PP_REPEAT_3_165(m,d) BOOST_PP_REPEAT_3_164(m, d) m(4, 164, d)
23866: #define BOOST_PP_REPEAT_3_166(m,d) BOOST_PP_REPEAT_3_165(m, d) m(4, 165, d)
23866: #define BOOST_PP_REPEAT_3_167(m,d) BOOST_PP_REPEAT_3_166(m, d) m(4, 166, d)
23866: #define BOOST_PP_REPEAT_3_168(m,d) BOOST_PP_REPEAT_3_167(m, d) m(4, 167, d)
23866: #define BOOST_PP_REPEAT_3_169(m,d) BOOST_PP_REPEAT_3_168(m, d) m(4, 168, d)
23866: #define BOOST_PP_REPEAT_3_170(m,d) BOOST_PP_REPEAT_3_169(m, d) m(4, 169, d)
23866: #define BOOST_PP_REPEAT_3_171(m,d) BOOST_PP_REPEAT_3_170(m, d) m(4, 170, d)
23866: #define BOOST_PP_REPEAT_3_172(m,d) BOOST_PP_REPEAT_3_171(m, d) m(4, 171, d)
23866: #define BOOST_PP_REPEAT_3_173(m,d) BOOST_PP_REPEAT_3_172(m, d) m(4, 172, d)
23866: #define BOOST_PP_REPEAT_3_174(m,d) BOOST_PP_REPEAT_3_173(m, d) m(4, 173, d)
23866: #define BOOST_PP_REPEAT_3_175(m,d) BOOST_PP_REPEAT_3_174(m, d) m(4, 174, d)
23866: #define BOOST_PP_REPEAT_3_176(m,d) BOOST_PP_REPEAT_3_175(m, d) m(4, 175, d)
23866: #define BOOST_PP_REPEAT_3_177(m,d) BOOST_PP_REPEAT_3_176(m, d) m(4, 176, d)
23866: #define BOOST_PP_REPEAT_3_178(m,d) BOOST_PP_REPEAT_3_177(m, d) m(4, 177, d)
23866: #define BOOST_PP_REPEAT_3_179(m,d) BOOST_PP_REPEAT_3_178(m, d) m(4, 178, d)
23866: #define BOOST_PP_REPEAT_3_180(m,d) BOOST_PP_REPEAT_3_179(m, d) m(4, 179, d)
23866: #define BOOST_PP_REPEAT_3_181(m,d) BOOST_PP_REPEAT_3_180(m, d) m(4, 180, d)
23866: #define BOOST_PP_REPEAT_3_182(m,d) BOOST_PP_REPEAT_3_181(m, d) m(4, 181, d)
23866: #define BOOST_PP_REPEAT_3_183(m,d) BOOST_PP_REPEAT_3_182(m, d) m(4, 182, d)
23866: #define BOOST_PP_REPEAT_3_184(m,d) BOOST_PP_REPEAT_3_183(m, d) m(4, 183, d)
23866: #define BOOST_PP_REPEAT_3_185(m,d) BOOST_PP_REPEAT_3_184(m, d) m(4, 184, d)
23866: #define BOOST_PP_REPEAT_3_186(m,d) BOOST_PP_REPEAT_3_185(m, d) m(4, 185, d)
23866: #define BOOST_PP_REPEAT_3_187(m,d) BOOST_PP_REPEAT_3_186(m, d) m(4, 186, d)
23866: #define BOOST_PP_REPEAT_3_188(m,d) BOOST_PP_REPEAT_3_187(m, d) m(4, 187, d)
23866: #define BOOST_PP_REPEAT_3_189(m,d) BOOST_PP_REPEAT_3_188(m, d) m(4, 188, d)
23866: #define BOOST_PP_REPEAT_3_190(m,d) BOOST_PP_REPEAT_3_189(m, d) m(4, 189, d)
23866: #define BOOST_PP_REPEAT_3_191(m,d) BOOST_PP_REPEAT_3_190(m, d) m(4, 190, d)
23866: #define BOOST_PP_REPEAT_3_192(m,d) BOOST_PP_REPEAT_3_191(m, d) m(4, 191, d)
23866: #define BOOST_PP_REPEAT_3_193(m,d) BOOST_PP_REPEAT_3_192(m, d) m(4, 192, d)
23866: #define BOOST_PP_REPEAT_3_194(m,d) BOOST_PP_REPEAT_3_193(m, d) m(4, 193, d)
23866: #define BOOST_PP_REPEAT_3_195(m,d) BOOST_PP_REPEAT_3_194(m, d) m(4, 194, d)
23866: #define BOOST_PP_REPEAT_3_196(m,d) BOOST_PP_REPEAT_3_195(m, d) m(4, 195, d)
23866: #define BOOST_PP_REPEAT_3_197(m,d) BOOST_PP_REPEAT_3_196(m, d) m(4, 196, d)
23866: #define BOOST_PP_REPEAT_3_198(m,d) BOOST_PP_REPEAT_3_197(m, d) m(4, 197, d)
23866: #define BOOST_PP_REPEAT_3_199(m,d) BOOST_PP_REPEAT_3_198(m, d) m(4, 198, d)
23866: #define BOOST_PP_REPEAT_3_200(m,d) BOOST_PP_REPEAT_3_199(m, d) m(4, 199, d)
23866: #define BOOST_PP_REPEAT_3_201(m,d) BOOST_PP_REPEAT_3_200(m, d) m(4, 200, d)
23866: #define BOOST_PP_REPEAT_3_202(m,d) BOOST_PP_REPEAT_3_201(m, d) m(4, 201, d)
23866: #define BOOST_PP_REPEAT_3_203(m,d) BOOST_PP_REPEAT_3_202(m, d) m(4, 202, d)
23866: #define BOOST_PP_REPEAT_3_204(m,d) BOOST_PP_REPEAT_3_203(m, d) m(4, 203, d)
23866: #define BOOST_PP_REPEAT_3_205(m,d) BOOST_PP_REPEAT_3_204(m, d) m(4, 204, d)
23866: #define BOOST_PP_REPEAT_3_206(m,d) BOOST_PP_REPEAT_3_205(m, d) m(4, 205, d)
23866: #define BOOST_PP_REPEAT_3_207(m,d) BOOST_PP_REPEAT_3_206(m, d) m(4, 206, d)
23866: #define BOOST_PP_REPEAT_3_208(m,d) BOOST_PP_REPEAT_3_207(m, d) m(4, 207, d)
23866: #define BOOST_PP_REPEAT_3_209(m,d) BOOST_PP_REPEAT_3_208(m, d) m(4, 208, d)
23866: #define BOOST_PP_REPEAT_3_210(m,d) BOOST_PP_REPEAT_3_209(m, d) m(4, 209, d)
23866: #define BOOST_PP_REPEAT_3_211(m,d) BOOST_PP_REPEAT_3_210(m, d) m(4, 210, d)
23866: #define BOOST_PP_REPEAT_3_212(m,d) BOOST_PP_REPEAT_3_211(m, d) m(4, 211, d)
23866: #define BOOST_PP_REPEAT_3_213(m,d) BOOST_PP_REPEAT_3_212(m, d) m(4, 212, d)
23866: #define BOOST_PP_REPEAT_3_214(m,d) BOOST_PP_REPEAT_3_213(m, d) m(4, 213, d)
23866: #define BOOST_PP_REPEAT_3_215(m,d) BOOST_PP_REPEAT_3_214(m, d) m(4, 214, d)
23866: #define BOOST_PP_REPEAT_3_216(m,d) BOOST_PP_REPEAT_3_215(m, d) m(4, 215, d)
23866: #define BOOST_PP_REPEAT_3_217(m,d) BOOST_PP_REPEAT_3_216(m, d) m(4, 216, d)
23866: #define BOOST_PP_REPEAT_3_218(m,d) BOOST_PP_REPEAT_3_217(m, d) m(4, 217, d)
23866: #define BOOST_PP_REPEAT_3_219(m,d) BOOST_PP_REPEAT_3_218(m, d) m(4, 218, d)
23866: #define BOOST_PP_REPEAT_3_220(m,d) BOOST_PP_REPEAT_3_219(m, d) m(4, 219, d)
23866: #define BOOST_PP_REPEAT_3_221(m,d) BOOST_PP_REPEAT_3_220(m, d) m(4, 220, d)
23866: #define BOOST_PP_REPEAT_3_222(m,d) BOOST_PP_REPEAT_3_221(m, d) m(4, 221, d)
23866: #define BOOST_PP_REPEAT_3_223(m,d) BOOST_PP_REPEAT_3_222(m, d) m(4, 222, d)
23866: #define BOOST_PP_REPEAT_3_224(m,d) BOOST_PP_REPEAT_3_223(m, d) m(4, 223, d)
23866: #define BOOST_PP_REPEAT_3_225(m,d) BOOST_PP_REPEAT_3_224(m, d) m(4, 224, d)
23866: #define BOOST_PP_REPEAT_3_226(m,d) BOOST_PP_REPEAT_3_225(m, d) m(4, 225, d)
23866: #define BOOST_PP_REPEAT_3_227(m,d) BOOST_PP_REPEAT_3_226(m, d) m(4, 226, d)
23866: #define BOOST_PP_REPEAT_3_228(m,d) BOOST_PP_REPEAT_3_227(m, d) m(4, 227, d)
23866: #define BOOST_PP_REPEAT_3_229(m,d) BOOST_PP_REPEAT_3_228(m, d) m(4, 228, d)
23866: #define BOOST_PP_REPEAT_3_230(m,d) BOOST_PP_REPEAT_3_229(m, d) m(4, 229, d)
23866: #define BOOST_PP_REPEAT_3_231(m,d) BOOST_PP_REPEAT_3_230(m, d) m(4, 230, d)
23866: #define BOOST_PP_REPEAT_3_232(m,d) BOOST_PP_REPEAT_3_231(m, d) m(4, 231, d)
23866: #define BOOST_PP_REPEAT_3_233(m,d) BOOST_PP_REPEAT_3_232(m, d) m(4, 232, d)
23866: #define BOOST_PP_REPEAT_3_234(m,d) BOOST_PP_REPEAT_3_233(m, d) m(4, 233, d)
23866: #define BOOST_PP_REPEAT_3_235(m,d) BOOST_PP_REPEAT_3_234(m, d) m(4, 234, d)
23866: #define BOOST_PP_REPEAT_3_236(m,d) BOOST_PP_REPEAT_3_235(m, d) m(4, 235, d)
23866: #define BOOST_PP_REPEAT_3_237(m,d) BOOST_PP_REPEAT_3_236(m, d) m(4, 236, d)
23866: #define BOOST_PP_REPEAT_3_238(m,d) BOOST_PP_REPEAT_3_237(m, d) m(4, 237, d)
23866: #define BOOST_PP_REPEAT_3_239(m,d) BOOST_PP_REPEAT_3_238(m, d) m(4, 238, d)
23866: #define BOOST_PP_REPEAT_3_240(m,d) BOOST_PP_REPEAT_3_239(m, d) m(4, 239, d)
23866: #define BOOST_PP_REPEAT_3_241(m,d) BOOST_PP_REPEAT_3_240(m, d) m(4, 240, d)
23866: #define BOOST_PP_REPEAT_3_242(m,d) BOOST_PP_REPEAT_3_241(m, d) m(4, 241, d)
23866: #define BOOST_PP_REPEAT_3_243(m,d) BOOST_PP_REPEAT_3_242(m, d) m(4, 242, d)
23866: #define BOOST_PP_REPEAT_3_244(m,d) BOOST_PP_REPEAT_3_243(m, d) m(4, 243, d)
23866: #define BOOST_PP_REPEAT_3_245(m,d) BOOST_PP_REPEAT_3_244(m, d) m(4, 244, d)
23866: #define BOOST_PP_REPEAT_3_246(m,d) BOOST_PP_REPEAT_3_245(m, d) m(4, 245, d)
23866: #define BOOST_PP_REPEAT_3_247(m,d) BOOST_PP_REPEAT_3_246(m, d) m(4, 246, d)
23866: #define BOOST_PP_REPEAT_3_248(m,d) BOOST_PP_REPEAT_3_247(m, d) m(4, 247, d)
23866: #define BOOST_PP_REPEAT_3_249(m,d) BOOST_PP_REPEAT_3_248(m, d) m(4, 248, d)
23866: #define BOOST_PP_REPEAT_3_250(m,d) BOOST_PP_REPEAT_3_249(m, d) m(4, 249, d)
23866: #define BOOST_PP_REPEAT_3_251(m,d) BOOST_PP_REPEAT_3_250(m, d) m(4, 250, d)
23866: #define BOOST_PP_REPEAT_3_252(m,d) BOOST_PP_REPEAT_3_251(m, d) m(4, 251, d)
23866: #define BOOST_PP_REPEAT_3_253(m,d) BOOST_PP_REPEAT_3_252(m, d) m(4, 252, d)
23866: #define BOOST_PP_REPEAT_3_254(m,d) BOOST_PP_REPEAT_3_253(m, d) m(4, 253, d)
23866: #define BOOST_PP_REPEAT_3_255(m,d) BOOST_PP_REPEAT_3_254(m, d) m(4, 254, d)
23866: #define BOOST_PP_REPEAT_3_256(m,d) BOOST_PP_REPEAT_3_255(m, d) m(4, 255, d)
23866: # 16 "/usr/include/boost/preprocessor/repeat.hpp" 2 3 4
23866: # 47 "/usr/include/boost/mpl/aux_/preprocessor/params.hpp" 2 3 4
23866: # 1 "/usr/include/boost/preprocessor/inc.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/inc.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_INC_HPP
23866:
23866: # 1 "/usr/include/boost/preprocessor/arithmetic/inc.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/arithmetic/inc.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_ARITHMETIC_INC_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_INC(x) BOOST_PP_INC_I(x)
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_INC_I(x) BOOST_PP_INC_ ## x
23866:
23866: #define BOOST_PP_INC_0 1
23866: #define BOOST_PP_INC_1 2
23866: #define BOOST_PP_INC_2 3
23866: #define BOOST_PP_INC_3 4
23866: #define BOOST_PP_INC_4 5
23866: #define BOOST_PP_INC_5 6
23866: #define BOOST_PP_INC_6 7
23866: #define BOOST_PP_INC_7 8
23866: #define BOOST_PP_INC_8 9
23866: #define BOOST_PP_INC_9 10
23866: #define BOOST_PP_INC_10 11
23866: #define BOOST_PP_INC_11 12
23866: #define BOOST_PP_INC_12 13
23866: #define BOOST_PP_INC_13 14
23866: #define BOOST_PP_INC_14 15
23866: #define BOOST_PP_INC_15 16
23866: #define BOOST_PP_INC_16 17
23866: #define BOOST_PP_INC_17 18
23866: #define BOOST_PP_INC_18 19
23866: #define BOOST_PP_INC_19 20
23866: #define BOOST_PP_INC_20 21
23866: #define BOOST_PP_INC_21 22
23866: #define BOOST_PP_INC_22 23
23866: #define BOOST_PP_INC_23 24
23866: #define BOOST_PP_INC_24 25
23866: #define BOOST_PP_INC_25 26
23866: #define BOOST_PP_INC_26 27
23866: #define BOOST_PP_INC_27 28
23866: #define BOOST_PP_INC_28 29
23866: #define BOOST_PP_INC_29 30
23866: #define BOOST_PP_INC_30 31
23866: #define BOOST_PP_INC_31 32
23866: #define BOOST_PP_INC_32 33
23866: #define BOOST_PP_INC_33 34
23866: #define BOOST_PP_INC_34 35
23866: #define BOOST_PP_INC_35 36
23866: #define BOOST_PP_INC_36 37
23866: #define BOOST_PP_INC_37 38
23866: #define BOOST_PP_INC_38 39
23866: #define BOOST_PP_INC_39 40
23866: #define BOOST_PP_INC_40 41
23866: #define BOOST_PP_INC_41 42
23866: #define BOOST_PP_INC_42 43
23866: #define BOOST_PP_INC_43 44
23866: #define BOOST_PP_INC_44 45
23866: #define BOOST_PP_INC_45 46
23866: #define BOOST_PP_INC_46 47
23866: #define BOOST_PP_INC_47 48
23866: #define BOOST_PP_INC_48 49
23866: #define BOOST_PP_INC_49 50
23866: #define BOOST_PP_INC_50 51
23866: #define BOOST_PP_INC_51 52
23866: #define BOOST_PP_INC_52 53
23866: #define BOOST_PP_INC_53 54
23866: #define BOOST_PP_INC_54 55
23866: #define BOOST_PP_INC_55 56
23866: #define BOOST_PP_INC_56 57
23866: #define BOOST_PP_INC_57 58
23866: #define BOOST_PP_INC_58 59
23866: #define BOOST_PP_INC_59 60
23866: #define BOOST_PP_INC_60 61
23866: #define BOOST_PP_INC_61 62
23866: #define BOOST_PP_INC_62 63
23866: #define BOOST_PP_INC_63 64
23866: #define BOOST_PP_INC_64 65
23866: #define BOOST_PP_INC_65 66
23866: #define BOOST_PP_INC_66 67
23866: #define BOOST_PP_INC_67 68
23866: #define BOOST_PP_INC_68 69
23866: #define BOOST_PP_INC_69 70
23866: #define BOOST_PP_INC_70 71
23866: #define BOOST_PP_INC_71 72
23866: #define BOOST_PP_INC_72 73
23866: #define BOOST_PP_INC_73 74
23866: #define BOOST_PP_INC_74 75
23866: #define BOOST_PP_INC_75 76
23866: #define BOOST_PP_INC_76 77
23866: #define BOOST_PP_INC_77 78
23866: #define BOOST_PP_INC_78 79
23866: #define BOOST_PP_INC_79 80
23866: #define BOOST_PP_INC_80 81
23866: #define BOOST_PP_INC_81 82
23866: #define BOOST_PP_INC_82 83
23866: #define BOOST_PP_INC_83 84
23866: #define BOOST_PP_INC_84 85
23866: #define BOOST_PP_INC_85 86
23866: #define BOOST_PP_INC_86 87
23866: #define BOOST_PP_INC_87 88
23866: #define BOOST_PP_INC_88 89
23866: #define BOOST_PP_INC_89 90
23866: #define BOOST_PP_INC_90 91
23866: #define BOOST_PP_INC_91 92
23866: #define BOOST_PP_INC_92 93
23866: #define BOOST_PP_INC_93 94
23866: #define BOOST_PP_INC_94 95
23866: #define BOOST_PP_INC_95 96
23866: #define BOOST_PP_INC_96 97
23866: #define BOOST_PP_INC_97 98
23866: #define BOOST_PP_INC_98 99
23866: #define BOOST_PP_INC_99 100
23866: #define BOOST_PP_INC_100 101
23866: #define BOOST_PP_INC_101 102
23866: #define BOOST_PP_INC_102 103
23866: #define BOOST_PP_INC_103 104
23866: #define BOOST_PP_INC_104 105
23866: #define BOOST_PP_INC_105 106
23866: #define BOOST_PP_INC_106 107
23866: #define BOOST_PP_INC_107 108
23866: #define BOOST_PP_INC_108 109
23866: #define BOOST_PP_INC_109 110
23866: #define BOOST_PP_INC_110 111
23866: #define BOOST_PP_INC_111 112
23866: #define BOOST_PP_INC_112 113
23866: #define BOOST_PP_INC_113 114
23866: #define BOOST_PP_INC_114 115
23866: #define BOOST_PP_INC_115 116
23866: #define BOOST_PP_INC_116 117
23866: #define BOOST_PP_INC_117 118
23866: #define BOOST_PP_INC_118 119
23866: #define BOOST_PP_INC_119 120
23866: #define BOOST_PP_INC_120 121
23866: #define BOOST_PP_INC_121 122
23866: #define BOOST_PP_INC_122 123
23866: #define BOOST_PP_INC_123 124
23866: #define BOOST_PP_INC_124 125
23866: #define BOOST_PP_INC_125 126
23866: #define BOOST_PP_INC_126 127
23866: #define BOOST_PP_INC_127 128
23866: #define BOOST_PP_INC_128 129
23866: #define BOOST_PP_INC_129 130
23866: #define BOOST_PP_INC_130 131
23866: #define BOOST_PP_INC_131 132
23866: #define BOOST_PP_INC_132 133
23866: #define BOOST_PP_INC_133 134
23866: #define BOOST_PP_INC_134 135
23866: #define BOOST_PP_INC_135 136
23866: #define BOOST_PP_INC_136 137
23866: #define BOOST_PP_INC_137 138
23866: #define BOOST_PP_INC_138 139
23866: #define BOOST_PP_INC_139 140
23866: #define BOOST_PP_INC_140 141
23866: #define BOOST_PP_INC_141 142
23866: #define BOOST_PP_INC_142 143
23866: #define BOOST_PP_INC_143 144
23866: #define BOOST_PP_INC_144 145
23866: #define BOOST_PP_INC_145 146
23866: #define BOOST_PP_INC_146 147
23866: #define BOOST_PP_INC_147 148
23866: #define BOOST_PP_INC_148 149
23866: #define BOOST_PP_INC_149 150
23866: #define BOOST_PP_INC_150 151
23866: #define BOOST_PP_INC_151 152
23866: #define BOOST_PP_INC_152 153
23866: #define BOOST_PP_INC_153 154
23866: #define BOOST_PP_INC_154 155
23866: #define BOOST_PP_INC_155 156
23866: #define BOOST_PP_INC_156 157
23866: #define BOOST_PP_INC_157 158
23866: #define BOOST_PP_INC_158 159
23866: #define BOOST_PP_INC_159 160
23866: #define BOOST_PP_INC_160 161
23866: #define BOOST_PP_INC_161 162
23866: #define BOOST_PP_INC_162 163
23866: #define BOOST_PP_INC_163 164
23866: #define BOOST_PP_INC_164 165
23866: #define BOOST_PP_INC_165 166
23866: #define BOOST_PP_INC_166 167
23866: #define BOOST_PP_INC_167 168
23866: #define BOOST_PP_INC_168 169
23866: #define BOOST_PP_INC_169 170
23866: #define BOOST_PP_INC_170 171
23866: #define BOOST_PP_INC_171 172
23866: #define BOOST_PP_INC_172 173
23866: #define BOOST_PP_INC_173 174
23866: #define BOOST_PP_INC_174 175
23866: #define BOOST_PP_INC_175 176
23866: #define BOOST_PP_INC_176 177
23866: #define BOOST_PP_INC_177 178
23866: #define BOOST_PP_INC_178 179
23866: #define BOOST_PP_INC_179 180
23866: #define BOOST_PP_INC_180 181
23866: #define BOOST_PP_INC_181 182
23866: #define BOOST_PP_INC_182 183
23866: #define BOOST_PP_INC_183 184
23866: #define BOOST_PP_INC_184 185
23866: #define BOOST_PP_INC_185 186
23866: #define BOOST_PP_INC_186 187
23866: #define BOOST_PP_INC_187 188
23866: #define BOOST_PP_INC_188 189
23866: #define BOOST_PP_INC_189 190
23866: #define BOOST_PP_INC_190 191
23866: #define BOOST_PP_INC_191 192
23866: #define BOOST_PP_INC_192 193
23866: #define BOOST_PP_INC_193 194
23866: #define BOOST_PP_INC_194 195
23866: #define BOOST_PP_INC_195 196
23866: #define BOOST_PP_INC_196 197
23866: #define BOOST_PP_INC_197 198
23866: #define BOOST_PP_INC_198 199
23866: #define BOOST_PP_INC_199 200
23866: #define BOOST_PP_INC_200 201
23866: #define BOOST_PP_INC_201 202
23866: #define BOOST_PP_INC_202 203
23866: #define BOOST_PP_INC_203 204
23866: #define BOOST_PP_INC_204 205
23866: #define BOOST_PP_INC_205 206
23866: #define BOOST_PP_INC_206 207
23866: #define BOOST_PP_INC_207 208
23866: #define BOOST_PP_INC_208 209
23866: #define BOOST_PP_INC_209 210
23866: #define BOOST_PP_INC_210 211
23866: #define BOOST_PP_INC_211 212
23866: #define BOOST_PP_INC_212 213
23866: #define BOOST_PP_INC_213 214
23866: #define BOOST_PP_INC_214 215
23866: #define BOOST_PP_INC_215 216
23866: #define BOOST_PP_INC_216 217
23866: #define BOOST_PP_INC_217 218
23866: #define BOOST_PP_INC_218 219
23866: #define BOOST_PP_INC_219 220
23866: #define BOOST_PP_INC_220 221
23866: #define BOOST_PP_INC_221 222
23866: #define BOOST_PP_INC_222 223
23866: #define BOOST_PP_INC_223 224
23866: #define BOOST_PP_INC_224 225
23866: #define BOOST_PP_INC_225 226
23866: #define BOOST_PP_INC_226 227
23866: #define BOOST_PP_INC_227 228
23866: #define BOOST_PP_INC_228 229
23866: #define BOOST_PP_INC_229 230
23866: #define BOOST_PP_INC_230 231
23866: #define BOOST_PP_INC_231 232
23866: #define BOOST_PP_INC_232 233
23866: #define BOOST_PP_INC_233 234
23866: #define BOOST_PP_INC_234 235
23866: #define BOOST_PP_INC_235 236
23866: #define BOOST_PP_INC_236 237
23866: #define BOOST_PP_INC_237 238
23866: #define BOOST_PP_INC_238 239
23866: #define BOOST_PP_INC_239 240
23866: #define BOOST_PP_INC_240 241
23866: #define BOOST_PP_INC_241 242
23866: #define BOOST_PP_INC_242 243
23866: #define BOOST_PP_INC_243 244
23866: #define BOOST_PP_INC_244 245
23866: #define BOOST_PP_INC_245 246
23866: #define BOOST_PP_INC_246 247
23866: #define BOOST_PP_INC_247 248
23866: #define BOOST_PP_INC_248 249
23866: #define BOOST_PP_INC_249 250
23866: #define BOOST_PP_INC_250 251
23866: #define BOOST_PP_INC_251 252
23866: #define BOOST_PP_INC_252 253
23866: #define BOOST_PP_INC_253 254
23866: #define BOOST_PP_INC_254 255
23866: #define BOOST_PP_INC_255 256
23866: #define BOOST_PP_INC_256 256
23866: # 16 "/usr/include/boost/preprocessor/inc.hpp" 2 3 4
23866: # 48 "/usr/include/boost/mpl/aux_/preprocessor/params.hpp" 2 3 4
23866:
23866:
23866: #define BOOST_MPL_PP_AUX_PARAM_FUNC(unused,i,param) BOOST_PP_COMMA_IF(i) BOOST_PP_CAT(param, BOOST_PP_INC(i))
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_PP_PARAMS(n,param) BOOST_PP_REPEAT( n , BOOST_MPL_PP_AUX_PARAM_FUNC , param )
23866: # 27 "/usr/include/boost/mpl/aux_/na_spec.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessor/enum.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_PREPROCESSOR_ENUM_HPP_INCLUDED
23866: # 48 "/usr/include/boost/mpl/aux_/preprocessor/enum.hpp" 3 4
23866: #define BOOST_MPL_PP_AUX_ENUM_FUNC(unused,i,param) BOOST_PP_COMMA_IF(i) param
23866:
23866:
23866:
23866: #define BOOST_MPL_PP_ENUM(n,param) BOOST_PP_REPEAT( n , BOOST_MPL_PP_AUX_ENUM_FUNC , param )
23866: # 28 "/usr/include/boost/mpl/aux_/na_spec.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_PREPROCESSOR_DEF_PARAMS_TAIL_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/limits/arity.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_LIMITS_ARITY_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/limits/arity.hpp" 3 4
23866: #define BOOST_MPL_LIMIT_METAFUNCTION_ARITY 5
23866: # 18 "/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/logical/and.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/logical/and.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_LOGICAL_AND_HPP
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/logical/bitand.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/logical/bitand.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_LOGICAL_BITAND_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_BITAND(x,y) BOOST_PP_BITAND_I(x, y)
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_BITAND_I(x,y) BOOST_PP_BITAND_ ## x ## y
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_BITAND_00 0
23866: #define BOOST_PP_BITAND_01 0
23866: #define BOOST_PP_BITAND_10 0
23866: #define BOOST_PP_BITAND_11 1
23866: # 20 "/usr/include/boost/preprocessor/logical/and.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_AND(p,q) BOOST_PP_BITAND(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
23866: # 23 "/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp" 2 3 4
23866: # 1 "/usr/include/boost/preprocessor/identity.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/identity.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_IDENTITY_HPP
23866:
23866: # 1 "/usr/include/boost/preprocessor/facilities/identity.hpp" 1 3 4
23866: # 16 "/usr/include/boost/preprocessor/facilities/identity.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_FACILITIES_IDENTITY_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_IDENTITY(item) item BOOST_PP_EMPTY
23866:
23866: #define BOOST_PP_IDENTITY_N(item,n) item BOOST_PP_TUPLE_EAT_N(n)
23866: # 16 "/usr/include/boost/preprocessor/identity.hpp" 2 3 4
23866: # 24 "/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp" 2 3 4
23866: # 1 "/usr/include/boost/preprocessor/empty.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/empty.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_EMPTY_HPP
23866: # 25 "/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp" 2 3 4
23866: # 66 "/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp" 3 4
23866: # 1 "/usr/include/boost/preprocessor/arithmetic/add.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/arithmetic/add.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_ARITHMETIC_ADD_HPP
23866:
23866: # 1 "/usr/include/boost/preprocessor/arithmetic/dec.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/arithmetic/dec.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_ARITHMETIC_DEC_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_DEC(x) BOOST_PP_DEC_I(x)
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_DEC_I(x) BOOST_PP_DEC_ ## x
23866:
23866: #define BOOST_PP_DEC_0 0
23866: #define BOOST_PP_DEC_1 0
23866: #define BOOST_PP_DEC_2 1
23866: #define BOOST_PP_DEC_3 2
23866: #define BOOST_PP_DEC_4 3
23866: #define BOOST_PP_DEC_5 4
23866: #define BOOST_PP_DEC_6 5
23866: #define BOOST_PP_DEC_7 6
23866: #define BOOST_PP_DEC_8 7
23866: #define BOOST_PP_DEC_9 8
23866: #define BOOST_PP_DEC_10 9
23866: #define BOOST_PP_DEC_11 10
23866: #define BOOST_PP_DEC_12 11
23866: #define BOOST_PP_DEC_13 12
23866: #define BOOST_PP_DEC_14 13
23866: #define BOOST_PP_DEC_15 14
23866: #define BOOST_PP_DEC_16 15
23866: #define BOOST_PP_DEC_17 16
23866: #define BOOST_PP_DEC_18 17
23866: #define BOOST_PP_DEC_19 18
23866: #define BOOST_PP_DEC_20 19
23866: #define BOOST_PP_DEC_21 20
23866: #define BOOST_PP_DEC_22 21
23866: #define BOOST_PP_DEC_23 22
23866: #define BOOST_PP_DEC_24 23
23866: #define BOOST_PP_DEC_25 24
23866: #define BOOST_PP_DEC_26 25
23866: #define BOOST_PP_DEC_27 26
23866: #define BOOST_PP_DEC_28 27
23866: #define BOOST_PP_DEC_29 28
23866: #define BOOST_PP_DEC_30 29
23866: #define BOOST_PP_DEC_31 30
23866: #define BOOST_PP_DEC_32 31
23866: #define BOOST_PP_DEC_33 32
23866: #define BOOST_PP_DEC_34 33
23866: #define BOOST_PP_DEC_35 34
23866: #define BOOST_PP_DEC_36 35
23866: #define BOOST_PP_DEC_37 36
23866: #define BOOST_PP_DEC_38 37
23866: #define BOOST_PP_DEC_39 38
23866: #define BOOST_PP_DEC_40 39
23866: #define BOOST_PP_DEC_41 40
23866: #define BOOST_PP_DEC_42 41
23866: #define BOOST_PP_DEC_43 42
23866: #define BOOST_PP_DEC_44 43
23866: #define BOOST_PP_DEC_45 44
23866: #define BOOST_PP_DEC_46 45
23866: #define BOOST_PP_DEC_47 46
23866: #define BOOST_PP_DEC_48 47
23866: #define BOOST_PP_DEC_49 48
23866: #define BOOST_PP_DEC_50 49
23866: #define BOOST_PP_DEC_51 50
23866: #define BOOST_PP_DEC_52 51
23866: #define BOOST_PP_DEC_53 52
23866: #define BOOST_PP_DEC_54 53
23866: #define BOOST_PP_DEC_55 54
23866: #define BOOST_PP_DEC_56 55
23866: #define BOOST_PP_DEC_57 56
23866: #define BOOST_PP_DEC_58 57
23866: #define BOOST_PP_DEC_59 58
23866: #define BOOST_PP_DEC_60 59
23866: #define BOOST_PP_DEC_61 60
23866: #define BOOST_PP_DEC_62 61
23866: #define BOOST_PP_DEC_63 62
23866: #define BOOST_PP_DEC_64 63
23866: #define BOOST_PP_DEC_65 64
23866: #define BOOST_PP_DEC_66 65
23866: #define BOOST_PP_DEC_67 66
23866: #define BOOST_PP_DEC_68 67
23866: #define BOOST_PP_DEC_69 68
23866: #define BOOST_PP_DEC_70 69
23866: #define BOOST_PP_DEC_71 70
23866: #define BOOST_PP_DEC_72 71
23866: #define BOOST_PP_DEC_73 72
23866: #define BOOST_PP_DEC_74 73
23866: #define BOOST_PP_DEC_75 74
23866: #define BOOST_PP_DEC_76 75
23866: #define BOOST_PP_DEC_77 76
23866: #define BOOST_PP_DEC_78 77
23866: #define BOOST_PP_DEC_79 78
23866: #define BOOST_PP_DEC_80 79
23866: #define BOOST_PP_DEC_81 80
23866: #define BOOST_PP_DEC_82 81
23866: #define BOOST_PP_DEC_83 82
23866: #define BOOST_PP_DEC_84 83
23866: #define BOOST_PP_DEC_85 84
23866: #define BOOST_PP_DEC_86 85
23866: #define BOOST_PP_DEC_87 86
23866: #define BOOST_PP_DEC_88 87
23866: #define BOOST_PP_DEC_89 88
23866: #define BOOST_PP_DEC_90 89
23866: #define BOOST_PP_DEC_91 90
23866: #define BOOST_PP_DEC_92 91
23866: #define BOOST_PP_DEC_93 92
23866: #define BOOST_PP_DEC_94 93
23866: #define BOOST_PP_DEC_95 94
23866: #define BOOST_PP_DEC_96 95
23866: #define BOOST_PP_DEC_97 96
23866: #define BOOST_PP_DEC_98 97
23866: #define BOOST_PP_DEC_99 98
23866: #define BOOST_PP_DEC_100 99
23866: #define BOOST_PP_DEC_101 100
23866: #define BOOST_PP_DEC_102 101
23866: #define BOOST_PP_DEC_103 102
23866: #define BOOST_PP_DEC_104 103
23866: #define BOOST_PP_DEC_105 104
23866: #define BOOST_PP_DEC_106 105
23866: #define BOOST_PP_DEC_107 106
23866: #define BOOST_PP_DEC_108 107
23866: #define BOOST_PP_DEC_109 108
23866: #define BOOST_PP_DEC_110 109
23866: #define BOOST_PP_DEC_111 110
23866: #define BOOST_PP_DEC_112 111
23866: #define BOOST_PP_DEC_113 112
23866: #define BOOST_PP_DEC_114 113
23866: #define BOOST_PP_DEC_115 114
23866: #define BOOST_PP_DEC_116 115
23866: #define BOOST_PP_DEC_117 116
23866: #define BOOST_PP_DEC_118 117
23866: #define BOOST_PP_DEC_119 118
23866: #define BOOST_PP_DEC_120 119
23866: #define BOOST_PP_DEC_121 120
23866: #define BOOST_PP_DEC_122 121
23866: #define BOOST_PP_DEC_123 122
23866: #define BOOST_PP_DEC_124 123
23866: #define BOOST_PP_DEC_125 124
23866: #define BOOST_PP_DEC_126 125
23866: #define BOOST_PP_DEC_127 126
23866: #define BOOST_PP_DEC_128 127
23866: #define BOOST_PP_DEC_129 128
23866: #define BOOST_PP_DEC_130 129
23866: #define BOOST_PP_DEC_131 130
23866: #define BOOST_PP_DEC_132 131
23866: #define BOOST_PP_DEC_133 132
23866: #define BOOST_PP_DEC_134 133
23866: #define BOOST_PP_DEC_135 134
23866: #define BOOST_PP_DEC_136 135
23866: #define BOOST_PP_DEC_137 136
23866: #define BOOST_PP_DEC_138 137
23866: #define BOOST_PP_DEC_139 138
23866: #define BOOST_PP_DEC_140 139
23866: #define BOOST_PP_DEC_141 140
23866: #define BOOST_PP_DEC_142 141
23866: #define BOOST_PP_DEC_143 142
23866: #define BOOST_PP_DEC_144 143
23866: #define BOOST_PP_DEC_145 144
23866: #define BOOST_PP_DEC_146 145
23866: #define BOOST_PP_DEC_147 146
23866: #define BOOST_PP_DEC_148 147
23866: #define BOOST_PP_DEC_149 148
23866: #define BOOST_PP_DEC_150 149
23866: #define BOOST_PP_DEC_151 150
23866: #define BOOST_PP_DEC_152 151
23866: #define BOOST_PP_DEC_153 152
23866: #define BOOST_PP_DEC_154 153
23866: #define BOOST_PP_DEC_155 154
23866: #define BOOST_PP_DEC_156 155
23866: #define BOOST_PP_DEC_157 156
23866: #define BOOST_PP_DEC_158 157
23866: #define BOOST_PP_DEC_159 158
23866: #define BOOST_PP_DEC_160 159
23866: #define BOOST_PP_DEC_161 160
23866: #define BOOST_PP_DEC_162 161
23866: #define BOOST_PP_DEC_163 162
23866: #define BOOST_PP_DEC_164 163
23866: #define BOOST_PP_DEC_165 164
23866: #define BOOST_PP_DEC_166 165
23866: #define BOOST_PP_DEC_167 166
23866: #define BOOST_PP_DEC_168 167
23866: #define BOOST_PP_DEC_169 168
23866: #define BOOST_PP_DEC_170 169
23866: #define BOOST_PP_DEC_171 170
23866: #define BOOST_PP_DEC_172 171
23866: #define BOOST_PP_DEC_173 172
23866: #define BOOST_PP_DEC_174 173
23866: #define BOOST_PP_DEC_175 174
23866: #define BOOST_PP_DEC_176 175
23866: #define BOOST_PP_DEC_177 176
23866: #define BOOST_PP_DEC_178 177
23866: #define BOOST_PP_DEC_179 178
23866: #define BOOST_PP_DEC_180 179
23866: #define BOOST_PP_DEC_181 180
23866: #define BOOST_PP_DEC_182 181
23866: #define BOOST_PP_DEC_183 182
23866: #define BOOST_PP_DEC_184 183
23866: #define BOOST_PP_DEC_185 184
23866: #define BOOST_PP_DEC_186 185
23866: #define BOOST_PP_DEC_187 186
23866: #define BOOST_PP_DEC_188 187
23866: #define BOOST_PP_DEC_189 188
23866: #define BOOST_PP_DEC_190 189
23866: #define BOOST_PP_DEC_191 190
23866: #define BOOST_PP_DEC_192 191
23866: #define BOOST_PP_DEC_193 192
23866: #define BOOST_PP_DEC_194 193
23866: #define BOOST_PP_DEC_195 194
23866: #define BOOST_PP_DEC_196 195
23866: #define BOOST_PP_DEC_197 196
23866: #define BOOST_PP_DEC_198 197
23866: #define BOOST_PP_DEC_199 198
23866: #define BOOST_PP_DEC_200 199
23866: #define BOOST_PP_DEC_201 200
23866: #define BOOST_PP_DEC_202 201
23866: #define BOOST_PP_DEC_203 202
23866: #define BOOST_PP_DEC_204 203
23866: #define BOOST_PP_DEC_205 204
23866: #define BOOST_PP_DEC_206 205
23866: #define BOOST_PP_DEC_207 206
23866: #define BOOST_PP_DEC_208 207
23866: #define BOOST_PP_DEC_209 208
23866: #define BOOST_PP_DEC_210 209
23866: #define BOOST_PP_DEC_211 210
23866: #define BOOST_PP_DEC_212 211
23866: #define BOOST_PP_DEC_213 212
23866: #define BOOST_PP_DEC_214 213
23866: #define BOOST_PP_DEC_215 214
23866: #define BOOST_PP_DEC_216 215
23866: #define BOOST_PP_DEC_217 216
23866: #define BOOST_PP_DEC_218 217
23866: #define BOOST_PP_DEC_219 218
23866: #define BOOST_PP_DEC_220 219
23866: #define BOOST_PP_DEC_221 220
23866: #define BOOST_PP_DEC_222 221
23866: #define BOOST_PP_DEC_223 222
23866: #define BOOST_PP_DEC_224 223
23866: #define BOOST_PP_DEC_225 224
23866: #define BOOST_PP_DEC_226 225
23866: #define BOOST_PP_DEC_227 226
23866: #define BOOST_PP_DEC_228 227
23866: #define BOOST_PP_DEC_229 228
23866: #define BOOST_PP_DEC_230 229
23866: #define BOOST_PP_DEC_231 230
23866: #define BOOST_PP_DEC_232 231
23866: #define BOOST_PP_DEC_233 232
23866: #define BOOST_PP_DEC_234 233
23866: #define BOOST_PP_DEC_235 234
23866: #define BOOST_PP_DEC_236 235
23866: #define BOOST_PP_DEC_237 236
23866: #define BOOST_PP_DEC_238 237
23866: #define BOOST_PP_DEC_239 238
23866: #define BOOST_PP_DEC_240 239
23866: #define BOOST_PP_DEC_241 240
23866: #define BOOST_PP_DEC_242 241
23866: #define BOOST_PP_DEC_243 242
23866: #define BOOST_PP_DEC_244 243
23866: #define BOOST_PP_DEC_245 244
23866: #define BOOST_PP_DEC_246 245
23866: #define BOOST_PP_DEC_247 246
23866: #define BOOST_PP_DEC_248 247
23866: #define BOOST_PP_DEC_249 248
23866: #define BOOST_PP_DEC_250 249
23866: #define BOOST_PP_DEC_251 250
23866: #define BOOST_PP_DEC_252 251
23866: #define BOOST_PP_DEC_253 252
23866: #define BOOST_PP_DEC_254 253
23866: #define BOOST_PP_DEC_255 254
23866: #define BOOST_PP_DEC_256 255
23866: #define BOOST_PP_DEC_257 256
23866: # 18 "/usr/include/boost/preprocessor/arithmetic/add.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/control/while.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/control/while.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_CONTROL_WHILE_HPP
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/detail/auto_rec.hpp" 1 3 4
23866: # 21 "/usr/include/boost/preprocessor/control/while.hpp" 2 3 4
23866: # 1 "/usr/include/boost/preprocessor/list/fold_left.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/list/fold_left.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_LIST_FOLD_LEFT_HPP
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/control/while.hpp" 1 3 4
23866: # 19 "/usr/include/boost/preprocessor/list/fold_left.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/preprocessor/detail/auto_rec.hpp" 1 3 4
23866: # 21 "/usr/include/boost/preprocessor/list/fold_left.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_LIST_FOLD_LEFT BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_, BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256))
23866:
23866: #define BOOST_PP_LIST_FOLD_LEFT_257(o,s,l) BOOST_PP_ERROR(0x0004)
23866:
23866: #define BOOST_PP_LIST_FOLD_LEFT_D(d,o,s,l) BOOST_PP_LIST_FOLD_LEFT_ ## d(o, s, l)
23866: #define BOOST_PP_LIST_FOLD_LEFT_2ND BOOST_PP_LIST_FOLD_LEFT
23866: #define BOOST_PP_LIST_FOLD_LEFT_2ND_D BOOST_PP_LIST_FOLD_LEFT_D
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/list/detail/fold_left.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/list/detail/fold_left.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_LEFT_HPP
23866:
23866: # 1 "/usr/include/boost/preprocessor/control/expr_iif.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/control/expr_iif.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_CONTROL_EXPR_IIF_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_EXPR_IIF(bit,expr) BOOST_PP_EXPR_IIF_I(bit, expr)
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_EXPR_IIF_I(bit,expr) BOOST_PP_EXPR_IIF_ ## bit(expr)
23866:
23866: #define BOOST_PP_EXPR_IIF_0(expr)
23866: #define BOOST_PP_EXPR_IIF_1(expr) expr
23866: # 18 "/usr/include/boost/preprocessor/list/detail/fold_left.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/preprocessor/list/adt.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/list/adt.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_LIST_ADT_HPP
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/detail/is_binary.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/detail/is_binary.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_DETAIL_IS_BINARY_HPP
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/detail/check.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/detail/check.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_DETAIL_CHECK_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_CHECK(x,type) BOOST_PP_CHECK_D(x, type)
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_CHECK_D(x,type) BOOST_PP_CHECK_1(BOOST_PP_CAT(BOOST_PP_CHECK_RESULT_, type x))
23866: #define BOOST_PP_CHECK_1(chk) BOOST_PP_CHECK_2(chk)
23866: #define BOOST_PP_CHECK_2(res,_) res
23866: # 46 "/usr/include/boost/preprocessor/detail/check.hpp" 3 4
23866: #define BOOST_PP_CHECK_RESULT_1 1, BOOST_PP_NIL
23866: # 17 "/usr/include/boost/preprocessor/detail/is_binary.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_IS_BINARY(x) BOOST_PP_CHECK(x, BOOST_PP_IS_BINARY_CHECK)
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_IS_BINARY_CHECK(a,b) 1
23866: #define BOOST_PP_CHECK_RESULT_BOOST_PP_IS_BINARY_CHECK 0, BOOST_PP_NIL
23866: # 19 "/usr/include/boost/preprocessor/list/adt.hpp" 2 3 4
23866: # 1 "/usr/include/boost/preprocessor/logical/compl.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/logical/compl.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_LOGICAL_COMPL_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_COMPL(x) BOOST_PP_COMPL_I(x)
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_COMPL_I(x) BOOST_PP_COMPL_ ## x
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_COMPL_0 1
23866: #define BOOST_PP_COMPL_1 0
23866: # 20 "/usr/include/boost/preprocessor/list/adt.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_LIST_CONS(head,tail) (head, tail)
23866:
23866:
23866:
23866: #define BOOST_PP_LIST_NIL BOOST_PP_NIL
23866:
23866:
23866:
23866: #define BOOST_PP_LIST_FIRST(list) BOOST_PP_LIST_FIRST_D(list)
23866:
23866:
23866: #define BOOST_PP_LIST_FIRST_D(list) BOOST_PP_LIST_FIRST_I list
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_LIST_FIRST_I(head,tail) head
23866:
23866:
23866:
23866: #define BOOST_PP_LIST_REST(list) BOOST_PP_LIST_REST_D(list)
23866:
23866:
23866: #define BOOST_PP_LIST_REST_D(list) BOOST_PP_LIST_REST_I list
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_LIST_REST_I(head,tail) tail
23866: # 62 "/usr/include/boost/preprocessor/list/adt.hpp" 3 4
23866: #define BOOST_PP_LIST_IS_CONS(list) BOOST_PP_IS_BINARY(list)
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_LIST_IS_NIL(list) BOOST_PP_COMPL(BOOST_PP_IS_BINARY(list))
23866: # 20 "/usr/include/boost/preprocessor/list/detail/fold_left.hpp" 2 3 4
23866:
23866:
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: # 42 "/usr/include/boost/preprocessor/list/fold_left.hpp" 2 3 4
23866:
23866:
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_NIL 1
23866:
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_2(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_3(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_4(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_5(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_6(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_7(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_8(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_9(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_10(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_11(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_12(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_13(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_14(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_15(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_16(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_17(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_18(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_19(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_20(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_21(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_22(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_23(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_24(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_25(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_26(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_27(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_28(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_29(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_30(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_31(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_32(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_33(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_34(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_35(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_36(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_37(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_38(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_39(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_40(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_41(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_42(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_43(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_44(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_45(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_46(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_47(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_48(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_49(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_50(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_51(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_52(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_53(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_54(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_55(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_56(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_57(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_58(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_59(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_60(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_61(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_62(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_63(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_64(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_65(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_66(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_67(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_68(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_69(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_70(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_71(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_72(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_73(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_74(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_75(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_76(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_77(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_78(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_79(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_80(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_81(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_82(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_83(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_84(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_85(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_86(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_87(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_88(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_89(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_90(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_91(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_92(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_93(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_94(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_95(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_96(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_97(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_98(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_99(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_100(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_101(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_102(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_103(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_104(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_105(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_106(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_107(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_108(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_109(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_110(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_111(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_112(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_113(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_114(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_115(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_116(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_117(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_118(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_119(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_120(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_121(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_122(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_123(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_124(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_125(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_126(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_127(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_128(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_129(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_130(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_131(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_132(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_133(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_134(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_135(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_136(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_137(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_138(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_139(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_140(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_141(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_142(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_143(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_144(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_145(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_146(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_147(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_148(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_149(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_150(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_151(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_152(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_153(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_154(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_155(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_156(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_157(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_158(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_159(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_160(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_161(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_162(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_163(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_164(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_165(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_166(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_167(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_168(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_169(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_170(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_171(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_172(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_173(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_174(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_175(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_176(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_177(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_178(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_179(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_180(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_181(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_182(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_183(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_184(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_185(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_186(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_187(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_188(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_189(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_190(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_191(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_192(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_193(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_194(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_195(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_196(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_197(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_198(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_199(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_200(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_201(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_202(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_203(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_204(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_205(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_206(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_207(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_208(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_209(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_210(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_211(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_212(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_213(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_214(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_215(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_216(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_217(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_218(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_219(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_220(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_221(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_222(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_223(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_224(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_225(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_226(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_227(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_228(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_229(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_230(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_231(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_232(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_233(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_234(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_235(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_236(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_237(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_238(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_239(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_240(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_241(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_242(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_243(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_244(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_245(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_246(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_247(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_248(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_249(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_250(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_251(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_252(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_253(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_254(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_255(o,s,l) 0
23866: #define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_256(o,s,l) 0
23866: # 22 "/usr/include/boost/preprocessor/control/while.hpp" 2 3 4
23866: # 1 "/usr/include/boost/preprocessor/list/fold_right.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/list/fold_right.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_LIST_FOLD_RIGHT_HPP
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/detail/auto_rec.hpp" 1 3 4
23866: # 21 "/usr/include/boost/preprocessor/list/fold_right.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_LIST_FOLD_RIGHT BOOST_PP_CAT(BOOST_PP_LIST_FOLD_RIGHT_, BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256))
23866:
23866: #define BOOST_PP_LIST_FOLD_RIGHT_257(o,s,l) BOOST_PP_ERROR(0x0004)
23866:
23866: #define BOOST_PP_LIST_FOLD_RIGHT_D(d,o,s,l) BOOST_PP_LIST_FOLD_RIGHT_ ## d(o, s, l)
23866: #define BOOST_PP_LIST_FOLD_RIGHT_2ND BOOST_PP_LIST_FOLD_RIGHT
23866: #define BOOST_PP_LIST_FOLD_RIGHT_2ND_D BOOST_PP_LIST_FOLD_RIGHT_D
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/list/detail/fold_right.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/list/detail/fold_right.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_RIGHT_HPP
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/list/reverse.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/list/reverse.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_LIST_REVERSE_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_LIST_REVERSE(list) BOOST_PP_LIST_FOLD_LEFT(BOOST_PP_LIST_REVERSE_O, BOOST_PP_NIL, list)
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_LIST_REVERSE_O(d,s,x) (x, s)
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_LIST_REVERSE_D(d,list) BOOST_PP_LIST_FOLD_LEFT_ ## d(BOOST_PP_LIST_REVERSE_O, BOOST_PP_NIL, list)
23866: # 19 "/usr/include/boost/preprocessor/list/detail/fold_right.hpp" 2 3 4
23866:
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: # 38 "/usr/include/boost/preprocessor/list/fold_right.hpp" 2 3 4
23866: # 23 "/usr/include/boost/preprocessor/control/while.hpp" 2 3 4
23866: # 31 "/usr/include/boost/preprocessor/control/while.hpp" 3 4
23866: #define BOOST_PP_WHILE BOOST_PP_CAT(BOOST_PP_WHILE_, BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256))
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_WHILE_P(n) BOOST_PP_BITAND(BOOST_PP_CAT(BOOST_PP_WHILE_CHECK_, 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_LIST_FOLD_LEFT_ ## n(BOOST_PP_NIL, BOOST_PP_NIL, BOOST_PP_NIL)))
23866:
23866:
23866: #define BOOST_PP_WHILE_F(d,_) 0
23866: # 48 "/usr/include/boost/preprocessor/control/while.hpp" 3 4
23866: # 1 "/usr/include/boost/preprocessor/control/detail/while.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/control/detail/while.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_CONTROL_DETAIL_WHILE_HPP
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_WHILE_1(p,o,s) BOOST_PP_WHILE_1_C(BOOST_PP_BOOL(p(2, s)), p, o, s)
23866: #define BOOST_PP_WHILE_2(p,o,s) BOOST_PP_WHILE_2_C(BOOST_PP_BOOL(p(3, s)), p, o, s)
23866: #define BOOST_PP_WHILE_3(p,o,s) BOOST_PP_WHILE_3_C(BOOST_PP_BOOL(p(4, s)), p, o, s)
23866: #define BOOST_PP_WHILE_4(p,o,s) BOOST_PP_WHILE_4_C(BOOST_PP_BOOL(p(5, s)), p, o, s)
23866: #define BOOST_PP_WHILE_5(p,o,s) BOOST_PP_WHILE_5_C(BOOST_PP_BOOL(p(6, s)), p, o, s)
23866: #define BOOST_PP_WHILE_6(p,o,s) BOOST_PP_WHILE_6_C(BOOST_PP_BOOL(p(7, s)), p, o, s)
23866: #define BOOST_PP_WHILE_7(p,o,s) BOOST_PP_WHILE_7_C(BOOST_PP_BOOL(p(8, s)), p, o, s)
23866: #define BOOST_PP_WHILE_8(p,o,s) BOOST_PP_WHILE_8_C(BOOST_PP_BOOL(p(9, s)), p, o, s)
23866: #define BOOST_PP_WHILE_9(p,o,s) BOOST_PP_WHILE_9_C(BOOST_PP_BOOL(p(10, s)), p, o, s)
23866: #define BOOST_PP_WHILE_10(p,o,s) BOOST_PP_WHILE_10_C(BOOST_PP_BOOL(p(11, s)), p, o, s)
23866: #define BOOST_PP_WHILE_11(p,o,s) BOOST_PP_WHILE_11_C(BOOST_PP_BOOL(p(12, s)), p, o, s)
23866: #define BOOST_PP_WHILE_12(p,o,s) BOOST_PP_WHILE_12_C(BOOST_PP_BOOL(p(13, s)), p, o, s)
23866: #define BOOST_PP_WHILE_13(p,o,s) BOOST_PP_WHILE_13_C(BOOST_PP_BOOL(p(14, s)), p, o, s)
23866: #define BOOST_PP_WHILE_14(p,o,s) BOOST_PP_WHILE_14_C(BOOST_PP_BOOL(p(15, s)), p, o, s)
23866: #define BOOST_PP_WHILE_15(p,o,s) BOOST_PP_WHILE_15_C(BOOST_PP_BOOL(p(16, s)), p, o, s)
23866: #define BOOST_PP_WHILE_16(p,o,s) BOOST_PP_WHILE_16_C(BOOST_PP_BOOL(p(17, s)), p, o, s)
23866: #define BOOST_PP_WHILE_17(p,o,s) BOOST_PP_WHILE_17_C(BOOST_PP_BOOL(p(18, s)), p, o, s)
23866: #define BOOST_PP_WHILE_18(p,o,s) BOOST_PP_WHILE_18_C(BOOST_PP_BOOL(p(19, s)), p, o, s)
23866: #define BOOST_PP_WHILE_19(p,o,s) BOOST_PP_WHILE_19_C(BOOST_PP_BOOL(p(20, s)), p, o, s)
23866: #define BOOST_PP_WHILE_20(p,o,s) BOOST_PP_WHILE_20_C(BOOST_PP_BOOL(p(21, s)), p, o, s)
23866: #define BOOST_PP_WHILE_21(p,o,s) BOOST_PP_WHILE_21_C(BOOST_PP_BOOL(p(22, s)), p, o, s)
23866: #define BOOST_PP_WHILE_22(p,o,s) BOOST_PP_WHILE_22_C(BOOST_PP_BOOL(p(23, s)), p, o, s)
23866: #define BOOST_PP_WHILE_23(p,o,s) BOOST_PP_WHILE_23_C(BOOST_PP_BOOL(p(24, s)), p, o, s)
23866: #define BOOST_PP_WHILE_24(p,o,s) BOOST_PP_WHILE_24_C(BOOST_PP_BOOL(p(25, s)), p, o, s)
23866: #define BOOST_PP_WHILE_25(p,o,s) BOOST_PP_WHILE_25_C(BOOST_PP_BOOL(p(26, s)), p, o, s)
23866: #define BOOST_PP_WHILE_26(p,o,s) BOOST_PP_WHILE_26_C(BOOST_PP_BOOL(p(27, s)), p, o, s)
23866: #define BOOST_PP_WHILE_27(p,o,s) BOOST_PP_WHILE_27_C(BOOST_PP_BOOL(p(28, s)), p, o, s)
23866: #define BOOST_PP_WHILE_28(p,o,s) BOOST_PP_WHILE_28_C(BOOST_PP_BOOL(p(29, s)), p, o, s)
23866: #define BOOST_PP_WHILE_29(p,o,s) BOOST_PP_WHILE_29_C(BOOST_PP_BOOL(p(30, s)), p, o, s)
23866: #define BOOST_PP_WHILE_30(p,o,s) BOOST_PP_WHILE_30_C(BOOST_PP_BOOL(p(31, s)), p, o, s)
23866: #define BOOST_PP_WHILE_31(p,o,s) BOOST_PP_WHILE_31_C(BOOST_PP_BOOL(p(32, s)), p, o, s)
23866: #define BOOST_PP_WHILE_32(p,o,s) BOOST_PP_WHILE_32_C(BOOST_PP_BOOL(p(33, s)), p, o, s)
23866: #define BOOST_PP_WHILE_33(p,o,s) BOOST_PP_WHILE_33_C(BOOST_PP_BOOL(p(34, s)), p, o, s)
23866: #define BOOST_PP_WHILE_34(p,o,s) BOOST_PP_WHILE_34_C(BOOST_PP_BOOL(p(35, s)), p, o, s)
23866: #define BOOST_PP_WHILE_35(p,o,s) BOOST_PP_WHILE_35_C(BOOST_PP_BOOL(p(36, s)), p, o, s)
23866: #define BOOST_PP_WHILE_36(p,o,s) BOOST_PP_WHILE_36_C(BOOST_PP_BOOL(p(37, s)), p, o, s)
23866: #define BOOST_PP_WHILE_37(p,o,s) BOOST_PP_WHILE_37_C(BOOST_PP_BOOL(p(38, s)), p, o, s)
23866: #define BOOST_PP_WHILE_38(p,o,s) BOOST_PP_WHILE_38_C(BOOST_PP_BOOL(p(39, s)), p, o, s)
23866: #define BOOST_PP_WHILE_39(p,o,s) BOOST_PP_WHILE_39_C(BOOST_PP_BOOL(p(40, s)), p, o, s)
23866: #define BOOST_PP_WHILE_40(p,o,s) BOOST_PP_WHILE_40_C(BOOST_PP_BOOL(p(41, s)), p, o, s)
23866: #define BOOST_PP_WHILE_41(p,o,s) BOOST_PP_WHILE_41_C(BOOST_PP_BOOL(p(42, s)), p, o, s)
23866: #define BOOST_PP_WHILE_42(p,o,s) BOOST_PP_WHILE_42_C(BOOST_PP_BOOL(p(43, s)), p, o, s)
23866: #define BOOST_PP_WHILE_43(p,o,s) BOOST_PP_WHILE_43_C(BOOST_PP_BOOL(p(44, s)), p, o, s)
23866: #define BOOST_PP_WHILE_44(p,o,s) BOOST_PP_WHILE_44_C(BOOST_PP_BOOL(p(45, s)), p, o, s)
23866: #define BOOST_PP_WHILE_45(p,o,s) BOOST_PP_WHILE_45_C(BOOST_PP_BOOL(p(46, s)), p, o, s)
23866: #define BOOST_PP_WHILE_46(p,o,s) BOOST_PP_WHILE_46_C(BOOST_PP_BOOL(p(47, s)), p, o, s)
23866: #define BOOST_PP_WHILE_47(p,o,s) BOOST_PP_WHILE_47_C(BOOST_PP_BOOL(p(48, s)), p, o, s)
23866: #define BOOST_PP_WHILE_48(p,o,s) BOOST_PP_WHILE_48_C(BOOST_PP_BOOL(p(49, s)), p, o, s)
23866: #define BOOST_PP_WHILE_49(p,o,s) BOOST_PP_WHILE_49_C(BOOST_PP_BOOL(p(50, s)), p, o, s)
23866: #define BOOST_PP_WHILE_50(p,o,s) BOOST_PP_WHILE_50_C(BOOST_PP_BOOL(p(51, s)), p, o, s)
23866: #define BOOST_PP_WHILE_51(p,o,s) BOOST_PP_WHILE_51_C(BOOST_PP_BOOL(p(52, s)), p, o, s)
23866: #define BOOST_PP_WHILE_52(p,o,s) BOOST_PP_WHILE_52_C(BOOST_PP_BOOL(p(53, s)), p, o, s)
23866: #define BOOST_PP_WHILE_53(p,o,s) BOOST_PP_WHILE_53_C(BOOST_PP_BOOL(p(54, s)), p, o, s)
23866: #define BOOST_PP_WHILE_54(p,o,s) BOOST_PP_WHILE_54_C(BOOST_PP_BOOL(p(55, s)), p, o, s)
23866: #define BOOST_PP_WHILE_55(p,o,s) BOOST_PP_WHILE_55_C(BOOST_PP_BOOL(p(56, s)), p, o, s)
23866: #define BOOST_PP_WHILE_56(p,o,s) BOOST_PP_WHILE_56_C(BOOST_PP_BOOL(p(57, s)), p, o, s)
23866: #define BOOST_PP_WHILE_57(p,o,s) BOOST_PP_WHILE_57_C(BOOST_PP_BOOL(p(58, s)), p, o, s)
23866: #define BOOST_PP_WHILE_58(p,o,s) BOOST_PP_WHILE_58_C(BOOST_PP_BOOL(p(59, s)), p, o, s)
23866: #define BOOST_PP_WHILE_59(p,o,s) BOOST_PP_WHILE_59_C(BOOST_PP_BOOL(p(60, s)), p, o, s)
23866: #define BOOST_PP_WHILE_60(p,o,s) BOOST_PP_WHILE_60_C(BOOST_PP_BOOL(p(61, s)), p, o, s)
23866: #define BOOST_PP_WHILE_61(p,o,s) BOOST_PP_WHILE_61_C(BOOST_PP_BOOL(p(62, s)), p, o, s)
23866: #define BOOST_PP_WHILE_62(p,o,s) BOOST_PP_WHILE_62_C(BOOST_PP_BOOL(p(63, s)), p, o, s)
23866: #define BOOST_PP_WHILE_63(p,o,s) BOOST_PP_WHILE_63_C(BOOST_PP_BOOL(p(64, s)), p, o, s)
23866: #define BOOST_PP_WHILE_64(p,o,s) BOOST_PP_WHILE_64_C(BOOST_PP_BOOL(p(65, s)), p, o, s)
23866: #define BOOST_PP_WHILE_65(p,o,s) BOOST_PP_WHILE_65_C(BOOST_PP_BOOL(p(66, s)), p, o, s)
23866: #define BOOST_PP_WHILE_66(p,o,s) BOOST_PP_WHILE_66_C(BOOST_PP_BOOL(p(67, s)), p, o, s)
23866: #define BOOST_PP_WHILE_67(p,o,s) BOOST_PP_WHILE_67_C(BOOST_PP_BOOL(p(68, s)), p, o, s)
23866: #define BOOST_PP_WHILE_68(p,o,s) BOOST_PP_WHILE_68_C(BOOST_PP_BOOL(p(69, s)), p, o, s)
23866: #define BOOST_PP_WHILE_69(p,o,s) BOOST_PP_WHILE_69_C(BOOST_PP_BOOL(p(70, s)), p, o, s)
23866: #define BOOST_PP_WHILE_70(p,o,s) BOOST_PP_WHILE_70_C(BOOST_PP_BOOL(p(71, s)), p, o, s)
23866: #define BOOST_PP_WHILE_71(p,o,s) BOOST_PP_WHILE_71_C(BOOST_PP_BOOL(p(72, s)), p, o, s)
23866: #define BOOST_PP_WHILE_72(p,o,s) BOOST_PP_WHILE_72_C(BOOST_PP_BOOL(p(73, s)), p, o, s)
23866: #define BOOST_PP_WHILE_73(p,o,s) BOOST_PP_WHILE_73_C(BOOST_PP_BOOL(p(74, s)), p, o, s)
23866: #define BOOST_PP_WHILE_74(p,o,s) BOOST_PP_WHILE_74_C(BOOST_PP_BOOL(p(75, s)), p, o, s)
23866: #define BOOST_PP_WHILE_75(p,o,s) BOOST_PP_WHILE_75_C(BOOST_PP_BOOL(p(76, s)), p, o, s)
23866: #define BOOST_PP_WHILE_76(p,o,s) BOOST_PP_WHILE_76_C(BOOST_PP_BOOL(p(77, s)), p, o, s)
23866: #define BOOST_PP_WHILE_77(p,o,s) BOOST_PP_WHILE_77_C(BOOST_PP_BOOL(p(78, s)), p, o, s)
23866: #define BOOST_PP_WHILE_78(p,o,s) BOOST_PP_WHILE_78_C(BOOST_PP_BOOL(p(79, s)), p, o, s)
23866: #define BOOST_PP_WHILE_79(p,o,s) BOOST_PP_WHILE_79_C(BOOST_PP_BOOL(p(80, s)), p, o, s)
23866: #define BOOST_PP_WHILE_80(p,o,s) BOOST_PP_WHILE_80_C(BOOST_PP_BOOL(p(81, s)), p, o, s)
23866: #define BOOST_PP_WHILE_81(p,o,s) BOOST_PP_WHILE_81_C(BOOST_PP_BOOL(p(82, s)), p, o, s)
23866: #define BOOST_PP_WHILE_82(p,o,s) BOOST_PP_WHILE_82_C(BOOST_PP_BOOL(p(83, s)), p, o, s)
23866: #define BOOST_PP_WHILE_83(p,o,s) BOOST_PP_WHILE_83_C(BOOST_PP_BOOL(p(84, s)), p, o, s)
23866: #define BOOST_PP_WHILE_84(p,o,s) BOOST_PP_WHILE_84_C(BOOST_PP_BOOL(p(85, s)), p, o, s)
23866: #define BOOST_PP_WHILE_85(p,o,s) BOOST_PP_WHILE_85_C(BOOST_PP_BOOL(p(86, s)), p, o, s)
23866: #define BOOST_PP_WHILE_86(p,o,s) BOOST_PP_WHILE_86_C(BOOST_PP_BOOL(p(87, s)), p, o, s)
23866: #define BOOST_PP_WHILE_87(p,o,s) BOOST_PP_WHILE_87_C(BOOST_PP_BOOL(p(88, s)), p, o, s)
23866: #define BOOST_PP_WHILE_88(p,o,s) BOOST_PP_WHILE_88_C(BOOST_PP_BOOL(p(89, s)), p, o, s)
23866: #define BOOST_PP_WHILE_89(p,o,s) BOOST_PP_WHILE_89_C(BOOST_PP_BOOL(p(90, s)), p, o, s)
23866: #define BOOST_PP_WHILE_90(p,o,s) BOOST_PP_WHILE_90_C(BOOST_PP_BOOL(p(91, s)), p, o, s)
23866: #define BOOST_PP_WHILE_91(p,o,s) BOOST_PP_WHILE_91_C(BOOST_PP_BOOL(p(92, s)), p, o, s)
23866: #define BOOST_PP_WHILE_92(p,o,s) BOOST_PP_WHILE_92_C(BOOST_PP_BOOL(p(93, s)), p, o, s)
23866: #define BOOST_PP_WHILE_93(p,o,s) BOOST_PP_WHILE_93_C(BOOST_PP_BOOL(p(94, s)), p, o, s)
23866: #define BOOST_PP_WHILE_94(p,o,s) BOOST_PP_WHILE_94_C(BOOST_PP_BOOL(p(95, s)), p, o, s)
23866: #define BOOST_PP_WHILE_95(p,o,s) BOOST_PP_WHILE_95_C(BOOST_PP_BOOL(p(96, s)), p, o, s)
23866: #define BOOST_PP_WHILE_96(p,o,s) BOOST_PP_WHILE_96_C(BOOST_PP_BOOL(p(97, s)), p, o, s)
23866: #define BOOST_PP_WHILE_97(p,o,s) BOOST_PP_WHILE_97_C(BOOST_PP_BOOL(p(98, s)), p, o, s)
23866: #define BOOST_PP_WHILE_98(p,o,s) BOOST_PP_WHILE_98_C(BOOST_PP_BOOL(p(99, s)), p, o, s)
23866: #define BOOST_PP_WHILE_99(p,o,s) BOOST_PP_WHILE_99_C(BOOST_PP_BOOL(p(100, s)), p, o, s)
23866: #define BOOST_PP_WHILE_100(p,o,s) BOOST_PP_WHILE_100_C(BOOST_PP_BOOL(p(101, s)), p, o, s)
23866: #define BOOST_PP_WHILE_101(p,o,s) BOOST_PP_WHILE_101_C(BOOST_PP_BOOL(p(102, s)), p, o, s)
23866: #define BOOST_PP_WHILE_102(p,o,s) BOOST_PP_WHILE_102_C(BOOST_PP_BOOL(p(103, s)), p, o, s)
23866: #define BOOST_PP_WHILE_103(p,o,s) BOOST_PP_WHILE_103_C(BOOST_PP_BOOL(p(104, s)), p, o, s)
23866: #define BOOST_PP_WHILE_104(p,o,s) BOOST_PP_WHILE_104_C(BOOST_PP_BOOL(p(105, s)), p, o, s)
23866: #define BOOST_PP_WHILE_105(p,o,s) BOOST_PP_WHILE_105_C(BOOST_PP_BOOL(p(106, s)), p, o, s)
23866: #define BOOST_PP_WHILE_106(p,o,s) BOOST_PP_WHILE_106_C(BOOST_PP_BOOL(p(107, s)), p, o, s)
23866: #define BOOST_PP_WHILE_107(p,o,s) BOOST_PP_WHILE_107_C(BOOST_PP_BOOL(p(108, s)), p, o, s)
23866: #define BOOST_PP_WHILE_108(p,o,s) BOOST_PP_WHILE_108_C(BOOST_PP_BOOL(p(109, s)), p, o, s)
23866: #define BOOST_PP_WHILE_109(p,o,s) BOOST_PP_WHILE_109_C(BOOST_PP_BOOL(p(110, s)), p, o, s)
23866: #define BOOST_PP_WHILE_110(p,o,s) BOOST_PP_WHILE_110_C(BOOST_PP_BOOL(p(111, s)), p, o, s)
23866: #define BOOST_PP_WHILE_111(p,o,s) BOOST_PP_WHILE_111_C(BOOST_PP_BOOL(p(112, s)), p, o, s)
23866: #define BOOST_PP_WHILE_112(p,o,s) BOOST_PP_WHILE_112_C(BOOST_PP_BOOL(p(113, s)), p, o, s)
23866: #define BOOST_PP_WHILE_113(p,o,s) BOOST_PP_WHILE_113_C(BOOST_PP_BOOL(p(114, s)), p, o, s)
23866: #define BOOST_PP_WHILE_114(p,o,s) BOOST_PP_WHILE_114_C(BOOST_PP_BOOL(p(115, s)), p, o, s)
23866: #define BOOST_PP_WHILE_115(p,o,s) BOOST_PP_WHILE_115_C(BOOST_PP_BOOL(p(116, s)), p, o, s)
23866: #define BOOST_PP_WHILE_116(p,o,s) BOOST_PP_WHILE_116_C(BOOST_PP_BOOL(p(117, s)), p, o, s)
23866: #define BOOST_PP_WHILE_117(p,o,s) BOOST_PP_WHILE_117_C(BOOST_PP_BOOL(p(118, s)), p, o, s)
23866: #define BOOST_PP_WHILE_118(p,o,s) BOOST_PP_WHILE_118_C(BOOST_PP_BOOL(p(119, s)), p, o, s)
23866: #define BOOST_PP_WHILE_119(p,o,s) BOOST_PP_WHILE_119_C(BOOST_PP_BOOL(p(120, s)), p, o, s)
23866: #define BOOST_PP_WHILE_120(p,o,s) BOOST_PP_WHILE_120_C(BOOST_PP_BOOL(p(121, s)), p, o, s)
23866: #define BOOST_PP_WHILE_121(p,o,s) BOOST_PP_WHILE_121_C(BOOST_PP_BOOL(p(122, s)), p, o, s)
23866: #define BOOST_PP_WHILE_122(p,o,s) BOOST_PP_WHILE_122_C(BOOST_PP_BOOL(p(123, s)), p, o, s)
23866: #define BOOST_PP_WHILE_123(p,o,s) BOOST_PP_WHILE_123_C(BOOST_PP_BOOL(p(124, s)), p, o, s)
23866: #define BOOST_PP_WHILE_124(p,o,s) BOOST_PP_WHILE_124_C(BOOST_PP_BOOL(p(125, s)), p, o, s)
23866: #define BOOST_PP_WHILE_125(p,o,s) BOOST_PP_WHILE_125_C(BOOST_PP_BOOL(p(126, s)), p, o, s)
23866: #define BOOST_PP_WHILE_126(p,o,s) BOOST_PP_WHILE_126_C(BOOST_PP_BOOL(p(127, s)), p, o, s)
23866: #define BOOST_PP_WHILE_127(p,o,s) BOOST_PP_WHILE_127_C(BOOST_PP_BOOL(p(128, s)), p, o, s)
23866: #define BOOST_PP_WHILE_128(p,o,s) BOOST_PP_WHILE_128_C(BOOST_PP_BOOL(p(129, s)), p, o, s)
23866: #define BOOST_PP_WHILE_129(p,o,s) BOOST_PP_WHILE_129_C(BOOST_PP_BOOL(p(130, s)), p, o, s)
23866: #define BOOST_PP_WHILE_130(p,o,s) BOOST_PP_WHILE_130_C(BOOST_PP_BOOL(p(131, s)), p, o, s)
23866: #define BOOST_PP_WHILE_131(p,o,s) BOOST_PP_WHILE_131_C(BOOST_PP_BOOL(p(132, s)), p, o, s)
23866: #define BOOST_PP_WHILE_132(p,o,s) BOOST_PP_WHILE_132_C(BOOST_PP_BOOL(p(133, s)), p, o, s)
23866: #define BOOST_PP_WHILE_133(p,o,s) BOOST_PP_WHILE_133_C(BOOST_PP_BOOL(p(134, s)), p, o, s)
23866: #define BOOST_PP_WHILE_134(p,o,s) BOOST_PP_WHILE_134_C(BOOST_PP_BOOL(p(135, s)), p, o, s)
23866: #define BOOST_PP_WHILE_135(p,o,s) BOOST_PP_WHILE_135_C(BOOST_PP_BOOL(p(136, s)), p, o, s)
23866: #define BOOST_PP_WHILE_136(p,o,s) BOOST_PP_WHILE_136_C(BOOST_PP_BOOL(p(137, s)), p, o, s)
23866: #define BOOST_PP_WHILE_137(p,o,s) BOOST_PP_WHILE_137_C(BOOST_PP_BOOL(p(138, s)), p, o, s)
23866: #define BOOST_PP_WHILE_138(p,o,s) BOOST_PP_WHILE_138_C(BOOST_PP_BOOL(p(139, s)), p, o, s)
23866: #define BOOST_PP_WHILE_139(p,o,s) BOOST_PP_WHILE_139_C(BOOST_PP_BOOL(p(140, s)), p, o, s)
23866: #define BOOST_PP_WHILE_140(p,o,s) BOOST_PP_WHILE_140_C(BOOST_PP_BOOL(p(141, s)), p, o, s)
23866: #define BOOST_PP_WHILE_141(p,o,s) BOOST_PP_WHILE_141_C(BOOST_PP_BOOL(p(142, s)), p, o, s)
23866: #define BOOST_PP_WHILE_142(p,o,s) BOOST_PP_WHILE_142_C(BOOST_PP_BOOL(p(143, s)), p, o, s)
23866: #define BOOST_PP_WHILE_143(p,o,s) BOOST_PP_WHILE_143_C(BOOST_PP_BOOL(p(144, s)), p, o, s)
23866: #define BOOST_PP_WHILE_144(p,o,s) BOOST_PP_WHILE_144_C(BOOST_PP_BOOL(p(145, s)), p, o, s)
23866: #define BOOST_PP_WHILE_145(p,o,s) BOOST_PP_WHILE_145_C(BOOST_PP_BOOL(p(146, s)), p, o, s)
23866: #define BOOST_PP_WHILE_146(p,o,s) BOOST_PP_WHILE_146_C(BOOST_PP_BOOL(p(147, s)), p, o, s)
23866: #define BOOST_PP_WHILE_147(p,o,s) BOOST_PP_WHILE_147_C(BOOST_PP_BOOL(p(148, s)), p, o, s)
23866: #define BOOST_PP_WHILE_148(p,o,s) BOOST_PP_WHILE_148_C(BOOST_PP_BOOL(p(149, s)), p, o, s)
23866: #define BOOST_PP_WHILE_149(p,o,s) BOOST_PP_WHILE_149_C(BOOST_PP_BOOL(p(150, s)), p, o, s)
23866: #define BOOST_PP_WHILE_150(p,o,s) BOOST_PP_WHILE_150_C(BOOST_PP_BOOL(p(151, s)), p, o, s)
23866: #define BOOST_PP_WHILE_151(p,o,s) BOOST_PP_WHILE_151_C(BOOST_PP_BOOL(p(152, s)), p, o, s)
23866: #define BOOST_PP_WHILE_152(p,o,s) BOOST_PP_WHILE_152_C(BOOST_PP_BOOL(p(153, s)), p, o, s)
23866: #define BOOST_PP_WHILE_153(p,o,s) BOOST_PP_WHILE_153_C(BOOST_PP_BOOL(p(154, s)), p, o, s)
23866: #define BOOST_PP_WHILE_154(p,o,s) BOOST_PP_WHILE_154_C(BOOST_PP_BOOL(p(155, s)), p, o, s)
23866: #define BOOST_PP_WHILE_155(p,o,s) BOOST_PP_WHILE_155_C(BOOST_PP_BOOL(p(156, s)), p, o, s)
23866: #define BOOST_PP_WHILE_156(p,o,s) BOOST_PP_WHILE_156_C(BOOST_PP_BOOL(p(157, s)), p, o, s)
23866: #define BOOST_PP_WHILE_157(p,o,s) BOOST_PP_WHILE_157_C(BOOST_PP_BOOL(p(158, s)), p, o, s)
23866: #define BOOST_PP_WHILE_158(p,o,s) BOOST_PP_WHILE_158_C(BOOST_PP_BOOL(p(159, s)), p, o, s)
23866: #define BOOST_PP_WHILE_159(p,o,s) BOOST_PP_WHILE_159_C(BOOST_PP_BOOL(p(160, s)), p, o, s)
23866: #define BOOST_PP_WHILE_160(p,o,s) BOOST_PP_WHILE_160_C(BOOST_PP_BOOL(p(161, s)), p, o, s)
23866: #define BOOST_PP_WHILE_161(p,o,s) BOOST_PP_WHILE_161_C(BOOST_PP_BOOL(p(162, s)), p, o, s)
23866: #define BOOST_PP_WHILE_162(p,o,s) BOOST_PP_WHILE_162_C(BOOST_PP_BOOL(p(163, s)), p, o, s)
23866: #define BOOST_PP_WHILE_163(p,o,s) BOOST_PP_WHILE_163_C(BOOST_PP_BOOL(p(164, s)), p, o, s)
23866: #define BOOST_PP_WHILE_164(p,o,s) BOOST_PP_WHILE_164_C(BOOST_PP_BOOL(p(165, s)), p, o, s)
23866: #define BOOST_PP_WHILE_165(p,o,s) BOOST_PP_WHILE_165_C(BOOST_PP_BOOL(p(166, s)), p, o, s)
23866: #define BOOST_PP_WHILE_166(p,o,s) BOOST_PP_WHILE_166_C(BOOST_PP_BOOL(p(167, s)), p, o, s)
23866: #define BOOST_PP_WHILE_167(p,o,s) BOOST_PP_WHILE_167_C(BOOST_PP_BOOL(p(168, s)), p, o, s)
23866: #define BOOST_PP_WHILE_168(p,o,s) BOOST_PP_WHILE_168_C(BOOST_PP_BOOL(p(169, s)), p, o, s)
23866: #define BOOST_PP_WHILE_169(p,o,s) BOOST_PP_WHILE_169_C(BOOST_PP_BOOL(p(170, s)), p, o, s)
23866: #define BOOST_PP_WHILE_170(p,o,s) BOOST_PP_WHILE_170_C(BOOST_PP_BOOL(p(171, s)), p, o, s)
23866: #define BOOST_PP_WHILE_171(p,o,s) BOOST_PP_WHILE_171_C(BOOST_PP_BOOL(p(172, s)), p, o, s)
23866: #define BOOST_PP_WHILE_172(p,o,s) BOOST_PP_WHILE_172_C(BOOST_PP_BOOL(p(173, s)), p, o, s)
23866: #define BOOST_PP_WHILE_173(p,o,s) BOOST_PP_WHILE_173_C(BOOST_PP_BOOL(p(174, s)), p, o, s)
23866: #define BOOST_PP_WHILE_174(p,o,s) BOOST_PP_WHILE_174_C(BOOST_PP_BOOL(p(175, s)), p, o, s)
23866: #define BOOST_PP_WHILE_175(p,o,s) BOOST_PP_WHILE_175_C(BOOST_PP_BOOL(p(176, s)), p, o, s)
23866: #define BOOST_PP_WHILE_176(p,o,s) BOOST_PP_WHILE_176_C(BOOST_PP_BOOL(p(177, s)), p, o, s)
23866: #define BOOST_PP_WHILE_177(p,o,s) BOOST_PP_WHILE_177_C(BOOST_PP_BOOL(p(178, s)), p, o, s)
23866: #define BOOST_PP_WHILE_178(p,o,s) BOOST_PP_WHILE_178_C(BOOST_PP_BOOL(p(179, s)), p, o, s)
23866: #define BOOST_PP_WHILE_179(p,o,s) BOOST_PP_WHILE_179_C(BOOST_PP_BOOL(p(180, s)), p, o, s)
23866: #define BOOST_PP_WHILE_180(p,o,s) BOOST_PP_WHILE_180_C(BOOST_PP_BOOL(p(181, s)), p, o, s)
23866: #define BOOST_PP_WHILE_181(p,o,s) BOOST_PP_WHILE_181_C(BOOST_PP_BOOL(p(182, s)), p, o, s)
23866: #define BOOST_PP_WHILE_182(p,o,s) BOOST_PP_WHILE_182_C(BOOST_PP_BOOL(p(183, s)), p, o, s)
23866: #define BOOST_PP_WHILE_183(p,o,s) BOOST_PP_WHILE_183_C(BOOST_PP_BOOL(p(184, s)), p, o, s)
23866: #define BOOST_PP_WHILE_184(p,o,s) BOOST_PP_WHILE_184_C(BOOST_PP_BOOL(p(185, s)), p, o, s)
23866: #define BOOST_PP_WHILE_185(p,o,s) BOOST_PP_WHILE_185_C(BOOST_PP_BOOL(p(186, s)), p, o, s)
23866: #define BOOST_PP_WHILE_186(p,o,s) BOOST_PP_WHILE_186_C(BOOST_PP_BOOL(p(187, s)), p, o, s)
23866: #define BOOST_PP_WHILE_187(p,o,s) BOOST_PP_WHILE_187_C(BOOST_PP_BOOL(p(188, s)), p, o, s)
23866: #define BOOST_PP_WHILE_188(p,o,s) BOOST_PP_WHILE_188_C(BOOST_PP_BOOL(p(189, s)), p, o, s)
23866: #define BOOST_PP_WHILE_189(p,o,s) BOOST_PP_WHILE_189_C(BOOST_PP_BOOL(p(190, s)), p, o, s)
23866: #define BOOST_PP_WHILE_190(p,o,s) BOOST_PP_WHILE_190_C(BOOST_PP_BOOL(p(191, s)), p, o, s)
23866: #define BOOST_PP_WHILE_191(p,o,s) BOOST_PP_WHILE_191_C(BOOST_PP_BOOL(p(192, s)), p, o, s)
23866: #define BOOST_PP_WHILE_192(p,o,s) BOOST_PP_WHILE_192_C(BOOST_PP_BOOL(p(193, s)), p, o, s)
23866: #define BOOST_PP_WHILE_193(p,o,s) BOOST_PP_WHILE_193_C(BOOST_PP_BOOL(p(194, s)), p, o, s)
23866: #define BOOST_PP_WHILE_194(p,o,s) BOOST_PP_WHILE_194_C(BOOST_PP_BOOL(p(195, s)), p, o, s)
23866: #define BOOST_PP_WHILE_195(p,o,s) BOOST_PP_WHILE_195_C(BOOST_PP_BOOL(p(196, s)), p, o, s)
23866: #define BOOST_PP_WHILE_196(p,o,s) BOOST_PP_WHILE_196_C(BOOST_PP_BOOL(p(197, s)), p, o, s)
23866: #define BOOST_PP_WHILE_197(p,o,s) BOOST_PP_WHILE_197_C(BOOST_PP_BOOL(p(198, s)), p, o, s)
23866: #define BOOST_PP_WHILE_198(p,o,s) BOOST_PP_WHILE_198_C(BOOST_PP_BOOL(p(199, s)), p, o, s)
23866: #define BOOST_PP_WHILE_199(p,o,s) BOOST_PP_WHILE_199_C(BOOST_PP_BOOL(p(200, s)), p, o, s)
23866: #define BOOST_PP_WHILE_200(p,o,s) BOOST_PP_WHILE_200_C(BOOST_PP_BOOL(p(201, s)), p, o, s)
23866: #define BOOST_PP_WHILE_201(p,o,s) BOOST_PP_WHILE_201_C(BOOST_PP_BOOL(p(202, s)), p, o, s)
23866: #define BOOST_PP_WHILE_202(p,o,s) BOOST_PP_WHILE_202_C(BOOST_PP_BOOL(p(203, s)), p, o, s)
23866: #define BOOST_PP_WHILE_203(p,o,s) BOOST_PP_WHILE_203_C(BOOST_PP_BOOL(p(204, s)), p, o, s)
23866: #define BOOST_PP_WHILE_204(p,o,s) BOOST_PP_WHILE_204_C(BOOST_PP_BOOL(p(205, s)), p, o, s)
23866: #define BOOST_PP_WHILE_205(p,o,s) BOOST_PP_WHILE_205_C(BOOST_PP_BOOL(p(206, s)), p, o, s)
23866: #define BOOST_PP_WHILE_206(p,o,s) BOOST_PP_WHILE_206_C(BOOST_PP_BOOL(p(207, s)), p, o, s)
23866: #define BOOST_PP_WHILE_207(p,o,s) BOOST_PP_WHILE_207_C(BOOST_PP_BOOL(p(208, s)), p, o, s)
23866: #define BOOST_PP_WHILE_208(p,o,s) BOOST_PP_WHILE_208_C(BOOST_PP_BOOL(p(209, s)), p, o, s)
23866: #define BOOST_PP_WHILE_209(p,o,s) BOOST_PP_WHILE_209_C(BOOST_PP_BOOL(p(210, s)), p, o, s)
23866: #define BOOST_PP_WHILE_210(p,o,s) BOOST_PP_WHILE_210_C(BOOST_PP_BOOL(p(211, s)), p, o, s)
23866: #define BOOST_PP_WHILE_211(p,o,s) BOOST_PP_WHILE_211_C(BOOST_PP_BOOL(p(212, s)), p, o, s)
23866: #define BOOST_PP_WHILE_212(p,o,s) BOOST_PP_WHILE_212_C(BOOST_PP_BOOL(p(213, s)), p, o, s)
23866: #define BOOST_PP_WHILE_213(p,o,s) BOOST_PP_WHILE_213_C(BOOST_PP_BOOL(p(214, s)), p, o, s)
23866: #define BOOST_PP_WHILE_214(p,o,s) BOOST_PP_WHILE_214_C(BOOST_PP_BOOL(p(215, s)), p, o, s)
23866: #define BOOST_PP_WHILE_215(p,o,s) BOOST_PP_WHILE_215_C(BOOST_PP_BOOL(p(216, s)), p, o, s)
23866: #define BOOST_PP_WHILE_216(p,o,s) BOOST_PP_WHILE_216_C(BOOST_PP_BOOL(p(217, s)), p, o, s)
23866: #define BOOST_PP_WHILE_217(p,o,s) BOOST_PP_WHILE_217_C(BOOST_PP_BOOL(p(218, s)), p, o, s)
23866: #define BOOST_PP_WHILE_218(p,o,s) BOOST_PP_WHILE_218_C(BOOST_PP_BOOL(p(219, s)), p, o, s)
23866: #define BOOST_PP_WHILE_219(p,o,s) BOOST_PP_WHILE_219_C(BOOST_PP_BOOL(p(220, s)), p, o, s)
23866: #define BOOST_PP_WHILE_220(p,o,s) BOOST_PP_WHILE_220_C(BOOST_PP_BOOL(p(221, s)), p, o, s)
23866: #define BOOST_PP_WHILE_221(p,o,s) BOOST_PP_WHILE_221_C(BOOST_PP_BOOL(p(222, s)), p, o, s)
23866: #define BOOST_PP_WHILE_222(p,o,s) BOOST_PP_WHILE_222_C(BOOST_PP_BOOL(p(223, s)), p, o, s)
23866: #define BOOST_PP_WHILE_223(p,o,s) BOOST_PP_WHILE_223_C(BOOST_PP_BOOL(p(224, s)), p, o, s)
23866: #define BOOST_PP_WHILE_224(p,o,s) BOOST_PP_WHILE_224_C(BOOST_PP_BOOL(p(225, s)), p, o, s)
23866: #define BOOST_PP_WHILE_225(p,o,s) BOOST_PP_WHILE_225_C(BOOST_PP_BOOL(p(226, s)), p, o, s)
23866: #define BOOST_PP_WHILE_226(p,o,s) BOOST_PP_WHILE_226_C(BOOST_PP_BOOL(p(227, s)), p, o, s)
23866: #define BOOST_PP_WHILE_227(p,o,s) BOOST_PP_WHILE_227_C(BOOST_PP_BOOL(p(228, s)), p, o, s)
23866: #define BOOST_PP_WHILE_228(p,o,s) BOOST_PP_WHILE_228_C(BOOST_PP_BOOL(p(229, s)), p, o, s)
23866: #define BOOST_PP_WHILE_229(p,o,s) BOOST_PP_WHILE_229_C(BOOST_PP_BOOL(p(230, s)), p, o, s)
23866: #define BOOST_PP_WHILE_230(p,o,s) BOOST_PP_WHILE_230_C(BOOST_PP_BOOL(p(231, s)), p, o, s)
23866: #define BOOST_PP_WHILE_231(p,o,s) BOOST_PP_WHILE_231_C(BOOST_PP_BOOL(p(232, s)), p, o, s)
23866: #define BOOST_PP_WHILE_232(p,o,s) BOOST_PP_WHILE_232_C(BOOST_PP_BOOL(p(233, s)), p, o, s)
23866: #define BOOST_PP_WHILE_233(p,o,s) BOOST_PP_WHILE_233_C(BOOST_PP_BOOL(p(234, s)), p, o, s)
23866: #define BOOST_PP_WHILE_234(p,o,s) BOOST_PP_WHILE_234_C(BOOST_PP_BOOL(p(235, s)), p, o, s)
23866: #define BOOST_PP_WHILE_235(p,o,s) BOOST_PP_WHILE_235_C(BOOST_PP_BOOL(p(236, s)), p, o, s)
23866: #define BOOST_PP_WHILE_236(p,o,s) BOOST_PP_WHILE_236_C(BOOST_PP_BOOL(p(237, s)), p, o, s)
23866: #define BOOST_PP_WHILE_237(p,o,s) BOOST_PP_WHILE_237_C(BOOST_PP_BOOL(p(238, s)), p, o, s)
23866: #define BOOST_PP_WHILE_238(p,o,s) BOOST_PP_WHILE_238_C(BOOST_PP_BOOL(p(239, s)), p, o, s)
23866: #define BOOST_PP_WHILE_239(p,o,s) BOOST_PP_WHILE_239_C(BOOST_PP_BOOL(p(240, s)), p, o, s)
23866: #define BOOST_PP_WHILE_240(p,o,s) BOOST_PP_WHILE_240_C(BOOST_PP_BOOL(p(241, s)), p, o, s)
23866: #define BOOST_PP_WHILE_241(p,o,s) BOOST_PP_WHILE_241_C(BOOST_PP_BOOL(p(242, s)), p, o, s)
23866: #define BOOST_PP_WHILE_242(p,o,s) BOOST_PP_WHILE_242_C(BOOST_PP_BOOL(p(243, s)), p, o, s)
23866: #define BOOST_PP_WHILE_243(p,o,s) BOOST_PP_WHILE_243_C(BOOST_PP_BOOL(p(244, s)), p, o, s)
23866: #define BOOST_PP_WHILE_244(p,o,s) BOOST_PP_WHILE_244_C(BOOST_PP_BOOL(p(245, s)), p, o, s)
23866: #define BOOST_PP_WHILE_245(p,o,s) BOOST_PP_WHILE_245_C(BOOST_PP_BOOL(p(246, s)), p, o, s)
23866: #define BOOST_PP_WHILE_246(p,o,s) BOOST_PP_WHILE_246_C(BOOST_PP_BOOL(p(247, s)), p, o, s)
23866: #define BOOST_PP_WHILE_247(p,o,s) BOOST_PP_WHILE_247_C(BOOST_PP_BOOL(p(248, s)), p, o, s)
23866: #define BOOST_PP_WHILE_248(p,o,s) BOOST_PP_WHILE_248_C(BOOST_PP_BOOL(p(249, s)), p, o, s)
23866: #define BOOST_PP_WHILE_249(p,o,s) BOOST_PP_WHILE_249_C(BOOST_PP_BOOL(p(250, s)), p, o, s)
23866: #define BOOST_PP_WHILE_250(p,o,s) BOOST_PP_WHILE_250_C(BOOST_PP_BOOL(p(251, s)), p, o, s)
23866: #define BOOST_PP_WHILE_251(p,o,s) BOOST_PP_WHILE_251_C(BOOST_PP_BOOL(p(252, s)), p, o, s)
23866: #define BOOST_PP_WHILE_252(p,o,s) BOOST_PP_WHILE_252_C(BOOST_PP_BOOL(p(253, s)), p, o, s)
23866: #define BOOST_PP_WHILE_253(p,o,s) BOOST_PP_WHILE_253_C(BOOST_PP_BOOL(p(254, s)), p, o, s)
23866: #define BOOST_PP_WHILE_254(p,o,s) BOOST_PP_WHILE_254_C(BOOST_PP_BOOL(p(255, s)), p, o, s)
23866: #define BOOST_PP_WHILE_255(p,o,s) BOOST_PP_WHILE_255_C(BOOST_PP_BOOL(p(256, s)), p, o, s)
23866: #define BOOST_PP_WHILE_256(p,o,s) BOOST_PP_WHILE_256_C(BOOST_PP_BOOL(p(257, s)), p, o, s)
23866:
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: # 49 "/usr/include/boost/preprocessor/control/while.hpp" 2 3 4
23866:
23866:
23866: #define BOOST_PP_WHILE_257(p,o,s) BOOST_PP_ERROR(0x0001)
23866:
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_NIL 1
23866:
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_2(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_3(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_4(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_5(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_6(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_7(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_8(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_9(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_10(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_11(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_12(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_13(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_14(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_15(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_16(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_17(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_18(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_19(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_20(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_21(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_22(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_23(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_24(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_25(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_26(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_27(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_28(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_29(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_30(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_31(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_32(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_33(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_34(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_35(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_36(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_37(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_38(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_39(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_40(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_41(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_42(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_43(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_44(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_45(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_46(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_47(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_48(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_49(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_50(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_51(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_52(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_53(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_54(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_55(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_56(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_57(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_58(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_59(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_60(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_61(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_62(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_63(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_64(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_65(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_66(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_67(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_68(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_69(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_70(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_71(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_72(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_73(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_74(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_75(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_76(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_77(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_78(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_79(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_80(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_81(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_82(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_83(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_84(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_85(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_86(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_87(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_88(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_89(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_90(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_91(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_92(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_93(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_94(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_95(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_96(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_97(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_98(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_99(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_100(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_101(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_102(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_103(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_104(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_105(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_106(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_107(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_108(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_109(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_110(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_111(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_112(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_113(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_114(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_115(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_116(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_117(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_118(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_119(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_120(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_121(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_122(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_123(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_124(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_125(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_126(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_127(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_128(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_129(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_130(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_131(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_132(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_133(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_134(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_135(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_136(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_137(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_138(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_139(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_140(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_141(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_142(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_143(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_144(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_145(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_146(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_147(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_148(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_149(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_150(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_151(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_152(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_153(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_154(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_155(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_156(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_157(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_158(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_159(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_160(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_161(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_162(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_163(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_164(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_165(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_166(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_167(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_168(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_169(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_170(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_171(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_172(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_173(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_174(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_175(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_176(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_177(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_178(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_179(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_180(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_181(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_182(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_183(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_184(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_185(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_186(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_187(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_188(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_189(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_190(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_191(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_192(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_193(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_194(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_195(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_196(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_197(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_198(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_199(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_200(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_201(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_202(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_203(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_204(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_205(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_206(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_207(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_208(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_209(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_210(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_211(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_212(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_213(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_214(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_215(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_216(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_217(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_218(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_219(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_220(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_221(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_222(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_223(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_224(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_225(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_226(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_227(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_228(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_229(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_230(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_231(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_232(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_233(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_234(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_235(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_236(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_237(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_238(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_239(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_240(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_241(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_242(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_243(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_244(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_245(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_246(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_247(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_248(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_249(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_250(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_251(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_252(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_253(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_254(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_255(p,o,s) 0
23866: #define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_256(p,o,s) 0
23866: # 21 "/usr/include/boost/preprocessor/arithmetic/add.hpp" 2 3 4
23866: # 1 "/usr/include/boost/preprocessor/tuple/elem.hpp" 1 3 4
23866: # 16 "/usr/include/boost/preprocessor/tuple/elem.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_TUPLE_ELEM_HPP
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/facilities/expand.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/facilities/expand.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_FACILITIES_EXPAND_HPP
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_EXPAND(x) BOOST_PP_EXPAND_I(x)
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_EXPAND_I(x) x
23866: # 21 "/usr/include/boost/preprocessor/tuple/elem.hpp" 2 3 4
23866: # 1 "/usr/include/boost/preprocessor/facilities/overload.hpp" 1 3 4
23866: # 14 "/usr/include/boost/preprocessor/facilities/overload.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_FACILITIES_OVERLOAD_HPP
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/variadic/size.hpp" 1 3 4
23866: # 14 "/usr/include/boost/preprocessor/variadic/size.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_VARIADIC_SIZE_HPP
23866: # 25 "/usr/include/boost/preprocessor/variadic/size.hpp" 3 4
23866: #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,)
23866:
23866: #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
23866: # 18 "/usr/include/boost/preprocessor/facilities/overload.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_OVERLOAD(prefix,...) BOOST_PP_CAT(prefix, BOOST_PP_VARIADIC_SIZE(__VA_ARGS__))
23866: # 22 "/usr/include/boost/preprocessor/tuple/elem.hpp" 2 3 4
23866: # 1 "/usr/include/boost/preprocessor/tuple/rem.hpp" 1 3 4
23866: # 14 "/usr/include/boost/preprocessor/tuple/rem.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_TUPLE_REM_HPP
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/tuple/detail/is_single_return.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/tuple/detail/is_single_return.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_TUPLE_DETAIL_IS_SINGLE_RETURN_HPP
23866: # 21 "/usr/include/boost/preprocessor/tuple/rem.hpp" 2 3 4
23866: # 29 "/usr/include/boost/preprocessor/tuple/rem.hpp" 3 4
23866: #define BOOST_PP_REM(...) __VA_ARGS__
23866: # 44 "/usr/include/boost/preprocessor/tuple/rem.hpp" 3 4
23866: #define BOOST_PP_TUPLE_REM(size) BOOST_PP_REM
23866: # 54 "/usr/include/boost/preprocessor/tuple/rem.hpp" 3 4
23866: #define BOOST_PP_TUPLE_REM_0()
23866: #define BOOST_PP_TUPLE_REM_1(e0) e0
23866: #define BOOST_PP_TUPLE_REM_2(e0,e1) e0, e1
23866: #define BOOST_PP_TUPLE_REM_3(e0,e1,e2) e0, e1, e2
23866: #define BOOST_PP_TUPLE_REM_4(e0,e1,e2,e3) e0, e1, e2, e3
23866: #define BOOST_PP_TUPLE_REM_5(e0,e1,e2,e3,e4) e0, e1, e2, e3, e4
23866: #define BOOST_PP_TUPLE_REM_6(e0,e1,e2,e3,e4,e5) e0, e1, e2, e3, e4, e5
23866: #define BOOST_PP_TUPLE_REM_7(e0,e1,e2,e3,e4,e5,e6) e0, e1, e2, e3, e4, e5, e6
23866: #define BOOST_PP_TUPLE_REM_8(e0,e1,e2,e3,e4,e5,e6,e7) e0, e1, e2, e3, e4, e5, e6, e7
23866: #define BOOST_PP_TUPLE_REM_9(e0,e1,e2,e3,e4,e5,e6,e7,e8) e0, e1, e2, e3, e4, e5, e6, e7, e8
23866: #define BOOST_PP_TUPLE_REM_10(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9
23866: #define BOOST_PP_TUPLE_REM_11(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: #define BOOST_PP_TUPLE_REM_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
23866: # 129 "/usr/include/boost/preprocessor/tuple/rem.hpp" 3 4
23866: #define BOOST_PP_TUPLE_REM_CTOR(...) BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_REM_CTOR_O_, __VA_ARGS__)(__VA_ARGS__)
23866: #define BOOST_PP_TUPLE_REM_CTOR_O_1(tuple) BOOST_PP_REM tuple
23866:
23866: #define BOOST_PP_TUPLE_REM_CTOR_O_2(size,tuple) BOOST_PP_TUPLE_REM_CTOR_O_1(tuple)
23866: # 23 "/usr/include/boost/preprocessor/tuple/elem.hpp" 2 3 4
23866: # 1 "/usr/include/boost/preprocessor/variadic/elem.hpp" 1 3 4
23866: # 14 "/usr/include/boost/preprocessor/variadic/elem.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_VARIADIC_ELEM_HPP
23866: # 26 "/usr/include/boost/preprocessor/variadic/elem.hpp" 3 4
23866: #define BOOST_PP_VARIADIC_ELEM(n,...) BOOST_PP_CAT(BOOST_PP_VARIADIC_ELEM_, n)(__VA_ARGS__,)
23866:
23866: #define BOOST_PP_VARIADIC_ELEM_0(e0,...) e0
23866: #define BOOST_PP_VARIADIC_ELEM_1(e0,e1,...) e1
23866: #define BOOST_PP_VARIADIC_ELEM_2(e0,e1,e2,...) e2
23866: #define BOOST_PP_VARIADIC_ELEM_3(e0,e1,e2,e3,...) e3
23866: #define BOOST_PP_VARIADIC_ELEM_4(e0,e1,e2,e3,e4,...) e4
23866: #define BOOST_PP_VARIADIC_ELEM_5(e0,e1,e2,e3,e4,e5,...) e5
23866: #define BOOST_PP_VARIADIC_ELEM_6(e0,e1,e2,e3,e4,e5,e6,...) e6
23866: #define BOOST_PP_VARIADIC_ELEM_7(e0,e1,e2,e3,e4,e5,e6,e7,...) e7
23866: #define BOOST_PP_VARIADIC_ELEM_8(e0,e1,e2,e3,e4,e5,e6,e7,e8,...) e8
23866: #define BOOST_PP_VARIADIC_ELEM_9(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,...) e9
23866: #define BOOST_PP_VARIADIC_ELEM_10(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,...) e10
23866: #define BOOST_PP_VARIADIC_ELEM_11(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,...) e11
23866: #define BOOST_PP_VARIADIC_ELEM_12(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,...) e12
23866: #define BOOST_PP_VARIADIC_ELEM_13(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,...) e13
23866: #define BOOST_PP_VARIADIC_ELEM_14(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,...) e14
23866: #define BOOST_PP_VARIADIC_ELEM_15(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15,...) e15
23866: #define BOOST_PP_VARIADIC_ELEM_16(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15,e16,...) e16
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: #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
23866: # 24 "/usr/include/boost/preprocessor/tuple/elem.hpp" 2 3 4
23866: # 40 "/usr/include/boost/preprocessor/tuple/elem.hpp" 3 4
23866: #define BOOST_PP_TUPLE_ELEM(...) BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_ELEM_O_, __VA_ARGS__)(__VA_ARGS__)
23866: #define BOOST_PP_TUPLE_ELEM_O_2(n,tuple) BOOST_PP_VARIADIC_ELEM(n, BOOST_PP_REM tuple)
23866:
23866: #define BOOST_PP_TUPLE_ELEM_O_3(size,n,tuple) BOOST_PP_TUPLE_ELEM_O_2(n, tuple)
23866: # 192 "/usr/include/boost/preprocessor/tuple/elem.hpp" 3 4
23866: #define BOOST_PP_TUPLE_ELEM_1_0(a) a
23866:
23866: #define BOOST_PP_TUPLE_ELEM_2_0(a,b) a
23866: #define BOOST_PP_TUPLE_ELEM_2_1(a,b) b
23866:
23866: #define BOOST_PP_TUPLE_ELEM_3_0(a,b,c) a
23866: #define BOOST_PP_TUPLE_ELEM_3_1(a,b,c) b
23866: #define BOOST_PP_TUPLE_ELEM_3_2(a,b,c) c
23866: # 22 "/usr/include/boost/preprocessor/arithmetic/add.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_ADD(x,y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_ADD_P, BOOST_PP_ADD_O, (x, y)))
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_ADD_P(d,xy) BOOST_PP_TUPLE_ELEM(2, 1, xy)
23866:
23866:
23866: #define BOOST_PP_ADD_O(d,xy) BOOST_PP_ADD_O_I xy
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_ADD_O_I(x,y) (BOOST_PP_INC(x), BOOST_PP_DEC(y))
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_ADD_D(d,x,y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_ADD_P, BOOST_PP_ADD_O, (x, y)))
23866: # 67 "/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp" 2 3 4
23866: # 1 "/usr/include/boost/preprocessor/arithmetic/sub.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/arithmetic/sub.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_ARITHMETIC_SUB_HPP
23866: # 25 "/usr/include/boost/preprocessor/arithmetic/sub.hpp" 3 4
23866: #define BOOST_PP_SUB(x,y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_SUB_P, BOOST_PP_SUB_O, (x, y)))
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_SUB_P(d,xy) BOOST_PP_TUPLE_ELEM(2, 1, xy)
23866:
23866:
23866: #define BOOST_PP_SUB_O(d,xy) BOOST_PP_SUB_O_I xy
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_SUB_O_I(x,y) (BOOST_PP_DEC(x), BOOST_PP_DEC(y))
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_SUB_D(d,x,y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_SUB_P, BOOST_PP_SUB_O, (x, y)))
23866: # 68 "/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_PP_AUX_TAIL_PARAM_FUNC(unused,i,op) , BOOST_PP_CAT( BOOST_PP_TUPLE_ELEM(3, 1, op) , BOOST_PP_ADD_D(1, i, BOOST_PP_INC(BOOST_PP_TUPLE_ELEM(3, 0, op))) ) BOOST_PP_TUPLE_ELEM(3, 2, op)()
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i,param,value_func) BOOST_PP_REPEAT( BOOST_PP_SUB_D(1, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, i) , BOOST_MPL_PP_AUX_TAIL_PARAM_FUNC , (i, param, value_func) )
23866: # 91 "/usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp" 3 4
23866: #define BOOST_MPL_PP_DEF_PARAMS_TAIL(i,param,value) BOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param, BOOST_PP_IDENTITY(=value))
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(i,param,value) BOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param, BOOST_PP_IDENTITY(=value))
23866: # 29 "/usr/include/boost/mpl/aux_/na_spec.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/config/eti.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CONFIG_ETI_HPP_INCLUDED
23866: # 32 "/usr/include/boost/mpl/aux_/na_spec.hpp" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/config/overload_resolution.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CONFIG_OVERLOAD_RESOLUTION_HPP_INCLUDED
23866: # 36 "/usr/include/boost/mpl/aux_/na_spec.hpp" 2 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_NA_PARAMS(i) BOOST_MPL_PP_ENUM(i, na)
23866: # 56 "/usr/include/boost/mpl/aux_/na_spec.hpp" 3 4
23866: #define BOOST_MPL_AUX_NA_SPEC_ARITY(i,name)
23866:
23866:
23866: #define BOOST_MPL_AUX_NA_SPEC_MAIN(i,name) template<> struct name< BOOST_MPL_AUX_NA_PARAMS(i) > { template< BOOST_MPL_PP_PARAMS(i, typename T) BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(i, typename T, na) > struct apply : name< BOOST_MPL_PP_PARAMS(i, T) > { }; };
23866: # 98 "/usr/include/boost/mpl/aux_/na_spec.hpp" 3 4
23866: #define BOOST_MPL_AUX_NA_SPEC_LAMBDA(i,name) template< typename Tag > struct lambda< name< BOOST_MPL_AUX_NA_PARAMS(i) > , Tag BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(int_<-1>) > { typedef false_ is_le; typedef name< BOOST_MPL_AUX_NA_PARAMS(i) > result_; typedef name< BOOST_MPL_AUX_NA_PARAMS(i) > type; };
23866: # 116 "/usr/include/boost/mpl/aux_/na_spec.hpp" 3 4
23866: #define BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(i,j,name) namespace aux { template< BOOST_MPL_PP_PARAMS(j, typename T) > struct template_arity< name< BOOST_MPL_PP_PARAMS(j, T) > > : int_<j> { }; template<> struct template_arity< name< BOOST_MPL_PP_ENUM(i, na) > > : int_<-1> { }; }
23866: # 149 "/usr/include/boost/mpl/aux_/na_spec.hpp" 3 4
23866: #define BOOST_MPL_AUX_NA_SPEC_ETI(i,name)
23866:
23866:
23866: #define BOOST_MPL_AUX_NA_PARAM(param) param = na
23866:
23866: #define BOOST_MPL_AUX_NA_SPEC_NO_ETI(i,name) BOOST_MPL_AUX_NA_SPEC_MAIN(i, name) BOOST_MPL_AUX_NA_SPEC_LAMBDA(i, name) BOOST_MPL_AUX_NA_SPEC_ARITY(i, name) BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(i, i, name)
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_AUX_NA_SPEC(i,name) BOOST_MPL_AUX_NA_SPEC_NO_ETI(i, name) BOOST_MPL_AUX_NA_SPEC_ETI(i, name)
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_AUX_NA_SPEC2(i,j,name) BOOST_MPL_AUX_NA_SPEC_MAIN(i, name) BOOST_MPL_AUX_NA_SPEC_ETI(i, name) BOOST_MPL_AUX_NA_SPEC_LAMBDA(i, name) BOOST_MPL_AUX_NA_SPEC_ARITY(i, name) BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(i, j, name)
23866: # 21 "/usr/include/boost/mpl/has_xxx.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/type_wrapper.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_TYPE_WRAPPER_HPP_INCLUDED
23866: # 20 "/usr/include/boost/mpl/aux_/type_wrapper.hpp" 3 4
23866: namespace boost { namespace mpl { namespace aux {
23866:
23866: template< typename T > struct type_wrapper
23866: {
23866: typedef T type;
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template< typename T > struct wrapped_type;
23866:
23866: template< typename T > struct wrapped_type< type_wrapper<T> >
23866: {
23866: typedef T type;
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: }}}
23866: # 22 "/usr/include/boost/mpl/has_xxx.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/yes_no.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_YES_NO_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/aux_/yes_no.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/config/arrays.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CONFIG_ARRAYS_HPP_INCLUDED
23866: # 19 "/usr/include/boost/mpl/aux_/yes_no.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: namespace boost { namespace mpl { namespace aux {
23866:
23866: typedef char (&no_tag)[1];
23866: typedef char (&yes_tag)[2];
23866:
23866: template< bool C_ > struct yes_no_tag
23866: {
23866: typedef no_tag type;
23866: };
23866:
23866: template<> struct yes_no_tag<true>
23866: {
23866: typedef yes_tag type;
23866: };
23866:
23866:
23866: template< long n > struct weighted_tag
23866: {
23866:
23866: typedef char (&type)[n];
23866:
23866:
23866:
23866:
23866: };
23866: # 56 "/usr/include/boost/mpl/aux_/yes_no.hpp" 3 4
23866: }}}
23866: # 23 "/usr/include/boost/mpl/has_xxx.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/config/has_xxx.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CONFIG_HAS_XXX_HPP_INCLUDED
23866: # 25 "/usr/include/boost/mpl/has_xxx.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/config/msvc_typename.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CONFIG_MSVC_TYPENAME_HPP_INCLUDED
23866: # 23 "/usr/include/boost/mpl/aux_/config/msvc_typename.hpp" 3 4
23866: #define BOOST_MSVC_TYPENAME typename
23866: # 26 "/usr/include/boost/mpl/has_xxx.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/array/elem.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/array/elem.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_ARRAY_ELEM_HPP
23866:
23866: # 1 "/usr/include/boost/preprocessor/array/data.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/array/data.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_ARRAY_DATA_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_ARRAY_DATA(array) BOOST_PP_TUPLE_ELEM(2, 1, array)
23866: # 16 "/usr/include/boost/preprocessor/array/elem.hpp" 2 3 4
23866: # 1 "/usr/include/boost/preprocessor/array/size.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/array/size.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_ARRAY_SIZE_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_ARRAY_SIZE(array) BOOST_PP_TUPLE_ELEM(2, 0, array)
23866: # 17 "/usr/include/boost/preprocessor/array/elem.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_ARRAY_ELEM(i,array) BOOST_PP_TUPLE_ELEM(BOOST_PP_ARRAY_SIZE(array), i, BOOST_PP_ARRAY_DATA(array))
23866: # 31 "/usr/include/boost/mpl/has_xxx.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/repetition/enum_params.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/repetition/enum_params.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_REPETITION_ENUM_PARAMS_HPP
23866: # 24 "/usr/include/boost/preprocessor/repetition/enum_params.hpp" 3 4
23866: #define BOOST_PP_ENUM_PARAMS(count,param) BOOST_PP_REPEAT(count, BOOST_PP_ENUM_PARAMS_M, param)
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_ENUM_PARAMS_M(z,n,param) BOOST_PP_COMMA_IF(n) param ## n
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_ENUM_PARAMS_Z(z,count,param) BOOST_PP_REPEAT_ ## z(count, BOOST_PP_ENUM_PARAMS_M, param)
23866: # 34 "/usr/include/boost/mpl/has_xxx.hpp" 2 3 4
23866: # 1 "/usr/include/boost/preprocessor/repetition/enum_trailing_params.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/repetition/enum_trailing_params.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_REPETITION_ENUM_TRAILING_PARAMS_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_ENUM_TRAILING_PARAMS(count,param) BOOST_PP_REPEAT(count, BOOST_PP_ENUM_TRAILING_PARAMS_M, param)
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_ENUM_TRAILING_PARAMS_M(z,n,param) , param ## n
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_ENUM_TRAILING_PARAMS_Z(z,count,param) BOOST_PP_REPEAT_ ## z(count, BOOST_PP_ENUM_TRAILING_PARAMS_M, param)
23866: # 35 "/usr/include/boost/mpl/has_xxx.hpp" 2 3 4
23866: # 236 "/usr/include/boost/mpl/has_xxx.hpp" 3 4
23866: #define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait,name,default_) template< typename T, typename fallback_ = boost::mpl::bool_<default_> > struct trait { struct gcc_3_2_wknd { template< typename U > static boost::mpl::aux::yes_tag test( boost::mpl::aux::type_wrapper<U> const volatile* , boost::mpl::aux::type_wrapper<BOOST_MSVC_TYPENAME U::name>* = 0 ); static boost::mpl::aux::no_tag test(...); }; typedef boost::mpl::aux::type_wrapper<T> t_; BOOST_STATIC_CONSTANT(bool, value = sizeof(gcc_3_2_wknd::test(static_cast<t_*>(0))) == sizeof(boost::mpl::aux::yes_tag) ); typedef boost::mpl::bool_<value> type; };
23866: # 278 "/usr/include/boost/mpl/has_xxx.hpp" 3 4
23866: #define BOOST_MPL_HAS_XXX_TRAIT_DEF(name) BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(BOOST_PP_CAT(has_,name), name, false)
23866: # 295 "/usr/include/boost/mpl/has_xxx.hpp" 3 4
23866: #define BOOST_MPL_HAS_XXX_NO_WRAPPED_TYPES 0
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_HAS_XXX_NO_EXPLICIT_TEST_FUNCTION 0
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_HAS_XXX_NEEDS_TEMPLATE_SFINAE 0
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args) BOOST_PP_CAT(BOOST_PP_ARRAY_ELEM(0, args) , _introspect)
23866:
23866:
23866:
23866: #define BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME(args,n) BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_ARRAY_ELEM(0, args) , _substitute), n)
23866:
23866:
23866:
23866: #define BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args) BOOST_PP_CAT(BOOST_PP_ARRAY_ELEM(0, args) , _test)
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_HAS_MEMBER_MULTI_SUBSTITUTE(z,n,args) template< template< BOOST_PP_ENUM_PARAMS(BOOST_PP_INC(n), typename V) > class V > struct BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME(args, n) { };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_HAS_MEMBER_SUBSTITUTE(args,substitute_macro) BOOST_PP_REPEAT( BOOST_PP_ARRAY_ELEM(2, args) , BOOST_MPL_HAS_MEMBER_MULTI_SUBSTITUTE , args )
23866: # 352 "/usr/include/boost/mpl/has_xxx.hpp" 3 4
23866: #define BOOST_MPL_HAS_MEMBER_REJECT(args,member_macro) template< typename V > static boost::mpl::aux::no_tag BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)(...);
23866: # 365 "/usr/include/boost/mpl/has_xxx.hpp" 3 4
23866: #define BOOST_MPL_HAS_MEMBER_MULTI_ACCEPT(z,n,args) template< typename V > static boost::mpl::aux::yes_tag BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)( boost::mpl::aux::type_wrapper< V > const volatile* , BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME(args, n) < V::template BOOST_PP_ARRAY_ELEM(1, args) >* = 0 );
23866: # 375 "/usr/include/boost/mpl/has_xxx.hpp" 3 4
23866: #define BOOST_MPL_HAS_MEMBER_ACCEPT(args,member_macro) BOOST_PP_REPEAT( BOOST_PP_ARRAY_ELEM(2, args) , BOOST_MPL_HAS_MEMBER_MULTI_ACCEPT , args )
23866: # 394 "/usr/include/boost/mpl/has_xxx.hpp" 3 4
23866: #define BOOST_MPL_HAS_MEMBER_TEST(args) sizeof(BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)< U >(0)) == sizeof(boost::mpl::aux::yes_tag)
23866: # 418 "/usr/include/boost/mpl/has_xxx.hpp" 3 4
23866: #define BOOST_MPL_HAS_MEMBER_INTROSPECT(args,substitute_macro,member_macro) template< typename U > struct BOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args) { BOOST_MPL_HAS_MEMBER_SUBSTITUTE(args, substitute_macro) BOOST_MPL_HAS_MEMBER_REJECT(args, member_macro) BOOST_MPL_HAS_MEMBER_ACCEPT(args, member_macro) BOOST_STATIC_CONSTANT( bool, value = BOOST_MPL_HAS_MEMBER_TEST(args) ); typedef boost::mpl::bool_< value > type; };
23866: # 433 "/usr/include/boost/mpl/has_xxx.hpp" 3 4
23866: #define BOOST_MPL_HAS_MEMBER_IMPLEMENTATION(args,introspect_macro,substitute_macro,member_macro) template< typename T , typename fallback_ = boost::mpl::bool_< BOOST_PP_ARRAY_ELEM(3, args) > > class BOOST_PP_ARRAY_ELEM(0, args) { introspect_macro(args, substitute_macro, member_macro) public: static const bool value = BOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args)< T >::value; typedef typename BOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args)< T >::type type; };
23866: # 455 "/usr/include/boost/mpl/has_xxx.hpp" 3 4
23866: #define BOOST_MPL_HAS_MEMBER_WITH_FUNCTION_SFINAE(args,substitute_macro,member_macro) BOOST_MPL_HAS_MEMBER_IMPLEMENTATION( args , BOOST_MPL_HAS_MEMBER_INTROSPECT , substitute_macro , member_macro )
23866: # 609 "/usr/include/boost/mpl/has_xxx.hpp" 3 4
23866: #define BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF(trait,name,default_) BOOST_MPL_HAS_MEMBER_WITH_FUNCTION_SFINAE( ( 4, ( trait, name, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, default_ ) ) , BOOST_MPL_HAS_MEMBER_TEMPLATE_SUBSTITUTE_PARAMETER , BOOST_MPL_HAS_MEMBER_TEMPLATE_ACCESS )
23866: # 641 "/usr/include/boost/mpl/has_xxx.hpp" 3 4
23866: #define BOOST_MPL_HAS_XXX_TEMPLATE_DEF(name) BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF( BOOST_PP_CAT(has_, name), name, false )
23866: # 20 "/usr/include/boost/range/detail/extract_optional_type.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_RANGE_EXTRACT_OPTIONAL_TYPE(a_typedef) BOOST_MPL_HAS_XXX_TRAIT_DEF(a_typedef) template< typename C, bool B = BOOST_PP_CAT(has_, a_typedef)<C>::value > struct BOOST_PP_CAT(extract_, a_typedef) {}; template< typename C > struct BOOST_PP_CAT(extract_, a_typedef)< C, true > { typedef BOOST_DEDUCED_TYPENAME C::a_typedef type; };
23866: # 22 "/usr/include/boost/range/mutable_iterator.hpp" 2 3 4
23866: # 1 "/usr/include/boost/type_traits/remove_reference.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/remove_reference.hpp" 3 4
23866: #define BOOST_TT_REMOVE_REFERENCE_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866: namespace boost {
23866:
23866:
23866: namespace detail{
23866:
23866:
23866:
23866:
23866: template <class T>
23866: struct remove_rvalue_ref
23866: {
23866: typedef T type;
23866: };
23866:
23866: template <class T>
23866: struct remove_rvalue_ref<T&&>
23866: {
23866: typedef T type;
23866: };
23866:
23866:
23866: }
23866:
23866: template <class T> struct remove_reference{ typedef typename boost::detail::remove_rvalue_ref<T>::type type; };
23866: template <class T> struct remove_reference<T&>{ typedef T type; };
23866: # 53 "/usr/include/boost/type_traits/remove_reference.hpp" 3 4
23866: template <class T> using remove_reference_t = typename remove_reference<T>::type;
23866:
23866:
23866:
23866: }
23866: # 23 "/usr/include/boost/range/mutable_iterator.hpp" 2 3 4
23866: # 1 "/usr/include/boost/iterator/iterator_traits.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866: #define ITERATOR_TRAITS_DWA200347_HPP
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace iterators {
23866:
23866:
23866:
23866: #define BOOST_ITERATOR_CATEGORY iterator_category
23866:
23866:
23866: template <class Iterator>
23866: struct iterator_value
23866: {
23866: typedef typename std::iterator_traits<Iterator>::value_type type;
23866: };
23866:
23866: template <class Iterator>
23866: struct iterator_reference
23866: {
23866: typedef typename std::iterator_traits<Iterator>::reference type;
23866: };
23866:
23866:
23866: template <class Iterator>
23866: struct iterator_pointer
23866: {
23866: typedef typename std::iterator_traits<Iterator>::pointer type;
23866: };
23866:
23866: template <class Iterator>
23866: struct iterator_difference
23866: {
23866: typedef typename std::iterator_traits<Iterator>::difference_type type;
23866: };
23866:
23866: template <class Iterator>
23866: struct iterator_category
23866: {
23866: typedef typename std::iterator_traits<Iterator>::iterator_category type;
23866: };
23866:
23866: }
23866:
23866: using iterators::iterator_value;
23866: using iterators::iterator_reference;
23866: using iterators::iterator_pointer;
23866: using iterators::iterator_difference;
23866: using iterators::iterator_category;
23866:
23866: }
23866: # 24 "/usr/include/boost/range/mutable_iterator.hpp" 2 3 4
23866:
23866:
23866:
23866: namespace boost
23866: {
23866:
23866:
23866:
23866:
23866:
23866: namespace range_detail
23866: {
23866:
23866: template< typename T, typename fallback_ = boost::mpl::bool_<false> > struct has_iterator { struct gcc_3_2_wknd { template< typename U > static boost::mpl::aux::yes_tag test( boost::mpl::aux::type_wrapper<U> const volatile* , boost::mpl::aux::type_wrapper<typename U::iterator>* = 0 ); static boost::mpl::aux::no_tag test(...); }; typedef boost::mpl::aux::type_wrapper<T> t_; static const bool value = sizeof(gcc_3_2_wknd::test(static_cast<t_*>(0))) == sizeof(boost::mpl::aux::yes_tag); typedef boost::mpl::bool_<value> type; }; template< typename C, bool B = has_iterator<C>::value > struct extract_iterator {}; template< typename C > struct extract_iterator< C, true > { typedef typename C::iterator type; };
23866:
23866: template< typename C >
23866: struct range_mutable_iterator
23866: : range_detail::extract_iterator<
23866: typename remove_reference<C>::type>
23866: {};
23866:
23866:
23866:
23866:
23866:
23866: template< typename Iterator >
23866: struct range_mutable_iterator< std::pair<Iterator,Iterator> >
23866: {
23866: typedef Iterator type;
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template< typename T, std::size_t sz >
23866: struct range_mutable_iterator< T[sz] >
23866: {
23866: typedef T* type;
23866: };
23866:
23866: }
23866:
23866: template<typename C, typename Enabler=void>
23866: struct range_mutable_iterator
23866: : range_detail::range_mutable_iterator<
23866: typename remove_reference<C>::type
23866: >
23866: {
23866: };
23866:
23866: }
23866:
23866: # 1 "/usr/include/boost/range/detail/msvc_has_iterator_workaround.hpp" 1 3 4
23866: # 12 "/usr/include/boost/range/detail/msvc_has_iterator_workaround.hpp" 3 4
23866: #define BOOST_RANGE_DETAIL_MSVC_HAS_ITERATOR_WORKAROUND_HPP
23866: # 78 "/usr/include/boost/range/mutable_iterator.hpp" 2 3 4
23866: # 21 "/usr/include/boost/range/iterator.hpp" 2 3 4
23866: # 1 "/usr/include/boost/range/const_iterator.hpp" 1 3 4
23866: # 12 "/usr/include/boost/range/const_iterator.hpp" 3 4
23866: #define BOOST_RANGE_CONST_ITERATOR_HPP
23866: # 22 "/usr/include/boost/range/const_iterator.hpp" 3 4
23866: # 1 "/usr/include/boost/type_traits/remove_const.hpp" 1 3 4
23866: # 12 "/usr/include/boost/type_traits/remove_const.hpp" 3 4
23866: #define BOOST_TT_REMOVE_CONST_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866:
23866:
23866: template <class T> struct remove_const{ typedef T type; };
23866: template <class T> struct remove_const<T const>{ typedef T type; };
23866:
23866:
23866: template <class T, std::size_t N> struct remove_const<T const[N]>{ typedef T type[N]; };
23866:
23866: template <class T> struct remove_const<T const[]>{ typedef T type[]; };
23866:
23866:
23866:
23866:
23866:
23866: template <class T> using remove_const_t = typename remove_const<T>::type;
23866:
23866:
23866:
23866: }
23866: # 23 "/usr/include/boost/range/const_iterator.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: namespace boost
23866: {
23866:
23866:
23866:
23866:
23866: namespace range_detail
23866: {
23866:
23866: template< typename T, typename fallback_ = boost::mpl::bool_<false> > struct has_const_iterator { struct gcc_3_2_wknd { template< typename U > static boost::mpl::aux::yes_tag test( boost::mpl::aux::type_wrapper<U> const volatile* , boost::mpl::aux::type_wrapper<typename U::const_iterator>* = 0 ); static boost::mpl::aux::no_tag test(...); }; typedef boost::mpl::aux::type_wrapper<T> t_; static const bool value = sizeof(gcc_3_2_wknd::test(static_cast<t_*>(0))) == sizeof(boost::mpl::aux::yes_tag); typedef boost::mpl::bool_<value> type; }; template< typename C, bool B = has_const_iterator<C>::value > struct extract_const_iterator {}; template< typename C > struct extract_const_iterator< C, true > { typedef typename C::const_iterator type; };
23866:
23866: template< typename C >
23866: struct range_const_iterator_helper
23866: : extract_const_iterator<C>
23866: {};
23866:
23866:
23866:
23866:
23866:
23866: template< typename Iterator >
23866: struct range_const_iterator_helper<std::pair<Iterator,Iterator> >
23866: {
23866: typedef Iterator type;
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template< typename T, std::size_t sz >
23866: struct range_const_iterator_helper< T[sz] >
23866: {
23866: typedef const T* type;
23866: };
23866:
23866: }
23866:
23866: template<typename C, typename Enabler=void>
23866: struct range_const_iterator
23866: : range_detail::range_const_iterator_helper<
23866: typename remove_reference<C>::type
23866: >
23866: {
23866: };
23866:
23866: }
23866: # 22 "/usr/include/boost/range/iterator.hpp" 2 3 4
23866: # 1 "/usr/include/boost/type_traits/is_const.hpp" 1 3 4
23866: # 22 "/usr/include/boost/type_traits/is_const.hpp" 3 4
23866: #define BOOST_TT_IS_CONST_HPP_INCLUDED
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/integral_constant.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_TYPE_TRAITS_INTEGRAL_CONSTANT_HPP
23866: # 31 "/usr/include/boost/type_traits/integral_constant.hpp" 3 4
23866: namespace mpl_{
23866:
23866: template <bool B> struct bool_;
23866: template <class I, I val> struct integral_c;
23866: struct integral_c_tag;
23866: }
23866:
23866: namespace boost
23866: {
23866: namespace mpl
23866: {
23866: using ::mpl_::bool_;
23866: using ::mpl_::integral_c;
23866: using ::mpl_::integral_c_tag;
23866: }
23866: }
23866:
23866:
23866:
23866: namespace boost{
23866:
23866: template <class T, T val>
23866: struct integral_constant
23866: {
23866: typedef mpl::integral_c_tag tag;
23866: typedef T value_type;
23866: typedef integral_constant<T, val> type;
23866: static const T value = val;
23866:
23866: operator const mpl::integral_c<T, val>& ()const
23866: {
23866: static const char data[sizeof(long)] = { 0 };
23866: static const void* pdata = data;
23866: return *(reinterpret_cast<const mpl::integral_c<T, val>*>(pdata));
23866: }
23866: constexpr operator T()const { return val; }
23866: };
23866:
23866: template <class T, T val>
23866: T const integral_constant<T, val>::value;
23866:
23866: template <bool val>
23866: struct integral_constant<bool, val>
23866: {
23866: typedef mpl::integral_c_tag tag;
23866: typedef bool value_type;
23866: typedef integral_constant<bool, val> type;
23866: static const bool value = val;
23866:
23866: operator const mpl::bool_<val>& ()const
23866: {
23866: static const char data[sizeof(long)] = { 0 };
23866: static const void* pdata = data;
23866: return *(reinterpret_cast<const mpl::bool_<val>*>(pdata));
23866: }
23866: constexpr operator bool()const { return val; }
23866: };
23866:
23866: template <bool val>
23866: bool const integral_constant<bool, val>::value;
23866:
23866: typedef integral_constant<bool, true> true_type;
23866: typedef integral_constant<bool, false> false_type;
23866:
23866: }
23866: # 26 "/usr/include/boost/type_traits/is_const.hpp" 2 3 4
23866:
23866: namespace boost {
23866: # 36 "/usr/include/boost/type_traits/is_const.hpp" 3 4
23866: template <class T>
23866: struct is_const : public false_type {};
23866: template <class T> struct is_const<T const> : public true_type{};
23866: template <class T, std::size_t N> struct is_const<T const[N]> : public true_type{};
23866: template <class T> struct is_const<T const[]> : public true_type{};
23866:
23866:
23866:
23866: }
23866: # 23 "/usr/include/boost/range/iterator.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/mpl/eval_if.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_EVAL_IF_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/eval_if.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/if.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_IF_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/if.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/value_wknd.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_VALUE_WKND_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/aux_/value_wknd.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/config/integral.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CONFIG_INTEGRAL_HPP_INCLUDED
23866: # 19 "/usr/include/boost/mpl/aux_/value_wknd.hpp" 2 3 4
23866: # 57 "/usr/include/boost/mpl/aux_/value_wknd.hpp" 3 4
23866: #define BOOST_MPL_AUX_VALUE_WKND(C) C
23866: #define BOOST_MPL_AUX_MSVC_VALUE_WKND(C) C
23866: # 67 "/usr/include/boost/mpl/aux_/value_wknd.hpp" 3 4
23866: #define BOOST_MPL_AUX_NESTED_VALUE_WKND(T,C) BOOST_MPL_AUX_VALUE_WKND(C)::value
23866:
23866:
23866:
23866:
23866:
23866: namespace boost { namespace mpl { namespace aux {
23866:
23866: template< typename T > struct value_type_wknd
23866: {
23866: typedef typename T::value_type type;
23866: };
23866: # 87 "/usr/include/boost/mpl/aux_/value_wknd.hpp" 3 4
23866: }}}
23866: # 18 "/usr/include/boost/mpl/if.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/lambda_support.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_LAMBDA_SUPPORT_HPP_INCLUDED
23866: # 21 "/usr/include/boost/mpl/aux_/lambda_support.hpp" 3 4
23866: #define BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i,name,params)
23866: #define BOOST_MPL_AUX_LAMBDA_SUPPORT(i,name,params)
23866: # 21 "/usr/include/boost/mpl/if.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866:
23866:
23866: template<
23866: bool C
23866: , typename T1
23866: , typename T2
23866: >
23866: struct if_c
23866: {
23866: typedef T1 type;
23866: };
23866:
23866: template<
23866: typename T1
23866: , typename T2
23866: >
23866: struct if_c<false,T1,T2>
23866: {
23866: typedef T2 type;
23866: };
23866:
23866:
23866:
23866: template<
23866: typename T1 = na
23866: , typename T2 = na
23866: , typename T3 = na
23866: >
23866: struct if_
23866: {
23866: private:
23866:
23866: typedef if_c<
23866:
23866:
23866:
23866: static_cast<bool>(T1::value)
23866:
23866: , T2
23866: , T3
23866: > almost_type_;
23866:
23866: public:
23866: typedef typename almost_type_::type type;
23866:
23866:
23866: };
23866: # 131 "/usr/include/boost/mpl/if.hpp" 3 4
23866: template<> struct if_< na , na , na > { template< typename T1 , typename T2 , typename T3 , typename T4 =na , typename T5 =na > struct apply : if_< T1 , T2 , T3 > { }; }; template< typename Tag > struct lambda< if_< na , na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef if_< na , na , na > result_; typedef if_< na , na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 > struct template_arity< if_< T1 , T2 , T3 > > : int_<3> { }; template<> struct template_arity< if_< na , na , na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 18 "/usr/include/boost/mpl/eval_if.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename C = na
23866: , typename F1 = na
23866: , typename F2 = na
23866: >
23866: struct eval_if
23866:
23866:
23866:
23866:
23866: {
23866: typedef typename if_<C,F1,F2>::type f_;
23866: typedef typename f_::type type;
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866:
23866:
23866: template<
23866: bool C
23866: , typename F1
23866: , typename F2
23866: >
23866: struct eval_if_c
23866:
23866:
23866:
23866:
23866: {
23866: typedef typename if_c<C,F1,F2>::type f_;
23866: typedef typename f_::type type;
23866:
23866:
23866:
23866:
23866: };
23866:
23866: template<> struct eval_if< na , na , na > { template< typename T1 , typename T2 , typename T3 , typename T4 =na , typename T5 =na > struct apply : eval_if< T1 , T2 , T3 > { }; }; template< typename Tag > struct lambda< eval_if< na , na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef eval_if< na , na , na > result_; typedef eval_if< na , na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 > struct template_arity< eval_if< T1 , T2 , T3 > > : int_<3> { }; template<> struct template_arity< eval_if< na , na , na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 25 "/usr/include/boost/range/iterator.hpp" 2 3 4
23866:
23866: namespace boost
23866: {
23866: # 60 "/usr/include/boost/range/iterator.hpp" 3 4
23866: template< typename C, typename Enabler=void >
23866: struct range_iterator
23866: : mpl::if_c<
23866: is_const<typename remove_reference<C>::type>::value,
23866: range_const_iterator<typename remove_const<typename remove_reference<C>::type>::type>,
23866: range_mutable_iterator<typename remove_reference<C>::type>
23866: >::type
23866: {
23866: };
23866:
23866:
23866:
23866: }
23866: # 21 "/usr/include/boost/range/begin.hpp" 2 3 4
23866:
23866:
23866:
23866: namespace boost
23866: {
23866:
23866:
23866: namespace range_detail
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: template< typename C >
23866: constexpr inline typename range_iterator<C>::type
23866: range_begin( C& c )
23866: {
23866:
23866:
23866:
23866:
23866:
23866: return c.begin();
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template< typename Iterator >
23866: constexpr inline Iterator range_begin( const std::pair<Iterator,Iterator>& p )
23866: {
23866: return p.first;
23866: }
23866:
23866: template< typename Iterator >
23866: constexpr inline Iterator range_begin( std::pair<Iterator,Iterator>& p )
23866: {
23866: return p.first;
23866: }
23866: # 71 "/usr/include/boost/range/begin.hpp" 3 4
23866: template< typename T, std::size_t sz >
23866: constexpr inline const T* range_begin( const T (&a)[sz] ) noexcept
23866: {
23866: return a;
23866: }
23866:
23866: template< typename T, std::size_t sz >
23866: constexpr inline T* range_begin( T (&a)[sz] ) noexcept
23866: {
23866: return a;
23866: }
23866:
23866:
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866: namespace range_adl_barrier
23866: {
23866:
23866: template< class T >
23866:
23866: constexpr
23866:
23866: inline typename range_iterator<T>::type begin( T& r )
23866: {
23866:
23866: using namespace range_detail;
23866:
23866: return range_begin( r );
23866: }
23866:
23866: template< class T >
23866:
23866: constexpr
23866:
23866: inline typename range_iterator<const T>::type begin( const T& r )
23866: {
23866:
23866: using namespace range_detail;
23866:
23866: return range_begin( r );
23866: }
23866:
23866: }
23866: }
23866:
23866: namespace boost
23866: {
23866: namespace range_adl_barrier
23866: {
23866: template< class T >
23866: inline typename range_iterator<const T>::type
23866: const_begin( const T& r )
23866: {
23866: return boost::range_adl_barrier::begin( r );
23866: }
23866: }
23866:
23866: using namespace range_adl_barrier;
23866: }
23866: # 17 "/usr/include/boost/algorithm/string/trim.hpp" 2 3 4
23866: # 1 "/usr/include/boost/range/end.hpp" 1 3 4
23866: # 12 "/usr/include/boost/range/end.hpp" 3 4
23866: #define BOOST_RANGE_END_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/range/detail/implementation_help.hpp" 1 3 4
23866: # 12 "/usr/include/boost/range/detail/implementation_help.hpp" 3 4
23866: #define BOOST_RANGE_DETAIL_IMPLEMENTATION_HELP_HPP
23866:
23866:
23866: # 1 "/usr/include/boost/range/detail/common.hpp" 1 3 4
23866: # 12 "/usr/include/boost/range/detail/common.hpp" 3 4
23866: #define BOOST_RANGE_DETAIL_COMMON_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/range/detail/sfinae.hpp" 1 3 4
23866: # 12 "/usr/include/boost/range/detail/sfinae.hpp" 3 4
23866: #define BOOST_RANGE_DETAIL_SFINAE_HPP
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/is_array.hpp" 1 3 4
23866: # 15 "/usr/include/boost/type_traits/is_array.hpp" 3 4
23866: #define BOOST_TT_IS_ARRAY_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866: namespace boost {
23866:
23866:
23866:
23866:
23866: template <class T> struct is_array : public false_type {};
23866:
23866: template <class T, std::size_t N> struct is_array<T[N]> : public true_type {};
23866: template <class T, std::size_t N> struct is_array<T const[N]> : public true_type{};
23866: template <class T, std::size_t N> struct is_array<T volatile[N]> : public true_type{};
23866: template <class T, std::size_t N> struct is_array<T const volatile[N]> : public true_type{};
23866:
23866: template <class T> struct is_array<T[]> : public true_type{};
23866: template <class T> struct is_array<T const[]> : public true_type{};
23866: template <class T> struct is_array<T const volatile[]> : public true_type{};
23866: template <class T> struct is_array<T volatile[]> : public true_type{};
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 16 "/usr/include/boost/range/detail/sfinae.hpp" 2 3 4
23866: # 1 "/usr/include/boost/type_traits/detail/yes_no_type.hpp" 1 3 4
23866: # 12 "/usr/include/boost/type_traits/detail/yes_no_type.hpp" 3 4
23866: #define BOOST_TT_DETAIL_YES_NO_TYPE_HPP_INCLUDED
23866:
23866: namespace boost {
23866: namespace type_traits {
23866:
23866: typedef char yes_type;
23866: struct no_type
23866: {
23866: char padding[8];
23866: };
23866:
23866: }
23866: }
23866: # 17 "/usr/include/boost/range/detail/sfinae.hpp" 2 3 4
23866:
23866:
23866:
23866: namespace boost
23866: {
23866: namespace range_detail
23866: {
23866: using type_traits::yes_type;
23866: using type_traits::no_type;
23866:
23866:
23866:
23866:
23866:
23866: yes_type is_string_impl( const char* const );
23866: yes_type is_string_impl( const wchar_t* const );
23866: no_type is_string_impl( ... );
23866:
23866: template< std::size_t sz >
23866: yes_type is_char_array_impl( char (&boost_range_array)[sz] );
23866: template< std::size_t sz >
23866: yes_type is_char_array_impl( const char (&boost_range_array)[sz] );
23866: no_type is_char_array_impl( ... );
23866:
23866: template< std::size_t sz >
23866: yes_type is_wchar_t_array_impl( wchar_t (&boost_range_array)[sz] );
23866: template< std::size_t sz >
23866: yes_type is_wchar_t_array_impl( const wchar_t (&boost_range_array)[sz] );
23866: no_type is_wchar_t_array_impl( ... );
23866:
23866: yes_type is_char_ptr_impl( char* const );
23866: no_type is_char_ptr_impl( ... );
23866:
23866: yes_type is_const_char_ptr_impl( const char* const );
23866: no_type is_const_char_ptr_impl( ... );
23866:
23866: yes_type is_wchar_t_ptr_impl( wchar_t* const );
23866: no_type is_wchar_t_ptr_impl( ... );
23866:
23866: yes_type is_const_wchar_t_ptr_impl( const wchar_t* const );
23866: no_type is_const_wchar_t_ptr_impl( ... );
23866:
23866:
23866:
23866:
23866:
23866: template< typename Iterator >
23866: yes_type is_pair_impl( const std::pair<Iterator,Iterator>* );
23866: no_type is_pair_impl( ... );
23866:
23866:
23866:
23866:
23866:
23866: struct char_or_wchar_t_array_tag {};
23866:
23866: }
23866:
23866: }
23866: # 20 "/usr/include/boost/range/detail/common.hpp" 2 3 4
23866: # 1 "/usr/include/boost/type_traits/is_void.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/is_void.hpp" 3 4
23866: #define BOOST_TT_IS_VOID_HPP_INCLUDED
23866:
23866:
23866:
23866: namespace boost {
23866:
23866: template <class T>
23866: struct is_void : public false_type {};
23866:
23866: template<> struct is_void<void> : public true_type {};
23866: template<> struct is_void<const void> : public true_type{};
23866: template<> struct is_void<const volatile void> : public true_type{};
23866: template<> struct is_void<volatile void> : public true_type{};
23866:
23866: }
23866: # 21 "/usr/include/boost/range/detail/common.hpp" 2 3 4
23866: # 29 "/usr/include/boost/range/detail/common.hpp" 3 4
23866: namespace boost
23866: {
23866: namespace range_detail
23866: {
23866: # 46 "/usr/include/boost/range/detail/common.hpp" 3 4
23866: typedef mpl::int_<1>::type std_container_;
23866: typedef mpl::int_<2>::type std_pair_;
23866: typedef mpl::int_<3>::type const_std_pair_;
23866: typedef mpl::int_<4>::type array_;
23866: typedef mpl::int_<5>::type const_array_;
23866: typedef mpl::int_<6>::type char_array_;
23866: typedef mpl::int_<7>::type wchar_t_array_;
23866: typedef mpl::int_<8>::type char_ptr_;
23866: typedef mpl::int_<9>::type const_char_ptr_;
23866: typedef mpl::int_<10>::type wchar_t_ptr_;
23866: typedef mpl::int_<11>::type const_wchar_t_ptr_;
23866: typedef mpl::int_<12>::type string_;
23866:
23866: template< typename C >
23866: struct range_helper
23866: {
23866: static C* c;
23866: static C ptr;
23866:
23866: static const bool is_pair_ = sizeof( boost::range_detail::is_pair_impl( c ) ) == sizeof( yes_type );
23866: static const bool is_char_ptr_ = sizeof( boost::range_detail::is_char_ptr_impl( ptr ) ) == sizeof( yes_type );
23866: static const bool is_const_char_ptr_ = sizeof( boost::range_detail::is_const_char_ptr_impl( ptr ) ) == sizeof( yes_type );
23866: static const bool is_wchar_t_ptr_ = sizeof( boost::range_detail::is_wchar_t_ptr_impl( ptr ) ) == sizeof( yes_type );
23866: static const bool is_const_wchar_t_ptr_ = sizeof( boost::range_detail::is_const_wchar_t_ptr_impl( ptr ) ) == sizeof( yes_type );
23866: static const bool is_char_array_ = sizeof( boost::range_detail::is_char_array_impl( ptr ) ) == sizeof( yes_type );
23866: static const bool is_wchar_t_array_ = sizeof( boost::range_detail::is_wchar_t_array_impl( ptr ) ) == sizeof( yes_type );
23866: static const bool is_string_ = (is_const_char_ptr_ || is_const_wchar_t_ptr_);
23866: static const bool is_array_ = boost::is_array<C>::value;
23866:
23866: };
23866:
23866: template< typename C >
23866: class range
23866: {
23866: typedef typename boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_pair_,
23866: boost::range_detail::std_pair_,
23866: void >::type pair_t;
23866: typedef typename boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_array_,
23866: boost::range_detail::array_,
23866: pair_t >::type array_t;
23866: typedef typename boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_string_,
23866: boost::range_detail::string_,
23866: array_t >::type string_t;
23866: typedef typename boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_const_char_ptr_,
23866: boost::range_detail::const_char_ptr_,
23866: string_t >::type const_char_ptr_t;
23866: typedef typename boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_char_ptr_,
23866: boost::range_detail::char_ptr_,
23866: const_char_ptr_t >::type char_ptr_t;
23866: typedef typename boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_const_wchar_t_ptr_,
23866: boost::range_detail::const_wchar_t_ptr_,
23866: char_ptr_t >::type const_wchar_ptr_t;
23866: typedef typename boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_wchar_t_ptr_,
23866: boost::range_detail::wchar_t_ptr_,
23866: const_wchar_ptr_t >::type wchar_ptr_t;
23866: typedef typename boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_wchar_t_array_,
23866: boost::range_detail::wchar_t_array_,
23866: wchar_ptr_t >::type wchar_array_t;
23866: typedef typename boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_char_array_,
23866: boost::range_detail::char_array_,
23866: wchar_array_t >::type char_array_t;
23866: public:
23866: typedef typename boost::mpl::if_c< ::boost::is_void<char_array_t>::value,
23866: boost::range_detail::std_container_,
23866: char_array_t >::type type;
23866: };
23866: }
23866: }
23866: # 16 "/usr/include/boost/range/detail/implementation_help.hpp" 2 3 4
23866: # 1 "/usr/include/boost/type_traits/is_same.hpp" 1 3 4
23866: # 22 "/usr/include/boost/type_traits/is_same.hpp" 3 4
23866: #define BOOST_TT_IS_SAME_HPP_INCLUDED
23866:
23866:
23866:
23866: namespace boost {
23866:
23866:
23866: template <class T, class U> struct is_same : public false_type {};
23866: template <class T> struct is_same<T,T> : public true_type {};
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 17 "/usr/include/boost/range/detail/implementation_help.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost
23866: {
23866: namespace range_detail
23866: {
23866: template <typename T>
23866: inline void boost_range_silence_warning( const T& ) { }
23866:
23866:
23866:
23866:
23866:
23866: inline const char* str_end( const char* s, const char* )
23866: {
23866: return s + strlen( s );
23866: }
23866:
23866:
23866: inline const wchar_t* str_end( const wchar_t* s, const wchar_t* )
23866: {
23866: return s + wcslen( s );
23866: }
23866: # 56 "/usr/include/boost/range/detail/implementation_help.hpp" 3 4
23866: template< class Char >
23866: inline Char* str_end( Char* s )
23866: {
23866: return const_cast<Char*>( str_end( s, s ) );
23866: }
23866:
23866: template< class T, std::size_t sz >
23866: constexpr inline T* array_end( T (&boost_range_array)[sz] ) noexcept
23866: {
23866: return boost_range_array + sz;
23866: }
23866:
23866: template< class T, std::size_t sz >
23866: constexpr inline const T* array_end( const T (&boost_range_array)[sz] ) noexcept
23866: {
23866: return boost_range_array + sz;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template< class Char >
23866: inline std::size_t str_size( const Char* const& s )
23866: {
23866: return str_end( s ) - s;
23866: }
23866:
23866: template< class T, std::size_t sz >
23866: inline std::size_t array_size( T (&boost_range_array)[sz] )
23866: {
23866: boost_range_silence_warning( boost_range_array );
23866: return sz;
23866: }
23866:
23866: template< class T, std::size_t sz >
23866: inline std::size_t array_size( const T (&boost_range_array)[sz] )
23866: {
23866: boost_range_silence_warning( boost_range_array );
23866: return sz;
23866: }
23866:
23866: inline bool is_same_address(const void* l, const void* r)
23866: {
23866: return l == r;
23866: }
23866:
23866: template<class T1, class T2>
23866: inline bool is_same_object(const T1& l, const T2& r)
23866: {
23866: return range_detail::is_same_address(&l, &r);
23866: }
23866:
23866: }
23866:
23866: }
23866: # 21 "/usr/include/boost/range/end.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: namespace boost
23866: {
23866:
23866:
23866: namespace range_detail
23866: {
23866:
23866:
23866:
23866:
23866:
23866: template< typename C >
23866: constexpr inline typename range_iterator<C>::type
23866: range_end( C& c )
23866: {
23866:
23866:
23866:
23866:
23866:
23866: return c.end();
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template< typename Iterator >
23866: constexpr inline Iterator range_end( const std::pair<Iterator,Iterator>& p )
23866: {
23866: return p.second;
23866: }
23866:
23866: template< typename Iterator >
23866: constexpr inline Iterator range_end( std::pair<Iterator,Iterator>& p )
23866: {
23866: return p.second;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template< typename T, std::size_t sz >
23866: constexpr inline const T* range_end( const T (&a)[sz] ) noexcept
23866: {
23866: return range_detail::array_end<T,sz>( a );
23866: }
23866:
23866: template< typename T, std::size_t sz >
23866: constexpr inline T* range_end( T (&a)[sz] ) noexcept
23866: {
23866: return range_detail::array_end<T,sz>( a );
23866: }
23866:
23866:
23866: }
23866:
23866:
23866: namespace range_adl_barrier
23866: {
23866:
23866: template< class T >
23866:
23866: constexpr
23866:
23866: inline typename range_iterator<T>::type end( T& r )
23866: {
23866:
23866: using namespace range_detail;
23866:
23866: return range_end( r );
23866: }
23866:
23866: template< class T >
23866:
23866: constexpr
23866:
23866: inline typename range_iterator<const T>::type end( const T& r )
23866: {
23866:
23866: using namespace range_detail;
23866:
23866: return range_end( r );
23866: }
23866:
23866: }
23866: }
23866:
23866: namespace boost
23866: {
23866: namespace range_adl_barrier
23866: {
23866: template< class T >
23866: constexpr inline typename range_iterator<const T>::type
23866: const_end( const T& r )
23866: {
23866: return boost::range_adl_barrier::end( r );
23866: }
23866: }
23866: using namespace range_adl_barrier;
23866: }
23866: # 18 "/usr/include/boost/algorithm/string/trim.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/range/as_literal.hpp" 1 3 4
23866: # 12 "/usr/include/boost/range/as_literal.hpp" 3 4
23866: #define BOOST_RANGE_AS_LITERAL_HPP
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/range/iterator_range.hpp" 1 3 4
23866: # 11 "/usr/include/boost/range/iterator_range.hpp" 3 4
23866: #define BOOST_RANGE_ITERATOR_RANGE_HPP_INCLUDED
23866:
23866: # 1 "/usr/include/boost/range/iterator_range_core.hpp" 1 3 4
23866: # 15 "/usr/include/boost/range/iterator_range_core.hpp" 3 4
23866: #define BOOST_RANGE_ITERATOR_RANGE_CORE_HPP_INCLUDED
23866: # 25 "/usr/include/boost/range/iterator_range_core.hpp" 3 4
23866: # 1 "/usr/include/boost/assert.hpp" 1 3 4
23866: # 32 "/usr/include/boost/assert.hpp" 3 4
23866: #undef BOOST_ASSERT
23866: #undef BOOST_ASSERT_MSG
23866: #undef BOOST_ASSERT_IS_VOID
23866: # 58 "/usr/include/boost/assert.hpp" 3 4
23866: # 1 "/usr/include/assert.h" 1 3 4
23866: # 24 "/usr/include/assert.h" 3 4
23866: #undef _ASSERT_H
23866: #undef assert
23866: #undef __ASSERT_VOID_CAST
23866:
23866:
23866: #undef assert_perror
23866:
23866:
23866:
23866:
23866: #define _ASSERT_H 1
23866:
23866:
23866:
23866: #define __ASSERT_VOID_CAST static_cast<void>
23866: # 92 "/usr/include/assert.h" 3 4
23866: #define assert(expr) (static_cast <bool> (expr) ? void (0) : __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 117 "/usr/include/assert.h" 3 4
23866: #define assert_perror(errnum) (!(errnum) ? __ASSERT_VOID_CAST (0) : __assert_perror_fail ((errnum), __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 129 "/usr/include/assert.h" 3 4
23866: #define __ASSERT_FUNCTION __extension__ __PRETTY_FUNCTION__
23866: # 59 "/usr/include/boost/assert.hpp" 2 3 4
23866:
23866: #define BOOST_ASSERT(expr) assert(expr)
23866: #define BOOST_ASSERT_MSG(expr,msg) assert((expr)&&(msg))
23866: # 72 "/usr/include/boost/assert.hpp" 3 4
23866: #undef BOOST_VERIFY
23866: #undef BOOST_VERIFY_MSG
23866: # 82 "/usr/include/boost/assert.hpp" 3 4
23866: #define BOOST_VERIFY(expr) BOOST_ASSERT(expr)
23866: #define BOOST_VERIFY_MSG(expr,msg) BOOST_ASSERT_MSG(expr,msg)
23866: # 26 "/usr/include/boost/range/iterator_range_core.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/iterator/iterator_facade.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_ITERATOR_FACADE_23022003THW_HPP
23866:
23866:
23866: # 1 "/usr/include/boost/iterator/interoperable.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_INTEROPERABLE_23022003THW_HPP
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/or.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_OR_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/or.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/config/use_preprocessed.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CONFIG_USE_PREPROCESSED_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/or.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/nested_type_wknd.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_NESTED_TYPE_WKND_HPP_INCLUDED
23866: # 25 "/usr/include/boost/mpl/aux_/nested_type_wknd.hpp" 3 4
23866: namespace boost { namespace mpl { namespace aux {
23866: template< typename T > struct nested_type_wknd
23866: : T::type
23866: {
23866: };
23866: }}}
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_AUX_NESTED_TYPE_WKND(T) ::boost::mpl::aux::nested_type_wknd<T>
23866: # 24 "/usr/include/boost/mpl/or.hpp" 2 3 4
23866: # 42 "/usr/include/boost/mpl/or.hpp" 3 4
23866: #define BOOST_MPL_PREPROCESSED_HEADER or.hpp
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 16 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/config/compiler.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CONFIG_COMPILER_HPP_INCLUDED
23866: # 33 "/usr/include/boost/mpl/aux_/config/compiler.hpp" 3 4
23866: #define BOOST_MPL_CFG_COMPILER_DIR gcc
23866: # 17 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/stringize.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/stringize.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_STRINGIZE_HPP
23866: # 28 "/usr/include/boost/preprocessor/stringize.hpp" 3 4
23866: #define BOOST_PP_STRINGIZE(text) BOOST_PP_STRINGIZE_I(text)
23866:
23866:
23866:
23866: #define BOOST_PP_STRINGIZE_I(...) #__VA_ARGS__
23866: # 21 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/or.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/or.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: namespace aux {
23866:
23866: template< bool C_, typename T1, typename T2, typename T3, typename T4 >
23866: struct or_impl
23866: : true_
23866: {
23866: };
23866:
23866: template< typename T1, typename T2, typename T3, typename T4 >
23866: struct or_impl< false,T1,T2,T3,T4 >
23866: : or_impl<
23866: ::boost::mpl::aux::nested_type_wknd<T1>::value
23866: , T2, T3, T4
23866: , false_
23866: >
23866: {
23866: };
23866:
23866: template<>
23866: struct or_impl<
23866: false
23866: , false_, false_, false_, false_
23866: >
23866: : false_
23866: {
23866: };
23866:
23866: }
23866:
23866: template<
23866: typename T1 = na
23866: , typename T2 = na
23866: , typename T3 = false_, typename T4 = false_, typename T5 = false_
23866: >
23866: struct or_
23866:
23866: : aux::or_impl<
23866: ::boost::mpl::aux::nested_type_wknd<T1>::value
23866: , T2, T3, T4, T5
23866: >
23866:
23866: {
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866: template<> struct or_< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : or_< T1 , T2 > { }; }; template< typename Tag > struct lambda< or_< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef or_< na , na > result_; typedef or_< na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > struct template_arity< or_< T1 , T2 , T3 , T4 , T5 > > : int_<5> { }; template<> struct template_arity< or_< na , na > > : int_<-1> { }; }
23866:
23866:
23866:
23866:
23866:
23866: }}
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 44 "/usr/include/boost/mpl/or.hpp" 2 3 4
23866: # 12 "/usr/include/boost/iterator/interoperable.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/type_traits/is_convertible.hpp" 1 3 4
23866: # 13 "/usr/include/boost/type_traits/is_convertible.hpp" 3 4
23866: #define BOOST_TT_IS_CONVERTIBLE_HPP_INCLUDED
23866:
23866: # 1 "/usr/include/boost/type_traits/intrinsics.hpp" 1 3 4
23866: # 9 "/usr/include/boost/type_traits/intrinsics.hpp" 3 4
23866: #define BOOST_TT_INTRINSICS_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/detail/config.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/detail/config.hpp" 3 4
23866: #define BOOST_TT_CONFIG_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/version.hpp" 1 3 4
23866: # 10 "/usr/include/boost/version.hpp" 3 4
23866: #define BOOST_VERSION_HPP
23866: # 22 "/usr/include/boost/version.hpp" 3 4
23866: #define BOOST_VERSION 107400
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_LIB_VERSION "1_74"
23866: # 16 "/usr/include/boost/type_traits/detail/config.hpp" 2 3 4
23866: # 26 "/usr/include/boost/type_traits/detail/config.hpp" 3 4
23866: #define BOOST_TT_DECL
23866: # 43 "/usr/include/boost/type_traits/detail/config.hpp" 3 4
23866: #define BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION 1
23866: # 67 "/usr/include/boost/type_traits/detail/config.hpp" 3 4
23866: #define BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(x)
23866: #define BOOST_TT_BROKEN_COMPILER_SPEC(x)
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_TT_HAS_ACCURATE_BINARY_OPERATOR_DETECTION
23866: # 86 "/usr/include/boost/type_traits/detail/config.hpp" 3 4
23866: #define BOOST_TT_HAS_ASCCURATE_IS_FUNCTION
23866: # 17 "/usr/include/boost/type_traits/intrinsics.hpp" 2 3 4
23866: # 259 "/usr/include/boost/type_traits/intrinsics.hpp" 3 4
23866: #define BOOST_INTEL_TT_OPTS
23866:
23866:
23866: #define BOOST_IS_UNION(T) __is_union(T)
23866: #define BOOST_IS_POD(T) __is_pod(T)
23866: #define BOOST_IS_EMPTY(T) __is_empty(T)
23866: #define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) ((__has_trivial_constructor(T) BOOST_INTEL_TT_OPTS) && ! ::boost::is_volatile<T>::value)
23866: #define BOOST_HAS_TRIVIAL_COPY(T) ((__has_trivial_copy(T) BOOST_INTEL_TT_OPTS) && !is_reference<T>::value)
23866:
23866: #define BOOST_HAS_TRIVIAL_ASSIGN(T) ((__has_trivial_assign(T) BOOST_INTEL_TT_OPTS) && ! ::boost::is_volatile<T>::value && ! ::boost::is_const<T>::value && is_assignable<T&, const T&>::value)
23866: #define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T) BOOST_INTEL_TT_OPTS && is_destructible<T>::value)
23866: #define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) (__has_nothrow_constructor(T) && is_default_constructible<T>::value BOOST_INTEL_TT_OPTS)
23866: #define BOOST_HAS_NOTHROW_COPY(T) ((__has_nothrow_copy(T) BOOST_INTEL_TT_OPTS) && !is_volatile<T>::value && !is_reference<T>::value && is_copy_constructible<T>::value)
23866: #define BOOST_HAS_NOTHROW_ASSIGN(T) ((__has_nothrow_assign(T) BOOST_INTEL_TT_OPTS) && !is_volatile<T>::value && !is_const<T>::value && is_assignable<T&, const T&>::value)
23866: # 282 "/usr/include/boost/type_traits/intrinsics.hpp" 3 4
23866: #define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) __has_virtual_destructor(T)
23866:
23866: #define BOOST_IS_ABSTRACT(T) __is_abstract(T)
23866: #define BOOST_IS_BASE_OF(T,U) (__is_base_of(T,U) && !is_same<T,U>::value)
23866: #define BOOST_IS_CLASS(T) __is_class(T)
23866: #define BOOST_IS_ENUM(T) __is_enum(T)
23866: #define BOOST_IS_POLYMORPHIC(T) __is_polymorphic(T)
23866: # 297 "/usr/include/boost/type_traits/intrinsics.hpp" 3 4
23866: #define BOOST_IS_FINAL(T) __is_final(T)
23866:
23866:
23866:
23866: #define BOOST_HAS_TRIVIAL_MOVE_ASSIGN(T) (__is_trivially_assignable(T&, T&&) && is_assignable<T&, T&&>::value && !::boost::is_volatile<T>::value)
23866: #define BOOST_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T) (__is_trivially_constructible(T, T&&) && is_constructible<T, T&&>::value && !::boost::is_volatile<T>::value)
23866:
23866:
23866: #define BOOST_HAS_TYPE_TRAITS_INTRINSICS
23866: # 16 "/usr/include/boost/type_traits/is_convertible.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/type_traits/is_complete.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/is_complete.hpp" 3 4
23866: #define BOOST_TT_IS_COMPLETE_HPP_INCLUDED
23866:
23866: # 1 "/usr/include/boost/type_traits/declval.hpp" 1 3 4
23866: # 9 "/usr/include/boost/type_traits/declval.hpp" 3 4
23866: #define BOOST_TYPE_TRAITS_DECLVAL_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/add_rvalue_reference.hpp" 1 3 4
23866: # 9 "/usr/include/boost/type_traits/add_rvalue_reference.hpp" 3 4
23866: #define BOOST_TYPE_TRAITS_EXT_ADD_RVALUE_REFERENCE__HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/is_reference.hpp" 1 3 4
23866: # 13 "/usr/include/boost/type_traits/is_reference.hpp" 3 4
23866: #define BOOST_TT_IS_REFERENCE_HPP_INCLUDED
23866:
23866: # 1 "/usr/include/boost/type_traits/is_lvalue_reference.hpp" 1 3 4
23866: # 22 "/usr/include/boost/type_traits/is_lvalue_reference.hpp" 3 4
23866: #define BOOST_TT_IS_LVALUE_REFERENCE_HPP_INCLUDED
23866:
23866:
23866:
23866: namespace boost {
23866:
23866:
23866:
23866:
23866:
23866: template <class T> struct is_lvalue_reference : public false_type{};
23866: template <class T> struct is_lvalue_reference<T&> : public true_type{};
23866: # 47 "/usr/include/boost/type_traits/is_lvalue_reference.hpp" 3 4
23866: }
23866: # 16 "/usr/include/boost/type_traits/is_reference.hpp" 2 3 4
23866: # 1 "/usr/include/boost/type_traits/is_rvalue_reference.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/is_rvalue_reference.hpp" 3 4
23866: #define BOOST_TT_IS_RVALUE_REFERENCE_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866: namespace boost {
23866:
23866: template <class T> struct is_rvalue_reference : public false_type {};
23866:
23866: template <class T> struct is_rvalue_reference<T&&> : public true_type {};
23866:
23866:
23866: }
23866: # 17 "/usr/include/boost/type_traits/is_reference.hpp" 2 3 4
23866:
23866: namespace boost {
23866:
23866: template <class T> struct is_reference
23866: : public
23866: integral_constant<
23866: bool,
23866: ::boost::is_lvalue_reference<T>::value || ::boost::is_rvalue_reference<T>::value>
23866: {};
23866:
23866: }
23866: # 17 "/usr/include/boost/type_traits/add_rvalue_reference.hpp" 2 3 4
23866: # 31 "/usr/include/boost/type_traits/add_rvalue_reference.hpp" 3 4
23866: namespace boost {
23866:
23866: namespace type_traits_detail {
23866:
23866: template <typename T, bool b>
23866: struct add_rvalue_reference_helper
23866: { typedef T type; };
23866:
23866:
23866: template <typename T>
23866: struct add_rvalue_reference_helper<T, true>
23866: {
23866: typedef T&& type;
23866: };
23866:
23866:
23866: template <typename T>
23866: struct add_rvalue_reference_imp
23866: {
23866: typedef typename boost::type_traits_detail::add_rvalue_reference_helper
23866: <T, (is_void<T>::value == false && is_reference<T>::value == false) >::type type;
23866: };
23866:
23866: }
23866:
23866: template <class T> struct add_rvalue_reference
23866: {
23866: typedef typename boost::type_traits_detail::add_rvalue_reference_imp<T>::type type;
23866: };
23866:
23866:
23866:
23866: template <class T> using add_rvalue_reference_t = typename add_rvalue_reference<T>::type;
23866:
23866:
23866:
23866: }
23866: # 16 "/usr/include/boost/type_traits/declval.hpp" 2 3 4
23866: # 37 "/usr/include/boost/type_traits/declval.hpp" 3 4
23866: namespace boost {
23866:
23866: template <typename T>
23866: typename add_rvalue_reference<T>::type declval() noexcept;
23866:
23866: }
23866: # 13 "/usr/include/boost/type_traits/is_complete.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/is_function.hpp" 1 3 4
23866: # 12 "/usr/include/boost/type_traits/is_function.hpp" 3 4
23866: #define BOOST_TT_IS_FUNCTION_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/detail/is_function_cxx_11.hpp" 1 3 4
23866: # 12 "/usr/include/boost/type_traits/detail/is_function_cxx_11.hpp" 3 4
23866: #define BOOST_TT_IS_FUNCTION_CXX_11_HPP_INCLUDED
23866:
23866:
23866:
23866: namespace boost {
23866:
23866: template <class T>
23866: struct is_function : public false_type {};
23866:
23866:
23866: #define BOOST_TT_NOEXCEPT_PARAM , bool NE
23866: #define BOOST_TT_NOEXCEPT_DECL noexcept(NE)
23866: # 32 "/usr/include/boost/type_traits/detail/is_function_cxx_11.hpp" 3 4
23866: #define BOOST_TT_DEF_CALL
23866:
23866:
23866: template <class Ret, class...Args , bool NE>
23866: struct is_function<Ret (Args...)noexcept(NE)> : public true_type {};
23866: template <class Ret, class ...Args , bool NE>
23866: struct is_function<Ret(Args..., ...)noexcept(NE)> : public true_type {};
23866:
23866: template <class Ret, class...Args , bool NE>
23866: struct is_function<Ret (Args...)const noexcept(NE)> : public true_type {};
23866: template <class Ret, class ...Args , bool NE>
23866: struct is_function<Ret(Args..., ...)const noexcept(NE)> : public true_type {};
23866:
23866: template <class Ret, class...Args , bool NE>
23866: struct is_function<Ret (Args...)volatile noexcept(NE)> : public true_type {};
23866: template <class Ret, class ...Args , bool NE>
23866: struct is_function<Ret(Args..., ...)volatile noexcept(NE)> : public true_type {};
23866:
23866: template <class Ret, class...Args , bool NE>
23866: struct is_function<Ret (Args...)const volatile noexcept(NE)> : public true_type {};
23866: template <class Ret, class ...Args , bool NE>
23866: struct is_function<Ret(Args..., ...)const volatile noexcept(NE)> : public true_type {};
23866:
23866:
23866:
23866: template <class Ret, class...Args , bool NE>
23866: struct is_function<Ret (Args...)& noexcept(NE)> : public true_type {};
23866: template <class Ret, class ...Args , bool NE>
23866: struct is_function<Ret(Args..., ...)& noexcept(NE)> : public true_type {};
23866:
23866: template <class Ret, class...Args , bool NE>
23866: struct is_function<Ret (Args...)const & noexcept(NE)> : public true_type {};
23866: template <class Ret, class ...Args , bool NE>
23866: struct is_function<Ret(Args..., ...)const & noexcept(NE)> : public true_type {};
23866:
23866: template <class Ret, class...Args , bool NE>
23866: struct is_function<Ret (Args...)volatile & noexcept(NE)> : public true_type {};
23866: template <class Ret, class ...Args , bool NE>
23866: struct is_function<Ret(Args..., ...)volatile & noexcept(NE)> : public true_type {};
23866:
23866: template <class Ret, class...Args , bool NE>
23866: struct is_function<Ret (Args...)const volatile & noexcept(NE)> : public true_type {};
23866: template <class Ret, class ...Args , bool NE>
23866: struct is_function<Ret(Args..., ...)const volatile & noexcept(NE)> : public true_type {};
23866:
23866:
23866:
23866: template <class Ret, class...Args , bool NE>
23866: struct is_function<Ret (Args...)&& noexcept(NE)> : public true_type {};
23866: template <class Ret, class ...Args , bool NE>
23866: struct is_function<Ret(Args..., ...)&& noexcept(NE)> : public true_type {};
23866:
23866: template <class Ret, class...Args , bool NE>
23866: struct is_function<Ret (Args...)const && noexcept(NE)> : public true_type {};
23866: template <class Ret, class ...Args , bool NE>
23866: struct is_function<Ret(Args..., ...)const && noexcept(NE)> : public true_type {};
23866:
23866: template <class Ret, class...Args , bool NE>
23866: struct is_function<Ret (Args...)volatile && noexcept(NE)> : public true_type {};
23866: template <class Ret, class ...Args , bool NE>
23866: struct is_function<Ret(Args..., ...)volatile && noexcept(NE)> : public true_type {};
23866:
23866: template <class Ret, class...Args , bool NE>
23866: struct is_function<Ret (Args...)const volatile && noexcept(NE)> : public true_type {};
23866: template <class Ret, class ...Args , bool NE>
23866: struct is_function<Ret(Args..., ...)const volatile && noexcept(NE)> : public true_type {};
23866: # 590 "/usr/include/boost/type_traits/detail/is_function_cxx_11.hpp" 3 4
23866: }
23866:
23866: #undef BOOST_TT_NOEXCEPT_DECL
23866: #undef BOOST_TT_NOEXCEPT_PARAM
23866: #undef BOOST_TT_DEF_CALL
23866: # 20 "/usr/include/boost/type_traits/is_function.hpp" 2 3 4
23866: # 16 "/usr/include/boost/type_traits/is_complete.hpp" 2 3 4
23866: # 31 "/usr/include/boost/type_traits/is_complete.hpp" 3 4
23866: namespace boost {
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_TT_HAS_WORKING_IS_COMPLETE
23866:
23866:
23866:
23866: namespace detail{
23866:
23866: template <unsigned N>
23866: struct ok_tag { double d; char c[N]; };
23866:
23866: template <class T>
23866: ok_tag<sizeof(T)> check_is_complete(int);
23866: template <class T>
23866: char check_is_complete(...);
23866: }
23866:
23866: template <class T> struct is_complete
23866: : public integral_constant<bool, ::boost::is_function<typename boost::remove_reference<T>::type>::value || (sizeof(boost::detail::check_is_complete<T>(0)) != sizeof(char))> {};
23866: # 90 "/usr/include/boost/type_traits/is_complete.hpp" 3 4
23866: }
23866: # 18 "/usr/include/boost/type_traits/is_convertible.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/static_assert.hpp" 1 3 4
23866: # 15 "/usr/include/boost/static_assert.hpp" 3 4
23866: #define BOOST_STATIC_ASSERT_HPP
23866: # 31 "/usr/include/boost/static_assert.hpp" 3 4
23866: #define BOOST_STATIC_ASSERT_MSG(...) static_assert(__VA_ARGS__)
23866: # 56 "/usr/include/boost/static_assert.hpp" 3 4
23866: #define BOOST_STATIC_ASSERT_BOOL_CAST(...) ((__VA_ARGS__) != 0)
23866: # 70 "/usr/include/boost/static_assert.hpp" 3 4
23866: #define BOOST_STATIC_ASSERT(...) static_assert(__VA_ARGS__, #__VA_ARGS__)
23866: # 21 "/usr/include/boost/type_traits/is_convertible.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/is_arithmetic.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/is_arithmetic.hpp" 3 4
23866: #define BOOST_TT_IS_ARITHMETIC_HPP_INCLUDED
23866:
23866: # 1 "/usr/include/boost/type_traits/is_integral.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/is_integral.hpp" 3 4
23866: #define BOOST_TT_IS_INTEGRAL_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866: namespace boost {
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class T> struct is_integral : public false_type {};
23866: template <class T> struct is_integral<const T> : public is_integral<T> {};
23866: template <class T> struct is_integral<volatile const T> : public is_integral<T>{};
23866: template <class T> struct is_integral<volatile T> : public is_integral<T>{};
23866:
23866:
23866:
23866:
23866: template<> struct is_integral<unsigned char> : public true_type {};
23866: template<> struct is_integral<unsigned short> : public true_type{};
23866: template<> struct is_integral<unsigned int> : public true_type{};
23866: template<> struct is_integral<unsigned long> : public true_type{};
23866:
23866: template<> struct is_integral<signed char> : public true_type{};
23866: template<> struct is_integral<short> : public true_type{};
23866: template<> struct is_integral<int> : public true_type{};
23866: template<> struct is_integral<long> : public true_type{};
23866:
23866: template<> struct is_integral<char> : public true_type{};
23866: template<> struct is_integral<bool> : public true_type{};
23866:
23866:
23866:
23866:
23866:
23866: template<> struct is_integral<wchar_t> : public true_type{};
23866: # 67 "/usr/include/boost/type_traits/is_integral.hpp" 3 4
23866: template<> struct is_integral< ::boost::ulong_long_type> : public true_type{};
23866: template<> struct is_integral< ::boost::long_long_type> : public true_type{};
23866: # 79 "/usr/include/boost/type_traits/is_integral.hpp" 3 4
23866: template<> struct is_integral<char16_t> : public true_type{};
23866:
23866:
23866: template<> struct is_integral<char32_t> : public true_type{};
23866:
23866:
23866:
23866:
23866: }
23866: # 13 "/usr/include/boost/type_traits/is_arithmetic.hpp" 2 3 4
23866: # 1 "/usr/include/boost/type_traits/is_floating_point.hpp" 1 3 4
23866: # 9 "/usr/include/boost/type_traits/is_floating_point.hpp" 3 4
23866: #define BOOST_TYPE_TRAITS_IS_FLOATING_HPP_INCLUDED
23866:
23866:
23866:
23866: namespace boost {
23866:
23866:
23866: template <class T> struct is_floating_point : public false_type{};
23866: template <class T> struct is_floating_point<const T> : public is_floating_point<T>{};
23866: template <class T> struct is_floating_point<volatile const T> : public is_floating_point<T>{};
23866: template <class T> struct is_floating_point<volatile T> : public is_floating_point<T>{};
23866: template<> struct is_floating_point<float> : public true_type{};
23866: template<> struct is_floating_point<double> : public true_type{};
23866: template<> struct is_floating_point<long double> : public true_type{};
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 14 "/usr/include/boost/type_traits/is_arithmetic.hpp" 2 3 4
23866:
23866: namespace boost {
23866:
23866: template <class T>
23866: struct is_arithmetic : public integral_constant<bool, is_integral<T>::value || is_floating_point<T>::value> {};
23866:
23866: }
23866: # 26 "/usr/include/boost/type_traits/is_convertible.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/is_abstract.hpp" 1 3 4
23866:
23866: #define BOOST_TT_IS_ABSTRACT_CLASS_HPP
23866: # 63 "/usr/include/boost/type_traits/is_abstract.hpp" 3 4
23866: namespace boost {
23866:
23866: namespace detail{
23866:
23866:
23866: template <class T>
23866: struct is_abstract_imp
23866: {
23866: static const bool value = __is_abstract(T);
23866: };
23866: # 140 "/usr/include/boost/type_traits/is_abstract.hpp" 3 4
23866: }
23866:
23866:
23866: template <class T> struct is_abstract : public integral_constant<bool, ::boost::detail::is_abstract_imp<T>::value> {};
23866:
23866:
23866:
23866:
23866: }
23866: # 29 "/usr/include/boost/type_traits/is_convertible.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/type_traits/add_lvalue_reference.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_TYPE_TRAITS_EXT_ADD_LVALUE_REFERENCE__HPP
23866:
23866: # 1 "/usr/include/boost/type_traits/add_reference.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/add_reference.hpp" 3 4
23866: #define BOOST_TT_ADD_REFERENCE_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866: namespace boost {
23866:
23866: namespace detail {
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <typename T>
23866: struct add_reference_impl
23866: {
23866: typedef T& type;
23866: };
23866:
23866:
23866: template <typename T>
23866: struct add_reference_impl<T&&>
23866: {
23866: typedef T&& type;
23866: };
23866:
23866:
23866: }
23866:
23866: template <class T> struct add_reference
23866: {
23866: typedef typename boost::detail::add_reference_impl<T>::type type;
23866: };
23866: template <class T> struct add_reference<T&>
23866: {
23866: typedef T& type;
23866: };
23866:
23866:
23866: template <> struct add_reference<void> { typedef void type; };
23866:
23866: template <> struct add_reference<const void> { typedef const void type; };
23866: template <> struct add_reference<const volatile void> { typedef const volatile void type; };
23866: template <> struct add_reference<volatile void> { typedef volatile void type; };
23866:
23866:
23866:
23866:
23866: template <class T> using add_reference_t = typename add_reference<T>::type;
23866:
23866:
23866:
23866:
23866: }
23866: # 10 "/usr/include/boost/type_traits/add_lvalue_reference.hpp" 2 3 4
23866:
23866: namespace boost{
23866:
23866: template <class T> struct add_lvalue_reference
23866: {
23866: typedef typename boost::add_reference<T>::type type;
23866: };
23866:
23866:
23866: template <class T> struct add_lvalue_reference<T&&>
23866: {
23866: typedef T& type;
23866: };
23866:
23866:
23866:
23866:
23866: template <class T> using add_lvalue_reference_t = typename add_lvalue_reference<T>::type;
23866:
23866:
23866:
23866: }
23866: # 31 "/usr/include/boost/type_traits/is_convertible.hpp" 2 3 4
23866: # 45 "/usr/include/boost/type_traits/is_convertible.hpp" 3 4
23866: namespace boost {
23866: # 59 "/usr/include/boost/type_traits/is_convertible.hpp" 3 4
23866: namespace detail {
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_TT_CXX11_IS_CONVERTIBLE
23866:
23866: template <class A, class B, class C>
23866: struct or_helper
23866: {
23866: static const bool value = (A::value || B::value || C::value);
23866: };
23866:
23866: template<typename From, typename To, bool b = or_helper<boost::is_void<From>, boost::is_function<To>, boost::is_array<To> >::value>
23866: struct is_convertible_basic_impl
23866: {
23866:
23866: static const bool value = is_void<To>::value;
23866: };
23866:
23866: template<typename From, typename To>
23866: class is_convertible_basic_impl<From, To, false>
23866: {
23866: typedef char one;
23866: typedef int two;
23866:
23866: template<typename To1>
23866: static void test_aux(To1);
23866:
23866: template<typename From1, typename To1>
23866: static decltype(test_aux<To1>(boost::declval<From1>()), one()) test(int);
23866:
23866: template<typename, typename>
23866: static two test(...);
23866:
23866: public:
23866: static const bool value = sizeof(test<From, To>(0)) == 1;
23866: };
23866: # 362 "/usr/include/boost/type_traits/is_convertible.hpp" 3 4
23866: template <typename From, typename To>
23866: struct is_convertible_impl
23866: {
23866: static const bool value = ( ::boost::detail::is_convertible_basic_impl<From, To>::value && !::boost::is_array<To>::value && !::boost::is_function<To>::value);
23866: };
23866:
23866:
23866: template <bool trivial1, bool trivial2, bool abstract_target>
23866: struct is_convertible_impl_select
23866: {
23866: template <class From, class To>
23866: struct rebind
23866: {
23866: typedef is_convertible_impl<From, To> type;
23866: };
23866: };
23866:
23866: template <>
23866: struct is_convertible_impl_select<true, true, false>
23866: {
23866: template <class From, class To>
23866: struct rebind
23866: {
23866: typedef true_type type;
23866: };
23866: };
23866:
23866: template <>
23866: struct is_convertible_impl_select<false, false, true>
23866: {
23866: template <class From, class To>
23866: struct rebind
23866: {
23866: typedef false_type type;
23866: };
23866: };
23866:
23866: template <>
23866: struct is_convertible_impl_select<true, false, true>
23866: {
23866: template <class From, class To>
23866: struct rebind
23866: {
23866: typedef false_type type;
23866: };
23866: };
23866:
23866: template <typename From, typename To>
23866: struct is_convertible_impl_dispatch_base
23866: {
23866:
23866: typedef is_convertible_impl_select<
23866: ::boost::is_arithmetic<From>::value,
23866: ::boost::is_arithmetic<To>::value,
23866:
23866:
23866:
23866:
23866: false
23866:
23866: > selector;
23866:
23866:
23866:
23866: typedef typename selector::template rebind<From, To> isc_binder;
23866: typedef typename isc_binder::type type;
23866: };
23866:
23866: template <typename From, typename To>
23866: struct is_convertible_impl_dispatch
23866: : public is_convertible_impl_dispatch_base<From, To>::type
23866: {};
23866: # 442 "/usr/include/boost/type_traits/is_convertible.hpp" 3 4
23866: template <> struct is_convertible_impl_dispatch<void, void> : public true_type{};
23866: template <> struct is_convertible_impl_dispatch<void, void const> : public true_type{};
23866: template <> struct is_convertible_impl_dispatch<void, void const volatile> : public true_type{};
23866: template <> struct is_convertible_impl_dispatch<void, void volatile> : public true_type{};
23866:
23866: template <> struct is_convertible_impl_dispatch<void const, void> : public true_type{};
23866: template <> struct is_convertible_impl_dispatch<void const, void const> : public true_type{};
23866: template <> struct is_convertible_impl_dispatch<void const, void const volatile> : public true_type{};
23866: template <> struct is_convertible_impl_dispatch<void const, void volatile> : public true_type{};
23866:
23866: template <> struct is_convertible_impl_dispatch<void const volatile, void> : public true_type{};
23866: template <> struct is_convertible_impl_dispatch<void const volatile, void const> : public true_type{};
23866: template <> struct is_convertible_impl_dispatch<void const volatile, void const volatile> : public true_type{};
23866: template <> struct is_convertible_impl_dispatch<void const volatile, void volatile> : public true_type{};
23866:
23866: template <> struct is_convertible_impl_dispatch<void volatile, void> : public true_type{};
23866: template <> struct is_convertible_impl_dispatch<void volatile, void const> : public true_type{};
23866: template <> struct is_convertible_impl_dispatch<void volatile, void const volatile> : public true_type{};
23866: template <> struct is_convertible_impl_dispatch<void volatile, void volatile> : public true_type{};
23866:
23866:
23866:
23866:
23866:
23866: template <class To> struct is_convertible_impl_dispatch<void, To> : public false_type{};
23866: template <class From> struct is_convertible_impl_dispatch<From, void> : public false_type{};
23866:
23866:
23866: template <class To> struct is_convertible_impl_dispatch<void const, To> : public false_type{};
23866: template <class From> struct is_convertible_impl_dispatch<From, void const> : public false_type{};
23866: template <class To> struct is_convertible_impl_dispatch<void const volatile, To> : public false_type{};
23866: template <class From> struct is_convertible_impl_dispatch<From, void const volatile> : public false_type{};
23866: template <class To> struct is_convertible_impl_dispatch<void volatile, To> : public false_type{};
23866: template <class From> struct is_convertible_impl_dispatch<From, void volatile> : public false_type{};
23866:
23866:
23866: }
23866:
23866: template <class From, class To>
23866: struct is_convertible : public integral_constant<bool, ::boost::detail::is_convertible_impl_dispatch<From, To>::value>
23866: {
23866: static_assert(boost::is_complete<To>::value || boost::is_void<To>::value || boost::is_array<To>::value, "Destination argument type to is_convertible must be a complete type");
23866: static_assert(boost::is_complete<From>::value || boost::is_void<From>::value || boost::is_array<From>::value, "From argument type to is_convertible must be a complete type");
23866: };
23866: # 504 "/usr/include/boost/type_traits/is_convertible.hpp" 3 4
23866: }
23866: # 14 "/usr/include/boost/iterator/interoperable.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/iterator/detail/config_def.hpp" 1 3 4
23866: # 22 "/usr/include/boost/iterator/detail/config_def.hpp" 3 4
23866: #define BOOST_ITERATOR_CONFIG_DEF
23866: # 45 "/usr/include/boost/iterator/detail/config_def.hpp" 3 4
23866: #define BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY 1
23866: # 16 "/usr/include/boost/iterator/interoperable.hpp" 2 3 4
23866:
23866: namespace boost {
23866: namespace iterators {
23866: # 34 "/usr/include/boost/iterator/interoperable.hpp" 3 4
23866: template <typename A, typename B>
23866: struct is_interoperable
23866:
23866:
23866:
23866: : mpl::or_<
23866: is_convertible< A, B >
23866: , is_convertible< B, A > >
23866:
23866: {
23866: };
23866:
23866: }
23866:
23866: using iterators::is_interoperable;
23866:
23866: }
23866:
23866: # 1 "/usr/include/boost/iterator/detail/config_undef.hpp" 1 3 4
23866: # 14 "/usr/include/boost/iterator/detail/config_undef.hpp" 3 4
23866: #undef BOOST_NO_IS_CONVERTIBLE
23866: #undef BOOST_NO_IS_CONVERTIBLE_TEMPLATE
23866: #undef BOOST_NO_STRICT_ITERATOR_INTEROPERABILITY
23866: #undef BOOST_NO_LVALUE_RETURN_DETECTION
23866: #undef BOOST_NO_ONE_WAY_ITERATOR_INTEROP
23866:
23866:
23866: #undef BOOST_ITERATOR_CONFIG_DEF
23866: # 53 "/usr/include/boost/iterator/interoperable.hpp" 2 3 4
23866: # 12 "/usr/include/boost/iterator/iterator_facade.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/iterator/iterator_categories.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_ITERATOR_CATEGORIES_HPP
23866:
23866:
23866: # 1 "/usr/include/boost/iterator/detail/config_def.hpp" 1 3 4
23866: # 22 "/usr/include/boost/iterator/detail/config_def.hpp" 3 4
23866: #define BOOST_ITERATOR_CONFIG_DEF
23866: # 45 "/usr/include/boost/iterator/detail/config_def.hpp" 3 4
23866: #define BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY 1
23866: # 11 "/usr/include/boost/iterator/iterator_categories.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/identity.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_IDENTITY_HPP_INCLUDED
23866: # 20 "/usr/include/boost/mpl/identity.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename T = na
23866: >
23866: struct identity
23866: {
23866: typedef T type;
23866:
23866: };
23866:
23866: template<
23866: typename T = na
23866: >
23866: struct make_identity
23866: {
23866: typedef identity<T> type;
23866:
23866: };
23866:
23866: template<> struct identity< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : identity< T1 > { }; }; template< typename Tag > struct lambda< identity< na > , Tag , int_<-1> > { typedef false_ is_le; typedef identity< na > result_; typedef identity< na > type; }; namespace aux { template< typename T1 > struct template_arity< identity< T1 > > : int_<1> { }; template<> struct template_arity< identity< na > > : int_<-1> { }; }
23866: template<> struct make_identity< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : make_identity< T1 > { }; }; template< typename Tag > struct lambda< make_identity< na > , Tag , int_<-1> > { typedef false_ is_le; typedef make_identity< na > result_; typedef make_identity< na > type; }; namespace aux { template< typename T1 > struct template_arity< make_identity< T1 > > : int_<1> { }; template<> struct template_arity< make_identity< na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 16 "/usr/include/boost/iterator/iterator_categories.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/placeholders.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_PLACEHOLDERS_HPP_INCLUDED
23866: # 24 "/usr/include/boost/mpl/placeholders.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/arg.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_ARG_HPP_INCLUDED
23866: # 23 "/usr/include/boost/mpl/arg.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/arg_fwd.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_ARG_FWD_HPP_INCLUDED
23866: # 21 "/usr/include/boost/mpl/arg_fwd.hpp" 3 4
23866: namespace mpl_ {
23866:
23866: template< int N > struct arg;
23866:
23866: }
23866: namespace boost { namespace mpl { using ::mpl_::arg; } }
23866: # 24 "/usr/include/boost/mpl/arg.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/na_assert.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_NA_ASSERT_HPP_INCLUDED
23866: # 23 "/usr/include/boost/mpl/aux_/na_assert.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/assert.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_ASSERT_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/assert.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/not.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_NOT_HPP_INCLUDED
23866: # 23 "/usr/include/boost/mpl/not.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: namespace aux {
23866:
23866: template< long C_ >
23866: struct not_impl
23866: : bool_<!C_>
23866: {
23866: };
23866:
23866: }
23866:
23866:
23866: template<
23866: typename T = na
23866: >
23866: struct not_
23866: : aux::not_impl<
23866: ::boost::mpl::aux::nested_type_wknd<T>::value
23866: >
23866: {
23866:
23866: };
23866:
23866: template<> struct not_< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : not_< T1 > { }; }; template< typename Tag > struct lambda< not_< na > , Tag , int_<-1> > { typedef false_ is_le; typedef not_< na > result_; typedef not_< na > type; }; namespace aux { template< typename T1 > struct template_arity< not_< T1 > > : int_<1> { }; template<> struct template_arity< not_< na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 18 "/usr/include/boost/mpl/assert.hpp" 2 3 4
23866: # 28 "/usr/include/boost/mpl/assert.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/config/gpu.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CONFIG_GPU_HPP_INCLUDED
23866: # 21 "/usr/include/boost/mpl/aux_/config/gpu.hpp" 3 4
23866: #define BOOST_MPL_CFG_GPU_ENABLED BOOST_GPU_ENABLED
23866: # 31 "/usr/include/boost/mpl/aux_/config/gpu.hpp" 3 4
23866: #define BOOST_MPL_CFG_GPU 0
23866: # 29 "/usr/include/boost/mpl/assert.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/config/pp_counter.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CONFIG_PP_COUNTER_HPP_INCLUDED
23866: # 22 "/usr/include/boost/mpl/aux_/config/pp_counter.hpp" 3 4
23866: #define BOOST_MPL_AUX_PP_COUNTER() __LINE__
23866: # 31 "/usr/include/boost/mpl/assert.hpp" 2 3 4
23866: # 45 "/usr/include/boost/mpl/assert.hpp" 3 4
23866: #define BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES
23866: # 60 "/usr/include/boost/mpl/assert.hpp" 3 4
23866: #define BOOST_MPL_AUX_ASSERT_CONSTANT(T,expr) enum { expr }
23866:
23866:
23866:
23866:
23866:
23866: namespace mpl_ {
23866:
23866: struct failed {};
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define AUX778076_ASSERT_ARG(x) x
23866:
23866:
23866: template< bool C > struct assert { typedef void* type; };
23866: template<> struct assert<false> { typedef assert type; };
23866:
23866: template< bool C >
23866: int assertion_failed( typename assert<C>::type );
23866:
23866: template< bool C >
23866: struct assertion
23866: {
23866: static int failed( assert<false> );
23866: };
23866:
23866: template<>
23866: struct assertion<true>
23866: {
23866: static int failed( void* );
23866: };
23866:
23866: struct assert_
23866: {
23866:
23866: template< typename T1, typename T2 = na, typename T3 = na, typename T4 = na > struct types {};
23866:
23866: static assert_ const arg;
23866: enum relations { equal = 1, not_equal, greater, greater_equal, less, less_equal };
23866: };
23866: # 127 "/usr/include/boost/mpl/assert.hpp" 3 4
23866: boost::mpl::aux::weighted_tag<1>::type operator==( assert_, assert_ );
23866: boost::mpl::aux::weighted_tag<2>::type operator!=( assert_, assert_ );
23866: boost::mpl::aux::weighted_tag<3>::type operator>( assert_, assert_ );
23866: boost::mpl::aux::weighted_tag<4>::type operator>=( assert_, assert_ );
23866: boost::mpl::aux::weighted_tag<5>::type operator<( assert_, assert_ );
23866: boost::mpl::aux::weighted_tag<6>::type operator<=( assert_, assert_ );
23866:
23866: template< assert_::relations r, long x, long y > struct assert_relation {};
23866: # 171 "/usr/include/boost/mpl/assert.hpp" 3 4
23866: template< bool > struct assert_arg_pred_impl { typedef int type; };
23866: template<> struct assert_arg_pred_impl<true> { typedef void* type; };
23866:
23866: template< typename P > struct assert_arg_pred
23866: {
23866: typedef typename P::type p_type;
23866: typedef typename assert_arg_pred_impl< p_type::value >::type type;
23866: };
23866:
23866: template< typename P > struct assert_arg_pred_not
23866: {
23866: typedef typename P::type p_type;
23866: enum { p = !p_type::value };
23866: typedef typename assert_arg_pred_impl<p>::type type;
23866: };
23866:
23866:
23866: #define BOOST_MPL_IGNORE_PARENTHESES_WARNING
23866: #pragma GCC diagnostic push
23866: #pragma GCC diagnostic ignored "-Wparentheses"
23866:
23866:
23866: template< typename Pred >
23866: failed ************ (Pred::************
23866: assert_arg( void (*)(Pred), typename assert_arg_pred<Pred>::type )
23866: );
23866:
23866: template< typename Pred >
23866: failed ************ (boost::mpl::not_<Pred>::************
23866: assert_not_arg( void (*)(Pred), typename assert_arg_pred_not<Pred>::type )
23866: );
23866:
23866:
23866: #undef BOOST_MPL_IGNORE_PARENTHESES_WARNING
23866: #pragma GCC diagnostic pop
23866:
23866:
23866: template< typename Pred >
23866: assert<false>
23866: assert_arg( void (*)(Pred), typename assert_arg_pred_not<Pred>::type );
23866:
23866: template< typename Pred >
23866: assert<false>
23866: assert_not_arg( void (*)(Pred), typename assert_arg_pred<Pred>::type );
23866: # 255 "/usr/include/boost/mpl/assert.hpp" 3 4
23866: #undef AUX778076_ASSERT_ARG
23866:
23866: }
23866: # 295 "/usr/include/boost/mpl/assert.hpp" 3 4
23866: #define BOOST_MPL_ASSERT(pred) 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<false>( boost::mpl::assert_arg( (void (*) pred)0, 1 ) ) ) )
23866: # 319 "/usr/include/boost/mpl/assert.hpp" 3 4
23866: #define BOOST_MPL_ASSERT_NOT(pred) 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<false>( boost::mpl::assert_not_arg( (void (*) pred)0, 1 ) ) ) )
23866: # 339 "/usr/include/boost/mpl/assert.hpp" 3 4
23866: #define BOOST_MPL_ASSERT_RELATION_IMPL(counter,x,rel,y) enum { BOOST_PP_CAT(mpl_assert_rel_value,counter) = (x rel y) }; BOOST_MPL_AUX_ASSERT_CONSTANT( std::size_t , BOOST_PP_CAT(mpl_assertion_in_line_,counter) = sizeof( boost::mpl::assertion_failed<BOOST_PP_CAT(mpl_assert_rel_value,counter)>( (boost::mpl::failed ************ ( boost::mpl::assert_relation< boost::mpl::assert_::relations( sizeof( boost::mpl::assert_::arg rel boost::mpl::assert_::arg ) ) , x , y >::************)) 0 ) ) )
23866: # 379 "/usr/include/boost/mpl/assert.hpp" 3 4
23866: #define BOOST_MPL_ASSERT_RELATION(x,rel,y) BOOST_MPL_ASSERT_RELATION_IMPL(BOOST_MPL_AUX_PP_COUNTER(), x, rel, y)
23866: # 430 "/usr/include/boost/mpl/assert.hpp" 3 4
23866: #define BOOST_MPL_ASSERT_MSG_IMPL(counter,c,msg,types_) struct msg; typedef struct BOOST_PP_CAT(msg,counter) : boost::mpl::assert_ { static boost::mpl::failed ************ (msg::************ assert_arg()) types_ { return 0; } } BOOST_PP_CAT(mpl_assert_arg,counter); BOOST_MPL_AUX_ASSERT_CONSTANT( std::size_t , BOOST_PP_CAT(mpl_assertion_in_line_,counter) = sizeof( boost::mpl::assertion_failed<(c)>( BOOST_PP_CAT(mpl_assert_arg,counter)::assert_arg() ) ) )
23866: # 454 "/usr/include/boost/mpl/assert.hpp" 3 4
23866: #define BOOST_MPL_ASSERT_MSG(c,msg,types_) BOOST_MPL_ASSERT_MSG_IMPL( BOOST_MPL_AUX_PP_COUNTER(), c, msg, types_ )
23866: # 24 "/usr/include/boost/mpl/aux_/na_assert.hpp" 2 3 4
23866: #define BOOST_MPL_AUX_ASSERT_NOT_NA(x) BOOST_MPL_ASSERT_NOT((boost::mpl::is_na<type>))
23866: # 26 "/usr/include/boost/mpl/arg.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/arity_spec.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_ARITY_SPEC_HPP_INCLUDED
23866: # 43 "/usr/include/boost/mpl/aux_/arity_spec.hpp" 3 4
23866: #define BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(i,type,name)
23866:
23866:
23866: #define BOOST_MPL_AUX_ARITY_SPEC(i,name) BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(i,typename,name)
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(i,name) namespace aux { template< BOOST_MPL_PP_PARAMS(i,typename T) > struct template_arity< name<BOOST_MPL_PP_PARAMS(i,T)> > : int_<i> { }; }
23866: # 27 "/usr/include/boost/mpl/arg.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/arg_typedef.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_ARG_TYPEDEF_HPP_INCLUDED
23866: # 27 "/usr/include/boost/mpl/aux_/arg_typedef.hpp" 3 4
23866: #define BOOST_MPL_AUX_ARG_TYPEDEF(T,name)
23866: # 28 "/usr/include/boost/mpl/arg.hpp" 2 3 4
23866: # 36 "/usr/include/boost/mpl/arg.hpp" 3 4
23866: #define BOOST_MPL_PREPROCESSED_HEADER arg.hpp
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/arg.hpp" 1 3 4
23866: # 13 "/usr/include/boost/mpl/aux_/preprocessed/gcc/arg.hpp" 3 4
23866: namespace mpl_ {
23866: template<> struct arg< -1 >
23866: {
23866: static const int value = -1;
23866:
23866:
23866:
23866: template<
23866: typename U1 = na, typename U2 = na, typename U3 = na
23866: , typename U4 = na, typename U5 = na
23866: >
23866: struct apply
23866: {
23866: typedef U1 type;
23866: enum { mpl_assertion_in_line_27 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_not_arg( (void (*) (boost::mpl::is_na<type>))0, 1 ) ) ) };
23866: };
23866: };
23866:
23866: template<> struct arg<1>
23866: {
23866: static const int value = 1;
23866: typedef arg<2> next;
23866:
23866:
23866:
23866: template<
23866: typename U1 = na, typename U2 = na, typename U3 = na
23866: , typename U4 = na, typename U5 = na
23866: >
23866: struct apply
23866: {
23866: typedef U1 type;
23866: enum { mpl_assertion_in_line_45 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_not_arg( (void (*) (boost::mpl::is_na<type>))0, 1 ) ) ) };
23866: };
23866: };
23866:
23866: template<> struct arg<2>
23866: {
23866: static const int value = 2;
23866: typedef arg<3> next;
23866:
23866:
23866:
23866: template<
23866: typename U1 = na, typename U2 = na, typename U3 = na
23866: , typename U4 = na, typename U5 = na
23866: >
23866: struct apply
23866: {
23866: typedef U2 type;
23866: enum { mpl_assertion_in_line_63 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_not_arg( (void (*) (boost::mpl::is_na<type>))0, 1 ) ) ) };
23866: };
23866: };
23866:
23866: template<> struct arg<3>
23866: {
23866: static const int value = 3;
23866: typedef arg<4> next;
23866:
23866:
23866:
23866: template<
23866: typename U1 = na, typename U2 = na, typename U3 = na
23866: , typename U4 = na, typename U5 = na
23866: >
23866: struct apply
23866: {
23866: typedef U3 type;
23866: enum { mpl_assertion_in_line_81 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_not_arg( (void (*) (boost::mpl::is_na<type>))0, 1 ) ) ) };
23866: };
23866: };
23866:
23866: template<> struct arg<4>
23866: {
23866: static const int value = 4;
23866: typedef arg<5> next;
23866:
23866:
23866:
23866: template<
23866: typename U1 = na, typename U2 = na, typename U3 = na
23866: , typename U4 = na, typename U5 = na
23866: >
23866: struct apply
23866: {
23866: typedef U4 type;
23866: enum { mpl_assertion_in_line_99 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_not_arg( (void (*) (boost::mpl::is_na<type>))0, 1 ) ) ) };
23866: };
23866: };
23866:
23866: template<> struct arg<5>
23866: {
23866: static const int value = 5;
23866: typedef arg<6> next;
23866:
23866:
23866:
23866: template<
23866: typename U1 = na, typename U2 = na, typename U3 = na
23866: , typename U4 = na, typename U5 = na
23866: >
23866: struct apply
23866: {
23866: typedef U5 type;
23866: enum { mpl_assertion_in_line_117 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_not_arg( (void (*) (boost::mpl::is_na<type>))0, 1 ) ) ) };
23866: };
23866: };
23866:
23866:
23866:
23866: }
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 38 "/usr/include/boost/mpl/arg.hpp" 2 3 4
23866: # 25 "/usr/include/boost/mpl/placeholders.hpp" 2 3 4
23866:
23866:
23866:
23866: #define BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(type) using ::BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::type;
23866: # 42 "/usr/include/boost/mpl/placeholders.hpp" 3 4
23866: #define BOOST_MPL_PREPROCESSED_HEADER placeholders.hpp
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/placeholders.hpp" 1 3 4
23866: # 13 "/usr/include/boost/mpl/aux_/preprocessed/gcc/placeholders.hpp" 3 4
23866: namespace mpl_ {
23866: typedef arg< -1 > _;
23866: }
23866: namespace boost { namespace mpl {
23866:
23866: using ::mpl_::_;
23866:
23866: namespace placeholders {
23866: using mpl_::_;
23866: }
23866:
23866: }}
23866:
23866:
23866:
23866: namespace mpl_ {
23866: typedef arg<1> _1;
23866:
23866: }
23866: namespace boost { namespace mpl {
23866:
23866: using ::mpl_::_1;
23866:
23866: namespace placeholders {
23866: using mpl_::_1;
23866: }
23866:
23866: }}
23866: namespace mpl_ {
23866: typedef arg<2> _2;
23866:
23866: }
23866: namespace boost { namespace mpl {
23866:
23866: using ::mpl_::_2;
23866:
23866: namespace placeholders {
23866: using mpl_::_2;
23866: }
23866:
23866: }}
23866: namespace mpl_ {
23866: typedef arg<3> _3;
23866:
23866: }
23866: namespace boost { namespace mpl {
23866:
23866: using ::mpl_::_3;
23866:
23866: namespace placeholders {
23866: using mpl_::_3;
23866: }
23866:
23866: }}
23866: namespace mpl_ {
23866: typedef arg<4> _4;
23866:
23866: }
23866: namespace boost { namespace mpl {
23866:
23866: using ::mpl_::_4;
23866:
23866: namespace placeholders {
23866: using mpl_::_4;
23866: }
23866:
23866: }}
23866: namespace mpl_ {
23866: typedef arg<5> _5;
23866:
23866: }
23866: namespace boost { namespace mpl {
23866:
23866: using ::mpl_::_5;
23866:
23866: namespace placeholders {
23866: using mpl_::_5;
23866: }
23866:
23866: }}
23866: namespace mpl_ {
23866: typedef arg<6> _6;
23866:
23866: }
23866: namespace boost { namespace mpl {
23866:
23866: using ::mpl_::_6;
23866:
23866: namespace placeholders {
23866: using mpl_::_6;
23866: }
23866:
23866: }}
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 44 "/usr/include/boost/mpl/placeholders.hpp" 2 3 4
23866: # 17 "/usr/include/boost/iterator/iterator_categories.hpp" 2 3 4
23866: # 25 "/usr/include/boost/iterator/iterator_categories.hpp" 3 4
23866: namespace boost {
23866: namespace iterators {
23866:
23866:
23866:
23866:
23866:
23866: struct no_traversal_tag {};
23866:
23866: struct incrementable_traversal_tag
23866: : no_traversal_tag
23866: {
23866:
23866:
23866: };
23866:
23866: struct single_pass_traversal_tag
23866: : incrementable_traversal_tag
23866: {
23866:
23866:
23866: };
23866:
23866: struct forward_traversal_tag
23866: : single_pass_traversal_tag
23866: {
23866:
23866:
23866: };
23866:
23866: struct bidirectional_traversal_tag
23866: : forward_traversal_tag
23866: {
23866:
23866:
23866: };
23866:
23866: struct random_access_traversal_tag
23866: : bidirectional_traversal_tag
23866: {
23866:
23866:
23866: };
23866:
23866: namespace detail
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class Cat>
23866: struct old_category_to_traversal
23866: : mpl::eval_if<
23866: is_convertible<Cat,std::random_access_iterator_tag>
23866: , mpl::identity<random_access_traversal_tag>
23866: , mpl::eval_if<
23866: is_convertible<Cat,std::bidirectional_iterator_tag>
23866: , mpl::identity<bidirectional_traversal_tag>
23866: , mpl::eval_if<
23866: is_convertible<Cat,std::forward_iterator_tag>
23866: , mpl::identity<forward_traversal_tag>
23866: , mpl::eval_if<
23866: is_convertible<Cat,std::input_iterator_tag>
23866: , mpl::identity<single_pass_traversal_tag>
23866: , mpl::eval_if<
23866: is_convertible<Cat,std::output_iterator_tag>
23866: , mpl::identity<incrementable_traversal_tag>
23866: , void
23866: >
23866: >
23866: >
23866: >
23866: >
23866: {};
23866:
23866: }
23866:
23866:
23866:
23866:
23866: template <class Cat>
23866: struct iterator_category_to_traversal
23866: : mpl::eval_if<
23866: is_convertible<Cat,incrementable_traversal_tag>
23866: , mpl::identity<Cat>
23866: , boost::iterators::detail::old_category_to_traversal<Cat>
23866: >
23866: {};
23866:
23866:
23866: template <class Iterator = mpl::_1>
23866: struct iterator_traversal
23866: : iterator_category_to_traversal<
23866: typename std::iterator_traits<Iterator>::iterator_category
23866: >
23866: {};
23866: # 146 "/usr/include/boost/iterator/iterator_categories.hpp" 3 4
23866: template <class Traversal>
23866: struct pure_traversal_tag
23866: : mpl::eval_if<
23866: is_convertible<Traversal,random_access_traversal_tag>
23866: , mpl::identity<random_access_traversal_tag>
23866: , mpl::eval_if<
23866: is_convertible<Traversal,bidirectional_traversal_tag>
23866: , mpl::identity<bidirectional_traversal_tag>
23866: , mpl::eval_if<
23866: is_convertible<Traversal,forward_traversal_tag>
23866: , mpl::identity<forward_traversal_tag>
23866: , mpl::eval_if<
23866: is_convertible<Traversal,single_pass_traversal_tag>
23866: , mpl::identity<single_pass_traversal_tag>
23866: , mpl::eval_if<
23866: is_convertible<Traversal,incrementable_traversal_tag>
23866: , mpl::identity<incrementable_traversal_tag>
23866: , void
23866: >
23866: >
23866: >
23866: >
23866: >
23866: {
23866: };
23866:
23866:
23866:
23866:
23866: template <class Iterator = mpl::_1>
23866: struct pure_iterator_traversal
23866: : pure_traversal_tag<typename iterator_traversal<Iterator>::type>
23866: {};
23866: # 194 "/usr/include/boost/iterator/iterator_categories.hpp" 3 4
23866: }
23866:
23866: using iterators::no_traversal_tag;
23866: using iterators::incrementable_traversal_tag;
23866: using iterators::single_pass_traversal_tag;
23866: using iterators::forward_traversal_tag;
23866: using iterators::bidirectional_traversal_tag;
23866: using iterators::random_access_traversal_tag;
23866: using iterators::iterator_category_to_traversal;
23866: using iterators::iterator_traversal;
23866:
23866:
23866:
23866:
23866: namespace detail {
23866: using iterators::pure_traversal_tag;
23866: }
23866:
23866: }
23866:
23866: # 1 "/usr/include/boost/iterator/detail/config_undef.hpp" 1 3 4
23866: # 14 "/usr/include/boost/iterator/detail/config_undef.hpp" 3 4
23866: #undef BOOST_NO_IS_CONVERTIBLE
23866: #undef BOOST_NO_IS_CONVERTIBLE_TEMPLATE
23866: #undef BOOST_NO_STRICT_ITERATOR_INTEROPERABILITY
23866: #undef BOOST_NO_LVALUE_RETURN_DETECTION
23866: #undef BOOST_NO_ONE_WAY_ITERATOR_INTEROP
23866:
23866:
23866: #undef BOOST_ITERATOR_CONFIG_DEF
23866: # 215 "/usr/include/boost/iterator/iterator_categories.hpp" 2 3 4
23866: # 14 "/usr/include/boost/iterator/iterator_facade.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/iterator/detail/facade_iterator_category.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866: #define FACADE_ITERATOR_CATEGORY_DWA20031118_HPP
23866:
23866: # 1 "/usr/include/boost/core/use_default.hpp" 1 3 4
23866: # 9 "/usr/include/boost/core/use_default.hpp" 3 4
23866: #define BOOST_CORE_USE_DEFAULT_HPP
23866:
23866: namespace boost {
23866:
23866: struct use_default { };
23866:
23866: }
23866: # 8 "/usr/include/boost/iterator/detail/facade_iterator_category.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/and.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AND_HPP_INCLUDED
23866: # 41 "/usr/include/boost/mpl/and.hpp" 3 4
23866: #define BOOST_MPL_PREPROCESSED_HEADER and.hpp
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/and.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/and.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: namespace aux {
23866:
23866: template< bool C_, typename T1, typename T2, typename T3, typename T4 >
23866: struct and_impl
23866: : false_
23866: {
23866: };
23866:
23866: template< typename T1, typename T2, typename T3, typename T4 >
23866: struct and_impl< true,T1,T2,T3,T4 >
23866: : and_impl<
23866: ::boost::mpl::aux::nested_type_wknd<T1>::value
23866: , T2, T3, T4
23866: , true_
23866: >
23866: {
23866: };
23866:
23866: template<>
23866: struct and_impl<
23866: true
23866: , true_, true_, true_, true_
23866: >
23866: : true_
23866: {
23866: };
23866:
23866: }
23866:
23866: template<
23866: typename T1 = na
23866: , typename T2 = na
23866: , typename T3 = true_, typename T4 = true_, typename T5 = true_
23866: >
23866: struct and_
23866:
23866: : aux::and_impl<
23866: ::boost::mpl::aux::nested_type_wknd<T1>::value
23866: , T2, T3, T4, T5
23866: >
23866:
23866: {
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866: template<> struct and_< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : and_< T1 , T2 > { }; }; template< typename Tag > struct lambda< and_< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef and_< na , na > result_; typedef and_< na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > struct template_arity< and_< T1 , T2 , T3 , T4 , T5 > > : int_<5> { }; template<> struct template_arity< and_< na , na > > : int_<-1> { }; }
23866:
23866:
23866:
23866:
23866:
23866: }}
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 43 "/usr/include/boost/mpl/and.hpp" 2 3 4
23866: # 13 "/usr/include/boost/iterator/detail/facade_iterator_category.hpp" 2 3 4
23866: # 25 "/usr/include/boost/iterator/detail/facade_iterator_category.hpp" 3 4
23866: # 1 "/usr/include/boost/iterator/detail/config_def.hpp" 1 3 4
23866: # 22 "/usr/include/boost/iterator/detail/config_def.hpp" 3 4
23866: #define BOOST_ITERATOR_CONFIG_DEF
23866: # 45 "/usr/include/boost/iterator/detail/config_def.hpp" 3 4
23866: #define BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY 1
23866: # 26 "/usr/include/boost/iterator/detail/facade_iterator_category.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/detail/indirect_traits.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866: #define INDIRECT_TRAITS_DWA2002131_HPP
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/is_pointer.hpp" 1 3 4
23866: # 22 "/usr/include/boost/type_traits/is_pointer.hpp" 3 4
23866: #define BOOST_TT_IS_POINTER_HPP_INCLUDED
23866:
23866:
23866:
23866: namespace boost {
23866:
23866:
23866:
23866:
23866: template <class T> struct is_pointer : public false_type{};
23866: template <class T> struct is_pointer<T*> : public true_type{};
23866: template <class T> struct is_pointer<T*const> : public true_type{};
23866: template <class T> struct is_pointer<T*const volatile> : public true_type{};
23866: template <class T> struct is_pointer<T*volatile> : public true_type{};
23866: # 45 "/usr/include/boost/type_traits/is_pointer.hpp" 3 4
23866: }
23866: # 11 "/usr/include/boost/detail/indirect_traits.hpp" 2 3 4
23866: # 1 "/usr/include/boost/type_traits/is_class.hpp" 1 3 4
23866: # 11 "/usr/include/boost/type_traits/is_class.hpp" 3 4
23866: #define BOOST_TT_IS_CLASS_HPP_INCLUDED
23866: # 31 "/usr/include/boost/type_traits/is_class.hpp" 3 4
23866: namespace boost {
23866:
23866: namespace detail {
23866: # 96 "/usr/include/boost/type_traits/is_class.hpp" 3 4
23866: template <typename T>
23866: struct is_class_impl
23866: {
23866: static const bool value = __is_class(T);
23866: };
23866:
23866:
23866: }
23866:
23866: template <class T> struct is_class : public integral_constant<bool, ::boost::detail::is_class_impl<T>::value> {};
23866:
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 12 "/usr/include/boost/detail/indirect_traits.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/type_traits/is_volatile.hpp" 1 3 4
23866: # 22 "/usr/include/boost/type_traits/is_volatile.hpp" 3 4
23866: #define BOOST_TT_IS_VOLATILE_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: # 36 "/usr/include/boost/type_traits/is_volatile.hpp" 3 4
23866: template <class T>
23866: struct is_volatile : public false_type {};
23866: template <class T> struct is_volatile<T volatile> : public true_type{};
23866: template <class T, std::size_t N> struct is_volatile<T volatile[N]> : public true_type{};
23866: template <class T> struct is_volatile<T volatile[]> : public true_type{};
23866:
23866:
23866:
23866: }
23866: # 14 "/usr/include/boost/detail/indirect_traits.hpp" 2 3 4
23866: # 1 "/usr/include/boost/type_traits/is_member_function_pointer.hpp" 1 3 4
23866: # 12 "/usr/include/boost/type_traits/is_member_function_pointer.hpp" 3 4
23866: #define BOOST_TT_IS_MEMBER_FUNCTION_POINTER_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp" 1 3 4
23866: # 12 "/usr/include/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp" 3 4
23866: #define BOOST_TT_IS_MEMBER_FUNCTION_POINTER_CXX_11_HPP_INCLUDED
23866:
23866:
23866:
23866: namespace boost {
23866:
23866:
23866:
23866:
23866: #define BOOST_TT_DEF_CALL
23866:
23866:
23866:
23866: template <class T>
23866: struct is_member_function_pointer : public false_type {};
23866: template <class T>
23866: struct is_member_function_pointer<T const> : public is_member_function_pointer<T> {};
23866: template <class T>
23866: struct is_member_function_pointer<T volatile> : public is_member_function_pointer<T> {};
23866: template <class T>
23866: struct is_member_function_pointer<T const volatile> : public is_member_function_pointer<T> {};
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_TT_NOEXCEPT_PARAM , bool NE
23866: #define BOOST_TT_NOEXCEPT_DECL noexcept(NE)
23866:
23866:
23866:
23866:
23866:
23866: template <class Ret, class C, class...Args , bool NE>
23866: struct is_member_function_pointer<Ret ( C::*)(Args...)noexcept(NE)> : public true_type {};
23866: template <class Ret, class C, class ...Args , bool NE>
23866: struct is_member_function_pointer<Ret (C::*)(Args..., ...)noexcept(NE)> : public true_type {};
23866:
23866: template <class Ret, class C, class...Args , bool NE>
23866: struct is_member_function_pointer<Ret ( C::*)(Args...)const noexcept(NE)> : public true_type {};
23866: template <class Ret, class C, class ...Args , bool NE>
23866: struct is_member_function_pointer<Ret(C::*)(Args..., ...)const noexcept(NE)> : public true_type {};
23866:
23866: template <class Ret, class C, class...Args , bool NE>
23866: struct is_member_function_pointer<Ret ( C::*)(Args...)volatile noexcept(NE)> : public true_type {};
23866: template <class Ret, class C, class ...Args , bool NE>
23866: struct is_member_function_pointer<Ret(C::*)(Args..., ...)volatile noexcept(NE)> : public true_type {};
23866:
23866: template <class Ret, class C, class...Args , bool NE>
23866: struct is_member_function_pointer<Ret ( C::*)(Args...)const volatile noexcept(NE)> : public true_type {};
23866: template <class Ret, class C, class ...Args , bool NE>
23866: struct is_member_function_pointer<Ret(C::*)(Args..., ...)const volatile noexcept(NE)> : public true_type {};
23866:
23866:
23866:
23866: template <class Ret, class C, class...Args , bool NE>
23866: struct is_member_function_pointer<Ret ( C::*)(Args...)& noexcept(NE)> : public true_type {};
23866: template <class Ret, class C, class ...Args , bool NE>
23866: struct is_member_function_pointer<Ret(C::*)(Args..., ...)& noexcept(NE)> : public true_type {};
23866:
23866: template <class Ret, class C, class...Args , bool NE>
23866: struct is_member_function_pointer<Ret ( C::*)(Args...)const & noexcept(NE)> : public true_type {};
23866: template <class Ret, class C, class ...Args , bool NE>
23866: struct is_member_function_pointer<Ret(C::*)(Args..., ...)const & noexcept(NE)> : public true_type {};
23866:
23866: template <class Ret, class C, class...Args , bool NE>
23866: struct is_member_function_pointer<Ret ( C::*)(Args...)volatile & noexcept(NE)> : public true_type {};
23866: template <class Ret, class C, class ...Args , bool NE>
23866: struct is_member_function_pointer<Ret(C::*)(Args..., ...)volatile & noexcept(NE)> : public true_type {};
23866:
23866: template <class Ret, class C, class...Args , bool NE>
23866: struct is_member_function_pointer<Ret ( C::*)(Args...)const volatile & noexcept(NE)> : public true_type {};
23866: template <class Ret, class C, class ...Args , bool NE>
23866: struct is_member_function_pointer<Ret(C::*)(Args..., ...)const volatile & noexcept(NE)> : public true_type {};
23866:
23866:
23866:
23866: template <class Ret, class C, class...Args , bool NE>
23866: struct is_member_function_pointer<Ret ( C::*)(Args...) && noexcept(NE)> : public true_type {};
23866: template <class Ret, class C, class ...Args , bool NE>
23866: struct is_member_function_pointer<Ret(C::*)(Args..., ...) && noexcept(NE)> : public true_type {};
23866:
23866: template <class Ret, class C, class...Args , bool NE>
23866: struct is_member_function_pointer<Ret ( C::*)(Args...)const && noexcept(NE)> : public true_type {};
23866: template <class Ret, class C, class ...Args , bool NE>
23866: struct is_member_function_pointer<Ret(C::*)(Args..., ...)const && noexcept(NE)> : public true_type {};
23866:
23866: template <class Ret, class C, class...Args , bool NE>
23866: struct is_member_function_pointer<Ret ( C::*)(Args...)volatile && noexcept(NE)> : public true_type {};
23866: template <class Ret, class C, class ...Args , bool NE>
23866: struct is_member_function_pointer<Ret(C::*)(Args..., ...)volatile && noexcept(NE)> : public true_type {};
23866:
23866: template <class Ret, class C, class...Args , bool NE>
23866: struct is_member_function_pointer<Ret ( C::*)(Args...)const volatile && noexcept(NE)> : public true_type {};
23866: template <class Ret, class C, class ...Args , bool NE>
23866: struct is_member_function_pointer<Ret(C::*)(Args..., ...)const volatile && noexcept(NE)> : public true_type {};
23866: # 667 "/usr/include/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp" 3 4
23866: #undef BOOST_TT_NOEXCEPT_DECL
23866: #undef BOOST_TT_NOEXCEPT_PARAM
23866: #undef BOOST_TT_DEF_CALL
23866: }
23866: # 19 "/usr/include/boost/type_traits/is_member_function_pointer.hpp" 2 3 4
23866: # 15 "/usr/include/boost/detail/indirect_traits.hpp" 2 3 4
23866: # 1 "/usr/include/boost/type_traits/is_member_pointer.hpp" 1 3 4
23866: # 22 "/usr/include/boost/type_traits/is_member_pointer.hpp" 3 4
23866: #define BOOST_TT_IS_MEMBER_POINTER_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866: namespace boost {
23866:
23866:
23866:
23866:
23866: template <class T> struct is_member_pointer : public integral_constant<bool, ::boost::is_member_function_pointer<T>::value>{};
23866: template <class T, class U> struct is_member_pointer<U T::* > : public true_type{};
23866:
23866:
23866: template <class T, class U> struct is_member_pointer<U T::*const> : public true_type{};
23866: template <class T, class U> struct is_member_pointer<U T::*const volatile> : public true_type{};
23866: template <class T, class U> struct is_member_pointer<U T::*volatile> : public true_type{};
23866:
23866:
23866:
23866:
23866: }
23866: # 16 "/usr/include/boost/detail/indirect_traits.hpp" 2 3 4
23866: # 1 "/usr/include/boost/type_traits/remove_cv.hpp" 1 3 4
23866: # 12 "/usr/include/boost/type_traits/remove_cv.hpp" 3 4
23866: #define BOOST_TT_REMOVE_CV_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866:
23866:
23866: template <class T> struct remove_cv{ typedef T type; };
23866: template <class T> struct remove_cv<T const>{ typedef T type; };
23866: template <class T> struct remove_cv<T volatile>{ typedef T type; };
23866: template <class T> struct remove_cv<T const volatile>{ typedef T type; };
23866:
23866:
23866: template <class T, std::size_t N> struct remove_cv<T const[N]>{ typedef T type[N]; };
23866: template <class T, std::size_t N> struct remove_cv<T const volatile[N]>{ typedef T type[N]; };
23866: template <class T, std::size_t N> struct remove_cv<T volatile[N]>{ typedef T type[N]; };
23866:
23866: template <class T> struct remove_cv<T const[]>{ typedef T type[]; };
23866: template <class T> struct remove_cv<T const volatile[]>{ typedef T type[]; };
23866: template <class T> struct remove_cv<T volatile[]>{ typedef T type[]; };
23866:
23866:
23866:
23866:
23866:
23866: template <class T> using remove_cv_t = typename remove_cv<T>::type;
23866:
23866:
23866:
23866: }
23866: # 17 "/usr/include/boost/detail/indirect_traits.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/type_traits/remove_pointer.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/remove_pointer.hpp" 3 4
23866: #define BOOST_TT_REMOVE_POINTER_HPP_INCLUDED
23866: # 20 "/usr/include/boost/type_traits/remove_pointer.hpp" 3 4
23866: namespace boost {
23866: # 68 "/usr/include/boost/type_traits/remove_pointer.hpp" 3 4
23866: template <class T> struct remove_pointer{ typedef T type; };
23866: template <class T> struct remove_pointer<T*>{ typedef T type; };
23866: template <class T> struct remove_pointer<T*const>{ typedef T type; };
23866: template <class T> struct remove_pointer<T*volatile>{ typedef T type; };
23866: template <class T> struct remove_pointer<T*const volatile>{ typedef T type; };
23866:
23866:
23866:
23866:
23866:
23866: template <class T> using remove_pointer_t = typename remove_pointer<T>::type;
23866:
23866:
23866:
23866: }
23866: # 19 "/usr/include/boost/detail/indirect_traits.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/detail/select_type.hpp" 1 3 4
23866: # 14 "/usr/include/boost/detail/select_type.hpp" 3 4
23866: #define SELECT_TYPE_DWA20010206_HPP
23866:
23866: namespace boost { namespace detail {
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <bool b> struct if_true
23866: {
23866: template <class T, class F>
23866: struct then { typedef T type; };
23866: };
23866:
23866: template <>
23866: struct if_true<false>
23866: {
23866: template <class T, class F>
23866: struct then { typedef F type; };
23866: };
23866: }}
23866: # 22 "/usr/include/boost/detail/indirect_traits.hpp" 2 3 4
23866:
23866:
23866: namespace boost { namespace detail {
23866:
23866: namespace indirect_traits {
23866:
23866: template <class T>
23866: struct is_reference_to_const : boost::false_type
23866: {
23866: };
23866:
23866: template <class T>
23866: struct is_reference_to_const<T const&> : boost::true_type
23866: {
23866: };
23866: # 45 "/usr/include/boost/detail/indirect_traits.hpp" 3 4
23866: template <class T>
23866: struct is_reference_to_function : boost::false_type
23866: {
23866: };
23866:
23866: template <class T>
23866: struct is_reference_to_function<T&> : is_function<T>
23866: {
23866: };
23866:
23866: template <class T>
23866: struct is_pointer_to_function : boost::false_type
23866: {
23866: };
23866:
23866:
23866:
23866: template <class T>
23866: struct is_pointer_to_function<T*> : is_function<T>
23866: {
23866: };
23866:
23866: template <class T>
23866: struct is_reference_to_member_function_pointer_impl : boost::false_type
23866: {
23866: };
23866:
23866: template <class T>
23866: struct is_reference_to_member_function_pointer_impl<T&>
23866: : is_member_function_pointer<typename remove_cv<T>::type>
23866: {
23866: };
23866:
23866:
23866: template <class T>
23866: struct is_reference_to_member_function_pointer
23866: : is_reference_to_member_function_pointer_impl<T>
23866: {
23866: };
23866:
23866: template <class T>
23866: struct is_reference_to_function_pointer_aux
23866: : boost::integral_constant<bool,
23866: is_reference<T>::value &&
23866: is_pointer_to_function<
23866: typename remove_cv<
23866: typename remove_reference<T>::type
23866: >::type
23866: >::value
23866: >
23866: {
23866:
23866: };
23866:
23866: template <class T>
23866: struct is_reference_to_function_pointer
23866: : boost::detail::if_true<
23866: is_reference_to_function<T>::value
23866: >::template then<
23866: boost::false_type
23866: , is_reference_to_function_pointer_aux<T>
23866: >::type
23866: {
23866: };
23866:
23866: template <class T>
23866: struct is_reference_to_non_const
23866: : boost::integral_constant<bool,
23866: is_reference<T>::value &&
23866: !is_reference_to_const<T>::value
23866: >
23866: {
23866: };
23866:
23866: template <class T>
23866: struct is_reference_to_volatile : boost::false_type
23866: {
23866: };
23866:
23866: template <class T>
23866: struct is_reference_to_volatile<T volatile&> : boost::true_type
23866: {
23866: };
23866: # 137 "/usr/include/boost/detail/indirect_traits.hpp" 3 4
23866: template <class T>
23866: struct is_reference_to_pointer : boost::false_type
23866: {
23866: };
23866:
23866: template <class T>
23866: struct is_reference_to_pointer<T*&> : boost::true_type
23866: {
23866: };
23866:
23866: template <class T>
23866: struct is_reference_to_pointer<T* const&> : boost::true_type
23866: {
23866: };
23866:
23866: template <class T>
23866: struct is_reference_to_pointer<T* volatile&> : boost::true_type
23866: {
23866: };
23866:
23866: template <class T>
23866: struct is_reference_to_pointer<T* const volatile&> : boost::true_type
23866: {
23866: };
23866:
23866: template <class T>
23866: struct is_reference_to_class
23866: : boost::integral_constant<bool,
23866: is_reference<T>::value &&
23866: is_class<
23866: typename remove_cv<
23866: typename remove_reference<T>::type
23866: >::type
23866: >::value
23866: >
23866: {
23866: };
23866:
23866: template <class T>
23866: struct is_pointer_to_class
23866: : boost::integral_constant<bool,
23866: is_pointer<T>::value &&
23866: is_class<
23866: typename remove_cv<
23866: typename remove_pointer<T>::type
23866: >::type
23866: >::value
23866: >
23866: {
23866: };
23866:
23866:
23866: }
23866:
23866: using namespace indirect_traits;
23866:
23866: }}
23866: # 29 "/usr/include/boost/iterator/detail/facade_iterator_category.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace iterators {
23866:
23866: using boost::use_default;
23866:
23866: namespace detail {
23866:
23866: struct input_output_iterator_tag
23866: : std::input_iterator_tag
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: operator std::output_iterator_tag() const
23866: {
23866: return std::output_iterator_tag();
23866: }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class ValueParam, class Reference>
23866: struct iterator_writability_disabled
23866:
23866: : mpl::or_<
23866: is_const<Reference>
23866: , boost::detail::indirect_traits::is_reference_to_const<Reference>
23866: , is_const<ValueParam>
23866: >
23866:
23866:
23866:
23866: {};
23866: # 84 "/usr/include/boost/iterator/detail/facade_iterator_category.hpp" 3 4
23866: template <class Traversal, class ValueParam, class Reference>
23866: struct iterator_facade_default_category
23866: : mpl::eval_if<
23866: mpl::and_<
23866: is_reference<Reference>
23866: , is_convertible<Traversal,forward_traversal_tag>
23866: >
23866: , mpl::eval_if<
23866: is_convertible<Traversal,random_access_traversal_tag>
23866: , mpl::identity<std::random_access_iterator_tag>
23866: , mpl::if_<
23866: is_convertible<Traversal,bidirectional_traversal_tag>
23866: , std::bidirectional_iterator_tag
23866: , std::forward_iterator_tag
23866: >
23866: >
23866: , typename mpl::eval_if<
23866: mpl::and_<
23866: is_convertible<Traversal, single_pass_traversal_tag>
23866:
23866:
23866: , is_convertible<Reference, ValueParam>
23866: >
23866: , mpl::identity<std::input_iterator_tag>
23866: , mpl::identity<Traversal>
23866: >
23866: >
23866: {
23866: };
23866:
23866:
23866: template <class T>
23866: struct is_iterator_category
23866: : mpl::or_<
23866: is_convertible<T,std::input_iterator_tag>
23866: , is_convertible<T,std::output_iterator_tag>
23866: >
23866: {
23866: };
23866:
23866: template <class T>
23866: struct is_iterator_traversal
23866: : is_convertible<T,incrementable_traversal_tag>
23866: {};
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class Category, class Traversal>
23866: struct iterator_category_with_traversal
23866: : Category, Traversal
23866: {
23866:
23866:
23866:
23866: enum { mpl_assertion_in_line_142 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_not_arg( (void (*) ( is_convertible< typename iterator_category_to_traversal<Category>::type , Traversal >))0, 1 ) ) ) }
23866:
23866:
23866:
23866: ;
23866:
23866: enum { mpl_assertion_in_line_148 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_arg( (void (*) (is_iterator_category<Category>))0, 1 ) ) ) };
23866: enum { mpl_assertion_in_line_149 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_not_arg( (void (*) (is_iterator_category<Traversal>))0, 1 ) ) ) };
23866: enum { mpl_assertion_in_line_150 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_not_arg( (void (*) (is_iterator_traversal<Category>))0, 1 ) ) ) };
23866:
23866: enum { mpl_assertion_in_line_152 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_arg( (void (*) (is_iterator_traversal<Traversal>))0, 1 ) ) ) };
23866:
23866: };
23866:
23866:
23866:
23866: template <class Traversal, class ValueParam, class Reference>
23866: struct facade_iterator_category_impl
23866: {
23866: enum { mpl_assertion_in_line_161 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_not_arg( (void (*) (is_iterator_category<Traversal>))0, 1 ) ) ) };
23866:
23866: typedef typename iterator_facade_default_category<
23866: Traversal,ValueParam,Reference
23866: >::type category;
23866:
23866: typedef typename mpl::if_<
23866: is_same<
23866: Traversal
23866: , typename iterator_category_to_traversal<category>::type
23866: >
23866: , category
23866: , iterator_category_with_traversal<category,Traversal>
23866: >::type type;
23866: };
23866:
23866:
23866:
23866:
23866: template <class CategoryOrTraversal, class ValueParam, class Reference>
23866: struct facade_iterator_category
23866: : mpl::eval_if<
23866: is_iterator_category<CategoryOrTraversal>
23866: , mpl::identity<CategoryOrTraversal>
23866: , facade_iterator_category_impl<CategoryOrTraversal,ValueParam,Reference>
23866: >
23866: {
23866: };
23866:
23866: }}}
23866:
23866: # 1 "/usr/include/boost/iterator/detail/config_undef.hpp" 1 3 4
23866: # 14 "/usr/include/boost/iterator/detail/config_undef.hpp" 3 4
23866: #undef BOOST_NO_IS_CONVERTIBLE
23866: #undef BOOST_NO_IS_CONVERTIBLE_TEMPLATE
23866: #undef BOOST_NO_STRICT_ITERATOR_INTEROPERABILITY
23866: #undef BOOST_NO_LVALUE_RETURN_DETECTION
23866: #undef BOOST_NO_ONE_WAY_ITERATOR_INTEROP
23866:
23866:
23866: #undef BOOST_ITERATOR_CONFIG_DEF
23866: # 193 "/usr/include/boost/iterator/detail/facade_iterator_category.hpp" 2 3 4
23866: # 16 "/usr/include/boost/iterator/iterator_facade.hpp" 2 3 4
23866: # 1 "/usr/include/boost/iterator/detail/enable_if.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_ENABLE_IF_23022003THW_HPP
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/iterator/detail/config_def.hpp" 1 3 4
23866: # 22 "/usr/include/boost/iterator/detail/config_def.hpp" 3 4
23866: #define BOOST_ITERATOR_CONFIG_DEF
23866: # 45 "/usr/include/boost/iterator/detail/config_def.hpp" 3 4
23866: #define BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY 1
23866: # 14 "/usr/include/boost/iterator/detail/enable_if.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost
23866: {
23866:
23866: namespace iterators
23866: {
23866:
23866:
23866:
23866: template<bool>
23866: struct enabled
23866: {
23866: template<typename T>
23866: struct base
23866: {
23866: typedef T type;
23866: };
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<>
23866: struct enabled<false>
23866: {
23866: template<typename T>
23866: struct base
23866: {
23866: # 62 "/usr/include/boost/iterator/detail/enable_if.hpp" 3 4
23866: };
23866: };
23866:
23866:
23866: template <class Cond,
23866: class Return>
23866: struct enable_if
23866:
23866: : enabled<(Cond::value)>::template base<Return>
23866:
23866:
23866:
23866: {
23866: };
23866:
23866: }
23866:
23866: }
23866:
23866: # 1 "/usr/include/boost/iterator/detail/config_undef.hpp" 1 3 4
23866: # 14 "/usr/include/boost/iterator/detail/config_undef.hpp" 3 4
23866: #undef BOOST_NO_IS_CONVERTIBLE
23866: #undef BOOST_NO_IS_CONVERTIBLE_TEMPLATE
23866: #undef BOOST_NO_STRICT_ITERATOR_INTEROPERABILITY
23866: #undef BOOST_NO_LVALUE_RETURN_DETECTION
23866: #undef BOOST_NO_ONE_WAY_ITERATOR_INTEROP
23866:
23866:
23866: #undef BOOST_ITERATOR_CONFIG_DEF
23866: # 82 "/usr/include/boost/iterator/detail/enable_if.hpp" 2 3 4
23866: # 17 "/usr/include/boost/iterator/iterator_facade.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/core/addressof.hpp" 1 3 4
23866: # 15 "/usr/include/boost/core/addressof.hpp" 3 4
23866: #define BOOST_CORE_ADDRESSOF_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_CORE_HAS_BUILTIN_ADDRESSOF
23866: # 34 "/usr/include/boost/core/addressof.hpp" 3 4
23866: namespace boost {
23866:
23866: template<class T>
23866: constexpr inline T*
23866: addressof(T& o) noexcept
23866: {
23866: return __builtin_addressof(o);
23866: }
23866:
23866: }
23866: # 266 "/usr/include/boost/core/addressof.hpp" 3 4
23866: namespace boost {
23866:
23866: template<class T>
23866: const T* addressof(const T&&) = delete;
23866:
23866: }
23866: # 20 "/usr/include/boost/iterator/iterator_facade.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/add_const.hpp" 1 3 4
23866: # 11 "/usr/include/boost/type_traits/add_const.hpp" 3 4
23866: #define BOOST_TT_ADD_CONST_HPP_INCLUDED
23866:
23866:
23866:
23866: namespace boost {
23866: # 30 "/usr/include/boost/type_traits/add_const.hpp" 3 4
23866: template <class T> struct add_const
23866: {
23866: typedef T const type;
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template <class T> struct add_const<T&>
23866: {
23866: typedef T& type;
23866: };
23866:
23866:
23866:
23866: template <class T> using add_const_t = typename add_const<T>::type;
23866:
23866:
23866:
23866: }
23866: # 23 "/usr/include/boost/iterator/iterator_facade.hpp" 2 3 4
23866: # 1 "/usr/include/boost/type_traits/add_pointer.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/add_pointer.hpp" 3 4
23866: #define BOOST_TT_ADD_POINTER_HPP_INCLUDED
23866:
23866:
23866:
23866: namespace boost {
23866: # 50 "/usr/include/boost/type_traits/add_pointer.hpp" 3 4
23866: template <typename T>
23866: struct add_pointer
23866: {
23866: typedef typename remove_reference<T>::type no_ref_type;
23866: typedef no_ref_type* type;
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template <class T> using add_pointer_t = typename add_pointer<T>::type;
23866:
23866:
23866:
23866: }
23866: # 24 "/usr/include/boost/iterator/iterator_facade.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/is_pod.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/is_pod.hpp" 3 4
23866: #define BOOST_TT_IS_POD_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/is_scalar.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/is_scalar.hpp" 3 4
23866: #define BOOST_TT_IS_SCALAR_HPP_INCLUDED
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/is_enum.hpp" 1 3 4
23866: # 12 "/usr/include/boost/type_traits/is_enum.hpp" 3 4
23866: #define BOOST_TT_IS_ENUM_HPP_INCLUDED
23866: # 32 "/usr/include/boost/type_traits/is_enum.hpp" 3 4
23866: namespace boost {
23866: # 160 "/usr/include/boost/type_traits/is_enum.hpp" 3 4
23866: template <class T> struct is_enum : public integral_constant<bool, __is_enum(T)> {};
23866:
23866:
23866:
23866: }
23866: # 14 "/usr/include/boost/type_traits/is_scalar.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: namespace boost {
23866:
23866: template <typename T>
23866: struct is_scalar
23866: : public integral_constant<bool, ::boost::is_arithmetic<T>::value || ::boost::is_enum<T>::value || ::boost::is_pointer<T>::value || ::boost::is_member_pointer<T>::value>
23866: {};
23866:
23866: }
23866: # 16 "/usr/include/boost/type_traits/is_pod.hpp" 2 3 4
23866: # 27 "/usr/include/boost/type_traits/is_pod.hpp" 3 4
23866: #define BOOST_INTERNAL_IS_POD(T) BOOST_IS_POD(T)
23866:
23866:
23866: namespace boost {
23866:
23866:
23866: template< typename T > struct is_POD;
23866:
23866: template <typename T> struct is_pod
23866: : public integral_constant<bool, ::boost::is_scalar<T>::value || ::boost::is_void<T>::value || __is_pod(T)>
23866: {};
23866:
23866:
23866: template <typename T, std::size_t sz> struct is_pod<T[sz]> : public is_pod<T>{};
23866:
23866:
23866:
23866:
23866: template<> struct is_pod<void> : public true_type{};
23866:
23866:
23866: template<> struct is_pod<void const> : public true_type{};
23866: template<> struct is_pod<void const volatile> : public true_type{};
23866: template<> struct is_pod<void volatile> : public true_type{};
23866:
23866:
23866: template<class T> struct is_POD : public is_pod<T>{};
23866:
23866: }
23866:
23866: #undef BOOST_INTERNAL_IS_POD
23866: # 29 "/usr/include/boost/iterator/iterator_facade.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/always.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_ALWAYS_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/always.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessor/default_params.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_PREPROCESSOR_DEFAULT_PARAMS_HPP_INCLUDED
23866: # 51 "/usr/include/boost/mpl/aux_/preprocessor/default_params.hpp" 3 4
23866: #define BOOST_MPL_PP_AUX_DEFAULT_PARAM_FUNC(unused,i,pv) BOOST_PP_COMMA_IF(i) BOOST_PP_CAT( BOOST_PP_TUPLE_ELEM(2,0,pv), BOOST_PP_INC(i) ) = BOOST_PP_TUPLE_ELEM(2,1,pv)
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_PP_DEFAULT_PARAMS(n,param,value) BOOST_PP_REPEAT( n , BOOST_MPL_PP_AUX_DEFAULT_PARAM_FUNC , (param,value) )
23866: # 18 "/usr/include/boost/mpl/always.hpp" 2 3 4
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template< typename Value > struct always
23866: {
23866: template<
23866: typename T1 = na , typename T2 = na , typename T3 = na , typename T4 = na , typename T5 = na
23866: >
23866: struct apply
23866: {
23866: typedef Value type;
23866: };
23866: };
23866:
23866:
23866:
23866: }}
23866: # 36 "/usr/include/boost/iterator/iterator_facade.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/apply.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_APPLY_HPP_INCLUDED
23866: # 22 "/usr/include/boost/mpl/apply.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/apply_fwd.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_APPLY_FWD_HPP_INCLUDED
23866: # 30 "/usr/include/boost/mpl/apply_fwd.hpp" 3 4
23866: #define BOOST_MPL_PREPROCESSED_HEADER apply_fwd.hpp
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename F, typename T1 = na, typename T2 = na, typename T3 = na
23866: , typename T4 = na, typename T5 = na
23866: >
23866: struct apply;
23866:
23866: template<
23866: typename F
23866: >
23866: struct apply0;
23866:
23866: template<
23866: typename F, typename T1
23866: >
23866: struct apply1;
23866:
23866: template<
23866: typename F, typename T1, typename T2
23866: >
23866: struct apply2;
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3
23866: >
23866: struct apply3;
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3, typename T4
23866: >
23866: struct apply4;
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3, typename T4
23866: , typename T5
23866: >
23866: struct apply5;
23866:
23866: }}
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 32 "/usr/include/boost/mpl/apply_fwd.hpp" 2 3 4
23866: # 23 "/usr/include/boost/mpl/apply.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/apply_wrap.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_APPLY_WRAP_HPP_INCLUDED
23866: # 23 "/usr/include/boost/mpl/apply_wrap.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/has_apply.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_HAS_APPLY_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/aux_/has_apply.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/config/has_apply.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CONFIG_HAS_APPLY_HPP_INCLUDED
23866: # 19 "/usr/include/boost/mpl/aux_/has_apply.hpp" 2 3 4
23866:
23866: namespace boost { namespace mpl { namespace aux {
23866:
23866: template< typename T, typename fallback_ = boost::mpl::bool_<false> > struct has_apply { struct gcc_3_2_wknd { template< typename U > static boost::mpl::aux::yes_tag test( boost::mpl::aux::type_wrapper<U> const volatile* , boost::mpl::aux::type_wrapper<typename U::apply>* = 0 ); static boost::mpl::aux::no_tag test(...); }; typedef boost::mpl::aux::type_wrapper<T> t_; static const bool value = sizeof(gcc_3_2_wknd::test(static_cast<t_*>(0))) == sizeof(boost::mpl::aux::yes_tag); typedef boost::mpl::bool_<value> type; };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: }}}
23866: # 24 "/usr/include/boost/mpl/apply_wrap.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/msvc_never_true.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_MSVC_NEVER_TRUE_HPP_INCLUDED
23866: # 26 "/usr/include/boost/mpl/apply_wrap.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_PREPROCESSED_HEADER apply_wrap.hpp
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename F
23866:
23866: , typename has_apply_ = typename aux::has_apply<F>::type
23866:
23866: >
23866: struct apply_wrap0
23866:
23866: : F::template apply< >
23866: {
23866: };
23866:
23866: template< typename F >
23866: struct apply_wrap0< F,true_ >
23866: : F::apply
23866: {
23866: };
23866:
23866: template<
23866: typename F, typename T1
23866:
23866: >
23866: struct apply_wrap1
23866:
23866: : F::template apply<T1>
23866: {
23866: };
23866:
23866: template<
23866: typename F, typename T1, typename T2
23866:
23866: >
23866: struct apply_wrap2
23866:
23866: : F::template apply< T1,T2 >
23866: {
23866: };
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3
23866:
23866: >
23866: struct apply_wrap3
23866:
23866: : F::template apply< T1,T2,T3 >
23866: {
23866: };
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3, typename T4
23866:
23866: >
23866: struct apply_wrap4
23866:
23866: : F::template apply< T1,T2,T3,T4 >
23866: {
23866: };
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3, typename T4
23866: , typename T5
23866:
23866: >
23866: struct apply_wrap5
23866:
23866: : F::template apply< T1,T2,T3,T4,T5 >
23866: {
23866: };
23866:
23866: }}
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 35 "/usr/include/boost/mpl/apply_wrap.hpp" 2 3 4
23866: # 24 "/usr/include/boost/mpl/apply.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/placeholders.hpp" 1 3 4
23866: # 25 "/usr/include/boost/mpl/apply.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/lambda.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_LAMBDA_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/lambda.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/bind.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_BIND_HPP_INCLUDED
23866: # 23 "/usr/include/boost/mpl/bind.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/bind_fwd.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_BIND_FWD_HPP_INCLUDED
23866: # 25 "/usr/include/boost/mpl/bind_fwd.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/config/bind.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CONFIG_BIND_HPP_INCLUDED
23866: # 26 "/usr/include/boost/mpl/bind_fwd.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_PREPROCESSED_HEADER bind_fwd.hpp
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename F, typename T1 = na, typename T2 = na, typename T3 = na
23866: , typename T4 = na, typename T5 = na
23866: >
23866: struct bind;
23866:
23866: template<
23866: typename F
23866: >
23866: struct bind0;
23866:
23866: template<
23866: typename F, typename T1
23866: >
23866: struct bind1;
23866:
23866: template<
23866: typename F, typename T1, typename T2
23866: >
23866: struct bind2;
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3
23866: >
23866: struct bind3;
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3, typename T4
23866: >
23866: struct bind4;
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3, typename T4
23866: , typename T5
23866: >
23866: struct bind5;
23866:
23866: }}
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 33 "/usr/include/boost/mpl/bind_fwd.hpp" 2 3 4
23866: # 24 "/usr/include/boost/mpl/bind.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/placeholders.hpp" 1 3 4
23866: # 25 "/usr/include/boost/mpl/bind.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/next.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_NEXT_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/next.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/next_prior.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_NEXT_PRIOR_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/next_prior.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/common_name_wknd.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_COMMON_NAME_WKND_HPP_INCLUDED
23866: # 30 "/usr/include/boost/mpl/aux_/common_name_wknd.hpp" 3 4
23866: #define BOOST_MPL_AUX_COMMON_NAME_WKND(name)
23866: # 18 "/usr/include/boost/mpl/next_prior.hpp" 2 3 4
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866:
23866:
23866:
23866: template<
23866: typename T = na
23866: >
23866: struct next
23866: {
23866: typedef typename T::next type;
23866:
23866: };
23866:
23866: template<
23866: typename T = na
23866: >
23866: struct prior
23866: {
23866: typedef typename T::prior type;
23866:
23866: };
23866:
23866: template<> struct next< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : next< T1 > { }; }; template< typename Tag > struct lambda< next< na > , Tag , int_<-1> > { typedef false_ is_le; typedef next< na > result_; typedef next< na > type; }; namespace aux { template< typename T1 > struct template_arity< next< T1 > > : int_<1> { }; template<> struct template_arity< next< na > > : int_<-1> { }; }
23866: template<> struct prior< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : prior< T1 > { }; }; template< typename Tag > struct lambda< prior< na > , Tag , int_<-1> > { typedef false_ is_le; typedef prior< na > result_; typedef prior< na > type; }; namespace aux { template< typename T1 > struct template_arity< prior< T1 > > : int_<1> { }; template<> struct template_arity< prior< na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 18 "/usr/include/boost/mpl/next.hpp" 2 3 4
23866: # 26 "/usr/include/boost/mpl/bind.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/protect.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_PROTECT_HPP_INCLUDED
23866: # 23 "/usr/include/boost/mpl/protect.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename T = na
23866: , int not_le_ = 0
23866: >
23866: struct protect : T
23866: {
23866:
23866:
23866:
23866: typedef protect type;
23866:
23866: };
23866: # 48 "/usr/include/boost/mpl/protect.hpp" 3 4
23866: template<> struct protect< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : protect< T1 > { }; };
23866:
23866: namespace aux { template< typename T1 > struct template_arity< protect< T1 > > : int_<1> { }; template<> struct template_arity< protect< na > > : int_<-1> { }; }
23866:
23866:
23866: }}
23866: # 27 "/usr/include/boost/mpl/bind.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/apply_wrap.hpp" 1 3 4
23866: # 28 "/usr/include/boost/mpl/bind.hpp" 2 3 4
23866: # 48 "/usr/include/boost/mpl/bind.hpp" 3 4
23866: #define BOOST_MPL_PREPROCESSED_HEADER bind.hpp
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/bind.hpp" 1 3 4
23866: # 13 "/usr/include/boost/mpl/aux_/preprocessed/gcc/bind.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: namespace aux {
23866:
23866: template<
23866: typename T, typename U1, typename U2, typename U3, typename U4
23866: , typename U5
23866: >
23866: struct resolve_bind_arg
23866: {
23866: typedef T type;
23866: };
23866:
23866: template<
23866: typename T
23866: , typename Arg
23866: >
23866: struct replace_unnamed_arg
23866: {
23866: typedef Arg next;
23866: typedef T type;
23866: };
23866:
23866: template<
23866: typename Arg
23866: >
23866: struct replace_unnamed_arg< arg< -1 >, Arg >
23866: {
23866: typedef typename Arg::next next;
23866: typedef Arg type;
23866: };
23866:
23866: template<
23866: int N, typename U1, typename U2, typename U3, typename U4, typename U5
23866: >
23866: struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
23866: {
23866: typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
23866: };
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename U1, typename U2, typename U3, typename U4
23866: , typename U5
23866: >
23866: struct resolve_bind_arg< bind< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5 >
23866: {
23866: typedef bind< F,T1,T2,T3,T4,T5 > f_;
23866: typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
23866: };
23866:
23866: }
23866:
23866: template<
23866: typename F
23866: >
23866: struct bind0
23866: {
23866: template<
23866: typename U1 = na, typename U2 = na, typename U3 = na
23866: , typename U4 = na, typename U5 = na
23866: >
23866: struct apply
23866: {
23866: private:
23866: typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
23866: typedef typename r0::type a0;
23866: typedef typename r0::next n1;
23866: typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
23866:
23866: public:
23866: typedef typename apply_wrap0<
23866: f_
23866: >::type type;
23866:
23866: };
23866: };
23866:
23866: namespace aux {
23866:
23866: template<
23866: typename F, typename U1, typename U2, typename U3, typename U4
23866: , typename U5
23866: >
23866: struct resolve_bind_arg<
23866: bind0<F>, U1, U2, U3, U4, U5
23866: >
23866: {
23866: typedef bind0<F> f_;
23866: typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
23866: };
23866:
23866: }
23866:
23866:
23866: namespace aux { template< typename T1 > struct template_arity< bind0< T1> > : int_<1> { }; }
23866:
23866: template<
23866: typename F
23866: >
23866: struct bind< F,na,na,na,na,na >
23866: : bind0<F>
23866: {
23866: };
23866:
23866: template<
23866: typename F, typename T1
23866: >
23866: struct bind1
23866: {
23866: template<
23866: typename U1 = na, typename U2 = na, typename U3 = na
23866: , typename U4 = na, typename U5 = na
23866: >
23866: struct apply
23866: {
23866: private:
23866: typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
23866: typedef typename r0::type a0;
23866: typedef typename r0::next n1;
23866: typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
23866:
23866: typedef aux::replace_unnamed_arg< T1,n1 > r1;
23866: typedef typename r1::type a1;
23866: typedef typename r1::next n2;
23866: typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
23866:
23866: public:
23866: typedef typename apply_wrap1<
23866: f_
23866: , typename t1::type
23866: >::type type;
23866:
23866: };
23866: };
23866:
23866: namespace aux {
23866:
23866: template<
23866: typename F, typename T1, typename U1, typename U2, typename U3
23866: , typename U4, typename U5
23866: >
23866: struct resolve_bind_arg<
23866: bind1< F,T1 >, U1, U2, U3, U4, U5
23866: >
23866: {
23866: typedef bind1< F,T1 > f_;
23866: typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
23866: };
23866:
23866: }
23866:
23866:
23866: namespace aux { template< typename T1 , typename T2 > struct template_arity< bind1< T1 , T2> > : int_<2> { }; }
23866:
23866: template<
23866: typename F, typename T1
23866: >
23866: struct bind< F,T1,na,na,na,na >
23866: : bind1< F,T1 >
23866: {
23866: };
23866:
23866: template<
23866: typename F, typename T1, typename T2
23866: >
23866: struct bind2
23866: {
23866: template<
23866: typename U1 = na, typename U2 = na, typename U3 = na
23866: , typename U4 = na, typename U5 = na
23866: >
23866: struct apply
23866: {
23866: private:
23866: typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
23866: typedef typename r0::type a0;
23866: typedef typename r0::next n1;
23866: typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
23866:
23866: typedef aux::replace_unnamed_arg< T1,n1 > r1;
23866: typedef typename r1::type a1;
23866: typedef typename r1::next n2;
23866: typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
23866:
23866: typedef aux::replace_unnamed_arg< T2,n2 > r2;
23866: typedef typename r2::type a2;
23866: typedef typename r2::next n3;
23866: typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
23866:
23866: public:
23866: typedef typename apply_wrap2<
23866: f_
23866: , typename t1::type, typename t2::type
23866: >::type type;
23866:
23866: };
23866: };
23866:
23866: namespace aux {
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename U1, typename U2
23866: , typename U3, typename U4, typename U5
23866: >
23866: struct resolve_bind_arg<
23866: bind2< F,T1,T2 >, U1, U2, U3, U4, U5
23866: >
23866: {
23866: typedef bind2< F,T1,T2 > f_;
23866: typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
23866: };
23866:
23866: }
23866:
23866:
23866: namespace aux { template< typename T1 , typename T2 , typename T3 > struct template_arity< bind2< T1 , T2 , T3> > : int_<3> { }; }
23866:
23866: template<
23866: typename F, typename T1, typename T2
23866: >
23866: struct bind< F,T1,T2,na,na,na >
23866: : bind2< F,T1,T2 >
23866: {
23866: };
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3
23866: >
23866: struct bind3
23866: {
23866: template<
23866: typename U1 = na, typename U2 = na, typename U3 = na
23866: , typename U4 = na, typename U5 = na
23866: >
23866: struct apply
23866: {
23866: private:
23866: typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
23866: typedef typename r0::type a0;
23866: typedef typename r0::next n1;
23866: typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
23866:
23866: typedef aux::replace_unnamed_arg< T1,n1 > r1;
23866: typedef typename r1::type a1;
23866: typedef typename r1::next n2;
23866: typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
23866:
23866: typedef aux::replace_unnamed_arg< T2,n2 > r2;
23866: typedef typename r2::type a2;
23866: typedef typename r2::next n3;
23866: typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
23866:
23866: typedef aux::replace_unnamed_arg< T3,n3 > r3;
23866: typedef typename r3::type a3;
23866: typedef typename r3::next n4;
23866: typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
23866:
23866: public:
23866: typedef typename apply_wrap3<
23866: f_
23866: , typename t1::type, typename t2::type, typename t3::type
23866: >::type type;
23866:
23866: };
23866: };
23866:
23866: namespace aux {
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3, typename U1
23866: , typename U2, typename U3, typename U4, typename U5
23866: >
23866: struct resolve_bind_arg<
23866: bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
23866: >
23866: {
23866: typedef bind3< F,T1,T2,T3 > f_;
23866: typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
23866: };
23866:
23866: }
23866:
23866:
23866: namespace aux { template< typename T1 , typename T2 , typename T3 , typename T4 > struct template_arity< bind3< T1 , T2 , T3 , T4> > : int_<4> { }; }
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3
23866: >
23866: struct bind< F,T1,T2,T3,na,na >
23866: : bind3< F,T1,T2,T3 >
23866: {
23866: };
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3, typename T4
23866: >
23866: struct bind4
23866: {
23866: template<
23866: typename U1 = na, typename U2 = na, typename U3 = na
23866: , typename U4 = na, typename U5 = na
23866: >
23866: struct apply
23866: {
23866: private:
23866: typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
23866: typedef typename r0::type a0;
23866: typedef typename r0::next n1;
23866: typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
23866:
23866: typedef aux::replace_unnamed_arg< T1,n1 > r1;
23866: typedef typename r1::type a1;
23866: typedef typename r1::next n2;
23866: typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
23866:
23866: typedef aux::replace_unnamed_arg< T2,n2 > r2;
23866: typedef typename r2::type a2;
23866: typedef typename r2::next n3;
23866: typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
23866:
23866: typedef aux::replace_unnamed_arg< T3,n3 > r3;
23866: typedef typename r3::type a3;
23866: typedef typename r3::next n4;
23866: typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
23866:
23866: typedef aux::replace_unnamed_arg< T4,n4 > r4;
23866: typedef typename r4::type a4;
23866: typedef typename r4::next n5;
23866: typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
23866:
23866: public:
23866: typedef typename apply_wrap4<
23866: f_
23866: , typename t1::type, typename t2::type, typename t3::type
23866: , typename t4::type
23866: >::type type;
23866:
23866: };
23866: };
23866:
23866: namespace aux {
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3, typename T4
23866: , typename U1, typename U2, typename U3, typename U4, typename U5
23866: >
23866: struct resolve_bind_arg<
23866: bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
23866: >
23866: {
23866: typedef bind4< F,T1,T2,T3,T4 > f_;
23866: typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
23866: };
23866:
23866: }
23866:
23866:
23866: namespace aux { template< typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > struct template_arity< bind4< T1 , T2 , T3 , T4 , T5> > : int_<5> { }; }
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3, typename T4
23866: >
23866: struct bind< F,T1,T2,T3,T4,na >
23866: : bind4< F,T1,T2,T3,T4 >
23866: {
23866: };
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3, typename T4
23866: , typename T5
23866: >
23866: struct bind5
23866: {
23866: template<
23866: typename U1 = na, typename U2 = na, typename U3 = na
23866: , typename U4 = na, typename U5 = na
23866: >
23866: struct apply
23866: {
23866: private:
23866: typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
23866: typedef typename r0::type a0;
23866: typedef typename r0::next n1;
23866: typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
23866:
23866: typedef aux::replace_unnamed_arg< T1,n1 > r1;
23866: typedef typename r1::type a1;
23866: typedef typename r1::next n2;
23866: typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
23866:
23866: typedef aux::replace_unnamed_arg< T2,n2 > r2;
23866: typedef typename r2::type a2;
23866: typedef typename r2::next n3;
23866: typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
23866:
23866: typedef aux::replace_unnamed_arg< T3,n3 > r3;
23866: typedef typename r3::type a3;
23866: typedef typename r3::next n4;
23866: typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
23866:
23866: typedef aux::replace_unnamed_arg< T4,n4 > r4;
23866: typedef typename r4::type a4;
23866: typedef typename r4::next n5;
23866: typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
23866:
23866: typedef aux::replace_unnamed_arg< T5,n5 > r5;
23866: typedef typename r5::type a5;
23866: typedef typename r5::next n6;
23866: typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
23866:
23866: public:
23866: typedef typename apply_wrap5<
23866: f_
23866: , typename t1::type, typename t2::type, typename t3::type
23866: , typename t4::type, typename t5::type
23866: >::type type;
23866:
23866: };
23866: };
23866:
23866: namespace aux {
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename U1, typename U2, typename U3, typename U4
23866: , typename U5
23866: >
23866: struct resolve_bind_arg<
23866: bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
23866: >
23866: {
23866: typedef bind5< F,T1,T2,T3,T4,T5 > f_;
23866: typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
23866: };
23866:
23866: }
23866:
23866:
23866: namespace aux { template< typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 > struct template_arity< bind5< T1 , T2 , T3 , T4 , T5 , T6> > : int_<6> { }; }
23866:
23866:
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3, typename T4
23866: , typename T5
23866: >
23866: struct bind
23866: : bind5< F,T1,T2,T3,T4,T5 >
23866: {
23866: };
23866:
23866:
23866: template< template< typename T1, typename T2, typename T3 > class F, typename Tag >
23866: struct quote3;
23866:
23866: template< typename T1, typename T2, typename T3 > struct if_;
23866:
23866: template<
23866: typename Tag, typename T1, typename T2, typename T3
23866: >
23866: struct bind3<
23866: quote3< if_,Tag >
23866: , T1, T2, T3
23866: >
23866: {
23866: template<
23866: typename U1 = na, typename U2 = na, typename U3 = na
23866: , typename U4 = na, typename U5 = na
23866: >
23866: struct apply
23866: {
23866: private:
23866: typedef mpl::arg<1> n1;
23866: typedef aux::replace_unnamed_arg< T1,n1 > r1;
23866: typedef typename r1::type a1;
23866: typedef typename r1::next n2;
23866: typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
23866:
23866: typedef aux::replace_unnamed_arg< T2,n2 > r2;
23866: typedef typename r2::type a2;
23866: typedef typename r2::next n3;
23866: typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
23866:
23866: typedef aux::replace_unnamed_arg< T3,n3 > r3;
23866: typedef typename r3::type a3;
23866: typedef typename r3::next n4;
23866: typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
23866:
23866: typedef typename if_<
23866: typename t1::type
23866: , t2, t3
23866: >::type f_;
23866:
23866: public:
23866: typedef typename f_::type type;
23866: };
23866: };
23866:
23866: template<
23866: template< typename T1, typename T2, typename T3 > class F, typename Tag
23866: >
23866: struct quote3;
23866:
23866: template< typename T1, typename T2, typename T3 > struct eval_if;
23866:
23866: template<
23866: typename Tag, typename T1, typename T2, typename T3
23866: >
23866: struct bind3<
23866: quote3< eval_if,Tag >
23866: , T1, T2, T3
23866: >
23866: {
23866: template<
23866: typename U1 = na, typename U2 = na, typename U3 = na
23866: , typename U4 = na, typename U5 = na
23866: >
23866: struct apply
23866: {
23866: private:
23866: typedef mpl::arg<1> n1;
23866: typedef aux::replace_unnamed_arg< T1,n1 > r1;
23866: typedef typename r1::type a1;
23866: typedef typename r1::next n2;
23866: typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
23866:
23866: typedef aux::replace_unnamed_arg< T2,n2 > r2;
23866: typedef typename r2::type a2;
23866: typedef typename r2::next n3;
23866: typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
23866:
23866: typedef aux::replace_unnamed_arg< T3,n3 > r3;
23866: typedef typename r3::type a3;
23866: typedef typename r3::next n4;
23866: typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
23866:
23866: typedef typename eval_if<
23866: typename t1::type
23866: , t2, t3
23866: >::type f_;
23866:
23866: public:
23866: typedef typename f_::type type;
23866: };
23866: };
23866:
23866: }}
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 51 "/usr/include/boost/mpl/bind.hpp" 2 3 4
23866: # 19 "/usr/include/boost/mpl/lambda.hpp" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/full_lambda.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_AUX_FULL_LAMBDA_HPP_INCLUDED
23866: # 23 "/usr/include/boost/mpl/aux_/full_lambda.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/bind_fwd.hpp" 1 3 4
23866: # 24 "/usr/include/boost/mpl/aux_/full_lambda.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/mpl/quote.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_QUOTE_HPP_INCLUDED
23866: # 22 "/usr/include/boost/mpl/quote.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/void.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_VOID_HPP_INCLUDED
23866: # 23 "/usr/include/boost/mpl/void.hpp" 3 4
23866: namespace mpl_ {
23866:
23866:
23866:
23866:
23866:
23866: struct void_ { typedef void_ type; };
23866:
23866: }
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template< typename T >
23866: struct is_void_
23866: : false_
23866: {
23866:
23866:
23866:
23866: };
23866:
23866: template<>
23866: struct is_void_<void_>
23866: : true_
23866: {
23866:
23866:
23866:
23866: };
23866:
23866: template< typename T >
23866: struct is_not_void_
23866: : true_
23866: {
23866:
23866:
23866:
23866: };
23866:
23866: template<>
23866: struct is_not_void_<void_>
23866: : false_
23866: {
23866:
23866:
23866:
23866: };
23866:
23866: template<> struct is_void_< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : is_void_< T1 > { }; }; template< typename Tag > struct lambda< is_void_< na > , Tag , int_<-1> > { typedef false_ is_le; typedef is_void_< na > result_; typedef is_void_< na > type; }; namespace aux { template< typename T1 > struct template_arity< is_void_< T1 > > : int_<1> { }; template<> struct template_arity< is_void_< na > > : int_<-1> { }; }
23866: template<> struct is_not_void_< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : is_not_void_< T1 > { }; }; template< typename Tag > struct lambda< is_not_void_< na > , Tag , int_<-1> > { typedef false_ is_le; typedef is_not_void_< na > result_; typedef is_not_void_< na > type; }; namespace aux { template< typename T1 > struct template_arity< is_not_void_< T1 > > : int_<1> { }; template<> struct template_arity< is_not_void_< na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 23 "/usr/include/boost/mpl/quote.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/has_type.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_HAS_TYPE_HPP_INCLUDED
23866: # 19 "/usr/include/boost/mpl/aux_/has_type.hpp" 3 4
23866: namespace boost { namespace mpl { namespace aux {
23866: template< typename T, typename fallback_ = boost::mpl::bool_<true> > struct has_type { struct gcc_3_2_wknd { template< typename U > static boost::mpl::aux::yes_tag test( boost::mpl::aux::type_wrapper<U> const volatile* , boost::mpl::aux::type_wrapper<typename U::type>* = 0 ); static boost::mpl::aux::no_tag test(...); }; typedef boost::mpl::aux::type_wrapper<T> t_; static const bool value = sizeof(gcc_3_2_wknd::test(static_cast<t_*>(0))) == sizeof(boost::mpl::aux::yes_tag); typedef boost::mpl::bool_<value> type; };
23866: }}}
23866: # 24 "/usr/include/boost/mpl/quote.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/config/bcc.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CONFIG_BCC_HPP_INCLUDED
23866: # 27 "/usr/include/boost/mpl/quote.hpp" 2 3 4
23866: # 44 "/usr/include/boost/mpl/quote.hpp" 3 4
23866: #define BOOST_MPL_PREPROCESSED_HEADER quote.hpp
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/quote.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/quote.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template< typename T, bool has_type_ >
23866: struct quote_impl
23866: {
23866: typedef typename T::type type;
23866: };
23866:
23866: template< typename T >
23866: struct quote_impl< T,false >
23866: {
23866: typedef T type;
23866: };
23866:
23866: template<
23866: template< typename P1 > class F
23866: , typename Tag = void_
23866: >
23866: struct quote1
23866: {
23866: template< typename U1 > struct apply
23866:
23866: : quote_impl<
23866: F<U1>
23866: , aux::has_type< F<U1> >::value
23866: >
23866:
23866: {
23866: };
23866: };
23866:
23866: template<
23866: template< typename P1, typename P2 > class F
23866: , typename Tag = void_
23866: >
23866: struct quote2
23866: {
23866: template< typename U1, typename U2 > struct apply
23866:
23866: : quote_impl<
23866: F< U1,U2 >
23866: , aux::has_type< F< U1,U2 > >::value
23866: >
23866:
23866: {
23866: };
23866: };
23866:
23866: template<
23866: template< typename P1, typename P2, typename P3 > class F
23866: , typename Tag = void_
23866: >
23866: struct quote3
23866: {
23866: template< typename U1, typename U2, typename U3 > struct apply
23866:
23866: : quote_impl<
23866: F< U1,U2,U3 >
23866: , aux::has_type< F< U1,U2,U3 > >::value
23866: >
23866:
23866: {
23866: };
23866: };
23866:
23866: template<
23866: template< typename P1, typename P2, typename P3, typename P4 > class F
23866: , typename Tag = void_
23866: >
23866: struct quote4
23866: {
23866: template<
23866: typename U1, typename U2, typename U3, typename U4
23866: >
23866: struct apply
23866:
23866: : quote_impl<
23866: F< U1,U2,U3,U4 >
23866: , aux::has_type< F< U1,U2,U3,U4 > >::value
23866: >
23866:
23866: {
23866: };
23866: };
23866:
23866: template<
23866: template<
23866: typename P1, typename P2, typename P3, typename P4
23866: , typename P5
23866: >
23866: class F
23866: , typename Tag = void_
23866: >
23866: struct quote5
23866: {
23866: template<
23866: typename U1, typename U2, typename U3, typename U4
23866: , typename U5
23866: >
23866: struct apply
23866:
23866: : quote_impl<
23866: F< U1,U2,U3,U4,U5 >
23866: , aux::has_type< F< U1,U2,U3,U4,U5 > >::value
23866: >
23866:
23866: {
23866: };
23866: };
23866:
23866: }}
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 46 "/usr/include/boost/mpl/quote.hpp" 2 3 4
23866: # 26 "/usr/include/boost/mpl/aux_/full_lambda.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/arg.hpp" 1 3 4
23866: # 27 "/usr/include/boost/mpl/aux_/full_lambda.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/template_arity.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_AUX_TEMPLATE_ARITY_HPP_INCLUDED
23866: # 42 "/usr/include/boost/mpl/aux_/template_arity.hpp" 3 4
23866: #define BOOST_MPL_PREPROCESSED_HEADER template_arity.hpp
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp" 3 4
23866: namespace boost { namespace mpl { namespace aux {
23866: template< int N > struct arity_tag
23866: {
23866: typedef char (&type)[N + 1];
23866: };
23866:
23866: template<
23866: int C1, int C2, int C3, int C4, int C5, int C6
23866: >
23866: struct max_arity
23866: {
23866: static const int value = ( C6 > 0 ? C6 : ( C5 > 0 ? C5 : ( C4 > 0 ? C4 : ( C3 > 0 ? C3 : ( C2 > 0 ? C2 : ( C1 > 0 ? C1 : -1 ) ) ) ) ) )
23866:
23866: ;
23866: };
23866:
23866: arity_tag<0>::type arity_helper(...);
23866:
23866: template<
23866: template< typename P1 > class F
23866: , typename T1
23866: >
23866: typename arity_tag<1>::type
23866: arity_helper(type_wrapper< F<T1> >, arity_tag<1>);
23866:
23866: template<
23866: template< typename P1, typename P2 > class F
23866: , typename T1, typename T2
23866: >
23866: typename arity_tag<2>::type
23866: arity_helper(type_wrapper< F< T1,T2 > >, arity_tag<2>);
23866:
23866: template<
23866: template< typename P1, typename P2, typename P3 > class F
23866: , typename T1, typename T2, typename T3
23866: >
23866: typename arity_tag<3>::type
23866: arity_helper(type_wrapper< F< T1,T2,T3 > >, arity_tag<3>);
23866:
23866: template<
23866: template< typename P1, typename P2, typename P3, typename P4 > class F
23866: , typename T1, typename T2, typename T3, typename T4
23866: >
23866: typename arity_tag<4>::type
23866: arity_helper(type_wrapper< F< T1,T2,T3,T4 > >, arity_tag<4>);
23866:
23866: template<
23866: template<
23866: typename P1, typename P2, typename P3, typename P4
23866: , typename P5
23866: >
23866: class F
23866: , typename T1, typename T2, typename T3, typename T4, typename T5
23866: >
23866: typename arity_tag<5>::type
23866: arity_helper(type_wrapper< F< T1,T2,T3,T4,T5 > >, arity_tag<5>);
23866:
23866: template<
23866: template<
23866: typename P1, typename P2, typename P3, typename P4
23866: , typename P5, typename P6
23866: >
23866: class F
23866: , typename T1, typename T2, typename T3, typename T4, typename T5
23866: , typename T6
23866: >
23866: typename arity_tag<6>::type
23866: arity_helper(type_wrapper< F< T1,T2,T3,T4,T5,T6 > >, arity_tag<6>);
23866: template< typename F, int N >
23866: struct template_arity_impl
23866: {
23866: static const int value = sizeof(::boost::mpl::aux::arity_helper(type_wrapper<F>(), arity_tag<N>())) - 1
23866:
23866: ;
23866: };
23866:
23866: template< typename F >
23866: struct template_arity
23866: {
23866: static const int value = ( max_arity< template_arity_impl< F,1 >::value, template_arity_impl< F,2 >::value, template_arity_impl< F,3 >::value, template_arity_impl< F,4 >::value, template_arity_impl< F,5 >::value, template_arity_impl< F,6 >::value >::value )
23866:
23866: ;
23866: typedef mpl::int_<value> type;
23866: };
23866:
23866: }}}
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 44 "/usr/include/boost/mpl/aux_/template_arity.hpp" 2 3 4
23866: # 30 "/usr/include/boost/mpl/aux_/full_lambda.hpp" 2 3 4
23866: # 43 "/usr/include/boost/mpl/aux_/full_lambda.hpp" 3 4
23866: #define BOOST_MPL_PREPROCESSED_HEADER full_lambda.hpp
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: namespace aux {
23866:
23866: template<
23866: bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
23866: , bool C5 = false
23866: >
23866: struct lambda_or
23866: : true_
23866: {
23866: };
23866:
23866: template<>
23866: struct lambda_or< false,false,false,false,false >
23866: : false_
23866: {
23866: };
23866:
23866: }
23866:
23866: template<
23866: typename T
23866: , typename Tag
23866: , typename Arity
23866: >
23866: struct lambda
23866: {
23866: typedef false_ is_le;
23866: typedef T result_;
23866: typedef T type;
23866: };
23866:
23866: template<
23866: typename T
23866: >
23866: struct is_lambda_expression
23866: : lambda<T>::is_le
23866: {
23866: };
23866:
23866: template< int N, typename Tag >
23866: struct lambda< arg<N>,Tag, int_< -1 > >
23866: {
23866: typedef true_ is_le;
23866: typedef mpl::arg<N> result_;
23866: typedef mpl::protect<result_> type;
23866: };
23866:
23866: template<
23866: typename F
23866: , typename Tag
23866: >
23866: struct lambda<
23866: bind0<F>
23866: , Tag
23866: , int_<1>
23866: >
23866: {
23866: typedef false_ is_le;
23866: typedef bind0<
23866: F
23866: > result_;
23866:
23866: typedef result_ type;
23866: };
23866:
23866: namespace aux {
23866:
23866: template<
23866: typename IsLE, typename Tag
23866: , template< typename P1 > class F
23866: , typename L1
23866: >
23866: struct le_result1
23866: {
23866: typedef F<
23866: typename L1::type
23866: > result_;
23866:
23866: typedef result_ type;
23866: };
23866:
23866: template<
23866: typename Tag
23866: , template< typename P1 > class F
23866: , typename L1
23866: >
23866: struct le_result1< true_,Tag,F,L1 >
23866: {
23866: typedef bind1<
23866: quote1< F,Tag >
23866: , typename L1::result_
23866: > result_;
23866:
23866: typedef mpl::protect<result_> type;
23866: };
23866:
23866: }
23866:
23866: template<
23866: template< typename P1 > class F
23866: , typename T1
23866: , typename Tag
23866: >
23866: struct lambda<
23866: F<T1>
23866: , Tag
23866: , int_<1>
23866: >
23866: {
23866: typedef lambda< T1,Tag > l1;
23866: typedef typename l1::is_le is_le1;
23866: typedef typename aux::lambda_or<
23866: is_le1::value
23866: >::type is_le;
23866:
23866: typedef aux::le_result1<
23866: is_le, Tag, F, l1
23866: > le_result_;
23866:
23866: typedef typename le_result_::result_ result_;
23866: typedef typename le_result_::type type;
23866: };
23866:
23866: template<
23866: typename F, typename T1
23866: , typename Tag
23866: >
23866: struct lambda<
23866: bind1< F,T1 >
23866: , Tag
23866: , int_<2>
23866: >
23866: {
23866: typedef false_ is_le;
23866: typedef bind1<
23866: F
23866: , T1
23866: > result_;
23866:
23866: typedef result_ type;
23866: };
23866:
23866: namespace aux {
23866:
23866: template<
23866: typename IsLE, typename Tag
23866: , template< typename P1, typename P2 > class F
23866: , typename L1, typename L2
23866: >
23866: struct le_result2
23866: {
23866: typedef F<
23866: typename L1::type, typename L2::type
23866: > result_;
23866:
23866: typedef result_ type;
23866: };
23866:
23866: template<
23866: typename Tag
23866: , template< typename P1, typename P2 > class F
23866: , typename L1, typename L2
23866: >
23866: struct le_result2< true_,Tag,F,L1,L2 >
23866: {
23866: typedef bind2<
23866: quote2< F,Tag >
23866: , typename L1::result_, typename L2::result_
23866: > result_;
23866:
23866: typedef mpl::protect<result_> type;
23866: };
23866:
23866: }
23866:
23866: template<
23866: template< typename P1, typename P2 > class F
23866: , typename T1, typename T2
23866: , typename Tag
23866: >
23866: struct lambda<
23866: F< T1,T2 >
23866: , Tag
23866: , int_<2>
23866: >
23866: {
23866: typedef lambda< T1,Tag > l1;
23866: typedef lambda< T2,Tag > l2;
23866:
23866: typedef typename l1::is_le is_le1;
23866: typedef typename l2::is_le is_le2;
23866:
23866:
23866: typedef typename aux::lambda_or<
23866: is_le1::value, is_le2::value
23866: >::type is_le;
23866:
23866: typedef aux::le_result2<
23866: is_le, Tag, F, l1, l2
23866: > le_result_;
23866:
23866: typedef typename le_result_::result_ result_;
23866: typedef typename le_result_::type type;
23866: };
23866:
23866: template<
23866: typename F, typename T1, typename T2
23866: , typename Tag
23866: >
23866: struct lambda<
23866: bind2< F,T1,T2 >
23866: , Tag
23866: , int_<3>
23866: >
23866: {
23866: typedef false_ is_le;
23866: typedef bind2<
23866: F
23866: , T1, T2
23866: > result_;
23866:
23866: typedef result_ type;
23866: };
23866:
23866: namespace aux {
23866:
23866: template<
23866: typename IsLE, typename Tag
23866: , template< typename P1, typename P2, typename P3 > class F
23866: , typename L1, typename L2, typename L3
23866: >
23866: struct le_result3
23866: {
23866: typedef F<
23866: typename L1::type, typename L2::type, typename L3::type
23866: > result_;
23866:
23866: typedef result_ type;
23866: };
23866:
23866: template<
23866: typename Tag
23866: , template< typename P1, typename P2, typename P3 > class F
23866: , typename L1, typename L2, typename L3
23866: >
23866: struct le_result3< true_,Tag,F,L1,L2,L3 >
23866: {
23866: typedef bind3<
23866: quote3< F,Tag >
23866: , typename L1::result_, typename L2::result_, typename L3::result_
23866: > result_;
23866:
23866: typedef mpl::protect<result_> type;
23866: };
23866:
23866: }
23866:
23866: template<
23866: template< typename P1, typename P2, typename P3 > class F
23866: , typename T1, typename T2, typename T3
23866: , typename Tag
23866: >
23866: struct lambda<
23866: F< T1,T2,T3 >
23866: , Tag
23866: , int_<3>
23866: >
23866: {
23866: typedef lambda< T1,Tag > l1;
23866: typedef lambda< T2,Tag > l2;
23866: typedef lambda< T3,Tag > l3;
23866:
23866: typedef typename l1::is_le is_le1;
23866: typedef typename l2::is_le is_le2;
23866: typedef typename l3::is_le is_le3;
23866:
23866:
23866: typedef typename aux::lambda_or<
23866: is_le1::value, is_le2::value, is_le3::value
23866: >::type is_le;
23866:
23866: typedef aux::le_result3<
23866: is_le, Tag, F, l1, l2, l3
23866: > le_result_;
23866:
23866: typedef typename le_result_::result_ result_;
23866: typedef typename le_result_::type type;
23866: };
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3
23866: , typename Tag
23866: >
23866: struct lambda<
23866: bind3< F,T1,T2,T3 >
23866: , Tag
23866: , int_<4>
23866: >
23866: {
23866: typedef false_ is_le;
23866: typedef bind3<
23866: F
23866: , T1, T2, T3
23866: > result_;
23866:
23866: typedef result_ type;
23866: };
23866:
23866: namespace aux {
23866:
23866: template<
23866: typename IsLE, typename Tag
23866: , template< typename P1, typename P2, typename P3, typename P4 > class F
23866: , typename L1, typename L2, typename L3, typename L4
23866: >
23866: struct le_result4
23866: {
23866: typedef F<
23866: typename L1::type, typename L2::type, typename L3::type
23866: , typename L4::type
23866: > result_;
23866:
23866: typedef result_ type;
23866: };
23866:
23866: template<
23866: typename Tag
23866: , template< typename P1, typename P2, typename P3, typename P4 > class F
23866: , typename L1, typename L2, typename L3, typename L4
23866: >
23866: struct le_result4< true_,Tag,F,L1,L2,L3,L4 >
23866: {
23866: typedef bind4<
23866: quote4< F,Tag >
23866: , typename L1::result_, typename L2::result_, typename L3::result_
23866: , typename L4::result_
23866: > result_;
23866:
23866: typedef mpl::protect<result_> type;
23866: };
23866:
23866: }
23866:
23866: template<
23866: template< typename P1, typename P2, typename P3, typename P4 > class F
23866: , typename T1, typename T2, typename T3, typename T4
23866: , typename Tag
23866: >
23866: struct lambda<
23866: F< T1,T2,T3,T4 >
23866: , Tag
23866: , int_<4>
23866: >
23866: {
23866: typedef lambda< T1,Tag > l1;
23866: typedef lambda< T2,Tag > l2;
23866: typedef lambda< T3,Tag > l3;
23866: typedef lambda< T4,Tag > l4;
23866:
23866: typedef typename l1::is_le is_le1;
23866: typedef typename l2::is_le is_le2;
23866: typedef typename l3::is_le is_le3;
23866: typedef typename l4::is_le is_le4;
23866:
23866:
23866: typedef typename aux::lambda_or<
23866: is_le1::value, is_le2::value, is_le3::value, is_le4::value
23866: >::type is_le;
23866:
23866: typedef aux::le_result4<
23866: is_le, Tag, F, l1, l2, l3, l4
23866: > le_result_;
23866:
23866: typedef typename le_result_::result_ result_;
23866: typedef typename le_result_::type type;
23866: };
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3, typename T4
23866: , typename Tag
23866: >
23866: struct lambda<
23866: bind4< F,T1,T2,T3,T4 >
23866: , Tag
23866: , int_<5>
23866: >
23866: {
23866: typedef false_ is_le;
23866: typedef bind4<
23866: F
23866: , T1, T2, T3, T4
23866: > result_;
23866:
23866: typedef result_ type;
23866: };
23866:
23866: namespace aux {
23866:
23866: template<
23866: typename IsLE, typename Tag
23866: , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
23866: , typename L1, typename L2, typename L3, typename L4, typename L5
23866: >
23866: struct le_result5
23866: {
23866: typedef F<
23866: typename L1::type, typename L2::type, typename L3::type
23866: , typename L4::type, typename L5::type
23866: > result_;
23866:
23866: typedef result_ type;
23866: };
23866:
23866: template<
23866: typename Tag
23866: , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
23866: , typename L1, typename L2, typename L3, typename L4, typename L5
23866: >
23866: struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 >
23866: {
23866: typedef bind5<
23866: quote5< F,Tag >
23866: , typename L1::result_, typename L2::result_, typename L3::result_
23866: , typename L4::result_, typename L5::result_
23866: > result_;
23866:
23866: typedef mpl::protect<result_> type;
23866: };
23866:
23866: }
23866:
23866: template<
23866: template<
23866: typename P1, typename P2, typename P3, typename P4
23866: , typename P5
23866: >
23866: class F
23866: , typename T1, typename T2, typename T3, typename T4, typename T5
23866: , typename Tag
23866: >
23866: struct lambda<
23866: F< T1,T2,T3,T4,T5 >
23866: , Tag
23866: , int_<5>
23866: >
23866: {
23866: typedef lambda< T1,Tag > l1;
23866: typedef lambda< T2,Tag > l2;
23866: typedef lambda< T3,Tag > l3;
23866: typedef lambda< T4,Tag > l4;
23866: typedef lambda< T5,Tag > l5;
23866:
23866: typedef typename l1::is_le is_le1;
23866: typedef typename l2::is_le is_le2;
23866: typedef typename l3::is_le is_le3;
23866: typedef typename l4::is_le is_le4;
23866: typedef typename l5::is_le is_le5;
23866:
23866:
23866: typedef typename aux::lambda_or<
23866: is_le1::value, is_le2::value, is_le3::value, is_le4::value
23866: , is_le5::value
23866: >::type is_le;
23866:
23866: typedef aux::le_result5<
23866: is_le, Tag, F, l1, l2, l3, l4, l5
23866: > le_result_;
23866:
23866: typedef typename le_result_::result_ result_;
23866: typedef typename le_result_::type type;
23866: };
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3, typename T4
23866: , typename T5
23866: , typename Tag
23866: >
23866: struct lambda<
23866: bind5< F,T1,T2,T3,T4,T5 >
23866: , Tag
23866: , int_<6>
23866: >
23866: {
23866: typedef false_ is_le;
23866: typedef bind5<
23866: F
23866: , T1, T2, T3, T4, T5
23866: > result_;
23866:
23866: typedef result_ type;
23866: };
23866:
23866:
23866: template< typename T, typename Tag >
23866: struct lambda< mpl::protect<T>,Tag, int_<1> >
23866: {
23866: typedef false_ is_le;
23866: typedef mpl::protect<T> result_;
23866: typedef result_ type;
23866: };
23866:
23866:
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3, typename T4
23866: , typename T5
23866: , typename Tag
23866: >
23866: struct lambda<
23866: bind< F,T1,T2,T3,T4,T5 >
23866: , Tag
23866: , int_<6>
23866: >
23866: {
23866: typedef false_ is_le;
23866: typedef bind< F,T1,T2,T3,T4,T5 > result_;
23866: typedef result_ type;
23866: };
23866:
23866: template<
23866: typename F
23866: , typename Tag1
23866: , typename Tag2
23866: , typename Arity
23866: >
23866: struct lambda<
23866: lambda< F,Tag1,Arity >
23866: , Tag2
23866: , int_<3>
23866: >
23866: {
23866: typedef lambda< F,Tag2 > l1;
23866: typedef lambda< Tag1,Tag2 > l2;
23866: typedef typename l1::is_le is_le;
23866: typedef bind1< quote1<aux::template_arity>, typename l1::result_ > arity_;
23866: typedef lambda< typename if_< is_le,arity_,Arity >::type, Tag2 > l3;
23866: typedef aux::le_result3<is_le, Tag2, mpl::lambda, l1, l2, l3> le_result_;
23866: typedef typename le_result_::result_ result_;
23866: typedef typename le_result_::type type;
23866: };
23866:
23866: template<> struct lambda< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : lambda< T1 , T2 > { }; }; template< typename Tag > struct lambda< lambda< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef lambda< na , na > result_; typedef lambda< na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 > struct template_arity< lambda< T1 , T2 , T3 > > : int_<3> { }; template<> struct template_arity< lambda< na , na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 45 "/usr/include/boost/mpl/aux_/full_lambda.hpp" 2 3 4
23866: # 23 "/usr/include/boost/mpl/lambda.hpp" 2 3 4
23866: # 26 "/usr/include/boost/mpl/apply.hpp" 2 3 4
23866: # 35 "/usr/include/boost/mpl/apply.hpp" 3 4
23866: #define BOOST_MPL_PREPROCESSED_HEADER apply.hpp
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/apply.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/apply.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename F
23866: >
23866: struct apply0
23866:
23866: : apply_wrap0<
23866: typename lambda<F>::type
23866:
23866: >
23866: {
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866: template<
23866: typename F
23866: >
23866: struct apply< F,na,na,na,na,na >
23866: : apply0<F>
23866: {
23866: };
23866:
23866: template<
23866: typename F, typename T1
23866: >
23866: struct apply1
23866:
23866: : apply_wrap1<
23866: typename lambda<F>::type
23866: , T1
23866: >
23866: {
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866: template<
23866: typename F, typename T1
23866: >
23866: struct apply< F,T1,na,na,na,na >
23866: : apply1< F,T1 >
23866: {
23866: };
23866:
23866: template<
23866: typename F, typename T1, typename T2
23866: >
23866: struct apply2
23866:
23866: : apply_wrap2<
23866: typename lambda<F>::type
23866: , T1, T2
23866: >
23866: {
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866: template<
23866: typename F, typename T1, typename T2
23866: >
23866: struct apply< F,T1,T2,na,na,na >
23866: : apply2< F,T1,T2 >
23866: {
23866: };
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3
23866: >
23866: struct apply3
23866:
23866: : apply_wrap3<
23866: typename lambda<F>::type
23866: , T1, T2, T3
23866: >
23866: {
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3
23866: >
23866: struct apply< F,T1,T2,T3,na,na >
23866: : apply3< F,T1,T2,T3 >
23866: {
23866: };
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3, typename T4
23866: >
23866: struct apply4
23866:
23866: : apply_wrap4<
23866: typename lambda<F>::type
23866: , T1, T2, T3, T4
23866: >
23866: {
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3, typename T4
23866: >
23866: struct apply< F,T1,T2,T3,T4,na >
23866: : apply4< F,T1,T2,T3,T4 >
23866: {
23866: };
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3, typename T4
23866: , typename T5
23866: >
23866: struct apply5
23866:
23866: : apply_wrap5<
23866: typename lambda<F>::type
23866: , T1, T2, T3, T4, T5
23866: >
23866: {
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866:
23866:
23866: template<
23866: typename F, typename T1, typename T2, typename T3, typename T4
23866: , typename T5
23866: >
23866: struct apply
23866: : apply5< F,T1,T2,T3,T4,T5 >
23866: {
23866: };
23866:
23866: }}
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/apply.hpp" 2 3 4
23866: # 37 "/usr/include/boost/iterator/iterator_facade.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/iterator/detail/config_def.hpp" 1 3 4
23866: # 22 "/usr/include/boost/iterator/detail/config_def.hpp" 3 4
23866: #define BOOST_ITERATOR_CONFIG_DEF
23866: # 45 "/usr/include/boost/iterator/detail/config_def.hpp" 3 4
23866: #define BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY 1
23866: # 42 "/usr/include/boost/iterator/iterator_facade.hpp" 2 3 4
23866:
23866: namespace boost {
23866: namespace iterators {
23866:
23866:
23866:
23866: template <class I, class V, class TC, class R, class D> class iterator_facade;
23866:
23866: namespace detail
23866: {
23866:
23866:
23866:
23866: struct always_bool2
23866: {
23866: template <class T, class U>
23866: struct apply
23866: {
23866: typedef bool type;
23866: };
23866: };
23866:
23866:
23866: template< typename CategoryOrTraversal, typename Required >
23866: struct is_traversal_at_least :
23866: public boost::is_convertible< typename iterator_category_to_traversal< CategoryOrTraversal >::type, Required >
23866: {};
23866:
23866:
23866:
23866:
23866: template <
23866: class Facade1
23866: , class Facade2
23866: , class Return
23866: >
23866: struct enable_if_interoperable :
23866: public boost::iterators::enable_if<
23866: is_interoperable< Facade1, Facade2 >
23866: , Return
23866: >
23866: {};
23866:
23866:
23866:
23866:
23866: template <
23866: class Facade1
23866: , class Facade2
23866: , class Return
23866: >
23866: struct enable_if_interoperable_and_random_access_traversal :
23866: public boost::iterators::enable_if<
23866: mpl::and_<
23866: is_interoperable< Facade1, Facade2 >
23866: , is_traversal_at_least< typename iterator_category< Facade1 >::type, random_access_traversal_tag >
23866: , is_traversal_at_least< typename iterator_category< Facade2 >::type, random_access_traversal_tag >
23866: >
23866: , Return
23866: >
23866: {};
23866:
23866:
23866:
23866:
23866:
23866: template <
23866: class ValueParam
23866: , class CategoryOrTraversal
23866: , class Reference
23866: , class Difference
23866: >
23866: struct iterator_facade_types
23866: {
23866: typedef typename facade_iterator_category<
23866: CategoryOrTraversal, ValueParam, Reference
23866: >::type iterator_category;
23866:
23866: typedef typename remove_const<ValueParam>::type value_type;
23866:
23866:
23866: typedef typename mpl::eval_if<
23866: boost::iterators::detail::iterator_writability_disabled<ValueParam,Reference>
23866: , add_pointer<const value_type>
23866: , add_pointer<value_type>
23866: >::type pointer;
23866: # 145 "/usr/include/boost/iterator/iterator_facade.hpp" 3 4
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class Iterator>
23866: class postfix_increment_proxy
23866: {
23866: typedef typename iterator_value<Iterator>::type value_type;
23866: public:
23866: explicit postfix_increment_proxy(Iterator const& x)
23866: : stored_value(*x)
23866: {}
23866:
23866:
23866:
23866:
23866:
23866: value_type&
23866: operator*() const
23866: {
23866: return this->stored_value;
23866: }
23866: private:
23866: mutable value_type stored_value;
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template <class Iterator>
23866: class writable_postfix_increment_proxy
23866: {
23866: typedef typename iterator_value<Iterator>::type value_type;
23866: public:
23866: explicit writable_postfix_increment_proxy(Iterator const& x)
23866: : stored_value(*x)
23866: , stored_iterator(x)
23866: {}
23866:
23866:
23866:
23866:
23866:
23866: writable_postfix_increment_proxy const&
23866: operator*() const
23866: {
23866: return *this;
23866: }
23866:
23866:
23866: operator value_type&() const
23866: {
23866: return stored_value;
23866: }
23866:
23866:
23866: template <class T>
23866: T const& operator=(T const& x) const
23866: {
23866: *this->stored_iterator = x;
23866: return x;
23866: }
23866:
23866:
23866: template <class T>
23866: T& operator=(T& x) const
23866: {
23866: *this->stored_iterator = x;
23866: return x;
23866: }
23866:
23866:
23866: operator Iterator const&() const
23866: {
23866: return stored_iterator;
23866: }
23866:
23866: private:
23866: mutable value_type stored_value;
23866: Iterator stored_iterator;
23866: };
23866: # 259 "/usr/include/boost/iterator/iterator_facade.hpp" 3 4
23866: template <class Reference, class Value>
23866: struct is_non_proxy_reference
23866: : is_convertible<
23866: typename remove_reference<Reference>::type
23866: const volatile*
23866: , Value const volatile*
23866: >
23866: {};
23866: # 284 "/usr/include/boost/iterator/iterator_facade.hpp" 3 4
23866: template <class Iterator, class Value, class Reference, class CategoryOrTraversal>
23866: struct postfix_increment_result
23866: : mpl::eval_if<
23866: mpl::and_<
23866:
23866: is_convertible<
23866: Reference
23866:
23866:
23866:
23866:
23866:
23866: , typename add_lvalue_reference<Value const>::type
23866: >
23866:
23866:
23866:
23866: , mpl::not_<
23866: is_convertible<
23866: typename iterator_category_to_traversal<CategoryOrTraversal>::type
23866: , forward_traversal_tag
23866: >
23866: >
23866: >
23866: , mpl::if_<
23866: is_non_proxy_reference<Reference,Value>
23866: , postfix_increment_proxy<Iterator>
23866: , writable_postfix_increment_proxy<Iterator>
23866: >
23866: , mpl::identity<Iterator>
23866: >
23866: {};
23866:
23866:
23866:
23866:
23866:
23866: template <class Reference, class Pointer>
23866: struct operator_arrow_dispatch
23866: {
23866: struct proxy
23866: {
23866: explicit proxy(Reference const & x) : m_ref(x) {}
23866: Reference* operator->() { return boost::addressof(m_ref); }
23866:
23866:
23866: operator Reference*() { return boost::addressof(m_ref); }
23866: Reference m_ref;
23866: };
23866: typedef proxy result_type;
23866: static result_type apply(Reference const & x)
23866: {
23866: return result_type(x);
23866: }
23866: };
23866:
23866: template <class T, class Pointer>
23866: struct operator_arrow_dispatch<T&, Pointer>
23866: {
23866: typedef Pointer result_type;
23866: static result_type apply(T& x)
23866: {
23866: return boost::addressof(x);
23866: }
23866: };
23866:
23866:
23866:
23866:
23866: template <class Iterator>
23866: class operator_brackets_proxy
23866: {
23866:
23866:
23866: typedef typename Iterator::reference reference;
23866: typedef typename Iterator::value_type value_type;
23866:
23866: public:
23866: operator_brackets_proxy(Iterator const& iter)
23866: : m_iter(iter)
23866: {}
23866:
23866: operator reference() const
23866: {
23866: return *m_iter;
23866: }
23866:
23866: operator_brackets_proxy& operator=(value_type const& val)
23866: {
23866: *m_iter = val;
23866: return *this;
23866: }
23866:
23866: private:
23866: Iterator m_iter;
23866: };
23866:
23866:
23866:
23866: template <class ValueType, class Reference>
23866: struct use_operator_brackets_proxy
23866: : mpl::not_<
23866: mpl::and_<
23866:
23866:
23866: boost::is_POD<ValueType>
23866: , iterator_writability_disabled<ValueType,Reference>
23866: >
23866: >
23866: {};
23866:
23866: template <class Iterator, class Value, class Reference>
23866: struct operator_brackets_result
23866: {
23866: typedef typename mpl::if_<
23866: use_operator_brackets_proxy<Value,Reference>
23866: , operator_brackets_proxy<Iterator>
23866: , Value
23866: >::type type;
23866: };
23866:
23866: template <class Iterator>
23866: operator_brackets_proxy<Iterator> make_operator_brackets_result(Iterator const& iter, mpl::true_)
23866: {
23866: return operator_brackets_proxy<Iterator>(iter);
23866: }
23866:
23866: template <class Iterator>
23866: typename Iterator::value_type make_operator_brackets_result(Iterator const& iter, mpl::false_)
23866: {
23866: return *iter;
23866: }
23866:
23866: struct choose_difference_type
23866: {
23866: template <class I1, class I2>
23866: struct apply
23866: :
23866:
23866:
23866:
23866: mpl::eval_if<
23866: is_convertible<I2,I1>
23866: , iterator_difference<I1>
23866: , iterator_difference<I2>
23866: >
23866:
23866: {};
23866:
23866: };
23866:
23866: template <
23866: class Derived
23866: , class Value
23866: , class CategoryOrTraversal
23866: , class Reference
23866: , class Difference
23866: , bool IsBidirectionalTraversal
23866: , bool IsRandomAccessTraversal
23866: >
23866: class iterator_facade_base;
23866:
23866: }
23866: # 461 "/usr/include/boost/iterator/iterator_facade.hpp" 3 4
23866: #define BOOST_ITERATOR_FACADE_INTEROP_HEAD_IMPL(prefix,op,result_type,enabler) template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > prefix typename enabler< Derived1, Derived2 , typename mpl::apply2<result_type,Derived1,Derived2>::type >::type operator op( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs)
23866: # 475 "/usr/include/boost/iterator/iterator_facade.hpp" 3 4
23866: #define BOOST_ITERATOR_FACADE_INTEROP_HEAD(prefix,op,result_type) BOOST_ITERATOR_FACADE_INTEROP_HEAD_IMPL(prefix, op, result_type, boost::iterators::detail::enable_if_interoperable)
23866:
23866:
23866: #define BOOST_ITERATOR_FACADE_INTEROP_RANDOM_ACCESS_HEAD(prefix,op,result_type) BOOST_ITERATOR_FACADE_INTEROP_HEAD_IMPL(prefix, op, result_type, boost::iterators::detail::enable_if_interoperable_and_random_access_traversal)
23866:
23866:
23866: #define BOOST_ITERATOR_FACADE_PLUS_HEAD(prefix,args) template <class Derived, class V, class TC, class R, class D> prefix typename boost::iterators::enable_if< boost::iterators::detail::is_traversal_at_least< TC, boost::iterators::random_access_traversal_tag >, Derived >::type operator+ args
23866: # 497 "/usr/include/boost/iterator/iterator_facade.hpp" 3 4
23866: class iterator_core_access
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class I, class V, class TC, class R, class D> friend class iterator_facade;
23866: template <class I, class V, class TC, class R, class D, bool IsBidirectionalTraversal, bool IsRandomAccessTraversal>
23866: friend class detail::iterator_facade_base;
23866:
23866: #define BOOST_ITERATOR_FACADE_RELATION(op) BOOST_ITERATOR_FACADE_INTEROP_HEAD(friend,op, boost::iterators::detail::always_bool2);
23866:
23866:
23866: template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > friend typename boost::iterators::detail::enable_if_interoperable< Derived1, Derived2 , typename mpl::apply2<boost::iterators::detail::always_bool2,Derived1,Derived2>::type >::type operator ==( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs);
23866: template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > friend typename boost::iterators::detail::enable_if_interoperable< Derived1, Derived2 , typename mpl::apply2<boost::iterators::detail::always_bool2,Derived1,Derived2>::type >::type operator !=( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs);
23866:
23866: #undef BOOST_ITERATOR_FACADE_RELATION
23866:
23866: #define BOOST_ITERATOR_FACADE_RANDOM_ACCESS_RELATION(op) BOOST_ITERATOR_FACADE_INTEROP_RANDOM_ACCESS_HEAD(friend,op, boost::iterators::detail::always_bool2);
23866:
23866:
23866: template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > friend typename boost::iterators::detail::enable_if_interoperable_and_random_access_traversal< Derived1, Derived2 , typename mpl::apply2<boost::iterators::detail::always_bool2,Derived1,Derived2>::type >::type operator <( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs);
23866: template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > friend typename boost::iterators::detail::enable_if_interoperable_and_random_access_traversal< Derived1, Derived2 , typename mpl::apply2<boost::iterators::detail::always_bool2,Derived1,Derived2>::type >::type operator >( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs);
23866: template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > friend typename boost::iterators::detail::enable_if_interoperable_and_random_access_traversal< Derived1, Derived2 , typename mpl::apply2<boost::iterators::detail::always_bool2,Derived1,Derived2>::type >::type operator <=( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs);
23866: template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > friend typename boost::iterators::detail::enable_if_interoperable_and_random_access_traversal< Derived1, Derived2 , typename mpl::apply2<boost::iterators::detail::always_bool2,Derived1,Derived2>::type >::type operator >=( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs);
23866:
23866: #undef BOOST_ITERATOR_FACADE_RANDOM_ACCESS_RELATION
23866:
23866: template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > friend typename boost::iterators::detail::enable_if_interoperable_and_random_access_traversal< Derived1, Derived2 , typename mpl::apply2<boost::iterators::detail::choose_difference_type,Derived1,Derived2>::type >::type operator -( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs)
23866:
23866: ;
23866:
23866: template <class Derived, class V, class TC, class R, class D> friend inline typename boost::iterators::enable_if< boost::iterators::detail::is_traversal_at_least< TC, boost::iterators::random_access_traversal_tag >, Derived >::type operator+ (iterator_facade<Derived, V, TC, R, D> const& , typename Derived::difference_type)
23866:
23866:
23866:
23866:
23866: ;
23866:
23866: template <class Derived, class V, class TC, class R, class D> friend inline typename boost::iterators::enable_if< boost::iterators::detail::is_traversal_at_least< TC, boost::iterators::random_access_traversal_tag >, Derived >::type operator+ (typename Derived::difference_type , iterator_facade<Derived, V, TC, R, D> const&)
23866:
23866:
23866:
23866:
23866: ;
23866:
23866:
23866:
23866: template <class Facade>
23866: static typename Facade::reference dereference(Facade const& f)
23866: {
23866: return f.dereference();
23866: }
23866:
23866: template <class Facade>
23866: static void increment(Facade& f)
23866: {
23866: f.increment();
23866: }
23866:
23866: template <class Facade>
23866: static void decrement(Facade& f)
23866: {
23866: f.decrement();
23866: }
23866:
23866: template <class Facade1, class Facade2>
23866: static bool equal(Facade1 const& f1, Facade2 const& f2, mpl::true_)
23866: {
23866: return f1.equal(f2);
23866: }
23866:
23866: template <class Facade1, class Facade2>
23866: static bool equal(Facade1 const& f1, Facade2 const& f2, mpl::false_)
23866: {
23866: return f2.equal(f1);
23866: }
23866:
23866: template <class Facade>
23866: static void advance(Facade& f, typename Facade::difference_type n)
23866: {
23866: f.advance(n);
23866: }
23866:
23866: template <class Facade1, class Facade2>
23866: static typename Facade1::difference_type distance_from(
23866: Facade1 const& f1, Facade2 const& f2, mpl::true_)
23866: {
23866: return -f1.distance_to(f2);
23866: }
23866:
23866: template <class Facade1, class Facade2>
23866: static typename Facade2::difference_type distance_from(
23866: Facade1 const& f1, Facade2 const& f2, mpl::false_)
23866: {
23866: return f2.distance_to(f1);
23866: }
23866:
23866:
23866:
23866:
23866: template <class I, class V, class TC, class R, class D>
23866: static I& derived(iterator_facade<I,V,TC,R,D>& facade)
23866: {
23866: return *static_cast<I*>(&facade);
23866: }
23866:
23866: template <class I, class V, class TC, class R, class D>
23866: static I const& derived(iterator_facade<I,V,TC,R,D> const& facade)
23866: {
23866: return *static_cast<I const*>(&facade);
23866: }
23866:
23866:
23866: iterator_core_access() = delete;
23866: };
23866:
23866: namespace detail {
23866:
23866:
23866: template <
23866: class Derived
23866: , class Value
23866: , class CategoryOrTraversal
23866: , class Reference
23866: , class Difference
23866: >
23866: class iterator_facade_base< Derived, Value, CategoryOrTraversal, Reference, Difference, false, false >
23866:
23866:
23866:
23866:
23866:
23866:
23866: {
23866: private:
23866: typedef boost::iterators::detail::iterator_facade_types<
23866: Value, CategoryOrTraversal, Reference, Difference
23866: > associated_types;
23866:
23866: typedef boost::iterators::detail::operator_arrow_dispatch<
23866: Reference
23866: , typename associated_types::pointer
23866: > operator_arrow_dispatch_;
23866:
23866: public:
23866: typedef typename associated_types::value_type value_type;
23866: typedef Reference reference;
23866: typedef Difference difference_type;
23866:
23866: typedef typename operator_arrow_dispatch_::result_type pointer;
23866:
23866: typedef typename associated_types::iterator_category iterator_category;
23866:
23866: public:
23866: reference operator*() const
23866: {
23866: return iterator_core_access::dereference(this->derived());
23866: }
23866:
23866: pointer operator->() const
23866: {
23866: return operator_arrow_dispatch_::apply(*this->derived());
23866: }
23866:
23866: Derived& operator++()
23866: {
23866: iterator_core_access::increment(this->derived());
23866: return this->derived();
23866: }
23866:
23866: protected:
23866:
23866:
23866:
23866: Derived& derived()
23866: {
23866: return *static_cast<Derived*>(this);
23866: }
23866:
23866: Derived const& derived() const
23866: {
23866: return *static_cast<Derived const*>(this);
23866: }
23866: };
23866:
23866:
23866: template <
23866: class Derived
23866: , class Value
23866: , class CategoryOrTraversal
23866: , class Reference
23866: , class Difference
23866: >
23866: class iterator_facade_base< Derived, Value, CategoryOrTraversal, Reference, Difference, true, false > :
23866: public iterator_facade_base< Derived, Value, CategoryOrTraversal, Reference, Difference, false, false >
23866: {
23866: public:
23866: Derived& operator--()
23866: {
23866: iterator_core_access::decrement(this->derived());
23866: return this->derived();
23866: }
23866:
23866: Derived operator--(int)
23866: {
23866: Derived tmp(this->derived());
23866: --*this;
23866: return tmp;
23866: }
23866: };
23866:
23866:
23866: template <
23866: class Derived
23866: , class Value
23866: , class CategoryOrTraversal
23866: , class Reference
23866: , class Difference
23866: >
23866: class iterator_facade_base< Derived, Value, CategoryOrTraversal, Reference, Difference, true, true > :
23866: public iterator_facade_base< Derived, Value, CategoryOrTraversal, Reference, Difference, true, false >
23866: {
23866: private:
23866: typedef iterator_facade_base< Derived, Value, CategoryOrTraversal, Reference, Difference, true, false > base_type;
23866:
23866: public:
23866: typedef typename base_type::reference reference;
23866: typedef typename base_type::difference_type difference_type;
23866:
23866: public:
23866: typename boost::iterators::detail::operator_brackets_result<Derived, Value, reference>::type
23866: operator[](difference_type n) const
23866: {
23866: typedef boost::iterators::detail::use_operator_brackets_proxy<Value, Reference> use_proxy;
23866:
23866: return boost::iterators::detail::make_operator_brackets_result<Derived>(
23866: this->derived() + n
23866: , use_proxy()
23866: );
23866: }
23866:
23866: Derived& operator+=(difference_type n)
23866: {
23866: iterator_core_access::advance(this->derived(), n);
23866: return this->derived();
23866: }
23866:
23866: Derived& operator-=(difference_type n)
23866: {
23866: iterator_core_access::advance(this->derived(), -n);
23866: return this->derived();
23866: }
23866:
23866: Derived operator-(difference_type x) const
23866: {
23866: Derived result(this->derived());
23866: return result -= x;
23866: }
23866: };
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template <
23866: class Derived
23866: , class Value
23866: , class CategoryOrTraversal
23866: , class Reference = Value&
23866: , class Difference = std::ptrdiff_t
23866: >
23866: class iterator_facade :
23866: public detail::iterator_facade_base<
23866: Derived,
23866: Value,
23866: CategoryOrTraversal,
23866: Reference,
23866: Difference,
23866: detail::is_traversal_at_least< CategoryOrTraversal, bidirectional_traversal_tag >::value,
23866: detail::is_traversal_at_least< CategoryOrTraversal, random_access_traversal_tag >::value
23866: >
23866: {
23866: protected:
23866:
23866: typedef iterator_facade<Derived,Value,CategoryOrTraversal,Reference,Difference> iterator_facade_;
23866: };
23866:
23866: template <class I, class V, class TC, class R, class D>
23866: inline typename boost::iterators::detail::postfix_increment_result<I,V,R,TC>::type
23866: operator++(
23866: iterator_facade<I,V,TC,R,D>& i
23866: , int
23866: )
23866: {
23866: typename boost::iterators::detail::postfix_increment_result<I,V,R,TC>::type
23866: tmp(*static_cast<I*>(&i));
23866:
23866: ++i;
23866:
23866: return tmp;
23866: }
23866: # 875 "/usr/include/boost/iterator/iterator_facade.hpp" 3 4
23866: #define BOOST_ITERATOR_CONVERTIBLE(a,b) is_convertible<a,b>()
23866:
23866:
23866: #define BOOST_ITERATOR_FACADE_INTEROP(op,result_type,return_prefix,base_op) BOOST_ITERATOR_FACADE_INTEROP_HEAD(inline, op, result_type) { BOOST_STATIC_ASSERT(( is_interoperable< Derived1, Derived2 >::value )); return_prefix iterator_core_access::base_op( *static_cast<Derived1 const*>(&lhs) , *static_cast<Derived2 const*>(&rhs) , BOOST_ITERATOR_CONVERTIBLE(Derived2,Derived1) ); }
23866: # 892 "/usr/include/boost/iterator/iterator_facade.hpp" 3 4
23866: #define BOOST_ITERATOR_FACADE_RELATION(op,return_prefix,base_op) BOOST_ITERATOR_FACADE_INTEROP( op , boost::iterators::detail::always_bool2 , return_prefix , base_op )
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > inline typename boost::iterators::detail::enable_if_interoperable< Derived1, Derived2 , typename mpl::apply2<boost::iterators::detail::always_bool2,Derived1,Derived2>::type >::type operator ==( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs) { static_assert(( is_interoperable< Derived1, Derived2 >::value ), "( is_interoperable< Derived1, Derived2 >::value )"); return iterator_core_access::equal( *static_cast<Derived1 const*>(&lhs) , *static_cast<Derived2 const*>(&rhs) , is_convertible<Derived2,Derived1>() ); }
23866: template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > inline typename boost::iterators::detail::enable_if_interoperable< Derived1, Derived2 , typename mpl::apply2<boost::iterators::detail::always_bool2,Derived1,Derived2>::type >::type operator !=( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs) { static_assert(( is_interoperable< Derived1, Derived2 >::value ), "( is_interoperable< Derived1, Derived2 >::value )"); return ! iterator_core_access::equal( *static_cast<Derived1 const*>(&lhs) , *static_cast<Derived2 const*>(&rhs) , is_convertible<Derived2,Derived1>() ); }
23866:
23866: #undef BOOST_ITERATOR_FACADE_RELATION
23866:
23866:
23866: #define BOOST_ITERATOR_FACADE_INTEROP_RANDOM_ACCESS(op,result_type,return_prefix,base_op) BOOST_ITERATOR_FACADE_INTEROP_RANDOM_ACCESS_HEAD(inline, op, result_type) { BOOST_STATIC_ASSERT(( is_interoperable< Derived1, Derived2 >::value && boost::iterators::detail::is_traversal_at_least< typename iterator_category< Derived1 >::type, random_access_traversal_tag >::value && boost::iterators::detail::is_traversal_at_least< typename iterator_category< Derived2 >::type, random_access_traversal_tag >::value )); return_prefix iterator_core_access::base_op( *static_cast<Derived1 const*>(&lhs) , *static_cast<Derived2 const*>(&rhs) , BOOST_ITERATOR_CONVERTIBLE(Derived2,Derived1) ); }
23866: # 922 "/usr/include/boost/iterator/iterator_facade.hpp" 3 4
23866: #define BOOST_ITERATOR_FACADE_RANDOM_ACCESS_RELATION(op,return_prefix,base_op) BOOST_ITERATOR_FACADE_INTEROP_RANDOM_ACCESS( op , boost::iterators::detail::always_bool2 , return_prefix , base_op )
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > inline typename boost::iterators::detail::enable_if_interoperable_and_random_access_traversal< Derived1, Derived2 , typename mpl::apply2<boost::iterators::detail::always_bool2,Derived1,Derived2>::type >::type operator <( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs) { static_assert(( is_interoperable< Derived1, Derived2 >::value && boost::iterators::detail::is_traversal_at_least< typename iterator_category< Derived1 >::type, random_access_traversal_tag >::value && boost::iterators::detail::is_traversal_at_least< typename iterator_category< Derived2 >::type, random_access_traversal_tag >::value ), "( is_interoperable< Derived1, Derived2 >::value && boost::iterators::detail::is_traversal_at_least< typename iterator_category< Derived1 >::type, random_access_traversal_tag >::value && boost::iterators::detail::is_traversal_at_least< typename iterator_category< Derived2 >::type, random_access_traversal_tag >::value )"); return 0 > iterator_core_access::distance_from( *static_cast<Derived1 const*>(&lhs) , *static_cast<Derived2 const*>(&rhs) , is_convertible<Derived2,Derived1>() ); }
23866: template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > inline typename boost::iterators::detail::enable_if_interoperable_and_random_access_traversal< Derived1, Derived2 , typename mpl::apply2<boost::iterators::detail::always_bool2,Derived1,Derived2>::type >::type operator >( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs) { static_assert(( is_interoperable< Derived1, Derived2 >::value && boost::iterators::detail::is_traversal_at_least< typename iterator_category< Derived1 >::type, random_access_traversal_tag >::value && boost::iterators::detail::is_traversal_at_least< typename iterator_category< Derived2 >::type, random_access_traversal_tag >::value ), "( is_interoperable< Derived1, Derived2 >::value && boost::iterators::detail::is_traversal_at_least< typename iterator_category< Derived1 >::type, random_access_traversal_tag >::value && boost::iterators::detail::is_traversal_at_least< typename iterator_category< Derived2 >::type, random_access_traversal_tag >::value )"); return 0 < iterator_core_access::distance_from( *static_cast<Derived1 const*>(&lhs) , *static_cast<Derived2 const*>(&rhs) , is_convertible<Derived2,Derived1>() ); }
23866: template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > inline typename boost::iterators::detail::enable_if_interoperable_and_random_access_traversal< Derived1, Derived2 , typename mpl::apply2<boost::iterators::detail::always_bool2,Derived1,Derived2>::type >::type operator <=( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs) { static_assert(( is_interoperable< Derived1, Derived2 >::value && boost::iterators::detail::is_traversal_at_least< typename iterator_category< Derived1 >::type, random_access_traversal_tag >::value && boost::iterators::detail::is_traversal_at_least< typename iterator_category< Derived2 >::type, random_access_traversal_tag >::value ), "( is_interoperable< Derived1, Derived2 >::value && boost::iterators::detail::is_traversal_at_least< typename iterator_category< Derived1 >::type, random_access_traversal_tag >::value && boost::iterators::detail::is_traversal_at_least< typename iterator_category< Derived2 >::type, random_access_traversal_tag >::value )"); return 0 >= iterator_core_access::distance_from( *static_cast<Derived1 const*>(&lhs) , *static_cast<Derived2 const*>(&rhs) , is_convertible<Derived2,Derived1>() ); }
23866: template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > inline typename boost::iterators::detail::enable_if_interoperable_and_random_access_traversal< Derived1, Derived2 , typename mpl::apply2<boost::iterators::detail::always_bool2,Derived1,Derived2>::type >::type operator >=( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs) { static_assert(( is_interoperable< Derived1, Derived2 >::value && boost::iterators::detail::is_traversal_at_least< typename iterator_category< Derived1 >::type, random_access_traversal_tag >::value && boost::iterators::detail::is_traversal_at_least< typename iterator_category< Derived2 >::type, random_access_traversal_tag >::value ), "( is_interoperable< Derived1, Derived2 >::value && boost::iterators::detail::is_traversal_at_least< typename iterator_category< Derived1 >::type, random_access_traversal_tag >::value && boost::iterators::detail::is_traversal_at_least< typename iterator_category< Derived2 >::type, random_access_traversal_tag >::value )"); return 0 <= iterator_core_access::distance_from( *static_cast<Derived1 const*>(&lhs) , *static_cast<Derived2 const*>(&rhs) , is_convertible<Derived2,Derived1>() ); }
23866:
23866: #undef BOOST_ITERATOR_FACADE_RANDOM_ACCESS_RELATION
23866:
23866:
23866: template < class Derived1, class V1, class TC1, class Reference1, class Difference1 , class Derived2, class V2, class TC2, class Reference2, class Difference2 > inline typename boost::iterators::detail::enable_if_interoperable_and_random_access_traversal< Derived1, Derived2 , typename mpl::apply2<boost::iterators::detail::choose_difference_type,Derived1,Derived2>::type >::type operator -( iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs) { static_assert(( is_interoperable< Derived1, Derived2 >::value && boost::iterators::detail::is_traversal_at_least< typename iterator_category< Derived1 >::type, random_access_traversal_tag >::value && boost::iterators::detail::is_traversal_at_least< typename iterator_category< Derived2 >::type, random_access_traversal_tag >::value ), "( is_interoperable< Derived1, Derived2 >::value && boost::iterators::detail::is_traversal_at_least< typename iterator_category< Derived1 >::type, random_access_traversal_tag >::value && boost::iterators::detail::is_traversal_at_least< typename iterator_category< Derived2 >::type, random_access_traversal_tag >::value )"); return iterator_core_access::distance_from( *static_cast<Derived1 const*>(&lhs) , *static_cast<Derived2 const*>(&rhs) , is_convertible<Derived2,Derived1>() ); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: #undef BOOST_ITERATOR_FACADE_INTEROP
23866: #undef BOOST_ITERATOR_FACADE_INTEROP_RANDOM_ACCESS
23866:
23866: #define BOOST_ITERATOR_FACADE_PLUS(args) BOOST_ITERATOR_FACADE_PLUS_HEAD(inline, args) { Derived tmp(static_cast<Derived const&>(i)); return tmp += n; }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class Derived, class V, class TC, class R, class D> inline typename boost::iterators::enable_if< boost::iterators::detail::is_traversal_at_least< TC, boost::iterators::random_access_traversal_tag >, Derived >::type operator+ ( iterator_facade<Derived, V, TC, R, D> const& i , typename Derived::difference_type n ) { Derived tmp(static_cast<Derived const&>(i)); return tmp += n; }
23866:
23866:
23866:
23866:
23866: template <class Derived, class V, class TC, class R, class D> inline typename boost::iterators::enable_if< boost::iterators::detail::is_traversal_at_least< TC, boost::iterators::random_access_traversal_tag >, Derived >::type operator+ ( typename Derived::difference_type n , iterator_facade<Derived, V, TC, R, D> const& i ) { Derived tmp(static_cast<Derived const&>(i)); return tmp += n; }
23866:
23866:
23866:
23866:
23866: #undef BOOST_ITERATOR_FACADE_PLUS
23866: #undef BOOST_ITERATOR_FACADE_PLUS_HEAD
23866:
23866: #undef BOOST_ITERATOR_FACADE_INTEROP_HEAD
23866: #undef BOOST_ITERATOR_FACADE_INTEROP_RANDOM_ACCESS_HEAD
23866: #undef BOOST_ITERATOR_FACADE_INTEROP_HEAD_IMPL
23866:
23866: }
23866:
23866: using iterators::iterator_core_access;
23866: using iterators::iterator_facade;
23866:
23866: }
23866:
23866: # 1 "/usr/include/boost/iterator/detail/config_undef.hpp" 1 3 4
23866: # 14 "/usr/include/boost/iterator/detail/config_undef.hpp" 3 4
23866: #undef BOOST_NO_IS_CONVERTIBLE
23866: #undef BOOST_NO_IS_CONVERTIBLE_TEMPLATE
23866: #undef BOOST_NO_STRICT_ITERATOR_INTEROPERABILITY
23866: #undef BOOST_NO_LVALUE_RETURN_DETECTION
23866: #undef BOOST_NO_ONE_WAY_ITERATOR_INTEROP
23866:
23866:
23866: #undef BOOST_ITERATOR_CONFIG_DEF
23866: # 980 "/usr/include/boost/iterator/iterator_facade.hpp" 2 3 4
23866: # 28 "/usr/include/boost/range/iterator_range_core.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/is_base_and_derived.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/is_base_and_derived.hpp" 3 4
23866: #define BOOST_TT_IS_BASE_AND_DERIVED_HPP_INCLUDED
23866: # 24 "/usr/include/boost/type_traits/is_base_and_derived.hpp" 3 4
23866: namespace boost {
23866:
23866: namespace detail {
23866: # 220 "/usr/include/boost/type_traits/is_base_and_derived.hpp" 3 4
23866: template <typename B, typename D>
23866: struct is_base_and_derived_impl
23866: {
23866: typedef typename remove_cv<B>::type ncvB;
23866: typedef typename remove_cv<D>::type ncvD;
23866:
23866: static const bool value = ((__is_base_of(B,D) && !is_same<B,D>::value) && ! ::boost::is_same<ncvB,ncvD>::value);
23866: };
23866:
23866: }
23866:
23866: template <class Base, class Derived> struct is_base_and_derived
23866: : public integral_constant<bool, (::boost::detail::is_base_and_derived_impl<Base, Derived>::value)> {};
23866:
23866: template <class Base, class Derived> struct is_base_and_derived<Base&, Derived> : public false_type{};
23866: template <class Base, class Derived> struct is_base_and_derived<Base, Derived&> : public false_type{};
23866: template <class Base, class Derived> struct is_base_and_derived<Base&, Derived&> : public false_type{};
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 34 "/usr/include/boost/range/iterator_range_core.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/range/functions.hpp" 1 3 4
23866: # 12 "/usr/include/boost/range/functions.hpp" 3 4
23866: #define BOOST_RANGE_FUNCTIONS_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/range/size.hpp" 1 3 4
23866: # 12 "/usr/include/boost/range/size.hpp" 3 4
23866: #define BOOST_RANGE_SIZE_HPP
23866: # 21 "/usr/include/boost/range/size.hpp" 3 4
23866: # 1 "/usr/include/boost/range/size_type.hpp" 1 3 4
23866: # 12 "/usr/include/boost/range/size_type.hpp" 3 4
23866: #define BOOST_RANGE_SIZE_TYPE_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/range/difference_type.hpp" 1 3 4
23866: # 12 "/usr/include/boost/range/difference_type.hpp" 3 4
23866: #define BOOST_RANGE_DIFFERENCE_TYPE_HPP
23866: # 21 "/usr/include/boost/range/difference_type.hpp" 3 4
23866: # 1 "/usr/include/boost/range/has_range_iterator.hpp" 1 3 4
23866: # 14 "/usr/include/boost/range/has_range_iterator.hpp" 3 4
23866: #define BOOST_RANGE_HAS_ITERATOR_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/utility/enable_if.hpp" 1 3 4
23866: # 10 "/usr/include/boost/utility/enable_if.hpp" 3 4
23866: #define BOOST_UTILITY_ENABLE_IF_HPP
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/core/enable_if.hpp" 1 3 4
23866: # 15 "/usr/include/boost/core/enable_if.hpp" 3 4
23866: #define BOOST_CORE_ENABLE_IF_HPP
23866: # 24 "/usr/include/boost/core/enable_if.hpp" 3 4
23866: namespace boost
23866: {
23866: template<typename T, typename R=void>
23866: struct enable_if_has_type
23866: {
23866: typedef R type;
23866: };
23866:
23866: template <bool B, class T = void>
23866: struct enable_if_c {
23866: typedef T type;
23866: };
23866:
23866: template <class T>
23866: struct enable_if_c<false, T> {};
23866:
23866: template <class Cond, class T = void>
23866: struct enable_if : public enable_if_c<Cond::value, T> {};
23866:
23866: template <bool B, class T>
23866: struct lazy_enable_if_c {
23866: typedef typename T::type type;
23866: };
23866:
23866: template <class T>
23866: struct lazy_enable_if_c<false, T> {};
23866:
23866: template <class Cond, class T>
23866: struct lazy_enable_if : public lazy_enable_if_c<Cond::value, T> {};
23866:
23866:
23866: template <bool B, class T = void>
23866: struct disable_if_c {
23866: typedef T type;
23866: };
23866:
23866: template <class T>
23866: struct disable_if_c<true, T> {};
23866:
23866: template <class Cond, class T = void>
23866: struct disable_if : public disable_if_c<Cond::value, T> {};
23866:
23866: template <bool B, class T>
23866: struct lazy_disable_if_c {
23866: typedef typename T::type type;
23866: };
23866:
23866: template <class T>
23866: struct lazy_disable_if_c<true, T> {};
23866:
23866: template <class Cond, class T>
23866: struct lazy_disable_if : public lazy_disable_if_c<Cond::value, T> {};
23866:
23866: }
23866: # 16 "/usr/include/boost/utility/enable_if.hpp" 2 3 4
23866: # 22 "/usr/include/boost/range/has_range_iterator.hpp" 2 3 4
23866:
23866: namespace boost
23866: {
23866: namespace range_detail
23866: {
23866: template< typename T, typename fallback_ = boost::mpl::bool_<false> > struct has_type { struct gcc_3_2_wknd { template< typename U > static boost::mpl::aux::yes_tag test( boost::mpl::aux::type_wrapper<U> const volatile* , boost::mpl::aux::type_wrapper<typename U::type>* = 0 ); static boost::mpl::aux::no_tag test(...); }; typedef boost::mpl::aux::type_wrapper<T> t_; static const bool value = sizeof(gcc_3_2_wknd::test(static_cast<t_*>(0))) == sizeof(boost::mpl::aux::yes_tag); typedef boost::mpl::bool_<value> type; };
23866:
23866: template<class T, class Enabler = void>
23866: struct has_range_iterator_impl
23866: : boost::mpl::false_
23866: {
23866: };
23866:
23866: template<class T>
23866: struct has_range_iterator_impl<
23866: T,
23866: typename ::boost::enable_if<
23866: typename mpl::eval_if<is_const<T>,
23866: has_type<boost::range_const_iterator<
23866: typename remove_const<T>::type> >,
23866: has_type<boost::range_mutable_iterator<T> >
23866: >::type
23866: >::type
23866: >
23866: : boost::mpl::true_
23866: {
23866: };
23866:
23866: template<class T, class Enabler = void>
23866: struct has_range_const_iterator_impl
23866: : boost::mpl::false_
23866: {
23866: };
23866:
23866: template<class T>
23866: struct has_range_const_iterator_impl<
23866: T,
23866: typename ::boost::enable_if<
23866: has_type<boost::range_const_iterator<T> >
23866: >::type
23866: >
23866: : boost::mpl::true_
23866: {
23866: };
23866:
23866: }
23866:
23866: template<class T>
23866: struct has_range_iterator
23866: : range_detail::has_range_iterator_impl<
23866: typename remove_reference<T>::type>
23866: {};
23866:
23866: template<class T>
23866: struct has_range_const_iterator
23866: : range_detail::has_range_const_iterator_impl<
23866: typename remove_reference<T>::type>
23866: {};
23866: }
23866: # 22 "/usr/include/boost/range/difference_type.hpp" 2 3 4
23866:
23866:
23866:
23866: namespace boost
23866: {
23866: namespace range_detail
23866: {
23866: template< class T, bool B = has_type<range_iterator<T> >::value >
23866: struct range_difference
23866: { };
23866:
23866: template< class T >
23866: struct range_difference<T, true>
23866: : iterator_difference<
23866: typename range_iterator<T>::type
23866: >
23866: { };
23866: }
23866:
23866: template< class T >
23866: struct range_difference
23866: : range_detail::range_difference<typename remove_reference<T>::type>
23866: { };
23866: }
23866: # 20 "/usr/include/boost/range/size_type.hpp" 2 3 4
23866: # 1 "/usr/include/boost/range/concepts.hpp" 1 3 4
23866: # 17 "/usr/include/boost/range/concepts.hpp" 3 4
23866: #define BOOST_RANGE_CONCEPTS_HPP
23866:
23866: # 1 "/usr/include/boost/concept_check.hpp" 1 3 4
23866: # 18 "/usr/include/boost/concept_check.hpp" 3 4
23866: #define BOOST_CONCEPT_CHECKS_HPP
23866:
23866: # 1 "/usr/include/boost/concept/assert.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866: #define BOOST_CONCEPT_ASSERT_DWA2006430_HPP
23866: # 26 "/usr/include/boost/concept/assert.hpp" 3 4
23866: #define BOOST_OLD_CONCEPT_SUPPORT
23866: # 35 "/usr/include/boost/concept/assert.hpp" 3 4
23866: # 1 "/usr/include/boost/concept/detail/general.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866: #define BOOST_CONCEPT_DETAIL_GENERAL_DWA2006429_HPP
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/concept/detail/backward_compatibility.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866: #define BOOST_CONCEPT_BACKWARD_COMPATIBILITY_DWA200968_HPP
23866:
23866: namespace boost
23866: {
23866: namespace concepts {}
23866:
23866:
23866:
23866:
23866: }
23866: # 10 "/usr/include/boost/concept/detail/general.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/concept/detail/has_constraints.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866: #define BOOST_CONCEPT_DETAIL_HAS_CONSTRAINTS_DWA2006429_HPP
23866:
23866:
23866:
23866:
23866:
23866: namespace boost { namespace concepts {
23866:
23866: namespace detail
23866: {
23866:
23866:
23866:
23866: typedef char yes;
23866: typedef char (&no)[2];
23866:
23866: template <class Model, void (Model::*)()>
23866: struct wrap_constraints {};
23866: # 31 "/usr/include/boost/concept/detail/has_constraints.hpp" 3 4
23866: template <class Model>
23866: inline yes has_constraints_(Model*, wrap_constraints<Model,&Model::constraints>* = 0);
23866: inline no has_constraints_(...);
23866:
23866: }
23866:
23866:
23866:
23866: template <class Model>
23866: struct not_satisfied
23866: {
23866: static const bool value = sizeof( detail::has_constraints_((Model*)0) ) == sizeof(detail::yes)
23866:
23866: ;
23866: typedef boost::integral_constant<bool, value> type;
23866: };
23866:
23866: }}
23866: # 13 "/usr/include/boost/concept/detail/general.hpp" 2 3 4
23866: # 1 "/usr/include/boost/type_traits/conditional.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/conditional.hpp" 3 4
23866: #define BOOST_TT_CONDITIONAL_HPP_INCLUDED
23866:
23866:
23866:
23866: namespace boost {
23866:
23866: template <bool b, class T, class U> struct conditional { typedef T type; };
23866: template <class T, class U> struct conditional<false, T, U> { typedef U type; };
23866:
23866:
23866:
23866: template <bool b, class T, class U> using conditional_t = typename conditional<b, T, U>::type;
23866:
23866:
23866:
23866: }
23866: # 14 "/usr/include/boost/concept/detail/general.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: namespace boost { namespace concepts {
23866:
23866: template <class ModelFn>
23866: struct requirement_;
23866:
23866: namespace detail
23866: {
23866: template <void(*)()> struct instantiate {};
23866: }
23866:
23866: template <class Model>
23866: struct requirement
23866: {
23866: static void failed() { ((Model*)0)->~Model(); }
23866: };
23866:
23866: struct failed {};
23866:
23866: template <class Model>
23866: struct requirement<failed ************ Model::************>
23866: {
23866: static void failed() { ((Model*)0)->~Model(); }
23866: };
23866:
23866:
23866:
23866: template <class Model>
23866: struct constraint
23866: {
23866: static void failed() { ((Model*)0)->constraints(); }
23866: };
23866:
23866: template <class Model>
23866: struct requirement_<void(*)(Model)>
23866: : boost::conditional<
23866: concepts::not_satisfied<Model>::value
23866: , constraint<Model>
23866: , requirement<failed ************ Model::************>
23866: >::type
23866: {};
23866: # 69 "/usr/include/boost/concept/detail/general.hpp" 3 4
23866: #define BOOST_CONCEPT_ASSERT_FN(ModelFnPtr) typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<ModelFnPtr>::failed> BOOST_PP_CAT(boost_concept_check,__LINE__) BOOST_ATTRIBUTE_UNUSED
23866:
23866:
23866:
23866:
23866:
23866: }}
23866: # 36 "/usr/include/boost/concept/assert.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_CONCEPT_ASSERT(ModelInParens) BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens)
23866: # 21 "/usr/include/boost/concept_check.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/conversion_traits.hpp" 1 3 4
23866: # 13 "/usr/include/boost/type_traits/conversion_traits.hpp" 3 4
23866: #define BOOST_TT_CONVERSION_TRAITS_HPP_INCLUDED
23866: # 24 "/usr/include/boost/concept_check.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/concept/usage.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866: #define BOOST_CONCEPT_USAGE_DWA2006919_HPP
23866:
23866:
23866:
23866:
23866:
23866: namespace boost { namespace concepts {
23866:
23866: template <class Model>
23866: struct usage_requirements
23866: {
23866: ~usage_requirements() { ((Model*)0)->~Model(); }
23866: };
23866: # 28 "/usr/include/boost/concept/usage.hpp" 3 4
23866: #define BOOST_CONCEPT_USAGE(model) BOOST_CONCEPT_ASSERT((boost::concepts::usage_requirements<model>)); ~model()
23866:
23866:
23866:
23866:
23866:
23866: }}
23866: # 32 "/usr/include/boost/concept_check.hpp" 2 3 4
23866: # 1 "/usr/include/boost/concept/detail/concept_def.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866: #define BOOST_CONCEPT_DETAIL_CONCEPT_DEF_DWA200651_HPP
23866: # 1 "/usr/include/boost/preprocessor/seq/for_each_i.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/seq/for_each_i.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_SEQ_FOR_EACH_I_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/repetition/for.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/repetition/for.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_REPETITION_FOR_HPP
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/detail/auto_rec.hpp" 1 3 4
23866: # 22 "/usr/include/boost/preprocessor/repetition/for.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_FOR BOOST_PP_CAT(BOOST_PP_FOR_, BOOST_PP_AUTO_REC(BOOST_PP_FOR_P, 256))
23866:
23866: #define BOOST_PP_FOR_P(n) BOOST_PP_CAT(BOOST_PP_FOR_CHECK_, BOOST_PP_FOR_ ## n(1, BOOST_PP_FOR_SR_P, BOOST_PP_FOR_SR_O, BOOST_PP_FOR_SR_M))
23866:
23866: #define BOOST_PP_FOR_SR_P(r,s) s
23866: #define BOOST_PP_FOR_SR_O(r,s) 0
23866: #define BOOST_PP_FOR_SR_M(r,s) BOOST_PP_NIL
23866: # 44 "/usr/include/boost/preprocessor/repetition/for.hpp" 3 4
23866: # 1 "/usr/include/boost/preprocessor/repetition/detail/for.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/repetition/detail/for.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_REPETITION_DETAIL_FOR_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_FOR_1(s,p,o,m) BOOST_PP_FOR_1_C(BOOST_PP_BOOL(p(2, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_2(s,p,o,m) BOOST_PP_FOR_2_C(BOOST_PP_BOOL(p(3, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_3(s,p,o,m) BOOST_PP_FOR_3_C(BOOST_PP_BOOL(p(4, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_4(s,p,o,m) BOOST_PP_FOR_4_C(BOOST_PP_BOOL(p(5, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_5(s,p,o,m) BOOST_PP_FOR_5_C(BOOST_PP_BOOL(p(6, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_6(s,p,o,m) BOOST_PP_FOR_6_C(BOOST_PP_BOOL(p(7, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_7(s,p,o,m) BOOST_PP_FOR_7_C(BOOST_PP_BOOL(p(8, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_8(s,p,o,m) BOOST_PP_FOR_8_C(BOOST_PP_BOOL(p(9, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_9(s,p,o,m) BOOST_PP_FOR_9_C(BOOST_PP_BOOL(p(10, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_10(s,p,o,m) BOOST_PP_FOR_10_C(BOOST_PP_BOOL(p(11, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_11(s,p,o,m) BOOST_PP_FOR_11_C(BOOST_PP_BOOL(p(12, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_12(s,p,o,m) BOOST_PP_FOR_12_C(BOOST_PP_BOOL(p(13, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_13(s,p,o,m) BOOST_PP_FOR_13_C(BOOST_PP_BOOL(p(14, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_14(s,p,o,m) BOOST_PP_FOR_14_C(BOOST_PP_BOOL(p(15, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_15(s,p,o,m) BOOST_PP_FOR_15_C(BOOST_PP_BOOL(p(16, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_16(s,p,o,m) BOOST_PP_FOR_16_C(BOOST_PP_BOOL(p(17, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_17(s,p,o,m) BOOST_PP_FOR_17_C(BOOST_PP_BOOL(p(18, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_18(s,p,o,m) BOOST_PP_FOR_18_C(BOOST_PP_BOOL(p(19, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_19(s,p,o,m) BOOST_PP_FOR_19_C(BOOST_PP_BOOL(p(20, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_20(s,p,o,m) BOOST_PP_FOR_20_C(BOOST_PP_BOOL(p(21, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_21(s,p,o,m) BOOST_PP_FOR_21_C(BOOST_PP_BOOL(p(22, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_22(s,p,o,m) BOOST_PP_FOR_22_C(BOOST_PP_BOOL(p(23, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_23(s,p,o,m) BOOST_PP_FOR_23_C(BOOST_PP_BOOL(p(24, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_24(s,p,o,m) BOOST_PP_FOR_24_C(BOOST_PP_BOOL(p(25, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_25(s,p,o,m) BOOST_PP_FOR_25_C(BOOST_PP_BOOL(p(26, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_26(s,p,o,m) BOOST_PP_FOR_26_C(BOOST_PP_BOOL(p(27, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_27(s,p,o,m) BOOST_PP_FOR_27_C(BOOST_PP_BOOL(p(28, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_28(s,p,o,m) BOOST_PP_FOR_28_C(BOOST_PP_BOOL(p(29, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_29(s,p,o,m) BOOST_PP_FOR_29_C(BOOST_PP_BOOL(p(30, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_30(s,p,o,m) BOOST_PP_FOR_30_C(BOOST_PP_BOOL(p(31, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_31(s,p,o,m) BOOST_PP_FOR_31_C(BOOST_PP_BOOL(p(32, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_32(s,p,o,m) BOOST_PP_FOR_32_C(BOOST_PP_BOOL(p(33, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_33(s,p,o,m) BOOST_PP_FOR_33_C(BOOST_PP_BOOL(p(34, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_34(s,p,o,m) BOOST_PP_FOR_34_C(BOOST_PP_BOOL(p(35, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_35(s,p,o,m) BOOST_PP_FOR_35_C(BOOST_PP_BOOL(p(36, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_36(s,p,o,m) BOOST_PP_FOR_36_C(BOOST_PP_BOOL(p(37, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_37(s,p,o,m) BOOST_PP_FOR_37_C(BOOST_PP_BOOL(p(38, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_38(s,p,o,m) BOOST_PP_FOR_38_C(BOOST_PP_BOOL(p(39, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_39(s,p,o,m) BOOST_PP_FOR_39_C(BOOST_PP_BOOL(p(40, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_40(s,p,o,m) BOOST_PP_FOR_40_C(BOOST_PP_BOOL(p(41, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_41(s,p,o,m) BOOST_PP_FOR_41_C(BOOST_PP_BOOL(p(42, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_42(s,p,o,m) BOOST_PP_FOR_42_C(BOOST_PP_BOOL(p(43, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_43(s,p,o,m) BOOST_PP_FOR_43_C(BOOST_PP_BOOL(p(44, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_44(s,p,o,m) BOOST_PP_FOR_44_C(BOOST_PP_BOOL(p(45, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_45(s,p,o,m) BOOST_PP_FOR_45_C(BOOST_PP_BOOL(p(46, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_46(s,p,o,m) BOOST_PP_FOR_46_C(BOOST_PP_BOOL(p(47, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_47(s,p,o,m) BOOST_PP_FOR_47_C(BOOST_PP_BOOL(p(48, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_48(s,p,o,m) BOOST_PP_FOR_48_C(BOOST_PP_BOOL(p(49, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_49(s,p,o,m) BOOST_PP_FOR_49_C(BOOST_PP_BOOL(p(50, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_50(s,p,o,m) BOOST_PP_FOR_50_C(BOOST_PP_BOOL(p(51, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_51(s,p,o,m) BOOST_PP_FOR_51_C(BOOST_PP_BOOL(p(52, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_52(s,p,o,m) BOOST_PP_FOR_52_C(BOOST_PP_BOOL(p(53, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_53(s,p,o,m) BOOST_PP_FOR_53_C(BOOST_PP_BOOL(p(54, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_54(s,p,o,m) BOOST_PP_FOR_54_C(BOOST_PP_BOOL(p(55, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_55(s,p,o,m) BOOST_PP_FOR_55_C(BOOST_PP_BOOL(p(56, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_56(s,p,o,m) BOOST_PP_FOR_56_C(BOOST_PP_BOOL(p(57, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_57(s,p,o,m) BOOST_PP_FOR_57_C(BOOST_PP_BOOL(p(58, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_58(s,p,o,m) BOOST_PP_FOR_58_C(BOOST_PP_BOOL(p(59, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_59(s,p,o,m) BOOST_PP_FOR_59_C(BOOST_PP_BOOL(p(60, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_60(s,p,o,m) BOOST_PP_FOR_60_C(BOOST_PP_BOOL(p(61, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_61(s,p,o,m) BOOST_PP_FOR_61_C(BOOST_PP_BOOL(p(62, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_62(s,p,o,m) BOOST_PP_FOR_62_C(BOOST_PP_BOOL(p(63, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_63(s,p,o,m) BOOST_PP_FOR_63_C(BOOST_PP_BOOL(p(64, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_64(s,p,o,m) BOOST_PP_FOR_64_C(BOOST_PP_BOOL(p(65, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_65(s,p,o,m) BOOST_PP_FOR_65_C(BOOST_PP_BOOL(p(66, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_66(s,p,o,m) BOOST_PP_FOR_66_C(BOOST_PP_BOOL(p(67, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_67(s,p,o,m) BOOST_PP_FOR_67_C(BOOST_PP_BOOL(p(68, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_68(s,p,o,m) BOOST_PP_FOR_68_C(BOOST_PP_BOOL(p(69, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_69(s,p,o,m) BOOST_PP_FOR_69_C(BOOST_PP_BOOL(p(70, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_70(s,p,o,m) BOOST_PP_FOR_70_C(BOOST_PP_BOOL(p(71, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_71(s,p,o,m) BOOST_PP_FOR_71_C(BOOST_PP_BOOL(p(72, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_72(s,p,o,m) BOOST_PP_FOR_72_C(BOOST_PP_BOOL(p(73, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_73(s,p,o,m) BOOST_PP_FOR_73_C(BOOST_PP_BOOL(p(74, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_74(s,p,o,m) BOOST_PP_FOR_74_C(BOOST_PP_BOOL(p(75, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_75(s,p,o,m) BOOST_PP_FOR_75_C(BOOST_PP_BOOL(p(76, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_76(s,p,o,m) BOOST_PP_FOR_76_C(BOOST_PP_BOOL(p(77, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_77(s,p,o,m) BOOST_PP_FOR_77_C(BOOST_PP_BOOL(p(78, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_78(s,p,o,m) BOOST_PP_FOR_78_C(BOOST_PP_BOOL(p(79, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_79(s,p,o,m) BOOST_PP_FOR_79_C(BOOST_PP_BOOL(p(80, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_80(s,p,o,m) BOOST_PP_FOR_80_C(BOOST_PP_BOOL(p(81, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_81(s,p,o,m) BOOST_PP_FOR_81_C(BOOST_PP_BOOL(p(82, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_82(s,p,o,m) BOOST_PP_FOR_82_C(BOOST_PP_BOOL(p(83, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_83(s,p,o,m) BOOST_PP_FOR_83_C(BOOST_PP_BOOL(p(84, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_84(s,p,o,m) BOOST_PP_FOR_84_C(BOOST_PP_BOOL(p(85, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_85(s,p,o,m) BOOST_PP_FOR_85_C(BOOST_PP_BOOL(p(86, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_86(s,p,o,m) BOOST_PP_FOR_86_C(BOOST_PP_BOOL(p(87, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_87(s,p,o,m) BOOST_PP_FOR_87_C(BOOST_PP_BOOL(p(88, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_88(s,p,o,m) BOOST_PP_FOR_88_C(BOOST_PP_BOOL(p(89, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_89(s,p,o,m) BOOST_PP_FOR_89_C(BOOST_PP_BOOL(p(90, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_90(s,p,o,m) BOOST_PP_FOR_90_C(BOOST_PP_BOOL(p(91, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_91(s,p,o,m) BOOST_PP_FOR_91_C(BOOST_PP_BOOL(p(92, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_92(s,p,o,m) BOOST_PP_FOR_92_C(BOOST_PP_BOOL(p(93, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_93(s,p,o,m) BOOST_PP_FOR_93_C(BOOST_PP_BOOL(p(94, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_94(s,p,o,m) BOOST_PP_FOR_94_C(BOOST_PP_BOOL(p(95, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_95(s,p,o,m) BOOST_PP_FOR_95_C(BOOST_PP_BOOL(p(96, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_96(s,p,o,m) BOOST_PP_FOR_96_C(BOOST_PP_BOOL(p(97, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_97(s,p,o,m) BOOST_PP_FOR_97_C(BOOST_PP_BOOL(p(98, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_98(s,p,o,m) BOOST_PP_FOR_98_C(BOOST_PP_BOOL(p(99, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_99(s,p,o,m) BOOST_PP_FOR_99_C(BOOST_PP_BOOL(p(100, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_100(s,p,o,m) BOOST_PP_FOR_100_C(BOOST_PP_BOOL(p(101, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_101(s,p,o,m) BOOST_PP_FOR_101_C(BOOST_PP_BOOL(p(102, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_102(s,p,o,m) BOOST_PP_FOR_102_C(BOOST_PP_BOOL(p(103, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_103(s,p,o,m) BOOST_PP_FOR_103_C(BOOST_PP_BOOL(p(104, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_104(s,p,o,m) BOOST_PP_FOR_104_C(BOOST_PP_BOOL(p(105, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_105(s,p,o,m) BOOST_PP_FOR_105_C(BOOST_PP_BOOL(p(106, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_106(s,p,o,m) BOOST_PP_FOR_106_C(BOOST_PP_BOOL(p(107, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_107(s,p,o,m) BOOST_PP_FOR_107_C(BOOST_PP_BOOL(p(108, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_108(s,p,o,m) BOOST_PP_FOR_108_C(BOOST_PP_BOOL(p(109, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_109(s,p,o,m) BOOST_PP_FOR_109_C(BOOST_PP_BOOL(p(110, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_110(s,p,o,m) BOOST_PP_FOR_110_C(BOOST_PP_BOOL(p(111, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_111(s,p,o,m) BOOST_PP_FOR_111_C(BOOST_PP_BOOL(p(112, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_112(s,p,o,m) BOOST_PP_FOR_112_C(BOOST_PP_BOOL(p(113, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_113(s,p,o,m) BOOST_PP_FOR_113_C(BOOST_PP_BOOL(p(114, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_114(s,p,o,m) BOOST_PP_FOR_114_C(BOOST_PP_BOOL(p(115, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_115(s,p,o,m) BOOST_PP_FOR_115_C(BOOST_PP_BOOL(p(116, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_116(s,p,o,m) BOOST_PP_FOR_116_C(BOOST_PP_BOOL(p(117, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_117(s,p,o,m) BOOST_PP_FOR_117_C(BOOST_PP_BOOL(p(118, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_118(s,p,o,m) BOOST_PP_FOR_118_C(BOOST_PP_BOOL(p(119, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_119(s,p,o,m) BOOST_PP_FOR_119_C(BOOST_PP_BOOL(p(120, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_120(s,p,o,m) BOOST_PP_FOR_120_C(BOOST_PP_BOOL(p(121, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_121(s,p,o,m) BOOST_PP_FOR_121_C(BOOST_PP_BOOL(p(122, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_122(s,p,o,m) BOOST_PP_FOR_122_C(BOOST_PP_BOOL(p(123, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_123(s,p,o,m) BOOST_PP_FOR_123_C(BOOST_PP_BOOL(p(124, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_124(s,p,o,m) BOOST_PP_FOR_124_C(BOOST_PP_BOOL(p(125, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_125(s,p,o,m) BOOST_PP_FOR_125_C(BOOST_PP_BOOL(p(126, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_126(s,p,o,m) BOOST_PP_FOR_126_C(BOOST_PP_BOOL(p(127, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_127(s,p,o,m) BOOST_PP_FOR_127_C(BOOST_PP_BOOL(p(128, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_128(s,p,o,m) BOOST_PP_FOR_128_C(BOOST_PP_BOOL(p(129, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_129(s,p,o,m) BOOST_PP_FOR_129_C(BOOST_PP_BOOL(p(130, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_130(s,p,o,m) BOOST_PP_FOR_130_C(BOOST_PP_BOOL(p(131, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_131(s,p,o,m) BOOST_PP_FOR_131_C(BOOST_PP_BOOL(p(132, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_132(s,p,o,m) BOOST_PP_FOR_132_C(BOOST_PP_BOOL(p(133, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_133(s,p,o,m) BOOST_PP_FOR_133_C(BOOST_PP_BOOL(p(134, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_134(s,p,o,m) BOOST_PP_FOR_134_C(BOOST_PP_BOOL(p(135, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_135(s,p,o,m) BOOST_PP_FOR_135_C(BOOST_PP_BOOL(p(136, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_136(s,p,o,m) BOOST_PP_FOR_136_C(BOOST_PP_BOOL(p(137, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_137(s,p,o,m) BOOST_PP_FOR_137_C(BOOST_PP_BOOL(p(138, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_138(s,p,o,m) BOOST_PP_FOR_138_C(BOOST_PP_BOOL(p(139, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_139(s,p,o,m) BOOST_PP_FOR_139_C(BOOST_PP_BOOL(p(140, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_140(s,p,o,m) BOOST_PP_FOR_140_C(BOOST_PP_BOOL(p(141, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_141(s,p,o,m) BOOST_PP_FOR_141_C(BOOST_PP_BOOL(p(142, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_142(s,p,o,m) BOOST_PP_FOR_142_C(BOOST_PP_BOOL(p(143, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_143(s,p,o,m) BOOST_PP_FOR_143_C(BOOST_PP_BOOL(p(144, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_144(s,p,o,m) BOOST_PP_FOR_144_C(BOOST_PP_BOOL(p(145, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_145(s,p,o,m) BOOST_PP_FOR_145_C(BOOST_PP_BOOL(p(146, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_146(s,p,o,m) BOOST_PP_FOR_146_C(BOOST_PP_BOOL(p(147, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_147(s,p,o,m) BOOST_PP_FOR_147_C(BOOST_PP_BOOL(p(148, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_148(s,p,o,m) BOOST_PP_FOR_148_C(BOOST_PP_BOOL(p(149, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_149(s,p,o,m) BOOST_PP_FOR_149_C(BOOST_PP_BOOL(p(150, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_150(s,p,o,m) BOOST_PP_FOR_150_C(BOOST_PP_BOOL(p(151, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_151(s,p,o,m) BOOST_PP_FOR_151_C(BOOST_PP_BOOL(p(152, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_152(s,p,o,m) BOOST_PP_FOR_152_C(BOOST_PP_BOOL(p(153, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_153(s,p,o,m) BOOST_PP_FOR_153_C(BOOST_PP_BOOL(p(154, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_154(s,p,o,m) BOOST_PP_FOR_154_C(BOOST_PP_BOOL(p(155, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_155(s,p,o,m) BOOST_PP_FOR_155_C(BOOST_PP_BOOL(p(156, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_156(s,p,o,m) BOOST_PP_FOR_156_C(BOOST_PP_BOOL(p(157, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_157(s,p,o,m) BOOST_PP_FOR_157_C(BOOST_PP_BOOL(p(158, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_158(s,p,o,m) BOOST_PP_FOR_158_C(BOOST_PP_BOOL(p(159, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_159(s,p,o,m) BOOST_PP_FOR_159_C(BOOST_PP_BOOL(p(160, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_160(s,p,o,m) BOOST_PP_FOR_160_C(BOOST_PP_BOOL(p(161, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_161(s,p,o,m) BOOST_PP_FOR_161_C(BOOST_PP_BOOL(p(162, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_162(s,p,o,m) BOOST_PP_FOR_162_C(BOOST_PP_BOOL(p(163, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_163(s,p,o,m) BOOST_PP_FOR_163_C(BOOST_PP_BOOL(p(164, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_164(s,p,o,m) BOOST_PP_FOR_164_C(BOOST_PP_BOOL(p(165, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_165(s,p,o,m) BOOST_PP_FOR_165_C(BOOST_PP_BOOL(p(166, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_166(s,p,o,m) BOOST_PP_FOR_166_C(BOOST_PP_BOOL(p(167, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_167(s,p,o,m) BOOST_PP_FOR_167_C(BOOST_PP_BOOL(p(168, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_168(s,p,o,m) BOOST_PP_FOR_168_C(BOOST_PP_BOOL(p(169, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_169(s,p,o,m) BOOST_PP_FOR_169_C(BOOST_PP_BOOL(p(170, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_170(s,p,o,m) BOOST_PP_FOR_170_C(BOOST_PP_BOOL(p(171, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_171(s,p,o,m) BOOST_PP_FOR_171_C(BOOST_PP_BOOL(p(172, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_172(s,p,o,m) BOOST_PP_FOR_172_C(BOOST_PP_BOOL(p(173, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_173(s,p,o,m) BOOST_PP_FOR_173_C(BOOST_PP_BOOL(p(174, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_174(s,p,o,m) BOOST_PP_FOR_174_C(BOOST_PP_BOOL(p(175, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_175(s,p,o,m) BOOST_PP_FOR_175_C(BOOST_PP_BOOL(p(176, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_176(s,p,o,m) BOOST_PP_FOR_176_C(BOOST_PP_BOOL(p(177, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_177(s,p,o,m) BOOST_PP_FOR_177_C(BOOST_PP_BOOL(p(178, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_178(s,p,o,m) BOOST_PP_FOR_178_C(BOOST_PP_BOOL(p(179, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_179(s,p,o,m) BOOST_PP_FOR_179_C(BOOST_PP_BOOL(p(180, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_180(s,p,o,m) BOOST_PP_FOR_180_C(BOOST_PP_BOOL(p(181, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_181(s,p,o,m) BOOST_PP_FOR_181_C(BOOST_PP_BOOL(p(182, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_182(s,p,o,m) BOOST_PP_FOR_182_C(BOOST_PP_BOOL(p(183, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_183(s,p,o,m) BOOST_PP_FOR_183_C(BOOST_PP_BOOL(p(184, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_184(s,p,o,m) BOOST_PP_FOR_184_C(BOOST_PP_BOOL(p(185, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_185(s,p,o,m) BOOST_PP_FOR_185_C(BOOST_PP_BOOL(p(186, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_186(s,p,o,m) BOOST_PP_FOR_186_C(BOOST_PP_BOOL(p(187, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_187(s,p,o,m) BOOST_PP_FOR_187_C(BOOST_PP_BOOL(p(188, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_188(s,p,o,m) BOOST_PP_FOR_188_C(BOOST_PP_BOOL(p(189, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_189(s,p,o,m) BOOST_PP_FOR_189_C(BOOST_PP_BOOL(p(190, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_190(s,p,o,m) BOOST_PP_FOR_190_C(BOOST_PP_BOOL(p(191, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_191(s,p,o,m) BOOST_PP_FOR_191_C(BOOST_PP_BOOL(p(192, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_192(s,p,o,m) BOOST_PP_FOR_192_C(BOOST_PP_BOOL(p(193, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_193(s,p,o,m) BOOST_PP_FOR_193_C(BOOST_PP_BOOL(p(194, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_194(s,p,o,m) BOOST_PP_FOR_194_C(BOOST_PP_BOOL(p(195, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_195(s,p,o,m) BOOST_PP_FOR_195_C(BOOST_PP_BOOL(p(196, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_196(s,p,o,m) BOOST_PP_FOR_196_C(BOOST_PP_BOOL(p(197, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_197(s,p,o,m) BOOST_PP_FOR_197_C(BOOST_PP_BOOL(p(198, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_198(s,p,o,m) BOOST_PP_FOR_198_C(BOOST_PP_BOOL(p(199, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_199(s,p,o,m) BOOST_PP_FOR_199_C(BOOST_PP_BOOL(p(200, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_200(s,p,o,m) BOOST_PP_FOR_200_C(BOOST_PP_BOOL(p(201, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_201(s,p,o,m) BOOST_PP_FOR_201_C(BOOST_PP_BOOL(p(202, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_202(s,p,o,m) BOOST_PP_FOR_202_C(BOOST_PP_BOOL(p(203, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_203(s,p,o,m) BOOST_PP_FOR_203_C(BOOST_PP_BOOL(p(204, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_204(s,p,o,m) BOOST_PP_FOR_204_C(BOOST_PP_BOOL(p(205, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_205(s,p,o,m) BOOST_PP_FOR_205_C(BOOST_PP_BOOL(p(206, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_206(s,p,o,m) BOOST_PP_FOR_206_C(BOOST_PP_BOOL(p(207, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_207(s,p,o,m) BOOST_PP_FOR_207_C(BOOST_PP_BOOL(p(208, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_208(s,p,o,m) BOOST_PP_FOR_208_C(BOOST_PP_BOOL(p(209, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_209(s,p,o,m) BOOST_PP_FOR_209_C(BOOST_PP_BOOL(p(210, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_210(s,p,o,m) BOOST_PP_FOR_210_C(BOOST_PP_BOOL(p(211, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_211(s,p,o,m) BOOST_PP_FOR_211_C(BOOST_PP_BOOL(p(212, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_212(s,p,o,m) BOOST_PP_FOR_212_C(BOOST_PP_BOOL(p(213, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_213(s,p,o,m) BOOST_PP_FOR_213_C(BOOST_PP_BOOL(p(214, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_214(s,p,o,m) BOOST_PP_FOR_214_C(BOOST_PP_BOOL(p(215, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_215(s,p,o,m) BOOST_PP_FOR_215_C(BOOST_PP_BOOL(p(216, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_216(s,p,o,m) BOOST_PP_FOR_216_C(BOOST_PP_BOOL(p(217, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_217(s,p,o,m) BOOST_PP_FOR_217_C(BOOST_PP_BOOL(p(218, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_218(s,p,o,m) BOOST_PP_FOR_218_C(BOOST_PP_BOOL(p(219, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_219(s,p,o,m) BOOST_PP_FOR_219_C(BOOST_PP_BOOL(p(220, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_220(s,p,o,m) BOOST_PP_FOR_220_C(BOOST_PP_BOOL(p(221, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_221(s,p,o,m) BOOST_PP_FOR_221_C(BOOST_PP_BOOL(p(222, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_222(s,p,o,m) BOOST_PP_FOR_222_C(BOOST_PP_BOOL(p(223, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_223(s,p,o,m) BOOST_PP_FOR_223_C(BOOST_PP_BOOL(p(224, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_224(s,p,o,m) BOOST_PP_FOR_224_C(BOOST_PP_BOOL(p(225, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_225(s,p,o,m) BOOST_PP_FOR_225_C(BOOST_PP_BOOL(p(226, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_226(s,p,o,m) BOOST_PP_FOR_226_C(BOOST_PP_BOOL(p(227, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_227(s,p,o,m) BOOST_PP_FOR_227_C(BOOST_PP_BOOL(p(228, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_228(s,p,o,m) BOOST_PP_FOR_228_C(BOOST_PP_BOOL(p(229, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_229(s,p,o,m) BOOST_PP_FOR_229_C(BOOST_PP_BOOL(p(230, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_230(s,p,o,m) BOOST_PP_FOR_230_C(BOOST_PP_BOOL(p(231, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_231(s,p,o,m) BOOST_PP_FOR_231_C(BOOST_PP_BOOL(p(232, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_232(s,p,o,m) BOOST_PP_FOR_232_C(BOOST_PP_BOOL(p(233, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_233(s,p,o,m) BOOST_PP_FOR_233_C(BOOST_PP_BOOL(p(234, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_234(s,p,o,m) BOOST_PP_FOR_234_C(BOOST_PP_BOOL(p(235, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_235(s,p,o,m) BOOST_PP_FOR_235_C(BOOST_PP_BOOL(p(236, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_236(s,p,o,m) BOOST_PP_FOR_236_C(BOOST_PP_BOOL(p(237, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_237(s,p,o,m) BOOST_PP_FOR_237_C(BOOST_PP_BOOL(p(238, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_238(s,p,o,m) BOOST_PP_FOR_238_C(BOOST_PP_BOOL(p(239, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_239(s,p,o,m) BOOST_PP_FOR_239_C(BOOST_PP_BOOL(p(240, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_240(s,p,o,m) BOOST_PP_FOR_240_C(BOOST_PP_BOOL(p(241, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_241(s,p,o,m) BOOST_PP_FOR_241_C(BOOST_PP_BOOL(p(242, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_242(s,p,o,m) BOOST_PP_FOR_242_C(BOOST_PP_BOOL(p(243, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_243(s,p,o,m) BOOST_PP_FOR_243_C(BOOST_PP_BOOL(p(244, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_244(s,p,o,m) BOOST_PP_FOR_244_C(BOOST_PP_BOOL(p(245, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_245(s,p,o,m) BOOST_PP_FOR_245_C(BOOST_PP_BOOL(p(246, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_246(s,p,o,m) BOOST_PP_FOR_246_C(BOOST_PP_BOOL(p(247, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_247(s,p,o,m) BOOST_PP_FOR_247_C(BOOST_PP_BOOL(p(248, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_248(s,p,o,m) BOOST_PP_FOR_248_C(BOOST_PP_BOOL(p(249, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_249(s,p,o,m) BOOST_PP_FOR_249_C(BOOST_PP_BOOL(p(250, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_250(s,p,o,m) BOOST_PP_FOR_250_C(BOOST_PP_BOOL(p(251, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_251(s,p,o,m) BOOST_PP_FOR_251_C(BOOST_PP_BOOL(p(252, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_252(s,p,o,m) BOOST_PP_FOR_252_C(BOOST_PP_BOOL(p(253, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_253(s,p,o,m) BOOST_PP_FOR_253_C(BOOST_PP_BOOL(p(254, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_254(s,p,o,m) BOOST_PP_FOR_254_C(BOOST_PP_BOOL(p(255, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_255(s,p,o,m) BOOST_PP_FOR_255_C(BOOST_PP_BOOL(p(256, s)), s, p, o, m)
23866: #define BOOST_PP_FOR_256(s,p,o,m) BOOST_PP_FOR_256_C(BOOST_PP_BOOL(p(257, s)), s, p, o, m)
23866:
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: #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)
23866: # 45 "/usr/include/boost/preprocessor/repetition/for.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_FOR_257_PR(s,p) BOOST_PP_BOOL(p(257, s))
23866:
23866:
23866: #define BOOST_PP_FOR_257_ERROR() BOOST_PP_ERROR(0x0002)
23866: #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 ) ()
23866: # 65 "/usr/include/boost/preprocessor/repetition/for.hpp" 3 4
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_NIL 1
23866:
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_2(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_3(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_4(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_5(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_6(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_7(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_8(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_9(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_10(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_11(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_12(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_13(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_14(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_15(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_16(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_17(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_18(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_19(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_20(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_21(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_22(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_23(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_24(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_25(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_26(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_27(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_28(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_29(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_30(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_31(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_32(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_33(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_34(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_35(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_36(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_37(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_38(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_39(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_40(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_41(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_42(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_43(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_44(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_45(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_46(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_47(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_48(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_49(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_50(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_51(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_52(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_53(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_54(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_55(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_56(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_57(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_58(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_59(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_60(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_61(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_62(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_63(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_64(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_65(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_66(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_67(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_68(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_69(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_70(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_71(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_72(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_73(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_74(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_75(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_76(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_77(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_78(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_79(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_80(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_81(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_82(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_83(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_84(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_85(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_86(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_87(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_88(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_89(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_90(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_91(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_92(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_93(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_94(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_95(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_96(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_97(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_98(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_99(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_100(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_101(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_102(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_103(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_104(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_105(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_106(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_107(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_108(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_109(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_110(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_111(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_112(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_113(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_114(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_115(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_116(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_117(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_118(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_119(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_120(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_121(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_122(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_123(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_124(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_125(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_126(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_127(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_128(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_129(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_130(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_131(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_132(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_133(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_134(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_135(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_136(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_137(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_138(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_139(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_140(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_141(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_142(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_143(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_144(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_145(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_146(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_147(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_148(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_149(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_150(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_151(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_152(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_153(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_154(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_155(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_156(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_157(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_158(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_159(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_160(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_161(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_162(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_163(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_164(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_165(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_166(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_167(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_168(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_169(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_170(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_171(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_172(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_173(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_174(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_175(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_176(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_177(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_178(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_179(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_180(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_181(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_182(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_183(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_184(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_185(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_186(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_187(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_188(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_189(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_190(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_191(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_192(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_193(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_194(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_195(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_196(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_197(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_198(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_199(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_200(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_201(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_202(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_203(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_204(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_205(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_206(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_207(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_208(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_209(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_210(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_211(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_212(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_213(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_214(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_215(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_216(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_217(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_218(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_219(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_220(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_221(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_222(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_223(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_224(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_225(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_226(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_227(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_228(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_229(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_230(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_231(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_232(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_233(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_234(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_235(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_236(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_237(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_238(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_239(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_240(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_241(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_242(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_243(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_244(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_245(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_246(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_247(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_248(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_249(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_250(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_251(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_252(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_253(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_254(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_255(s,p,o,m) 0
23866: #define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_256(s,p,o,m) 0
23866: # 21 "/usr/include/boost/preprocessor/seq/for_each_i.hpp" 2 3 4
23866: # 1 "/usr/include/boost/preprocessor/seq/seq.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/seq/seq.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_SEQ_SEQ_HPP
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/seq/elem.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/seq/elem.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_SEQ_ELEM_HPP
23866: # 22 "/usr/include/boost/preprocessor/seq/elem.hpp" 3 4
23866: #define BOOST_PP_SEQ_ELEM(i,seq) BOOST_PP_SEQ_ELEM_I(i, seq)
23866: # 41 "/usr/include/boost/preprocessor/seq/elem.hpp" 3 4
23866: #define BOOST_PP_SEQ_ELEM_I(i,seq) BOOST_PP_SEQ_ELEM_II(BOOST_PP_SEQ_ELEM_ ## i seq)
23866:
23866: #define BOOST_PP_SEQ_ELEM_II(im) BOOST_PP_SEQ_ELEM_III(im)
23866: #define BOOST_PP_SEQ_ELEM_III(x,_) x
23866:
23866:
23866: #define BOOST_PP_SEQ_ELEM_0(x) x, BOOST_PP_NIL
23866: #define BOOST_PP_SEQ_ELEM_1(_) BOOST_PP_SEQ_ELEM_0
23866: #define BOOST_PP_SEQ_ELEM_2(_) BOOST_PP_SEQ_ELEM_1
23866: #define BOOST_PP_SEQ_ELEM_3(_) BOOST_PP_SEQ_ELEM_2
23866: #define BOOST_PP_SEQ_ELEM_4(_) BOOST_PP_SEQ_ELEM_3
23866: #define BOOST_PP_SEQ_ELEM_5(_) BOOST_PP_SEQ_ELEM_4
23866: #define BOOST_PP_SEQ_ELEM_6(_) BOOST_PP_SEQ_ELEM_5
23866: #define BOOST_PP_SEQ_ELEM_7(_) BOOST_PP_SEQ_ELEM_6
23866: #define BOOST_PP_SEQ_ELEM_8(_) BOOST_PP_SEQ_ELEM_7
23866: #define BOOST_PP_SEQ_ELEM_9(_) BOOST_PP_SEQ_ELEM_8
23866: #define BOOST_PP_SEQ_ELEM_10(_) BOOST_PP_SEQ_ELEM_9
23866: #define BOOST_PP_SEQ_ELEM_11(_) BOOST_PP_SEQ_ELEM_10
23866: #define BOOST_PP_SEQ_ELEM_12(_) BOOST_PP_SEQ_ELEM_11
23866: #define BOOST_PP_SEQ_ELEM_13(_) BOOST_PP_SEQ_ELEM_12
23866: #define BOOST_PP_SEQ_ELEM_14(_) BOOST_PP_SEQ_ELEM_13
23866: #define BOOST_PP_SEQ_ELEM_15(_) BOOST_PP_SEQ_ELEM_14
23866: #define BOOST_PP_SEQ_ELEM_16(_) BOOST_PP_SEQ_ELEM_15
23866: #define BOOST_PP_SEQ_ELEM_17(_) BOOST_PP_SEQ_ELEM_16
23866: #define BOOST_PP_SEQ_ELEM_18(_) BOOST_PP_SEQ_ELEM_17
23866: #define BOOST_PP_SEQ_ELEM_19(_) BOOST_PP_SEQ_ELEM_18
23866: #define BOOST_PP_SEQ_ELEM_20(_) BOOST_PP_SEQ_ELEM_19
23866: #define BOOST_PP_SEQ_ELEM_21(_) BOOST_PP_SEQ_ELEM_20
23866: #define BOOST_PP_SEQ_ELEM_22(_) BOOST_PP_SEQ_ELEM_21
23866: #define BOOST_PP_SEQ_ELEM_23(_) BOOST_PP_SEQ_ELEM_22
23866: #define BOOST_PP_SEQ_ELEM_24(_) BOOST_PP_SEQ_ELEM_23
23866: #define BOOST_PP_SEQ_ELEM_25(_) BOOST_PP_SEQ_ELEM_24
23866: #define BOOST_PP_SEQ_ELEM_26(_) BOOST_PP_SEQ_ELEM_25
23866: #define BOOST_PP_SEQ_ELEM_27(_) BOOST_PP_SEQ_ELEM_26
23866: #define BOOST_PP_SEQ_ELEM_28(_) BOOST_PP_SEQ_ELEM_27
23866: #define BOOST_PP_SEQ_ELEM_29(_) BOOST_PP_SEQ_ELEM_28
23866: #define BOOST_PP_SEQ_ELEM_30(_) BOOST_PP_SEQ_ELEM_29
23866: #define BOOST_PP_SEQ_ELEM_31(_) BOOST_PP_SEQ_ELEM_30
23866: #define BOOST_PP_SEQ_ELEM_32(_) BOOST_PP_SEQ_ELEM_31
23866: #define BOOST_PP_SEQ_ELEM_33(_) BOOST_PP_SEQ_ELEM_32
23866: #define BOOST_PP_SEQ_ELEM_34(_) BOOST_PP_SEQ_ELEM_33
23866: #define BOOST_PP_SEQ_ELEM_35(_) BOOST_PP_SEQ_ELEM_34
23866: #define BOOST_PP_SEQ_ELEM_36(_) BOOST_PP_SEQ_ELEM_35
23866: #define BOOST_PP_SEQ_ELEM_37(_) BOOST_PP_SEQ_ELEM_36
23866: #define BOOST_PP_SEQ_ELEM_38(_) BOOST_PP_SEQ_ELEM_37
23866: #define BOOST_PP_SEQ_ELEM_39(_) BOOST_PP_SEQ_ELEM_38
23866: #define BOOST_PP_SEQ_ELEM_40(_) BOOST_PP_SEQ_ELEM_39
23866: #define BOOST_PP_SEQ_ELEM_41(_) BOOST_PP_SEQ_ELEM_40
23866: #define BOOST_PP_SEQ_ELEM_42(_) BOOST_PP_SEQ_ELEM_41
23866: #define BOOST_PP_SEQ_ELEM_43(_) BOOST_PP_SEQ_ELEM_42
23866: #define BOOST_PP_SEQ_ELEM_44(_) BOOST_PP_SEQ_ELEM_43
23866: #define BOOST_PP_SEQ_ELEM_45(_) BOOST_PP_SEQ_ELEM_44
23866: #define BOOST_PP_SEQ_ELEM_46(_) BOOST_PP_SEQ_ELEM_45
23866: #define BOOST_PP_SEQ_ELEM_47(_) BOOST_PP_SEQ_ELEM_46
23866: #define BOOST_PP_SEQ_ELEM_48(_) BOOST_PP_SEQ_ELEM_47
23866: #define BOOST_PP_SEQ_ELEM_49(_) BOOST_PP_SEQ_ELEM_48
23866: #define BOOST_PP_SEQ_ELEM_50(_) BOOST_PP_SEQ_ELEM_49
23866: #define BOOST_PP_SEQ_ELEM_51(_) BOOST_PP_SEQ_ELEM_50
23866: #define BOOST_PP_SEQ_ELEM_52(_) BOOST_PP_SEQ_ELEM_51
23866: #define BOOST_PP_SEQ_ELEM_53(_) BOOST_PP_SEQ_ELEM_52
23866: #define BOOST_PP_SEQ_ELEM_54(_) BOOST_PP_SEQ_ELEM_53
23866: #define BOOST_PP_SEQ_ELEM_55(_) BOOST_PP_SEQ_ELEM_54
23866: #define BOOST_PP_SEQ_ELEM_56(_) BOOST_PP_SEQ_ELEM_55
23866: #define BOOST_PP_SEQ_ELEM_57(_) BOOST_PP_SEQ_ELEM_56
23866: #define BOOST_PP_SEQ_ELEM_58(_) BOOST_PP_SEQ_ELEM_57
23866: #define BOOST_PP_SEQ_ELEM_59(_) BOOST_PP_SEQ_ELEM_58
23866: #define BOOST_PP_SEQ_ELEM_60(_) BOOST_PP_SEQ_ELEM_59
23866: #define BOOST_PP_SEQ_ELEM_61(_) BOOST_PP_SEQ_ELEM_60
23866: #define BOOST_PP_SEQ_ELEM_62(_) BOOST_PP_SEQ_ELEM_61
23866: #define BOOST_PP_SEQ_ELEM_63(_) BOOST_PP_SEQ_ELEM_62
23866: #define BOOST_PP_SEQ_ELEM_64(_) BOOST_PP_SEQ_ELEM_63
23866: #define BOOST_PP_SEQ_ELEM_65(_) BOOST_PP_SEQ_ELEM_64
23866: #define BOOST_PP_SEQ_ELEM_66(_) BOOST_PP_SEQ_ELEM_65
23866: #define BOOST_PP_SEQ_ELEM_67(_) BOOST_PP_SEQ_ELEM_66
23866: #define BOOST_PP_SEQ_ELEM_68(_) BOOST_PP_SEQ_ELEM_67
23866: #define BOOST_PP_SEQ_ELEM_69(_) BOOST_PP_SEQ_ELEM_68
23866: #define BOOST_PP_SEQ_ELEM_70(_) BOOST_PP_SEQ_ELEM_69
23866: #define BOOST_PP_SEQ_ELEM_71(_) BOOST_PP_SEQ_ELEM_70
23866: #define BOOST_PP_SEQ_ELEM_72(_) BOOST_PP_SEQ_ELEM_71
23866: #define BOOST_PP_SEQ_ELEM_73(_) BOOST_PP_SEQ_ELEM_72
23866: #define BOOST_PP_SEQ_ELEM_74(_) BOOST_PP_SEQ_ELEM_73
23866: #define BOOST_PP_SEQ_ELEM_75(_) BOOST_PP_SEQ_ELEM_74
23866: #define BOOST_PP_SEQ_ELEM_76(_) BOOST_PP_SEQ_ELEM_75
23866: #define BOOST_PP_SEQ_ELEM_77(_) BOOST_PP_SEQ_ELEM_76
23866: #define BOOST_PP_SEQ_ELEM_78(_) BOOST_PP_SEQ_ELEM_77
23866: #define BOOST_PP_SEQ_ELEM_79(_) BOOST_PP_SEQ_ELEM_78
23866: #define BOOST_PP_SEQ_ELEM_80(_) BOOST_PP_SEQ_ELEM_79
23866: #define BOOST_PP_SEQ_ELEM_81(_) BOOST_PP_SEQ_ELEM_80
23866: #define BOOST_PP_SEQ_ELEM_82(_) BOOST_PP_SEQ_ELEM_81
23866: #define BOOST_PP_SEQ_ELEM_83(_) BOOST_PP_SEQ_ELEM_82
23866: #define BOOST_PP_SEQ_ELEM_84(_) BOOST_PP_SEQ_ELEM_83
23866: #define BOOST_PP_SEQ_ELEM_85(_) BOOST_PP_SEQ_ELEM_84
23866: #define BOOST_PP_SEQ_ELEM_86(_) BOOST_PP_SEQ_ELEM_85
23866: #define BOOST_PP_SEQ_ELEM_87(_) BOOST_PP_SEQ_ELEM_86
23866: #define BOOST_PP_SEQ_ELEM_88(_) BOOST_PP_SEQ_ELEM_87
23866: #define BOOST_PP_SEQ_ELEM_89(_) BOOST_PP_SEQ_ELEM_88
23866: #define BOOST_PP_SEQ_ELEM_90(_) BOOST_PP_SEQ_ELEM_89
23866: #define BOOST_PP_SEQ_ELEM_91(_) BOOST_PP_SEQ_ELEM_90
23866: #define BOOST_PP_SEQ_ELEM_92(_) BOOST_PP_SEQ_ELEM_91
23866: #define BOOST_PP_SEQ_ELEM_93(_) BOOST_PP_SEQ_ELEM_92
23866: #define BOOST_PP_SEQ_ELEM_94(_) BOOST_PP_SEQ_ELEM_93
23866: #define BOOST_PP_SEQ_ELEM_95(_) BOOST_PP_SEQ_ELEM_94
23866: #define BOOST_PP_SEQ_ELEM_96(_) BOOST_PP_SEQ_ELEM_95
23866: #define BOOST_PP_SEQ_ELEM_97(_) BOOST_PP_SEQ_ELEM_96
23866: #define BOOST_PP_SEQ_ELEM_98(_) BOOST_PP_SEQ_ELEM_97
23866: #define BOOST_PP_SEQ_ELEM_99(_) BOOST_PP_SEQ_ELEM_98
23866: #define BOOST_PP_SEQ_ELEM_100(_) BOOST_PP_SEQ_ELEM_99
23866: #define BOOST_PP_SEQ_ELEM_101(_) BOOST_PP_SEQ_ELEM_100
23866: #define BOOST_PP_SEQ_ELEM_102(_) BOOST_PP_SEQ_ELEM_101
23866: #define BOOST_PP_SEQ_ELEM_103(_) BOOST_PP_SEQ_ELEM_102
23866: #define BOOST_PP_SEQ_ELEM_104(_) BOOST_PP_SEQ_ELEM_103
23866: #define BOOST_PP_SEQ_ELEM_105(_) BOOST_PP_SEQ_ELEM_104
23866: #define BOOST_PP_SEQ_ELEM_106(_) BOOST_PP_SEQ_ELEM_105
23866: #define BOOST_PP_SEQ_ELEM_107(_) BOOST_PP_SEQ_ELEM_106
23866: #define BOOST_PP_SEQ_ELEM_108(_) BOOST_PP_SEQ_ELEM_107
23866: #define BOOST_PP_SEQ_ELEM_109(_) BOOST_PP_SEQ_ELEM_108
23866: #define BOOST_PP_SEQ_ELEM_110(_) BOOST_PP_SEQ_ELEM_109
23866: #define BOOST_PP_SEQ_ELEM_111(_) BOOST_PP_SEQ_ELEM_110
23866: #define BOOST_PP_SEQ_ELEM_112(_) BOOST_PP_SEQ_ELEM_111
23866: #define BOOST_PP_SEQ_ELEM_113(_) BOOST_PP_SEQ_ELEM_112
23866: #define BOOST_PP_SEQ_ELEM_114(_) BOOST_PP_SEQ_ELEM_113
23866: #define BOOST_PP_SEQ_ELEM_115(_) BOOST_PP_SEQ_ELEM_114
23866: #define BOOST_PP_SEQ_ELEM_116(_) BOOST_PP_SEQ_ELEM_115
23866: #define BOOST_PP_SEQ_ELEM_117(_) BOOST_PP_SEQ_ELEM_116
23866: #define BOOST_PP_SEQ_ELEM_118(_) BOOST_PP_SEQ_ELEM_117
23866: #define BOOST_PP_SEQ_ELEM_119(_) BOOST_PP_SEQ_ELEM_118
23866: #define BOOST_PP_SEQ_ELEM_120(_) BOOST_PP_SEQ_ELEM_119
23866: #define BOOST_PP_SEQ_ELEM_121(_) BOOST_PP_SEQ_ELEM_120
23866: #define BOOST_PP_SEQ_ELEM_122(_) BOOST_PP_SEQ_ELEM_121
23866: #define BOOST_PP_SEQ_ELEM_123(_) BOOST_PP_SEQ_ELEM_122
23866: #define BOOST_PP_SEQ_ELEM_124(_) BOOST_PP_SEQ_ELEM_123
23866: #define BOOST_PP_SEQ_ELEM_125(_) BOOST_PP_SEQ_ELEM_124
23866: #define BOOST_PP_SEQ_ELEM_126(_) BOOST_PP_SEQ_ELEM_125
23866: #define BOOST_PP_SEQ_ELEM_127(_) BOOST_PP_SEQ_ELEM_126
23866: #define BOOST_PP_SEQ_ELEM_128(_) BOOST_PP_SEQ_ELEM_127
23866: #define BOOST_PP_SEQ_ELEM_129(_) BOOST_PP_SEQ_ELEM_128
23866: #define BOOST_PP_SEQ_ELEM_130(_) BOOST_PP_SEQ_ELEM_129
23866: #define BOOST_PP_SEQ_ELEM_131(_) BOOST_PP_SEQ_ELEM_130
23866: #define BOOST_PP_SEQ_ELEM_132(_) BOOST_PP_SEQ_ELEM_131
23866: #define BOOST_PP_SEQ_ELEM_133(_) BOOST_PP_SEQ_ELEM_132
23866: #define BOOST_PP_SEQ_ELEM_134(_) BOOST_PP_SEQ_ELEM_133
23866: #define BOOST_PP_SEQ_ELEM_135(_) BOOST_PP_SEQ_ELEM_134
23866: #define BOOST_PP_SEQ_ELEM_136(_) BOOST_PP_SEQ_ELEM_135
23866: #define BOOST_PP_SEQ_ELEM_137(_) BOOST_PP_SEQ_ELEM_136
23866: #define BOOST_PP_SEQ_ELEM_138(_) BOOST_PP_SEQ_ELEM_137
23866: #define BOOST_PP_SEQ_ELEM_139(_) BOOST_PP_SEQ_ELEM_138
23866: #define BOOST_PP_SEQ_ELEM_140(_) BOOST_PP_SEQ_ELEM_139
23866: #define BOOST_PP_SEQ_ELEM_141(_) BOOST_PP_SEQ_ELEM_140
23866: #define BOOST_PP_SEQ_ELEM_142(_) BOOST_PP_SEQ_ELEM_141
23866: #define BOOST_PP_SEQ_ELEM_143(_) BOOST_PP_SEQ_ELEM_142
23866: #define BOOST_PP_SEQ_ELEM_144(_) BOOST_PP_SEQ_ELEM_143
23866: #define BOOST_PP_SEQ_ELEM_145(_) BOOST_PP_SEQ_ELEM_144
23866: #define BOOST_PP_SEQ_ELEM_146(_) BOOST_PP_SEQ_ELEM_145
23866: #define BOOST_PP_SEQ_ELEM_147(_) BOOST_PP_SEQ_ELEM_146
23866: #define BOOST_PP_SEQ_ELEM_148(_) BOOST_PP_SEQ_ELEM_147
23866: #define BOOST_PP_SEQ_ELEM_149(_) BOOST_PP_SEQ_ELEM_148
23866: #define BOOST_PP_SEQ_ELEM_150(_) BOOST_PP_SEQ_ELEM_149
23866: #define BOOST_PP_SEQ_ELEM_151(_) BOOST_PP_SEQ_ELEM_150
23866: #define BOOST_PP_SEQ_ELEM_152(_) BOOST_PP_SEQ_ELEM_151
23866: #define BOOST_PP_SEQ_ELEM_153(_) BOOST_PP_SEQ_ELEM_152
23866: #define BOOST_PP_SEQ_ELEM_154(_) BOOST_PP_SEQ_ELEM_153
23866: #define BOOST_PP_SEQ_ELEM_155(_) BOOST_PP_SEQ_ELEM_154
23866: #define BOOST_PP_SEQ_ELEM_156(_) BOOST_PP_SEQ_ELEM_155
23866: #define BOOST_PP_SEQ_ELEM_157(_) BOOST_PP_SEQ_ELEM_156
23866: #define BOOST_PP_SEQ_ELEM_158(_) BOOST_PP_SEQ_ELEM_157
23866: #define BOOST_PP_SEQ_ELEM_159(_) BOOST_PP_SEQ_ELEM_158
23866: #define BOOST_PP_SEQ_ELEM_160(_) BOOST_PP_SEQ_ELEM_159
23866: #define BOOST_PP_SEQ_ELEM_161(_) BOOST_PP_SEQ_ELEM_160
23866: #define BOOST_PP_SEQ_ELEM_162(_) BOOST_PP_SEQ_ELEM_161
23866: #define BOOST_PP_SEQ_ELEM_163(_) BOOST_PP_SEQ_ELEM_162
23866: #define BOOST_PP_SEQ_ELEM_164(_) BOOST_PP_SEQ_ELEM_163
23866: #define BOOST_PP_SEQ_ELEM_165(_) BOOST_PP_SEQ_ELEM_164
23866: #define BOOST_PP_SEQ_ELEM_166(_) BOOST_PP_SEQ_ELEM_165
23866: #define BOOST_PP_SEQ_ELEM_167(_) BOOST_PP_SEQ_ELEM_166
23866: #define BOOST_PP_SEQ_ELEM_168(_) BOOST_PP_SEQ_ELEM_167
23866: #define BOOST_PP_SEQ_ELEM_169(_) BOOST_PP_SEQ_ELEM_168
23866: #define BOOST_PP_SEQ_ELEM_170(_) BOOST_PP_SEQ_ELEM_169
23866: #define BOOST_PP_SEQ_ELEM_171(_) BOOST_PP_SEQ_ELEM_170
23866: #define BOOST_PP_SEQ_ELEM_172(_) BOOST_PP_SEQ_ELEM_171
23866: #define BOOST_PP_SEQ_ELEM_173(_) BOOST_PP_SEQ_ELEM_172
23866: #define BOOST_PP_SEQ_ELEM_174(_) BOOST_PP_SEQ_ELEM_173
23866: #define BOOST_PP_SEQ_ELEM_175(_) BOOST_PP_SEQ_ELEM_174
23866: #define BOOST_PP_SEQ_ELEM_176(_) BOOST_PP_SEQ_ELEM_175
23866: #define BOOST_PP_SEQ_ELEM_177(_) BOOST_PP_SEQ_ELEM_176
23866: #define BOOST_PP_SEQ_ELEM_178(_) BOOST_PP_SEQ_ELEM_177
23866: #define BOOST_PP_SEQ_ELEM_179(_) BOOST_PP_SEQ_ELEM_178
23866: #define BOOST_PP_SEQ_ELEM_180(_) BOOST_PP_SEQ_ELEM_179
23866: #define BOOST_PP_SEQ_ELEM_181(_) BOOST_PP_SEQ_ELEM_180
23866: #define BOOST_PP_SEQ_ELEM_182(_) BOOST_PP_SEQ_ELEM_181
23866: #define BOOST_PP_SEQ_ELEM_183(_) BOOST_PP_SEQ_ELEM_182
23866: #define BOOST_PP_SEQ_ELEM_184(_) BOOST_PP_SEQ_ELEM_183
23866: #define BOOST_PP_SEQ_ELEM_185(_) BOOST_PP_SEQ_ELEM_184
23866: #define BOOST_PP_SEQ_ELEM_186(_) BOOST_PP_SEQ_ELEM_185
23866: #define BOOST_PP_SEQ_ELEM_187(_) BOOST_PP_SEQ_ELEM_186
23866: #define BOOST_PP_SEQ_ELEM_188(_) BOOST_PP_SEQ_ELEM_187
23866: #define BOOST_PP_SEQ_ELEM_189(_) BOOST_PP_SEQ_ELEM_188
23866: #define BOOST_PP_SEQ_ELEM_190(_) BOOST_PP_SEQ_ELEM_189
23866: #define BOOST_PP_SEQ_ELEM_191(_) BOOST_PP_SEQ_ELEM_190
23866: #define BOOST_PP_SEQ_ELEM_192(_) BOOST_PP_SEQ_ELEM_191
23866: #define BOOST_PP_SEQ_ELEM_193(_) BOOST_PP_SEQ_ELEM_192
23866: #define BOOST_PP_SEQ_ELEM_194(_) BOOST_PP_SEQ_ELEM_193
23866: #define BOOST_PP_SEQ_ELEM_195(_) BOOST_PP_SEQ_ELEM_194
23866: #define BOOST_PP_SEQ_ELEM_196(_) BOOST_PP_SEQ_ELEM_195
23866: #define BOOST_PP_SEQ_ELEM_197(_) BOOST_PP_SEQ_ELEM_196
23866: #define BOOST_PP_SEQ_ELEM_198(_) BOOST_PP_SEQ_ELEM_197
23866: #define BOOST_PP_SEQ_ELEM_199(_) BOOST_PP_SEQ_ELEM_198
23866: #define BOOST_PP_SEQ_ELEM_200(_) BOOST_PP_SEQ_ELEM_199
23866: #define BOOST_PP_SEQ_ELEM_201(_) BOOST_PP_SEQ_ELEM_200
23866: #define BOOST_PP_SEQ_ELEM_202(_) BOOST_PP_SEQ_ELEM_201
23866: #define BOOST_PP_SEQ_ELEM_203(_) BOOST_PP_SEQ_ELEM_202
23866: #define BOOST_PP_SEQ_ELEM_204(_) BOOST_PP_SEQ_ELEM_203
23866: #define BOOST_PP_SEQ_ELEM_205(_) BOOST_PP_SEQ_ELEM_204
23866: #define BOOST_PP_SEQ_ELEM_206(_) BOOST_PP_SEQ_ELEM_205
23866: #define BOOST_PP_SEQ_ELEM_207(_) BOOST_PP_SEQ_ELEM_206
23866: #define BOOST_PP_SEQ_ELEM_208(_) BOOST_PP_SEQ_ELEM_207
23866: #define BOOST_PP_SEQ_ELEM_209(_) BOOST_PP_SEQ_ELEM_208
23866: #define BOOST_PP_SEQ_ELEM_210(_) BOOST_PP_SEQ_ELEM_209
23866: #define BOOST_PP_SEQ_ELEM_211(_) BOOST_PP_SEQ_ELEM_210
23866: #define BOOST_PP_SEQ_ELEM_212(_) BOOST_PP_SEQ_ELEM_211
23866: #define BOOST_PP_SEQ_ELEM_213(_) BOOST_PP_SEQ_ELEM_212
23866: #define BOOST_PP_SEQ_ELEM_214(_) BOOST_PP_SEQ_ELEM_213
23866: #define BOOST_PP_SEQ_ELEM_215(_) BOOST_PP_SEQ_ELEM_214
23866: #define BOOST_PP_SEQ_ELEM_216(_) BOOST_PP_SEQ_ELEM_215
23866: #define BOOST_PP_SEQ_ELEM_217(_) BOOST_PP_SEQ_ELEM_216
23866: #define BOOST_PP_SEQ_ELEM_218(_) BOOST_PP_SEQ_ELEM_217
23866: #define BOOST_PP_SEQ_ELEM_219(_) BOOST_PP_SEQ_ELEM_218
23866: #define BOOST_PP_SEQ_ELEM_220(_) BOOST_PP_SEQ_ELEM_219
23866: #define BOOST_PP_SEQ_ELEM_221(_) BOOST_PP_SEQ_ELEM_220
23866: #define BOOST_PP_SEQ_ELEM_222(_) BOOST_PP_SEQ_ELEM_221
23866: #define BOOST_PP_SEQ_ELEM_223(_) BOOST_PP_SEQ_ELEM_222
23866: #define BOOST_PP_SEQ_ELEM_224(_) BOOST_PP_SEQ_ELEM_223
23866: #define BOOST_PP_SEQ_ELEM_225(_) BOOST_PP_SEQ_ELEM_224
23866: #define BOOST_PP_SEQ_ELEM_226(_) BOOST_PP_SEQ_ELEM_225
23866: #define BOOST_PP_SEQ_ELEM_227(_) BOOST_PP_SEQ_ELEM_226
23866: #define BOOST_PP_SEQ_ELEM_228(_) BOOST_PP_SEQ_ELEM_227
23866: #define BOOST_PP_SEQ_ELEM_229(_) BOOST_PP_SEQ_ELEM_228
23866: #define BOOST_PP_SEQ_ELEM_230(_) BOOST_PP_SEQ_ELEM_229
23866: #define BOOST_PP_SEQ_ELEM_231(_) BOOST_PP_SEQ_ELEM_230
23866: #define BOOST_PP_SEQ_ELEM_232(_) BOOST_PP_SEQ_ELEM_231
23866: #define BOOST_PP_SEQ_ELEM_233(_) BOOST_PP_SEQ_ELEM_232
23866: #define BOOST_PP_SEQ_ELEM_234(_) BOOST_PP_SEQ_ELEM_233
23866: #define BOOST_PP_SEQ_ELEM_235(_) BOOST_PP_SEQ_ELEM_234
23866: #define BOOST_PP_SEQ_ELEM_236(_) BOOST_PP_SEQ_ELEM_235
23866: #define BOOST_PP_SEQ_ELEM_237(_) BOOST_PP_SEQ_ELEM_236
23866: #define BOOST_PP_SEQ_ELEM_238(_) BOOST_PP_SEQ_ELEM_237
23866: #define BOOST_PP_SEQ_ELEM_239(_) BOOST_PP_SEQ_ELEM_238
23866: #define BOOST_PP_SEQ_ELEM_240(_) BOOST_PP_SEQ_ELEM_239
23866: #define BOOST_PP_SEQ_ELEM_241(_) BOOST_PP_SEQ_ELEM_240
23866: #define BOOST_PP_SEQ_ELEM_242(_) BOOST_PP_SEQ_ELEM_241
23866: #define BOOST_PP_SEQ_ELEM_243(_) BOOST_PP_SEQ_ELEM_242
23866: #define BOOST_PP_SEQ_ELEM_244(_) BOOST_PP_SEQ_ELEM_243
23866: #define BOOST_PP_SEQ_ELEM_245(_) BOOST_PP_SEQ_ELEM_244
23866: #define BOOST_PP_SEQ_ELEM_246(_) BOOST_PP_SEQ_ELEM_245
23866: #define BOOST_PP_SEQ_ELEM_247(_) BOOST_PP_SEQ_ELEM_246
23866: #define BOOST_PP_SEQ_ELEM_248(_) BOOST_PP_SEQ_ELEM_247
23866: #define BOOST_PP_SEQ_ELEM_249(_) BOOST_PP_SEQ_ELEM_248
23866: #define BOOST_PP_SEQ_ELEM_250(_) BOOST_PP_SEQ_ELEM_249
23866: #define BOOST_PP_SEQ_ELEM_251(_) BOOST_PP_SEQ_ELEM_250
23866: #define BOOST_PP_SEQ_ELEM_252(_) BOOST_PP_SEQ_ELEM_251
23866: #define BOOST_PP_SEQ_ELEM_253(_) BOOST_PP_SEQ_ELEM_252
23866: #define BOOST_PP_SEQ_ELEM_254(_) BOOST_PP_SEQ_ELEM_253
23866: #define BOOST_PP_SEQ_ELEM_255(_) BOOST_PP_SEQ_ELEM_254
23866: # 17 "/usr/include/boost/preprocessor/seq/seq.hpp" 2 3 4
23866:
23866:
23866:
23866: #define BOOST_PP_SEQ_HEAD(seq) BOOST_PP_SEQ_ELEM(0, seq)
23866: # 35 "/usr/include/boost/preprocessor/seq/seq.hpp" 3 4
23866: #define BOOST_PP_SEQ_TAIL(seq) BOOST_PP_SEQ_TAIL_I seq
23866:
23866:
23866: #define BOOST_PP_SEQ_TAIL_I(x)
23866:
23866:
23866:
23866: #define BOOST_PP_SEQ_NIL(x) (x)
23866: # 22 "/usr/include/boost/preprocessor/seq/for_each_i.hpp" 2 3 4
23866: # 1 "/usr/include/boost/preprocessor/seq/size.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/seq/size.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_SEQ_SIZE_HPP
23866: # 28 "/usr/include/boost/preprocessor/seq/size.hpp" 3 4
23866: #define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 seq)
23866:
23866:
23866: #define BOOST_PP_SEQ_SIZE_0(_) BOOST_PP_SEQ_SIZE_1
23866: #define BOOST_PP_SEQ_SIZE_1(_) BOOST_PP_SEQ_SIZE_2
23866: #define BOOST_PP_SEQ_SIZE_2(_) BOOST_PP_SEQ_SIZE_3
23866: #define BOOST_PP_SEQ_SIZE_3(_) BOOST_PP_SEQ_SIZE_4
23866: #define BOOST_PP_SEQ_SIZE_4(_) BOOST_PP_SEQ_SIZE_5
23866: #define BOOST_PP_SEQ_SIZE_5(_) BOOST_PP_SEQ_SIZE_6
23866: #define BOOST_PP_SEQ_SIZE_6(_) BOOST_PP_SEQ_SIZE_7
23866: #define BOOST_PP_SEQ_SIZE_7(_) BOOST_PP_SEQ_SIZE_8
23866: #define BOOST_PP_SEQ_SIZE_8(_) BOOST_PP_SEQ_SIZE_9
23866: #define BOOST_PP_SEQ_SIZE_9(_) BOOST_PP_SEQ_SIZE_10
23866: #define BOOST_PP_SEQ_SIZE_10(_) BOOST_PP_SEQ_SIZE_11
23866: #define BOOST_PP_SEQ_SIZE_11(_) BOOST_PP_SEQ_SIZE_12
23866: #define BOOST_PP_SEQ_SIZE_12(_) BOOST_PP_SEQ_SIZE_13
23866: #define BOOST_PP_SEQ_SIZE_13(_) BOOST_PP_SEQ_SIZE_14
23866: #define BOOST_PP_SEQ_SIZE_14(_) BOOST_PP_SEQ_SIZE_15
23866: #define BOOST_PP_SEQ_SIZE_15(_) BOOST_PP_SEQ_SIZE_16
23866: #define BOOST_PP_SEQ_SIZE_16(_) BOOST_PP_SEQ_SIZE_17
23866: #define BOOST_PP_SEQ_SIZE_17(_) BOOST_PP_SEQ_SIZE_18
23866: #define BOOST_PP_SEQ_SIZE_18(_) BOOST_PP_SEQ_SIZE_19
23866: #define BOOST_PP_SEQ_SIZE_19(_) BOOST_PP_SEQ_SIZE_20
23866: #define BOOST_PP_SEQ_SIZE_20(_) BOOST_PP_SEQ_SIZE_21
23866: #define BOOST_PP_SEQ_SIZE_21(_) BOOST_PP_SEQ_SIZE_22
23866: #define BOOST_PP_SEQ_SIZE_22(_) BOOST_PP_SEQ_SIZE_23
23866: #define BOOST_PP_SEQ_SIZE_23(_) BOOST_PP_SEQ_SIZE_24
23866: #define BOOST_PP_SEQ_SIZE_24(_) BOOST_PP_SEQ_SIZE_25
23866: #define BOOST_PP_SEQ_SIZE_25(_) BOOST_PP_SEQ_SIZE_26
23866: #define BOOST_PP_SEQ_SIZE_26(_) BOOST_PP_SEQ_SIZE_27
23866: #define BOOST_PP_SEQ_SIZE_27(_) BOOST_PP_SEQ_SIZE_28
23866: #define BOOST_PP_SEQ_SIZE_28(_) BOOST_PP_SEQ_SIZE_29
23866: #define BOOST_PP_SEQ_SIZE_29(_) BOOST_PP_SEQ_SIZE_30
23866: #define BOOST_PP_SEQ_SIZE_30(_) BOOST_PP_SEQ_SIZE_31
23866: #define BOOST_PP_SEQ_SIZE_31(_) BOOST_PP_SEQ_SIZE_32
23866: #define BOOST_PP_SEQ_SIZE_32(_) BOOST_PP_SEQ_SIZE_33
23866: #define BOOST_PP_SEQ_SIZE_33(_) BOOST_PP_SEQ_SIZE_34
23866: #define BOOST_PP_SEQ_SIZE_34(_) BOOST_PP_SEQ_SIZE_35
23866: #define BOOST_PP_SEQ_SIZE_35(_) BOOST_PP_SEQ_SIZE_36
23866: #define BOOST_PP_SEQ_SIZE_36(_) BOOST_PP_SEQ_SIZE_37
23866: #define BOOST_PP_SEQ_SIZE_37(_) BOOST_PP_SEQ_SIZE_38
23866: #define BOOST_PP_SEQ_SIZE_38(_) BOOST_PP_SEQ_SIZE_39
23866: #define BOOST_PP_SEQ_SIZE_39(_) BOOST_PP_SEQ_SIZE_40
23866: #define BOOST_PP_SEQ_SIZE_40(_) BOOST_PP_SEQ_SIZE_41
23866: #define BOOST_PP_SEQ_SIZE_41(_) BOOST_PP_SEQ_SIZE_42
23866: #define BOOST_PP_SEQ_SIZE_42(_) BOOST_PP_SEQ_SIZE_43
23866: #define BOOST_PP_SEQ_SIZE_43(_) BOOST_PP_SEQ_SIZE_44
23866: #define BOOST_PP_SEQ_SIZE_44(_) BOOST_PP_SEQ_SIZE_45
23866: #define BOOST_PP_SEQ_SIZE_45(_) BOOST_PP_SEQ_SIZE_46
23866: #define BOOST_PP_SEQ_SIZE_46(_) BOOST_PP_SEQ_SIZE_47
23866: #define BOOST_PP_SEQ_SIZE_47(_) BOOST_PP_SEQ_SIZE_48
23866: #define BOOST_PP_SEQ_SIZE_48(_) BOOST_PP_SEQ_SIZE_49
23866: #define BOOST_PP_SEQ_SIZE_49(_) BOOST_PP_SEQ_SIZE_50
23866: #define BOOST_PP_SEQ_SIZE_50(_) BOOST_PP_SEQ_SIZE_51
23866: #define BOOST_PP_SEQ_SIZE_51(_) BOOST_PP_SEQ_SIZE_52
23866: #define BOOST_PP_SEQ_SIZE_52(_) BOOST_PP_SEQ_SIZE_53
23866: #define BOOST_PP_SEQ_SIZE_53(_) BOOST_PP_SEQ_SIZE_54
23866: #define BOOST_PP_SEQ_SIZE_54(_) BOOST_PP_SEQ_SIZE_55
23866: #define BOOST_PP_SEQ_SIZE_55(_) BOOST_PP_SEQ_SIZE_56
23866: #define BOOST_PP_SEQ_SIZE_56(_) BOOST_PP_SEQ_SIZE_57
23866: #define BOOST_PP_SEQ_SIZE_57(_) BOOST_PP_SEQ_SIZE_58
23866: #define BOOST_PP_SEQ_SIZE_58(_) BOOST_PP_SEQ_SIZE_59
23866: #define BOOST_PP_SEQ_SIZE_59(_) BOOST_PP_SEQ_SIZE_60
23866: #define BOOST_PP_SEQ_SIZE_60(_) BOOST_PP_SEQ_SIZE_61
23866: #define BOOST_PP_SEQ_SIZE_61(_) BOOST_PP_SEQ_SIZE_62
23866: #define BOOST_PP_SEQ_SIZE_62(_) BOOST_PP_SEQ_SIZE_63
23866: #define BOOST_PP_SEQ_SIZE_63(_) BOOST_PP_SEQ_SIZE_64
23866: #define BOOST_PP_SEQ_SIZE_64(_) BOOST_PP_SEQ_SIZE_65
23866: #define BOOST_PP_SEQ_SIZE_65(_) BOOST_PP_SEQ_SIZE_66
23866: #define BOOST_PP_SEQ_SIZE_66(_) BOOST_PP_SEQ_SIZE_67
23866: #define BOOST_PP_SEQ_SIZE_67(_) BOOST_PP_SEQ_SIZE_68
23866: #define BOOST_PP_SEQ_SIZE_68(_) BOOST_PP_SEQ_SIZE_69
23866: #define BOOST_PP_SEQ_SIZE_69(_) BOOST_PP_SEQ_SIZE_70
23866: #define BOOST_PP_SEQ_SIZE_70(_) BOOST_PP_SEQ_SIZE_71
23866: #define BOOST_PP_SEQ_SIZE_71(_) BOOST_PP_SEQ_SIZE_72
23866: #define BOOST_PP_SEQ_SIZE_72(_) BOOST_PP_SEQ_SIZE_73
23866: #define BOOST_PP_SEQ_SIZE_73(_) BOOST_PP_SEQ_SIZE_74
23866: #define BOOST_PP_SEQ_SIZE_74(_) BOOST_PP_SEQ_SIZE_75
23866: #define BOOST_PP_SEQ_SIZE_75(_) BOOST_PP_SEQ_SIZE_76
23866: #define BOOST_PP_SEQ_SIZE_76(_) BOOST_PP_SEQ_SIZE_77
23866: #define BOOST_PP_SEQ_SIZE_77(_) BOOST_PP_SEQ_SIZE_78
23866: #define BOOST_PP_SEQ_SIZE_78(_) BOOST_PP_SEQ_SIZE_79
23866: #define BOOST_PP_SEQ_SIZE_79(_) BOOST_PP_SEQ_SIZE_80
23866: #define BOOST_PP_SEQ_SIZE_80(_) BOOST_PP_SEQ_SIZE_81
23866: #define BOOST_PP_SEQ_SIZE_81(_) BOOST_PP_SEQ_SIZE_82
23866: #define BOOST_PP_SEQ_SIZE_82(_) BOOST_PP_SEQ_SIZE_83
23866: #define BOOST_PP_SEQ_SIZE_83(_) BOOST_PP_SEQ_SIZE_84
23866: #define BOOST_PP_SEQ_SIZE_84(_) BOOST_PP_SEQ_SIZE_85
23866: #define BOOST_PP_SEQ_SIZE_85(_) BOOST_PP_SEQ_SIZE_86
23866: #define BOOST_PP_SEQ_SIZE_86(_) BOOST_PP_SEQ_SIZE_87
23866: #define BOOST_PP_SEQ_SIZE_87(_) BOOST_PP_SEQ_SIZE_88
23866: #define BOOST_PP_SEQ_SIZE_88(_) BOOST_PP_SEQ_SIZE_89
23866: #define BOOST_PP_SEQ_SIZE_89(_) BOOST_PP_SEQ_SIZE_90
23866: #define BOOST_PP_SEQ_SIZE_90(_) BOOST_PP_SEQ_SIZE_91
23866: #define BOOST_PP_SEQ_SIZE_91(_) BOOST_PP_SEQ_SIZE_92
23866: #define BOOST_PP_SEQ_SIZE_92(_) BOOST_PP_SEQ_SIZE_93
23866: #define BOOST_PP_SEQ_SIZE_93(_) BOOST_PP_SEQ_SIZE_94
23866: #define BOOST_PP_SEQ_SIZE_94(_) BOOST_PP_SEQ_SIZE_95
23866: #define BOOST_PP_SEQ_SIZE_95(_) BOOST_PP_SEQ_SIZE_96
23866: #define BOOST_PP_SEQ_SIZE_96(_) BOOST_PP_SEQ_SIZE_97
23866: #define BOOST_PP_SEQ_SIZE_97(_) BOOST_PP_SEQ_SIZE_98
23866: #define BOOST_PP_SEQ_SIZE_98(_) BOOST_PP_SEQ_SIZE_99
23866: #define BOOST_PP_SEQ_SIZE_99(_) BOOST_PP_SEQ_SIZE_100
23866: #define BOOST_PP_SEQ_SIZE_100(_) BOOST_PP_SEQ_SIZE_101
23866: #define BOOST_PP_SEQ_SIZE_101(_) BOOST_PP_SEQ_SIZE_102
23866: #define BOOST_PP_SEQ_SIZE_102(_) BOOST_PP_SEQ_SIZE_103
23866: #define BOOST_PP_SEQ_SIZE_103(_) BOOST_PP_SEQ_SIZE_104
23866: #define BOOST_PP_SEQ_SIZE_104(_) BOOST_PP_SEQ_SIZE_105
23866: #define BOOST_PP_SEQ_SIZE_105(_) BOOST_PP_SEQ_SIZE_106
23866: #define BOOST_PP_SEQ_SIZE_106(_) BOOST_PP_SEQ_SIZE_107
23866: #define BOOST_PP_SEQ_SIZE_107(_) BOOST_PP_SEQ_SIZE_108
23866: #define BOOST_PP_SEQ_SIZE_108(_) BOOST_PP_SEQ_SIZE_109
23866: #define BOOST_PP_SEQ_SIZE_109(_) BOOST_PP_SEQ_SIZE_110
23866: #define BOOST_PP_SEQ_SIZE_110(_) BOOST_PP_SEQ_SIZE_111
23866: #define BOOST_PP_SEQ_SIZE_111(_) BOOST_PP_SEQ_SIZE_112
23866: #define BOOST_PP_SEQ_SIZE_112(_) BOOST_PP_SEQ_SIZE_113
23866: #define BOOST_PP_SEQ_SIZE_113(_) BOOST_PP_SEQ_SIZE_114
23866: #define BOOST_PP_SEQ_SIZE_114(_) BOOST_PP_SEQ_SIZE_115
23866: #define BOOST_PP_SEQ_SIZE_115(_) BOOST_PP_SEQ_SIZE_116
23866: #define BOOST_PP_SEQ_SIZE_116(_) BOOST_PP_SEQ_SIZE_117
23866: #define BOOST_PP_SEQ_SIZE_117(_) BOOST_PP_SEQ_SIZE_118
23866: #define BOOST_PP_SEQ_SIZE_118(_) BOOST_PP_SEQ_SIZE_119
23866: #define BOOST_PP_SEQ_SIZE_119(_) BOOST_PP_SEQ_SIZE_120
23866: #define BOOST_PP_SEQ_SIZE_120(_) BOOST_PP_SEQ_SIZE_121
23866: #define BOOST_PP_SEQ_SIZE_121(_) BOOST_PP_SEQ_SIZE_122
23866: #define BOOST_PP_SEQ_SIZE_122(_) BOOST_PP_SEQ_SIZE_123
23866: #define BOOST_PP_SEQ_SIZE_123(_) BOOST_PP_SEQ_SIZE_124
23866: #define BOOST_PP_SEQ_SIZE_124(_) BOOST_PP_SEQ_SIZE_125
23866: #define BOOST_PP_SEQ_SIZE_125(_) BOOST_PP_SEQ_SIZE_126
23866: #define BOOST_PP_SEQ_SIZE_126(_) BOOST_PP_SEQ_SIZE_127
23866: #define BOOST_PP_SEQ_SIZE_127(_) BOOST_PP_SEQ_SIZE_128
23866: #define BOOST_PP_SEQ_SIZE_128(_) BOOST_PP_SEQ_SIZE_129
23866: #define BOOST_PP_SEQ_SIZE_129(_) BOOST_PP_SEQ_SIZE_130
23866: #define BOOST_PP_SEQ_SIZE_130(_) BOOST_PP_SEQ_SIZE_131
23866: #define BOOST_PP_SEQ_SIZE_131(_) BOOST_PP_SEQ_SIZE_132
23866: #define BOOST_PP_SEQ_SIZE_132(_) BOOST_PP_SEQ_SIZE_133
23866: #define BOOST_PP_SEQ_SIZE_133(_) BOOST_PP_SEQ_SIZE_134
23866: #define BOOST_PP_SEQ_SIZE_134(_) BOOST_PP_SEQ_SIZE_135
23866: #define BOOST_PP_SEQ_SIZE_135(_) BOOST_PP_SEQ_SIZE_136
23866: #define BOOST_PP_SEQ_SIZE_136(_) BOOST_PP_SEQ_SIZE_137
23866: #define BOOST_PP_SEQ_SIZE_137(_) BOOST_PP_SEQ_SIZE_138
23866: #define BOOST_PP_SEQ_SIZE_138(_) BOOST_PP_SEQ_SIZE_139
23866: #define BOOST_PP_SEQ_SIZE_139(_) BOOST_PP_SEQ_SIZE_140
23866: #define BOOST_PP_SEQ_SIZE_140(_) BOOST_PP_SEQ_SIZE_141
23866: #define BOOST_PP_SEQ_SIZE_141(_) BOOST_PP_SEQ_SIZE_142
23866: #define BOOST_PP_SEQ_SIZE_142(_) BOOST_PP_SEQ_SIZE_143
23866: #define BOOST_PP_SEQ_SIZE_143(_) BOOST_PP_SEQ_SIZE_144
23866: #define BOOST_PP_SEQ_SIZE_144(_) BOOST_PP_SEQ_SIZE_145
23866: #define BOOST_PP_SEQ_SIZE_145(_) BOOST_PP_SEQ_SIZE_146
23866: #define BOOST_PP_SEQ_SIZE_146(_) BOOST_PP_SEQ_SIZE_147
23866: #define BOOST_PP_SEQ_SIZE_147(_) BOOST_PP_SEQ_SIZE_148
23866: #define BOOST_PP_SEQ_SIZE_148(_) BOOST_PP_SEQ_SIZE_149
23866: #define BOOST_PP_SEQ_SIZE_149(_) BOOST_PP_SEQ_SIZE_150
23866: #define BOOST_PP_SEQ_SIZE_150(_) BOOST_PP_SEQ_SIZE_151
23866: #define BOOST_PP_SEQ_SIZE_151(_) BOOST_PP_SEQ_SIZE_152
23866: #define BOOST_PP_SEQ_SIZE_152(_) BOOST_PP_SEQ_SIZE_153
23866: #define BOOST_PP_SEQ_SIZE_153(_) BOOST_PP_SEQ_SIZE_154
23866: #define BOOST_PP_SEQ_SIZE_154(_) BOOST_PP_SEQ_SIZE_155
23866: #define BOOST_PP_SEQ_SIZE_155(_) BOOST_PP_SEQ_SIZE_156
23866: #define BOOST_PP_SEQ_SIZE_156(_) BOOST_PP_SEQ_SIZE_157
23866: #define BOOST_PP_SEQ_SIZE_157(_) BOOST_PP_SEQ_SIZE_158
23866: #define BOOST_PP_SEQ_SIZE_158(_) BOOST_PP_SEQ_SIZE_159
23866: #define BOOST_PP_SEQ_SIZE_159(_) BOOST_PP_SEQ_SIZE_160
23866: #define BOOST_PP_SEQ_SIZE_160(_) BOOST_PP_SEQ_SIZE_161
23866: #define BOOST_PP_SEQ_SIZE_161(_) BOOST_PP_SEQ_SIZE_162
23866: #define BOOST_PP_SEQ_SIZE_162(_) BOOST_PP_SEQ_SIZE_163
23866: #define BOOST_PP_SEQ_SIZE_163(_) BOOST_PP_SEQ_SIZE_164
23866: #define BOOST_PP_SEQ_SIZE_164(_) BOOST_PP_SEQ_SIZE_165
23866: #define BOOST_PP_SEQ_SIZE_165(_) BOOST_PP_SEQ_SIZE_166
23866: #define BOOST_PP_SEQ_SIZE_166(_) BOOST_PP_SEQ_SIZE_167
23866: #define BOOST_PP_SEQ_SIZE_167(_) BOOST_PP_SEQ_SIZE_168
23866: #define BOOST_PP_SEQ_SIZE_168(_) BOOST_PP_SEQ_SIZE_169
23866: #define BOOST_PP_SEQ_SIZE_169(_) BOOST_PP_SEQ_SIZE_170
23866: #define BOOST_PP_SEQ_SIZE_170(_) BOOST_PP_SEQ_SIZE_171
23866: #define BOOST_PP_SEQ_SIZE_171(_) BOOST_PP_SEQ_SIZE_172
23866: #define BOOST_PP_SEQ_SIZE_172(_) BOOST_PP_SEQ_SIZE_173
23866: #define BOOST_PP_SEQ_SIZE_173(_) BOOST_PP_SEQ_SIZE_174
23866: #define BOOST_PP_SEQ_SIZE_174(_) BOOST_PP_SEQ_SIZE_175
23866: #define BOOST_PP_SEQ_SIZE_175(_) BOOST_PP_SEQ_SIZE_176
23866: #define BOOST_PP_SEQ_SIZE_176(_) BOOST_PP_SEQ_SIZE_177
23866: #define BOOST_PP_SEQ_SIZE_177(_) BOOST_PP_SEQ_SIZE_178
23866: #define BOOST_PP_SEQ_SIZE_178(_) BOOST_PP_SEQ_SIZE_179
23866: #define BOOST_PP_SEQ_SIZE_179(_) BOOST_PP_SEQ_SIZE_180
23866: #define BOOST_PP_SEQ_SIZE_180(_) BOOST_PP_SEQ_SIZE_181
23866: #define BOOST_PP_SEQ_SIZE_181(_) BOOST_PP_SEQ_SIZE_182
23866: #define BOOST_PP_SEQ_SIZE_182(_) BOOST_PP_SEQ_SIZE_183
23866: #define BOOST_PP_SEQ_SIZE_183(_) BOOST_PP_SEQ_SIZE_184
23866: #define BOOST_PP_SEQ_SIZE_184(_) BOOST_PP_SEQ_SIZE_185
23866: #define BOOST_PP_SEQ_SIZE_185(_) BOOST_PP_SEQ_SIZE_186
23866: #define BOOST_PP_SEQ_SIZE_186(_) BOOST_PP_SEQ_SIZE_187
23866: #define BOOST_PP_SEQ_SIZE_187(_) BOOST_PP_SEQ_SIZE_188
23866: #define BOOST_PP_SEQ_SIZE_188(_) BOOST_PP_SEQ_SIZE_189
23866: #define BOOST_PP_SEQ_SIZE_189(_) BOOST_PP_SEQ_SIZE_190
23866: #define BOOST_PP_SEQ_SIZE_190(_) BOOST_PP_SEQ_SIZE_191
23866: #define BOOST_PP_SEQ_SIZE_191(_) BOOST_PP_SEQ_SIZE_192
23866: #define BOOST_PP_SEQ_SIZE_192(_) BOOST_PP_SEQ_SIZE_193
23866: #define BOOST_PP_SEQ_SIZE_193(_) BOOST_PP_SEQ_SIZE_194
23866: #define BOOST_PP_SEQ_SIZE_194(_) BOOST_PP_SEQ_SIZE_195
23866: #define BOOST_PP_SEQ_SIZE_195(_) BOOST_PP_SEQ_SIZE_196
23866: #define BOOST_PP_SEQ_SIZE_196(_) BOOST_PP_SEQ_SIZE_197
23866: #define BOOST_PP_SEQ_SIZE_197(_) BOOST_PP_SEQ_SIZE_198
23866: #define BOOST_PP_SEQ_SIZE_198(_) BOOST_PP_SEQ_SIZE_199
23866: #define BOOST_PP_SEQ_SIZE_199(_) BOOST_PP_SEQ_SIZE_200
23866: #define BOOST_PP_SEQ_SIZE_200(_) BOOST_PP_SEQ_SIZE_201
23866: #define BOOST_PP_SEQ_SIZE_201(_) BOOST_PP_SEQ_SIZE_202
23866: #define BOOST_PP_SEQ_SIZE_202(_) BOOST_PP_SEQ_SIZE_203
23866: #define BOOST_PP_SEQ_SIZE_203(_) BOOST_PP_SEQ_SIZE_204
23866: #define BOOST_PP_SEQ_SIZE_204(_) BOOST_PP_SEQ_SIZE_205
23866: #define BOOST_PP_SEQ_SIZE_205(_) BOOST_PP_SEQ_SIZE_206
23866: #define BOOST_PP_SEQ_SIZE_206(_) BOOST_PP_SEQ_SIZE_207
23866: #define BOOST_PP_SEQ_SIZE_207(_) BOOST_PP_SEQ_SIZE_208
23866: #define BOOST_PP_SEQ_SIZE_208(_) BOOST_PP_SEQ_SIZE_209
23866: #define BOOST_PP_SEQ_SIZE_209(_) BOOST_PP_SEQ_SIZE_210
23866: #define BOOST_PP_SEQ_SIZE_210(_) BOOST_PP_SEQ_SIZE_211
23866: #define BOOST_PP_SEQ_SIZE_211(_) BOOST_PP_SEQ_SIZE_212
23866: #define BOOST_PP_SEQ_SIZE_212(_) BOOST_PP_SEQ_SIZE_213
23866: #define BOOST_PP_SEQ_SIZE_213(_) BOOST_PP_SEQ_SIZE_214
23866: #define BOOST_PP_SEQ_SIZE_214(_) BOOST_PP_SEQ_SIZE_215
23866: #define BOOST_PP_SEQ_SIZE_215(_) BOOST_PP_SEQ_SIZE_216
23866: #define BOOST_PP_SEQ_SIZE_216(_) BOOST_PP_SEQ_SIZE_217
23866: #define BOOST_PP_SEQ_SIZE_217(_) BOOST_PP_SEQ_SIZE_218
23866: #define BOOST_PP_SEQ_SIZE_218(_) BOOST_PP_SEQ_SIZE_219
23866: #define BOOST_PP_SEQ_SIZE_219(_) BOOST_PP_SEQ_SIZE_220
23866: #define BOOST_PP_SEQ_SIZE_220(_) BOOST_PP_SEQ_SIZE_221
23866: #define BOOST_PP_SEQ_SIZE_221(_) BOOST_PP_SEQ_SIZE_222
23866: #define BOOST_PP_SEQ_SIZE_222(_) BOOST_PP_SEQ_SIZE_223
23866: #define BOOST_PP_SEQ_SIZE_223(_) BOOST_PP_SEQ_SIZE_224
23866: #define BOOST_PP_SEQ_SIZE_224(_) BOOST_PP_SEQ_SIZE_225
23866: #define BOOST_PP_SEQ_SIZE_225(_) BOOST_PP_SEQ_SIZE_226
23866: #define BOOST_PP_SEQ_SIZE_226(_) BOOST_PP_SEQ_SIZE_227
23866: #define BOOST_PP_SEQ_SIZE_227(_) BOOST_PP_SEQ_SIZE_228
23866: #define BOOST_PP_SEQ_SIZE_228(_) BOOST_PP_SEQ_SIZE_229
23866: #define BOOST_PP_SEQ_SIZE_229(_) BOOST_PP_SEQ_SIZE_230
23866: #define BOOST_PP_SEQ_SIZE_230(_) BOOST_PP_SEQ_SIZE_231
23866: #define BOOST_PP_SEQ_SIZE_231(_) BOOST_PP_SEQ_SIZE_232
23866: #define BOOST_PP_SEQ_SIZE_232(_) BOOST_PP_SEQ_SIZE_233
23866: #define BOOST_PP_SEQ_SIZE_233(_) BOOST_PP_SEQ_SIZE_234
23866: #define BOOST_PP_SEQ_SIZE_234(_) BOOST_PP_SEQ_SIZE_235
23866: #define BOOST_PP_SEQ_SIZE_235(_) BOOST_PP_SEQ_SIZE_236
23866: #define BOOST_PP_SEQ_SIZE_236(_) BOOST_PP_SEQ_SIZE_237
23866: #define BOOST_PP_SEQ_SIZE_237(_) BOOST_PP_SEQ_SIZE_238
23866: #define BOOST_PP_SEQ_SIZE_238(_) BOOST_PP_SEQ_SIZE_239
23866: #define BOOST_PP_SEQ_SIZE_239(_) BOOST_PP_SEQ_SIZE_240
23866: #define BOOST_PP_SEQ_SIZE_240(_) BOOST_PP_SEQ_SIZE_241
23866: #define BOOST_PP_SEQ_SIZE_241(_) BOOST_PP_SEQ_SIZE_242
23866: #define BOOST_PP_SEQ_SIZE_242(_) BOOST_PP_SEQ_SIZE_243
23866: #define BOOST_PP_SEQ_SIZE_243(_) BOOST_PP_SEQ_SIZE_244
23866: #define BOOST_PP_SEQ_SIZE_244(_) BOOST_PP_SEQ_SIZE_245
23866: #define BOOST_PP_SEQ_SIZE_245(_) BOOST_PP_SEQ_SIZE_246
23866: #define BOOST_PP_SEQ_SIZE_246(_) BOOST_PP_SEQ_SIZE_247
23866: #define BOOST_PP_SEQ_SIZE_247(_) BOOST_PP_SEQ_SIZE_248
23866: #define BOOST_PP_SEQ_SIZE_248(_) BOOST_PP_SEQ_SIZE_249
23866: #define BOOST_PP_SEQ_SIZE_249(_) BOOST_PP_SEQ_SIZE_250
23866: #define BOOST_PP_SEQ_SIZE_250(_) BOOST_PP_SEQ_SIZE_251
23866: #define BOOST_PP_SEQ_SIZE_251(_) BOOST_PP_SEQ_SIZE_252
23866: #define BOOST_PP_SEQ_SIZE_252(_) BOOST_PP_SEQ_SIZE_253
23866: #define BOOST_PP_SEQ_SIZE_253(_) BOOST_PP_SEQ_SIZE_254
23866: #define BOOST_PP_SEQ_SIZE_254(_) BOOST_PP_SEQ_SIZE_255
23866: #define BOOST_PP_SEQ_SIZE_255(_) BOOST_PP_SEQ_SIZE_256
23866: #define BOOST_PP_SEQ_SIZE_256(_) BOOST_PP_SEQ_SIZE_257
23866:
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_0 0
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1 1
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_2 2
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_3 3
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_4 4
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_5 5
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_6 6
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_7 7
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_8 8
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_9 9
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_10 10
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_11 11
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_12 12
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_13 13
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_14 14
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_15 15
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_16 16
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_17 17
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_18 18
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_19 19
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_20 20
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_21 21
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_22 22
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_23 23
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_24 24
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_25 25
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_26 26
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_27 27
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_28 28
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_29 29
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_30 30
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_31 31
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_32 32
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_33 33
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_34 34
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_35 35
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_36 36
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_37 37
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_38 38
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_39 39
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_40 40
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_41 41
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_42 42
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_43 43
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_44 44
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_45 45
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_46 46
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_47 47
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_48 48
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_49 49
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_50 50
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_51 51
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_52 52
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_53 53
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_54 54
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_55 55
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_56 56
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_57 57
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_58 58
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_59 59
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_60 60
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_61 61
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_62 62
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_63 63
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_64 64
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_65 65
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_66 66
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_67 67
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_68 68
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_69 69
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_70 70
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_71 71
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_72 72
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_73 73
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_74 74
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_75 75
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_76 76
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_77 77
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_78 78
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_79 79
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_80 80
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_81 81
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_82 82
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_83 83
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_84 84
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_85 85
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_86 86
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_87 87
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_88 88
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_89 89
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_90 90
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_91 91
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_92 92
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_93 93
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_94 94
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_95 95
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_96 96
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_97 97
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_98 98
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_99 99
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_100 100
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_101 101
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_102 102
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_103 103
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_104 104
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_105 105
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_106 106
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_107 107
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_108 108
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_109 109
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_110 110
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_111 111
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_112 112
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_113 113
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_114 114
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_115 115
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_116 116
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_117 117
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_118 118
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_119 119
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_120 120
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_121 121
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_122 122
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_123 123
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_124 124
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_125 125
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_126 126
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_127 127
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_128 128
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_129 129
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_130 130
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_131 131
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_132 132
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_133 133
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_134 134
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_135 135
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_136 136
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_137 137
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_138 138
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_139 139
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_140 140
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_141 141
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_142 142
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_143 143
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_144 144
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_145 145
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_146 146
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_147 147
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_148 148
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_149 149
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_150 150
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_151 151
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_152 152
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_153 153
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_154 154
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_155 155
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_156 156
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_157 157
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_158 158
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_159 159
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_160 160
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_161 161
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_162 162
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_163 163
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_164 164
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_165 165
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_166 166
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_167 167
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_168 168
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_169 169
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_170 170
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_171 171
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_172 172
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_173 173
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_174 174
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_175 175
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_176 176
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_177 177
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_178 178
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_179 179
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_180 180
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_181 181
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_182 182
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_183 183
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_184 184
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_185 185
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_186 186
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_187 187
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_188 188
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_189 189
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_190 190
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_191 191
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_192 192
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_193 193
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_194 194
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_195 195
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_196 196
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_197 197
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_198 198
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_199 199
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_200 200
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_201 201
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_202 202
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_203 203
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_204 204
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_205 205
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_206 206
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_207 207
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_208 208
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_209 209
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_210 210
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_211 211
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_212 212
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_213 213
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_214 214
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_215 215
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_216 216
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_217 217
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_218 218
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_219 219
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_220 220
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_221 221
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_222 222
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_223 223
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_224 224
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_225 225
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_226 226
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_227 227
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_228 228
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_229 229
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_230 230
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_231 231
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_232 232
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_233 233
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_234 234
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_235 235
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_236 236
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_237 237
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_238 238
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_239 239
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_240 240
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_241 241
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_242 242
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_243 243
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_244 244
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_245 245
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_246 246
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_247 247
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_248 248
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_249 249
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_250 250
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_251 251
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_252 252
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_253 253
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_254 254
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_255 255
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_256 256
23866: #define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_257 257
23866: # 23 "/usr/include/boost/preprocessor/seq/for_each_i.hpp" 2 3 4
23866: # 1 "/usr/include/boost/preprocessor/seq/detail/is_empty.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/seq/detail/is_empty.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_SEQ_DETAIL_IS_EMPTY_HPP
23866: # 23 "/usr/include/boost/preprocessor/seq/detail/is_empty.hpp" 3 4
23866: #define BOOST_PP_SEQ_DETAIL_IS_EMPTY(seq) BOOST_PP_COMPL ( BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq) )
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_SEQ_DETAIL_IS_EMPTY_SIZE(size) BOOST_PP_COMPL ( BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY_SIZE(size) )
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq) BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY_SIZE(BOOST_PP_SEQ_DETAIL_EMPTY_SIZE(seq))
23866:
23866:
23866:
23866: #define BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY_SIZE(size) BOOST_PP_BOOL(size)
23866:
23866:
23866:
23866: #define BOOST_PP_SEQ_DETAIL_EMPTY_SIZE(seq) BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq (nil)))
23866: # 24 "/usr/include/boost/preprocessor/seq/for_each_i.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_SEQ_FOR_EACH_I(macro,data,seq) BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq)
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EXEC(macro,data,seq) BOOST_PP_FOR((macro, data, seq, 0, BOOST_PP_SEQ_SIZE(seq)), BOOST_PP_SEQ_FOR_EACH_I_P, BOOST_PP_SEQ_FOR_EACH_I_O, BOOST_PP_SEQ_FOR_EACH_I_M)
23866: #define BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EMPTY(macro,data,seq)
23866:
23866: #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)
23866: # 49 "/usr/include/boost/preprocessor/seq/for_each_i.hpp" 3 4
23866: #define BOOST_PP_SEQ_FOR_EACH_I_P(r,x) BOOST_PP_TUPLE_ELEM(5, 4, x)
23866:
23866:
23866: #define BOOST_PP_SEQ_FOR_EACH_I_O(r,x) BOOST_PP_SEQ_FOR_EACH_I_O_I x
23866:
23866:
23866:
23866:
23866: #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))
23866:
23866:
23866: #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 )
23866: # 75 "/usr/include/boost/preprocessor/seq/for_each_i.hpp" 3 4
23866: #define BOOST_PP_SEQ_FOR_EACH_I_O_I_TAIL(seq) BOOST_PP_SEQ_TAIL(seq)
23866: #define BOOST_PP_SEQ_FOR_EACH_I_O_I_NIL(seq) BOOST_PP_NIL
23866:
23866:
23866: #define BOOST_PP_SEQ_FOR_EACH_I_M(r,x) BOOST_PP_SEQ_FOR_EACH_I_M_IM(r, BOOST_PP_TUPLE_REM_5 x)
23866: #define BOOST_PP_SEQ_FOR_EACH_I_M_IM(r,im) BOOST_PP_SEQ_FOR_EACH_I_M_I(r, im)
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_SEQ_FOR_EACH_I_M_I(r,macro,data,seq,i,sz) macro(r, data, i, BOOST_PP_SEQ_HEAD(seq))
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_SEQ_FOR_EACH_I_R(r,macro,data,seq) BOOST_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK(r, macro, data, seq)
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK_EXEC(r,macro,data,seq) BOOST_PP_FOR_ ## r((macro, data, seq, 0, BOOST_PP_SEQ_SIZE(seq)), BOOST_PP_SEQ_FOR_EACH_I_P, BOOST_PP_SEQ_FOR_EACH_I_O, BOOST_PP_SEQ_FOR_EACH_I_M)
23866: #define BOOST_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK_EMPTY(r,macro,data,seq)
23866:
23866: #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)
23866: # 7 "/usr/include/boost/concept/detail/concept_def.hpp" 2 3 4
23866: # 1 "/usr/include/boost/preprocessor/seq/enum.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/seq/enum.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_SEQ_ENUM_HPP
23866: # 28 "/usr/include/boost/preprocessor/seq/enum.hpp" 3 4
23866: #define BOOST_PP_SEQ_ENUM(seq) BOOST_PP_CAT(BOOST_PP_SEQ_ENUM_, BOOST_PP_SEQ_SIZE(seq)) seq
23866:
23866:
23866: #define BOOST_PP_SEQ_ENUM_1(x) x
23866: #define BOOST_PP_SEQ_ENUM_2(x) x, BOOST_PP_SEQ_ENUM_1
23866: #define BOOST_PP_SEQ_ENUM_3(x) x, BOOST_PP_SEQ_ENUM_2
23866: #define BOOST_PP_SEQ_ENUM_4(x) x, BOOST_PP_SEQ_ENUM_3
23866: #define BOOST_PP_SEQ_ENUM_5(x) x, BOOST_PP_SEQ_ENUM_4
23866: #define BOOST_PP_SEQ_ENUM_6(x) x, BOOST_PP_SEQ_ENUM_5
23866: #define BOOST_PP_SEQ_ENUM_7(x) x, BOOST_PP_SEQ_ENUM_6
23866: #define BOOST_PP_SEQ_ENUM_8(x) x, BOOST_PP_SEQ_ENUM_7
23866: #define BOOST_PP_SEQ_ENUM_9(x) x, BOOST_PP_SEQ_ENUM_8
23866: #define BOOST_PP_SEQ_ENUM_10(x) x, BOOST_PP_SEQ_ENUM_9
23866: #define BOOST_PP_SEQ_ENUM_11(x) x, BOOST_PP_SEQ_ENUM_10
23866: #define BOOST_PP_SEQ_ENUM_12(x) x, BOOST_PP_SEQ_ENUM_11
23866: #define BOOST_PP_SEQ_ENUM_13(x) x, BOOST_PP_SEQ_ENUM_12
23866: #define BOOST_PP_SEQ_ENUM_14(x) x, BOOST_PP_SEQ_ENUM_13
23866: #define BOOST_PP_SEQ_ENUM_15(x) x, BOOST_PP_SEQ_ENUM_14
23866: #define BOOST_PP_SEQ_ENUM_16(x) x, BOOST_PP_SEQ_ENUM_15
23866: #define BOOST_PP_SEQ_ENUM_17(x) x, BOOST_PP_SEQ_ENUM_16
23866: #define BOOST_PP_SEQ_ENUM_18(x) x, BOOST_PP_SEQ_ENUM_17
23866: #define BOOST_PP_SEQ_ENUM_19(x) x, BOOST_PP_SEQ_ENUM_18
23866: #define BOOST_PP_SEQ_ENUM_20(x) x, BOOST_PP_SEQ_ENUM_19
23866: #define BOOST_PP_SEQ_ENUM_21(x) x, BOOST_PP_SEQ_ENUM_20
23866: #define BOOST_PP_SEQ_ENUM_22(x) x, BOOST_PP_SEQ_ENUM_21
23866: #define BOOST_PP_SEQ_ENUM_23(x) x, BOOST_PP_SEQ_ENUM_22
23866: #define BOOST_PP_SEQ_ENUM_24(x) x, BOOST_PP_SEQ_ENUM_23
23866: #define BOOST_PP_SEQ_ENUM_25(x) x, BOOST_PP_SEQ_ENUM_24
23866: #define BOOST_PP_SEQ_ENUM_26(x) x, BOOST_PP_SEQ_ENUM_25
23866: #define BOOST_PP_SEQ_ENUM_27(x) x, BOOST_PP_SEQ_ENUM_26
23866: #define BOOST_PP_SEQ_ENUM_28(x) x, BOOST_PP_SEQ_ENUM_27
23866: #define BOOST_PP_SEQ_ENUM_29(x) x, BOOST_PP_SEQ_ENUM_28
23866: #define BOOST_PP_SEQ_ENUM_30(x) x, BOOST_PP_SEQ_ENUM_29
23866: #define BOOST_PP_SEQ_ENUM_31(x) x, BOOST_PP_SEQ_ENUM_30
23866: #define BOOST_PP_SEQ_ENUM_32(x) x, BOOST_PP_SEQ_ENUM_31
23866: #define BOOST_PP_SEQ_ENUM_33(x) x, BOOST_PP_SEQ_ENUM_32
23866: #define BOOST_PP_SEQ_ENUM_34(x) x, BOOST_PP_SEQ_ENUM_33
23866: #define BOOST_PP_SEQ_ENUM_35(x) x, BOOST_PP_SEQ_ENUM_34
23866: #define BOOST_PP_SEQ_ENUM_36(x) x, BOOST_PP_SEQ_ENUM_35
23866: #define BOOST_PP_SEQ_ENUM_37(x) x, BOOST_PP_SEQ_ENUM_36
23866: #define BOOST_PP_SEQ_ENUM_38(x) x, BOOST_PP_SEQ_ENUM_37
23866: #define BOOST_PP_SEQ_ENUM_39(x) x, BOOST_PP_SEQ_ENUM_38
23866: #define BOOST_PP_SEQ_ENUM_40(x) x, BOOST_PP_SEQ_ENUM_39
23866: #define BOOST_PP_SEQ_ENUM_41(x) x, BOOST_PP_SEQ_ENUM_40
23866: #define BOOST_PP_SEQ_ENUM_42(x) x, BOOST_PP_SEQ_ENUM_41
23866: #define BOOST_PP_SEQ_ENUM_43(x) x, BOOST_PP_SEQ_ENUM_42
23866: #define BOOST_PP_SEQ_ENUM_44(x) x, BOOST_PP_SEQ_ENUM_43
23866: #define BOOST_PP_SEQ_ENUM_45(x) x, BOOST_PP_SEQ_ENUM_44
23866: #define BOOST_PP_SEQ_ENUM_46(x) x, BOOST_PP_SEQ_ENUM_45
23866: #define BOOST_PP_SEQ_ENUM_47(x) x, BOOST_PP_SEQ_ENUM_46
23866: #define BOOST_PP_SEQ_ENUM_48(x) x, BOOST_PP_SEQ_ENUM_47
23866: #define BOOST_PP_SEQ_ENUM_49(x) x, BOOST_PP_SEQ_ENUM_48
23866: #define BOOST_PP_SEQ_ENUM_50(x) x, BOOST_PP_SEQ_ENUM_49
23866: #define BOOST_PP_SEQ_ENUM_51(x) x, BOOST_PP_SEQ_ENUM_50
23866: #define BOOST_PP_SEQ_ENUM_52(x) x, BOOST_PP_SEQ_ENUM_51
23866: #define BOOST_PP_SEQ_ENUM_53(x) x, BOOST_PP_SEQ_ENUM_52
23866: #define BOOST_PP_SEQ_ENUM_54(x) x, BOOST_PP_SEQ_ENUM_53
23866: #define BOOST_PP_SEQ_ENUM_55(x) x, BOOST_PP_SEQ_ENUM_54
23866: #define BOOST_PP_SEQ_ENUM_56(x) x, BOOST_PP_SEQ_ENUM_55
23866: #define BOOST_PP_SEQ_ENUM_57(x) x, BOOST_PP_SEQ_ENUM_56
23866: #define BOOST_PP_SEQ_ENUM_58(x) x, BOOST_PP_SEQ_ENUM_57
23866: #define BOOST_PP_SEQ_ENUM_59(x) x, BOOST_PP_SEQ_ENUM_58
23866: #define BOOST_PP_SEQ_ENUM_60(x) x, BOOST_PP_SEQ_ENUM_59
23866: #define BOOST_PP_SEQ_ENUM_61(x) x, BOOST_PP_SEQ_ENUM_60
23866: #define BOOST_PP_SEQ_ENUM_62(x) x, BOOST_PP_SEQ_ENUM_61
23866: #define BOOST_PP_SEQ_ENUM_63(x) x, BOOST_PP_SEQ_ENUM_62
23866: #define BOOST_PP_SEQ_ENUM_64(x) x, BOOST_PP_SEQ_ENUM_63
23866: #define BOOST_PP_SEQ_ENUM_65(x) x, BOOST_PP_SEQ_ENUM_64
23866: #define BOOST_PP_SEQ_ENUM_66(x) x, BOOST_PP_SEQ_ENUM_65
23866: #define BOOST_PP_SEQ_ENUM_67(x) x, BOOST_PP_SEQ_ENUM_66
23866: #define BOOST_PP_SEQ_ENUM_68(x) x, BOOST_PP_SEQ_ENUM_67
23866: #define BOOST_PP_SEQ_ENUM_69(x) x, BOOST_PP_SEQ_ENUM_68
23866: #define BOOST_PP_SEQ_ENUM_70(x) x, BOOST_PP_SEQ_ENUM_69
23866: #define BOOST_PP_SEQ_ENUM_71(x) x, BOOST_PP_SEQ_ENUM_70
23866: #define BOOST_PP_SEQ_ENUM_72(x) x, BOOST_PP_SEQ_ENUM_71
23866: #define BOOST_PP_SEQ_ENUM_73(x) x, BOOST_PP_SEQ_ENUM_72
23866: #define BOOST_PP_SEQ_ENUM_74(x) x, BOOST_PP_SEQ_ENUM_73
23866: #define BOOST_PP_SEQ_ENUM_75(x) x, BOOST_PP_SEQ_ENUM_74
23866: #define BOOST_PP_SEQ_ENUM_76(x) x, BOOST_PP_SEQ_ENUM_75
23866: #define BOOST_PP_SEQ_ENUM_77(x) x, BOOST_PP_SEQ_ENUM_76
23866: #define BOOST_PP_SEQ_ENUM_78(x) x, BOOST_PP_SEQ_ENUM_77
23866: #define BOOST_PP_SEQ_ENUM_79(x) x, BOOST_PP_SEQ_ENUM_78
23866: #define BOOST_PP_SEQ_ENUM_80(x) x, BOOST_PP_SEQ_ENUM_79
23866: #define BOOST_PP_SEQ_ENUM_81(x) x, BOOST_PP_SEQ_ENUM_80
23866: #define BOOST_PP_SEQ_ENUM_82(x) x, BOOST_PP_SEQ_ENUM_81
23866: #define BOOST_PP_SEQ_ENUM_83(x) x, BOOST_PP_SEQ_ENUM_82
23866: #define BOOST_PP_SEQ_ENUM_84(x) x, BOOST_PP_SEQ_ENUM_83
23866: #define BOOST_PP_SEQ_ENUM_85(x) x, BOOST_PP_SEQ_ENUM_84
23866: #define BOOST_PP_SEQ_ENUM_86(x) x, BOOST_PP_SEQ_ENUM_85
23866: #define BOOST_PP_SEQ_ENUM_87(x) x, BOOST_PP_SEQ_ENUM_86
23866: #define BOOST_PP_SEQ_ENUM_88(x) x, BOOST_PP_SEQ_ENUM_87
23866: #define BOOST_PP_SEQ_ENUM_89(x) x, BOOST_PP_SEQ_ENUM_88
23866: #define BOOST_PP_SEQ_ENUM_90(x) x, BOOST_PP_SEQ_ENUM_89
23866: #define BOOST_PP_SEQ_ENUM_91(x) x, BOOST_PP_SEQ_ENUM_90
23866: #define BOOST_PP_SEQ_ENUM_92(x) x, BOOST_PP_SEQ_ENUM_91
23866: #define BOOST_PP_SEQ_ENUM_93(x) x, BOOST_PP_SEQ_ENUM_92
23866: #define BOOST_PP_SEQ_ENUM_94(x) x, BOOST_PP_SEQ_ENUM_93
23866: #define BOOST_PP_SEQ_ENUM_95(x) x, BOOST_PP_SEQ_ENUM_94
23866: #define BOOST_PP_SEQ_ENUM_96(x) x, BOOST_PP_SEQ_ENUM_95
23866: #define BOOST_PP_SEQ_ENUM_97(x) x, BOOST_PP_SEQ_ENUM_96
23866: #define BOOST_PP_SEQ_ENUM_98(x) x, BOOST_PP_SEQ_ENUM_97
23866: #define BOOST_PP_SEQ_ENUM_99(x) x, BOOST_PP_SEQ_ENUM_98
23866: #define BOOST_PP_SEQ_ENUM_100(x) x, BOOST_PP_SEQ_ENUM_99
23866: #define BOOST_PP_SEQ_ENUM_101(x) x, BOOST_PP_SEQ_ENUM_100
23866: #define BOOST_PP_SEQ_ENUM_102(x) x, BOOST_PP_SEQ_ENUM_101
23866: #define BOOST_PP_SEQ_ENUM_103(x) x, BOOST_PP_SEQ_ENUM_102
23866: #define BOOST_PP_SEQ_ENUM_104(x) x, BOOST_PP_SEQ_ENUM_103
23866: #define BOOST_PP_SEQ_ENUM_105(x) x, BOOST_PP_SEQ_ENUM_104
23866: #define BOOST_PP_SEQ_ENUM_106(x) x, BOOST_PP_SEQ_ENUM_105
23866: #define BOOST_PP_SEQ_ENUM_107(x) x, BOOST_PP_SEQ_ENUM_106
23866: #define BOOST_PP_SEQ_ENUM_108(x) x, BOOST_PP_SEQ_ENUM_107
23866: #define BOOST_PP_SEQ_ENUM_109(x) x, BOOST_PP_SEQ_ENUM_108
23866: #define BOOST_PP_SEQ_ENUM_110(x) x, BOOST_PP_SEQ_ENUM_109
23866: #define BOOST_PP_SEQ_ENUM_111(x) x, BOOST_PP_SEQ_ENUM_110
23866: #define BOOST_PP_SEQ_ENUM_112(x) x, BOOST_PP_SEQ_ENUM_111
23866: #define BOOST_PP_SEQ_ENUM_113(x) x, BOOST_PP_SEQ_ENUM_112
23866: #define BOOST_PP_SEQ_ENUM_114(x) x, BOOST_PP_SEQ_ENUM_113
23866: #define BOOST_PP_SEQ_ENUM_115(x) x, BOOST_PP_SEQ_ENUM_114
23866: #define BOOST_PP_SEQ_ENUM_116(x) x, BOOST_PP_SEQ_ENUM_115
23866: #define BOOST_PP_SEQ_ENUM_117(x) x, BOOST_PP_SEQ_ENUM_116
23866: #define BOOST_PP_SEQ_ENUM_118(x) x, BOOST_PP_SEQ_ENUM_117
23866: #define BOOST_PP_SEQ_ENUM_119(x) x, BOOST_PP_SEQ_ENUM_118
23866: #define BOOST_PP_SEQ_ENUM_120(x) x, BOOST_PP_SEQ_ENUM_119
23866: #define BOOST_PP_SEQ_ENUM_121(x) x, BOOST_PP_SEQ_ENUM_120
23866: #define BOOST_PP_SEQ_ENUM_122(x) x, BOOST_PP_SEQ_ENUM_121
23866: #define BOOST_PP_SEQ_ENUM_123(x) x, BOOST_PP_SEQ_ENUM_122
23866: #define BOOST_PP_SEQ_ENUM_124(x) x, BOOST_PP_SEQ_ENUM_123
23866: #define BOOST_PP_SEQ_ENUM_125(x) x, BOOST_PP_SEQ_ENUM_124
23866: #define BOOST_PP_SEQ_ENUM_126(x) x, BOOST_PP_SEQ_ENUM_125
23866: #define BOOST_PP_SEQ_ENUM_127(x) x, BOOST_PP_SEQ_ENUM_126
23866: #define BOOST_PP_SEQ_ENUM_128(x) x, BOOST_PP_SEQ_ENUM_127
23866: #define BOOST_PP_SEQ_ENUM_129(x) x, BOOST_PP_SEQ_ENUM_128
23866: #define BOOST_PP_SEQ_ENUM_130(x) x, BOOST_PP_SEQ_ENUM_129
23866: #define BOOST_PP_SEQ_ENUM_131(x) x, BOOST_PP_SEQ_ENUM_130
23866: #define BOOST_PP_SEQ_ENUM_132(x) x, BOOST_PP_SEQ_ENUM_131
23866: #define BOOST_PP_SEQ_ENUM_133(x) x, BOOST_PP_SEQ_ENUM_132
23866: #define BOOST_PP_SEQ_ENUM_134(x) x, BOOST_PP_SEQ_ENUM_133
23866: #define BOOST_PP_SEQ_ENUM_135(x) x, BOOST_PP_SEQ_ENUM_134
23866: #define BOOST_PP_SEQ_ENUM_136(x) x, BOOST_PP_SEQ_ENUM_135
23866: #define BOOST_PP_SEQ_ENUM_137(x) x, BOOST_PP_SEQ_ENUM_136
23866: #define BOOST_PP_SEQ_ENUM_138(x) x, BOOST_PP_SEQ_ENUM_137
23866: #define BOOST_PP_SEQ_ENUM_139(x) x, BOOST_PP_SEQ_ENUM_138
23866: #define BOOST_PP_SEQ_ENUM_140(x) x, BOOST_PP_SEQ_ENUM_139
23866: #define BOOST_PP_SEQ_ENUM_141(x) x, BOOST_PP_SEQ_ENUM_140
23866: #define BOOST_PP_SEQ_ENUM_142(x) x, BOOST_PP_SEQ_ENUM_141
23866: #define BOOST_PP_SEQ_ENUM_143(x) x, BOOST_PP_SEQ_ENUM_142
23866: #define BOOST_PP_SEQ_ENUM_144(x) x, BOOST_PP_SEQ_ENUM_143
23866: #define BOOST_PP_SEQ_ENUM_145(x) x, BOOST_PP_SEQ_ENUM_144
23866: #define BOOST_PP_SEQ_ENUM_146(x) x, BOOST_PP_SEQ_ENUM_145
23866: #define BOOST_PP_SEQ_ENUM_147(x) x, BOOST_PP_SEQ_ENUM_146
23866: #define BOOST_PP_SEQ_ENUM_148(x) x, BOOST_PP_SEQ_ENUM_147
23866: #define BOOST_PP_SEQ_ENUM_149(x) x, BOOST_PP_SEQ_ENUM_148
23866: #define BOOST_PP_SEQ_ENUM_150(x) x, BOOST_PP_SEQ_ENUM_149
23866: #define BOOST_PP_SEQ_ENUM_151(x) x, BOOST_PP_SEQ_ENUM_150
23866: #define BOOST_PP_SEQ_ENUM_152(x) x, BOOST_PP_SEQ_ENUM_151
23866: #define BOOST_PP_SEQ_ENUM_153(x) x, BOOST_PP_SEQ_ENUM_152
23866: #define BOOST_PP_SEQ_ENUM_154(x) x, BOOST_PP_SEQ_ENUM_153
23866: #define BOOST_PP_SEQ_ENUM_155(x) x, BOOST_PP_SEQ_ENUM_154
23866: #define BOOST_PP_SEQ_ENUM_156(x) x, BOOST_PP_SEQ_ENUM_155
23866: #define BOOST_PP_SEQ_ENUM_157(x) x, BOOST_PP_SEQ_ENUM_156
23866: #define BOOST_PP_SEQ_ENUM_158(x) x, BOOST_PP_SEQ_ENUM_157
23866: #define BOOST_PP_SEQ_ENUM_159(x) x, BOOST_PP_SEQ_ENUM_158
23866: #define BOOST_PP_SEQ_ENUM_160(x) x, BOOST_PP_SEQ_ENUM_159
23866: #define BOOST_PP_SEQ_ENUM_161(x) x, BOOST_PP_SEQ_ENUM_160
23866: #define BOOST_PP_SEQ_ENUM_162(x) x, BOOST_PP_SEQ_ENUM_161
23866: #define BOOST_PP_SEQ_ENUM_163(x) x, BOOST_PP_SEQ_ENUM_162
23866: #define BOOST_PP_SEQ_ENUM_164(x) x, BOOST_PP_SEQ_ENUM_163
23866: #define BOOST_PP_SEQ_ENUM_165(x) x, BOOST_PP_SEQ_ENUM_164
23866: #define BOOST_PP_SEQ_ENUM_166(x) x, BOOST_PP_SEQ_ENUM_165
23866: #define BOOST_PP_SEQ_ENUM_167(x) x, BOOST_PP_SEQ_ENUM_166
23866: #define BOOST_PP_SEQ_ENUM_168(x) x, BOOST_PP_SEQ_ENUM_167
23866: #define BOOST_PP_SEQ_ENUM_169(x) x, BOOST_PP_SEQ_ENUM_168
23866: #define BOOST_PP_SEQ_ENUM_170(x) x, BOOST_PP_SEQ_ENUM_169
23866: #define BOOST_PP_SEQ_ENUM_171(x) x, BOOST_PP_SEQ_ENUM_170
23866: #define BOOST_PP_SEQ_ENUM_172(x) x, BOOST_PP_SEQ_ENUM_171
23866: #define BOOST_PP_SEQ_ENUM_173(x) x, BOOST_PP_SEQ_ENUM_172
23866: #define BOOST_PP_SEQ_ENUM_174(x) x, BOOST_PP_SEQ_ENUM_173
23866: #define BOOST_PP_SEQ_ENUM_175(x) x, BOOST_PP_SEQ_ENUM_174
23866: #define BOOST_PP_SEQ_ENUM_176(x) x, BOOST_PP_SEQ_ENUM_175
23866: #define BOOST_PP_SEQ_ENUM_177(x) x, BOOST_PP_SEQ_ENUM_176
23866: #define BOOST_PP_SEQ_ENUM_178(x) x, BOOST_PP_SEQ_ENUM_177
23866: #define BOOST_PP_SEQ_ENUM_179(x) x, BOOST_PP_SEQ_ENUM_178
23866: #define BOOST_PP_SEQ_ENUM_180(x) x, BOOST_PP_SEQ_ENUM_179
23866: #define BOOST_PP_SEQ_ENUM_181(x) x, BOOST_PP_SEQ_ENUM_180
23866: #define BOOST_PP_SEQ_ENUM_182(x) x, BOOST_PP_SEQ_ENUM_181
23866: #define BOOST_PP_SEQ_ENUM_183(x) x, BOOST_PP_SEQ_ENUM_182
23866: #define BOOST_PP_SEQ_ENUM_184(x) x, BOOST_PP_SEQ_ENUM_183
23866: #define BOOST_PP_SEQ_ENUM_185(x) x, BOOST_PP_SEQ_ENUM_184
23866: #define BOOST_PP_SEQ_ENUM_186(x) x, BOOST_PP_SEQ_ENUM_185
23866: #define BOOST_PP_SEQ_ENUM_187(x) x, BOOST_PP_SEQ_ENUM_186
23866: #define BOOST_PP_SEQ_ENUM_188(x) x, BOOST_PP_SEQ_ENUM_187
23866: #define BOOST_PP_SEQ_ENUM_189(x) x, BOOST_PP_SEQ_ENUM_188
23866: #define BOOST_PP_SEQ_ENUM_190(x) x, BOOST_PP_SEQ_ENUM_189
23866: #define BOOST_PP_SEQ_ENUM_191(x) x, BOOST_PP_SEQ_ENUM_190
23866: #define BOOST_PP_SEQ_ENUM_192(x) x, BOOST_PP_SEQ_ENUM_191
23866: #define BOOST_PP_SEQ_ENUM_193(x) x, BOOST_PP_SEQ_ENUM_192
23866: #define BOOST_PP_SEQ_ENUM_194(x) x, BOOST_PP_SEQ_ENUM_193
23866: #define BOOST_PP_SEQ_ENUM_195(x) x, BOOST_PP_SEQ_ENUM_194
23866: #define BOOST_PP_SEQ_ENUM_196(x) x, BOOST_PP_SEQ_ENUM_195
23866: #define BOOST_PP_SEQ_ENUM_197(x) x, BOOST_PP_SEQ_ENUM_196
23866: #define BOOST_PP_SEQ_ENUM_198(x) x, BOOST_PP_SEQ_ENUM_197
23866: #define BOOST_PP_SEQ_ENUM_199(x) x, BOOST_PP_SEQ_ENUM_198
23866: #define BOOST_PP_SEQ_ENUM_200(x) x, BOOST_PP_SEQ_ENUM_199
23866: #define BOOST_PP_SEQ_ENUM_201(x) x, BOOST_PP_SEQ_ENUM_200
23866: #define BOOST_PP_SEQ_ENUM_202(x) x, BOOST_PP_SEQ_ENUM_201
23866: #define BOOST_PP_SEQ_ENUM_203(x) x, BOOST_PP_SEQ_ENUM_202
23866: #define BOOST_PP_SEQ_ENUM_204(x) x, BOOST_PP_SEQ_ENUM_203
23866: #define BOOST_PP_SEQ_ENUM_205(x) x, BOOST_PP_SEQ_ENUM_204
23866: #define BOOST_PP_SEQ_ENUM_206(x) x, BOOST_PP_SEQ_ENUM_205
23866: #define BOOST_PP_SEQ_ENUM_207(x) x, BOOST_PP_SEQ_ENUM_206
23866: #define BOOST_PP_SEQ_ENUM_208(x) x, BOOST_PP_SEQ_ENUM_207
23866: #define BOOST_PP_SEQ_ENUM_209(x) x, BOOST_PP_SEQ_ENUM_208
23866: #define BOOST_PP_SEQ_ENUM_210(x) x, BOOST_PP_SEQ_ENUM_209
23866: #define BOOST_PP_SEQ_ENUM_211(x) x, BOOST_PP_SEQ_ENUM_210
23866: #define BOOST_PP_SEQ_ENUM_212(x) x, BOOST_PP_SEQ_ENUM_211
23866: #define BOOST_PP_SEQ_ENUM_213(x) x, BOOST_PP_SEQ_ENUM_212
23866: #define BOOST_PP_SEQ_ENUM_214(x) x, BOOST_PP_SEQ_ENUM_213
23866: #define BOOST_PP_SEQ_ENUM_215(x) x, BOOST_PP_SEQ_ENUM_214
23866: #define BOOST_PP_SEQ_ENUM_216(x) x, BOOST_PP_SEQ_ENUM_215
23866: #define BOOST_PP_SEQ_ENUM_217(x) x, BOOST_PP_SEQ_ENUM_216
23866: #define BOOST_PP_SEQ_ENUM_218(x) x, BOOST_PP_SEQ_ENUM_217
23866: #define BOOST_PP_SEQ_ENUM_219(x) x, BOOST_PP_SEQ_ENUM_218
23866: #define BOOST_PP_SEQ_ENUM_220(x) x, BOOST_PP_SEQ_ENUM_219
23866: #define BOOST_PP_SEQ_ENUM_221(x) x, BOOST_PP_SEQ_ENUM_220
23866: #define BOOST_PP_SEQ_ENUM_222(x) x, BOOST_PP_SEQ_ENUM_221
23866: #define BOOST_PP_SEQ_ENUM_223(x) x, BOOST_PP_SEQ_ENUM_222
23866: #define BOOST_PP_SEQ_ENUM_224(x) x, BOOST_PP_SEQ_ENUM_223
23866: #define BOOST_PP_SEQ_ENUM_225(x) x, BOOST_PP_SEQ_ENUM_224
23866: #define BOOST_PP_SEQ_ENUM_226(x) x, BOOST_PP_SEQ_ENUM_225
23866: #define BOOST_PP_SEQ_ENUM_227(x) x, BOOST_PP_SEQ_ENUM_226
23866: #define BOOST_PP_SEQ_ENUM_228(x) x, BOOST_PP_SEQ_ENUM_227
23866: #define BOOST_PP_SEQ_ENUM_229(x) x, BOOST_PP_SEQ_ENUM_228
23866: #define BOOST_PP_SEQ_ENUM_230(x) x, BOOST_PP_SEQ_ENUM_229
23866: #define BOOST_PP_SEQ_ENUM_231(x) x, BOOST_PP_SEQ_ENUM_230
23866: #define BOOST_PP_SEQ_ENUM_232(x) x, BOOST_PP_SEQ_ENUM_231
23866: #define BOOST_PP_SEQ_ENUM_233(x) x, BOOST_PP_SEQ_ENUM_232
23866: #define BOOST_PP_SEQ_ENUM_234(x) x, BOOST_PP_SEQ_ENUM_233
23866: #define BOOST_PP_SEQ_ENUM_235(x) x, BOOST_PP_SEQ_ENUM_234
23866: #define BOOST_PP_SEQ_ENUM_236(x) x, BOOST_PP_SEQ_ENUM_235
23866: #define BOOST_PP_SEQ_ENUM_237(x) x, BOOST_PP_SEQ_ENUM_236
23866: #define BOOST_PP_SEQ_ENUM_238(x) x, BOOST_PP_SEQ_ENUM_237
23866: #define BOOST_PP_SEQ_ENUM_239(x) x, BOOST_PP_SEQ_ENUM_238
23866: #define BOOST_PP_SEQ_ENUM_240(x) x, BOOST_PP_SEQ_ENUM_239
23866: #define BOOST_PP_SEQ_ENUM_241(x) x, BOOST_PP_SEQ_ENUM_240
23866: #define BOOST_PP_SEQ_ENUM_242(x) x, BOOST_PP_SEQ_ENUM_241
23866: #define BOOST_PP_SEQ_ENUM_243(x) x, BOOST_PP_SEQ_ENUM_242
23866: #define BOOST_PP_SEQ_ENUM_244(x) x, BOOST_PP_SEQ_ENUM_243
23866: #define BOOST_PP_SEQ_ENUM_245(x) x, BOOST_PP_SEQ_ENUM_244
23866: #define BOOST_PP_SEQ_ENUM_246(x) x, BOOST_PP_SEQ_ENUM_245
23866: #define BOOST_PP_SEQ_ENUM_247(x) x, BOOST_PP_SEQ_ENUM_246
23866: #define BOOST_PP_SEQ_ENUM_248(x) x, BOOST_PP_SEQ_ENUM_247
23866: #define BOOST_PP_SEQ_ENUM_249(x) x, BOOST_PP_SEQ_ENUM_248
23866: #define BOOST_PP_SEQ_ENUM_250(x) x, BOOST_PP_SEQ_ENUM_249
23866: #define BOOST_PP_SEQ_ENUM_251(x) x, BOOST_PP_SEQ_ENUM_250
23866: #define BOOST_PP_SEQ_ENUM_252(x) x, BOOST_PP_SEQ_ENUM_251
23866: #define BOOST_PP_SEQ_ENUM_253(x) x, BOOST_PP_SEQ_ENUM_252
23866: #define BOOST_PP_SEQ_ENUM_254(x) x, BOOST_PP_SEQ_ENUM_253
23866: #define BOOST_PP_SEQ_ENUM_255(x) x, BOOST_PP_SEQ_ENUM_254
23866: #define BOOST_PP_SEQ_ENUM_256(x) x, BOOST_PP_SEQ_ENUM_255
23866: # 8 "/usr/include/boost/concept/detail/concept_def.hpp" 2 3 4
23866: # 18 "/usr/include/boost/concept/detail/concept_def.hpp" 3 4
23866: #define BOOST_concept(name,params) template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > struct name; template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > struct BOOST_PP_CAT(name,Concept) : name< BOOST_PP_SEQ_ENUM(params) > { }; template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > struct name
23866: # 32 "/usr/include/boost/concept/detail/concept_def.hpp" 3 4
23866: #define BOOST_CONCEPT_typename(r,ignored,index,t) BOOST_PP_COMMA_IF(index) typename t
23866: # 33 "/usr/include/boost/concept_check.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost
23866: {
23866:
23866:
23866:
23866:
23866:
23866: template <class Model>
23866: inline void function_requires(Model* = 0)
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Model)>::failed> boost_concept_check50 __attribute__((__unused__));
23866: }
23866: template <class T> inline void ignore_unused_variable_warning(T const&) {}
23866:
23866: #define BOOST_CLASS_REQUIRE(type_var,ns,concept) BOOST_CONCEPT_ASSERT((ns::concept<type_var>))
23866:
23866:
23866: #define BOOST_CLASS_REQUIRE2(type_var1,type_var2,ns,concept) BOOST_CONCEPT_ASSERT((ns::concept<type_var1,type_var2>))
23866:
23866:
23866: #define BOOST_CLASS_REQUIRE3(tv1,tv2,tv3,ns,concept) BOOST_CONCEPT_ASSERT((ns::concept<tv1,tv2,tv3>))
23866:
23866:
23866: #define BOOST_CLASS_REQUIRE4(tv1,tv2,tv3,tv4,ns,concept) BOOST_CONCEPT_ASSERT((ns::concept<tv1,tv2,tv3,tv4>))
23866:
23866:
23866:
23866:
23866:
23866:
23866: template < typename T > struct Integer; template < typename T > struct IntegerConcept : Integer< T > { }; template < typename T > struct Integer
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Integer>)>::failed> boost_concept_check72 __attribute__((__unused__)); ~Integer()
23866: {
23866: x.error_type_must_be_an_integer_type();
23866: }
23866: private:
23866: T x;
23866: };
23866:
23866: template <> struct Integer<char> {};
23866: template <> struct Integer<signed char> {};
23866: template <> struct Integer<unsigned char> {};
23866: template <> struct Integer<short> {};
23866: template <> struct Integer<unsigned short> {};
23866: template <> struct Integer<int> {};
23866: template <> struct Integer<unsigned int> {};
23866: template <> struct Integer<long> {};
23866: template <> struct Integer<unsigned long> {};
23866:
23866: template <> struct Integer< ::boost::long_long_type> {};
23866: template <> struct Integer< ::boost::ulong_long_type> {};
23866:
23866:
23866:
23866:
23866:
23866: template < typename T > struct SignedInteger; template < typename T > struct SignedIntegerConcept : SignedInteger< T > { }; template < typename T > struct SignedInteger {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<SignedInteger>)>::failed> boost_concept_check98 __attribute__((__unused__)); ~SignedInteger() {
23866: x.error_type_must_be_a_signed_integer_type();
23866: }
23866: private:
23866: T x;
23866: };
23866: template <> struct SignedInteger<signed char> { };
23866: template <> struct SignedInteger<short> {};
23866: template <> struct SignedInteger<int> {};
23866: template <> struct SignedInteger<long> {};
23866:
23866: template <> struct SignedInteger< ::boost::long_long_type> {};
23866:
23866:
23866:
23866:
23866: template < typename T > struct UnsignedInteger; template < typename T > struct UnsignedIntegerConcept : UnsignedInteger< T > { }; template < typename T > struct UnsignedInteger {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<UnsignedInteger>)>::failed> boost_concept_check115 __attribute__((__unused__)); ~UnsignedInteger() {
23866: x.error_type_must_be_an_unsigned_integer_type();
23866: }
23866: private:
23866: T x;
23866: };
23866:
23866: template <> struct UnsignedInteger<unsigned char> {};
23866: template <> struct UnsignedInteger<unsigned short> {};
23866: template <> struct UnsignedInteger<unsigned int> {};
23866: template <> struct UnsignedInteger<unsigned long> {};
23866:
23866: template <> struct UnsignedInteger< ::boost::ulong_long_type> {};
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template < typename TT > struct DefaultConstructible; template < typename TT > struct DefaultConstructibleConcept : DefaultConstructible< TT > { }; template < typename TT > struct DefaultConstructible
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<DefaultConstructible>)>::failed> boost_concept_check137 __attribute__((__unused__)); ~DefaultConstructible() {
23866: TT a;
23866: ignore_unused_variable_warning(a);
23866: }
23866: };
23866:
23866: template < typename TT > struct Assignable; template < typename TT > struct AssignableConcept : Assignable< TT > { }; template < typename TT > struct Assignable
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Assignable>)>::failed> boost_concept_check145 __attribute__((__unused__)); ~Assignable() {
23866:
23866: a = b;
23866:
23866: const_constraints(b);
23866: }
23866: private:
23866: void const_constraints(const TT& x) {
23866:
23866: a = x;
23866:
23866:
23866:
23866: }
23866: private:
23866: TT a;
23866: TT b;
23866: };
23866:
23866:
23866: template < typename TT > struct CopyConstructible; template < typename TT > struct CopyConstructibleConcept : CopyConstructible< TT > { }; template < typename TT > struct CopyConstructible
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<CopyConstructible>)>::failed> boost_concept_check167 __attribute__((__unused__)); ~CopyConstructible() {
23866: TT a(b);
23866: TT* ptr = &a;
23866: const_constraints(a);
23866: ignore_unused_variable_warning(ptr);
23866: }
23866: private:
23866: void const_constraints(const TT& a) {
23866: TT c(a);
23866: const TT* ptr = &a;
23866: ignore_unused_variable_warning(c);
23866: ignore_unused_variable_warning(ptr);
23866: }
23866: TT b;
23866: };
23866:
23866:
23866: template < typename TT > struct SGIAssignable; template < typename TT > struct SGIAssignableConcept : SGIAssignable< TT > { }; template < typename TT > struct SGIAssignable
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<SGIAssignable>)>::failed> boost_concept_check186 __attribute__((__unused__)); ~SGIAssignable() {
23866: TT c(a);
23866:
23866: a = b;
23866:
23866: const_constraints(b);
23866: ignore_unused_variable_warning(c);
23866: }
23866: private:
23866: void const_constraints(const TT& x) {
23866: TT c(x);
23866:
23866: a = x;
23866:
23866: ignore_unused_variable_warning(c);
23866: }
23866: TT a;
23866: TT b;
23866: };
23866:
23866: template < typename X , typename Y > struct Convertible; template < typename X , typename Y > struct ConvertibleConcept : Convertible< X, Y > { }; template < typename X , typename Y > struct Convertible
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Convertible>)>::failed> boost_concept_check208 __attribute__((__unused__)); ~Convertible() {
23866: Y y = x;
23866: ignore_unused_variable_warning(y);
23866: }
23866: private:
23866: X x;
23866: };
23866: # 225 "/usr/include/boost/concept_check.hpp" 3 4
23866: template <class TT>
23866: void require_boolean_expr(const TT& t) {
23866: bool x = t;
23866: ignore_unused_variable_warning(x);
23866: }
23866:
23866: template < typename TT > struct EqualityComparable; template < typename TT > struct EqualityComparableConcept : EqualityComparable< TT > { }; template < typename TT > struct EqualityComparable
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<EqualityComparable>)>::failed> boost_concept_check233 __attribute__((__unused__)); ~EqualityComparable() {
23866: require_boolean_expr(a == b);
23866: require_boolean_expr(a != b);
23866: }
23866: private:
23866: TT a, b;
23866: };
23866:
23866: template < typename TT > struct LessThanComparable; template < typename TT > struct LessThanComparableConcept : LessThanComparable< TT > { }; template < typename TT > struct LessThanComparable
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<LessThanComparable>)>::failed> boost_concept_check243 __attribute__((__unused__)); ~LessThanComparable() {
23866: require_boolean_expr(a < b);
23866: }
23866: private:
23866: TT a, b;
23866: };
23866:
23866:
23866: template < typename TT > struct Comparable; template < typename TT > struct ComparableConcept : Comparable< TT > { }; template < typename TT > struct Comparable
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Comparable>)>::failed> boost_concept_check253 __attribute__((__unused__)); ~Comparable() {
23866: require_boolean_expr(a < b);
23866: require_boolean_expr(a > b);
23866: require_boolean_expr(a <= b);
23866: require_boolean_expr(a >= b);
23866: }
23866: private:
23866: TT a, b;
23866: };
23866:
23866: #define BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(OP,NAME) BOOST_concept(NAME, (First)(Second)) { BOOST_CONCEPT_USAGE(NAME) { (void)constraints_(); } private: bool constraints_() { return a OP b; } First a; Second b; }
23866: # 273 "/usr/include/boost/concept_check.hpp" 3 4
23866: #define BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(OP,NAME) BOOST_concept(NAME, (Ret)(First)(Second)) { BOOST_CONCEPT_USAGE(NAME) { (void)constraints_(); } private: Ret constraints_() { return a OP b; } First a; Second b; }
23866: # 283 "/usr/include/boost/concept_check.hpp" 3 4
23866: template < typename First , typename Second > struct EqualOp; template < typename First , typename Second > struct EqualOpConcept : EqualOp< First, Second > { }; template < typename First , typename Second > struct EqualOp { typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<EqualOp>)>::failed> boost_concept_check283 __attribute__((__unused__)); ~EqualOp() { (void)constraints_(); } private: bool constraints_() { return a == b; } First a; Second b; };
23866: template < typename First , typename Second > struct NotEqualOp; template < typename First , typename Second > struct NotEqualOpConcept : NotEqualOp< First, Second > { }; template < typename First , typename Second > struct NotEqualOp { typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<NotEqualOp>)>::failed> boost_concept_check284 __attribute__((__unused__)); ~NotEqualOp() { (void)constraints_(); } private: bool constraints_() { return a != b; } First a; Second b; };
23866: template < typename First , typename Second > struct LessThanOp; template < typename First , typename Second > struct LessThanOpConcept : LessThanOp< First, Second > { }; template < typename First , typename Second > struct LessThanOp { typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<LessThanOp>)>::failed> boost_concept_check285 __attribute__((__unused__)); ~LessThanOp() { (void)constraints_(); } private: bool constraints_() { return a < b; } First a; Second b; };
23866: template < typename First , typename Second > struct LessEqualOp; template < typename First , typename Second > struct LessEqualOpConcept : LessEqualOp< First, Second > { }; template < typename First , typename Second > struct LessEqualOp { typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<LessEqualOp>)>::failed> boost_concept_check286 __attribute__((__unused__)); ~LessEqualOp() { (void)constraints_(); } private: bool constraints_() { return a <= b; } First a; Second b; };
23866: template < typename First , typename Second > struct GreaterThanOp; template < typename First , typename Second > struct GreaterThanOpConcept : GreaterThanOp< First, Second > { }; template < typename First , typename Second > struct GreaterThanOp { typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<GreaterThanOp>)>::failed> boost_concept_check287 __attribute__((__unused__)); ~GreaterThanOp() { (void)constraints_(); } private: bool constraints_() { return a > b; } First a; Second b; };
23866: template < typename First , typename Second > struct GreaterEqualOp; template < typename First , typename Second > struct GreaterEqualOpConcept : GreaterEqualOp< First, Second > { }; template < typename First , typename Second > struct GreaterEqualOp { typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<GreaterEqualOp>)>::failed> boost_concept_check288 __attribute__((__unused__)); ~GreaterEqualOp() { (void)constraints_(); } private: bool constraints_() { return a >= b; } First a; Second b; };
23866:
23866: template < typename Ret , typename First , typename Second > struct PlusOp; template < typename Ret , typename First , typename Second > struct PlusOpConcept : PlusOp< Ret, First, Second > { }; template < typename Ret , typename First , typename Second > struct PlusOp { typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<PlusOp>)>::failed> boost_concept_check290 __attribute__((__unused__)); ~PlusOp() { (void)constraints_(); } private: Ret constraints_() { return a + b; } First a; Second b; };
23866: template < typename Ret , typename First , typename Second > struct TimesOp; template < typename Ret , typename First , typename Second > struct TimesOpConcept : TimesOp< Ret, First, Second > { }; template < typename Ret , typename First , typename Second > struct TimesOp { typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<TimesOp>)>::failed> boost_concept_check291 __attribute__((__unused__)); ~TimesOp() { (void)constraints_(); } private: Ret constraints_() { return a * b; } First a; Second b; };
23866: template < typename Ret , typename First , typename Second > struct DivideOp; template < typename Ret , typename First , typename Second > struct DivideOpConcept : DivideOp< Ret, First, Second > { }; template < typename Ret , typename First , typename Second > struct DivideOp { typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<DivideOp>)>::failed> boost_concept_check292 __attribute__((__unused__)); ~DivideOp() { (void)constraints_(); } private: Ret constraints_() { return a / b; } First a; Second b; };
23866: template < typename Ret , typename First , typename Second > struct SubtractOp; template < typename Ret , typename First , typename Second > struct SubtractOpConcept : SubtractOp< Ret, First, Second > { }; template < typename Ret , typename First , typename Second > struct SubtractOp { typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<SubtractOp>)>::failed> boost_concept_check293 __attribute__((__unused__)); ~SubtractOp() { (void)constraints_(); } private: Ret constraints_() { return a - b; } First a; Second b; };
23866: template < typename Ret , typename First , typename Second > struct ModOp; template < typename Ret , typename First , typename Second > struct ModOpConcept : ModOp< Ret, First, Second > { }; template < typename Ret , typename First , typename Second > struct ModOp { typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<ModOp>)>::failed> boost_concept_check294 __attribute__((__unused__)); ~ModOp() { (void)constraints_(); } private: Ret constraints_() { return a % b; } First a; Second b; };
23866:
23866:
23866:
23866:
23866: template < typename Func , typename Return > struct Generator; template < typename Func , typename Return > struct GeneratorConcept : Generator< Func, Return > { }; template < typename Func , typename Return > struct Generator
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Generator>)>::failed> boost_concept_check301 __attribute__((__unused__)); ~Generator() { test(is_void<Return>()); }
23866:
23866: private:
23866: void test(boost::false_type)
23866: {
23866:
23866: const Return& r = f();
23866: ignore_unused_variable_warning(r);
23866: }
23866:
23866: void test(boost::true_type)
23866: {
23866: f();
23866: }
23866:
23866: Func f;
23866: };
23866:
23866: template < typename Func , typename Return , typename Arg > struct UnaryFunction; template < typename Func , typename Return , typename Arg > struct UnaryFunctionConcept : UnaryFunction< Func, Return, Arg > { }; template < typename Func , typename Return , typename Arg > struct UnaryFunction
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<UnaryFunction>)>::failed> boost_concept_check321 __attribute__((__unused__)); ~UnaryFunction() { test(is_void<Return>()); }
23866:
23866: private:
23866: void test(boost::false_type)
23866: {
23866: f(arg);
23866: Return r = f(arg);
23866: ignore_unused_variable_warning(r);
23866: }
23866:
23866: void test(boost::true_type)
23866: {
23866: f(arg);
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: UnaryFunction();
23866:
23866:
23866: Func f;
23866: Arg arg;
23866: };
23866:
23866: template < typename Func , typename Return , typename First , typename Second > struct BinaryFunction; template < typename Func , typename Return , typename First , typename Second > struct BinaryFunctionConcept : BinaryFunction< Func, Return, First, Second > { }; template < typename Func , typename Return , typename First , typename Second > struct BinaryFunction
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<BinaryFunction>)>::failed> boost_concept_check351 __attribute__((__unused__)); ~BinaryFunction() { test(is_void<Return>()); }
23866: private:
23866: void test(boost::false_type)
23866: {
23866: f(first,second);
23866: Return r = f(first, second);
23866: (void)r;
23866: }
23866:
23866: void test(boost::true_type)
23866: {
23866: f(first,second);
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: BinaryFunction();
23866:
23866:
23866: Func f;
23866: First first;
23866: Second second;
23866: };
23866:
23866: template < typename Func , typename Arg > struct UnaryPredicate; template < typename Func , typename Arg > struct UnaryPredicateConcept : UnaryPredicate< Func, Arg > { }; template < typename Func , typename Arg > struct UnaryPredicate
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<UnaryPredicate>)>::failed> boost_concept_check381 __attribute__((__unused__)); ~UnaryPredicate() {
23866: require_boolean_expr(f(arg));
23866: }
23866: private:
23866:
23866:
23866:
23866:
23866:
23866:
23866: UnaryPredicate();
23866:
23866:
23866: Func f;
23866: Arg arg;
23866: };
23866:
23866: template < typename Func , typename First , typename Second > struct BinaryPredicate; template < typename Func , typename First , typename Second > struct BinaryPredicateConcept : BinaryPredicate< Func, First, Second > { }; template < typename Func , typename First , typename Second > struct BinaryPredicate
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<BinaryPredicate>)>::failed> boost_concept_check400 __attribute__((__unused__)); ~BinaryPredicate() {
23866: require_boolean_expr(f(a, b));
23866: }
23866: private:
23866:
23866:
23866:
23866:
23866:
23866:
23866: BinaryPredicate();
23866:
23866: Func f;
23866: First a;
23866: Second b;
23866: };
23866:
23866:
23866: template < typename Func , typename First , typename Second > struct Const_BinaryPredicate; template < typename Func , typename First , typename Second > struct Const_BinaryPredicateConcept : Const_BinaryPredicate< Func, First, Second > { }; template < typename Func , typename First , typename Second > struct Const_BinaryPredicate
23866: : BinaryPredicate<Func, First, Second>
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Const_BinaryPredicate>)>::failed> boost_concept_check421 __attribute__((__unused__)); ~Const_BinaryPredicate() {
23866: const_constraints(f);
23866: }
23866: private:
23866: void const_constraints(const Func& fun) {
23866:
23866: require_boolean_expr(fun(a, b));
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: Const_BinaryPredicate();
23866:
23866:
23866: Func f;
23866: First a;
23866: Second b;
23866: };
23866:
23866: template < typename Func , typename Return > struct AdaptableGenerator; template < typename Func , typename Return > struct AdaptableGeneratorConcept : AdaptableGenerator< Func, Return > { }; template < typename Func , typename Return > struct AdaptableGenerator
23866: : Generator<Func, typename Func::result_type>
23866: {
23866: typedef typename Func::result_type result_type;
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<AdaptableGenerator>)>::failed> boost_concept_check448 __attribute__((__unused__)); ~AdaptableGenerator()
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Convertible<result_type, Return>)>::failed> boost_concept_check450 __attribute__((__unused__));
23866: }
23866: };
23866:
23866: template < typename Func , typename Return , typename Arg > struct AdaptableUnaryFunction; template < typename Func , typename Return , typename Arg > struct AdaptableUnaryFunctionConcept : AdaptableUnaryFunction< Func, Return, Arg > { }; template < typename Func , typename Return , typename Arg > struct AdaptableUnaryFunction
23866: : UnaryFunction<Func, typename Func::result_type, typename Func::argument_type>
23866: {
23866: typedef typename Func::argument_type argument_type;
23866: typedef typename Func::result_type result_type;
23866:
23866: ~AdaptableUnaryFunction()
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Convertible<result_type, Return>)>::failed> boost_concept_check462 __attribute__((__unused__));
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Convertible<Arg, argument_type>)>::failed> boost_concept_check463 __attribute__((__unused__));
23866: }
23866: };
23866:
23866: template < typename Func , typename Return , typename First , typename Second > struct AdaptableBinaryFunction; template < typename Func , typename Return , typename First , typename Second > struct AdaptableBinaryFunctionConcept : AdaptableBinaryFunction< Func, Return, First, Second > { }; template < typename Func , typename Return , typename First , typename Second > struct AdaptableBinaryFunction
23866: : BinaryFunction<
23866: Func
23866: , typename Func::result_type
23866: , typename Func::first_argument_type
23866: , typename Func::second_argument_type
23866: >
23866: {
23866: typedef typename Func::first_argument_type first_argument_type;
23866: typedef typename Func::second_argument_type second_argument_type;
23866: typedef typename Func::result_type result_type;
23866:
23866: ~AdaptableBinaryFunction()
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Convertible<result_type, Return>)>::failed> boost_concept_check481 __attribute__((__unused__));
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Convertible<First, first_argument_type>)>::failed> boost_concept_check482 __attribute__((__unused__));
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Convertible<Second, second_argument_type>)>::failed> boost_concept_check483 __attribute__((__unused__));
23866: }
23866: };
23866:
23866: template < typename Func , typename Arg > struct AdaptablePredicate; template < typename Func , typename Arg > struct AdaptablePredicateConcept : AdaptablePredicate< Func, Arg > { }; template < typename Func , typename Arg > struct AdaptablePredicate
23866: : UnaryPredicate<Func, Arg>
23866: , AdaptableUnaryFunction<Func, bool, Arg>
23866: {
23866: };
23866:
23866: template < typename Func , typename First , typename Second > struct AdaptableBinaryPredicate; template < typename Func , typename First , typename Second > struct AdaptableBinaryPredicateConcept : AdaptableBinaryPredicate< Func, First, Second > { }; template < typename Func , typename First , typename Second > struct AdaptableBinaryPredicate
23866: : BinaryPredicate<Func, First, Second>
23866: , AdaptableBinaryFunction<Func, bool, First, Second>
23866: {
23866: };
23866:
23866:
23866:
23866:
23866: template < typename TT > struct InputIterator; template < typename TT > struct InputIteratorConcept : InputIterator< TT > { }; template < typename TT > struct InputIterator
23866: : Assignable<TT>
23866: , EqualityComparable<TT>
23866: {
23866: typedef typename std::iterator_traits<TT>::value_type value_type;
23866: typedef typename std::iterator_traits<TT>::difference_type difference_type;
23866: typedef typename std::iterator_traits<TT>::reference reference;
23866: typedef typename std::iterator_traits<TT>::pointer pointer;
23866: typedef typename std::iterator_traits<TT>::iterator_category iterator_category;
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<InputIterator>)>::failed> boost_concept_check512 __attribute__((__unused__)); ~InputIterator()
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(SignedInteger<difference_type>)>::failed> boost_concept_check514 __attribute__((__unused__));
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Convertible<iterator_category, std::input_iterator_tag>)>::failed> boost_concept_check515 __attribute__((__unused__));
23866:
23866: TT j(i);
23866: (void)*i;
23866: ++j;
23866: i++;
23866: }
23866: private:
23866: TT i;
23866: };
23866:
23866: template < typename TT , typename ValueT > struct OutputIterator; template < typename TT , typename ValueT > struct OutputIteratorConcept : OutputIterator< TT, ValueT > { }; template < typename TT , typename ValueT > struct OutputIterator
23866: : Assignable<TT>
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<OutputIterator>)>::failed> boost_concept_check529 __attribute__((__unused__)); ~OutputIterator() {
23866:
23866: ++i;
23866: i++;
23866: *i++ = t;
23866: }
23866: private:
23866: TT i, j;
23866: ValueT t;
23866: };
23866:
23866: template < typename TT > struct ForwardIterator; template < typename TT > struct ForwardIteratorConcept : ForwardIterator< TT > { }; template < typename TT > struct ForwardIterator
23866: : InputIterator<TT>
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<ForwardIterator>)>::failed> boost_concept_check543 __attribute__((__unused__)); ~ForwardIterator()
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Convertible< typename ForwardIterator::iterator_category , std::forward_iterator_tag >)>::failed> boost_concept_check545 __attribute__((__unused__))
23866:
23866:
23866: ;
23866:
23866: typename InputIterator<TT>::reference r = *i;
23866: ignore_unused_variable_warning(r);
23866: }
23866:
23866: private:
23866: TT i;
23866: };
23866:
23866: template < typename TT > struct Mutable_ForwardIterator; template < typename TT > struct Mutable_ForwardIteratorConcept : Mutable_ForwardIterator< TT > { }; template < typename TT > struct Mutable_ForwardIterator
23866: : ForwardIterator<TT>
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Mutable_ForwardIterator>)>::failed> boost_concept_check561 __attribute__((__unused__)); ~Mutable_ForwardIterator() {
23866: *i++ = *j;
23866: }
23866: private:
23866: TT i, j;
23866: };
23866:
23866: template < typename TT > struct BidirectionalIterator; template < typename TT > struct BidirectionalIteratorConcept : BidirectionalIterator< TT > { }; template < typename TT > struct BidirectionalIterator
23866: : ForwardIterator<TT>
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<BidirectionalIterator>)>::failed> boost_concept_check571 __attribute__((__unused__)); ~BidirectionalIterator()
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Convertible< typename BidirectionalIterator::iterator_category , std::bidirectional_iterator_tag >)>::failed> boost_concept_check573 __attribute__((__unused__))
23866:
23866:
23866: ;
23866:
23866: --i;
23866: i--;
23866: }
23866: private:
23866: TT i;
23866: };
23866:
23866: template < typename TT > struct Mutable_BidirectionalIterator; template < typename TT > struct Mutable_BidirectionalIteratorConcept : Mutable_BidirectionalIterator< TT > { }; template < typename TT > struct Mutable_BidirectionalIterator
23866: : BidirectionalIterator<TT>
23866: , Mutable_ForwardIterator<TT>
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Mutable_BidirectionalIterator>)>::failed> boost_concept_check589 __attribute__((__unused__)); ~Mutable_BidirectionalIterator()
23866: {
23866: *i-- = *j;
23866: }
23866: private:
23866: TT i, j;
23866: };
23866:
23866: template < typename TT > struct RandomAccessIterator; template < typename TT > struct RandomAccessIteratorConcept : RandomAccessIterator< TT > { }; template < typename TT > struct RandomAccessIterator
23866: : BidirectionalIterator<TT>
23866: , Comparable<TT>
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<RandomAccessIterator>)>::failed> boost_concept_check601 __attribute__((__unused__)); ~RandomAccessIterator()
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Convertible< typename BidirectionalIterator<TT>::iterator_category , std::random_access_iterator_tag >)>::failed> boost_concept_check603 __attribute__((__unused__))
23866:
23866:
23866: ;
23866:
23866: i += n;
23866: i = i + n; i = n + i;
23866: i -= n;
23866: i = i - n;
23866: n = i - j;
23866: (void)i[n];
23866: }
23866:
23866: private:
23866: TT a, b;
23866: TT i, j;
23866: typename std::iterator_traits<TT>::difference_type n;
23866: };
23866:
23866: template < typename TT > struct Mutable_RandomAccessIterator; template < typename TT > struct Mutable_RandomAccessIteratorConcept : Mutable_RandomAccessIterator< TT > { }; template < typename TT > struct Mutable_RandomAccessIterator
23866: : RandomAccessIterator<TT>
23866: , Mutable_BidirectionalIterator<TT>
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Mutable_RandomAccessIterator>)>::failed> boost_concept_check626 __attribute__((__unused__)); ~Mutable_RandomAccessIterator()
23866: {
23866: i[n] = *i;
23866: }
23866: private:
23866: TT i;
23866: typename std::iterator_traits<TT>::difference_type n;
23866: };
23866:
23866:
23866:
23866:
23866: template < typename C > struct Container; template < typename C > struct ContainerConcept : Container< C > { }; template < typename C > struct Container
23866: : Assignable<C>
23866: {
23866: typedef typename C::value_type value_type;
23866: typedef typename C::difference_type difference_type;
23866: typedef typename C::size_type size_type;
23866: typedef typename C::const_reference const_reference;
23866: typedef typename C::const_pointer const_pointer;
23866: typedef typename C::const_iterator const_iterator;
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Container>)>::failed> boost_concept_check648 __attribute__((__unused__)); ~Container()
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(InputIterator<const_iterator>)>::failed> boost_concept_check650 __attribute__((__unused__));
23866: const_constraints(c);
23866: }
23866:
23866: private:
23866: void const_constraints(const C& cc) {
23866: i = cc.begin();
23866: i = cc.end();
23866: n = cc.size();
23866: n = cc.max_size();
23866: b = cc.empty();
23866: }
23866: C c;
23866: bool b;
23866: const_iterator i;
23866: size_type n;
23866: };
23866:
23866: template < typename C > struct Mutable_Container; template < typename C > struct Mutable_ContainerConcept : Mutable_Container< C > { }; template < typename C > struct Mutable_Container
23866: : Container<C>
23866: {
23866: typedef typename C::reference reference;
23866: typedef typename C::iterator iterator;
23866: typedef typename C::pointer pointer;
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Mutable_Container>)>::failed> boost_concept_check675 __attribute__((__unused__)); ~Mutable_Container()
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( Assignable<typename Mutable_Container::value_type>)>::failed> boost_concept_check677 __attribute__((__unused__))
23866: ;
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(InputIterator<iterator>)>::failed> boost_concept_check680 __attribute__((__unused__));
23866:
23866: i = c.begin();
23866: i = c.end();
23866: c.swap(c2);
23866: }
23866:
23866: private:
23866: iterator i;
23866: C c, c2;
23866: };
23866:
23866: template < typename C > struct ForwardContainer; template < typename C > struct ForwardContainerConcept : ForwardContainer< C > { }; template < typename C > struct ForwardContainer
23866: : Container<C>
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<ForwardContainer>)>::failed> boost_concept_check695 __attribute__((__unused__)); ~ForwardContainer()
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( ForwardIterator< typename ForwardContainer::const_iterator >)>::failed> boost_concept_check697 __attribute__((__unused__))
23866:
23866:
23866: ;
23866: }
23866: };
23866:
23866: template < typename C > struct Mutable_ForwardContainer; template < typename C > struct Mutable_ForwardContainerConcept : Mutable_ForwardContainer< C > { }; template < typename C > struct Mutable_ForwardContainer
23866: : ForwardContainer<C>
23866: , Mutable_Container<C>
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Mutable_ForwardContainer>)>::failed> boost_concept_check708 __attribute__((__unused__)); ~Mutable_ForwardContainer()
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( Mutable_ForwardIterator< typename Mutable_ForwardContainer::iterator >)>::failed> boost_concept_check710 __attribute__((__unused__))
23866:
23866:
23866: ;
23866: }
23866: };
23866:
23866: template < typename C > struct ReversibleContainer; template < typename C > struct ReversibleContainerConcept : ReversibleContainer< C > { }; template < typename C > struct ReversibleContainer
23866: : ForwardContainer<C>
23866: {
23866: typedef typename
23866: C::const_reverse_iterator
23866: const_reverse_iterator;
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<ReversibleContainer>)>::failed> boost_concept_check724 __attribute__((__unused__)); ~ReversibleContainer()
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( BidirectionalIterator< typename ReversibleContainer::const_iterator>)>::failed> boost_concept_check726 __attribute__((__unused__))
23866:
23866: ;
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(BidirectionalIterator<const_reverse_iterator>)>::failed> boost_concept_check730 __attribute__((__unused__));
23866:
23866: const_constraints(c);
23866: }
23866: private:
23866: void const_constraints(const C& cc)
23866: {
23866: const_reverse_iterator _i = cc.rbegin();
23866: _i = cc.rend();
23866: }
23866: C c;
23866: };
23866:
23866: template < typename C > struct Mutable_ReversibleContainer; template < typename C > struct Mutable_ReversibleContainerConcept : Mutable_ReversibleContainer< C > { }; template < typename C > struct Mutable_ReversibleContainer
23866: : Mutable_ForwardContainer<C>
23866: , ReversibleContainer<C>
23866: {
23866: typedef typename C::reverse_iterator reverse_iterator;
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Mutable_ReversibleContainer>)>::failed> boost_concept_check749 __attribute__((__unused__)); ~Mutable_ReversibleContainer()
23866: {
23866: typedef typename Mutable_ForwardContainer<C>::iterator iterator;
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Mutable_BidirectionalIterator<iterator>)>::failed> boost_concept_check752 __attribute__((__unused__));
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Mutable_BidirectionalIterator<reverse_iterator>)>::failed> boost_concept_check753 __attribute__((__unused__));
23866:
23866: reverse_iterator i = c.rbegin();
23866: i = c.rend();
23866: }
23866: private:
23866: C c;
23866: };
23866:
23866: template < typename C > struct RandomAccessContainer; template < typename C > struct RandomAccessContainerConcept : RandomAccessContainer< C > { }; template < typename C > struct RandomAccessContainer
23866: : ReversibleContainer<C>
23866: {
23866: typedef typename C::size_type size_type;
23866: typedef typename C::const_reference const_reference;
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<RandomAccessContainer>)>::failed> boost_concept_check768 __attribute__((__unused__)); ~RandomAccessContainer()
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( RandomAccessIterator< typename RandomAccessContainer::const_iterator >)>::failed> boost_concept_check770 __attribute__((__unused__))
23866:
23866:
23866: ;
23866:
23866: const_constraints(c);
23866: }
23866: private:
23866: void const_constraints(const C& cc)
23866: {
23866: const_reference r = cc[n];
23866: ignore_unused_variable_warning(r);
23866: }
23866:
23866: C c;
23866: size_type n;
23866: };
23866:
23866: template < typename C > struct Mutable_RandomAccessContainer; template < typename C > struct Mutable_RandomAccessContainerConcept : Mutable_RandomAccessContainer< C > { }; template < typename C > struct Mutable_RandomAccessContainer
23866: : Mutable_ReversibleContainer<C>
23866: , RandomAccessContainer<C>
23866: {
23866: private:
23866: typedef Mutable_RandomAccessContainer self;
23866: public:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Mutable_RandomAccessContainer>)>::failed> boost_concept_check795 __attribute__((__unused__)); ~Mutable_RandomAccessContainer()
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Mutable_RandomAccessIterator<typename self::iterator>)>::failed> boost_concept_check797 __attribute__((__unused__));
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(Mutable_RandomAccessIterator<typename self::reverse_iterator>)>::failed> boost_concept_check798 __attribute__((__unused__));
23866:
23866: typename self::reference r = c[i];
23866: ignore_unused_variable_warning(r);
23866: }
23866:
23866: private:
23866: typename Mutable_ReversibleContainer<C>::size_type i;
23866: C c;
23866: };
23866:
23866:
23866: template < typename S > struct Sequence; template < typename S > struct SequenceConcept : Sequence< S > { }; template < typename S > struct Sequence
23866: : Mutable_ForwardContainer<S>
23866:
23866:
23866:
23866: , DefaultConstructible<S>
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Sequence>)>::failed> boost_concept_check817 __attribute__((__unused__)); ~Sequence()
23866: {
23866: S
23866: c(n, t),
23866: c2(first, last);
23866:
23866: c.insert(p, t);
23866: c.insert(p, n, t);
23866: c.insert(p, first, last);
23866:
23866: c.erase(p);
23866: c.erase(p, q);
23866:
23866: typename Sequence::reference r = c.front();
23866:
23866: ignore_unused_variable_warning(c);
23866: ignore_unused_variable_warning(c2);
23866: ignore_unused_variable_warning(r);
23866: const_constraints(c);
23866: }
23866: private:
23866: void const_constraints(const S& c) {
23866: typename Sequence::const_reference r = c.front();
23866: ignore_unused_variable_warning(r);
23866: }
23866:
23866: typename S::value_type t;
23866: typename S::size_type n;
23866: typename S::value_type* first, *last;
23866: typename S::iterator p, q;
23866: };
23866:
23866: template < typename S > struct FrontInsertionSequence; template < typename S > struct FrontInsertionSequenceConcept : FrontInsertionSequence< S > { }; template < typename S > struct FrontInsertionSequence
23866: : Sequence<S>
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<FrontInsertionSequence>)>::failed> boost_concept_check852 __attribute__((__unused__)); ~FrontInsertionSequence()
23866: {
23866: c.push_front(t);
23866: c.pop_front();
23866: }
23866: private:
23866: S c;
23866: typename S::value_type t;
23866: };
23866:
23866: template < typename S > struct BackInsertionSequence; template < typename S > struct BackInsertionSequenceConcept : BackInsertionSequence< S > { }; template < typename S > struct BackInsertionSequence
23866: : Sequence<S>
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<BackInsertionSequence>)>::failed> boost_concept_check865 __attribute__((__unused__)); ~BackInsertionSequence()
23866: {
23866: c.push_back(t);
23866: c.pop_back();
23866: typename BackInsertionSequence::reference r = c.back();
23866: ignore_unused_variable_warning(r);
23866: const_constraints(c);
23866: }
23866: private:
23866: void const_constraints(const S& cc) {
23866: typename BackInsertionSequence::const_reference
23866: r = cc.back();
23866: ignore_unused_variable_warning(r);
23866: }
23866: S c;
23866: typename S::value_type t;
23866: };
23866:
23866: template < typename C > struct AssociativeContainer; template < typename C > struct AssociativeContainerConcept : AssociativeContainer< C > { }; template < typename C > struct AssociativeContainer
23866: : ForwardContainer<C>
23866: , DefaultConstructible<C>
23866: {
23866: typedef typename C::key_type key_type;
23866: typedef typename C::key_compare key_compare;
23866: typedef typename C::value_compare value_compare;
23866: typedef typename C::iterator iterator;
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<AssociativeContainer>)>::failed> boost_concept_check892 __attribute__((__unused__)); ~AssociativeContainer()
23866: {
23866: i = c.find(k);
23866: r = c.equal_range(k);
23866: c.erase(k);
23866: c.erase(i);
23866: c.erase(r.first, r.second);
23866: const_constraints(c);
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(BinaryPredicate<key_compare,key_type,key_type>)>::failed> boost_concept_check900 __attribute__((__unused__));
23866:
23866: typedef typename AssociativeContainer::value_type value_type_;
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(BinaryPredicate<value_compare,value_type_,value_type_>)>::failed> boost_concept_check903 __attribute__((__unused__));
23866: }
23866:
23866:
23866: typedef typename C::const_iterator const_iterator;
23866: private:
23866: void const_constraints(const C& cc)
23866: {
23866: ci = cc.find(k);
23866: n = cc.count(k);
23866: cr = cc.equal_range(k);
23866: }
23866:
23866: C c;
23866: iterator i;
23866: std::pair<iterator,iterator> r;
23866: const_iterator ci;
23866: std::pair<const_iterator,const_iterator> cr;
23866: typename C::key_type k;
23866: typename C::size_type n;
23866: };
23866:
23866: template < typename C > struct UniqueAssociativeContainer; template < typename C > struct UniqueAssociativeContainerConcept : UniqueAssociativeContainer< C > { }; template < typename C > struct UniqueAssociativeContainer
23866: : AssociativeContainer<C>
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<UniqueAssociativeContainer>)>::failed> boost_concept_check928 __attribute__((__unused__)); ~UniqueAssociativeContainer()
23866: {
23866: C c(first, last);
23866:
23866: pos_flag = c.insert(t);
23866: c.insert(first, last);
23866:
23866: ignore_unused_variable_warning(c);
23866: }
23866: private:
23866: std::pair<typename C::iterator, bool> pos_flag;
23866: typename C::value_type t;
23866: typename C::value_type* first, *last;
23866: };
23866:
23866: template < typename C > struct MultipleAssociativeContainer; template < typename C > struct MultipleAssociativeContainerConcept : MultipleAssociativeContainer< C > { }; template < typename C > struct MultipleAssociativeContainer
23866: : AssociativeContainer<C>
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<MultipleAssociativeContainer>)>::failed> boost_concept_check946 __attribute__((__unused__)); ~MultipleAssociativeContainer()
23866: {
23866: C c(first, last);
23866:
23866: pos = c.insert(t);
23866: c.insert(first, last);
23866:
23866: ignore_unused_variable_warning(c);
23866: ignore_unused_variable_warning(pos);
23866: }
23866: private:
23866: typename C::iterator pos;
23866: typename C::value_type t;
23866: typename C::value_type* first, *last;
23866: };
23866:
23866: template < typename C > struct SimpleAssociativeContainer; template < typename C > struct SimpleAssociativeContainerConcept : SimpleAssociativeContainer< C > { }; template < typename C > struct SimpleAssociativeContainer
23866: : AssociativeContainer<C>
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<SimpleAssociativeContainer>)>::failed> boost_concept_check965 __attribute__((__unused__)); ~SimpleAssociativeContainer()
23866: {
23866: typedef typename C::key_type key_type;
23866: typedef typename C::value_type value_type;
23866: static_assert((boost::is_same<key_type,value_type>::value), "(boost::is_same<key_type,value_type>::value)");
23866: }
23866: };
23866:
23866: template < typename C > struct PairAssociativeContainer; template < typename C > struct PairAssociativeContainerConcept : PairAssociativeContainer< C > { }; template < typename C > struct PairAssociativeContainer
23866: : AssociativeContainer<C>
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<PairAssociativeContainer>)>::failed> boost_concept_check976 __attribute__((__unused__)); ~PairAssociativeContainer()
23866: {
23866: typedef typename C::key_type key_type;
23866: typedef typename C::value_type value_type;
23866: typedef typename C::mapped_type mapped_type;
23866: typedef std::pair<const key_type, mapped_type> required_value_type;
23866: static_assert((boost::is_same<value_type,required_value_type>::value), "(boost::is_same<value_type,required_value_type>::value)");
23866: }
23866: };
23866:
23866: template < typename C > struct SortedAssociativeContainer; template < typename C > struct SortedAssociativeContainerConcept : SortedAssociativeContainer< C > { }; template < typename C > struct SortedAssociativeContainer
23866: : AssociativeContainer<C>
23866: , ReversibleContainer<C>
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<SortedAssociativeContainer>)>::failed> boost_concept_check990 __attribute__((__unused__)); ~SortedAssociativeContainer()
23866: {
23866: C
23866: c(kc),
23866: c2(first, last),
23866: c3(first, last, kc);
23866:
23866: p = c.upper_bound(k);
23866: p = c.lower_bound(k);
23866: r = c.equal_range(k);
23866:
23866: c.insert(p, t);
23866:
23866: ignore_unused_variable_warning(c);
23866: ignore_unused_variable_warning(c2);
23866: ignore_unused_variable_warning(c3);
23866: const_constraints(c);
23866: }
23866:
23866: void const_constraints(const C& c)
23866: {
23866: kc = c.key_comp();
23866: vc = c.value_comp();
23866:
23866: cp = c.upper_bound(k);
23866: cp = c.lower_bound(k);
23866: cr = c.equal_range(k);
23866: }
23866:
23866: private:
23866: typename C::key_compare kc;
23866: typename C::value_compare vc;
23866: typename C::value_type t;
23866: typename C::key_type k;
23866: typedef typename C::iterator iterator;
23866: typedef typename C::const_iterator const_iterator;
23866:
23866: typedef SortedAssociativeContainer self;
23866: iterator p;
23866: const_iterator cp;
23866: std::pair<typename self::iterator,typename self::iterator> r;
23866: std::pair<typename self::const_iterator,typename self::const_iterator> cr;
23866: typename C::value_type* first, *last;
23866: };
23866:
23866:
23866:
23866: template < typename C > struct Collection; template < typename C > struct CollectionConcept : Collection< C > { }; template < typename C > struct Collection
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<Collection>)>::failed> boost_concept_check1039 __attribute__((__unused__)); ~Collection()
23866: {
23866: boost::function_requires<boost::InputIteratorConcept<iterator> >();
23866: boost::function_requires<boost::InputIteratorConcept<const_iterator> >();
23866: boost::function_requires<boost::CopyConstructibleConcept<value_type> >();
23866: const_constraints(c);
23866: i = c.begin();
23866: i = c.end();
23866: c.swap(c);
23866: }
23866:
23866: void const_constraints(const C& cc) {
23866: ci = cc.begin();
23866: ci = cc.end();
23866: n = cc.size();
23866: b = cc.empty();
23866: }
23866:
23866: private:
23866: typedef typename C::value_type value_type;
23866: typedef typename C::iterator iterator;
23866: typedef typename C::const_iterator const_iterator;
23866: typedef typename C::reference reference;
23866: typedef typename C::const_reference const_reference;
23866:
23866: typedef typename C::difference_type difference_type;
23866: typedef typename C::size_type size_type;
23866:
23866: C c;
23866: bool b;
23866: iterator i;
23866: const_iterator ci;
23866: size_type n;
23866: };
23866: }
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/concept/detail/concept_undef.hpp" 1 3 4
23866:
23866:
23866:
23866: #undef BOOST_concept_typename
23866: #undef BOOST_concept
23866: # 1080 "/usr/include/boost/concept_check.hpp" 2 3 4
23866: # 20 "/usr/include/boost/range/concepts.hpp" 2 3 4
23866: # 1 "/usr/include/boost/iterator/iterator_concepts.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_ITERATOR_CONCEPTS_HPP
23866: # 23 "/usr/include/boost/iterator/iterator_concepts.hpp" 3 4
23866: # 1 "/usr/include/boost/limits.hpp" 1 3 4
23866: # 12 "/usr/include/boost/limits.hpp" 3 4
23866: #define BOOST_LIMITS
23866: # 24 "/usr/include/boost/iterator/iterator_concepts.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/concept/detail/concept_def.hpp" 1 3 4
23866: # 18 "/usr/include/boost/concept/detail/concept_def.hpp" 3 4
23866: #define BOOST_concept(name,params) template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > struct name; template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > struct BOOST_PP_CAT(name,Concept) : name< BOOST_PP_SEQ_ENUM(params) > { }; template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > struct name
23866: # 32 "/usr/include/boost/concept/detail/concept_def.hpp" 3 4
23866: #define BOOST_CONCEPT_typename(r,ignored,index,t) BOOST_PP_COMMA_IF(index) typename t
23866: # 30 "/usr/include/boost/iterator/iterator_concepts.hpp" 2 3 4
23866:
23866: namespace boost_concepts
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template < typename Iterator > struct ReadableIterator; template < typename Iterator > struct ReadableIteratorConcept : ReadableIterator< Iterator > { }; template < typename Iterator > struct ReadableIterator
23866: : boost::Assignable<Iterator>
23866: , boost::CopyConstructible<Iterator>
23866:
23866: {
23866: typedef typename std::iterator_traits<Iterator>::value_type value_type;
23866: typedef typename std::iterator_traits<Iterator>::reference reference;
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<ReadableIterator>)>::failed> boost_concept_check48 __attribute__((__unused__)); ~ReadableIterator()
23866: {
23866:
23866: value_type v = *i;
23866: boost::ignore_unused_variable_warning(v);
23866: }
23866: private:
23866: Iterator i;
23866: };
23866:
23866: template <
23866: typename Iterator
23866: , typename ValueType = typename std::iterator_traits<Iterator>::value_type
23866: >
23866: struct WritableIterator
23866: : boost::CopyConstructible<Iterator>
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<WritableIterator>)>::failed> boost_concept_check65 __attribute__((__unused__)); ~WritableIterator()
23866: {
23866: *i = v;
23866: }
23866: private:
23866: ValueType v;
23866: Iterator i;
23866: };
23866:
23866: template <
23866: typename Iterator
23866: , typename ValueType = typename std::iterator_traits<Iterator>::value_type
23866: >
23866: struct WritableIteratorConcept : WritableIterator<Iterator,ValueType> {};
23866:
23866: template < typename Iterator > struct SwappableIterator; template < typename Iterator > struct SwappableIteratorConcept : SwappableIterator< Iterator > { }; template < typename Iterator > struct SwappableIterator
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<SwappableIterator>)>::failed> boost_concept_check82 __attribute__((__unused__)); ~SwappableIterator()
23866: {
23866: std::iter_swap(i1, i2);
23866: }
23866: private:
23866: Iterator i1;
23866: Iterator i2;
23866: };
23866:
23866: template < typename Iterator > struct LvalueIterator; template < typename Iterator > struct LvalueIteratorConcept : LvalueIterator< Iterator > { }; template < typename Iterator > struct LvalueIterator
23866: {
23866: typedef typename std::iterator_traits<Iterator>::value_type value_type;
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<LvalueIterator>)>::failed> boost_concept_check95 __attribute__((__unused__)); ~LvalueIterator()
23866: {
23866: value_type& r = const_cast<value_type&>(*i);
23866: boost::ignore_unused_variable_warning(r);
23866: }
23866: private:
23866: Iterator i;
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template < typename Iterator > struct IncrementableIterator; template < typename Iterator > struct IncrementableIteratorConcept : IncrementableIterator< Iterator > { }; template < typename Iterator > struct IncrementableIterator
23866: : boost::Assignable<Iterator>
23866: , boost::CopyConstructible<Iterator>
23866: {
23866: typedef typename boost::iterator_traversal<Iterator>::type traversal_category;
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( boost::Convertible< traversal_category , boost::incrementable_traversal_tag >)>::failed> boost_concept_check114 __attribute__((__unused__))
23866:
23866:
23866:
23866: ;
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<IncrementableIterator>)>::failed> boost_concept_check120 __attribute__((__unused__)); ~IncrementableIterator()
23866: {
23866: ++i;
23866: (void)i++;
23866: }
23866: private:
23866: Iterator i;
23866: };
23866:
23866: template < typename Iterator > struct SinglePassIterator; template < typename Iterator > struct SinglePassIteratorConcept : SinglePassIterator< Iterator > { }; template < typename Iterator > struct SinglePassIterator
23866: : IncrementableIterator<Iterator>
23866: , boost::EqualityComparable<Iterator>
23866:
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( boost::Convertible< typename SinglePassIterator::traversal_category , boost::single_pass_traversal_tag > )>::failed> boost_concept_check134 __attribute__((__unused__))
23866:
23866:
23866:
23866: ;
23866: };
23866:
23866: template < typename Iterator > struct ForwardTraversal; template < typename Iterator > struct ForwardTraversalConcept : ForwardTraversal< Iterator > { }; template < typename Iterator > struct ForwardTraversal
23866: : SinglePassIterator<Iterator>
23866: , boost::DefaultConstructible<Iterator>
23866: {
23866: typedef typename std::iterator_traits<Iterator>::difference_type difference_type;
23866:
23866: enum { mpl_assertion_in_line_147 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_arg( (void (*) (boost::is_integral<difference_type>))0, 1 ) ) ) };
23866: enum { mpl_assert_rel_value148 = (std::numeric_limits<difference_type>::is_signed == true) }; enum { mpl_assertion_in_line_148 = sizeof( boost::mpl::assertion_failed<mpl_assert_rel_value148>( (boost::mpl::failed ************ ( boost::mpl::assert_relation< boost::mpl::assert_::relations( sizeof( boost::mpl::assert_::arg == boost::mpl::assert_::arg ) ) , std::numeric_limits<difference_type>::is_signed , true >::************)) 0 ) ) };
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( boost::Convertible< typename ForwardTraversal::traversal_category , boost::forward_traversal_tag > )>::failed> boost_concept_check150 __attribute__((__unused__))
23866:
23866:
23866:
23866: ;
23866: };
23866:
23866: template < typename Iterator > struct BidirectionalTraversal; template < typename Iterator > struct BidirectionalTraversalConcept : BidirectionalTraversal< Iterator > { }; template < typename Iterator > struct BidirectionalTraversal
23866: : ForwardTraversal<Iterator>
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( boost::Convertible< typename BidirectionalTraversal::traversal_category , boost::bidirectional_traversal_tag > )>::failed> boost_concept_check160 __attribute__((__unused__))
23866:
23866:
23866:
23866: ;
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<BidirectionalTraversal>)>::failed> boost_concept_check166 __attribute__((__unused__)); ~BidirectionalTraversal()
23866: {
23866: --i;
23866: (void)i--;
23866: }
23866: private:
23866: Iterator i;
23866: };
23866:
23866: template < typename Iterator > struct RandomAccessTraversal; template < typename Iterator > struct RandomAccessTraversalConcept : RandomAccessTraversal< Iterator > { }; template < typename Iterator > struct RandomAccessTraversal
23866: : BidirectionalTraversal<Iterator>
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( boost::Convertible< typename RandomAccessTraversal::traversal_category , boost::random_access_traversal_tag > )>::failed> boost_concept_check178 __attribute__((__unused__))
23866:
23866:
23866:
23866: ;
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<RandomAccessTraversal>)>::failed> boost_concept_check184 __attribute__((__unused__)); ~RandomAccessTraversal()
23866: {
23866: i += n;
23866: i = i + n;
23866: i = n + i;
23866: i -= n;
23866: i = i - n;
23866: n = i - j;
23866: }
23866:
23866: private:
23866: typename BidirectionalTraversal<Iterator>::difference_type n;
23866: Iterator i, j;
23866: };
23866:
23866:
23866:
23866:
23866: namespace detail
23866: {
23866: template <typename Iterator1, typename Iterator2>
23866: void interop_single_pass_constraints(Iterator1 const& i1, Iterator2 const& i2)
23866: {
23866: bool b;
23866: b = i1 == i2;
23866: b = i1 != i2;
23866:
23866: b = i2 == i1;
23866: b = i2 != i1;
23866: boost::ignore_unused_variable_warning(b);
23866: }
23866:
23866: template <typename Iterator1, typename Iterator2>
23866: void interop_rand_access_constraints(
23866: Iterator1 const& i1, Iterator2 const& i2,
23866: boost::random_access_traversal_tag, boost::random_access_traversal_tag)
23866: {
23866: bool b;
23866: typename std::iterator_traits<Iterator2>::difference_type n;
23866: b = i1 < i2;
23866: b = i1 <= i2;
23866: b = i1 > i2;
23866: b = i1 >= i2;
23866: n = i1 - i2;
23866:
23866: b = i2 < i1;
23866: b = i2 <= i1;
23866: b = i2 > i1;
23866: b = i2 >= i1;
23866: n = i2 - i1;
23866: boost::ignore_unused_variable_warning(b);
23866: boost::ignore_unused_variable_warning(n);
23866: }
23866:
23866: template <typename Iterator1, typename Iterator2>
23866: void interop_rand_access_constraints(
23866: Iterator1 const&, Iterator2 const&,
23866: boost::single_pass_traversal_tag, boost::single_pass_traversal_tag)
23866: { }
23866:
23866: }
23866:
23866: template < typename Iterator , typename ConstIterator > struct InteroperableIterator; template < typename Iterator , typename ConstIterator > struct InteroperableIteratorConcept : InteroperableIterator< Iterator, ConstIterator > { }; template < typename Iterator , typename ConstIterator > struct InteroperableIterator
23866: {
23866: private:
23866: typedef typename boost::iterators::pure_iterator_traversal<Iterator>::type traversal_category;
23866: typedef typename boost::iterators::pure_iterator_traversal<ConstIterator>::type const_traversal_category;
23866:
23866: public:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(SinglePassIterator<Iterator>)>::failed> boost_concept_check253 __attribute__((__unused__));
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(SinglePassIterator<ConstIterator>)>::failed> boost_concept_check254 __attribute__((__unused__));
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<InteroperableIterator>)>::failed> boost_concept_check256 __attribute__((__unused__)); ~InteroperableIterator()
23866: {
23866: detail::interop_single_pass_constraints(i, ci);
23866: detail::interop_rand_access_constraints(i, ci, traversal_category(), const_traversal_category());
23866:
23866: ci = i;
23866: }
23866:
23866: private:
23866: Iterator i;
23866: ConstIterator ci;
23866: };
23866:
23866: }
23866:
23866: # 1 "/usr/include/boost/concept/detail/concept_undef.hpp" 1 3 4
23866:
23866:
23866:
23866: #undef BOOST_concept_typename
23866: #undef BOOST_concept
23866: # 272 "/usr/include/boost/iterator/iterator_concepts.hpp" 2 3 4
23866: # 21 "/usr/include/boost/range/concepts.hpp" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/range/value_type.hpp" 1 3 4
23866: # 12 "/usr/include/boost/range/value_type.hpp" 3 4
23866: #define BOOST_RANGE_VALUE_TYPE_HPP
23866: # 23 "/usr/include/boost/range/value_type.hpp" 3 4
23866: namespace boost
23866: {
23866: template< class T >
23866: struct range_value : iterator_value< typename range_iterator<T>::type >
23866: { };
23866: }
23866: # 25 "/usr/include/boost/range/concepts.hpp" 2 3 4
23866: # 1 "/usr/include/boost/range/detail/misc_concept.hpp" 1 3 4
23866: # 9 "/usr/include/boost/range/detail/misc_concept.hpp" 3 4
23866: #define BOOST_RANGE_DETAIL_MISC_CONCEPT_HPP_INCLUDED
23866:
23866:
23866:
23866: namespace boost
23866: {
23866: namespace range_detail
23866: {
23866: template<typename T1, typename T2>
23866: class SameTypeConcept
23866: {
23866: public:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<SameTypeConcept>)>::failed> boost_concept_check21 __attribute__((__unused__)); ~SameTypeConcept()
23866: {
23866: same_type(a,b);
23866: }
23866: private:
23866: template<typename T> void same_type(T,T) {}
23866: T1 a;
23866: T2 b;
23866: };
23866: }
23866: }
23866: # 26 "/usr/include/boost/range/concepts.hpp" 2 3 4
23866: # 62 "/usr/include/boost/range/concepts.hpp" 3 4
23866: namespace boost {
23866:
23866: namespace range_detail {
23866: # 98 "/usr/include/boost/range/concepts.hpp" 3 4
23866: #define BOOST_RANGE_ENABLE_CONCEPT_ASSERT 1
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_RANGE_CONCEPT_ASSERT(x) BOOST_CONCEPT_ASSERT( x )
23866: # 124 "/usr/include/boost/range/concepts.hpp" 3 4
23866: template<class Iterator>
23866: struct IncrementableIteratorConcept : CopyConstructible<Iterator>
23866: {
23866:
23866: typedef typename iterator_traversal<Iterator>::type traversal_category;
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( Convertible< traversal_category, incrementable_traversal_tag >)>::failed> boost_concept_check130 __attribute__((__unused__))
23866:
23866:
23866:
23866: ;
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<IncrementableIteratorConcept>)>::failed> boost_concept_check136 __attribute__((__unused__)); ~IncrementableIteratorConcept()
23866: {
23866: ++i;
23866: (void)i++;
23866: }
23866: private:
23866: Iterator i;
23866:
23866: };
23866:
23866: template<class Iterator>
23866: struct SinglePassIteratorConcept
23866: : IncrementableIteratorConcept<Iterator>
23866: , EqualityComparable<Iterator>
23866: {
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( Convertible< typename SinglePassIteratorConcept::traversal_category, single_pass_traversal_tag >)>::failed> boost_concept_check152 __attribute__((__unused__))
23866:
23866:
23866:
23866: ;
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<SinglePassIteratorConcept>)>::failed> boost_concept_check158 __attribute__((__unused__)); ~SinglePassIteratorConcept()
23866: {
23866: Iterator i2(++i);
23866: boost::ignore_unused_variable_warning(i2);
23866:
23866:
23866:
23866:
23866:
23866: (void)(i++);
23866:
23866: typename std::iterator_traits<Iterator>::reference r1(*i);
23866: boost::ignore_unused_variable_warning(r1);
23866:
23866: typename std::iterator_traits<Iterator>::reference r2(*(++i));
23866: boost::ignore_unused_variable_warning(r2);
23866: }
23866: private:
23866: Iterator i;
23866:
23866: };
23866:
23866: template<class Iterator>
23866: struct ForwardIteratorConcept
23866: : SinglePassIteratorConcept<Iterator>
23866: , DefaultConstructible<Iterator>
23866: {
23866:
23866: typedef typename std::iterator_traits<Iterator>::difference_type difference_type;
23866:
23866: enum { mpl_assertion_in_line_188 = sizeof( boost::mpl::assertion_failed<false>( boost::mpl::assert_arg( (void (*) (is_integral<difference_type>))0, 1 ) ) ) };
23866: enum { mpl_assert_rel_value189 = (std::numeric_limits<difference_type>::is_signed == true) }; enum { mpl_assertion_in_line_189 = sizeof( boost::mpl::assertion_failed<mpl_assert_rel_value189>( (boost::mpl::failed ************ ( boost::mpl::assert_relation< boost::mpl::assert_::relations( sizeof( boost::mpl::assert_::arg == boost::mpl::assert_::arg ) ) , std::numeric_limits<difference_type>::is_signed , true >::************)) 0 ) ) };
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( Convertible< typename ForwardIteratorConcept::traversal_category, forward_traversal_tag >)>::failed> boost_concept_check191 __attribute__((__unused__))
23866:
23866:
23866:
23866: ;
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<ForwardIteratorConcept>)>::failed> boost_concept_check197 __attribute__((__unused__)); ~ForwardIteratorConcept()
23866: {
23866:
23866:
23866:
23866:
23866: Iterator i2(i++);
23866: boost::ignore_unused_variable_warning(i2);
23866: typename std::iterator_traits<Iterator>::reference r(*(i++));
23866: boost::ignore_unused_variable_warning(r);
23866: }
23866: private:
23866: Iterator i;
23866:
23866: };
23866:
23866: template<class Iterator>
23866: struct BidirectionalIteratorConcept
23866: : ForwardIteratorConcept<Iterator>
23866: {
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( Convertible< typename BidirectionalIteratorConcept::traversal_category, bidirectional_traversal_tag >)>::failed> boost_concept_check218 __attribute__((__unused__))
23866:
23866:
23866:
23866: ;
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<BidirectionalIteratorConcept>)>::failed> boost_concept_check224 __attribute__((__unused__)); ~BidirectionalIteratorConcept()
23866: {
23866: --i;
23866: (void)i--;
23866: }
23866: private:
23866: Iterator i;
23866:
23866: };
23866:
23866: template<class Iterator>
23866: struct RandomAccessIteratorConcept
23866: : BidirectionalIteratorConcept<Iterator>
23866: {
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( Convertible< typename RandomAccessIteratorConcept::traversal_category, random_access_traversal_tag >)>::failed> boost_concept_check239 __attribute__((__unused__))
23866:
23866:
23866:
23866: ;
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<RandomAccessIteratorConcept>)>::failed> boost_concept_check245 __attribute__((__unused__)); ~RandomAccessIteratorConcept()
23866: {
23866: i += n;
23866: i = i + n;
23866: i = n + i;
23866: i -= n;
23866: i = i - n;
23866: n = i - j;
23866: }
23866: private:
23866: typename BidirectionalIteratorConcept<Iterator>::difference_type n;
23866: Iterator i;
23866: Iterator j;
23866:
23866: };
23866:
23866: }
23866:
23866:
23866: template<class T>
23866: struct SinglePassRangeConcept
23866: {
23866:
23866:
23866:
23866: typedef typename remove_reference<T>::type Rng;
23866:
23866: typedef typename range_iterator<
23866: Rng const
23866: >::type const_iterator;
23866:
23866: typedef typename range_iterator<Rng>::type iterator;
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( range_detail::SinglePassIteratorConcept<iterator>)>::failed> boost_concept_check278 __attribute__((__unused__))
23866: ;
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( range_detail::SinglePassIteratorConcept<const_iterator>)>::failed> boost_concept_check281 __attribute__((__unused__))
23866: ;
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<SinglePassRangeConcept>)>::failed> boost_concept_check284 __attribute__((__unused__)); ~SinglePassRangeConcept()
23866: {
23866:
23866:
23866:
23866: iterator i1 = boost::begin(*m_range);
23866: iterator i2 = boost::end(*m_range);
23866:
23866: boost::ignore_unused_variable_warning(i1);
23866: boost::ignore_unused_variable_warning(i2);
23866:
23866: const_constraints(*m_range);
23866: }
23866:
23866: private:
23866: void const_constraints(const Rng& const_range)
23866: {
23866: const_iterator ci1 = boost::begin(const_range);
23866: const_iterator ci2 = boost::end(const_range);
23866:
23866: boost::ignore_unused_variable_warning(ci1);
23866: boost::ignore_unused_variable_warning(ci2);
23866: }
23866:
23866:
23866:
23866:
23866:
23866: Rng* m_range;
23866:
23866: };
23866:
23866:
23866: template<class T>
23866: struct ForwardRangeConcept : SinglePassRangeConcept<T>
23866: {
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(range_detail::ForwardIteratorConcept<typename ForwardRangeConcept::iterator>)>::failed> boost_concept_check321 __attribute__((__unused__));
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(range_detail::ForwardIteratorConcept<typename ForwardRangeConcept::const_iterator>)>::failed> boost_concept_check322 __attribute__((__unused__));
23866:
23866: };
23866:
23866: template<class T>
23866: struct WriteableRangeConcept
23866: {
23866:
23866: typedef typename range_iterator<T>::type iterator;
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::concepts::usage_requirements<WriteableRangeConcept>)>::failed> boost_concept_check332 __attribute__((__unused__)); ~WriteableRangeConcept()
23866: {
23866: *i = v;
23866: }
23866: private:
23866: iterator i;
23866: typename range_value<T>::type v;
23866:
23866: };
23866:
23866:
23866: template<class T>
23866: struct WriteableForwardRangeConcept
23866: : ForwardRangeConcept<T>
23866: , WriteableRangeConcept<T>
23866: {
23866: };
23866:
23866:
23866: template<class T>
23866: struct BidirectionalRangeConcept : ForwardRangeConcept<T>
23866: {
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(range_detail::BidirectionalIteratorConcept<typename BidirectionalRangeConcept::iterator>)>::failed> boost_concept_check355 __attribute__((__unused__));
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(range_detail::BidirectionalIteratorConcept<typename BidirectionalRangeConcept::const_iterator>)>::failed> boost_concept_check356 __attribute__((__unused__));
23866:
23866: };
23866:
23866:
23866: template<class T>
23866: struct WriteableBidirectionalRangeConcept
23866: : BidirectionalRangeConcept<T>
23866: , WriteableRangeConcept<T>
23866: {
23866: };
23866:
23866:
23866: template<class T>
23866: struct RandomAccessRangeConcept : BidirectionalRangeConcept<T>
23866: {
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(range_detail::RandomAccessIteratorConcept<typename RandomAccessRangeConcept::iterator>)>::failed> boost_concept_check373 __attribute__((__unused__));
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(range_detail::RandomAccessIteratorConcept<typename RandomAccessRangeConcept::const_iterator>)>::failed> boost_concept_check374 __attribute__((__unused__));
23866:
23866: };
23866:
23866:
23866: template<class T>
23866: struct WriteableRandomAccessRangeConcept
23866: : RandomAccessRangeConcept<T>
23866: , WriteableRangeConcept<T>
23866: {
23866: };
23866:
23866: }
23866: # 21 "/usr/include/boost/range/size_type.hpp" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/make_unsigned.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/make_unsigned.hpp" 3 4
23866: #define BOOST_TT_MAKE_UNSIGNED_HPP_INCLUDED
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/is_signed.hpp" 1 3 4
23866: # 11 "/usr/include/boost/type_traits/is_signed.hpp" 3 4
23866: #define BOOST_TT_IS_SIGNED_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/climits" 1 3 4
23866: # 39 "/usr/include/c++/10/climits" 3 4
23866:
23866: # 40 "/usr/include/c++/10/climits" 3
23866:
23866:
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/limits.h" 1 3 4
23866: # 30 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/limits.h" 3 4
23866: #define _GCC_LIMITS_H_
23866:
23866:
23866:
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/syslimits.h" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866: #define _GCC_NEXT_LIMITS_H
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/limits.h" 1 3 4
23866: # 195 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/limits.h" 3 4
23866: # 1 "/usr/include/limits.h" 1 3 4
23866: # 23 "/usr/include/limits.h" 3 4
23866: #define _LIBC_LIMITS_H_ 1
23866:
23866: #define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4
23866: # 31 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 3 4
23866: #undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
23866:
23866:
23866:
23866:
23866:
23866: #undef __GLIBC_USE_LIB_EXT2
23866:
23866:
23866: #define __GLIBC_USE_LIB_EXT2 1
23866: # 49 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 3 4
23866: #undef __GLIBC_USE_IEC_60559_BFP_EXT
23866:
23866: #define __GLIBC_USE_IEC_60559_BFP_EXT 1
23866:
23866:
23866:
23866: #undef __GLIBC_USE_IEC_60559_BFP_EXT_C2X
23866:
23866: #define __GLIBC_USE_IEC_60559_BFP_EXT_C2X 1
23866: # 66 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 3 4
23866: #undef __GLIBC_USE_IEC_60559_FUNCS_EXT
23866:
23866: #define __GLIBC_USE_IEC_60559_FUNCS_EXT 1
23866:
23866:
23866:
23866: #undef __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X
23866:
23866: #define __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X 1
23866:
23866:
23866:
23866:
23866:
23866:
23866: #undef __GLIBC_USE_IEC_60559_TYPES_EXT
23866:
23866: #define __GLIBC_USE_IEC_60559_TYPES_EXT 1
23866: # 27 "/usr/include/limits.h" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: #define MB_LEN_MAX 16
23866: # 132 "/usr/include/limits.h" 3 4
23866: #define LLONG_MIN (-LLONG_MAX-1)
23866:
23866:
23866: #define LLONG_MAX __LONG_LONG_MAX__
23866:
23866:
23866: #define ULLONG_MAX (LLONG_MAX * 2ULL + 1)
23866: # 147 "/usr/include/limits.h" 3 4
23866: #define CHAR_WIDTH 8
23866:
23866:
23866: #define SCHAR_WIDTH 8
23866:
23866:
23866: #define UCHAR_WIDTH 8
23866:
23866:
23866: #define SHRT_WIDTH 16
23866:
23866:
23866: #define USHRT_WIDTH 16
23866:
23866:
23866: #define INT_WIDTH 32
23866:
23866:
23866: #define UINT_WIDTH 32
23866:
23866:
23866: #define LONG_WIDTH __WORDSIZE
23866:
23866:
23866: #define ULONG_WIDTH __WORDSIZE
23866:
23866:
23866: #define LLONG_WIDTH 64
23866:
23866:
23866: #define ULLONG_WIDTH 64
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 1 3 4
23866: # 25 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 3 4
23866: #define _BITS_POSIX1_LIM_H 1
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4
23866: # 18 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 3 4
23866: #define __WORDSIZE 32
23866: #define __WORDSIZE_TIME64_COMPAT32 0
23866: #define __WORDSIZE32_SIZE_ULONG 0
23866: #define __WORDSIZE32_PTRDIFF_LONG 0
23866: # 28 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 2 3 4
23866:
23866:
23866:
23866:
23866: #define _POSIX_AIO_LISTIO_MAX 2
23866:
23866:
23866: #define _POSIX_AIO_MAX 1
23866:
23866:
23866: #define _POSIX_ARG_MAX 4096
23866:
23866:
23866:
23866: #define _POSIX_CHILD_MAX 25
23866:
23866:
23866:
23866:
23866:
23866: #define _POSIX_DELAYTIMER_MAX 32
23866:
23866:
23866:
23866: #define _POSIX_HOST_NAME_MAX 255
23866:
23866:
23866: #define _POSIX_LINK_MAX 8
23866:
23866:
23866: #define _POSIX_LOGIN_NAME_MAX 9
23866:
23866:
23866: #define _POSIX_MAX_CANON 255
23866:
23866:
23866:
23866: #define _POSIX_MAX_INPUT 255
23866:
23866:
23866: #define _POSIX_MQ_OPEN_MAX 8
23866:
23866:
23866: #define _POSIX_MQ_PRIO_MAX 32
23866:
23866:
23866: #define _POSIX_NAME_MAX 14
23866:
23866:
23866:
23866: #define _POSIX_NGROUPS_MAX 8
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define _POSIX_OPEN_MAX 20
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define _POSIX_FD_SETSIZE _POSIX_OPEN_MAX
23866:
23866:
23866:
23866: #define _POSIX_PATH_MAX 256
23866:
23866:
23866: #define _POSIX_PIPE_BUF 512
23866:
23866:
23866:
23866: #define _POSIX_RE_DUP_MAX 255
23866:
23866:
23866: #define _POSIX_RTSIG_MAX 8
23866:
23866:
23866: #define _POSIX_SEM_NSEMS_MAX 256
23866:
23866:
23866: #define _POSIX_SEM_VALUE_MAX 32767
23866:
23866:
23866: #define _POSIX_SIGQUEUE_MAX 32
23866:
23866:
23866: #define _POSIX_SSIZE_MAX 32767
23866:
23866:
23866: #define _POSIX_STREAM_MAX 8
23866:
23866:
23866: #define _POSIX_SYMLINK_MAX 255
23866:
23866:
23866:
23866: #define _POSIX_SYMLOOP_MAX 8
23866:
23866:
23866: #define _POSIX_TIMER_MAX 32
23866:
23866:
23866: #define _POSIX_TTY_NAME_MAX 9
23866:
23866:
23866:
23866: #define _POSIX_TZNAME_MAX 6
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define _POSIX_QLIMIT 1
23866:
23866:
23866:
23866: #define _POSIX_HIWAT _POSIX_PIPE_BUF
23866:
23866:
23866: #define _POSIX_UIO_MAXIOV 16
23866:
23866:
23866:
23866: #define _POSIX_CLOCKRES_MIN 20000000
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/local_lim.h" 1 3 4
23866: # 25 "/usr/include/arm-linux-gnueabihf/bits/local_lim.h" 3 4
23866: #define __undef_NR_OPEN
23866:
23866:
23866: #define __undef_LINK_MAX
23866:
23866:
23866: #define __undef_OPEN_MAX
23866:
23866:
23866: #define __undef_ARG_MAX
23866:
23866:
23866:
23866: # 1 "/usr/include/linux/limits.h" 1 3 4
23866:
23866:
23866: #define _LINUX_LIMITS_H
23866:
23866: #define NR_OPEN 1024
23866:
23866: #define NGROUPS_MAX 65536
23866: #define ARG_MAX 131072
23866: #define LINK_MAX 127
23866: #define MAX_CANON 255
23866: #define MAX_INPUT 255
23866: #define NAME_MAX 255
23866: #define PATH_MAX 4096
23866: #define PIPE_BUF 4096
23866: #define XATTR_NAME_MAX 255
23866: #define XATTR_SIZE_MAX 65536
23866: #define XATTR_LIST_MAX 65536
23866:
23866: #define RTSIG_MAX 32
23866: # 39 "/usr/include/arm-linux-gnueabihf/bits/local_lim.h" 2 3 4
23866:
23866:
23866:
23866: #undef NR_OPEN
23866: #undef __undef_NR_OPEN
23866:
23866:
23866:
23866: #undef LINK_MAX
23866: #undef __undef_LINK_MAX
23866:
23866:
23866:
23866: #undef OPEN_MAX
23866: #undef __undef_OPEN_MAX
23866:
23866:
23866:
23866: #undef ARG_MAX
23866: #undef __undef_ARG_MAX
23866:
23866:
23866:
23866: #define _POSIX_THREAD_KEYS_MAX 128
23866:
23866: #define PTHREAD_KEYS_MAX 1024
23866:
23866:
23866: #define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
23866:
23866: #define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
23866:
23866:
23866: #define _POSIX_THREAD_THREADS_MAX 64
23866:
23866: #undef PTHREAD_THREADS_MAX
23866:
23866:
23866:
23866: #define AIO_PRIO_DELTA_MAX 20
23866:
23866:
23866: #define PTHREAD_STACK_MIN 16384
23866:
23866:
23866: #define DELAYTIMER_MAX 2147483647
23866:
23866:
23866: #define TTY_NAME_MAX 32
23866:
23866:
23866: #define LOGIN_NAME_MAX 256
23866:
23866:
23866: #define HOST_NAME_MAX 64
23866:
23866:
23866: #define MQ_PRIO_MAX 32768
23866:
23866:
23866: #define SEM_VALUE_MAX (2147483647)
23866: # 162 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 2 3 4
23866: # 171 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 3 4
23866: #define SSIZE_MAX INT_MAX
23866: # 184 "/usr/include/limits.h" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/posix2_lim.h" 1 3 4
23866: # 23 "/usr/include/arm-linux-gnueabihf/bits/posix2_lim.h" 3 4
23866: #define _BITS_POSIX2_LIM_H 1
23866:
23866:
23866:
23866: #define _POSIX2_BC_BASE_MAX 99
23866:
23866:
23866: #define _POSIX2_BC_DIM_MAX 2048
23866:
23866:
23866: #define _POSIX2_BC_SCALE_MAX 99
23866:
23866:
23866: #define _POSIX2_BC_STRING_MAX 1000
23866:
23866:
23866:
23866: #define _POSIX2_COLL_WEIGHTS_MAX 2
23866:
23866:
23866:
23866: #define _POSIX2_EXPR_NEST_MAX 32
23866:
23866:
23866: #define _POSIX2_LINE_MAX 2048
23866:
23866:
23866:
23866: #define _POSIX2_RE_DUP_MAX 255
23866:
23866:
23866:
23866: #define _POSIX2_CHARCLASS_NAME_MAX 14
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BC_BASE_MAX _POSIX2_BC_BASE_MAX
23866:
23866:
23866: #define BC_DIM_MAX _POSIX2_BC_DIM_MAX
23866:
23866:
23866: #define BC_SCALE_MAX _POSIX2_BC_SCALE_MAX
23866:
23866:
23866: #define BC_STRING_MAX _POSIX2_BC_STRING_MAX
23866:
23866:
23866: #define COLL_WEIGHTS_MAX 255
23866:
23866:
23866: #define EXPR_NEST_MAX _POSIX2_EXPR_NEST_MAX
23866:
23866:
23866: #define LINE_MAX _POSIX2_LINE_MAX
23866:
23866:
23866: #define CHARCLASS_NAME_MAX 2048
23866:
23866:
23866:
23866: #define RE_DUP_MAX (0x7fff)
23866: # 188 "/usr/include/limits.h" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/xopen_lim.h" 1 3 4
23866: # 30 "/usr/include/arm-linux-gnueabihf/bits/xopen_lim.h" 3 4
23866: #define _XOPEN_LIM_H 1
23866: # 62 "/usr/include/arm-linux-gnueabihf/bits/xopen_lim.h" 3 4
23866: #define _XOPEN_IOV_MAX _POSIX_UIO_MAXIOV
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/bits/uio_lim.h" 1 3 4
23866: # 20 "/usr/include/arm-linux-gnueabihf/bits/uio_lim.h" 3 4
23866: #define _BITS_UIO_LIM_H 1
23866: # 30 "/usr/include/arm-linux-gnueabihf/bits/uio_lim.h" 3 4
23866: #define __IOV_MAX 1024
23866: # 65 "/usr/include/arm-linux-gnueabihf/bits/xopen_lim.h" 2 3 4
23866:
23866: #define IOV_MAX __IOV_MAX
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define NL_ARGMAX _POSIX_ARG_MAX
23866:
23866:
23866: #define NL_LANGMAX _POSIX2_LINE_MAX
23866:
23866:
23866: #define NL_MSGMAX INT_MAX
23866:
23866:
23866:
23866:
23866: #define NL_NMAX INT_MAX
23866:
23866:
23866:
23866: #define NL_SETMAX INT_MAX
23866:
23866:
23866: #define NL_TEXTMAX INT_MAX
23866:
23866:
23866: #define NZERO 20
23866: # 114 "/usr/include/arm-linux-gnueabihf/bits/xopen_lim.h" 3 4
23866: #define WORD_BIT 32
23866: # 134 "/usr/include/arm-linux-gnueabihf/bits/xopen_lim.h" 3 4
23866: #define LONG_BIT 32
23866: # 192 "/usr/include/limits.h" 2 3 4
23866: # 196 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/limits.h" 2 3 4
23866: # 8 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/syslimits.h" 2 3 4
23866: #undef _GCC_NEXT_LIMITS_H
23866: # 35 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/limits.h" 2 3 4
23866: # 60 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/limits.h" 3 4
23866: #define _LIMITS_H___
23866:
23866:
23866: #undef CHAR_BIT
23866: #define CHAR_BIT __CHAR_BIT__
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #undef SCHAR_MIN
23866: #define SCHAR_MIN (-SCHAR_MAX - 1)
23866: #undef SCHAR_MAX
23866: #define SCHAR_MAX __SCHAR_MAX__
23866:
23866:
23866: #undef UCHAR_MAX
23866:
23866:
23866:
23866: #define UCHAR_MAX (SCHAR_MAX * 2 + 1)
23866:
23866:
23866:
23866:
23866: #undef CHAR_MIN
23866:
23866:
23866:
23866: #define CHAR_MIN 0
23866:
23866: #undef CHAR_MAX
23866: #define CHAR_MAX UCHAR_MAX
23866: # 103 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/limits.h" 3 4
23866: #undef SHRT_MIN
23866: #define SHRT_MIN (-SHRT_MAX - 1)
23866: #undef SHRT_MAX
23866: #define SHRT_MAX __SHRT_MAX__
23866:
23866:
23866: #undef USHRT_MAX
23866:
23866:
23866:
23866: #define USHRT_MAX (SHRT_MAX * 2 + 1)
23866:
23866:
23866:
23866: #undef INT_MIN
23866: #define INT_MIN (-INT_MAX - 1)
23866: #undef INT_MAX
23866: #define INT_MAX __INT_MAX__
23866:
23866:
23866: #undef UINT_MAX
23866: #define UINT_MAX (INT_MAX * 2U + 1U)
23866:
23866:
23866:
23866: #undef LONG_MIN
23866: #define LONG_MIN (-LONG_MAX - 1L)
23866: #undef LONG_MAX
23866: #define LONG_MAX __LONG_MAX__
23866:
23866:
23866: #undef ULONG_MAX
23866: #define ULONG_MAX (LONG_MAX * 2UL + 1UL)
23866: # 151 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/limits.h" 3 4
23866: #undef LONG_LONG_MIN
23866: #define LONG_LONG_MIN (-LONG_LONG_MAX - 1LL)
23866: #undef LONG_LONG_MAX
23866: #define LONG_LONG_MAX __LONG_LONG_MAX__
23866:
23866:
23866: #undef ULONG_LONG_MAX
23866: #define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1ULL)
23866: # 43 "/usr/include/c++/10/climits" 2 3
23866:
23866:
23866: #define _GLIBCXX_CLIMITS 1
23866: # 17 "/usr/include/boost/type_traits/is_signed.hpp" 2 3 4
23866:
23866: namespace boost {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace detail{
23866:
23866: template <class T>
23866: struct is_signed_values
23866: {
23866:
23866:
23866:
23866:
23866:
23866: typedef typename remove_cv<T>::type no_cv_t;
23866: static const no_cv_t minus_one = (static_cast<no_cv_t>(-1));
23866: static const no_cv_t zero = (static_cast<no_cv_t>(0));
23866: };
23866:
23866: template <class T>
23866: struct is_signed_helper
23866: {
23866: typedef typename remove_cv<T>::type no_cv_t;
23866: static const bool value = (!(::boost::detail::is_signed_values<T>::minus_one > boost::detail::is_signed_values<T>::zero));
23866: };
23866:
23866: template <bool integral_type>
23866: struct is_signed_select_helper
23866: {
23866: template <class T>
23866: struct rebind
23866: {
23866: typedef is_signed_helper<T> type;
23866: };
23866: };
23866:
23866: template <>
23866: struct is_signed_select_helper<false>
23866: {
23866: template <class T>
23866: struct rebind
23866: {
23866: typedef false_type type;
23866: };
23866: };
23866:
23866: template <class T>
23866: struct is_signed_impl
23866: {
23866: typedef ::boost::detail::is_signed_select_helper< ::boost::is_integral<T>::value || ::boost::is_enum<T>::value> selector;
23866: typedef typename selector::template rebind<T> binder;
23866: typedef typename binder::type type;
23866: static const bool value = type::value;
23866: };
23866:
23866: }
23866:
23866: template <class T> struct is_signed : public integral_constant<bool, boost::detail::is_signed_impl<T>::value> {};
23866: # 91 "/usr/include/boost/type_traits/is_signed.hpp" 3 4
23866: template <> struct is_signed<signed char> : public true_type{};
23866: template <> struct is_signed<const signed char> : public true_type{};
23866: template <> struct is_signed<volatile signed char> : public true_type{};
23866: template <> struct is_signed<const volatile signed char> : public true_type{};
23866: template <> struct is_signed<short> : public true_type{};
23866: template <> struct is_signed<const short> : public true_type{};
23866: template <> struct is_signed<volatile short> : public true_type{};
23866: template <> struct is_signed<const volatile short> : public true_type{};
23866: template <> struct is_signed<int> : public true_type{};
23866: template <> struct is_signed<const int> : public true_type{};
23866: template <> struct is_signed<volatile int> : public true_type{};
23866: template <> struct is_signed<const volatile int> : public true_type{};
23866: template <> struct is_signed<long> : public true_type{};
23866: template <> struct is_signed<const long> : public true_type{};
23866: template <> struct is_signed<volatile long> : public true_type{};
23866: template <> struct is_signed<const volatile long> : public true_type{};
23866:
23866: template <> struct is_signed<unsigned char> : public false_type{};
23866: template <> struct is_signed<const unsigned char> : public false_type{};
23866: template <> struct is_signed<volatile unsigned char> : public false_type{};
23866: template <> struct is_signed<const volatile unsigned char> : public false_type{};
23866: template <> struct is_signed<unsigned short> : public false_type{};
23866: template <> struct is_signed<const unsigned short> : public false_type{};
23866: template <> struct is_signed<volatile unsigned short> : public false_type{};
23866: template <> struct is_signed<const volatile unsigned short> : public false_type{};
23866: template <> struct is_signed<unsigned int> : public false_type{};
23866: template <> struct is_signed<const unsigned int> : public false_type{};
23866: template <> struct is_signed<volatile unsigned int> : public false_type{};
23866: template <> struct is_signed<const volatile unsigned int> : public false_type{};
23866: template <> struct is_signed<unsigned long> : public false_type{};
23866: template <> struct is_signed<const unsigned long> : public false_type{};
23866: template <> struct is_signed<volatile unsigned long> : public false_type{};
23866: template <> struct is_signed<const volatile unsigned long> : public false_type{};
23866:
23866: template <> struct is_signed< ::boost::long_long_type> : public true_type{};
23866: template <> struct is_signed<const ::boost::long_long_type> : public true_type{};
23866: template <> struct is_signed<volatile ::boost::long_long_type> : public true_type{};
23866: template <> struct is_signed<const volatile ::boost::long_long_type> : public true_type{};
23866:
23866: template <> struct is_signed< ::boost::ulong_long_type> : public false_type{};
23866: template <> struct is_signed<const ::boost::ulong_long_type> : public false_type{};
23866: template <> struct is_signed<volatile ::boost::ulong_long_type> : public false_type{};
23866: template <> struct is_signed<const volatile ::boost::ulong_long_type> : public false_type{};
23866: # 142 "/usr/include/boost/type_traits/is_signed.hpp" 3 4
23866: template <> struct is_signed<char> : public false_type{};
23866: template <> struct is_signed<const char> : public false_type{};
23866: template <> struct is_signed<volatile char> : public false_type{};
23866: template <> struct is_signed<const volatile char> : public false_type{};
23866: # 155 "/usr/include/boost/type_traits/is_signed.hpp" 3 4
23866: template <> struct is_signed<wchar_t> : public false_type{};
23866: template <> struct is_signed<const wchar_t> : public false_type{};
23866: template <> struct is_signed<volatile wchar_t> : public false_type{};
23866: template <> struct is_signed<const volatile wchar_t> : public false_type{};
23866:
23866:
23866: }
23866: # 15 "/usr/include/boost/type_traits/make_unsigned.hpp" 2 3 4
23866: # 1 "/usr/include/boost/type_traits/is_unsigned.hpp" 1 3 4
23866: # 11 "/usr/include/boost/type_traits/is_unsigned.hpp" 3 4
23866: #define BOOST_TT_IS_UNSIGNED_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/climits" 1 3 4
23866: # 39 "/usr/include/c++/10/climits" 3 4
23866:
23866: # 40 "/usr/include/c++/10/climits" 3
23866:
23866:
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/limits.h" 1 3 4
23866: # 43 "/usr/include/c++/10/climits" 2 3
23866: # 18 "/usr/include/boost/type_traits/is_unsigned.hpp" 2 3 4
23866:
23866: namespace boost {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace detail{
23866:
23866: template <class T>
23866: struct is_unsigned_values
23866: {
23866:
23866:
23866:
23866:
23866:
23866: typedef typename remove_cv<T>::type no_cv_t;
23866: static const no_cv_t minus_one = (static_cast<no_cv_t>(-1));
23866: static const no_cv_t zero = (static_cast<no_cv_t>(0));
23866: };
23866:
23866: template <class T>
23866: struct is_ununsigned_helper
23866: {
23866: static const bool value = (::boost::detail::is_unsigned_values<T>::minus_one > ::boost::detail::is_unsigned_values<T>::zero);
23866: };
23866:
23866: template <bool integral_type>
23866: struct is_unsigned_select_helper
23866: {
23866: template <class T>
23866: struct rebind
23866: {
23866: typedef is_ununsigned_helper<T> type;
23866: };
23866: };
23866:
23866: template <>
23866: struct is_unsigned_select_helper<false>
23866: {
23866: template <class T>
23866: struct rebind
23866: {
23866: typedef false_type type;
23866: };
23866: };
23866:
23866: template <class T>
23866: struct is_unsigned
23866: {
23866: typedef ::boost::detail::is_unsigned_select_helper< ::boost::is_integral<T>::value || ::boost::is_enum<T>::value > selector;
23866: typedef typename selector::template rebind<T> binder;
23866: typedef typename binder::type type;
23866: static const bool value = type::value;
23866: };
23866:
23866: }
23866:
23866: template <class T> struct is_unsigned : public integral_constant<bool, boost::detail::is_unsigned<T>::value> {};
23866: # 91 "/usr/include/boost/type_traits/is_unsigned.hpp" 3 4
23866: template <> struct is_unsigned<unsigned char> : public true_type{};
23866: template <> struct is_unsigned<const unsigned char> : public true_type{};
23866: template <> struct is_unsigned<volatile unsigned char> : public true_type{};
23866: template <> struct is_unsigned<const volatile unsigned char> : public true_type{};
23866: template <> struct is_unsigned<unsigned short> : public true_type{};
23866: template <> struct is_unsigned<const unsigned short> : public true_type{};
23866: template <> struct is_unsigned<volatile unsigned short> : public true_type{};
23866: template <> struct is_unsigned<const volatile unsigned short> : public true_type{};
23866: template <> struct is_unsigned<unsigned int> : public true_type{};
23866: template <> struct is_unsigned<const unsigned int> : public true_type{};
23866: template <> struct is_unsigned<volatile unsigned int> : public true_type{};
23866: template <> struct is_unsigned<const volatile unsigned int> : public true_type{};
23866: template <> struct is_unsigned<unsigned long> : public true_type{};
23866: template <> struct is_unsigned<const unsigned long> : public true_type{};
23866: template <> struct is_unsigned<volatile unsigned long> : public true_type{};
23866: template <> struct is_unsigned<const volatile unsigned long> : public true_type{};
23866:
23866: template <> struct is_unsigned<signed char> : public false_type{};
23866: template <> struct is_unsigned<const signed char> : public false_type{};
23866: template <> struct is_unsigned<volatile signed char> : public false_type{};
23866: template <> struct is_unsigned<const volatile signed char> : public false_type{};
23866: template <> struct is_unsigned< short> : public false_type{};
23866: template <> struct is_unsigned<const short> : public false_type{};
23866: template <> struct is_unsigned<volatile short> : public false_type{};
23866: template <> struct is_unsigned<const volatile short> : public false_type{};
23866: template <> struct is_unsigned< int> : public false_type{};
23866: template <> struct is_unsigned<const int> : public false_type{};
23866: template <> struct is_unsigned<volatile int> : public false_type{};
23866: template <> struct is_unsigned<const volatile int> : public false_type{};
23866: template <> struct is_unsigned< long> : public false_type{};
23866: template <> struct is_unsigned<const long> : public false_type{};
23866: template <> struct is_unsigned<volatile long> : public false_type{};
23866: template <> struct is_unsigned<const volatile long> : public false_type{};
23866:
23866: template <> struct is_unsigned< ::boost::ulong_long_type> : public true_type{};
23866: template <> struct is_unsigned<const ::boost::ulong_long_type> : public true_type{};
23866: template <> struct is_unsigned<volatile ::boost::ulong_long_type> : public true_type{};
23866: template <> struct is_unsigned<const volatile ::boost::ulong_long_type> : public true_type{};
23866:
23866: template <> struct is_unsigned< ::boost::long_long_type> : public false_type{};
23866: template <> struct is_unsigned<const ::boost::long_long_type> : public false_type{};
23866: template <> struct is_unsigned<volatile ::boost::long_long_type> : public false_type{};
23866: template <> struct is_unsigned<const volatile ::boost::long_long_type> : public false_type{};
23866:
23866:
23866:
23866: template <> struct is_unsigned<char> : public true_type{};
23866: template <> struct is_unsigned<const char> : public true_type{};
23866: template <> struct is_unsigned<volatile char> : public true_type{};
23866: template <> struct is_unsigned<const volatile char> : public true_type{};
23866: # 150 "/usr/include/boost/type_traits/is_unsigned.hpp" 3 4
23866: template <> struct is_unsigned<wchar_t> : public true_type{};
23866: template <> struct is_unsigned<const wchar_t> : public true_type{};
23866: template <> struct is_unsigned<volatile wchar_t> : public true_type{};
23866: template <> struct is_unsigned<const volatile wchar_t> : public true_type{};
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 16 "/usr/include/boost/type_traits/make_unsigned.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/add_volatile.hpp" 1 3 4
23866: # 11 "/usr/include/boost/type_traits/add_volatile.hpp" 3 4
23866: #define BOOST_TT_ADD_VOLATILE_HPP_INCLUDED
23866:
23866:
23866:
23866: namespace boost {
23866: # 30 "/usr/include/boost/type_traits/add_volatile.hpp" 3 4
23866: template <class T> struct add_volatile{ typedef T volatile type; };
23866:
23866:
23866:
23866:
23866:
23866: template <class T> struct add_volatile<T&>{ typedef T& type; };
23866:
23866:
23866:
23866: template <class T> using add_volatile_t = typename add_volatile<T>::type;
23866:
23866:
23866:
23866: }
23866: # 23 "/usr/include/boost/type_traits/make_unsigned.hpp" 2 3 4
23866:
23866:
23866: namespace boost {
23866:
23866: template <class T>
23866: struct make_unsigned
23866: {
23866: private:
23866: static_assert((::boost::is_integral<T>::value || ::boost::is_enum<T>::value), "The template argument to make_unsigned must be an integer or enum type.");
23866: static_assert((! ::boost::is_same<typename remove_cv<T>::type, bool>::value), "The template argument to make_unsigned must not be the type bool");
23866:
23866: typedef typename remove_cv<T>::type t_no_cv;
23866: typedef typename conditional<
23866: (::boost::is_unsigned<T>::value && ::boost::is_integral<T>::value
23866: && ! ::boost::is_same<t_no_cv, char>::value
23866: && ! ::boost::is_same<t_no_cv, wchar_t>::value
23866: && ! ::boost::is_same<t_no_cv, bool>::value),
23866: T,
23866: typename conditional<
23866: (::boost::is_integral<T>::value
23866: && ! ::boost::is_same<t_no_cv, char>::value
23866: && ! ::boost::is_same<t_no_cv, wchar_t>::value
23866: && ! ::boost::is_same<t_no_cv, bool>::value),
23866: typename conditional<
23866: is_same<t_no_cv, signed char>::value,
23866: unsigned char,
23866: typename conditional<
23866: is_same<t_no_cv, short>::value,
23866: unsigned short,
23866: typename conditional<
23866: is_same<t_no_cv, int>::value,
23866: unsigned int,
23866: typename conditional<
23866: is_same<t_no_cv, long>::value,
23866: unsigned long,
23866: # 66 "/usr/include/boost/type_traits/make_unsigned.hpp" 3 4
23866: boost::ulong_long_type
23866:
23866:
23866:
23866:
23866:
23866:
23866: >::type
23866: >::type
23866: >::type
23866: >::type,
23866:
23866: typename conditional<
23866: sizeof(t_no_cv) == sizeof(unsigned char),
23866: unsigned char,
23866: typename conditional<
23866: sizeof(t_no_cv) == sizeof(unsigned short),
23866: unsigned short,
23866: typename conditional<
23866: sizeof(t_no_cv) == sizeof(unsigned int),
23866: unsigned int,
23866: typename conditional<
23866: sizeof(t_no_cv) == sizeof(unsigned long),
23866: unsigned long,
23866: # 98 "/usr/include/boost/type_traits/make_unsigned.hpp" 3 4
23866: boost::ulong_long_type
23866:
23866:
23866:
23866:
23866:
23866:
23866: >::type
23866: >::type
23866: >::type
23866: >::type
23866: >::type
23866: >::type base_integer_type;
23866:
23866:
23866: typedef typename conditional<
23866: is_const<T>::value,
23866: typename add_const<base_integer_type>::type,
23866: base_integer_type
23866: >::type const_base_integer_type;
23866: public:
23866:
23866: typedef typename conditional<
23866: is_volatile<T>::value,
23866: typename add_volatile<const_base_integer_type>::type,
23866: const_base_integer_type
23866: >::type type;
23866: };
23866:
23866:
23866:
23866: template <class T> using make_unsigned_t = typename make_unsigned<T>::type;
23866:
23866:
23866:
23866: }
23866: # 25 "/usr/include/boost/range/size_type.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: namespace boost
23866: {
23866: namespace detail
23866: {
23866:
23866:
23866:
23866:
23866:
23866: template<typename T>
23866: class has_size_type
23866: {
23866: typedef char no_type;
23866: struct yes_type { char dummy[2]; };
23866:
23866: template<typename C>
23866: static yes_type test(typename C::size_type x);
23866:
23866: template<typename C>
23866: static no_type test(...);
23866:
23866: public:
23866: static const bool value = sizeof(test<T>(0)) == sizeof(yes_type);
23866: };
23866:
23866: template<typename C, typename Enabler=void>
23866: struct range_size_
23866: {
23866: typedef typename make_unsigned<
23866: typename range_difference<C>::type
23866: >::type type;
23866: };
23866:
23866: template<typename C>
23866: struct range_size_<
23866: C,
23866: typename ::boost::enable_if<has_size_type<C>, void>::type
23866: >
23866: {
23866: typedef typename C::size_type type;
23866: };
23866:
23866: template<typename C, bool B = range_detail::has_type< range_iterator<C> >::value>
23866: struct range_size
23866: { };
23866:
23866: template<typename C>
23866: struct range_size<C, true>
23866: : range_size_<C>
23866: { };
23866: }
23866:
23866: template< class T >
23866: struct range_size :
23866: detail::range_size<T>
23866: { };
23866:
23866: }
23866: # 22 "/usr/include/boost/range/size.hpp" 2 3 4
23866: # 1 "/usr/include/boost/range/detail/has_member_size.hpp" 1 3 4
23866: # 12 "/usr/include/boost/range/detail/has_member_size.hpp" 3 4
23866: #define BOOST_RANGE_DETAIL_HAS_MEMBER_SIZE_HPP
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/cstdint.hpp" 1 3 4
23866: # 24 "/usr/include/boost/cstdint.hpp" 3 4
23866: #define BOOST_CSTDINT_HPP
23866: # 46 "/usr/include/boost/cstdint.hpp" 3 4
23866:
23866: # 47 "/usr/include/boost/cstdint.hpp" 3
23866: # 114 "/usr/include/boost/cstdint.hpp" 3
23866: namespace boost
23866: {
23866:
23866: using ::int8_t;
23866: using ::int_least8_t;
23866: using ::int_fast8_t;
23866: using ::uint8_t;
23866: using ::uint_least8_t;
23866: using ::uint_fast8_t;
23866:
23866: using ::int16_t;
23866: using ::int_least16_t;
23866: using ::int_fast16_t;
23866: using ::uint16_t;
23866: using ::uint_least16_t;
23866: using ::uint_fast16_t;
23866:
23866: using ::int32_t;
23866: using ::int_least32_t;
23866: using ::int_fast32_t;
23866: using ::uint32_t;
23866: using ::uint_least32_t;
23866: using ::uint_fast32_t;
23866:
23866:
23866:
23866: using ::int64_t;
23866: using ::int_least64_t;
23866: using ::int_fast64_t;
23866: using ::uint64_t;
23866: using ::uint_least64_t;
23866: using ::uint_fast64_t;
23866:
23866:
23866:
23866: using ::intmax_t;
23866: using ::uintmax_t;
23866:
23866: }
23866: # 387 "/usr/include/boost/cstdint.hpp" 3
23866: namespace boost {
23866: using ::intptr_t;
23866: using ::uintptr_t;
23866: }
23866: #define BOOST_HAS_INTPTR_T
23866: # 19 "/usr/include/boost/range/detail/has_member_size.hpp" 2 3 4
23866:
23866: namespace boost
23866: {
23866: namespace range_detail
23866: {
23866:
23866: template<class T>
23866: class has_member_size_impl
23866: {
23866: private:
23866: template<class U, U>
23866: class check
23866: {
23866: };
23866:
23866: template<class C>
23866: static boost::uint8_t f(check<std::size_t(C::*)(void) const, &C::size>*);
23866:
23866: template<class C>
23866: static boost::uint16_t f(...);
23866:
23866: public:
23866: static const bool value =
23866: (sizeof(f<T>(0)) == sizeof(boost::uint8_t));
23866:
23866: typedef typename mpl::if_c<
23866: (sizeof(f<T>(0)) == sizeof(boost::uint8_t)),
23866: mpl::true_,
23866: mpl::false_
23866: >::type type;
23866: };
23866:
23866: template<class T>
23866: struct has_member_size
23866: {
23866: typedef typename mpl::and_<
23866: typename is_class<T>::type,
23866: typename has_member_size_impl<const T>::type
23866: >::type type;
23866:
23866: static const bool value =
23866: is_class<T>::value && has_member_size_impl<const T>::value;
23866: };
23866:
23866: }
23866: }
23866: # 23 "/usr/include/boost/range/size.hpp" 2 3 4
23866: # 1 "/usr/include/boost/assert.hpp" 1 3 4
23866: # 32 "/usr/include/boost/assert.hpp" 3 4
23866: #undef BOOST_ASSERT
23866: #undef BOOST_ASSERT_MSG
23866: #undef BOOST_ASSERT_IS_VOID
23866: # 58 "/usr/include/boost/assert.hpp" 3 4
23866: # 1 "/usr/include/assert.h" 1 3 4
23866: # 24 "/usr/include/assert.h" 3 4
23866: #undef _ASSERT_H
23866: #undef assert
23866: #undef __ASSERT_VOID_CAST
23866:
23866:
23866: #undef assert_perror
23866:
23866:
23866:
23866:
23866: #define _ASSERT_H 1
23866:
23866:
23866:
23866: #define __ASSERT_VOID_CAST static_cast<void>
23866: # 92 "/usr/include/assert.h" 3 4
23866: #define assert(expr) (static_cast <bool> (expr) ? void (0) : __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 117 "/usr/include/assert.h" 3 4
23866: #define assert_perror(errnum) (!(errnum) ? __ASSERT_VOID_CAST (0) : __assert_perror_fail ((errnum), __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 129 "/usr/include/assert.h" 3 4
23866: #define __ASSERT_FUNCTION __extension__ __PRETTY_FUNCTION__
23866: # 59 "/usr/include/boost/assert.hpp" 2 3 4
23866:
23866: #define BOOST_ASSERT(expr) assert(expr)
23866: #define BOOST_ASSERT_MSG(expr,msg) assert((expr)&&(msg))
23866: # 72 "/usr/include/boost/assert.hpp" 3 4
23866: #undef BOOST_VERIFY
23866: #undef BOOST_VERIFY_MSG
23866: # 82 "/usr/include/boost/assert.hpp" 3 4
23866: #define BOOST_VERIFY(expr) BOOST_ASSERT(expr)
23866: #define BOOST_VERIFY_MSG(expr,msg) BOOST_ASSERT_MSG(expr,msg)
23866: # 24 "/usr/include/boost/range/size.hpp" 2 3 4
23866: # 1 "/usr/include/boost/cstdint.hpp" 1 3 4
23866: # 25 "/usr/include/boost/range/size.hpp" 2 3 4
23866: # 1 "/usr/include/boost/utility.hpp" 1 3 4
23866: # 10 "/usr/include/boost/utility.hpp" 3 4
23866: #define BOOST_UTILITY_HPP
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/utility/base_from_member.hpp" 1 3 4
23866: # 11 "/usr/include/boost/utility/base_from_member.hpp" 3 4
23866: #define BOOST_UTILITY_BASE_FROM_MEMBER_HPP
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/repetition/enum_binary_params.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/repetition/enum_binary_params.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_REPETITION_ENUM_BINARY_PARAMS_HPP
23866: # 25 "/usr/include/boost/preprocessor/repetition/enum_binary_params.hpp" 3 4
23866: #define BOOST_PP_ENUM_BINARY_PARAMS(count,p1,p2) BOOST_PP_REPEAT(count, BOOST_PP_ENUM_BINARY_PARAMS_M, (p1, p2))
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_ENUM_BINARY_PARAMS_M(z,n,pp) BOOST_PP_ENUM_BINARY_PARAMS_M_IM(z, n, BOOST_PP_TUPLE_REM_2 pp)
23866: #define BOOST_PP_ENUM_BINARY_PARAMS_M_IM(z,n,im) BOOST_PP_ENUM_BINARY_PARAMS_M_I(z, n, im)
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_ENUM_BINARY_PARAMS_M_I(z,n,p1,p2) BOOST_PP_ENUM_BINARY_PARAMS_M_II(z, n, p1, p2)
23866: #define BOOST_PP_ENUM_BINARY_PARAMS_M_II(z,n,p1,p2) BOOST_PP_COMMA_IF(n) p1 ## n p2 ## n
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_ENUM_BINARY_PARAMS_Z(z,count,p1,p2) BOOST_PP_REPEAT_ ## z(count, BOOST_PP_ENUM_BINARY_PARAMS_M, (p1, p2))
23866: # 16 "/usr/include/boost/utility/base_from_member.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/preprocessor/repetition/repeat_from_to.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/repetition/repeat_from_to.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_REPETITION_REPEAT_FROM_TO_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/detail/auto_rec.hpp" 1 3 4
23866: # 24 "/usr/include/boost/preprocessor/repetition/repeat_from_to.hpp" 2 3 4
23866: # 34 "/usr/include/boost/preprocessor/repetition/repeat_from_to.hpp" 3 4
23866: #define BOOST_PP_REPEAT_FROM_TO BOOST_PP_CAT(BOOST_PP_REPEAT_FROM_TO_, BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4))
23866:
23866: #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)
23866: #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)
23866: #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)
23866: #define BOOST_PP_REPEAT_FROM_TO_4(f,l,m,dt) BOOST_PP_ERROR(0x0003)
23866:
23866: #define BOOST_PP_REPEAT_FROM_TO_1ST BOOST_PP_REPEAT_FROM_TO_1
23866: #define BOOST_PP_REPEAT_FROM_TO_2ND BOOST_PP_REPEAT_FROM_TO_2
23866: #define BOOST_PP_REPEAT_FROM_TO_3RD BOOST_PP_REPEAT_FROM_TO_3
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_REPEAT_FROM_TO_D BOOST_PP_CAT(BOOST_PP_REPEAT_FROM_TO_D_, BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4))
23866:
23866:
23866: #define BOOST_PP_REPEAT_FROM_TO_D_1(d,f,l,m,dt) BOOST_PP_REPEAT_1(BOOST_PP_SUB_D(d, l, f), BOOST_PP_REPEAT_FROM_TO_M_1, (d, f, m, dt))
23866: #define BOOST_PP_REPEAT_FROM_TO_D_2(d,f,l,m,dt) BOOST_PP_REPEAT_2(BOOST_PP_SUB_D(d, l, f), BOOST_PP_REPEAT_FROM_TO_M_2, (d, f, m, dt))
23866: #define BOOST_PP_REPEAT_FROM_TO_D_3(d,f,l,m,dt) BOOST_PP_REPEAT_3(BOOST_PP_SUB_D(d, l, f), BOOST_PP_REPEAT_FROM_TO_M_3, (d, f, m, dt))
23866: # 67 "/usr/include/boost/preprocessor/repetition/repeat_from_to.hpp" 3 4
23866: #define BOOST_PP_REPEAT_FROM_TO_M_1(z,n,dfmd) BOOST_PP_REPEAT_FROM_TO_M_1_IM(z, n, BOOST_PP_TUPLE_REM_4 dfmd)
23866: #define BOOST_PP_REPEAT_FROM_TO_M_2(z,n,dfmd) BOOST_PP_REPEAT_FROM_TO_M_2_IM(z, n, BOOST_PP_TUPLE_REM_4 dfmd)
23866: #define BOOST_PP_REPEAT_FROM_TO_M_3(z,n,dfmd) BOOST_PP_REPEAT_FROM_TO_M_3_IM(z, n, BOOST_PP_TUPLE_REM_4 dfmd)
23866: #define BOOST_PP_REPEAT_FROM_TO_M_1_IM(z,n,im) BOOST_PP_REPEAT_FROM_TO_M_1_I(z, n, im)
23866: #define BOOST_PP_REPEAT_FROM_TO_M_2_IM(z,n,im) BOOST_PP_REPEAT_FROM_TO_M_2_I(z, n, im)
23866: #define BOOST_PP_REPEAT_FROM_TO_M_3_IM(z,n,im) BOOST_PP_REPEAT_FROM_TO_M_3_I(z, n, im)
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_REPEAT_FROM_TO_M_1_I(z,n,d,f,m,dt) BOOST_PP_REPEAT_FROM_TO_M_1_II(z, BOOST_PP_ADD_D(d, n, f), m, dt)
23866: #define BOOST_PP_REPEAT_FROM_TO_M_2_I(z,n,d,f,m,dt) BOOST_PP_REPEAT_FROM_TO_M_2_II(z, BOOST_PP_ADD_D(d, n, f), m, dt)
23866: #define BOOST_PP_REPEAT_FROM_TO_M_3_I(z,n,d,f,m,dt) BOOST_PP_REPEAT_FROM_TO_M_3_II(z, BOOST_PP_ADD_D(d, n, f), m, dt)
23866:
23866: #define BOOST_PP_REPEAT_FROM_TO_M_1_II(z,n,m,dt) m(z, n, dt)
23866: #define BOOST_PP_REPEAT_FROM_TO_M_2_II(z,n,m,dt) m(z, n, dt)
23866: #define BOOST_PP_REPEAT_FROM_TO_M_3_II(z,n,m,dt) m(z, n, dt)
23866: # 18 "/usr/include/boost/utility/base_from_member.hpp" 2 3 4
23866: # 37 "/usr/include/boost/utility/base_from_member.hpp" 3 4
23866: #define BOOST_BASE_FROM_MEMBER_MAX_ARITY 10
23866: # 50 "/usr/include/boost/utility/base_from_member.hpp" 3 4
23866: #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) ) {}
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost
23866: {
23866:
23866: namespace detail
23866: {
23866: # 72 "/usr/include/boost/utility/base_from_member.hpp" 3 4
23866: template < typename T >
23866: struct remove_cv_ref
23866: {
23866: typedef typename ::boost::remove_cv<typename
23866: ::boost::remove_reference<T>::type>::type type;
23866:
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template < typename T, typename U >
23866: struct is_related
23866: : public ::boost::is_same<
23866: typename ::boost::detail::remove_cv_ref<T>::type,
23866: typename ::boost::detail::remove_cv_ref<U>::type >
23866: {};
23866: # 100 "/usr/include/boost/utility/base_from_member.hpp" 3 4
23866: template<typename ...T>
23866: struct enable_if_unrelated
23866: : public ::boost::enable_if_c<true>
23866: {};
23866:
23866: template<typename T, typename U, typename ...U2>
23866: struct enable_if_unrelated<T, U, U2...>
23866: : public ::boost::disable_if< ::boost::detail::is_related<T, U> >
23866: {};
23866:
23866:
23866: }
23866: # 123 "/usr/include/boost/utility/base_from_member.hpp" 3 4
23866: template < typename MemberType, int UniqueID = 0 >
23866: class base_from_member
23866: {
23866: protected:
23866: MemberType member;
23866:
23866:
23866:
23866:
23866:
23866: template <typename ...T, typename EnableIf = typename
23866: ::boost::detail::enable_if_unrelated<base_from_member, T...>::type>
23866: explicit constexpr base_from_member( T&& ...x )
23866: noexcept((noexcept((::new ((void*) 0) MemberType( static_cast<T&&>(x)... )))))
23866:
23866: : member( static_cast<T&&>(x)... )
23866: {}
23866: # 150 "/usr/include/boost/utility/base_from_member.hpp" 3 4
23866: };
23866:
23866: template < typename MemberType, int UniqueID >
23866: class base_from_member<MemberType&, UniqueID>
23866: {
23866: protected:
23866: MemberType& member;
23866:
23866: explicit constexpr base_from_member( MemberType& x )
23866: noexcept
23866: : member( x )
23866: {}
23866:
23866: };
23866:
23866: }
23866:
23866:
23866:
23866: #undef BOOST_PRIVATE_CTR_DEF
23866: # 16 "/usr/include/boost/utility.hpp" 2 3 4
23866: # 1 "/usr/include/boost/utility/binary.hpp" 1 3 4
23866: # 10 "/usr/include/boost/utility/binary.hpp" 3 4
23866: #define BOOST_UTILITY_BINARY_HPP
23866: # 26 "/usr/include/boost/utility/binary.hpp" 3 4
23866: # 1 "/usr/include/boost/preprocessor/control/deduce_d.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/control/deduce_d.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_CONTROL_DEDUCE_D_HPP
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/detail/auto_rec.hpp" 1 3 4
23866: # 17 "/usr/include/boost/preprocessor/control/deduce_d.hpp" 2 3 4
23866:
23866:
23866:
23866: #define BOOST_PP_DEDUCE_D() BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256)
23866: # 27 "/usr/include/boost/utility/binary.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/seq/cat.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/seq/cat.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_SEQ_CAT_HPP
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/seq/fold_left.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/seq/fold_left.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_SEQ_FOLD_LEFT_HPP
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/detail/auto_rec.hpp" 1 3 4
23866: # 20 "/usr/include/boost/preprocessor/seq/fold_left.hpp" 2 3 4
23866: # 29 "/usr/include/boost/preprocessor/seq/fold_left.hpp" 3 4
23866: #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))
23866: #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))
23866: #define BOOST_PP_SEQ_FOLD_LEFT_O(s,st,_) st
23866:
23866: #define BOOST_PP_SEQ_FOLD_LEFT_257(op,st,ss) BOOST_PP_ERROR(0x0005)
23866: #define BOOST_PP_SEQ_FOLD_LEFT_I_257(op,st,ss,sz) BOOST_PP_ERROR(0x0005)
23866:
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_NIL 1
23866:
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_2(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_3(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_4(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_5(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_6(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_7(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_8(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_9(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_10(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_11(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_12(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_13(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_14(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_15(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_16(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_17(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_18(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_19(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_20(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_21(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_22(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_23(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_24(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_25(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_26(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_27(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_28(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_29(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_30(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_31(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_32(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_33(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_34(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_35(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_36(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_37(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_38(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_39(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_40(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_41(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_42(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_43(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_44(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_45(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_46(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_47(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_48(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_49(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_50(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_51(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_52(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_53(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_54(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_55(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_56(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_57(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_58(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_59(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_60(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_61(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_62(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_63(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_64(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_65(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_66(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_67(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_68(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_69(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_70(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_71(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_72(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_73(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_74(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_75(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_76(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_77(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_78(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_79(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_80(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_81(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_82(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_83(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_84(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_85(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_86(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_87(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_88(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_89(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_90(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_91(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_92(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_93(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_94(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_95(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_96(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_97(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_98(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_99(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_100(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_101(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_102(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_103(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_104(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_105(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_106(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_107(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_108(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_109(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_110(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_111(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_112(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_113(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_114(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_115(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_116(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_117(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_118(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_119(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_120(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_121(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_122(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_123(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_124(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_125(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_126(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_127(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_128(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_129(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_130(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_131(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_132(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_133(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_134(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_135(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_136(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_137(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_138(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_139(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_140(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_141(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_142(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_143(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_144(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_145(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_146(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_147(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_148(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_149(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_150(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_151(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_152(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_153(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_154(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_155(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_156(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_157(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_158(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_159(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_160(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_161(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_162(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_163(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_164(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_165(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_166(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_167(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_168(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_169(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_170(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_171(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_172(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_173(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_174(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_175(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_176(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_177(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_178(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_179(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_180(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_181(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_182(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_183(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_184(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_185(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_186(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_187(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_188(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_189(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_190(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_191(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_192(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_193(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_194(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_195(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_196(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_197(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_198(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_199(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_200(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_201(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_202(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_203(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_204(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_205(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_206(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_207(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_208(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_209(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_210(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_211(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_212(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_213(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_214(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_215(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_216(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_217(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_218(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_219(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_220(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_221(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_222(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_223(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_224(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_225(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_226(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_227(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_228(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_229(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_230(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_231(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_232(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_233(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_234(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_235(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_236(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_237(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_238(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_239(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_240(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_241(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_242(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_243(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_244(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_245(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_246(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_247(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_248(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_249(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_250(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_251(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_252(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_253(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_254(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_255(op,st,ss,sz) 0
23866: #define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_256(op,st,ss,sz) 0
23866:
23866: #define BOOST_PP_SEQ_FOLD_LEFT_F(op,st,ss,sz) st
23866:
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866:
23866:
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: #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))
23866: # 19 "/usr/include/boost/preprocessor/seq/cat.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_SEQ_CAT(seq) BOOST_PP_IF( BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq)), BOOST_PP_SEQ_CAT_I, BOOST_PP_SEQ_HEAD )(seq)
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_SEQ_CAT_I(seq) BOOST_PP_SEQ_FOLD_LEFT(BOOST_PP_SEQ_CAT_O, BOOST_PP_SEQ_HEAD(seq), BOOST_PP_SEQ_TAIL(seq))
23866:
23866: #define BOOST_PP_SEQ_CAT_O(s,st,elem) BOOST_PP_SEQ_CAT_O_I(st, elem)
23866: #define BOOST_PP_SEQ_CAT_O_I(a,b) a ## b
23866:
23866:
23866:
23866: #define BOOST_PP_SEQ_CAT_S(s,seq) BOOST_PP_IF( BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq)), BOOST_PP_SEQ_CAT_S_I_A, BOOST_PP_SEQ_CAT_S_I_B )(s, seq)
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_SEQ_CAT_S_I_A(s,seq) BOOST_PP_SEQ_FOLD_LEFT_ ## s(BOOST_PP_SEQ_CAT_O, BOOST_PP_SEQ_HEAD(seq), BOOST_PP_SEQ_TAIL(seq))
23866: #define BOOST_PP_SEQ_CAT_S_I_B(s,seq) BOOST_PP_SEQ_HEAD(seq)
23866: # 30 "/usr/include/boost/utility/binary.hpp" 2 3 4
23866: # 1 "/usr/include/boost/preprocessor/seq/transform.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/seq/transform.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_SEQ_TRANSFORM_HPP
23866: # 24 "/usr/include/boost/preprocessor/seq/transform.hpp" 3 4
23866: #define BOOST_PP_SEQ_TRANSFORM(op,data,seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT(BOOST_PP_SEQ_TRANSFORM_O, (op, data, (nil)), seq)))
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_SEQ_TRANSFORM_O(s,state,elem) BOOST_PP_SEQ_TRANSFORM_O_IM(s, BOOST_PP_TUPLE_REM_3 state, elem)
23866: #define BOOST_PP_SEQ_TRANSFORM_O_IM(s,im,elem) BOOST_PP_SEQ_TRANSFORM_O_I(s, im, elem)
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_SEQ_TRANSFORM_O_I(s,op,data,res,elem) (op, data, res (op(s, data, elem)))
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_SEQ_TRANSFORM_S(s,op,data,seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT_ ## s(BOOST_PP_SEQ_TRANSFORM_O, (op, data, (nil)), seq)))
23866: # 31 "/usr/include/boost/utility/binary.hpp" 2 3 4
23866: # 1 "/usr/include/boost/preprocessor/arithmetic/mod.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/arithmetic/mod.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_ARITHMETIC_MOD_HPP
23866:
23866: # 1 "/usr/include/boost/preprocessor/arithmetic/detail/div_base.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/arithmetic/detail/div_base.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_ARITHMETIC_DETAIL_DIV_BASE_HPP
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/comparison/less_equal.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/comparison/less_equal.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_COMPARISON_LESS_EQUAL_HPP
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/logical/not.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/logical/not.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_LOGICAL_NOT_HPP
23866: # 24 "/usr/include/boost/preprocessor/logical/not.hpp" 3 4
23866: #define BOOST_PP_NOT(x) BOOST_PP_COMPL(BOOST_PP_BOOL(x))
23866: # 20 "/usr/include/boost/preprocessor/comparison/less_equal.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_LESS_EQUAL(x,y) BOOST_PP_NOT(BOOST_PP_SUB(x, y))
23866: # 33 "/usr/include/boost/preprocessor/comparison/less_equal.hpp" 3 4
23866: #define BOOST_PP_LESS_EQUAL_D(d,x,y) BOOST_PP_NOT(BOOST_PP_SUB_D(d, x, y))
23866: # 20 "/usr/include/boost/preprocessor/arithmetic/detail/div_base.hpp" 2 3 4
23866: # 28 "/usr/include/boost/preprocessor/arithmetic/detail/div_base.hpp" 3 4
23866: #define BOOST_PP_DIV_BASE(x,y) BOOST_PP_WHILE(BOOST_PP_DIV_BASE_P, BOOST_PP_DIV_BASE_O, (0, x, y))
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_DIV_BASE_P(d,rxy) BOOST_PP_DIV_BASE_P_IM(d, BOOST_PP_TUPLE_REM_3 rxy)
23866: #define BOOST_PP_DIV_BASE_P_IM(d,im) BOOST_PP_DIV_BASE_P_I(d, im)
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_DIV_BASE_P_I(d,r,x,y) BOOST_PP_LESS_EQUAL_D(d, y, x)
23866:
23866:
23866: #define BOOST_PP_DIV_BASE_O(d,rxy) BOOST_PP_DIV_BASE_O_IM(d, BOOST_PP_TUPLE_REM_3 rxy)
23866: #define BOOST_PP_DIV_BASE_O_IM(d,im) BOOST_PP_DIV_BASE_O_I(d, im)
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_DIV_BASE_O_I(d,r,x,y) (BOOST_PP_INC(r), BOOST_PP_SUB_D(d, x, y), y)
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_DIV_BASE_D(d,x,y) BOOST_PP_WHILE_ ## d(BOOST_PP_DIV_BASE_P, BOOST_PP_DIV_BASE_O, (0, x, y))
23866: # 18 "/usr/include/boost/preprocessor/arithmetic/mod.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_MOD(x,y) BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_DIV_BASE(x, y))
23866: # 33 "/usr/include/boost/preprocessor/arithmetic/mod.hpp" 3 4
23866: #define BOOST_PP_MOD_D(d,x,y) BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_DIV_BASE_D(d, x, y))
23866: # 32 "/usr/include/boost/utility/binary.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: #define BOOST_BINARY(bit_groupings) BOOST_BINARY_LITERAL_D( BOOST_PP_DEDUCE_D(), bit_groupings )
23866:
23866:
23866: #define BOOST_BINARY_U(bit_groupings) BOOST_SUFFIXED_BINARY_LITERAL( bit_groupings, U )
23866:
23866:
23866: #define BOOST_BINARY_L(bit_groupings) BOOST_SUFFIXED_BINARY_LITERAL( bit_groupings, L )
23866:
23866:
23866: #define BOOST_BINARY_UL(bit_groupings) BOOST_SUFFIXED_BINARY_LITERAL( bit_groupings, UL )
23866:
23866:
23866: #define BOOST_BINARY_LU(bit_groupings) BOOST_SUFFIXED_BINARY_LITERAL( bit_groupings, LU )
23866:
23866:
23866: #define BOOST_BINARY_LL(bit_groupings) BOOST_SUFFIXED_BINARY_LITERAL( bit_groupings, LL )
23866:
23866:
23866: #define BOOST_BINARY_ULL(bit_groupings) BOOST_SUFFIXED_BINARY_LITERAL( bit_groupings, ULL )
23866:
23866:
23866: #define BOOST_BINARY_LLU(bit_groupings) BOOST_SUFFIXED_BINARY_LITERAL( bit_groupings, LLU )
23866:
23866:
23866: #define BOOST_SUFFIXED_BINARY_LITERAL(bit_groupings,suffix) BOOST_SUFFIXED_BINARY_LITERAL_D( BOOST_PP_DEDUCE_D(), bit_groupings, suffix )
23866:
23866:
23866: #define BOOST_SUFFIXED_BINARY_LITERAL_D(d,bit_groupings,suffix) BOOST_PP_CAT( BOOST_BINARY_LITERAL_D( d, bit_groupings ), suffix )
23866:
23866:
23866: #define BOOST_BINARY_LITERAL_D(d,bit_groupings) BOOST_PP_SEQ_CAT ( (0) BOOST_DETAIL_CREATE_BINARY_LITERAL_OCTAL_SEQUENCE( d, bit_groupings ) )
23866:
23866:
23866:
23866:
23866: #define BOOST_DETAIL_CREATE_BINARY_LITERAL_OCTAL_SEQUENCE(d,bit_groupings) BOOST_PP_SEQ_TRANSFORM ( BOOST_DETAIL_TRIPLE_TO_OCTAL_OPERATION , BOOST_PP_NIL , BOOST_PP_IDENTITY( BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_TRIPLE_SEQUENCE )() ( BOOST_DETAIL_COMPLETE_TRIPLE_SEQUENCE ( d , BOOST_DETAIL_CREATE_BINARY_LITERAL_BIT_SEQUENCE( d, bit_groupings ) ) ) )
23866: # 84 "/usr/include/boost/utility/binary.hpp" 3 4
23866: #define BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_TRIPLE_SEQUENCE(bit_sequence) BOOST_PP_CAT ( BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_PARENTHETIC_TUPLE_1 bit_sequence , END_BIT )
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_DETAIL_BITS_PER_OCTIT 3
23866:
23866: #define BOOST_DETAIL_COMPLETE_TRIPLE_SEQUENCE(d,incomplete_nibble_sequence) BOOST_PP_CAT ( BOOST_DETAIL_CREATE_TRIPLE_COMPLETION_SEQUENCE_ , BOOST_PP_MOD_D( d , BOOST_PP_SEQ_SIZE( incomplete_nibble_sequence ) , BOOST_DETAIL_BITS_PER_OCTIT ) ) incomplete_nibble_sequence
23866: # 102 "/usr/include/boost/utility/binary.hpp" 3 4
23866: #define BOOST_DETAIL_FIXED_COMPL(bit) BOOST_PP_CAT( BOOST_DETAIL_FIXED_COMPL_, bit )
23866:
23866:
23866: #define BOOST_DETAIL_FIXED_COMPL_0 1
23866:
23866: #define BOOST_DETAIL_FIXED_COMPL_1 0
23866:
23866: #define BOOST_DETAIL_CREATE_BINARY_LITERAL_BIT_SEQUENCE(d,bit_groupings) BOOST_PP_EMPTY BOOST_PP_CAT( BOOST_PP_WHILE_, d ) ( BOOST_DETAIL_BINARY_LITERAL_PREDICATE , BOOST_DETAIL_BINARY_LITERAL_OPERATION , bit_groupings () )
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_DETAIL_BINARY_LITERAL_PREDICATE(d,state) BOOST_DETAIL_FIXED_COMPL( BOOST_DETAIL_IS_NULLARY_ARGS( state ) )
23866:
23866:
23866: #define BOOST_DETAIL_BINARY_LITERAL_OPERATION(d,state) BOOST_DETAIL_SPLIT_AND_SWAP ( BOOST_PP_CAT( BOOST_DETAIL_BINARY_LITERAL_ELEMENT_, state ) )
23866:
23866:
23866:
23866: #define BOOST_DETAIL_TRIPLE_TO_OCTAL_OPERATION(s,dummy_param,tuple) BOOST_DETAIL_TERNARY_TRIPLE_TO_OCTAL tuple
23866:
23866:
23866: #define BOOST_DETAIL_TERNARY_TRIPLE_TO_OCTAL(bit2,bit1,bit0) BOOST_DETAIL_TRIPLE_TO_OCTAL_ ## bit2 ## bit1 ## bit0
23866:
23866:
23866: #define BOOST_DETAIL_CREATE_TRIPLE_COMPLETION_SEQUENCE_1 (0)(0)
23866: #define BOOST_DETAIL_CREATE_TRIPLE_COMPLETION_SEQUENCE_2 (0)
23866: #define BOOST_DETAIL_CREATE_TRIPLE_COMPLETION_SEQUENCE_0
23866:
23866: #define BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_PARENTHETIC_TUPLE_1END_BIT
23866:
23866: #define BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_PARENTHETIC_TUPLE_1(bit) ( ( bit, BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_PARENTHETIC_TUPLE_2
23866:
23866:
23866: #define BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_PARENTHETIC_TUPLE_2(bit) bit, BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_PARENTHETIC_TUPLE_3
23866:
23866:
23866: #define BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_PARENTHETIC_TUPLE_3(bit) bit ) ) BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_PARENTHETIC_TUPLE_1
23866:
23866:
23866: #define BOOST_DETAIL_SPLIT_AND_SWAP(params) BOOST_PP_IDENTITY( BOOST_DETAIL_SPLIT_AND_SWAP_PARAMS )()( params )
23866:
23866:
23866: #define BOOST_DETAIL_SPLIT_AND_SWAP_PARAMS(first_param,second_param) second_param first_param
23866:
23866:
23866: #define BOOST_DETAIL_LEFT_OF_COMMA(params) BOOST_PP_IDENTITY( BOOST_DETAIL_FIRST_MACRO_PARAM )()( params )
23866:
23866:
23866: #define BOOST_DETAIL_FIRST_MACRO_PARAM(first_param,second_param) first_param
23866:
23866:
23866:
23866:
23866: #define BOOST_DETAIL_IS_NULLARY_ARGS(param) BOOST_DETAIL_LEFT_OF_COMMA ( BOOST_PP_CAT( BOOST_DETAIL_IS_NULLARY_ARGS_R_ , BOOST_DETAIL_IS_NULLARY_ARGS_C param ) )
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_DETAIL_IS_NULLARY_ARGS_C() 1
23866:
23866:
23866: #define BOOST_DETAIL_IS_NULLARY_ARGS_R_1 1, BOOST_PP_NIL
23866:
23866:
23866: #define BOOST_DETAIL_IS_NULLARY_ARGS_R_BOOST_DETAIL_IS_NULLARY_ARGS_C 0, BOOST_PP_NIL
23866:
23866:
23866:
23866:
23866: #define BOOST_DETAIL_TRIPLE_TO_OCTAL_000 0
23866: #define BOOST_DETAIL_TRIPLE_TO_OCTAL_001 1
23866: #define BOOST_DETAIL_TRIPLE_TO_OCTAL_010 2
23866: #define BOOST_DETAIL_TRIPLE_TO_OCTAL_011 3
23866: #define BOOST_DETAIL_TRIPLE_TO_OCTAL_100 4
23866: #define BOOST_DETAIL_TRIPLE_TO_OCTAL_101 5
23866: #define BOOST_DETAIL_TRIPLE_TO_OCTAL_110 6
23866: #define BOOST_DETAIL_TRIPLE_TO_OCTAL_111 7
23866:
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0 (0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1 (1),
23866:
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00 (0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01 (0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10 (1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11 (1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00 (0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01 (0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10 (1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11 (1)(1),
23866:
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_000 (0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_001 (0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_010 (0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_011 (0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_100 (1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_101 (1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_110 (1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_111 (1)(1)(1),
23866:
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0000 (0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0001 (0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0010 (0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0011 (0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0100 (0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0101 (0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0110 (0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0111 (0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1000 (1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1001 (1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1010 (1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1011 (1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1100 (1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1101 (1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1110 (1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1111 (1)(1)(1)(1),
23866:
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00000 (0)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00001 (0)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00010 (0)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00011 (0)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00100 (0)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00101 (0)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00110 (0)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00111 (0)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01000 (0)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01001 (0)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01010 (0)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01011 (0)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01100 (0)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01101 (0)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01110 (0)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01111 (0)(1)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10000 (1)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10001 (1)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10010 (1)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10011 (1)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10100 (1)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10101 (1)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10110 (1)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10111 (1)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11000 (1)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11001 (1)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11010 (1)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11011 (1)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11100 (1)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11101 (1)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11110 (1)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111 (1)(1)(1)(1)(1),
23866:
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_000000 (0)(0)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_000001 (0)(0)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_000010 (0)(0)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_000011 (0)(0)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_000100 (0)(0)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_000101 (0)(0)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_000110 (0)(0)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_000111 (0)(0)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_001000 (0)(0)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_001001 (0)(0)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_001010 (0)(0)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_001011 (0)(0)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_001100 (0)(0)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_001101 (0)(0)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_001110 (0)(0)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_001111 (0)(0)(1)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_010000 (0)(1)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_010001 (0)(1)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_010010 (0)(1)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_010011 (0)(1)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_010100 (0)(1)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_010101 (0)(1)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_010110 (0)(1)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_010111 (0)(1)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_011000 (0)(1)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_011001 (0)(1)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_011010 (0)(1)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_011011 (0)(1)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_011100 (0)(1)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_011101 (0)(1)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_011110 (0)(1)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_011111 (0)(1)(1)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_100000 (1)(0)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_100001 (1)(0)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_100010 (1)(0)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_100011 (1)(0)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_100100 (1)(0)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_100101 (1)(0)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_100110 (1)(0)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_100111 (1)(0)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_101000 (1)(0)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_101001 (1)(0)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_101010 (1)(0)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_101011 (1)(0)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_101100 (1)(0)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_101101 (1)(0)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_101110 (1)(0)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_101111 (1)(0)(1)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_110000 (1)(1)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_110001 (1)(1)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_110010 (1)(1)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_110011 (1)(1)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_110100 (1)(1)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_110101 (1)(1)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_110110 (1)(1)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_110111 (1)(1)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_111000 (1)(1)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_111001 (1)(1)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_111010 (1)(1)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_111011 (1)(1)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_111100 (1)(1)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_111101 (1)(1)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_111110 (1)(1)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_111111 (1)(1)(1)(1)(1)(1),
23866:
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0000000 (0)(0)(0)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0000001 (0)(0)(0)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0000010 (0)(0)(0)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0000011 (0)(0)(0)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0000100 (0)(0)(0)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0000101 (0)(0)(0)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0000110 (0)(0)(0)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0000111 (0)(0)(0)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0001000 (0)(0)(0)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0001001 (0)(0)(0)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0001010 (0)(0)(0)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0001011 (0)(0)(0)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0001100 (0)(0)(0)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0001101 (0)(0)(0)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0001110 (0)(0)(0)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0001111 (0)(0)(0)(1)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0010000 (0)(0)(1)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0010001 (0)(0)(1)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0010010 (0)(0)(1)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0010011 (0)(0)(1)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0010100 (0)(0)(1)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0010101 (0)(0)(1)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0010110 (0)(0)(1)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0010111 (0)(0)(1)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0011000 (0)(0)(1)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0011001 (0)(0)(1)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0011010 (0)(0)(1)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0011011 (0)(0)(1)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0011100 (0)(0)(1)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0011101 (0)(0)(1)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0011110 (0)(0)(1)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0011111 (0)(0)(1)(1)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0100000 (0)(1)(0)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0100001 (0)(1)(0)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0100010 (0)(1)(0)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0100011 (0)(1)(0)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0100100 (0)(1)(0)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0100101 (0)(1)(0)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0100110 (0)(1)(0)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0100111 (0)(1)(0)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0101000 (0)(1)(0)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0101001 (0)(1)(0)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0101010 (0)(1)(0)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0101011 (0)(1)(0)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0101100 (0)(1)(0)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0101101 (0)(1)(0)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0101110 (0)(1)(0)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0101111 (0)(1)(0)(1)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0110000 (0)(1)(1)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0110001 (0)(1)(1)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0110010 (0)(1)(1)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0110011 (0)(1)(1)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0110100 (0)(1)(1)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0110101 (0)(1)(1)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0110110 (0)(1)(1)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0110111 (0)(1)(1)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0111000 (0)(1)(1)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0111001 (0)(1)(1)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0111010 (0)(1)(1)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0111011 (0)(1)(1)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0111100 (0)(1)(1)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0111101 (0)(1)(1)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0111110 (0)(1)(1)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0111111 (0)(1)(1)(1)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1000000 (1)(0)(0)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1000001 (1)(0)(0)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1000010 (1)(0)(0)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1000011 (1)(0)(0)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1000100 (1)(0)(0)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1000101 (1)(0)(0)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1000110 (1)(0)(0)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1000111 (1)(0)(0)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1001000 (1)(0)(0)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1001001 (1)(0)(0)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1001010 (1)(0)(0)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1001011 (1)(0)(0)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1001100 (1)(0)(0)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1001101 (1)(0)(0)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1001110 (1)(0)(0)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1001111 (1)(0)(0)(1)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1010000 (1)(0)(1)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1010001 (1)(0)(1)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1010010 (1)(0)(1)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1010011 (1)(0)(1)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1010100 (1)(0)(1)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1010101 (1)(0)(1)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1010110 (1)(0)(1)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1010111 (1)(0)(1)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1011000 (1)(0)(1)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1011001 (1)(0)(1)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1011010 (1)(0)(1)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1011011 (1)(0)(1)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1011100 (1)(0)(1)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1011101 (1)(0)(1)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1011110 (1)(0)(1)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1011111 (1)(0)(1)(1)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1100000 (1)(1)(0)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1100001 (1)(1)(0)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1100010 (1)(1)(0)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1100011 (1)(1)(0)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1100100 (1)(1)(0)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1100101 (1)(1)(0)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1100110 (1)(1)(0)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1100111 (1)(1)(0)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1101000 (1)(1)(0)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1101001 (1)(1)(0)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1101010 (1)(1)(0)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1101011 (1)(1)(0)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1101100 (1)(1)(0)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1101101 (1)(1)(0)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1101110 (1)(1)(0)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1101111 (1)(1)(0)(1)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1110000 (1)(1)(1)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1110001 (1)(1)(1)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1110010 (1)(1)(1)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1110011 (1)(1)(1)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1110100 (1)(1)(1)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1110101 (1)(1)(1)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1110110 (1)(1)(1)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1110111 (1)(1)(1)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1111000 (1)(1)(1)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1111001 (1)(1)(1)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1111010 (1)(1)(1)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1111011 (1)(1)(1)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1111100 (1)(1)(1)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1111101 (1)(1)(1)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1111110 (1)(1)(1)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1111111 (1)(1)(1)(1)(1)(1)(1),
23866:
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00000000 (0)(0)(0)(0)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00000001 (0)(0)(0)(0)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00000010 (0)(0)(0)(0)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00000011 (0)(0)(0)(0)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00000100 (0)(0)(0)(0)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00000101 (0)(0)(0)(0)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00000110 (0)(0)(0)(0)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00000111 (0)(0)(0)(0)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00001000 (0)(0)(0)(0)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00001001 (0)(0)(0)(0)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00001010 (0)(0)(0)(0)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00001011 (0)(0)(0)(0)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00001100 (0)(0)(0)(0)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00001101 (0)(0)(0)(0)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00001110 (0)(0)(0)(0)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00001111 (0)(0)(0)(0)(1)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00010000 (0)(0)(0)(1)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00010001 (0)(0)(0)(1)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00010010 (0)(0)(0)(1)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00010011 (0)(0)(0)(1)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00010100 (0)(0)(0)(1)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00010101 (0)(0)(0)(1)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00010110 (0)(0)(0)(1)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00010111 (0)(0)(0)(1)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00011000 (0)(0)(0)(1)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00011001 (0)(0)(0)(1)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00011010 (0)(0)(0)(1)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00011011 (0)(0)(0)(1)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00011100 (0)(0)(0)(1)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00011101 (0)(0)(0)(1)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00011110 (0)(0)(0)(1)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00011111 (0)(0)(0)(1)(1)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00100000 (0)(0)(1)(0)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00100001 (0)(0)(1)(0)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00100010 (0)(0)(1)(0)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00100011 (0)(0)(1)(0)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00100100 (0)(0)(1)(0)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00100101 (0)(0)(1)(0)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00100110 (0)(0)(1)(0)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00100111 (0)(0)(1)(0)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00101000 (0)(0)(1)(0)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00101001 (0)(0)(1)(0)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00101010 (0)(0)(1)(0)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00101011 (0)(0)(1)(0)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00101100 (0)(0)(1)(0)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00101101 (0)(0)(1)(0)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00101110 (0)(0)(1)(0)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00101111 (0)(0)(1)(0)(1)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00110000 (0)(0)(1)(1)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00110001 (0)(0)(1)(1)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00110010 (0)(0)(1)(1)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00110011 (0)(0)(1)(1)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00110100 (0)(0)(1)(1)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00110101 (0)(0)(1)(1)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00110110 (0)(0)(1)(1)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00110111 (0)(0)(1)(1)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00111000 (0)(0)(1)(1)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00111001 (0)(0)(1)(1)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00111010 (0)(0)(1)(1)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00111011 (0)(0)(1)(1)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00111100 (0)(0)(1)(1)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00111101 (0)(0)(1)(1)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00111110 (0)(0)(1)(1)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00111111 (0)(0)(1)(1)(1)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01000000 (0)(1)(0)(0)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01000001 (0)(1)(0)(0)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01000010 (0)(1)(0)(0)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01000011 (0)(1)(0)(0)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01000100 (0)(1)(0)(0)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01000101 (0)(1)(0)(0)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01000110 (0)(1)(0)(0)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01000111 (0)(1)(0)(0)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01001000 (0)(1)(0)(0)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01001001 (0)(1)(0)(0)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01001010 (0)(1)(0)(0)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01001011 (0)(1)(0)(0)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01001100 (0)(1)(0)(0)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01001101 (0)(1)(0)(0)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01001110 (0)(1)(0)(0)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01001111 (0)(1)(0)(0)(1)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01010000 (0)(1)(0)(1)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01010001 (0)(1)(0)(1)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01010010 (0)(1)(0)(1)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01010011 (0)(1)(0)(1)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01010100 (0)(1)(0)(1)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01010101 (0)(1)(0)(1)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01010110 (0)(1)(0)(1)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01010111 (0)(1)(0)(1)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01011000 (0)(1)(0)(1)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01011001 (0)(1)(0)(1)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01011010 (0)(1)(0)(1)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01011011 (0)(1)(0)(1)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01011100 (0)(1)(0)(1)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01011101 (0)(1)(0)(1)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01011110 (0)(1)(0)(1)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01011111 (0)(1)(0)(1)(1)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01100000 (0)(1)(1)(0)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01100001 (0)(1)(1)(0)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01100010 (0)(1)(1)(0)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01100011 (0)(1)(1)(0)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01100100 (0)(1)(1)(0)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01100101 (0)(1)(1)(0)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01100110 (0)(1)(1)(0)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01100111 (0)(1)(1)(0)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01101000 (0)(1)(1)(0)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01101001 (0)(1)(1)(0)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01101010 (0)(1)(1)(0)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01101011 (0)(1)(1)(0)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01101100 (0)(1)(1)(0)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01101101 (0)(1)(1)(0)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01101110 (0)(1)(1)(0)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01101111 (0)(1)(1)(0)(1)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01110000 (0)(1)(1)(1)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01110001 (0)(1)(1)(1)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01110010 (0)(1)(1)(1)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01110011 (0)(1)(1)(1)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01110100 (0)(1)(1)(1)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01110101 (0)(1)(1)(1)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01110110 (0)(1)(1)(1)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01110111 (0)(1)(1)(1)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01111000 (0)(1)(1)(1)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01111001 (0)(1)(1)(1)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01111010 (0)(1)(1)(1)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01111011 (0)(1)(1)(1)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01111100 (0)(1)(1)(1)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01111101 (0)(1)(1)(1)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01111110 (0)(1)(1)(1)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01111111 (0)(1)(1)(1)(1)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10000000 (1)(0)(0)(0)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10000001 (1)(0)(0)(0)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10000010 (1)(0)(0)(0)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10000011 (1)(0)(0)(0)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10000100 (1)(0)(0)(0)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10000101 (1)(0)(0)(0)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10000110 (1)(0)(0)(0)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10000111 (1)(0)(0)(0)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10001000 (1)(0)(0)(0)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10001001 (1)(0)(0)(0)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10001010 (1)(0)(0)(0)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10001011 (1)(0)(0)(0)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10001100 (1)(0)(0)(0)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10001101 (1)(0)(0)(0)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10001110 (1)(0)(0)(0)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10001111 (1)(0)(0)(0)(1)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10010000 (1)(0)(0)(1)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10010001 (1)(0)(0)(1)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10010010 (1)(0)(0)(1)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10010011 (1)(0)(0)(1)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10010100 (1)(0)(0)(1)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10010101 (1)(0)(0)(1)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10010110 (1)(0)(0)(1)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10010111 (1)(0)(0)(1)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10011000 (1)(0)(0)(1)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10011001 (1)(0)(0)(1)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10011010 (1)(0)(0)(1)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10011011 (1)(0)(0)(1)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10011100 (1)(0)(0)(1)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10011101 (1)(0)(0)(1)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10011110 (1)(0)(0)(1)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10011111 (1)(0)(0)(1)(1)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10100000 (1)(0)(1)(0)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10100001 (1)(0)(1)(0)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10100010 (1)(0)(1)(0)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10100011 (1)(0)(1)(0)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10100100 (1)(0)(1)(0)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10100101 (1)(0)(1)(0)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10100110 (1)(0)(1)(0)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10100111 (1)(0)(1)(0)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10101000 (1)(0)(1)(0)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10101001 (1)(0)(1)(0)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10101010 (1)(0)(1)(0)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10101011 (1)(0)(1)(0)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10101100 (1)(0)(1)(0)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10101101 (1)(0)(1)(0)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10101110 (1)(0)(1)(0)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10101111 (1)(0)(1)(0)(1)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10110000 (1)(0)(1)(1)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10110001 (1)(0)(1)(1)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10110010 (1)(0)(1)(1)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10110011 (1)(0)(1)(1)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10110100 (1)(0)(1)(1)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10110101 (1)(0)(1)(1)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10110110 (1)(0)(1)(1)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10110111 (1)(0)(1)(1)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10111000 (1)(0)(1)(1)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10111001 (1)(0)(1)(1)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10111010 (1)(0)(1)(1)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10111011 (1)(0)(1)(1)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10111100 (1)(0)(1)(1)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10111101 (1)(0)(1)(1)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10111110 (1)(0)(1)(1)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10111111 (1)(0)(1)(1)(1)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11000000 (1)(1)(0)(0)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11000001 (1)(1)(0)(0)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11000010 (1)(1)(0)(0)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11000011 (1)(1)(0)(0)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11000100 (1)(1)(0)(0)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11000101 (1)(1)(0)(0)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11000110 (1)(1)(0)(0)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11000111 (1)(1)(0)(0)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11001000 (1)(1)(0)(0)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11001001 (1)(1)(0)(0)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11001010 (1)(1)(0)(0)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11001011 (1)(1)(0)(0)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11001100 (1)(1)(0)(0)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11001101 (1)(1)(0)(0)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11001110 (1)(1)(0)(0)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11001111 (1)(1)(0)(0)(1)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11010000 (1)(1)(0)(1)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11010001 (1)(1)(0)(1)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11010010 (1)(1)(0)(1)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11010011 (1)(1)(0)(1)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11010100 (1)(1)(0)(1)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11010101 (1)(1)(0)(1)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11010110 (1)(1)(0)(1)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11010111 (1)(1)(0)(1)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11011000 (1)(1)(0)(1)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11011001 (1)(1)(0)(1)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11011010 (1)(1)(0)(1)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11011011 (1)(1)(0)(1)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11011100 (1)(1)(0)(1)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11011101 (1)(1)(0)(1)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11011110 (1)(1)(0)(1)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11011111 (1)(1)(0)(1)(1)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11100000 (1)(1)(1)(0)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11100001 (1)(1)(1)(0)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11100010 (1)(1)(1)(0)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11100011 (1)(1)(1)(0)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11100100 (1)(1)(1)(0)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11100101 (1)(1)(1)(0)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11100110 (1)(1)(1)(0)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11100111 (1)(1)(1)(0)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11101000 (1)(1)(1)(0)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11101001 (1)(1)(1)(0)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11101010 (1)(1)(1)(0)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11101011 (1)(1)(1)(0)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11101100 (1)(1)(1)(0)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11101101 (1)(1)(1)(0)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11101110 (1)(1)(1)(0)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11101111 (1)(1)(1)(0)(1)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11110000 (1)(1)(1)(1)(0)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11110001 (1)(1)(1)(1)(0)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11110010 (1)(1)(1)(1)(0)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11110011 (1)(1)(1)(1)(0)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11110100 (1)(1)(1)(1)(0)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11110101 (1)(1)(1)(1)(0)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11110110 (1)(1)(1)(1)(0)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11110111 (1)(1)(1)(1)(0)(1)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111000 (1)(1)(1)(1)(1)(0)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111001 (1)(1)(1)(1)(1)(0)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111010 (1)(1)(1)(1)(1)(0)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111011 (1)(1)(1)(1)(1)(0)(1)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111100 (1)(1)(1)(1)(1)(1)(0)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111101 (1)(1)(1)(1)(1)(1)(0)(1),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111110 (1)(1)(1)(1)(1)(1)(1)(0),
23866: #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111111 (1)(1)(1)(1)(1)(1)(1)(1),
23866: # 17 "/usr/include/boost/utility.hpp" 2 3 4
23866: # 1 "/usr/include/boost/utility/identity_type.hpp" 1 3 4
23866: # 14 "/usr/include/boost/utility/identity_type.hpp" 3 4
23866: #define BOOST_IDENTITY_TYPE_HPP_
23866:
23866: # 1 "/usr/include/boost/type_traits/function_traits.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/function_traits.hpp" 3 4
23866: #define BOOST_TT_FUNCTION_TRAITS_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866:
23866: namespace detail {
23866:
23866: template<typename Function> struct function_traits_helper;
23866:
23866: template<typename R>
23866: struct function_traits_helper<R (*)(void)>
23866: {
23866: static const unsigned arity = 0;
23866: typedef R result_type;
23866: };
23866:
23866: template<typename R, typename T1>
23866: struct function_traits_helper<R (*)(T1)>
23866: {
23866: static const unsigned arity = 1;
23866: typedef R result_type;
23866: typedef T1 arg1_type;
23866: typedef T1 argument_type;
23866: };
23866:
23866: template<typename R, typename T1, typename T2>
23866: struct function_traits_helper<R (*)(T1, T2)>
23866: {
23866: static const unsigned arity = 2;
23866: typedef R result_type;
23866: typedef T1 arg1_type;
23866: typedef T2 arg2_type;
23866: typedef T1 first_argument_type;
23866: typedef T2 second_argument_type;
23866: };
23866:
23866: template<typename R, typename T1, typename T2, typename T3>
23866: struct function_traits_helper<R (*)(T1, T2, T3)>
23866: {
23866: static const unsigned arity = 3;
23866: typedef R result_type;
23866: typedef T1 arg1_type;
23866: typedef T2 arg2_type;
23866: typedef T3 arg3_type;
23866: };
23866:
23866: template<typename R, typename T1, typename T2, typename T3, typename T4>
23866: struct function_traits_helper<R (*)(T1, T2, T3, T4)>
23866: {
23866: static const unsigned arity = 4;
23866: typedef R result_type;
23866: typedef T1 arg1_type;
23866: typedef T2 arg2_type;
23866: typedef T3 arg3_type;
23866: typedef T4 arg4_type;
23866: };
23866:
23866: template<typename R, typename T1, typename T2, typename T3, typename T4,
23866: typename T5>
23866: struct function_traits_helper<R (*)(T1, T2, T3, T4, T5)>
23866: {
23866: static const unsigned arity = 5;
23866: typedef R result_type;
23866: typedef T1 arg1_type;
23866: typedef T2 arg2_type;
23866: typedef T3 arg3_type;
23866: typedef T4 arg4_type;
23866: typedef T5 arg5_type;
23866: };
23866:
23866: template<typename R, typename T1, typename T2, typename T3, typename T4,
23866: typename T5, typename T6>
23866: struct function_traits_helper<R (*)(T1, T2, T3, T4, T5, T6)>
23866: {
23866: static const unsigned arity = 6;
23866: typedef R result_type;
23866: typedef T1 arg1_type;
23866: typedef T2 arg2_type;
23866: typedef T3 arg3_type;
23866: typedef T4 arg4_type;
23866: typedef T5 arg5_type;
23866: typedef T6 arg6_type;
23866: };
23866:
23866: template<typename R, typename T1, typename T2, typename T3, typename T4,
23866: typename T5, typename T6, typename T7>
23866: struct function_traits_helper<R (*)(T1, T2, T3, T4, T5, T6, T7)>
23866: {
23866: static const unsigned arity = 7;
23866: typedef R result_type;
23866: typedef T1 arg1_type;
23866: typedef T2 arg2_type;
23866: typedef T3 arg3_type;
23866: typedef T4 arg4_type;
23866: typedef T5 arg5_type;
23866: typedef T6 arg6_type;
23866: typedef T7 arg7_type;
23866: };
23866:
23866: template<typename R, typename T1, typename T2, typename T3, typename T4,
23866: typename T5, typename T6, typename T7, typename T8>
23866: struct function_traits_helper<R (*)(T1, T2, T3, T4, T5, T6, T7, T8)>
23866: {
23866: static const unsigned arity = 8;
23866: typedef R result_type;
23866: typedef T1 arg1_type;
23866: typedef T2 arg2_type;
23866: typedef T3 arg3_type;
23866: typedef T4 arg4_type;
23866: typedef T5 arg5_type;
23866: typedef T6 arg6_type;
23866: typedef T7 arg7_type;
23866: typedef T8 arg8_type;
23866: };
23866:
23866: template<typename R, typename T1, typename T2, typename T3, typename T4,
23866: typename T5, typename T6, typename T7, typename T8, typename T9>
23866: struct function_traits_helper<R (*)(T1, T2, T3, T4, T5, T6, T7, T8, T9)>
23866: {
23866: static const unsigned arity = 9;
23866: typedef R result_type;
23866: typedef T1 arg1_type;
23866: typedef T2 arg2_type;
23866: typedef T3 arg3_type;
23866: typedef T4 arg4_type;
23866: typedef T5 arg5_type;
23866: typedef T6 arg6_type;
23866: typedef T7 arg7_type;
23866: typedef T8 arg8_type;
23866: typedef T9 arg9_type;
23866: };
23866:
23866: template<typename R, typename T1, typename T2, typename T3, typename T4,
23866: typename T5, typename T6, typename T7, typename T8, typename T9,
23866: typename T10>
23866: struct function_traits_helper<R (*)(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)>
23866: {
23866: static const unsigned arity = 10;
23866: typedef R result_type;
23866: typedef T1 arg1_type;
23866: typedef T2 arg2_type;
23866: typedef T3 arg3_type;
23866: typedef T4 arg4_type;
23866: typedef T5 arg5_type;
23866: typedef T6 arg6_type;
23866: typedef T7 arg7_type;
23866: typedef T8 arg8_type;
23866: typedef T9 arg9_type;
23866: typedef T10 arg10_type;
23866: };
23866:
23866: }
23866:
23866: template<typename Function>
23866: struct function_traits :
23866: public boost::detail::function_traits_helper<typename boost::add_pointer<Function>::type>
23866: {
23866: };
23866:
23866: }
23866: # 17 "/usr/include/boost/utility/identity_type.hpp" 2 3 4
23866: # 41 "/usr/include/boost/utility/identity_type.hpp" 3 4
23866: #define BOOST_IDENTITY_TYPE(parenthesized_type) boost::function_traits< void parenthesized_type >::arg1_type
23866: # 18 "/usr/include/boost/utility.hpp" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/core/checked_delete.hpp" 1 3 4
23866:
23866: #define BOOST_CORE_CHECKED_DELETE_HPP
23866: # 26 "/usr/include/boost/core/checked_delete.hpp" 3 4
23866: namespace boost
23866: {
23866:
23866:
23866:
23866: template<class T> inline void checked_delete(T * x) noexcept
23866: {
23866:
23866: typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];
23866: (void) sizeof(type_must_be_complete);
23866: delete x;
23866: }
23866:
23866: template<class T> inline void checked_array_delete(T * x) noexcept
23866: {
23866: typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];
23866: (void) sizeof(type_must_be_complete);
23866: delete [] x;
23866: }
23866:
23866: template<class T> struct checked_deleter
23866: {
23866: typedef void result_type;
23866: typedef T * argument_type;
23866:
23866: void operator()(T * x) const noexcept
23866: {
23866:
23866: boost::checked_delete(x);
23866: }
23866: };
23866:
23866: template<class T> struct checked_array_deleter
23866: {
23866: typedef void result_type;
23866: typedef T * argument_type;
23866:
23866: void operator()(T * x) const noexcept
23866: {
23866: boost::checked_array_delete(x);
23866: }
23866: };
23866:
23866: }
23866: # 22 "/usr/include/boost/utility.hpp" 2 3 4
23866: # 1 "/usr/include/boost/core/noncopyable.hpp" 1 3 4
23866: # 10 "/usr/include/boost/core/noncopyable.hpp" 3 4
23866: #define BOOST_CORE_NONCOPYABLE_HPP
23866:
23866:
23866:
23866: namespace boost {
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace noncopyable_
23866: {
23866:
23866: #define BOOST_NONCOPYABLE_BASE_TOKEN_DEFINED
23866: # 34 "/usr/include/boost/core/noncopyable.hpp" 3 4
23866: struct base_token {};
23866:
23866:
23866:
23866: class noncopyable: base_token
23866: {
23866: protected:
23866:
23866: constexpr noncopyable() = default;
23866: ~noncopyable() = default;
23866:
23866:
23866:
23866:
23866:
23866: noncopyable( const noncopyable& ) = delete;
23866: noncopyable& operator=( const noncopyable& ) = delete;
23866:
23866:
23866:
23866:
23866:
23866: };
23866: }
23866:
23866: typedef noncopyable_::noncopyable noncopyable;
23866:
23866: }
23866: # 23 "/usr/include/boost/utility.hpp" 2 3 4
23866: # 26 "/usr/include/boost/range/size.hpp" 2 3 4
23866:
23866: namespace boost
23866: {
23866: namespace range_detail
23866: {
23866:
23866: template<class SinglePassRange>
23866: inline typename ::boost::enable_if<
23866: has_member_size<SinglePassRange>,
23866: typename range_size<const SinglePassRange>::type
23866: >::type
23866: range_calculate_size(const SinglePassRange& rng)
23866: {
23866: return rng.size();
23866: }
23866:
23866: template<class SinglePassRange>
23866: inline typename disable_if<
23866: has_member_size<SinglePassRange>,
23866: typename range_size<const SinglePassRange>::type
23866: >::type
23866: range_calculate_size(const SinglePassRange& rng)
23866: {
23866: return std::distance(boost::begin(rng), boost::end(rng));
23866: }
23866: }
23866:
23866: template<class SinglePassRange>
23866: inline typename range_size<const SinglePassRange>::type
23866: size(const SinglePassRange& rng)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)(boost::SinglePassRangeConcept<SinglePassRange>)>::failed> boost_concept_check62 __attribute__((__unused__));
23866:
23866:
23866:
23866:
23866:
23866: using namespace range_detail;
23866:
23866:
23866: return range_calculate_size(rng);
23866: }
23866:
23866: }
23866: # 21 "/usr/include/boost/range/functions.hpp" 2 3 4
23866: # 1 "/usr/include/boost/range/distance.hpp" 1 3 4
23866: # 12 "/usr/include/boost/range/distance.hpp" 3 4
23866: #define BOOST_RANGE_DISTANCE_HPP
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/iterator/distance.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_ITERATOR_DISTANCE_HPP
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace iterators {
23866:
23866: namespace detail {
23866: template <typename SinglePassIterator>
23866: inline constexpr typename iterator_difference<SinglePassIterator>::type
23866: distance_impl(
23866: SinglePassIterator first
23866: , SinglePassIterator last
23866: , single_pass_traversal_tag
23866: )
23866: {
23866: typename iterator_difference<SinglePassIterator>::type n = 0;
23866: while (first != last) {
23866: ++first;
23866: ++n;
23866: }
23866: return n;
23866: }
23866:
23866: template <typename RandomAccessIterator>
23866: inline constexpr typename iterator_difference<RandomAccessIterator>::type
23866: distance_impl(
23866: RandomAccessIterator first
23866: , RandomAccessIterator last
23866: , random_access_traversal_tag
23866: )
23866: {
23866: return last - first;
23866: }
23866: }
23866:
23866: namespace distance_adl_barrier {
23866: template <typename SinglePassIterator>
23866: inline constexpr typename iterator_difference<SinglePassIterator>::type
23866: distance(SinglePassIterator first, SinglePassIterator last)
23866: {
23866: return detail::distance_impl(
23866: first, last, typename iterator_traversal<SinglePassIterator>::type()
23866: );
23866: }
23866: }
23866:
23866: using namespace distance_adl_barrier;
23866:
23866: }
23866:
23866: using namespace iterators::distance_adl_barrier;
23866:
23866: }
23866: # 19 "/usr/include/boost/range/distance.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: namespace boost
23866: {
23866:
23866: namespace range_distance_adl_barrier
23866: {
23866: template< class T >
23866: inline constexpr typename range_difference<T>::type
23866: distance( const T& r )
23866: {
23866: return boost::iterators::distance( boost::begin( r ), boost::end( r ) );
23866: }
23866: }
23866:
23866: using namespace range_distance_adl_barrier;
23866:
23866: }
23866: # 22 "/usr/include/boost/range/functions.hpp" 2 3 4
23866: # 1 "/usr/include/boost/range/empty.hpp" 1 3 4
23866: # 12 "/usr/include/boost/range/empty.hpp" 3 4
23866: #define BOOST_RANGE_EMPTY_HPP
23866: # 22 "/usr/include/boost/range/empty.hpp" 3 4
23866: namespace boost
23866: {
23866:
23866: template< class T >
23866: inline bool empty( const T& r )
23866: {
23866: return boost::begin( r ) == boost::end( r );
23866: }
23866:
23866: }
23866: # 23 "/usr/include/boost/range/functions.hpp" 2 3 4
23866: # 1 "/usr/include/boost/range/rbegin.hpp" 1 3 4
23866: # 12 "/usr/include/boost/range/rbegin.hpp" 3 4
23866: #define BOOST_RANGE_RBEGIN_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/range/reverse_iterator.hpp" 1 3 4
23866: # 12 "/usr/include/boost/range/reverse_iterator.hpp" 3 4
23866: #define BOOST_RANGE_REVERSE_ITERATOR_HPP
23866: # 21 "/usr/include/boost/range/reverse_iterator.hpp" 3 4
23866: # 1 "/usr/include/boost/iterator/reverse_iterator.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_REVERSE_ITERATOR_23022003THW_HPP
23866:
23866: # 1 "/usr/include/boost/iterator/iterator_adaptor.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_ITERATOR_ADAPTOR_23022003THW_HPP
23866: # 30 "/usr/include/boost/iterator/iterator_adaptor.hpp" 3 4
23866: # 1 "/usr/include/boost/iterator/detail/config_def.hpp" 1 3 4
23866: # 22 "/usr/include/boost/iterator/detail/config_def.hpp" 3 4
23866: #define BOOST_ITERATOR_CONFIG_DEF
23866: # 45 "/usr/include/boost/iterator/detail/config_def.hpp" 3 4
23866: #define BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY 1
23866: # 31 "/usr/include/boost/iterator/iterator_adaptor.hpp" 2 3 4
23866:
23866:
23866:
23866: namespace boost {
23866: namespace iterators {
23866:
23866:
23866:
23866:
23866: using boost::use_default;
23866:
23866: }
23866:
23866:
23866:
23866:
23866: template<class To>
23866: struct is_convertible<use_default,To>
23866: : mpl::false_ {};
23866:
23866: namespace iterators {
23866:
23866: namespace detail
23866: {
23866: # 63 "/usr/include/boost/iterator/iterator_adaptor.hpp" 3 4
23866: struct enable_type;
23866: }
23866: # 130 "/usr/include/boost/iterator/iterator_adaptor.hpp" 3 4
23866: template<typename From, typename To>
23866: struct enable_if_convertible
23866: : iterators::enable_if<
23866: is_convertible<From, To>
23866: , boost::iterators::detail::enable_type
23866: >
23866: {};
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace detail
23866: {
23866:
23866:
23866: template <class T, class DefaultNullaryFn>
23866: struct ia_dflt_help
23866: : mpl::eval_if<
23866: is_same<T, use_default>
23866: , DefaultNullaryFn
23866: , mpl::identity<T>
23866: >
23866: {
23866: };
23866:
23866:
23866:
23866: template <
23866: class Derived
23866: , class Base
23866: , class Value
23866: , class Traversal
23866: , class Reference
23866: , class Difference
23866: >
23866: struct iterator_adaptor_base
23866: {
23866: typedef iterator_facade<
23866: Derived
23866:
23866:
23866: , typename boost::iterators::detail::ia_dflt_help<
23866: Value
23866: , mpl::eval_if<
23866: is_same<Reference,use_default>
23866: , iterator_value<Base>
23866: , remove_reference<Reference>
23866: >
23866: >::type
23866:
23866:
23866:
23866:
23866:
23866:
23866: , typename boost::iterators::detail::ia_dflt_help<
23866: Traversal
23866: , iterator_traversal<Base>
23866: >::type
23866:
23866: , typename boost::iterators::detail::ia_dflt_help<
23866: Reference
23866: , mpl::eval_if<
23866: is_same<Value,use_default>
23866: , iterator_reference<Base>
23866: , add_reference<Value>
23866: >
23866: >::type
23866:
23866: , typename boost::iterators::detail::ia_dflt_help<
23866: Difference, iterator_difference<Base>
23866: >::type
23866: >
23866: type;
23866: };
23866:
23866:
23866: template <class Tr1, class Tr2>
23866: inline void iterator_adaptor_assert_traversal ()
23866: {
23866: static_assert((is_convertible<Tr1, Tr2>::value), "(is_convertible<Tr1, Tr2>::value)");
23866: }
23866: }
23866: # 241 "/usr/include/boost/iterator/iterator_adaptor.hpp" 3 4
23866: template <
23866: class Derived
23866: , class Base
23866: , class Value = use_default
23866: , class Traversal = use_default
23866: , class Reference = use_default
23866: , class Difference = use_default
23866: >
23866: class iterator_adaptor
23866: : public boost::iterators::detail::iterator_adaptor_base<
23866: Derived, Base, Value, Traversal, Reference, Difference
23866: >::type
23866: {
23866: friend class iterator_core_access;
23866:
23866: protected:
23866: typedef typename boost::iterators::detail::iterator_adaptor_base<
23866: Derived, Base, Value, Traversal, Reference, Difference
23866: >::type super_t;
23866: public:
23866: iterator_adaptor() {}
23866:
23866: explicit iterator_adaptor(Base const &iter)
23866: : m_iterator(iter)
23866: {
23866: }
23866:
23866: typedef Base base_type;
23866:
23866: Base const& base() const
23866: { return m_iterator; }
23866:
23866: protected:
23866:
23866: typedef iterator_adaptor<Derived,Base,Value,Traversal,Reference,Difference> iterator_adaptor_;
23866:
23866:
23866:
23866:
23866: Base const& base_reference() const
23866: { return m_iterator; }
23866:
23866: Base& base_reference()
23866: { return m_iterator; }
23866:
23866: private:
23866:
23866:
23866:
23866:
23866:
23866:
23866: typename super_t::reference dereference() const
23866: { return *m_iterator; }
23866:
23866: template <
23866: class OtherDerived, class OtherIterator, class V, class C, class R, class D
23866: >
23866: bool equal(iterator_adaptor<OtherDerived, OtherIterator, V, C, R, D> const& x) const
23866: {
23866:
23866:
23866:
23866:
23866: return m_iterator == x.base();
23866: }
23866:
23866: typedef typename iterator_category_to_traversal<
23866: typename super_t::iterator_category
23866: >::type my_traversal;
23866:
23866: #define BOOST_ITERATOR_ADAPTOR_ASSERT_TRAVERSAL(cat) boost::iterators::detail::iterator_adaptor_assert_traversal<my_traversal, cat>();
23866:
23866:
23866: void advance(typename super_t::difference_type n)
23866: {
23866: boost::iterators::detail::iterator_adaptor_assert_traversal<my_traversal, random_access_traversal_tag>();
23866: m_iterator += n;
23866: }
23866:
23866: void increment() { ++m_iterator; }
23866:
23866: void decrement()
23866: {
23866: boost::iterators::detail::iterator_adaptor_assert_traversal<my_traversal, bidirectional_traversal_tag>();
23866: --m_iterator;
23866: }
23866:
23866: template <
23866: class OtherDerived, class OtherIterator, class V, class C, class R, class D
23866: >
23866: typename super_t::difference_type distance_to(
23866: iterator_adaptor<OtherDerived, OtherIterator, V, C, R, D> const& y) const
23866: {
23866: boost::iterators::detail::iterator_adaptor_assert_traversal<my_traversal, random_access_traversal_tag>();
23866:
23866:
23866:
23866:
23866: return y.base() - m_iterator;
23866: }
23866:
23866: #undef BOOST_ITERATOR_ADAPTOR_ASSERT_TRAVERSAL
23866:
23866: private:
23866: Base m_iterator;
23866: };
23866:
23866: }
23866:
23866: using iterators::iterator_adaptor;
23866: using iterators::enable_if_convertible;
23866:
23866: }
23866:
23866: # 1 "/usr/include/boost/iterator/detail/config_undef.hpp" 1 3 4
23866: # 14 "/usr/include/boost/iterator/detail/config_undef.hpp" 3 4
23866: #undef BOOST_NO_IS_CONVERTIBLE
23866: #undef BOOST_NO_IS_CONVERTIBLE_TEMPLATE
23866: #undef BOOST_NO_STRICT_ITERATOR_INTEROPERABILITY
23866: #undef BOOST_NO_LVALUE_RETURN_DETECTION
23866: #undef BOOST_NO_ONE_WAY_ITERATOR_INTEROP
23866:
23866:
23866: #undef BOOST_ITERATOR_CONFIG_DEF
23866: # 357 "/usr/include/boost/iterator/iterator_adaptor.hpp" 2 3 4
23866: # 11 "/usr/include/boost/iterator/reverse_iterator.hpp" 2 3 4
23866:
23866: namespace boost {
23866: namespace iterators {
23866:
23866:
23866:
23866:
23866: template <class Iterator>
23866: class reverse_iterator
23866: : public iterator_adaptor< reverse_iterator<Iterator>, Iterator >
23866: {
23866: typedef iterator_adaptor< reverse_iterator<Iterator>, Iterator > super_t;
23866:
23866: friend class iterator_core_access;
23866:
23866: public:
23866: reverse_iterator() {}
23866:
23866: explicit reverse_iterator(Iterator x)
23866: : super_t(x) {}
23866:
23866: template<class OtherIterator>
23866: reverse_iterator(
23866: reverse_iterator<OtherIterator> const& r
23866: , typename enable_if_convertible<OtherIterator, Iterator>::type* = 0
23866: )
23866: : super_t(r.base())
23866: {}
23866:
23866: private:
23866: typename super_t::reference dereference() const
23866: {
23866: Iterator it = this->base_reference();
23866: --it;
23866: return *it;
23866: }
23866:
23866: void increment() { --this->base_reference(); }
23866: void decrement() { ++this->base_reference(); }
23866:
23866: void advance(typename super_t::difference_type n)
23866: {
23866: this->base_reference() -= n;
23866: }
23866:
23866: template <class OtherIterator>
23866: typename super_t::difference_type
23866: distance_to(reverse_iterator<OtherIterator> const& y) const
23866: {
23866: return this->base_reference() - y.base();
23866: }
23866: };
23866:
23866: template <class BidirectionalIterator>
23866: inline reverse_iterator<BidirectionalIterator> make_reverse_iterator(BidirectionalIterator x)
23866: {
23866: return reverse_iterator<BidirectionalIterator>(x);
23866: }
23866:
23866: }
23866:
23866: using iterators::reverse_iterator;
23866: using iterators::make_reverse_iterator;
23866:
23866: }
23866: # 22 "/usr/include/boost/range/reverse_iterator.hpp" 2 3 4
23866:
23866:
23866: namespace boost
23866: {
23866:
23866:
23866:
23866:
23866: template< typename T >
23866: struct range_reverse_iterator
23866: {
23866: typedef reverse_iterator<
23866: typename range_iterator<
23866: typename remove_reference<T>::type>::type > type;
23866: };
23866:
23866:
23866: }
23866: # 20 "/usr/include/boost/range/rbegin.hpp" 2 3 4
23866:
23866: namespace boost
23866: {
23866:
23866: template< class C >
23866: inline typename range_reverse_iterator<C>::type
23866: rbegin( C& c )
23866: {
23866: typedef typename range_reverse_iterator<C>::type
23866: iter_type;
23866: return iter_type( boost::end( c ) );
23866: }
23866:
23866: template< class C >
23866: inline typename range_reverse_iterator<const C>::type
23866: rbegin( const C& c )
23866: {
23866: typedef typename range_reverse_iterator<const C>::type
23866: iter_type;
23866: return iter_type( boost::end( c ) );
23866: }
23866:
23866: template< class T >
23866: inline typename range_reverse_iterator<const T>::type
23866: const_rbegin( const T& r )
23866: {
23866: return boost::rbegin( r );
23866: }
23866:
23866: }
23866: # 24 "/usr/include/boost/range/functions.hpp" 2 3 4
23866: # 1 "/usr/include/boost/range/rend.hpp" 1 3 4
23866: # 12 "/usr/include/boost/range/rend.hpp" 3 4
23866: #define BOOST_RANGE_REND_HPP
23866: # 21 "/usr/include/boost/range/rend.hpp" 3 4
23866: namespace boost
23866: {
23866:
23866: template< class C >
23866: inline typename range_reverse_iterator<C>::type
23866: rend( C& c )
23866: {
23866: typedef typename range_reverse_iterator<C>::type
23866: iter_type;
23866: return iter_type( boost::begin( c ) );
23866: }
23866:
23866: template< class C >
23866: inline typename range_reverse_iterator<const C>::type
23866: rend( const C& c )
23866: {
23866: typedef typename range_reverse_iterator<const C>::type
23866: iter_type;
23866: return iter_type( boost::begin( c ) );
23866: }
23866:
23866: template< class T >
23866: inline typename range_reverse_iterator<const T>::type
23866: const_rend( const T& r )
23866: {
23866: return boost::rend( r );
23866: }
23866:
23866: }
23866: # 25 "/usr/include/boost/range/functions.hpp" 2 3 4
23866: # 39 "/usr/include/boost/range/iterator_range_core.hpp" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/range/algorithm/equal.hpp" 1 3 4
23866: # 11 "/usr/include/boost/range/algorithm/equal.hpp" 3 4
23866: #define BOOST_RANGE_ALGORITHM_EQUAL_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866:
23866: namespace boost
23866: {
23866: namespace range_detail
23866: {
23866:
23866:
23866: template< class SinglePassTraversalReadableIterator1,
23866: class SinglePassTraversalReadableIterator2,
23866: class IteratorCategoryTag1,
23866: class IteratorCategoryTag2 >
23866: inline bool equal_impl( SinglePassTraversalReadableIterator1 first1,
23866: SinglePassTraversalReadableIterator1 last1,
23866: SinglePassTraversalReadableIterator2 first2,
23866: SinglePassTraversalReadableIterator2 last2,
23866: IteratorCategoryTag1,
23866: IteratorCategoryTag2 )
23866: {
23866: for (;;)
23866: {
23866:
23866:
23866:
23866: if (first1 == last1)
23866: return first2 == last2;
23866:
23866:
23866:
23866:
23866: if (first2 == last2)
23866: return false;
23866:
23866:
23866: if (*first1 != *first2)
23866: break;
23866:
23866: ++first1;
23866: ++first2;
23866: }
23866:
23866:
23866:
23866: return false;
23866: }
23866:
23866: template< class SinglePassTraversalReadableIterator1,
23866: class SinglePassTraversalReadableIterator2,
23866: class IteratorCategoryTag1,
23866: class IteratorCategoryTag2,
23866: class BinaryPredicate >
23866: inline bool equal_impl( SinglePassTraversalReadableIterator1 first1,
23866: SinglePassTraversalReadableIterator1 last1,
23866: SinglePassTraversalReadableIterator2 first2,
23866: SinglePassTraversalReadableIterator2 last2,
23866: BinaryPredicate pred,
23866: IteratorCategoryTag1,
23866: IteratorCategoryTag2 )
23866: {
23866: for (;;)
23866: {
23866:
23866:
23866:
23866: if (first1 == last1)
23866: return first2 == last2;
23866:
23866:
23866:
23866:
23866: if (first2 == last2)
23866: return false;
23866:
23866:
23866: if (!pred(*first1, *first2))
23866: break;
23866:
23866: ++first1;
23866: ++first2;
23866: }
23866:
23866:
23866:
23866: return false;
23866: }
23866:
23866:
23866:
23866: template< class RandomAccessTraversalReadableIterator1,
23866: class RandomAccessTraversalReadableIterator2 >
23866: inline bool equal_impl( RandomAccessTraversalReadableIterator1 first1,
23866: RandomAccessTraversalReadableIterator1 last1,
23866: RandomAccessTraversalReadableIterator2 first2,
23866: RandomAccessTraversalReadableIterator2 last2,
23866: std::random_access_iterator_tag,
23866: std::random_access_iterator_tag )
23866: {
23866: return ((last1 - first1) == (last2 - first2))
23866: && std::equal(first1, last1, first2);
23866: }
23866:
23866: template< class RandomAccessTraversalReadableIterator1,
23866: class RandomAccessTraversalReadableIterator2,
23866: class BinaryPredicate >
23866: inline bool equal_impl( RandomAccessTraversalReadableIterator1 first1,
23866: RandomAccessTraversalReadableIterator1 last1,
23866: RandomAccessTraversalReadableIterator2 first2,
23866: RandomAccessTraversalReadableIterator2 last2,
23866: BinaryPredicate pred,
23866: std::random_access_iterator_tag,
23866: std::random_access_iterator_tag )
23866: {
23866: return ((last1 - first1) == (last2 - first2))
23866: && std::equal(first1, last1, first2, pred);
23866: }
23866:
23866: template< class SinglePassTraversalReadableIterator1,
23866: class SinglePassTraversalReadableIterator2 >
23866: inline bool equal( SinglePassTraversalReadableIterator1 first1,
23866: SinglePassTraversalReadableIterator1 last1,
23866: SinglePassTraversalReadableIterator2 first2,
23866: SinglePassTraversalReadableIterator2 last2 )
23866: {
23866: typename std::iterator_traits< SinglePassTraversalReadableIterator1 >::iterator_category tag1;
23866: typename std::iterator_traits< SinglePassTraversalReadableIterator2 >::iterator_category tag2;
23866:
23866: return equal_impl(first1, last1, first2, last2, tag1, tag2);
23866: }
23866:
23866: template< class SinglePassTraversalReadableIterator1,
23866: class SinglePassTraversalReadableIterator2,
23866: class BinaryPredicate >
23866: inline bool equal( SinglePassTraversalReadableIterator1 first1,
23866: SinglePassTraversalReadableIterator1 last1,
23866: SinglePassTraversalReadableIterator2 first2,
23866: SinglePassTraversalReadableIterator2 last2,
23866: BinaryPredicate pred )
23866: {
23866: typename std::iterator_traits< SinglePassTraversalReadableIterator1 >::iterator_category tag1;
23866: typename std::iterator_traits< SinglePassTraversalReadableIterator2 >::iterator_category tag2;
23866:
23866: return equal_impl(first1, last1, first2, last2, pred, tag1, tag2);
23866: }
23866:
23866: }
23866:
23866: namespace range
23866: {
23866: # 171 "/usr/include/boost/range/algorithm/equal.hpp" 3 4
23866: template< class SinglePassRange1, class SinglePassRange2 >
23866: inline bool equal( const SinglePassRange1& rng1, const SinglePassRange2& rng2 )
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange1> )>::failed> boost_concept_check174 __attribute__((__unused__));
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange2> )>::failed> boost_concept_check175 __attribute__((__unused__));
23866:
23866: return ::boost::range_detail::equal(
23866: ::boost::begin(rng1), ::boost::end(rng1),
23866: ::boost::begin(rng2), ::boost::end(rng2) );
23866: }
23866:
23866:
23866: template< class SinglePassRange1, class SinglePassRange2, class BinaryPredicate >
23866: inline bool equal( const SinglePassRange1& rng1, const SinglePassRange2& rng2,
23866: BinaryPredicate pred )
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange1> )>::failed> boost_concept_check187 __attribute__((__unused__));
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( SinglePassRangeConcept<const SinglePassRange2> )>::failed> boost_concept_check188 __attribute__((__unused__));
23866:
23866: return ::boost::range_detail::equal(
23866: ::boost::begin(rng1), ::boost::end(rng1),
23866: ::boost::begin(rng2), ::boost::end(rng2),
23866: pred);
23866: }
23866:
23866: }
23866: using ::boost::range::equal;
23866: }
23866: # 43 "/usr/include/boost/range/iterator_range_core.hpp" 2 3 4
23866: # 1 "/usr/include/boost/range/detail/safe_bool.hpp" 1 3 4
23866: # 11 "/usr/include/boost/range/detail/safe_bool.hpp" 3 4
23866: #define BOOST_RANGE_SAFE_BOOL_INCLUDED_HPP
23866:
23866:
23866:
23866:
23866: namespace boost
23866: {
23866: namespace range_detail
23866: {
23866:
23866: template<class DataMemberPtr>
23866: class safe_bool
23866: {
23866: public:
23866: typedef safe_bool this_type;
23866: # 56 "/usr/include/boost/range/detail/safe_bool.hpp" 3 4
23866: typedef DataMemberPtr unspecified_bool_type;
23866: static unspecified_bool_type to_unspecified_bool(const bool x, DataMemberPtr p)
23866: {
23866: return x ? p : 0;
23866: }
23866:
23866: private:
23866: safe_bool();
23866: safe_bool(const safe_bool&);
23866: void operator=(const safe_bool&);
23866: ~safe_bool();
23866: };
23866:
23866: }
23866: }
23866: # 44 "/usr/include/boost/range/iterator_range_core.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/next_prior.hpp" 1 3 4
23866: # 16 "/usr/include/boost/next_prior.hpp" 3 4
23866: #define BOOST_NEXT_PRIOR_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/has_plus.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/has_plus.hpp" 3 4
23866: #define BOOST_TT_HAS_PLUS_HPP_INCLUDED
23866:
23866: #define BOOST_TT_TRAIT_NAME has_plus
23866: #define BOOST_TT_TRAIT_OP +
23866: #define BOOST_TT_FORBIDDEN_IF ( ( ::boost::is_pointer< Lhs_noref >::value && ::boost::is_pointer< Rhs_noref >::value ) || ( ::boost::is_pointer< Lhs_noref >::value && ::boost::is_void< Lhs_noptr >::value && ::boost::is_fundamental< Rhs_nocv >::value ) || ( ::boost::is_pointer< Rhs_noref >::value && ::boost::is_void< Rhs_noptr >::value && ::boost::is_fundamental< Lhs_nocv >::value ) || ( ::boost::is_pointer< Lhs_noref >::value && ::boost::is_fundamental< Rhs_nocv >::value && (! ::boost::is_integral< Rhs_noref >::value ) ) || ( ::boost::is_pointer< Rhs_noref >::value && ::boost::is_fundamental< Lhs_nocv >::value && (! ::boost::is_integral< Lhs_noref >::value ) ) )
23866: # 48 "/usr/include/boost/type_traits/has_plus.hpp" 3 4
23866: # 1 "/usr/include/boost/type_traits/detail/has_binary_operator.hpp" 1 3 4
23866: # 25 "/usr/include/boost/type_traits/detail/has_binary_operator.hpp" 3 4
23866:
23866: # 26 "/usr/include/boost/type_traits/detail/has_binary_operator.hpp" 3
23866: # 37 "/usr/include/boost/type_traits/detail/has_binary_operator.hpp" 3
23866: # 1 "/usr/include/boost/type_traits/make_void.hpp" 1 3 4
23866: # 11 "/usr/include/boost/type_traits/make_void.hpp" 3 4
23866: #define BOOST_TT_MAKE_VOID_HPP_INCLUDED
23866:
23866:
23866:
23866: namespace boost {
23866:
23866:
23866: template<class...>
23866: struct make_void {
23866: typedef void type;
23866: };
23866:
23866:
23866: template<class... Ts>
23866: using void_t = typename make_void<Ts...>::type;
23866: # 50 "/usr/include/boost/type_traits/make_void.hpp" 3 4
23866: }
23866: # 38 "/usr/include/boost/type_traits/detail/has_binary_operator.hpp" 2 3
23866:
23866:
23866:
23866:
23866:
23866: namespace boost
23866: {
23866:
23866: namespace binary_op_detail {
23866:
23866: struct dont_care;
23866:
23866: template <class T, class U, class Ret, class = void>
23866: struct has_plus_ret_imp : public boost::false_type {};
23866:
23866: template <class T, class U, class Ret>
23866: struct has_plus_ret_imp<T, U, Ret, typename boost::make_void<decltype(std::declval<typename add_reference<T>::type>() + std::declval<typename add_reference<U>::type>())>::type>
23866: : public boost::integral_constant<bool, ::boost::is_convertible<decltype(std::declval<typename add_reference<T>::type>() + std::declval<typename add_reference<U>::type>()), Ret>::value> {};
23866:
23866: template <class T, class U, class = void >
23866: struct has_plus_void_imp : public boost::false_type {};
23866:
23866: template <class T, class U>
23866: struct has_plus_void_imp<T, U, typename boost::make_void<decltype(std::declval<typename add_reference<T>::type>() + std::declval<typename add_reference<U>::type>())>::type>
23866: : public boost::integral_constant<bool, ::boost::is_void<decltype(std::declval<typename add_reference<T>::type>() + std::declval<typename add_reference<U>::type>())>::value> {};
23866:
23866: template <class T, class U, class = void>
23866: struct has_plus_dc_imp : public boost::false_type {};
23866:
23866: template <class T, class U>
23866: struct has_plus_dc_imp<T, U, typename boost::make_void<decltype(std::declval<typename add_reference<T>::type>() + std::declval<typename add_reference<U>::type>())>::type>
23866: : public boost::true_type {};
23866:
23866: }
23866:
23866: template <class T, class U = T, class Ret = boost::binary_op_detail::dont_care>
23866: struct has_plus : public boost::binary_op_detail:: has_plus_ret_imp <T, U, Ret> {};
23866: template <class T, class U>
23866: struct has_plus<T, U, void> : public boost::binary_op_detail:: has_plus_void_imp <T, U> {};
23866: template <class T, class U>
23866: struct has_plus<T, U, boost::binary_op_detail::dont_care> : public boost::binary_op_detail:: has_plus_dc_imp <T, U> {};
23866:
23866:
23866: }
23866: # 49 "/usr/include/boost/type_traits/has_plus.hpp" 2 3 4
23866:
23866: #undef BOOST_TT_TRAIT_NAME
23866: #undef BOOST_TT_TRAIT_OP
23866: #undef BOOST_TT_FORBIDDEN_IF
23866: # 22 "/usr/include/boost/next_prior.hpp" 2 3 4
23866: # 1 "/usr/include/boost/type_traits/has_plus_assign.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/has_plus_assign.hpp" 3 4
23866: #define BOOST_TT_HAS_PLUS_ASSIGN_HPP_INCLUDED
23866: # 28 "/usr/include/boost/type_traits/has_plus_assign.hpp" 3 4
23866:
23866: # 29 "/usr/include/boost/type_traits/has_plus_assign.hpp" 3
23866: # 52 "/usr/include/boost/type_traits/has_plus_assign.hpp" 3
23866: namespace boost
23866: {
23866:
23866: namespace binary_op_detail {
23866:
23866: struct dont_care;
23866:
23866: template <class T, class U, class Ret, class = void>
23866: struct has_plus_assign_ret_imp : public boost::false_type {};
23866:
23866: template <class T, class U, class Ret>
23866: struct has_plus_assign_ret_imp<T, U, Ret, typename boost::make_void<decltype(std::declval<typename add_reference<T>::type>() += std::declval<typename add_reference<U>::type>())>::type>
23866: : public boost::integral_constant<bool, ::boost::is_convertible<decltype(std::declval<typename add_reference<T>::type>() += std::declval<typename add_reference<U>::type>()), Ret>::value> {};
23866:
23866: template <class T, class U, class = void >
23866: struct has_plus_assign_void_imp : public boost::false_type {};
23866:
23866: template <class T, class U>
23866: struct has_plus_assign_void_imp<T, U, typename boost::make_void<decltype(std::declval<typename add_reference<T>::type>() += std::declval<typename add_reference<U>::type>())>::type>
23866: : public boost::integral_constant<bool, ::boost::is_void<decltype(std::declval<typename add_reference<T>::type>() += std::declval<typename add_reference<U>::type>())>::value> {};
23866:
23866: template <class T, class U, class = void>
23866: struct has_plus_assign_dc_imp : public boost::false_type {};
23866:
23866: template <class T, class U>
23866: struct has_plus_assign_dc_imp<T, U, typename boost::make_void<decltype(std::declval<typename add_reference<T>::type>() += std::declval<typename add_reference<U>::type>())>::type>
23866: : public boost::true_type {};
23866:
23866: template <class T, class U, class Ret>
23866: struct has_plus_assign_filter_ret : public boost::binary_op_detail:: has_plus_assign_ret_imp <T, U, Ret> {};
23866: template <class T, class U>
23866: struct has_plus_assign_filter_ret<T, U, void> : public boost::binary_op_detail:: has_plus_assign_void_imp <T, U> {};
23866: template <class T, class U>
23866: struct has_plus_assign_filter_ret<T, U, boost::binary_op_detail::dont_care> : public boost::binary_op_detail:: has_plus_assign_dc_imp <T, U> {};
23866:
23866: template <class T, class U, class Ret, bool f>
23866: struct has_plus_assign_filter_impossible : public boost::binary_op_detail:: has_plus_assign_filter_ret <T, U, Ret> {};
23866: template <class T, class U, class Ret>
23866: struct has_plus_assign_filter_impossible<T, U, Ret, true> : public boost::false_type {};
23866:
23866: }
23866:
23866: template <class T, class U = T, class Ret = boost::binary_op_detail::dont_care>
23866: struct has_plus_assign : public boost::binary_op_detail:: has_plus_assign_filter_impossible <T, U, Ret, boost::is_arithmetic<typename boost::remove_reference<T>::type>::value && boost::is_pointer<typename remove_reference<U>::type>::value && !boost::is_same<bool, typename boost::remove_cv<typename remove_reference<T>::type>::type>::value> {};
23866:
23866: }
23866: # 23 "/usr/include/boost/next_prior.hpp" 2 3 4
23866: # 1 "/usr/include/boost/type_traits/has_minus.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/has_minus.hpp" 3 4
23866: #define BOOST_TT_HAS_MINUS_HPP_INCLUDED
23866: # 28 "/usr/include/boost/type_traits/has_minus.hpp" 3 4
23866:
23866: # 29 "/usr/include/boost/type_traits/has_minus.hpp" 3
23866: # 48 "/usr/include/boost/type_traits/has_minus.hpp" 3
23866: namespace boost
23866: {
23866:
23866: namespace binary_op_detail {
23866:
23866: struct dont_care;
23866:
23866: template <class T, class U, class Ret, class = void>
23866: struct has_minus_ret_imp : public boost::false_type {};
23866:
23866: template <class T, class U, class Ret>
23866: struct has_minus_ret_imp<T, U, Ret, typename boost::make_void<decltype(std::declval<typename add_reference<T>::type>() - std::declval<typename add_reference<U>::type>())>::type>
23866: : public boost::integral_constant<bool, ::boost::is_convertible<decltype(std::declval<typename add_reference<T>::type>() - std::declval<typename add_reference<U>::type>()), Ret>::value> {};
23866:
23866: template <class T, class U, class = void >
23866: struct has_minus_void_imp : public boost::false_type {};
23866:
23866: template <class T, class U>
23866: struct has_minus_void_imp<T, U, typename boost::make_void<decltype(std::declval<typename add_reference<T>::type>() - std::declval<typename add_reference<U>::type>())>::type>
23866: : public boost::integral_constant<bool, ::boost::is_void<decltype(std::declval<typename add_reference<T>::type>() - std::declval<typename add_reference<U>::type>())>::value> {};
23866:
23866: template <class T, class U, class = void>
23866: struct has_minus_dc_imp : public boost::false_type {};
23866:
23866: template <class T, class U>
23866: struct has_minus_dc_imp<T, U, typename boost::make_void<decltype(std::declval<typename add_reference<T>::type>() - std::declval<typename add_reference<U>::type>())>::type>
23866: : public boost::true_type {};
23866:
23866: template <class T, class U, class Ret>
23866: struct has_minus_ret_filter : public boost::binary_op_detail::has_minus_ret_imp <T, U, Ret> {};
23866: template <class T, class U>
23866: struct has_minus_ret_filter<T, U, void> : public boost::binary_op_detail::has_minus_void_imp <T, U> {};
23866: template <class T, class U>
23866: struct has_minus_ret_filter<T, U, boost::binary_op_detail::dont_care> : public boost::binary_op_detail::has_minus_dc_imp <T, U> {};
23866:
23866: template <class T, class U, class Ret, bool b>
23866: struct has_minus_void_ptr_filter : public boost::binary_op_detail::has_minus_ret_filter <T, U, Ret> {};
23866: template <class T, class U, class Ret>
23866: struct has_minus_void_ptr_filter<T, U, Ret, true> : public boost::false_type {};
23866:
23866: }
23866:
23866: template <class T, class U = T, class Ret = boost::binary_op_detail::dont_care>
23866: struct has_minus :
23866: public boost::binary_op_detail::has_minus_void_ptr_filter<
23866: T, U, Ret,
23866: boost::is_void<typename remove_pointer<typename remove_reference<T>::type>::type>::value
23866: || boost::is_void<typename remove_pointer<typename remove_reference<U>::type>::type>::value> {};
23866:
23866:
23866: }
23866: # 24 "/usr/include/boost/next_prior.hpp" 2 3 4
23866: # 1 "/usr/include/boost/type_traits/has_minus_assign.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/has_minus_assign.hpp" 3 4
23866: #define BOOST_TT_has_minus_assign_ASSIGN_HPP_INCLUDED
23866: # 28 "/usr/include/boost/type_traits/has_minus_assign.hpp" 3 4
23866:
23866: # 29 "/usr/include/boost/type_traits/has_minus_assign.hpp" 3
23866: # 49 "/usr/include/boost/type_traits/has_minus_assign.hpp" 3
23866: namespace boost
23866: {
23866:
23866: namespace binary_op_detail {
23866:
23866: struct dont_care;
23866:
23866: template <class T, class U, class Ret, class = void>
23866: struct has_minus_assign_ret_imp : public boost::false_type {};
23866:
23866: template <class T, class U, class Ret>
23866: struct has_minus_assign_ret_imp<T, U, Ret, typename boost::make_void<decltype(std::declval<typename add_reference<T>::type>() -= std::declval<typename add_reference<U>::type>())>::type>
23866: : public boost::integral_constant<bool, ::boost::is_convertible<decltype(std::declval<typename add_reference<T>::type>() -= std::declval<typename add_reference<U>::type>()), Ret>::value> {};
23866:
23866: template <class T, class U, class = void >
23866: struct has_minus_assign_void_imp : public boost::false_type {};
23866:
23866: template <class T, class U>
23866: struct has_minus_assign_void_imp<T, U, typename boost::make_void<decltype(std::declval<typename add_reference<T>::type>() -= std::declval<typename add_reference<U>::type>())>::type>
23866: : public boost::integral_constant<bool, ::boost::is_void<decltype(std::declval<typename add_reference<T>::type>() -= std::declval<typename add_reference<U>::type>())>::value> {};
23866:
23866: template <class T, class U, class = void>
23866: struct has_minus_assign_dc_imp : public boost::false_type {};
23866:
23866: template <class T, class U>
23866: struct has_minus_assign_dc_imp<T, U, typename boost::make_void<decltype(std::declval<typename add_reference<T>::type>() -= std::declval<typename add_reference<U>::type>())>::type>
23866: : public boost::true_type {};
23866:
23866: template <class T, class U, class Ret>
23866: struct has_minus_assign_ret_filter : public boost::binary_op_detail::has_minus_assign_ret_imp <T, U, Ret> {};
23866: template <class T, class U>
23866: struct has_minus_assign_ret_filter<T, U, void> : public boost::binary_op_detail::has_minus_assign_void_imp <T, U> {};
23866: template <class T, class U>
23866: struct has_minus_assign_ret_filter<T, U, boost::binary_op_detail::dont_care> : public boost::binary_op_detail::has_minus_assign_dc_imp <T, U> {};
23866:
23866: template <class T, class U, class Ret, bool b>
23866: struct has_minus_assign_void_ptr_filter : public boost::binary_op_detail::has_minus_assign_ret_filter <T, U, Ret> {};
23866: template <class T, class U, class Ret>
23866: struct has_minus_assign_void_ptr_filter<T, U, Ret, true> : public boost::false_type {};
23866:
23866: }
23866:
23866: template <class T, class U = T, class Ret = boost::binary_op_detail::dont_care>
23866: struct has_minus_assign :
23866: public boost::binary_op_detail::has_minus_assign_void_ptr_filter<
23866: T, U, Ret,
23866: boost::is_void<typename remove_pointer<typename remove_reference<T>::type>::type>::value
23866: || boost::is_void<typename remove_pointer<typename remove_reference<U>::type>::type>::value
23866: || (boost::is_pointer<typename remove_reference<T>::type>::value && boost::is_pointer<typename remove_reference<U>::type>::value)> {};
23866:
23866:
23866: }
23866: # 25 "/usr/include/boost/next_prior.hpp" 2 3 4
23866: # 1 "/usr/include/boost/iterator/advance.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_ITERATOR_ADVANCE_HPP
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace iterators {
23866:
23866: namespace detail {
23866: template <typename InputIterator, typename Distance>
23866: inline constexpr void
23866: advance_impl(
23866: InputIterator& it
23866: , Distance n
23866: , incrementable_traversal_tag
23866: )
23866: {
23866: while (n > 0) {
23866: ++it;
23866: --n;
23866: }
23866: }
23866:
23866: template <typename BidirectionalIterator, typename Distance>
23866: inline constexpr void
23866: advance_impl(
23866: BidirectionalIterator& it
23866: , Distance n
23866: , bidirectional_traversal_tag
23866: )
23866: {
23866: if (n >= 0) {
23866: while (n > 0) {
23866: ++it;
23866: --n;
23866: }
23866: }
23866: else {
23866: while (n < 0) {
23866: --it;
23866: ++n;
23866: }
23866: }
23866: }
23866:
23866: template <typename RandomAccessIterator, typename Distance>
23866: inline constexpr void
23866: advance_impl(
23866: RandomAccessIterator& it
23866: , Distance n
23866: , random_access_traversal_tag
23866: )
23866: {
23866: it += n;
23866: }
23866: }
23866:
23866: namespace advance_adl_barrier {
23866: template <typename InputIterator, typename Distance>
23866: inline constexpr void
23866: advance(InputIterator& it, Distance n)
23866: {
23866: detail::advance_impl(
23866: it, n, typename iterator_traversal<InputIterator>::type()
23866: );
23866: }
23866: }
23866:
23866: using namespace advance_adl_barrier;
23866:
23866: }
23866:
23866: using namespace iterators::advance_adl_barrier;
23866:
23866: }
23866: # 26 "/usr/include/boost/next_prior.hpp" 2 3 4
23866:
23866:
23866: namespace boost {
23866: # 40 "/usr/include/boost/next_prior.hpp" 3 4
23866: namespace next_prior_detail {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template< typename T, typename Void = void >
23866: struct is_iterator_class
23866: {
23866: static constexpr bool value = false;
23866: };
23866:
23866: template< typename T >
23866: struct is_iterator_class<
23866: T,
23866: typename enable_if_has_type<
23866:
23866: typename std::iterator_traits< T >::iterator_category
23866:
23866:
23866:
23866: >::type
23866: >
23866: {
23866: static constexpr bool value = true;
23866: };
23866:
23866: template< typename T >
23866: struct is_iterator :
23866: public is_iterator_class< T >
23866: {
23866: };
23866:
23866: template< typename T >
23866: struct is_iterator< T* >
23866: {
23866: static constexpr bool value = true;
23866: };
23866:
23866:
23866: template< typename T, typename Distance, bool HasPlus = has_plus< T, Distance >::value >
23866: struct next_plus_impl;
23866:
23866: template< typename T, typename Distance >
23866: struct next_plus_impl< T, Distance, true >
23866: {
23866: static T call(T x, Distance n)
23866: {
23866: return x + n;
23866: }
23866: };
23866:
23866: template< typename T, typename Distance, bool HasPlusAssign = has_plus_assign< T, Distance >::value >
23866: struct next_plus_assign_impl :
23866: public next_plus_impl< T, Distance >
23866: {
23866: };
23866:
23866: template< typename T, typename Distance >
23866: struct next_plus_assign_impl< T, Distance, true >
23866: {
23866: static T call(T x, Distance n)
23866: {
23866: x += n;
23866: return x;
23866: }
23866: };
23866:
23866: template< typename T, typename Distance, bool IsIterator = is_iterator< T >::value >
23866: struct next_advance_impl :
23866: public next_plus_assign_impl< T, Distance >
23866: {
23866: };
23866:
23866: template< typename T, typename Distance >
23866: struct next_advance_impl< T, Distance, true >
23866: {
23866: static T call(T x, Distance n)
23866: {
23866: boost::iterators::advance(x, n);
23866: return x;
23866: }
23866: };
23866:
23866:
23866: template< typename T, typename Distance, bool HasMinus = has_minus< T, Distance >::value >
23866: struct prior_minus_impl;
23866:
23866: template< typename T, typename Distance >
23866: struct prior_minus_impl< T, Distance, true >
23866: {
23866: static T call(T x, Distance n)
23866: {
23866: return x - n;
23866: }
23866: };
23866:
23866: template< typename T, typename Distance, bool HasMinusAssign = has_minus_assign< T, Distance >::value >
23866: struct prior_minus_assign_impl :
23866: public prior_minus_impl< T, Distance >
23866: {
23866: };
23866:
23866: template< typename T, typename Distance >
23866: struct prior_minus_assign_impl< T, Distance, true >
23866: {
23866: static T call(T x, Distance n)
23866: {
23866: x -= n;
23866: return x;
23866: }
23866: };
23866:
23866: template< typename T, typename Distance, bool IsIterator = is_iterator< T >::value >
23866: struct prior_advance_impl :
23866: public prior_minus_assign_impl< T, Distance >
23866: {
23866: };
23866:
23866: template< typename T, typename Distance >
23866: struct prior_advance_impl< T, Distance, true >
23866: {
23866: static T call(T x, Distance n)
23866: {
23866:
23866: boost::iterators::reverse_iterator< T > rx(x);
23866: boost::iterators::advance(rx, n);
23866: return rx.base();
23866: }
23866: };
23866:
23866: }
23866:
23866: template <class T>
23866: inline T next(T x) { return ++x; }
23866:
23866: template <class T, class Distance>
23866: inline T next(T x, Distance n)
23866: {
23866: return next_prior_detail::next_advance_impl< T, Distance >::call(x, n);
23866: }
23866:
23866: template <class T>
23866: inline T prior(T x) { return --x; }
23866:
23866: template <class T, class Distance>
23866: inline T prior(T x, Distance n)
23866: {
23866: return next_prior_detail::prior_advance_impl< T, Distance >::call(x, n);
23866: }
23866:
23866: }
23866: # 46 "/usr/include/boost/range/iterator_range_core.hpp" 2 3 4
23866: # 57 "/usr/include/boost/range/iterator_range_core.hpp" 3 4
23866: namespace boost
23866: {
23866: namespace iterator_range_detail
23866: {
23866:
23866:
23866:
23866:
23866: template<class IteratorT>
23866: struct iterator_range_impl {
23866: template< class ForwardRange >
23866: static IteratorT adl_begin( ForwardRange& r )
23866: {
23866: return IteratorT( boost::begin( r ) );
23866: }
23866:
23866: template< class ForwardRange >
23866: static IteratorT adl_end( ForwardRange& r )
23866: {
23866: return IteratorT( boost::end( r ) );
23866: }
23866: };
23866:
23866: template< class Left, class Right >
23866: inline bool less_than( const Left& l, const Right& r )
23866: {
23866: return std::lexicographical_compare( boost::begin(l),
23866: boost::end(l),
23866: boost::begin(r),
23866: boost::end(r) );
23866: }
23866:
23866: template< class Left, class Right >
23866: inline bool greater_than( const Left& l, const Right& r )
23866: {
23866: return iterator_range_detail::less_than(r,l);
23866: }
23866:
23866: template< class Left, class Right >
23866: inline bool less_or_equal_than( const Left& l, const Right& r )
23866: {
23866: return !iterator_range_detail::less_than(r,l);
23866: }
23866:
23866: template< class Left, class Right >
23866: inline bool greater_or_equal_than( const Left& l, const Right& r )
23866: {
23866: return !iterator_range_detail::less_than(l,r);
23866: }
23866:
23866:
23866:
23866: template< class Left, class Right >
23866: inline bool equal(const Left& l, const Right& r)
23866: {
23866: return boost::equal(l, r);
23866: }
23866:
23866: struct range_tag
23866: {
23866: };
23866:
23866: struct const_range_tag
23866: {
23866: };
23866:
23866: struct iterator_range_tag
23866: {
23866: };
23866:
23866: typedef char (&incrementable_t)[1];
23866: typedef char (&bidirectional_t)[2];
23866: typedef char (&random_access_t)[3];
23866:
23866: incrementable_t test_traversal_tag(boost::incrementable_traversal_tag);
23866: bidirectional_t test_traversal_tag(boost::bidirectional_traversal_tag);
23866: random_access_t test_traversal_tag(boost::random_access_traversal_tag);
23866:
23866: template<std::size_t S>
23866: struct pure_iterator_traversal_impl
23866: {
23866: typedef boost::incrementable_traversal_tag type;
23866: };
23866:
23866: template<>
23866: struct pure_iterator_traversal_impl<sizeof(bidirectional_t)>
23866: {
23866: typedef boost::bidirectional_traversal_tag type;
23866: };
23866:
23866: template<>
23866: struct pure_iterator_traversal_impl<sizeof(random_access_t)>
23866: {
23866: typedef boost::random_access_traversal_tag type;
23866: };
23866:
23866: template<typename IteratorT>
23866: struct pure_iterator_traversal
23866: {
23866: typedef
23866: typename iterator_traversal<IteratorT>::type
23866: traversal_t;
23866: static const std::size_t traversal_i = sizeof(iterator_range_detail::test_traversal_tag((traversal_t())))
23866:
23866:
23866: ;
23866: typedef
23866: typename pure_iterator_traversal_impl<traversal_i>::type
23866: type;
23866: };
23866:
23866: template<class IteratorT, class TraversalTag>
23866: class iterator_range_base
23866: : public iterator_range_tag
23866: {
23866: typedef range_detail::safe_bool<
23866: IteratorT iterator_range_base<IteratorT, TraversalTag>::*
23866: > safe_bool_t;
23866:
23866: typedef iterator_range_base<IteratorT, TraversalTag> type;
23866:
23866: protected:
23866: typedef iterator_range_impl<IteratorT> impl;
23866:
23866: public:
23866: typedef typename
23866: safe_bool_t::unspecified_bool_type unspecified_bool_type;
23866:
23866: typedef typename
23866: iterator_value<IteratorT>::type value_type;
23866:
23866: typedef typename
23866: iterator_difference<IteratorT>::type difference_type;
23866:
23866: typedef std::size_t size_type;
23866:
23866:
23866:
23866: typedef typename
23866: iterator_reference<IteratorT>::type reference;
23866:
23866:
23866:
23866:
23866:
23866:
23866: typedef IteratorT const_iterator;
23866:
23866: typedef IteratorT iterator;
23866:
23866: protected:
23866: iterator_range_base()
23866: : m_Begin()
23866: , m_End()
23866: {
23866: }
23866:
23866: template<class Iterator>
23866: iterator_range_base(Iterator Begin, Iterator End)
23866: : m_Begin(Begin)
23866: , m_End(End)
23866: {
23866: }
23866:
23866: public:
23866: IteratorT begin() const
23866: {
23866: return m_Begin;
23866: }
23866:
23866: IteratorT end() const
23866: {
23866: return m_End;
23866: }
23866:
23866: bool empty() const
23866: {
23866: return m_Begin == m_End;
23866: }
23866:
23866: operator unspecified_bool_type() const
23866: {
23866: return safe_bool_t::to_unspecified_bool(
23866: m_Begin != m_End, &iterator_range_base::m_Begin);
23866: }
23866:
23866: bool operator!() const
23866: {
23866: return empty();
23866: }
23866:
23866: bool equal(const iterator_range_base& r) const
23866: {
23866: return m_Begin == r.m_Begin && m_End == r.m_End;
23866: }
23866:
23866: reference front() const
23866: {
23866: (static_cast <bool> (!empty()) ? void (0) : __assert_fail ("!empty()", "/usr/include/boost/range/iterator_range_core.hpp", 255, __extension__ __PRETTY_FUNCTION__));
23866: return *m_Begin;
23866: }
23866:
23866: void drop_front()
23866: {
23866: (static_cast <bool> (!empty()) ? void (0) : __assert_fail ("!empty()", "/usr/include/boost/range/iterator_range_core.hpp", 261, __extension__ __PRETTY_FUNCTION__));
23866: ++m_Begin;
23866: }
23866:
23866: void drop_front(difference_type n)
23866: {
23866: (static_cast <bool> (n >= difference_type()) ? void (0) : __assert_fail ("n >= difference_type()", "/usr/include/boost/range/iterator_range_core.hpp", 267, __extension__ __PRETTY_FUNCTION__));
23866: std::advance(this->m_Begin, n);
23866: }
23866:
23866:
23866: void pop_front() { drop_front(); }
23866:
23866: protected:
23866: template<class Iterator>
23866: void assign(Iterator first, Iterator last)
23866: {
23866: m_Begin = first;
23866: m_End = last;
23866: }
23866:
23866: template<class SinglePassRange>
23866: void assign(const SinglePassRange& r)
23866: {
23866: m_Begin = impl::adl_begin(r);
23866: m_End = impl::adl_end(r);
23866: }
23866:
23866: template<class SinglePassRange>
23866: void assign(SinglePassRange& r)
23866: {
23866: m_Begin = impl::adl_begin(r);
23866: m_End = impl::adl_end(r);
23866: }
23866:
23866: IteratorT m_Begin;
23866: IteratorT m_End;
23866: };
23866:
23866: template<class IteratorT>
23866: class iterator_range_base<IteratorT, bidirectional_traversal_tag>
23866: : public iterator_range_base<IteratorT, incrementable_traversal_tag>
23866: {
23866: typedef iterator_range_base<IteratorT, incrementable_traversal_tag> base_type;
23866:
23866: protected:
23866: iterator_range_base()
23866: {
23866: }
23866:
23866: template<class Iterator>
23866: iterator_range_base(Iterator first, Iterator last)
23866: : base_type(first, last)
23866: {
23866: }
23866:
23866: public:
23866: typedef typename base_type::difference_type difference_type;
23866: typedef typename base_type::reference reference;
23866:
23866: reference back() const
23866: {
23866: (static_cast <bool> (!this->empty()) ? void (0) : __assert_fail ("!this->empty()", "/usr/include/boost/range/iterator_range_core.hpp", 323, __extension__ __PRETTY_FUNCTION__));
23866: return *boost::prior(this->m_End);
23866: }
23866:
23866: void drop_back()
23866: {
23866: (static_cast <bool> (!this->empty()) ? void (0) : __assert_fail ("!this->empty()", "/usr/include/boost/range/iterator_range_core.hpp", 329, __extension__ __PRETTY_FUNCTION__));
23866: --this->m_End;
23866: }
23866:
23866: void drop_back(difference_type n)
23866: {
23866: (static_cast <bool> (n >= difference_type()) ? void (0) : __assert_fail ("n >= difference_type()", "/usr/include/boost/range/iterator_range_core.hpp", 335, __extension__ __PRETTY_FUNCTION__));
23866: std::advance(this->m_End, -n);
23866: }
23866:
23866:
23866: void pop_back() { drop_back(); }
23866: };
23866:
23866: template<class IteratorT>
23866: class iterator_range_base<IteratorT, random_access_traversal_tag>
23866: : public iterator_range_base<IteratorT, bidirectional_traversal_tag>
23866: {
23866: typedef iterator_range_base<
23866: IteratorT, bidirectional_traversal_tag> base_type;
23866:
23866: public:
23866: typedef typename
23866: boost::mpl::if_<
23866: boost::mpl::or_<
23866: boost::is_abstract<
23866: typename base_type::value_type
23866: >,
23866: boost::is_array<
23866: typename base_type::value_type
23866: >,
23866: boost::is_function<
23866: typename base_type::value_type
23866: >
23866: >,
23866: typename base_type::reference,
23866: typename base_type::value_type
23866: >::type abstract_value_type;
23866:
23866:
23866:
23866:
23866: typedef typename base_type::difference_type difference_type;
23866: typedef typename base_type::size_type size_type;
23866: typedef typename base_type::reference reference;
23866:
23866: protected:
23866: iterator_range_base()
23866: {
23866: }
23866:
23866: template<class Iterator>
23866: iterator_range_base(Iterator first, Iterator last)
23866: : base_type(first, last)
23866: {
23866: }
23866:
23866: public:
23866: reference operator[](difference_type at) const
23866: {
23866: (static_cast <bool> (at >= 0) ? void (0) : __assert_fail ("at >= 0", "/usr/include/boost/range/iterator_range_core.hpp", 389, __extension__ __PRETTY_FUNCTION__));
23866: (static_cast <bool> (static_cast<typename base_type::size_type>(at) < size()) ? void (0) : __assert_fail ("static_cast<typename base_type::size_type>(at) < size()", "/usr/include/boost/range/iterator_range_core.hpp", 390, __extension__ __PRETTY_FUNCTION__));
23866: return this->m_Begin[at];
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: abstract_value_type operator()(difference_type at) const
23866: {
23866: (static_cast <bool> (at >= 0) ? void (0) : __assert_fail ("at >= 0", "/usr/include/boost/range/iterator_range_core.hpp", 401, __extension__ __PRETTY_FUNCTION__));
23866: (static_cast <bool> (static_cast<typename base_type::size_type>(at) < size()) ? void (0) : __assert_fail ("static_cast<typename base_type::size_type>(at) < size()", "/usr/include/boost/range/iterator_range_core.hpp", 402, __extension__ __PRETTY_FUNCTION__));
23866: return this->m_Begin[at];
23866: }
23866:
23866: typename base_type::size_type size() const
23866: {
23866: return this->m_End - this->m_Begin;
23866: }
23866: };
23866:
23866: }
23866: # 433 "/usr/include/boost/range/iterator_range_core.hpp" 3 4
23866: template<class IteratorT>
23866: class iterator_range
23866: : public iterator_range_detail::iterator_range_base<
23866: IteratorT,
23866: typename iterator_range_detail::pure_iterator_traversal<IteratorT>::type
23866: >
23866: {
23866: typedef iterator_range_detail::iterator_range_base<
23866: IteratorT,
23866: typename iterator_range_detail::pure_iterator_traversal<IteratorT>::type
23866: > base_type;
23866:
23866: template<class Source>
23866: struct is_compatible_range_
23866: : is_convertible<
23866: typename mpl::eval_if<
23866: has_range_iterator<Source>,
23866: range_iterator<Source>,
23866: mpl::identity<void>
23866: >::type,
23866: typename base_type::iterator
23866: >
23866: {
23866: };
23866:
23866: template<class Source>
23866: struct is_compatible_range
23866: : mpl::and_<
23866: mpl::not_<
23866: is_convertible<
23866: Source,
23866: typename base_type::iterator
23866: >
23866: >,
23866: is_compatible_range_<Source>
23866: >
23866: {
23866: };
23866:
23866: protected:
23866: typedef iterator_range_detail::iterator_range_impl<IteratorT> impl;
23866:
23866: public:
23866: typedef iterator_range<IteratorT> type;
23866:
23866: iterator_range()
23866: {
23866: }
23866:
23866: template<class Iterator>
23866: iterator_range(Iterator first, Iterator last)
23866: : base_type(first, last)
23866: {
23866: }
23866:
23866: template<class SinglePassRange>
23866: iterator_range(
23866: const SinglePassRange& r,
23866: typename ::boost::enable_if<
23866: is_compatible_range<const SinglePassRange>
23866: >::type* = 0
23866: )
23866: : base_type(impl::adl_begin(r), impl::adl_end(r))
23866: {
23866: }
23866:
23866: template<class SinglePassRange>
23866: iterator_range(
23866: SinglePassRange& r,
23866: typename ::boost::enable_if<
23866: is_compatible_range<SinglePassRange>
23866: >::type* = 0
23866: )
23866: : base_type(impl::adl_begin(r), impl::adl_end(r))
23866: {
23866: }
23866:
23866: template<class SinglePassRange>
23866: iterator_range(const SinglePassRange& r,
23866: iterator_range_detail::const_range_tag)
23866: : base_type(impl::adl_begin(r), impl::adl_end(r))
23866: {
23866: }
23866:
23866: template<class SinglePassRange>
23866: iterator_range(SinglePassRange& r,
23866: iterator_range_detail::range_tag)
23866: : base_type(impl::adl_begin(r), impl::adl_end(r))
23866: {
23866: }
23866:
23866: template<class Iterator>
23866: iterator_range& operator=(const iterator_range<Iterator>& other)
23866: {
23866: this->assign(other.begin(), other.end());
23866: return *this;
23866: }
23866:
23866: template<class Iterator>
23866: iterator_range& operator=(iterator_range<Iterator>& other)
23866: {
23866: this->assign(other.begin(), other.end());
23866: return *this;
23866: }
23866:
23866: template<class SinglePassRange>
23866: iterator_range& operator=(SinglePassRange& r)
23866: {
23866: this->assign(r);
23866: return *this;
23866: }
23866:
23866: template<class SinglePassRange>
23866: iterator_range& operator=(const SinglePassRange& r)
23866: {
23866: this->assign(r);
23866: return *this;
23866: }
23866:
23866: iterator_range& advance_begin(
23866: typename base_type::difference_type n)
23866: {
23866: std::advance(this->m_Begin, n);
23866: return *this;
23866: }
23866:
23866: iterator_range& advance_end(
23866: typename base_type::difference_type n)
23866: {
23866: std::advance(this->m_End, n);
23866: return *this;
23866: }
23866:
23866: protected:
23866:
23866:
23866:
23866:
23866: typedef iterator_range iterator_range_;
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template< class IteratorT, class ForwardRange >
23866: inline typename boost::enable_if<
23866: mpl::not_<is_base_and_derived<iterator_range_detail::iterator_range_tag, ForwardRange> >,
23866: bool
23866: >::type
23866: operator==( const ForwardRange& l, const iterator_range<IteratorT>& r )
23866: {
23866: return boost::equal( l, r );
23866: }
23866:
23866: template< class IteratorT, class ForwardRange >
23866: inline typename boost::enable_if<
23866: mpl::not_<boost::is_base_and_derived<iterator_range_detail::iterator_range_tag, ForwardRange> >,
23866: bool
23866: >::type
23866: operator!=( const ForwardRange& l, const iterator_range<IteratorT>& r )
23866: {
23866: return !boost::equal( l, r );
23866: }
23866:
23866: template< class IteratorT, class ForwardRange >
23866: inline typename boost::enable_if<
23866: mpl::not_<boost::is_base_and_derived<iterator_range_detail::iterator_range_tag, ForwardRange> >,
23866: bool
23866: >::type
23866: operator<( const ForwardRange& l, const iterator_range<IteratorT>& r )
23866: {
23866: return iterator_range_detail::less_than( l, r );
23866: }
23866:
23866: template< class IteratorT, class ForwardRange >
23866: inline typename boost::enable_if<
23866: mpl::not_<boost::is_base_and_derived<iterator_range_detail::iterator_range_tag, ForwardRange> >,
23866: bool
23866: >::type
23866: operator<=( const ForwardRange& l, const iterator_range<IteratorT>& r )
23866: {
23866: return iterator_range_detail::less_or_equal_than( l, r );
23866: }
23866:
23866: template< class IteratorT, class ForwardRange >
23866: inline typename boost::enable_if<
23866: mpl::not_<boost::is_base_and_derived<iterator_range_detail::iterator_range_tag, ForwardRange> >,
23866: bool
23866: >::type
23866: operator>( const ForwardRange& l, const iterator_range<IteratorT>& r )
23866: {
23866: return iterator_range_detail::greater_than( l, r );
23866: }
23866:
23866: template< class IteratorT, class ForwardRange >
23866: inline typename boost::enable_if<
23866: mpl::not_<boost::is_base_and_derived<iterator_range_detail::iterator_range_tag, ForwardRange> >,
23866: bool
23866: >::type
23866: operator>=( const ForwardRange& l, const iterator_range<IteratorT>& r )
23866: {
23866: return iterator_range_detail::greater_or_equal_than( l, r );
23866: }
23866:
23866: template< class Iterator1T, class Iterator2T >
23866: inline bool
23866: operator==( const iterator_range<Iterator1T>& l, const iterator_range<Iterator2T>& r )
23866: {
23866: return boost::equal( l, r );
23866: }
23866:
23866: template< class IteratorT, class ForwardRange >
23866: inline typename boost::enable_if<
23866: mpl::not_<boost::is_base_and_derived<iterator_range_detail::iterator_range_tag, ForwardRange> >,
23866: bool
23866: >::type
23866: operator==( const iterator_range<IteratorT>& l, const ForwardRange& r )
23866: {
23866: return boost::equal( l, r );
23866: }
23866:
23866:
23866: template< class Iterator1T, class Iterator2T >
23866: inline bool
23866: operator!=( const iterator_range<Iterator1T>& l, const iterator_range<Iterator2T>& r )
23866: {
23866: return !boost::equal( l, r );
23866: }
23866:
23866: template< class IteratorT, class ForwardRange >
23866: inline typename boost::enable_if<
23866: mpl::not_<boost::is_base_and_derived<iterator_range_detail::iterator_range_tag, ForwardRange> >,
23866: bool
23866: >::type
23866: operator!=( const iterator_range<IteratorT>& l, const ForwardRange& r )
23866: {
23866: return !boost::equal( l, r );
23866: }
23866:
23866:
23866: template< class Iterator1T, class Iterator2T >
23866: inline bool
23866: operator<( const iterator_range<Iterator1T>& l, const iterator_range<Iterator2T>& r )
23866: {
23866: return iterator_range_detail::less_than( l, r );
23866: }
23866:
23866: template< class IteratorT, class ForwardRange >
23866: inline typename boost::enable_if<
23866: mpl::not_<boost::is_base_and_derived<iterator_range_detail::iterator_range_tag, ForwardRange> >,
23866: bool
23866: >::type
23866: operator<( const iterator_range<IteratorT>& l, const ForwardRange& r )
23866: {
23866: return iterator_range_detail::less_than( l, r );
23866: }
23866:
23866: template< class Iterator1T, class Iterator2T >
23866: inline bool
23866: operator<=( const iterator_range<Iterator1T>& l, const iterator_range<Iterator2T>& r )
23866: {
23866: return iterator_range_detail::less_or_equal_than( l, r );
23866: }
23866:
23866: template< class IteratorT, class ForwardRange >
23866: inline typename boost::enable_if<
23866: mpl::not_<boost::is_base_and_derived<iterator_range_detail::iterator_range_tag, ForwardRange> >,
23866: bool
23866: >::type
23866: operator<=( const iterator_range<IteratorT>& l, const ForwardRange& r )
23866: {
23866: return iterator_range_detail::less_or_equal_than( l, r );
23866: }
23866:
23866: template< class Iterator1T, class Iterator2T >
23866: inline bool
23866: operator>( const iterator_range<Iterator1T>& l, const iterator_range<Iterator2T>& r )
23866: {
23866: return iterator_range_detail::greater_than( l, r );
23866: }
23866:
23866: template< class IteratorT, class ForwardRange >
23866: inline typename boost::enable_if<
23866: mpl::not_<boost::is_base_and_derived<iterator_range_detail::iterator_range_tag, ForwardRange> >,
23866: bool
23866: >::type
23866: operator>( const iterator_range<IteratorT>& l, const ForwardRange& r )
23866: {
23866: return iterator_range_detail::greater_than( l, r );
23866: }
23866:
23866: template< class Iterator1T, class Iterator2T >
23866: inline bool
23866: operator>=( const iterator_range<Iterator1T>& l, const iterator_range<Iterator2T>& r )
23866: {
23866: return iterator_range_detail::greater_or_equal_than( l, r );
23866: }
23866:
23866: template< class IteratorT, class ForwardRange >
23866: inline typename boost::enable_if<
23866: mpl::not_<boost::is_base_and_derived<iterator_range_detail::iterator_range_tag, ForwardRange> >,
23866: bool
23866: >::type
23866: operator>=( const iterator_range<IteratorT>& l, const ForwardRange& r )
23866: {
23866: return iterator_range_detail::greater_or_equal_than( l, r );
23866: }
23866: # 754 "/usr/include/boost/range/iterator_range_core.hpp" 3 4
23866: template< typename IteratorT >
23866: inline iterator_range< IteratorT >
23866: make_iterator_range( IteratorT Begin, IteratorT End )
23866: {
23866: return iterator_range<IteratorT>( Begin, End );
23866: }
23866:
23866: template<typename IteratorT, typename IntegerT>
23866: inline iterator_range<IteratorT>
23866: make_iterator_range_n(IteratorT first, IntegerT n)
23866: {
23866: return iterator_range<IteratorT>(first, boost::next(first, n));
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template< class ForwardRange >
23866: inline iterator_range< typename range_iterator<ForwardRange>::type >
23866: make_iterator_range( ForwardRange& r )
23866: {
23866: return iterator_range< typename range_iterator<ForwardRange>::type >
23866: ( r, iterator_range_detail::range_tag() );
23866: }
23866:
23866: template< class ForwardRange >
23866: inline iterator_range< typename range_iterator<const ForwardRange>::type >
23866: make_iterator_range( const ForwardRange& r )
23866: {
23866: return iterator_range< typename range_iterator<const ForwardRange>::type >
23866: ( r, iterator_range_detail::const_range_tag() );
23866: }
23866:
23866: namespace iterator_range_detail
23866: {
23866: template< class Range >
23866: inline iterator_range< typename range_iterator<Range>::type >
23866: make_range_impl( Range& r,
23866: typename range_difference<Range>::type advance_begin,
23866: typename range_difference<Range>::type advance_end )
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: typename range_iterator<Range>::type
23866: new_begin = boost::begin( r ),
23866: new_end = boost::end( r );
23866: std::advance( new_begin, advance_begin );
23866: std::advance( new_end, advance_end );
23866: return make_iterator_range( new_begin, new_end );
23866: }
23866: }
23866:
23866: template< class Range >
23866: inline iterator_range< typename range_iterator<Range>::type >
23866: make_iterator_range( Range& r,
23866: typename range_difference<Range>::type advance_begin,
23866: typename range_difference<Range>::type advance_end )
23866: {
23866: return iterator_range_detail::make_range_impl( r, advance_begin, advance_end );
23866: }
23866:
23866: template< class Range >
23866: inline iterator_range< typename range_iterator<const Range>::type >
23866: make_iterator_range( const Range& r,
23866: typename range_difference<Range>::type advance_begin,
23866: typename range_difference<Range>::type advance_end )
23866: {
23866: return iterator_range_detail::make_range_impl( r, advance_begin, advance_end );
23866: }
23866: # 839 "/usr/include/boost/range/iterator_range_core.hpp" 3 4
23866: template< typename SeqT, typename Range >
23866: inline SeqT copy_range( const Range& r )
23866: {
23866: return SeqT( boost::begin( r ), boost::end( r ) );
23866: }
23866:
23866: }
23866: # 14 "/usr/include/boost/range/iterator_range.hpp" 2 3 4
23866: # 1 "/usr/include/boost/range/iterator_range_io.hpp" 1 3 4
23866: # 11 "/usr/include/boost/range/iterator_range_io.hpp" 3 4
23866: #define BOOST_RANGE_ITERATOR_RANGE_IO_HPP_INCLUDED
23866: # 43 "/usr/include/boost/range/iterator_range_io.hpp" 3 4
23866: namespace boost
23866: {
23866: # 54 "/usr/include/boost/range/iterator_range_io.hpp" 3 4
23866: template< typename IteratorT, typename Elem, typename Traits >
23866: inline std::basic_ostream<Elem,Traits>& operator<<(
23866: std::basic_ostream<Elem, Traits>& Os,
23866: const iterator_range<IteratorT>& r )
23866: {
23866: std::copy( r.begin(), r.end(),
23866: std::ostream_iterator< typename
23866: iterator_value<IteratorT>::type,
23866: Elem, Traits>(Os) );
23866: return Os;
23866: }
23866: # 85 "/usr/include/boost/range/iterator_range_io.hpp" 3 4
23866: }
23866:
23866: #undef BOOST_OLD_IOSTREAMS
23866: # 15 "/usr/include/boost/range/iterator_range.hpp" 2 3 4
23866: # 19 "/usr/include/boost/range/as_literal.hpp" 2 3 4
23866: # 1 "/usr/include/boost/range/detail/str_types.hpp" 1 3 4
23866: # 12 "/usr/include/boost/range/detail/str_types.hpp" 3 4
23866: #define BOOST_RANGE_DETAIL_STR_TYPES_HPP
23866:
23866:
23866:
23866:
23866: namespace boost
23866: {
23866: template< class T >
23866: struct range_mutable_iterator<T*>
23866: {
23866: typedef T* type;
23866: };
23866:
23866: template< class T >
23866: struct range_const_iterator<T*>
23866: {
23866: typedef const T* type;
23866: };
23866:
23866: template< class T >
23866: struct range_size<T*>
23866: {
23866: typedef std::size_t type;
23866: };
23866: }
23866: # 20 "/usr/include/boost/range/as_literal.hpp" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/cstring" 1 3 4
23866: # 39 "/usr/include/c++/10/cstring" 3 4
23866:
23866: # 40 "/usr/include/c++/10/cstring" 3
23866: # 24 "/usr/include/boost/range/as_literal.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/cwchar" 1 3 4
23866: # 39 "/usr/include/c++/10/cwchar" 3 4
23866:
23866: # 40 "/usr/include/c++/10/cwchar" 3
23866: # 31 "/usr/include/boost/range/as_literal.hpp" 2 3 4
23866:
23866:
23866: namespace boost
23866: {
23866: namespace range_detail
23866: {
23866: inline std::size_t length( const char* s )
23866: {
23866: return strlen( s );
23866: }
23866:
23866:
23866: inline std::size_t length( const char16_t* s )
23866: {
23866: return std::char_traits<char16_t>::length( s );
23866: }
23866:
23866:
23866:
23866: inline std::size_t length( const char32_t* s )
23866: {
23866: return std::char_traits<char32_t>::length( s );
23866: }
23866:
23866:
23866:
23866: inline std::size_t length( const wchar_t* s )
23866: {
23866: return wcslen( s );
23866: }
23866: # 69 "/usr/include/boost/range/as_literal.hpp" 3 4
23866: inline bool is_char_ptr( char* )
23866: {
23866: return true;
23866: }
23866:
23866: inline bool is_char_ptr( const char* )
23866: {
23866: return true;
23866: }
23866:
23866:
23866: inline bool is_char_ptr( char16_t* )
23866: {
23866: return true;
23866: }
23866:
23866: inline bool is_char_ptr( const char16_t* )
23866: {
23866: return true;
23866: }
23866:
23866:
23866:
23866: inline bool is_char_ptr( char32_t* )
23866: {
23866: return true;
23866: }
23866:
23866: inline bool is_char_ptr( const char32_t* )
23866: {
23866: return true;
23866: }
23866:
23866:
23866:
23866: inline bool is_char_ptr( wchar_t* )
23866: {
23866: return true;
23866: }
23866:
23866: inline bool is_char_ptr( const wchar_t* )
23866: {
23866: return true;
23866: }
23866:
23866:
23866: template< class T >
23866: inline long is_char_ptr( const T& )
23866: {
23866: return 0L;
23866: }
23866:
23866: template< class T >
23866: inline iterator_range<T*>
23866: make_range( T* const r, bool )
23866: {
23866: return iterator_range<T*>( r, r + length(r) );
23866: }
23866:
23866: template< class T >
23866: inline iterator_range<typename range_iterator<T>::type>
23866: make_range( T& r, long )
23866: {
23866: return boost::make_iterator_range( r );
23866: }
23866:
23866: }
23866:
23866: template< class Range >
23866: inline iterator_range<typename range_iterator<Range>::type>
23866: as_literal( Range& r )
23866: {
23866: return range_detail::make_range( r, range_detail::is_char_ptr(r) );
23866: }
23866:
23866: template< class Range >
23866: inline iterator_range<typename range_iterator<const Range>::type>
23866: as_literal( const Range& r )
23866: {
23866: return range_detail::make_range( r, range_detail::is_char_ptr(r) );
23866: }
23866:
23866: template< class Char, std::size_t sz >
23866: inline iterator_range<Char*> as_literal( Char (&arr)[sz] )
23866: {
23866: return range_detail::make_range( arr, range_detail::is_char_ptr(arr) );
23866: }
23866:
23866: template< class Char, std::size_t sz >
23866: inline iterator_range<const Char*> as_literal( const Char (&arr)[sz] )
23866: {
23866: return range_detail::make_range( arr, range_detail::is_char_ptr(arr) );
23866: }
23866: }
23866: # 20 "/usr/include/boost/algorithm/string/trim.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/algorithm/string/detail/trim.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/detail/trim.hpp" 3 4
23866: #define BOOST_STRING_TRIM_DETAIL_HPP
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace algorithm {
23866: namespace detail {
23866:
23866:
23866:
23866: template< typename ForwardIteratorT, typename PredicateT >
23866: inline ForwardIteratorT trim_end_iter_select(
23866: ForwardIteratorT InBegin,
23866: ForwardIteratorT InEnd,
23866: PredicateT IsSpace,
23866: std::forward_iterator_tag )
23866: {
23866: ForwardIteratorT TrimIt=InBegin;
23866:
23866: for( ForwardIteratorT It=InBegin; It!=InEnd; ++It )
23866: {
23866: if ( !IsSpace(*It) )
23866: {
23866: TrimIt=It;
23866: ++TrimIt;
23866: }
23866: }
23866:
23866: return TrimIt;
23866: }
23866:
23866: template< typename ForwardIteratorT, typename PredicateT >
23866: inline ForwardIteratorT trim_end_iter_select(
23866: ForwardIteratorT InBegin,
23866: ForwardIteratorT InEnd,
23866: PredicateT IsSpace,
23866: std::bidirectional_iterator_tag )
23866: {
23866: for( ForwardIteratorT It=InEnd; It!=InBegin; )
23866: {
23866: if ( !IsSpace(*(--It)) )
23866: return ++It;
23866: }
23866:
23866: return InBegin;
23866: }
23866:
23866: template< typename ForwardIteratorT, typename PredicateT >
23866: inline ForwardIteratorT trim_begin(
23866: ForwardIteratorT InBegin,
23866: ForwardIteratorT InEnd,
23866: PredicateT IsSpace )
23866: {
23866: ForwardIteratorT It=InBegin;
23866: for(; It!=InEnd; ++It )
23866: {
23866: if (!IsSpace(*It))
23866: return It;
23866: }
23866:
23866: return It;
23866: }
23866:
23866:
23866: template< typename ForwardIteratorT, typename PredicateT >
23866: inline ForwardIteratorT trim_end(
23866: ForwardIteratorT InBegin,
23866: ForwardIteratorT InEnd,
23866: PredicateT IsSpace )
23866: {
23866: typedef typename
23866: std::iterator_traits<ForwardIteratorT>::iterator_category category;
23866:
23866: return ::boost::algorithm::detail::trim_end_iter_select( InBegin, InEnd, IsSpace, category() );
23866: }
23866:
23866:
23866: }
23866: }
23866: }
23866: # 23 "/usr/include/boost/algorithm/string/trim.hpp" 2 3 4
23866: # 1 "/usr/include/boost/algorithm/string/classification.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/classification.hpp" 3 4
23866: #define BOOST_STRING_CLASSIFICATION_HPP
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/algorithm/string/detail/classification.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/detail/classification.hpp" 3 4
23866: #define BOOST_STRING_CLASSIFICATION_DETAIL_HPP
23866: # 22 "/usr/include/boost/algorithm/string/detail/classification.hpp" 3 4
23866: # 1 "/usr/include/boost/algorithm/string/predicate_facade.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/predicate_facade.hpp" 3 4
23866: #define BOOST_STRING_PREDICATE_FACADE_HPP
23866: # 23 "/usr/include/boost/algorithm/string/predicate_facade.hpp" 3 4
23866: namespace boost {
23866: namespace algorithm {
23866: # 35 "/usr/include/boost/algorithm/string/predicate_facade.hpp" 3 4
23866: template<typename Derived>
23866: struct predicate_facade {};
23866:
23866: }
23866: }
23866: # 23 "/usr/include/boost/algorithm/string/detail/classification.hpp" 2 3 4
23866:
23866:
23866: namespace boost {
23866: namespace algorithm {
23866: namespace detail {
23866:
23866:
23866:
23866:
23866: struct is_classifiedF :
23866: public predicate_facade<is_classifiedF>
23866: {
23866:
23866: typedef bool result_type;
23866:
23866:
23866: is_classifiedF(std::ctype_base::mask Type, std::locale const & Loc = std::locale()) :
23866: m_Type(Type), m_Locale(Loc) {}
23866:
23866: template<typename CharT>
23866: bool operator()( CharT Ch ) const
23866: {
23866: return std::use_facet< std::ctype<CharT> >(m_Locale).is( m_Type, Ch );
23866: }
23866: # 56 "/usr/include/boost/algorithm/string/detail/classification.hpp" 3 4
23866: private:
23866: std::ctype_base::mask m_Type;
23866: std::locale m_Locale;
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename CharT>
23866: struct is_any_ofF :
23866: public predicate_facade<is_any_ofF<CharT> >
23866: {
23866: private:
23866:
23866: typedef typename ::boost::remove_const<CharT>::type set_value_type;
23866:
23866: public:
23866:
23866: typedef bool result_type;
23866:
23866:
23866: template<typename RangeT>
23866: is_any_ofF( const RangeT& Range ) : m_Size(0)
23866: {
23866:
23866: m_Storage.m_dynSet=0;
23866:
23866: std::size_t Size=::boost::distance(Range);
23866: m_Size=Size;
23866: set_value_type* Storage=0;
23866:
23866: if(use_fixed_storage(m_Size))
23866: {
23866:
23866: Storage=&m_Storage.m_fixSet[0];
23866: }
23866: else
23866: {
23866:
23866: m_Storage.m_dynSet=new set_value_type[m_Size];
23866: Storage=m_Storage.m_dynSet;
23866: }
23866:
23866:
23866: ::std::copy(::boost::begin(Range), ::boost::end(Range), Storage);
23866: ::std::sort(Storage, Storage+m_Size);
23866: }
23866:
23866:
23866: is_any_ofF(const is_any_ofF& Other) : m_Size(Other.m_Size)
23866: {
23866:
23866: m_Storage.m_dynSet=0;
23866: const set_value_type* SrcStorage=0;
23866: set_value_type* DestStorage=0;
23866:
23866: if(use_fixed_storage(m_Size))
23866: {
23866:
23866: DestStorage=&m_Storage.m_fixSet[0];
23866: SrcStorage=&Other.m_Storage.m_fixSet[0];
23866: }
23866: else
23866: {
23866:
23866: m_Storage.m_dynSet=new set_value_type[m_Size];
23866: DestStorage=m_Storage.m_dynSet;
23866: SrcStorage=Other.m_Storage.m_dynSet;
23866: }
23866:
23866:
23866: ::std::memcpy(DestStorage, SrcStorage, sizeof(set_value_type)*m_Size);
23866: }
23866:
23866:
23866: ~is_any_ofF()
23866: {
23866: if(!use_fixed_storage(m_Size) && m_Storage.m_dynSet!=0)
23866: {
23866: delete [] m_Storage.m_dynSet;
23866: }
23866: }
23866:
23866:
23866: is_any_ofF& operator=(const is_any_ofF& Other)
23866: {
23866:
23866: if(this==&Other) return *this;
23866:
23866:
23866: const set_value_type* SrcStorage;
23866: set_value_type* DestStorage;
23866:
23866: if(use_fixed_storage(Other.m_Size))
23866: {
23866:
23866: DestStorage=&m_Storage.m_fixSet[0];
23866: SrcStorage=&Other.m_Storage.m_fixSet[0];
23866:
23866:
23866: if(!use_fixed_storage(m_Size) && m_Storage.m_dynSet!=0)
23866: {
23866: delete [] m_Storage.m_dynSet;
23866: }
23866:
23866:
23866: m_Size=Other.m_Size;
23866: }
23866: else
23866: {
23866:
23866: SrcStorage=Other.m_Storage.m_dynSet;
23866:
23866:
23866: if(use_fixed_storage(m_Size))
23866: {
23866:
23866: set_value_type* pTemp=new set_value_type[Other.m_Size];
23866: DestStorage=pTemp;
23866: m_Storage.m_dynSet=pTemp;
23866: m_Size=Other.m_Size;
23866: }
23866: else
23866: {
23866:
23866: if(m_Storage.m_dynSet!=0 && m_Size>=Other.m_Size && m_Size<Other.m_Size*2)
23866: {
23866:
23866: DestStorage=m_Storage.m_dynSet;
23866: m_Size=Other.m_Size;
23866: }
23866: else
23866: {
23866:
23866: set_value_type* pTemp=new set_value_type[Other.m_Size];
23866: DestStorage=pTemp;
23866:
23866:
23866: if(m_Storage.m_dynSet!=0)
23866: {
23866: delete [] m_Storage.m_dynSet;
23866: }
23866:
23866: m_Storage.m_dynSet=pTemp;
23866:
23866: m_Size=Other.m_Size;
23866: }
23866: }
23866: }
23866:
23866:
23866: ::std::memcpy(DestStorage, SrcStorage, sizeof(set_value_type)*m_Size);
23866:
23866: return *this;
23866: }
23866:
23866:
23866: template<typename Char2T>
23866: bool operator()( Char2T Ch ) const
23866: {
23866: const set_value_type* Storage=
23866: (use_fixed_storage(m_Size))
23866: ? &m_Storage.m_fixSet[0]
23866: : m_Storage.m_dynSet;
23866:
23866: return ::std::binary_search(Storage, Storage+m_Size, Ch);
23866: }
23866: private:
23866:
23866: static bool use_fixed_storage(std::size_t size)
23866: {
23866: return size<=sizeof(set_value_type*)*2;
23866: }
23866:
23866:
23866: private:
23866:
23866:
23866: union
23866: {
23866: set_value_type* m_dynSet;
23866: set_value_type m_fixSet[sizeof(set_value_type*)*2];
23866: }
23866: m_Storage;
23866:
23866:
23866: ::std::size_t m_Size;
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename CharT>
23866: struct is_from_rangeF :
23866: public predicate_facade< is_from_rangeF<CharT> >
23866: {
23866:
23866: typedef bool result_type;
23866:
23866:
23866: is_from_rangeF( CharT From, CharT To ) : m_From(From), m_To(To) {}
23866:
23866:
23866: template<typename Char2T>
23866: bool operator()( Char2T Ch ) const
23866: {
23866: return ( m_From <= Ch ) && ( Ch <= m_To );
23866: }
23866:
23866: private:
23866: CharT m_From;
23866: CharT m_To;
23866: };
23866:
23866:
23866: template<typename Pred1T, typename Pred2T>
23866: struct pred_andF :
23866: public predicate_facade< pred_andF<Pred1T,Pred2T> >
23866: {
23866: public:
23866:
23866:
23866: typedef bool result_type;
23866:
23866:
23866: pred_andF( Pred1T Pred1, Pred2T Pred2 ) :
23866: m_Pred1(Pred1), m_Pred2(Pred2) {}
23866:
23866:
23866: template<typename CharT>
23866: bool operator()( CharT Ch ) const
23866: {
23866: return m_Pred1(Ch) && m_Pred2(Ch);
23866: }
23866:
23866: private:
23866: Pred1T m_Pred1;
23866: Pred2T m_Pred2;
23866: };
23866:
23866:
23866: template<typename Pred1T, typename Pred2T>
23866: struct pred_orF :
23866: public predicate_facade< pred_orF<Pred1T,Pred2T> >
23866: {
23866: public:
23866:
23866: typedef bool result_type;
23866:
23866:
23866: pred_orF( Pred1T Pred1, Pred2T Pred2 ) :
23866: m_Pred1(Pred1), m_Pred2(Pred2) {}
23866:
23866:
23866: template<typename CharT>
23866: bool operator()( CharT Ch ) const
23866: {
23866: return m_Pred1(Ch) || m_Pred2(Ch);
23866: }
23866:
23866: private:
23866: Pred1T m_Pred1;
23866: Pred2T m_Pred2;
23866: };
23866:
23866:
23866: template< typename PredT >
23866: struct pred_notF :
23866: public predicate_facade< pred_notF<PredT> >
23866: {
23866: public:
23866:
23866: typedef bool result_type;
23866:
23866:
23866: pred_notF( PredT Pred ) : m_Pred(Pred) {}
23866:
23866:
23866: template<typename CharT>
23866: bool operator()( CharT Ch ) const
23866: {
23866: return !m_Pred(Ch);
23866: }
23866:
23866: private:
23866: PredT m_Pred;
23866: };
23866:
23866: }
23866: }
23866: }
23866: # 19 "/usr/include/boost/algorithm/string/classification.hpp" 2 3 4
23866: # 29 "/usr/include/boost/algorithm/string/classification.hpp" 3 4
23866: namespace boost {
23866: namespace algorithm {
23866: # 43 "/usr/include/boost/algorithm/string/classification.hpp" 3 4
23866: inline detail::is_classifiedF
23866: is_classified(std::ctype_base::mask Type, const std::locale& Loc=std::locale())
23866: {
23866: return detail::is_classifiedF(Type, Loc);
23866: }
23866: # 56 "/usr/include/boost/algorithm/string/classification.hpp" 3 4
23866: inline detail::is_classifiedF
23866: is_space(const std::locale& Loc=std::locale())
23866: {
23866: return detail::is_classifiedF(std::ctype_base::space, Loc);
23866: }
23866: # 69 "/usr/include/boost/algorithm/string/classification.hpp" 3 4
23866: inline detail::is_classifiedF
23866: is_alnum(const std::locale& Loc=std::locale())
23866: {
23866: return detail::is_classifiedF(std::ctype_base::alnum, Loc);
23866: }
23866: # 82 "/usr/include/boost/algorithm/string/classification.hpp" 3 4
23866: inline detail::is_classifiedF
23866: is_alpha(const std::locale& Loc=std::locale())
23866: {
23866: return detail::is_classifiedF(std::ctype_base::alpha, Loc);
23866: }
23866: # 95 "/usr/include/boost/algorithm/string/classification.hpp" 3 4
23866: inline detail::is_classifiedF
23866: is_cntrl(const std::locale& Loc=std::locale())
23866: {
23866: return detail::is_classifiedF(std::ctype_base::cntrl, Loc);
23866: }
23866: # 108 "/usr/include/boost/algorithm/string/classification.hpp" 3 4
23866: inline detail::is_classifiedF
23866: is_digit(const std::locale& Loc=std::locale())
23866: {
23866: return detail::is_classifiedF(std::ctype_base::digit, Loc);
23866: }
23866: # 121 "/usr/include/boost/algorithm/string/classification.hpp" 3 4
23866: inline detail::is_classifiedF
23866: is_graph(const std::locale& Loc=std::locale())
23866: {
23866: return detail::is_classifiedF(std::ctype_base::graph, Loc);
23866: }
23866: # 134 "/usr/include/boost/algorithm/string/classification.hpp" 3 4
23866: inline detail::is_classifiedF
23866: is_lower(const std::locale& Loc=std::locale())
23866: {
23866: return detail::is_classifiedF(std::ctype_base::lower, Loc);
23866: }
23866: # 147 "/usr/include/boost/algorithm/string/classification.hpp" 3 4
23866: inline detail::is_classifiedF
23866: is_print(const std::locale& Loc=std::locale())
23866: {
23866: return detail::is_classifiedF(std::ctype_base::print, Loc);
23866: }
23866: # 160 "/usr/include/boost/algorithm/string/classification.hpp" 3 4
23866: inline detail::is_classifiedF
23866: is_punct(const std::locale& Loc=std::locale())
23866: {
23866: return detail::is_classifiedF(std::ctype_base::punct, Loc);
23866: }
23866: # 173 "/usr/include/boost/algorithm/string/classification.hpp" 3 4
23866: inline detail::is_classifiedF
23866: is_upper(const std::locale& Loc=std::locale())
23866: {
23866: return detail::is_classifiedF(std::ctype_base::upper, Loc);
23866: }
23866: # 186 "/usr/include/boost/algorithm/string/classification.hpp" 3 4
23866: inline detail::is_classifiedF
23866: is_xdigit(const std::locale& Loc=std::locale())
23866: {
23866: return detail::is_classifiedF(std::ctype_base::xdigit, Loc);
23866: }
23866: # 200 "/usr/include/boost/algorithm/string/classification.hpp" 3 4
23866: template<typename RangeT>
23866: inline detail::is_any_ofF<
23866: typename range_value<RangeT>::type>
23866: is_any_of( const RangeT& Set )
23866: {
23866: iterator_range<typename range_const_iterator<RangeT>::type> lit_set(boost::as_literal(Set));
23866: return detail::is_any_ofF<typename range_value<RangeT>::type>(lit_set);
23866: }
23866: # 218 "/usr/include/boost/algorithm/string/classification.hpp" 3 4
23866: template<typename CharT>
23866: inline detail::is_from_rangeF<CharT> is_from_range(CharT From, CharT To)
23866: {
23866: return detail::is_from_rangeF<CharT>(From,To);
23866: }
23866: # 236 "/usr/include/boost/algorithm/string/classification.hpp" 3 4
23866: template<typename Pred1T, typename Pred2T>
23866: inline detail::pred_andF<Pred1T, Pred2T>
23866: operator&&(
23866: const predicate_facade<Pred1T>& Pred1,
23866: const predicate_facade<Pred2T>& Pred2 )
23866: {
23866:
23866:
23866:
23866: return detail::pred_andF<Pred1T,Pred2T>(
23866: *static_cast<const Pred1T*>(&Pred1),
23866: *static_cast<const Pred2T*>(&Pred2) );
23866: }
23866: # 260 "/usr/include/boost/algorithm/string/classification.hpp" 3 4
23866: template<typename Pred1T, typename Pred2T>
23866: inline detail::pred_orF<Pred1T, Pred2T>
23866: operator||(
23866: const predicate_facade<Pred1T>& Pred1,
23866: const predicate_facade<Pred2T>& Pred2 )
23866: {
23866:
23866:
23866:
23866: return detail::pred_orF<Pred1T,Pred2T>(
23866: *static_cast<const Pred1T*>(&Pred1),
23866: *static_cast<const Pred2T*>(&Pred2));
23866: }
23866: # 282 "/usr/include/boost/algorithm/string/classification.hpp" 3 4
23866: template<typename PredT>
23866: inline detail::pred_notF<PredT>
23866: operator!( const predicate_facade<PredT>& Pred )
23866: {
23866:
23866:
23866:
23866: return detail::pred_notF<PredT>(*static_cast<const PredT*>(&Pred));
23866: }
23866:
23866: }
23866:
23866:
23866: using algorithm::is_classified;
23866: using algorithm::is_space;
23866: using algorithm::is_alnum;
23866: using algorithm::is_alpha;
23866: using algorithm::is_cntrl;
23866: using algorithm::is_digit;
23866: using algorithm::is_graph;
23866: using algorithm::is_lower;
23866: using algorithm::is_upper;
23866: using algorithm::is_print;
23866: using algorithm::is_punct;
23866: using algorithm::is_xdigit;
23866: using algorithm::is_any_of;
23866: using algorithm::is_from_range;
23866:
23866: }
23866: # 24 "/usr/include/boost/algorithm/string/trim.hpp" 2 3 4
23866: # 38 "/usr/include/boost/algorithm/string/trim.hpp" 3 4
23866: namespace boost {
23866: namespace algorithm {
23866: # 60 "/usr/include/boost/algorithm/string/trim.hpp" 3 4
23866: template<typename OutputIteratorT, typename RangeT, typename PredicateT>
23866: inline OutputIteratorT trim_left_copy_if(
23866: OutputIteratorT Output,
23866: const RangeT& Input,
23866: PredicateT IsSpace)
23866: {
23866: iterator_range<typename range_const_iterator<RangeT>::type> lit_range(::boost::as_literal(Input));
23866:
23866: std::copy(
23866: ::boost::algorithm::detail::trim_begin(
23866: ::boost::begin(lit_range),
23866: ::boost::end(lit_range),
23866: IsSpace ),
23866: ::boost::end(lit_range),
23866: Output);
23866:
23866: return Output;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename SequenceT, typename PredicateT>
23866: inline SequenceT trim_left_copy_if(const SequenceT& Input, PredicateT IsSpace)
23866: {
23866: return SequenceT(
23866: ::boost::algorithm::detail::trim_begin(
23866: ::boost::begin(Input),
23866: ::boost::end(Input),
23866: IsSpace ),
23866: ::boost::end(Input));
23866: }
23866: # 105 "/usr/include/boost/algorithm/string/trim.hpp" 3 4
23866: template<typename SequenceT>
23866: inline SequenceT trim_left_copy(const SequenceT& Input, const std::locale& Loc=std::locale())
23866: {
23866: return
23866: ::boost::algorithm::trim_left_copy_if(
23866: Input,
23866: is_space(Loc));
23866: }
23866: # 123 "/usr/include/boost/algorithm/string/trim.hpp" 3 4
23866: template<typename SequenceT, typename PredicateT>
23866: inline void trim_left_if(SequenceT& Input, PredicateT IsSpace)
23866: {
23866: Input.erase(
23866: ::boost::begin(Input),
23866: ::boost::algorithm::detail::trim_begin(
23866: ::boost::begin(Input),
23866: ::boost::end(Input),
23866: IsSpace));
23866: }
23866: # 142 "/usr/include/boost/algorithm/string/trim.hpp" 3 4
23866: template<typename SequenceT>
23866: inline void trim_left(SequenceT& Input, const std::locale& Loc=std::locale())
23866: {
23866: ::boost::algorithm::trim_left_if(
23866: Input,
23866: is_space(Loc));
23866: }
23866: # 168 "/usr/include/boost/algorithm/string/trim.hpp" 3 4
23866: template<typename OutputIteratorT, typename RangeT, typename PredicateT>
23866: inline OutputIteratorT trim_right_copy_if(
23866: OutputIteratorT Output,
23866: const RangeT& Input,
23866: PredicateT IsSpace )
23866: {
23866: iterator_range<typename range_const_iterator<RangeT>::type> lit_range(::boost::as_literal(Input));
23866:
23866: std::copy(
23866: ::boost::begin(lit_range),
23866: ::boost::algorithm::detail::trim_end(
23866: ::boost::begin(lit_range),
23866: ::boost::end(lit_range),
23866: IsSpace ),
23866: Output );
23866:
23866: return Output;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename SequenceT, typename PredicateT>
23866: inline SequenceT trim_right_copy_if(const SequenceT& Input, PredicateT IsSpace)
23866: {
23866: return SequenceT(
23866: ::boost::begin(Input),
23866: ::boost::algorithm::detail::trim_end(
23866: ::boost::begin(Input),
23866: ::boost::end(Input),
23866: IsSpace)
23866: );
23866: }
23866: # 214 "/usr/include/boost/algorithm/string/trim.hpp" 3 4
23866: template<typename SequenceT>
23866: inline SequenceT trim_right_copy(const SequenceT& Input, const std::locale& Loc=std::locale())
23866: {
23866: return
23866: ::boost::algorithm::trim_right_copy_if(
23866: Input,
23866: is_space(Loc));
23866: }
23866: # 233 "/usr/include/boost/algorithm/string/trim.hpp" 3 4
23866: template<typename SequenceT, typename PredicateT>
23866: inline void trim_right_if(SequenceT& Input, PredicateT IsSpace)
23866: {
23866: Input.erase(
23866: ::boost::algorithm::detail::trim_end(
23866: ::boost::begin(Input),
23866: ::boost::end(Input),
23866: IsSpace ),
23866: ::boost::end(Input)
23866: );
23866: }
23866: # 254 "/usr/include/boost/algorithm/string/trim.hpp" 3 4
23866: template<typename SequenceT>
23866: inline void trim_right(SequenceT& Input, const std::locale& Loc=std::locale())
23866: {
23866: ::boost::algorithm::trim_right_if(
23866: Input,
23866: is_space(Loc) );
23866: }
23866: # 280 "/usr/include/boost/algorithm/string/trim.hpp" 3 4
23866: template<typename OutputIteratorT, typename RangeT, typename PredicateT>
23866: inline OutputIteratorT trim_copy_if(
23866: OutputIteratorT Output,
23866: const RangeT& Input,
23866: PredicateT IsSpace)
23866: {
23866: iterator_range<typename range_const_iterator<RangeT>::type> lit_range(::boost::as_literal(Input));
23866:
23866: typename
23866: range_const_iterator<RangeT>::type TrimEnd=
23866: ::boost::algorithm::detail::trim_end(
23866: ::boost::begin(lit_range),
23866: ::boost::end(lit_range),
23866: IsSpace);
23866:
23866: std::copy(
23866: detail::trim_begin(
23866: ::boost::begin(lit_range), TrimEnd, IsSpace),
23866: TrimEnd,
23866: Output
23866: );
23866:
23866: return Output;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename SequenceT, typename PredicateT>
23866: inline SequenceT trim_copy_if(const SequenceT& Input, PredicateT IsSpace)
23866: {
23866: typename
23866: range_const_iterator<SequenceT>::type TrimEnd=
23866: ::boost::algorithm::detail::trim_end(
23866: ::boost::begin(Input),
23866: ::boost::end(Input),
23866: IsSpace);
23866:
23866: return SequenceT(
23866: detail::trim_begin(
23866: ::boost::begin(Input),
23866: TrimEnd,
23866: IsSpace),
23866: TrimEnd
23866: );
23866: }
23866: # 339 "/usr/include/boost/algorithm/string/trim.hpp" 3 4
23866: template<typename SequenceT>
23866: inline SequenceT trim_copy( const SequenceT& Input, const std::locale& Loc=std::locale() )
23866: {
23866: return
23866: ::boost::algorithm::trim_copy_if(
23866: Input,
23866: is_space(Loc) );
23866: }
23866: # 357 "/usr/include/boost/algorithm/string/trim.hpp" 3 4
23866: template<typename SequenceT, typename PredicateT>
23866: inline void trim_if(SequenceT& Input, PredicateT IsSpace)
23866: {
23866: ::boost::algorithm::trim_right_if( Input, IsSpace );
23866: ::boost::algorithm::trim_left_if( Input, IsSpace );
23866: }
23866: # 372 "/usr/include/boost/algorithm/string/trim.hpp" 3 4
23866: template<typename SequenceT>
23866: inline void trim(SequenceT& Input, const std::locale& Loc=std::locale())
23866: {
23866: ::boost::algorithm::trim_if(
23866: Input,
23866: is_space( Loc ) );
23866: }
23866:
23866: }
23866:
23866:
23866: using algorithm::trim_left;
23866: using algorithm::trim_left_if;
23866: using algorithm::trim_left_copy;
23866: using algorithm::trim_left_copy_if;
23866: using algorithm::trim_right;
23866: using algorithm::trim_right_if;
23866: using algorithm::trim_right_copy;
23866: using algorithm::trim_right_copy_if;
23866: using algorithm::trim;
23866: using algorithm::trim_if;
23866: using algorithm::trim_copy;
23866: using algorithm::trim_copy_if;
23866:
23866: }
23866: # 20 "/usr/include/boost/algorithm/string.hpp" 2 3 4
23866: # 1 "/usr/include/boost/algorithm/string/case_conv.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/case_conv.hpp" 3 4
23866: #define BOOST_STRING_CASE_CONV_HPP
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/iterator/transform_iterator.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_TRANSFORM_ITERATOR_23022003THW_HPP
23866: # 22 "/usr/include/boost/iterator/transform_iterator.hpp" 3 4
23866: # 1 "/usr/include/boost/utility/result_of.hpp" 1 3 4
23866: # 10 "/usr/include/boost/utility/result_of.hpp" 3 4
23866: #define BOOST_RESULT_OF_HPP
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/iteration/iterate.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/iteration/iterate.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_ITERATION_ITERATE_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/slot/slot.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/slot/slot.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_SLOT_SLOT_HPP
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/slot/detail/def.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/slot/detail/def.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_SLOT_DETAIL_DEF_HPP
23866:
23866:
23866:
23866: #define BOOST_PP_SLOT_OFFSET_10(x) (x) % 1000000000UL
23866: #define BOOST_PP_SLOT_OFFSET_9(x) BOOST_PP_SLOT_OFFSET_10(x) % 100000000UL
23866: #define BOOST_PP_SLOT_OFFSET_8(x) BOOST_PP_SLOT_OFFSET_9(x) % 10000000UL
23866: #define BOOST_PP_SLOT_OFFSET_7(x) BOOST_PP_SLOT_OFFSET_8(x) % 1000000UL
23866: #define BOOST_PP_SLOT_OFFSET_6(x) BOOST_PP_SLOT_OFFSET_7(x) % 100000UL
23866: #define BOOST_PP_SLOT_OFFSET_5(x) BOOST_PP_SLOT_OFFSET_6(x) % 10000UL
23866: #define BOOST_PP_SLOT_OFFSET_4(x) BOOST_PP_SLOT_OFFSET_5(x) % 1000UL
23866: #define BOOST_PP_SLOT_OFFSET_3(x) BOOST_PP_SLOT_OFFSET_4(x) % 100UL
23866: #define BOOST_PP_SLOT_OFFSET_2(x) BOOST_PP_SLOT_OFFSET_3(x) % 10UL
23866:
23866:
23866:
23866: #define BOOST_PP_SLOT_CC_2(a,b) BOOST_PP_SLOT_CC_2_D(a, b)
23866: #define BOOST_PP_SLOT_CC_3(a,b,c) BOOST_PP_SLOT_CC_3_D(a, b, c)
23866: #define BOOST_PP_SLOT_CC_4(a,b,c,d) BOOST_PP_SLOT_CC_4_D(a, b, c, d)
23866: #define BOOST_PP_SLOT_CC_5(a,b,c,d,e) BOOST_PP_SLOT_CC_5_D(a, b, c, d, e)
23866: #define BOOST_PP_SLOT_CC_6(a,b,c,d,e,f) BOOST_PP_SLOT_CC_6_D(a, b, c, d, e, f)
23866: #define BOOST_PP_SLOT_CC_7(a,b,c,d,e,f,g) BOOST_PP_SLOT_CC_7_D(a, b, c, d, e, f, g)
23866: #define BOOST_PP_SLOT_CC_8(a,b,c,d,e,f,g,h) BOOST_PP_SLOT_CC_8_D(a, b, c, d, e, f, g, h)
23866: #define BOOST_PP_SLOT_CC_9(a,b,c,d,e,f,g,h,i) BOOST_PP_SLOT_CC_9_D(a, b, c, d, e, f, g, h, i)
23866: #define BOOST_PP_SLOT_CC_10(a,b,c,d,e,f,g,h,i,j) BOOST_PP_SLOT_CC_10_D(a, b, c, d, e, f, g, h, i, j)
23866:
23866: #define BOOST_PP_SLOT_CC_2_D(a,b) a ## b
23866: #define BOOST_PP_SLOT_CC_3_D(a,b,c) a ## b ## c
23866: #define BOOST_PP_SLOT_CC_4_D(a,b,c,d) a ## b ## c ## d
23866: #define BOOST_PP_SLOT_CC_5_D(a,b,c,d,e) a ## b ## c ## d ## e
23866: #define BOOST_PP_SLOT_CC_6_D(a,b,c,d,e,f) a ## b ## c ## d ## e ## f
23866: #define BOOST_PP_SLOT_CC_7_D(a,b,c,d,e,f,g) a ## b ## c ## d ## e ## f ## g
23866: #define BOOST_PP_SLOT_CC_8_D(a,b,c,d,e,f,g,h) a ## b ## c ## d ## e ## f ## g ## h
23866: #define BOOST_PP_SLOT_CC_9_D(a,b,c,d,e,f,g,h,i) a ## b ## c ## d ## e ## f ## g ## h ## i
23866: #define BOOST_PP_SLOT_CC_10_D(a,b,c,d,e,f,g,h,i,j) a ## b ## c ## d ## e ## f ## g ## h ## i ## j
23866: # 17 "/usr/include/boost/preprocessor/slot/slot.hpp" 2 3 4
23866:
23866:
23866:
23866: #define BOOST_PP_ASSIGN_SLOT(i) BOOST_PP_CAT(BOOST_PP_ASSIGN_SLOT_, i)
23866:
23866: #define BOOST_PP_ASSIGN_SLOT_1 <boost/preprocessor/slot/detail/slot1.hpp>
23866: #define BOOST_PP_ASSIGN_SLOT_2 <boost/preprocessor/slot/detail/slot2.hpp>
23866: #define BOOST_PP_ASSIGN_SLOT_3 <boost/preprocessor/slot/detail/slot3.hpp>
23866: #define BOOST_PP_ASSIGN_SLOT_4 <boost/preprocessor/slot/detail/slot4.hpp>
23866: #define BOOST_PP_ASSIGN_SLOT_5 <boost/preprocessor/slot/detail/slot5.hpp>
23866:
23866:
23866:
23866: #define BOOST_PP_SLOT(i) BOOST_PP_CAT(BOOST_PP_SLOT_, i)()
23866: # 21 "/usr/include/boost/preprocessor/iteration/iterate.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_ITERATION_DEPTH() 0
23866:
23866:
23866:
23866: #define BOOST_PP_ITERATION() BOOST_PP_CAT(BOOST_PP_ITERATION_, BOOST_PP_ITERATION_DEPTH())
23866:
23866:
23866:
23866: #define BOOST_PP_ITERATION_START() BOOST_PP_CAT(BOOST_PP_ITERATION_START_, BOOST_PP_ITERATION_DEPTH())
23866: #define BOOST_PP_ITERATION_FINISH() BOOST_PP_CAT(BOOST_PP_ITERATION_FINISH_, BOOST_PP_ITERATION_DEPTH())
23866:
23866:
23866:
23866: #define BOOST_PP_ITERATION_FLAGS() (BOOST_PP_CAT(BOOST_PP_ITERATION_FLAGS_, BOOST_PP_ITERATION_DEPTH())())
23866:
23866:
23866:
23866: #define BOOST_PP_FRAME_ITERATION(i) BOOST_PP_CAT(BOOST_PP_ITERATION_, i)
23866:
23866:
23866:
23866: #define BOOST_PP_FRAME_START(i) BOOST_PP_CAT(BOOST_PP_ITERATION_START_, i)
23866: #define BOOST_PP_FRAME_FINISH(i) BOOST_PP_CAT(BOOST_PP_ITERATION_FINISH_, i)
23866:
23866:
23866:
23866: #define BOOST_PP_FRAME_FLAGS(i) (BOOST_PP_CAT(BOOST_PP_ITERATION_FLAGS_, i)())
23866:
23866:
23866:
23866: #define BOOST_PP_RELATIVE_ITERATION(i) BOOST_PP_CAT(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_)
23866:
23866: #define BOOST_PP_RELATIVE_0(m) BOOST_PP_CAT(m, BOOST_PP_ITERATION_DEPTH())
23866: #define BOOST_PP_RELATIVE_1(m) BOOST_PP_CAT(m, BOOST_PP_DEC(BOOST_PP_ITERATION_DEPTH()))
23866: #define BOOST_PP_RELATIVE_2(m) BOOST_PP_CAT(m, BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_ITERATION_DEPTH())))
23866: #define BOOST_PP_RELATIVE_3(m) BOOST_PP_CAT(m, BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_ITERATION_DEPTH()))))
23866: #define BOOST_PP_RELATIVE_4(m) BOOST_PP_CAT(m, BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_ITERATION_DEPTH())))))
23866:
23866:
23866:
23866: #define BOOST_PP_RELATIVE_START(i) BOOST_PP_CAT(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_START_)
23866: #define BOOST_PP_RELATIVE_FINISH(i) BOOST_PP_CAT(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_FINISH_)
23866:
23866:
23866:
23866: #define BOOST_PP_RELATIVE_FLAGS(i) (BOOST_PP_CAT(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_FLAGS_)())
23866:
23866:
23866:
23866: #define BOOST_PP_ITERATE() BOOST_PP_CAT(BOOST_PP_ITERATE_, BOOST_PP_INC(BOOST_PP_ITERATION_DEPTH()))
23866:
23866: #define BOOST_PP_ITERATE_1 <boost/preprocessor/iteration/detail/iter/forward1.hpp>
23866: #define BOOST_PP_ITERATE_2 <boost/preprocessor/iteration/detail/iter/forward2.hpp>
23866: #define BOOST_PP_ITERATE_3 <boost/preprocessor/iteration/detail/iter/forward3.hpp>
23866: #define BOOST_PP_ITERATE_4 <boost/preprocessor/iteration/detail/iter/forward4.hpp>
23866: #define BOOST_PP_ITERATE_5 <boost/preprocessor/iteration/detail/iter/forward5.hpp>
23866: # 15 "/usr/include/boost/utility/result_of.hpp" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/repetition/enum_shifted_params.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/repetition/enum_shifted_params.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_REPETITION_ENUM_SHIFTED_PARAMS_HPP
23866: # 27 "/usr/include/boost/preprocessor/repetition/enum_shifted_params.hpp" 3 4
23866: #define BOOST_PP_ENUM_SHIFTED_PARAMS(count,param) BOOST_PP_REPEAT(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_PARAMS_M, param)
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_ENUM_SHIFTED_PARAMS_M(z,n,param) BOOST_PP_COMMA_IF(n) BOOST_PP_CAT(param, BOOST_PP_INC(n))
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_ENUM_SHIFTED_PARAMS_Z(z,count,param) BOOST_PP_REPEAT_ ## z(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_PARAMS_M, param)
23866: # 19 "/usr/include/boost/utility/result_of.hpp" 2 3 4
23866: # 1 "/usr/include/boost/preprocessor/facilities/intercept.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/facilities/intercept.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_FACILITIES_INTERCEPT_HPP
23866:
23866:
23866:
23866: #define BOOST_PP_INTERCEPT BOOST_PP_INTERCEPT_
23866:
23866: #define BOOST_PP_INTERCEPT_0
23866: #define BOOST_PP_INTERCEPT_1
23866: #define BOOST_PP_INTERCEPT_2
23866: #define BOOST_PP_INTERCEPT_3
23866: #define BOOST_PP_INTERCEPT_4
23866: #define BOOST_PP_INTERCEPT_5
23866: #define BOOST_PP_INTERCEPT_6
23866: #define BOOST_PP_INTERCEPT_7
23866: #define BOOST_PP_INTERCEPT_8
23866: #define BOOST_PP_INTERCEPT_9
23866: #define BOOST_PP_INTERCEPT_10
23866: #define BOOST_PP_INTERCEPT_11
23866: #define BOOST_PP_INTERCEPT_12
23866: #define BOOST_PP_INTERCEPT_13
23866: #define BOOST_PP_INTERCEPT_14
23866: #define BOOST_PP_INTERCEPT_15
23866: #define BOOST_PP_INTERCEPT_16
23866: #define BOOST_PP_INTERCEPT_17
23866: #define BOOST_PP_INTERCEPT_18
23866: #define BOOST_PP_INTERCEPT_19
23866: #define BOOST_PP_INTERCEPT_20
23866: #define BOOST_PP_INTERCEPT_21
23866: #define BOOST_PP_INTERCEPT_22
23866: #define BOOST_PP_INTERCEPT_23
23866: #define BOOST_PP_INTERCEPT_24
23866: #define BOOST_PP_INTERCEPT_25
23866: #define BOOST_PP_INTERCEPT_26
23866: #define BOOST_PP_INTERCEPT_27
23866: #define BOOST_PP_INTERCEPT_28
23866: #define BOOST_PP_INTERCEPT_29
23866: #define BOOST_PP_INTERCEPT_30
23866: #define BOOST_PP_INTERCEPT_31
23866: #define BOOST_PP_INTERCEPT_32
23866: #define BOOST_PP_INTERCEPT_33
23866: #define BOOST_PP_INTERCEPT_34
23866: #define BOOST_PP_INTERCEPT_35
23866: #define BOOST_PP_INTERCEPT_36
23866: #define BOOST_PP_INTERCEPT_37
23866: #define BOOST_PP_INTERCEPT_38
23866: #define BOOST_PP_INTERCEPT_39
23866: #define BOOST_PP_INTERCEPT_40
23866: #define BOOST_PP_INTERCEPT_41
23866: #define BOOST_PP_INTERCEPT_42
23866: #define BOOST_PP_INTERCEPT_43
23866: #define BOOST_PP_INTERCEPT_44
23866: #define BOOST_PP_INTERCEPT_45
23866: #define BOOST_PP_INTERCEPT_46
23866: #define BOOST_PP_INTERCEPT_47
23866: #define BOOST_PP_INTERCEPT_48
23866: #define BOOST_PP_INTERCEPT_49
23866: #define BOOST_PP_INTERCEPT_50
23866: #define BOOST_PP_INTERCEPT_51
23866: #define BOOST_PP_INTERCEPT_52
23866: #define BOOST_PP_INTERCEPT_53
23866: #define BOOST_PP_INTERCEPT_54
23866: #define BOOST_PP_INTERCEPT_55
23866: #define BOOST_PP_INTERCEPT_56
23866: #define BOOST_PP_INTERCEPT_57
23866: #define BOOST_PP_INTERCEPT_58
23866: #define BOOST_PP_INTERCEPT_59
23866: #define BOOST_PP_INTERCEPT_60
23866: #define BOOST_PP_INTERCEPT_61
23866: #define BOOST_PP_INTERCEPT_62
23866: #define BOOST_PP_INTERCEPT_63
23866: #define BOOST_PP_INTERCEPT_64
23866: #define BOOST_PP_INTERCEPT_65
23866: #define BOOST_PP_INTERCEPT_66
23866: #define BOOST_PP_INTERCEPT_67
23866: #define BOOST_PP_INTERCEPT_68
23866: #define BOOST_PP_INTERCEPT_69
23866: #define BOOST_PP_INTERCEPT_70
23866: #define BOOST_PP_INTERCEPT_71
23866: #define BOOST_PP_INTERCEPT_72
23866: #define BOOST_PP_INTERCEPT_73
23866: #define BOOST_PP_INTERCEPT_74
23866: #define BOOST_PP_INTERCEPT_75
23866: #define BOOST_PP_INTERCEPT_76
23866: #define BOOST_PP_INTERCEPT_77
23866: #define BOOST_PP_INTERCEPT_78
23866: #define BOOST_PP_INTERCEPT_79
23866: #define BOOST_PP_INTERCEPT_80
23866: #define BOOST_PP_INTERCEPT_81
23866: #define BOOST_PP_INTERCEPT_82
23866: #define BOOST_PP_INTERCEPT_83
23866: #define BOOST_PP_INTERCEPT_84
23866: #define BOOST_PP_INTERCEPT_85
23866: #define BOOST_PP_INTERCEPT_86
23866: #define BOOST_PP_INTERCEPT_87
23866: #define BOOST_PP_INTERCEPT_88
23866: #define BOOST_PP_INTERCEPT_89
23866: #define BOOST_PP_INTERCEPT_90
23866: #define BOOST_PP_INTERCEPT_91
23866: #define BOOST_PP_INTERCEPT_92
23866: #define BOOST_PP_INTERCEPT_93
23866: #define BOOST_PP_INTERCEPT_94
23866: #define BOOST_PP_INTERCEPT_95
23866: #define BOOST_PP_INTERCEPT_96
23866: #define BOOST_PP_INTERCEPT_97
23866: #define BOOST_PP_INTERCEPT_98
23866: #define BOOST_PP_INTERCEPT_99
23866: #define BOOST_PP_INTERCEPT_100
23866: #define BOOST_PP_INTERCEPT_101
23866: #define BOOST_PP_INTERCEPT_102
23866: #define BOOST_PP_INTERCEPT_103
23866: #define BOOST_PP_INTERCEPT_104
23866: #define BOOST_PP_INTERCEPT_105
23866: #define BOOST_PP_INTERCEPT_106
23866: #define BOOST_PP_INTERCEPT_107
23866: #define BOOST_PP_INTERCEPT_108
23866: #define BOOST_PP_INTERCEPT_109
23866: #define BOOST_PP_INTERCEPT_110
23866: #define BOOST_PP_INTERCEPT_111
23866: #define BOOST_PP_INTERCEPT_112
23866: #define BOOST_PP_INTERCEPT_113
23866: #define BOOST_PP_INTERCEPT_114
23866: #define BOOST_PP_INTERCEPT_115
23866: #define BOOST_PP_INTERCEPT_116
23866: #define BOOST_PP_INTERCEPT_117
23866: #define BOOST_PP_INTERCEPT_118
23866: #define BOOST_PP_INTERCEPT_119
23866: #define BOOST_PP_INTERCEPT_120
23866: #define BOOST_PP_INTERCEPT_121
23866: #define BOOST_PP_INTERCEPT_122
23866: #define BOOST_PP_INTERCEPT_123
23866: #define BOOST_PP_INTERCEPT_124
23866: #define BOOST_PP_INTERCEPT_125
23866: #define BOOST_PP_INTERCEPT_126
23866: #define BOOST_PP_INTERCEPT_127
23866: #define BOOST_PP_INTERCEPT_128
23866: #define BOOST_PP_INTERCEPT_129
23866: #define BOOST_PP_INTERCEPT_130
23866: #define BOOST_PP_INTERCEPT_131
23866: #define BOOST_PP_INTERCEPT_132
23866: #define BOOST_PP_INTERCEPT_133
23866: #define BOOST_PP_INTERCEPT_134
23866: #define BOOST_PP_INTERCEPT_135
23866: #define BOOST_PP_INTERCEPT_136
23866: #define BOOST_PP_INTERCEPT_137
23866: #define BOOST_PP_INTERCEPT_138
23866: #define BOOST_PP_INTERCEPT_139
23866: #define BOOST_PP_INTERCEPT_140
23866: #define BOOST_PP_INTERCEPT_141
23866: #define BOOST_PP_INTERCEPT_142
23866: #define BOOST_PP_INTERCEPT_143
23866: #define BOOST_PP_INTERCEPT_144
23866: #define BOOST_PP_INTERCEPT_145
23866: #define BOOST_PP_INTERCEPT_146
23866: #define BOOST_PP_INTERCEPT_147
23866: #define BOOST_PP_INTERCEPT_148
23866: #define BOOST_PP_INTERCEPT_149
23866: #define BOOST_PP_INTERCEPT_150
23866: #define BOOST_PP_INTERCEPT_151
23866: #define BOOST_PP_INTERCEPT_152
23866: #define BOOST_PP_INTERCEPT_153
23866: #define BOOST_PP_INTERCEPT_154
23866: #define BOOST_PP_INTERCEPT_155
23866: #define BOOST_PP_INTERCEPT_156
23866: #define BOOST_PP_INTERCEPT_157
23866: #define BOOST_PP_INTERCEPT_158
23866: #define BOOST_PP_INTERCEPT_159
23866: #define BOOST_PP_INTERCEPT_160
23866: #define BOOST_PP_INTERCEPT_161
23866: #define BOOST_PP_INTERCEPT_162
23866: #define BOOST_PP_INTERCEPT_163
23866: #define BOOST_PP_INTERCEPT_164
23866: #define BOOST_PP_INTERCEPT_165
23866: #define BOOST_PP_INTERCEPT_166
23866: #define BOOST_PP_INTERCEPT_167
23866: #define BOOST_PP_INTERCEPT_168
23866: #define BOOST_PP_INTERCEPT_169
23866: #define BOOST_PP_INTERCEPT_170
23866: #define BOOST_PP_INTERCEPT_171
23866: #define BOOST_PP_INTERCEPT_172
23866: #define BOOST_PP_INTERCEPT_173
23866: #define BOOST_PP_INTERCEPT_174
23866: #define BOOST_PP_INTERCEPT_175
23866: #define BOOST_PP_INTERCEPT_176
23866: #define BOOST_PP_INTERCEPT_177
23866: #define BOOST_PP_INTERCEPT_178
23866: #define BOOST_PP_INTERCEPT_179
23866: #define BOOST_PP_INTERCEPT_180
23866: #define BOOST_PP_INTERCEPT_181
23866: #define BOOST_PP_INTERCEPT_182
23866: #define BOOST_PP_INTERCEPT_183
23866: #define BOOST_PP_INTERCEPT_184
23866: #define BOOST_PP_INTERCEPT_185
23866: #define BOOST_PP_INTERCEPT_186
23866: #define BOOST_PP_INTERCEPT_187
23866: #define BOOST_PP_INTERCEPT_188
23866: #define BOOST_PP_INTERCEPT_189
23866: #define BOOST_PP_INTERCEPT_190
23866: #define BOOST_PP_INTERCEPT_191
23866: #define BOOST_PP_INTERCEPT_192
23866: #define BOOST_PP_INTERCEPT_193
23866: #define BOOST_PP_INTERCEPT_194
23866: #define BOOST_PP_INTERCEPT_195
23866: #define BOOST_PP_INTERCEPT_196
23866: #define BOOST_PP_INTERCEPT_197
23866: #define BOOST_PP_INTERCEPT_198
23866: #define BOOST_PP_INTERCEPT_199
23866: #define BOOST_PP_INTERCEPT_200
23866: #define BOOST_PP_INTERCEPT_201
23866: #define BOOST_PP_INTERCEPT_202
23866: #define BOOST_PP_INTERCEPT_203
23866: #define BOOST_PP_INTERCEPT_204
23866: #define BOOST_PP_INTERCEPT_205
23866: #define BOOST_PP_INTERCEPT_206
23866: #define BOOST_PP_INTERCEPT_207
23866: #define BOOST_PP_INTERCEPT_208
23866: #define BOOST_PP_INTERCEPT_209
23866: #define BOOST_PP_INTERCEPT_210
23866: #define BOOST_PP_INTERCEPT_211
23866: #define BOOST_PP_INTERCEPT_212
23866: #define BOOST_PP_INTERCEPT_213
23866: #define BOOST_PP_INTERCEPT_214
23866: #define BOOST_PP_INTERCEPT_215
23866: #define BOOST_PP_INTERCEPT_216
23866: #define BOOST_PP_INTERCEPT_217
23866: #define BOOST_PP_INTERCEPT_218
23866: #define BOOST_PP_INTERCEPT_219
23866: #define BOOST_PP_INTERCEPT_220
23866: #define BOOST_PP_INTERCEPT_221
23866: #define BOOST_PP_INTERCEPT_222
23866: #define BOOST_PP_INTERCEPT_223
23866: #define BOOST_PP_INTERCEPT_224
23866: #define BOOST_PP_INTERCEPT_225
23866: #define BOOST_PP_INTERCEPT_226
23866: #define BOOST_PP_INTERCEPT_227
23866: #define BOOST_PP_INTERCEPT_228
23866: #define BOOST_PP_INTERCEPT_229
23866: #define BOOST_PP_INTERCEPT_230
23866: #define BOOST_PP_INTERCEPT_231
23866: #define BOOST_PP_INTERCEPT_232
23866: #define BOOST_PP_INTERCEPT_233
23866: #define BOOST_PP_INTERCEPT_234
23866: #define BOOST_PP_INTERCEPT_235
23866: #define BOOST_PP_INTERCEPT_236
23866: #define BOOST_PP_INTERCEPT_237
23866: #define BOOST_PP_INTERCEPT_238
23866: #define BOOST_PP_INTERCEPT_239
23866: #define BOOST_PP_INTERCEPT_240
23866: #define BOOST_PP_INTERCEPT_241
23866: #define BOOST_PP_INTERCEPT_242
23866: #define BOOST_PP_INTERCEPT_243
23866: #define BOOST_PP_INTERCEPT_244
23866: #define BOOST_PP_INTERCEPT_245
23866: #define BOOST_PP_INTERCEPT_246
23866: #define BOOST_PP_INTERCEPT_247
23866: #define BOOST_PP_INTERCEPT_248
23866: #define BOOST_PP_INTERCEPT_249
23866: #define BOOST_PP_INTERCEPT_250
23866: #define BOOST_PP_INTERCEPT_251
23866: #define BOOST_PP_INTERCEPT_252
23866: #define BOOST_PP_INTERCEPT_253
23866: #define BOOST_PP_INTERCEPT_254
23866: #define BOOST_PP_INTERCEPT_255
23866: #define BOOST_PP_INTERCEPT_256
23866: # 20 "/usr/include/boost/utility/result_of.hpp" 2 3 4
23866: # 28 "/usr/include/boost/utility/result_of.hpp" 3 4
23866: # 1 "/usr/include/boost/type_traits/type_identity.hpp" 1 3 4
23866:
23866: #define BOOST_TYPE_TRAITS_TYPE_IDENTITY_HPP_INCLUDED
23866: # 14 "/usr/include/boost/type_traits/type_identity.hpp" 3 4
23866: namespace boost
23866: {
23866:
23866: template<class T> struct type_identity
23866: {
23866: typedef T type;
23866: };
23866:
23866:
23866:
23866: template <class T> using type_identity_t = typename type_identity<T>::type;
23866:
23866:
23866:
23866:
23866: }
23866: # 29 "/usr/include/boost/utility/result_of.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: #define BOOST_RESULT_OF_NUM_ARGS 16
23866: # 51 "/usr/include/boost/utility/result_of.hpp" 3 4
23866: #define BOOST_RESULT_OF_USE_DECLTYPE
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866:
23866: template<typename F> struct result_of;
23866: template<typename F> struct tr1_result_of;
23866:
23866:
23866: namespace detail {
23866:
23866: typedef char result_of_yes_type;
23866: typedef char (&result_of_no_type)[2];
23866:
23866: template<class T> struct result_of_has_type {};
23866:
23866: template<class T> struct result_of_has_result_type_impl
23866: {
23866: template<class U> static result_of_yes_type f( result_of_has_type<typename U::result_type>* );
23866: template<class U> static result_of_no_type f( ... );
23866:
23866: typedef boost::integral_constant<bool, sizeof(f<T>(0)) == sizeof(result_of_yes_type)> type;
23866: };
23866:
23866: template<class T> struct result_of_has_result_type: result_of_has_result_type_impl<T>::type
23866: {
23866: };
23866: # 103 "/usr/include/boost/utility/result_of.hpp" 3 4
23866: template<typename F, typename FArgs, bool HasResultType> struct tr1_result_of_impl;
23866:
23866: template<typename F> struct cpp0x_result_of;
23866: # 162 "/usr/include/boost/utility/result_of.hpp" 3 4
23866: template<typename T>
23866: struct result_of_always_void
23866: {
23866: typedef void type;
23866: };
23866:
23866: template<typename F, typename Enable = void> struct cpp0x_result_of_impl {};
23866:
23866:
23866:
23866: template<typename F>
23866: struct result_of_void_impl
23866: {
23866: typedef void type;
23866: };
23866:
23866: template<typename R>
23866: struct result_of_void_impl<R (*)(void)>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R>
23866: struct result_of_void_impl<R (&)(void)>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: template<typename F, typename FArgs>
23866: struct result_of_pointer
23866: : tr1_result_of_impl<typename remove_cv<F>::type, FArgs, false> { };
23866:
23866: template<typename F, typename FArgs>
23866: struct tr1_result_of_impl<F, FArgs, true>
23866: {
23866: typedef typename F::result_type type;
23866: };
23866:
23866: template<typename FArgs>
23866: struct is_function_with_no_args : false_type {};
23866:
23866: template<typename F>
23866: struct is_function_with_no_args<F(void)> : true_type {};
23866:
23866: template<typename F, typename FArgs>
23866: struct result_of_nested_result : F::template result<FArgs>
23866: {};
23866:
23866: template<typename F, typename FArgs>
23866: struct tr1_result_of_impl<F, FArgs, false>
23866: : conditional<is_function_with_no_args<FArgs>::value,
23866: result_of_void_impl<F>,
23866: result_of_nested_result<F, FArgs> >::type
23866: {};
23866:
23866: }
23866:
23866: #define BOOST_PP_ITERATION_PARAMS_1 (3,(0,BOOST_RESULT_OF_NUM_ARGS,<boost/utility/detail/result_of_iterate.hpp>))
23866: # 1 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 1 3 4
23866: # 23 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 3 4
23866: #define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ITERATION_PARAMS_1)
23866: # 1 "/usr/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp" 1 3 4
23866: # 12 "/usr/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp" 3 4
23866: # 1 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 1 3 4
23866: # 16 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #undef BOOST_PP_SLOT_TEMP_1
23866: #undef BOOST_PP_SLOT_TEMP_2
23866: #undef BOOST_PP_SLOT_TEMP_3
23866: #undef BOOST_PP_SLOT_TEMP_4
23866: #undef BOOST_PP_SLOT_TEMP_5
23866: #undef BOOST_PP_SLOT_TEMP_6
23866: #undef BOOST_PP_SLOT_TEMP_7
23866: #undef BOOST_PP_SLOT_TEMP_8
23866: #undef BOOST_PP_SLOT_TEMP_9
23866: #undef BOOST_PP_SLOT_TEMP_10
23866:
23866:
23866: #define BOOST_PP_SLOT_TEMP_10 0
23866: # 50 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_9 0
23866: # 72 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_8 0
23866: # 94 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_7 0
23866: # 116 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_6 0
23866: # 138 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_5 0
23866: # 160 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_4 0
23866: # 182 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_3 0
23866: # 204 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_2 0
23866: # 226 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_1 0
23866: # 247 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #undef BOOST_PP_VALUE
23866: # 13 "/usr/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp" 2 3 4
23866:
23866: #undef BOOST_PP_ITERATION_START_1
23866:
23866: #undef BOOST_PP_ITERATION_START_1_DIGIT_1
23866: #undef BOOST_PP_ITERATION_START_1_DIGIT_2
23866: #undef BOOST_PP_ITERATION_START_1_DIGIT_3
23866: #undef BOOST_PP_ITERATION_START_1_DIGIT_4
23866: #undef BOOST_PP_ITERATION_START_1_DIGIT_5
23866: #undef BOOST_PP_ITERATION_START_1_DIGIT_6
23866: #undef BOOST_PP_ITERATION_START_1_DIGIT_7
23866: #undef BOOST_PP_ITERATION_START_1_DIGIT_8
23866: #undef BOOST_PP_ITERATION_START_1_DIGIT_9
23866: #undef BOOST_PP_ITERATION_START_1_DIGIT_10
23866:
23866:
23866: #define BOOST_PP_ITERATION_START_1_DIGIT_3 0
23866: # 50 "/usr/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp" 3 4
23866: #define BOOST_PP_ITERATION_START_1_DIGIT_2 0
23866: # 72 "/usr/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp" 3 4
23866: #define BOOST_PP_ITERATION_START_1_DIGIT_1 0
23866: # 98 "/usr/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp" 3 4
23866: #define BOOST_PP_ITERATION_START_1 BOOST_PP_ITERATION_START_1_DIGIT_1
23866: # 25 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(1, BOOST_PP_ITERATION_PARAMS_1)
23866: # 1 "/usr/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp" 1 3 4
23866: # 12 "/usr/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp" 3 4
23866: # 1 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 1 3 4
23866: # 16 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #undef BOOST_PP_SLOT_TEMP_1
23866: #undef BOOST_PP_SLOT_TEMP_2
23866: #undef BOOST_PP_SLOT_TEMP_3
23866: #undef BOOST_PP_SLOT_TEMP_4
23866: #undef BOOST_PP_SLOT_TEMP_5
23866: #undef BOOST_PP_SLOT_TEMP_6
23866: #undef BOOST_PP_SLOT_TEMP_7
23866: #undef BOOST_PP_SLOT_TEMP_8
23866: #undef BOOST_PP_SLOT_TEMP_9
23866: #undef BOOST_PP_SLOT_TEMP_10
23866:
23866:
23866: #define BOOST_PP_SLOT_TEMP_10 0
23866: # 50 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_9 0
23866: # 72 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_8 0
23866: # 94 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_7 0
23866: # 116 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_6 0
23866: # 138 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_5 0
23866: # 160 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_4 0
23866: # 182 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_3 0
23866: # 206 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_2 1
23866: # 238 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_1 6
23866: # 247 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #undef BOOST_PP_VALUE
23866: # 13 "/usr/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp" 2 3 4
23866:
23866: #undef BOOST_PP_ITERATION_FINISH_1
23866:
23866: #undef BOOST_PP_ITERATION_FINISH_1_DIGIT_1
23866: #undef BOOST_PP_ITERATION_FINISH_1_DIGIT_2
23866: #undef BOOST_PP_ITERATION_FINISH_1_DIGIT_3
23866: #undef BOOST_PP_ITERATION_FINISH_1_DIGIT_4
23866: #undef BOOST_PP_ITERATION_FINISH_1_DIGIT_5
23866: #undef BOOST_PP_ITERATION_FINISH_1_DIGIT_6
23866: #undef BOOST_PP_ITERATION_FINISH_1_DIGIT_7
23866: #undef BOOST_PP_ITERATION_FINISH_1_DIGIT_8
23866: #undef BOOST_PP_ITERATION_FINISH_1_DIGIT_9
23866: #undef BOOST_PP_ITERATION_FINISH_1_DIGIT_10
23866:
23866:
23866: #define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 0
23866: # 52 "/usr/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp" 3 4
23866: #define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 1
23866: # 84 "/usr/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp" 3 4
23866: #define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 6
23866: # 96 "/usr/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp" 3 4
23866: #define BOOST_PP_ITERATION_FINISH_1 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_FINISH_1_DIGIT_2, BOOST_PP_ITERATION_FINISH_1_DIGIT_1)
23866: # 27 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #define BOOST_PP_FILENAME_1 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_1)
23866:
23866:
23866:
23866: #define BOOST_PP_ITERATION_FLAGS_1() 0
23866:
23866:
23866:
23866:
23866:
23866: #undef BOOST_PP_ITERATION_DEPTH
23866: #define BOOST_PP_ITERATION_DEPTH() 1
23866:
23866: #define BOOST_PP_IS_ITERATING 1
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_ITERATION_1 0
23866: # 1 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 1 3 4
23866: # 22 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #define BOOST_RESULT_OF_ARGS BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T)
23866:
23866:
23866:
23866: template<typename F >
23866: struct tr1_result_of<F()>
23866: : conditional<
23866: is_pointer<F>::value || is_member_function_pointer<F>::value
23866: , boost::detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type(),
23866: (boost::detail::result_of_has_result_type<F>::value)>
23866: , boost::detail::tr1_result_of_impl<
23866: F,
23866: F(),
23866: (boost::detail::result_of_has_result_type<F>::value)> >::type { };
23866:
23866:
23866:
23866: template<typename F >
23866: struct result_of<F()>
23866: : detail::cpp0x_result_of<F()> { };
23866: # 56 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: namespace detail {
23866:
23866: template<typename F >
23866: struct cpp0x_result_of<F()>
23866: : conditional<
23866: is_member_function_pointer<F>::value
23866: , detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type(), false
23866: >
23866: , detail::cpp0x_result_of_impl<
23866: F()
23866: >
23866: >::type
23866: {};
23866: # 134 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: template<typename F >
23866: struct cpp0x_result_of_impl<F(),
23866: typename result_of_always_void<decltype(
23866: boost::declval<F>()(
23866:
23866: )
23866: )>::type> {
23866: typedef decltype(
23866: boost::declval<F>()(
23866:
23866: )
23866: ) type;
23866: };
23866:
23866:
23866:
23866: }
23866: # 162 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #undef BOOST_RESULT_OF_ARGS
23866: # 48 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_1
23866:
23866:
23866: #define BOOST_PP_ITERATION_1 1
23866: # 1 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 1 3 4
23866: # 22 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #define BOOST_RESULT_OF_ARGS BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T)
23866:
23866:
23866:
23866: template<typename F , typename T0>
23866: struct tr1_result_of<F( T0)>
23866: : conditional<
23866: is_pointer<F>::value || is_member_function_pointer<F>::value
23866: , boost::detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0),
23866: (boost::detail::result_of_has_result_type<F>::value)>
23866: , boost::detail::tr1_result_of_impl<
23866: F,
23866: F( T0),
23866: (boost::detail::result_of_has_result_type<F>::value)> >::type { };
23866:
23866:
23866:
23866: template<typename F , typename T0>
23866: struct result_of<F( T0)>
23866: : detail::cpp0x_result_of<F( T0)> { };
23866: # 56 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: namespace detail {
23866:
23866: template<typename F , typename T0>
23866: struct cpp0x_result_of<F( T0)>
23866: : conditional<
23866: is_member_function_pointer<F>::value
23866: , detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0), false
23866: >
23866: , detail::cpp0x_result_of_impl<
23866: F( T0)
23866: >
23866: >::type
23866: {};
23866: # 134 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: template<typename F , typename T0>
23866: struct cpp0x_result_of_impl<F( T0),
23866: typename result_of_always_void<decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >()
23866: )
23866: )>::type> {
23866: typedef decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >()
23866: )
23866: ) type;
23866: };
23866:
23866:
23866:
23866: }
23866: # 162 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #undef BOOST_RESULT_OF_ARGS
23866:
23866:
23866:
23866: namespace detail {
23866:
23866: template<typename R, typename FArgs , typename T0>
23866: struct tr1_result_of_impl<R (*)( T0), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0>
23866: struct tr1_result_of_impl<R (&)( T0), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: template<typename R, typename FArgs , typename T0>
23866: struct tr1_result_of_impl<R (T0::*)
23866: (),
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ()
23866: const,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ()
23866: volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ()
23866: const volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: }
23866: # 53 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_1
23866:
23866:
23866: #define BOOST_PP_ITERATION_1 2
23866: # 1 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 1 3 4
23866: # 22 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #define BOOST_RESULT_OF_ARGS BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T)
23866:
23866:
23866:
23866: template<typename F , typename T0 , typename T1>
23866: struct tr1_result_of<F( T0 , T1)>
23866: : conditional<
23866: is_pointer<F>::value || is_member_function_pointer<F>::value
23866: , boost::detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1),
23866: (boost::detail::result_of_has_result_type<F>::value)>
23866: , boost::detail::tr1_result_of_impl<
23866: F,
23866: F( T0 , T1),
23866: (boost::detail::result_of_has_result_type<F>::value)> >::type { };
23866:
23866:
23866:
23866: template<typename F , typename T0 , typename T1>
23866: struct result_of<F( T0 , T1)>
23866: : detail::cpp0x_result_of<F( T0 , T1)> { };
23866: # 56 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: namespace detail {
23866:
23866: template<typename F , typename T0 , typename T1>
23866: struct cpp0x_result_of<F( T0 , T1)>
23866: : conditional<
23866: is_member_function_pointer<F>::value
23866: , detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1), false
23866: >
23866: , detail::cpp0x_result_of_impl<
23866: F( T0 , T1)
23866: >
23866: >::type
23866: {};
23866: # 134 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: template<typename F , typename T0 , typename T1>
23866: struct cpp0x_result_of_impl<F( T0 , T1),
23866: typename result_of_always_void<decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >()
23866: )
23866: )>::type> {
23866: typedef decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >()
23866: )
23866: ) type;
23866: };
23866:
23866:
23866:
23866: }
23866: # 162 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #undef BOOST_RESULT_OF_ARGS
23866:
23866:
23866:
23866: namespace detail {
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1>
23866: struct tr1_result_of_impl<R (*)( T0 , T1), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1>
23866: struct tr1_result_of_impl<R (&)( T0 , T1), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1),
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1)
23866: const,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1)
23866: volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1)
23866: const volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: }
23866: # 58 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_1
23866:
23866:
23866: #define BOOST_PP_ITERATION_1 3
23866: # 1 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 1 3 4
23866: # 22 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #define BOOST_RESULT_OF_ARGS BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T)
23866:
23866:
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2>
23866: struct tr1_result_of<F( T0 , T1 , T2)>
23866: : conditional<
23866: is_pointer<F>::value || is_member_function_pointer<F>::value
23866: , boost::detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1 , T2),
23866: (boost::detail::result_of_has_result_type<F>::value)>
23866: , boost::detail::tr1_result_of_impl<
23866: F,
23866: F( T0 , T1 , T2),
23866: (boost::detail::result_of_has_result_type<F>::value)> >::type { };
23866:
23866:
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2>
23866: struct result_of<F( T0 , T1 , T2)>
23866: : detail::cpp0x_result_of<F( T0 , T1 , T2)> { };
23866: # 56 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: namespace detail {
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2>
23866: struct cpp0x_result_of<F( T0 , T1 , T2)>
23866: : conditional<
23866: is_member_function_pointer<F>::value
23866: , detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1 , T2), false
23866: >
23866: , detail::cpp0x_result_of_impl<
23866: F( T0 , T1 , T2)
23866: >
23866: >::type
23866: {};
23866: # 134 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: template<typename F , typename T0 , typename T1 , typename T2>
23866: struct cpp0x_result_of_impl<F( T0 , T1 , T2),
23866: typename result_of_always_void<decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >() , boost::declval<T2 >()
23866: )
23866: )>::type> {
23866: typedef decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >() , boost::declval<T2 >()
23866: )
23866: ) type;
23866: };
23866:
23866:
23866:
23866: }
23866: # 162 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #undef BOOST_RESULT_OF_ARGS
23866:
23866:
23866:
23866: namespace detail {
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2>
23866: struct tr1_result_of_impl<R (*)( T0 , T1 , T2), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2>
23866: struct tr1_result_of_impl<R (&)( T0 , T1 , T2), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2),
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2)
23866: const,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2)
23866: volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2)
23866: const volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: }
23866: # 63 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_1
23866:
23866:
23866: #define BOOST_PP_ITERATION_1 4
23866: # 1 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 1 3 4
23866: # 22 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #define BOOST_RESULT_OF_ARGS BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T)
23866:
23866:
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3>
23866: struct tr1_result_of<F( T0 , T1 , T2 , T3)>
23866: : conditional<
23866: is_pointer<F>::value || is_member_function_pointer<F>::value
23866: , boost::detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1 , T2 , T3),
23866: (boost::detail::result_of_has_result_type<F>::value)>
23866: , boost::detail::tr1_result_of_impl<
23866: F,
23866: F( T0 , T1 , T2 , T3),
23866: (boost::detail::result_of_has_result_type<F>::value)> >::type { };
23866:
23866:
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3>
23866: struct result_of<F( T0 , T1 , T2 , T3)>
23866: : detail::cpp0x_result_of<F( T0 , T1 , T2 , T3)> { };
23866: # 56 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: namespace detail {
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3>
23866: struct cpp0x_result_of<F( T0 , T1 , T2 , T3)>
23866: : conditional<
23866: is_member_function_pointer<F>::value
23866: , detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1 , T2 , T3), false
23866: >
23866: , detail::cpp0x_result_of_impl<
23866: F( T0 , T1 , T2 , T3)
23866: >
23866: >::type
23866: {};
23866: # 134 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3>
23866: struct cpp0x_result_of_impl<F( T0 , T1 , T2 , T3),
23866: typename result_of_always_void<decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >() , boost::declval<T2 >() , boost::declval<T3 >()
23866: )
23866: )>::type> {
23866: typedef decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >() , boost::declval<T2 >() , boost::declval<T3 >()
23866: )
23866: ) type;
23866: };
23866:
23866:
23866:
23866: }
23866: # 162 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #undef BOOST_RESULT_OF_ARGS
23866:
23866:
23866:
23866: namespace detail {
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3>
23866: struct tr1_result_of_impl<R (*)( T0 , T1 , T2 , T3), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3>
23866: struct tr1_result_of_impl<R (&)( T0 , T1 , T2 , T3), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3),
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3)
23866: const,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3)
23866: volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3)
23866: const volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: }
23866: # 68 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_1
23866:
23866:
23866: #define BOOST_PP_ITERATION_1 5
23866: # 1 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 1 3 4
23866: # 22 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #define BOOST_RESULT_OF_ARGS BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T)
23866:
23866:
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
23866: struct tr1_result_of<F( T0 , T1 , T2 , T3 , T4)>
23866: : conditional<
23866: is_pointer<F>::value || is_member_function_pointer<F>::value
23866: , boost::detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4),
23866: (boost::detail::result_of_has_result_type<F>::value)>
23866: , boost::detail::tr1_result_of_impl<
23866: F,
23866: F( T0 , T1 , T2 , T3 , T4),
23866: (boost::detail::result_of_has_result_type<F>::value)> >::type { };
23866:
23866:
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
23866: struct result_of<F( T0 , T1 , T2 , T3 , T4)>
23866: : detail::cpp0x_result_of<F( T0 , T1 , T2 , T3 , T4)> { };
23866: # 56 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: namespace detail {
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
23866: struct cpp0x_result_of<F( T0 , T1 , T2 , T3 , T4)>
23866: : conditional<
23866: is_member_function_pointer<F>::value
23866: , detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4), false
23866: >
23866: , detail::cpp0x_result_of_impl<
23866: F( T0 , T1 , T2 , T3 , T4)
23866: >
23866: >::type
23866: {};
23866: # 134 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
23866: struct cpp0x_result_of_impl<F( T0 , T1 , T2 , T3 , T4),
23866: typename result_of_always_void<decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >() , boost::declval<T2 >() , boost::declval<T3 >() , boost::declval<T4 >()
23866: )
23866: )>::type> {
23866: typedef decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >() , boost::declval<T2 >() , boost::declval<T3 >() , boost::declval<T4 >()
23866: )
23866: ) type;
23866: };
23866:
23866:
23866:
23866: }
23866: # 162 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #undef BOOST_RESULT_OF_ARGS
23866:
23866:
23866:
23866: namespace detail {
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
23866: struct tr1_result_of_impl<R (*)( T0 , T1 , T2 , T3 , T4), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
23866: struct tr1_result_of_impl<R (&)( T0 , T1 , T2 , T3 , T4), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4),
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4)
23866: const,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4)
23866: volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4)
23866: const volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: }
23866: # 73 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_1
23866:
23866:
23866: #define BOOST_PP_ITERATION_1 6
23866: # 1 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 1 3 4
23866: # 22 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #define BOOST_RESULT_OF_ARGS BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T)
23866:
23866:
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
23866: struct tr1_result_of<F( T0 , T1 , T2 , T3 , T4 , T5)>
23866: : conditional<
23866: is_pointer<F>::value || is_member_function_pointer<F>::value
23866: , boost::detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4 , T5),
23866: (boost::detail::result_of_has_result_type<F>::value)>
23866: , boost::detail::tr1_result_of_impl<
23866: F,
23866: F( T0 , T1 , T2 , T3 , T4 , T5),
23866: (boost::detail::result_of_has_result_type<F>::value)> >::type { };
23866:
23866:
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
23866: struct result_of<F( T0 , T1 , T2 , T3 , T4 , T5)>
23866: : detail::cpp0x_result_of<F( T0 , T1 , T2 , T3 , T4 , T5)> { };
23866: # 56 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: namespace detail {
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
23866: struct cpp0x_result_of<F( T0 , T1 , T2 , T3 , T4 , T5)>
23866: : conditional<
23866: is_member_function_pointer<F>::value
23866: , detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4 , T5), false
23866: >
23866: , detail::cpp0x_result_of_impl<
23866: F( T0 , T1 , T2 , T3 , T4 , T5)
23866: >
23866: >::type
23866: {};
23866: # 134 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
23866: struct cpp0x_result_of_impl<F( T0 , T1 , T2 , T3 , T4 , T5),
23866: typename result_of_always_void<decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >() , boost::declval<T2 >() , boost::declval<T3 >() , boost::declval<T4 >() , boost::declval<T5 >()
23866: )
23866: )>::type> {
23866: typedef decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >() , boost::declval<T2 >() , boost::declval<T3 >() , boost::declval<T4 >() , boost::declval<T5 >()
23866: )
23866: ) type;
23866: };
23866:
23866:
23866:
23866: }
23866: # 162 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #undef BOOST_RESULT_OF_ARGS
23866:
23866:
23866:
23866: namespace detail {
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
23866: struct tr1_result_of_impl<R (*)( T0 , T1 , T2 , T3 , T4 , T5), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
23866: struct tr1_result_of_impl<R (&)( T0 , T1 , T2 , T3 , T4 , T5), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5),
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5)
23866: const,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5)
23866: volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5)
23866: const volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: }
23866: # 78 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_1
23866:
23866:
23866: #define BOOST_PP_ITERATION_1 7
23866: # 1 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 1 3 4
23866: # 22 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #define BOOST_RESULT_OF_ARGS BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T)
23866:
23866:
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
23866: struct tr1_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6)>
23866: : conditional<
23866: is_pointer<F>::value || is_member_function_pointer<F>::value
23866: , boost::detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4 , T5 , T6),
23866: (boost::detail::result_of_has_result_type<F>::value)>
23866: , boost::detail::tr1_result_of_impl<
23866: F,
23866: F( T0 , T1 , T2 , T3 , T4 , T5 , T6),
23866: (boost::detail::result_of_has_result_type<F>::value)> >::type { };
23866:
23866:
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
23866: struct result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6)>
23866: : detail::cpp0x_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6)> { };
23866: # 56 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: namespace detail {
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
23866: struct cpp0x_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6)>
23866: : conditional<
23866: is_member_function_pointer<F>::value
23866: , detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4 , T5 , T6), false
23866: >
23866: , detail::cpp0x_result_of_impl<
23866: F( T0 , T1 , T2 , T3 , T4 , T5 , T6)
23866: >
23866: >::type
23866: {};
23866: # 134 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
23866: struct cpp0x_result_of_impl<F( T0 , T1 , T2 , T3 , T4 , T5 , T6),
23866: typename result_of_always_void<decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >() , boost::declval<T2 >() , boost::declval<T3 >() , boost::declval<T4 >() , boost::declval<T5 >() , boost::declval<T6 >()
23866: )
23866: )>::type> {
23866: typedef decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >() , boost::declval<T2 >() , boost::declval<T3 >() , boost::declval<T4 >() , boost::declval<T5 >() , boost::declval<T6 >()
23866: )
23866: ) type;
23866: };
23866:
23866:
23866:
23866: }
23866: # 162 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #undef BOOST_RESULT_OF_ARGS
23866:
23866:
23866:
23866: namespace detail {
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
23866: struct tr1_result_of_impl<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
23866: struct tr1_result_of_impl<R (&)( T0 , T1 , T2 , T3 , T4 , T5 , T6), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6),
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6)
23866: const,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6)
23866: volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6)
23866: const volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: }
23866: # 83 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_1
23866:
23866:
23866: #define BOOST_PP_ITERATION_1 8
23866: # 1 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 1 3 4
23866: # 22 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #define BOOST_RESULT_OF_ARGS BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T)
23866:
23866:
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
23866: struct tr1_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)>
23866: : conditional<
23866: is_pointer<F>::value || is_member_function_pointer<F>::value
23866: , boost::detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7),
23866: (boost::detail::result_of_has_result_type<F>::value)>
23866: , boost::detail::tr1_result_of_impl<
23866: F,
23866: F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7),
23866: (boost::detail::result_of_has_result_type<F>::value)> >::type { };
23866:
23866:
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
23866: struct result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)>
23866: : detail::cpp0x_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)> { };
23866: # 56 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: namespace detail {
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
23866: struct cpp0x_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)>
23866: : conditional<
23866: is_member_function_pointer<F>::value
23866: , detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7), false
23866: >
23866: , detail::cpp0x_result_of_impl<
23866: F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)
23866: >
23866: >::type
23866: {};
23866: # 134 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
23866: struct cpp0x_result_of_impl<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7),
23866: typename result_of_always_void<decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >() , boost::declval<T2 >() , boost::declval<T3 >() , boost::declval<T4 >() , boost::declval<T5 >() , boost::declval<T6 >() , boost::declval<T7 >()
23866: )
23866: )>::type> {
23866: typedef decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >() , boost::declval<T2 >() , boost::declval<T3 >() , boost::declval<T4 >() , boost::declval<T5 >() , boost::declval<T6 >() , boost::declval<T7 >()
23866: )
23866: ) type;
23866: };
23866:
23866:
23866:
23866: }
23866: # 162 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #undef BOOST_RESULT_OF_ARGS
23866:
23866:
23866:
23866: namespace detail {
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
23866: struct tr1_result_of_impl<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
23866: struct tr1_result_of_impl<R (&)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7),
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7)
23866: const,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7)
23866: volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7)
23866: const volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: }
23866: # 88 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_1
23866:
23866:
23866: #define BOOST_PP_ITERATION_1 9
23866: # 1 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 1 3 4
23866: # 22 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #define BOOST_RESULT_OF_ARGS BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T)
23866:
23866:
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
23866: struct tr1_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)>
23866: : conditional<
23866: is_pointer<F>::value || is_member_function_pointer<F>::value
23866: , boost::detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8),
23866: (boost::detail::result_of_has_result_type<F>::value)>
23866: , boost::detail::tr1_result_of_impl<
23866: F,
23866: F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8),
23866: (boost::detail::result_of_has_result_type<F>::value)> >::type { };
23866:
23866:
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
23866: struct result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)>
23866: : detail::cpp0x_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)> { };
23866: # 56 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: namespace detail {
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
23866: struct cpp0x_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)>
23866: : conditional<
23866: is_member_function_pointer<F>::value
23866: , detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8), false
23866: >
23866: , detail::cpp0x_result_of_impl<
23866: F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)
23866: >
23866: >::type
23866: {};
23866: # 134 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
23866: struct cpp0x_result_of_impl<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8),
23866: typename result_of_always_void<decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >() , boost::declval<T2 >() , boost::declval<T3 >() , boost::declval<T4 >() , boost::declval<T5 >() , boost::declval<T6 >() , boost::declval<T7 >() , boost::declval<T8 >()
23866: )
23866: )>::type> {
23866: typedef decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >() , boost::declval<T2 >() , boost::declval<T3 >() , boost::declval<T4 >() , boost::declval<T5 >() , boost::declval<T6 >() , boost::declval<T7 >() , boost::declval<T8 >()
23866: )
23866: ) type;
23866: };
23866:
23866:
23866:
23866: }
23866: # 162 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #undef BOOST_RESULT_OF_ARGS
23866:
23866:
23866:
23866: namespace detail {
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
23866: struct tr1_result_of_impl<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
23866: struct tr1_result_of_impl<R (&)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8),
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)
23866: const,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)
23866: volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)
23866: const volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: }
23866: # 93 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_1
23866:
23866:
23866: #define BOOST_PP_ITERATION_1 10
23866: # 1 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 1 3 4
23866: # 22 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #define BOOST_RESULT_OF_ARGS BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T)
23866:
23866:
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
23866: struct tr1_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)>
23866: : conditional<
23866: is_pointer<F>::value || is_member_function_pointer<F>::value
23866: , boost::detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9),
23866: (boost::detail::result_of_has_result_type<F>::value)>
23866: , boost::detail::tr1_result_of_impl<
23866: F,
23866: F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9),
23866: (boost::detail::result_of_has_result_type<F>::value)> >::type { };
23866:
23866:
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
23866: struct result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)>
23866: : detail::cpp0x_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)> { };
23866: # 56 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: namespace detail {
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
23866: struct cpp0x_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)>
23866: : conditional<
23866: is_member_function_pointer<F>::value
23866: , detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9), false
23866: >
23866: , detail::cpp0x_result_of_impl<
23866: F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)
23866: >
23866: >::type
23866: {};
23866: # 134 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
23866: struct cpp0x_result_of_impl<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9),
23866: typename result_of_always_void<decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >() , boost::declval<T2 >() , boost::declval<T3 >() , boost::declval<T4 >() , boost::declval<T5 >() , boost::declval<T6 >() , boost::declval<T7 >() , boost::declval<T8 >() , boost::declval<T9 >()
23866: )
23866: )>::type> {
23866: typedef decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >() , boost::declval<T2 >() , boost::declval<T3 >() , boost::declval<T4 >() , boost::declval<T5 >() , boost::declval<T6 >() , boost::declval<T7 >() , boost::declval<T8 >() , boost::declval<T9 >()
23866: )
23866: ) type;
23866: };
23866:
23866:
23866:
23866: }
23866: # 162 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #undef BOOST_RESULT_OF_ARGS
23866:
23866:
23866:
23866: namespace detail {
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
23866: struct tr1_result_of_impl<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
23866: struct tr1_result_of_impl<R (&)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9),
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)
23866: const,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)
23866: volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)
23866: const volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: }
23866: # 98 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_1
23866:
23866:
23866: #define BOOST_PP_ITERATION_1 11
23866: # 1 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 1 3 4
23866: # 22 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #define BOOST_RESULT_OF_ARGS BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T)
23866:
23866:
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10>
23866: struct tr1_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)>
23866: : conditional<
23866: is_pointer<F>::value || is_member_function_pointer<F>::value
23866: , boost::detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10),
23866: (boost::detail::result_of_has_result_type<F>::value)>
23866: , boost::detail::tr1_result_of_impl<
23866: F,
23866: F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10),
23866: (boost::detail::result_of_has_result_type<F>::value)> >::type { };
23866:
23866:
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10>
23866: struct result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)>
23866: : detail::cpp0x_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)> { };
23866: # 56 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: namespace detail {
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10>
23866: struct cpp0x_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)>
23866: : conditional<
23866: is_member_function_pointer<F>::value
23866: , detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10), false
23866: >
23866: , detail::cpp0x_result_of_impl<
23866: F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)
23866: >
23866: >::type
23866: {};
23866: # 134 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10>
23866: struct cpp0x_result_of_impl<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10),
23866: typename result_of_always_void<decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >() , boost::declval<T2 >() , boost::declval<T3 >() , boost::declval<T4 >() , boost::declval<T5 >() , boost::declval<T6 >() , boost::declval<T7 >() , boost::declval<T8 >() , boost::declval<T9 >() , boost::declval<T10 >()
23866: )
23866: )>::type> {
23866: typedef decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >() , boost::declval<T2 >() , boost::declval<T3 >() , boost::declval<T4 >() , boost::declval<T5 >() , boost::declval<T6 >() , boost::declval<T7 >() , boost::declval<T8 >() , boost::declval<T9 >() , boost::declval<T10 >()
23866: )
23866: ) type;
23866: };
23866:
23866:
23866:
23866: }
23866: # 162 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #undef BOOST_RESULT_OF_ARGS
23866:
23866:
23866:
23866: namespace detail {
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10>
23866: struct tr1_result_of_impl<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10>
23866: struct tr1_result_of_impl<R (&)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10),
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)
23866: const,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)
23866: volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)
23866: const volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: }
23866: # 103 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_1
23866:
23866:
23866: #define BOOST_PP_ITERATION_1 12
23866: # 1 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 1 3 4
23866: # 22 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #define BOOST_RESULT_OF_ARGS BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T)
23866:
23866:
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11>
23866: struct tr1_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)>
23866: : conditional<
23866: is_pointer<F>::value || is_member_function_pointer<F>::value
23866: , boost::detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11),
23866: (boost::detail::result_of_has_result_type<F>::value)>
23866: , boost::detail::tr1_result_of_impl<
23866: F,
23866: F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11),
23866: (boost::detail::result_of_has_result_type<F>::value)> >::type { };
23866:
23866:
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11>
23866: struct result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)>
23866: : detail::cpp0x_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)> { };
23866: # 56 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: namespace detail {
23866:
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11>
23866: struct cpp0x_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)>
23866: : conditional<
23866: is_member_function_pointer<F>::value
23866: , detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11), false
23866: >
23866: , detail::cpp0x_result_of_impl<
23866: F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)
23866: >
23866: >::type
23866: {};
23866: # 134 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: template<typename F , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11>
23866: struct cpp0x_result_of_impl<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11),
23866: typename result_of_always_void<decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >() , boost::declval<T2 >() , boost::declval<T3 >() , boost::declval<T4 >() , boost::declval<T5 >() , boost::declval<T6 >() , boost::declval<T7 >() , boost::declval<T8 >() , boost::declval<T9 >() , boost::declval<T10 >() , boost::declval<T11 >()
23866: )
23866: )>::type> {
23866: typedef decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >() , boost::declval<T2 >() , boost::declval<T3 >() , boost::declval<T4 >() , boost::declval<T5 >() , boost::declval<T6 >() , boost::declval<T7 >() , boost::declval<T8 >() , boost::declval<T9 >() , boost::declval<T10 >() , boost::declval<T11 >()
23866: )
23866: ) type;
23866: };
23866:
23866:
23866:
23866: }
23866: # 162 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #undef BOOST_RESULT_OF_ARGS
23866:
23866:
23866:
23866: namespace detail {
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11>
23866: struct tr1_result_of_impl<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11>
23866: struct tr1_result_of_impl<R (&)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11),
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)
23866: const,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)
23866: volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)
23866: const volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: }
23866: # 108 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_1
23866:
23866:
23866: #define BOOST_PP_ITERATION_1 13
23866: # 1 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 1 3 4
23866: # 22 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #define BOOST_RESULT_OF_ARGS BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T)
23866:
23866:
23866:
23866: template<typename F , 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>
23866: struct tr1_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)>
23866: : conditional<
23866: is_pointer<F>::value || is_member_function_pointer<F>::value
23866: , boost::detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12),
23866: (boost::detail::result_of_has_result_type<F>::value)>
23866: , boost::detail::tr1_result_of_impl<
23866: F,
23866: F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12),
23866: (boost::detail::result_of_has_result_type<F>::value)> >::type { };
23866:
23866:
23866:
23866: template<typename F , 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>
23866: struct result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)>
23866: : detail::cpp0x_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)> { };
23866: # 56 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: namespace detail {
23866:
23866: template<typename F , 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>
23866: struct cpp0x_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)>
23866: : conditional<
23866: is_member_function_pointer<F>::value
23866: , detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12), false
23866: >
23866: , detail::cpp0x_result_of_impl<
23866: F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)
23866: >
23866: >::type
23866: {};
23866: # 134 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: template<typename F , 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>
23866: struct cpp0x_result_of_impl<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12),
23866: typename result_of_always_void<decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >() , boost::declval<T2 >() , boost::declval<T3 >() , boost::declval<T4 >() , boost::declval<T5 >() , boost::declval<T6 >() , boost::declval<T7 >() , boost::declval<T8 >() , boost::declval<T9 >() , boost::declval<T10 >() , boost::declval<T11 >() , boost::declval<T12 >()
23866: )
23866: )>::type> {
23866: typedef decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >() , boost::declval<T2 >() , boost::declval<T3 >() , boost::declval<T4 >() , boost::declval<T5 >() , boost::declval<T6 >() , boost::declval<T7 >() , boost::declval<T8 >() , boost::declval<T9 >() , boost::declval<T10 >() , boost::declval<T11 >() , boost::declval<T12 >()
23866: )
23866: ) type;
23866: };
23866:
23866:
23866:
23866: }
23866: # 162 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #undef BOOST_RESULT_OF_ARGS
23866:
23866:
23866:
23866: namespace detail {
23866:
23866: template<typename R, typename FArgs , 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>
23866: struct tr1_result_of_impl<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , 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>
23866: struct tr1_result_of_impl<R (&)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: template<typename R, typename FArgs , 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>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12),
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , 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>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)
23866: const,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , 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>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)
23866: volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , 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>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)
23866: const volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: }
23866: # 113 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_1
23866:
23866:
23866: #define BOOST_PP_ITERATION_1 14
23866: # 1 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 1 3 4
23866: # 22 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #define BOOST_RESULT_OF_ARGS BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T)
23866:
23866:
23866:
23866: template<typename F , 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>
23866: struct tr1_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)>
23866: : conditional<
23866: is_pointer<F>::value || is_member_function_pointer<F>::value
23866: , boost::detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13),
23866: (boost::detail::result_of_has_result_type<F>::value)>
23866: , boost::detail::tr1_result_of_impl<
23866: F,
23866: F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13),
23866: (boost::detail::result_of_has_result_type<F>::value)> >::type { };
23866:
23866:
23866:
23866: template<typename F , 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>
23866: struct result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)>
23866: : detail::cpp0x_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)> { };
23866: # 56 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: namespace detail {
23866:
23866: template<typename F , 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>
23866: struct cpp0x_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)>
23866: : conditional<
23866: is_member_function_pointer<F>::value
23866: , detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13), false
23866: >
23866: , detail::cpp0x_result_of_impl<
23866: F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)
23866: >
23866: >::type
23866: {};
23866: # 134 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: template<typename F , 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>
23866: struct cpp0x_result_of_impl<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13),
23866: typename result_of_always_void<decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >() , boost::declval<T2 >() , boost::declval<T3 >() , boost::declval<T4 >() , boost::declval<T5 >() , boost::declval<T6 >() , boost::declval<T7 >() , boost::declval<T8 >() , boost::declval<T9 >() , boost::declval<T10 >() , boost::declval<T11 >() , boost::declval<T12 >() , boost::declval<T13 >()
23866: )
23866: )>::type> {
23866: typedef decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >() , boost::declval<T2 >() , boost::declval<T3 >() , boost::declval<T4 >() , boost::declval<T5 >() , boost::declval<T6 >() , boost::declval<T7 >() , boost::declval<T8 >() , boost::declval<T9 >() , boost::declval<T10 >() , boost::declval<T11 >() , boost::declval<T12 >() , boost::declval<T13 >()
23866: )
23866: ) type;
23866: };
23866:
23866:
23866:
23866: }
23866: # 162 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #undef BOOST_RESULT_OF_ARGS
23866:
23866:
23866:
23866: namespace detail {
23866:
23866: template<typename R, typename FArgs , 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>
23866: struct tr1_result_of_impl<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , 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>
23866: struct tr1_result_of_impl<R (&)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: template<typename R, typename FArgs , 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>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13),
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , 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>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)
23866: const,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , 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>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)
23866: volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , 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>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)
23866: const volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: }
23866: # 118 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_1
23866:
23866:
23866: #define BOOST_PP_ITERATION_1 15
23866: # 1 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 1 3 4
23866: # 22 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #define BOOST_RESULT_OF_ARGS BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T)
23866:
23866:
23866:
23866: template<typename F , 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>
23866: struct tr1_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)>
23866: : conditional<
23866: is_pointer<F>::value || is_member_function_pointer<F>::value
23866: , boost::detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14),
23866: (boost::detail::result_of_has_result_type<F>::value)>
23866: , boost::detail::tr1_result_of_impl<
23866: F,
23866: F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14),
23866: (boost::detail::result_of_has_result_type<F>::value)> >::type { };
23866:
23866:
23866:
23866: template<typename F , 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>
23866: struct result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)>
23866: : detail::cpp0x_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)> { };
23866: # 56 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: namespace detail {
23866:
23866: template<typename F , 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>
23866: struct cpp0x_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)>
23866: : conditional<
23866: is_member_function_pointer<F>::value
23866: , detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14), false
23866: >
23866: , detail::cpp0x_result_of_impl<
23866: F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)
23866: >
23866: >::type
23866: {};
23866: # 134 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: template<typename F , 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>
23866: struct cpp0x_result_of_impl<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14),
23866: typename result_of_always_void<decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >() , boost::declval<T2 >() , boost::declval<T3 >() , boost::declval<T4 >() , boost::declval<T5 >() , boost::declval<T6 >() , boost::declval<T7 >() , boost::declval<T8 >() , boost::declval<T9 >() , boost::declval<T10 >() , boost::declval<T11 >() , boost::declval<T12 >() , boost::declval<T13 >() , boost::declval<T14 >()
23866: )
23866: )>::type> {
23866: typedef decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >() , boost::declval<T2 >() , boost::declval<T3 >() , boost::declval<T4 >() , boost::declval<T5 >() , boost::declval<T6 >() , boost::declval<T7 >() , boost::declval<T8 >() , boost::declval<T9 >() , boost::declval<T10 >() , boost::declval<T11 >() , boost::declval<T12 >() , boost::declval<T13 >() , boost::declval<T14 >()
23866: )
23866: ) type;
23866: };
23866:
23866:
23866:
23866: }
23866: # 162 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #undef BOOST_RESULT_OF_ARGS
23866:
23866:
23866:
23866: namespace detail {
23866:
23866: template<typename R, typename FArgs , 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>
23866: struct tr1_result_of_impl<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , 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>
23866: struct tr1_result_of_impl<R (&)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: template<typename R, typename FArgs , 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>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14),
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , 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>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)
23866: const,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , 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>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)
23866: volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , 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>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)
23866: const volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: }
23866: # 123 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_1
23866:
23866:
23866: #define BOOST_PP_ITERATION_1 16
23866: # 1 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 1 3 4
23866: # 22 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #define BOOST_RESULT_OF_ARGS BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T)
23866:
23866:
23866:
23866: template<typename F , 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>
23866: struct tr1_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)>
23866: : conditional<
23866: is_pointer<F>::value || is_member_function_pointer<F>::value
23866: , boost::detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15),
23866: (boost::detail::result_of_has_result_type<F>::value)>
23866: , boost::detail::tr1_result_of_impl<
23866: F,
23866: F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15),
23866: (boost::detail::result_of_has_result_type<F>::value)> >::type { };
23866:
23866:
23866:
23866: template<typename F , 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>
23866: struct result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)>
23866: : detail::cpp0x_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)> { };
23866: # 56 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: namespace detail {
23866:
23866: template<typename F , 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>
23866: struct cpp0x_result_of<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)>
23866: : conditional<
23866: is_member_function_pointer<F>::value
23866: , detail::tr1_result_of_impl<
23866: typename remove_cv<F>::type,
23866: typename remove_cv<F>::type( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15), false
23866: >
23866: , detail::cpp0x_result_of_impl<
23866: F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)
23866: >
23866: >::type
23866: {};
23866: # 134 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: template<typename F , 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>
23866: struct cpp0x_result_of_impl<F( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15),
23866: typename result_of_always_void<decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >() , boost::declval<T2 >() , boost::declval<T3 >() , boost::declval<T4 >() , boost::declval<T5 >() , boost::declval<T6 >() , boost::declval<T7 >() , boost::declval<T8 >() , boost::declval<T9 >() , boost::declval<T10 >() , boost::declval<T11 >() , boost::declval<T12 >() , boost::declval<T13 >() , boost::declval<T14 >() , boost::declval<T15 >()
23866: )
23866: )>::type> {
23866: typedef decltype(
23866: boost::declval<F>()(
23866: boost::declval<T0 >() , boost::declval<T1 >() , boost::declval<T2 >() , boost::declval<T3 >() , boost::declval<T4 >() , boost::declval<T5 >() , boost::declval<T6 >() , boost::declval<T7 >() , boost::declval<T8 >() , boost::declval<T9 >() , boost::declval<T10 >() , boost::declval<T11 >() , boost::declval<T12 >() , boost::declval<T13 >() , boost::declval<T14 >() , boost::declval<T15 >()
23866: )
23866: ) type;
23866: };
23866:
23866:
23866:
23866: }
23866: # 162 "/usr/include/boost/utility/detail/result_of_iterate.hpp" 3 4
23866: #undef BOOST_RESULT_OF_ARGS
23866:
23866:
23866:
23866: namespace detail {
23866:
23866: template<typename R, typename FArgs , 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>
23866: struct tr1_result_of_impl<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , 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>
23866: struct tr1_result_of_impl<R (&)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15), FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: template<typename R, typename FArgs , 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>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15),
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , 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>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)
23866: const,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , 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>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)
23866: volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866: template<typename R, typename FArgs , 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>
23866: struct tr1_result_of_impl<R (T0::*)
23866: ( T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)
23866: const volatile,
23866: FArgs, false>
23866: {
23866: typedef R type;
23866: };
23866:
23866:
23866: }
23866: # 128 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_1
23866: # 1332 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 3 4
23866: #undef BOOST_PP_IS_ITERATING
23866:
23866: #undef BOOST_PP_ITERATION_DEPTH
23866: #define BOOST_PP_ITERATION_DEPTH() 0
23866:
23866: #undef BOOST_PP_ITERATION_START_1
23866: #undef BOOST_PP_ITERATION_FINISH_1
23866: #undef BOOST_PP_FILENAME_1
23866:
23866: #undef BOOST_PP_ITERATION_FLAGS_1
23866: #undef BOOST_PP_ITERATION_PARAMS_1
23866: # 222 "/usr/include/boost/utility/result_of.hpp" 2 3 4
23866: # 232 "/usr/include/boost/utility/result_of.hpp" 3 4
23866: }
23866: # 23 "/usr/include/boost/iterator/transform_iterator.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/iterator/detail/config_def.hpp" 1 3 4
23866: # 22 "/usr/include/boost/iterator/detail/config_def.hpp" 3 4
23866: #define BOOST_ITERATOR_CONFIG_DEF
23866: # 45 "/usr/include/boost/iterator/detail/config_def.hpp" 3 4
23866: #define BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY 1
23866: # 31 "/usr/include/boost/iterator/transform_iterator.hpp" 2 3 4
23866:
23866:
23866: namespace boost {
23866: namespace iterators {
23866:
23866: template <class UnaryFunction, class Iterator, class Reference = use_default, class Value = use_default>
23866: class transform_iterator;
23866:
23866: namespace detail
23866: {
23866:
23866: template <class UnaryFunc, class Iterator, class Reference, class Value>
23866: struct transform_iterator_base
23866: {
23866: private:
23866:
23866:
23866: typedef typename ia_dflt_help<
23866: Reference
23866:
23866:
23866:
23866: , result_of<const UnaryFunc&(typename std::iterator_traits<Iterator>::reference)>
23866:
23866: >::type reference;
23866:
23866:
23866:
23866:
23866:
23866:
23866: typedef typename ia_dflt_help<
23866: Value
23866: , remove_reference<reference>
23866: >::type cv_value_type;
23866:
23866: public:
23866: typedef iterator_adaptor<
23866: transform_iterator<UnaryFunc, Iterator, Reference, Value>
23866: , Iterator
23866: , cv_value_type
23866: , use_default
23866: , reference
23866: > type;
23866: };
23866: }
23866:
23866: template <class UnaryFunc, class Iterator, class Reference, class Value>
23866: class transform_iterator
23866: : public boost::iterators::detail::transform_iterator_base<UnaryFunc, Iterator, Reference, Value>::type
23866: {
23866: typedef typename
23866: boost::iterators::detail::transform_iterator_base<UnaryFunc, Iterator, Reference, Value>::type
23866: super_t;
23866:
23866: friend class iterator_core_access;
23866:
23866: public:
23866: transform_iterator() { }
23866:
23866: transform_iterator(Iterator const& x, UnaryFunc f)
23866: : super_t(x), m_f(f) { }
23866:
23866: explicit transform_iterator(Iterator const& x)
23866: : super_t(x)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: static_assert(is_class<UnaryFunc>::value, "is_class<UnaryFunc>::value");
23866:
23866: }
23866:
23866: template <
23866: class OtherUnaryFunction
23866: , class OtherIterator
23866: , class OtherReference
23866: , class OtherValue>
23866: transform_iterator(
23866: transform_iterator<OtherUnaryFunction, OtherIterator, OtherReference, OtherValue> const& t
23866: , typename enable_if_convertible<OtherIterator, Iterator>::type* = 0
23866:
23866: , typename enable_if_convertible<OtherUnaryFunction, UnaryFunc>::type* = 0
23866:
23866: )
23866: : super_t(t.base()), m_f(t.functor())
23866: {}
23866:
23866: UnaryFunc functor() const
23866: { return m_f; }
23866:
23866: private:
23866: typename super_t::reference dereference() const
23866: { return m_f(*this->base()); }
23866:
23866:
23866:
23866: UnaryFunc m_f;
23866: };
23866:
23866: template <class UnaryFunc, class Iterator>
23866: inline transform_iterator<UnaryFunc, Iterator>
23866: make_transform_iterator(Iterator it, UnaryFunc fun)
23866: {
23866: return transform_iterator<UnaryFunc, Iterator>(it, fun);
23866: }
23866: # 147 "/usr/include/boost/iterator/transform_iterator.hpp" 3 4
23866: template <class UnaryFunc, class Iterator>
23866: inline typename iterators::enable_if<
23866: is_class<UnaryFunc>
23866: , transform_iterator<UnaryFunc, Iterator>
23866: >::type
23866: make_transform_iterator(Iterator it)
23866: {
23866: return transform_iterator<UnaryFunc, Iterator>(it, UnaryFunc());
23866: }
23866: # 166 "/usr/include/boost/iterator/transform_iterator.hpp" 3 4
23866: }
23866:
23866: using iterators::transform_iterator;
23866: using iterators::make_transform_iterator;
23866:
23866: }
23866:
23866: # 1 "/usr/include/boost/iterator/detail/config_undef.hpp" 1 3 4
23866: # 14 "/usr/include/boost/iterator/detail/config_undef.hpp" 3 4
23866: #undef BOOST_NO_IS_CONVERTIBLE
23866: #undef BOOST_NO_IS_CONVERTIBLE_TEMPLATE
23866: #undef BOOST_NO_STRICT_ITERATOR_INTEROPERABILITY
23866: #undef BOOST_NO_LVALUE_RETURN_DETECTION
23866: #undef BOOST_NO_ONE_WAY_ITERATOR_INTEROP
23866:
23866:
23866: #undef BOOST_ITERATOR_CONFIG_DEF
23866: # 174 "/usr/include/boost/iterator/transform_iterator.hpp" 2 3 4
23866: # 18 "/usr/include/boost/algorithm/string/case_conv.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/algorithm/string/detail/case_conv.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/detail/case_conv.hpp" 3 4
23866: #define BOOST_STRING_CASE_CONV_DETAIL_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace algorithm {
23866: namespace detail {
23866: # 32 "/usr/include/boost/algorithm/string/detail/case_conv.hpp" 3 4
23866: template<typename CharT>
23866: struct to_lowerF
23866: {
23866: typedef CharT argument_type;
23866: typedef CharT result_type;
23866:
23866: to_lowerF( const std::locale& Loc ) : m_Loc( &Loc ) {}
23866:
23866:
23866: CharT operator ()( CharT Ch ) const
23866: {
23866:
23866:
23866:
23866: return std::tolower<CharT>( Ch, *m_Loc );
23866:
23866: }
23866: private:
23866: const std::locale* m_Loc;
23866: };
23866:
23866:
23866: template<typename CharT>
23866: struct to_upperF
23866: {
23866: typedef CharT argument_type;
23866: typedef CharT result_type;
23866:
23866: to_upperF( const std::locale& Loc ) : m_Loc( &Loc ) {}
23866:
23866:
23866: CharT operator ()( CharT Ch ) const
23866: {
23866:
23866:
23866:
23866: return std::toupper<CharT>( Ch, *m_Loc );
23866:
23866: }
23866: private:
23866: const std::locale* m_Loc;
23866: };
23866: # 82 "/usr/include/boost/algorithm/string/detail/case_conv.hpp" 3 4
23866: template<typename OutputIteratorT, typename RangeT, typename FunctorT>
23866: OutputIteratorT transform_range_copy(
23866: OutputIteratorT Output,
23866: const RangeT& Input,
23866: FunctorT Functor)
23866: {
23866: return std::transform(
23866: ::boost::begin(Input),
23866: ::boost::end(Input),
23866: Output,
23866: Functor);
23866: }
23866:
23866:
23866: template<typename RangeT, typename FunctorT>
23866: void transform_range(
23866: const RangeT& Input,
23866: FunctorT Functor)
23866: {
23866: std::transform(
23866: ::boost::begin(Input),
23866: ::boost::end(Input),
23866: ::boost::begin(Input),
23866: Functor);
23866: }
23866:
23866: template<typename SequenceT, typename RangeT, typename FunctorT>
23866: inline SequenceT transform_range_copy(
23866: const RangeT& Input,
23866: FunctorT Functor)
23866: {
23866: return SequenceT(
23866: ::boost::make_transform_iterator(
23866: ::boost::begin(Input),
23866: Functor),
23866: ::boost::make_transform_iterator(
23866: ::boost::end(Input),
23866: Functor));
23866: }
23866:
23866: }
23866: }
23866: }
23866: # 25 "/usr/include/boost/algorithm/string/case_conv.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace algorithm {
23866: # 53 "/usr/include/boost/algorithm/string/case_conv.hpp" 3 4
23866: template<typename OutputIteratorT, typename RangeT>
23866: inline OutputIteratorT
23866: to_lower_copy(
23866: OutputIteratorT Output,
23866: const RangeT& Input,
23866: const std::locale& Loc=std::locale())
23866: {
23866: return ::boost::algorithm::detail::transform_range_copy(
23866: Output,
23866: ::boost::as_literal(Input),
23866: ::boost::algorithm::detail::to_lowerF<
23866: typename range_value<RangeT>::type >(Loc));
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename SequenceT>
23866: inline SequenceT to_lower_copy(
23866: const SequenceT& Input,
23866: const std::locale& Loc=std::locale())
23866: {
23866: return ::boost::algorithm::detail::transform_range_copy<SequenceT>(
23866: Input,
23866: ::boost::algorithm::detail::to_lowerF<
23866: typename range_value<SequenceT>::type >(Loc));
23866: }
23866: # 90 "/usr/include/boost/algorithm/string/case_conv.hpp" 3 4
23866: template<typename WritableRangeT>
23866: inline void to_lower(
23866: WritableRangeT& Input,
23866: const std::locale& Loc=std::locale())
23866: {
23866: ::boost::algorithm::detail::transform_range(
23866: ::boost::as_literal(Input),
23866: ::boost::algorithm::detail::to_lowerF<
23866: typename range_value<WritableRangeT>::type >(Loc));
23866: }
23866: # 118 "/usr/include/boost/algorithm/string/case_conv.hpp" 3 4
23866: template<typename OutputIteratorT, typename RangeT>
23866: inline OutputIteratorT
23866: to_upper_copy(
23866: OutputIteratorT Output,
23866: const RangeT& Input,
23866: const std::locale& Loc=std::locale())
23866: {
23866: return ::boost::algorithm::detail::transform_range_copy(
23866: Output,
23866: ::boost::as_literal(Input),
23866: ::boost::algorithm::detail::to_upperF<
23866: typename range_value<RangeT>::type >(Loc));
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename SequenceT>
23866: inline SequenceT to_upper_copy(
23866: const SequenceT& Input,
23866: const std::locale& Loc=std::locale())
23866: {
23866: return ::boost::algorithm::detail::transform_range_copy<SequenceT>(
23866: Input,
23866: ::boost::algorithm::detail::to_upperF<
23866: typename range_value<SequenceT>::type >(Loc));
23866: }
23866: # 155 "/usr/include/boost/algorithm/string/case_conv.hpp" 3 4
23866: template<typename WritableRangeT>
23866: inline void to_upper(
23866: WritableRangeT& Input,
23866: const std::locale& Loc=std::locale())
23866: {
23866: ::boost::algorithm::detail::transform_range(
23866: ::boost::as_literal(Input),
23866: ::boost::algorithm::detail::to_upperF<
23866: typename range_value<WritableRangeT>::type >(Loc));
23866: }
23866:
23866: }
23866:
23866:
23866: using algorithm::to_lower;
23866: using algorithm::to_lower_copy;
23866: using algorithm::to_upper;
23866: using algorithm::to_upper_copy;
23866:
23866: }
23866: # 21 "/usr/include/boost/algorithm/string.hpp" 2 3 4
23866: # 1 "/usr/include/boost/algorithm/string/predicate.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/predicate.hpp" 3 4
23866: #define BOOST_STRING_PREDICATE_HPP
23866: # 23 "/usr/include/boost/algorithm/string/predicate.hpp" 3 4
23866: # 1 "/usr/include/boost/algorithm/string/compare.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/compare.hpp" 3 4
23866: #define BOOST_STRING_COMPARE_HPP
23866: # 24 "/usr/include/boost/algorithm/string/compare.hpp" 3 4
23866: namespace boost {
23866: namespace algorithm {
23866: # 34 "/usr/include/boost/algorithm/string/compare.hpp" 3 4
23866: struct is_equal
23866: {
23866:
23866:
23866:
23866:
23866: template< typename T1, typename T2 >
23866: bool operator()( const T1& Arg1, const T2& Arg2 ) const
23866: {
23866: return Arg1==Arg2;
23866: }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: struct is_iequal
23866: {
23866:
23866:
23866:
23866:
23866: is_iequal( const std::locale& Loc=std::locale() ) :
23866: m_Loc( Loc ) {}
23866:
23866:
23866:
23866:
23866:
23866: template< typename T1, typename T2 >
23866: bool operator()( const T1& Arg1, const T2& Arg2 ) const
23866: {
23866:
23866:
23866:
23866: return std::toupper<T1>(Arg1,m_Loc)==std::toupper<T2>(Arg2,m_Loc);
23866:
23866: }
23866:
23866: private:
23866: std::locale m_Loc;
23866: };
23866: # 86 "/usr/include/boost/algorithm/string/compare.hpp" 3 4
23866: struct is_less
23866: {
23866:
23866:
23866:
23866:
23866: template< typename T1, typename T2 >
23866: bool operator()( const T1& Arg1, const T2& Arg2 ) const
23866: {
23866: return Arg1<Arg2;
23866: }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: struct is_iless
23866: {
23866:
23866:
23866:
23866:
23866: is_iless( const std::locale& Loc=std::locale() ) :
23866: m_Loc( Loc ) {}
23866:
23866:
23866:
23866:
23866:
23866: template< typename T1, typename T2 >
23866: bool operator()( const T1& Arg1, const T2& Arg2 ) const
23866: {
23866:
23866:
23866:
23866: return std::toupper<T1>(Arg1,m_Loc)<std::toupper<T2>(Arg2,m_Loc);
23866:
23866: }
23866:
23866: private:
23866: std::locale m_Loc;
23866: };
23866: # 139 "/usr/include/boost/algorithm/string/compare.hpp" 3 4
23866: struct is_not_greater
23866: {
23866:
23866:
23866:
23866:
23866: template< typename T1, typename T2 >
23866: bool operator()( const T1& Arg1, const T2& Arg2 ) const
23866: {
23866: return Arg1<=Arg2;
23866: }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: struct is_not_igreater
23866: {
23866:
23866:
23866:
23866:
23866: is_not_igreater( const std::locale& Loc=std::locale() ) :
23866: m_Loc( Loc ) {}
23866:
23866:
23866:
23866:
23866:
23866: template< typename T1, typename T2 >
23866: bool operator()( const T1& Arg1, const T2& Arg2 ) const
23866: {
23866:
23866:
23866:
23866: return std::toupper<T1>(Arg1,m_Loc)<=std::toupper<T2>(Arg2,m_Loc);
23866:
23866: }
23866:
23866: private:
23866: std::locale m_Loc;
23866: };
23866:
23866:
23866: }
23866:
23866:
23866: using algorithm::is_equal;
23866: using algorithm::is_iequal;
23866: using algorithm::is_less;
23866: using algorithm::is_iless;
23866: using algorithm::is_not_greater;
23866: using algorithm::is_not_igreater;
23866:
23866: }
23866: # 24 "/usr/include/boost/algorithm/string/predicate.hpp" 2 3 4
23866: # 1 "/usr/include/boost/algorithm/string/find.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/find.hpp" 3 4
23866: #define BOOST_STRING_FIND_HPP
23866: # 22 "/usr/include/boost/algorithm/string/find.hpp" 3 4
23866: # 1 "/usr/include/boost/algorithm/string/finder.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/finder.hpp" 3 4
23866: #define BOOST_STRING_FINDER_HPP
23866: # 22 "/usr/include/boost/algorithm/string/finder.hpp" 3 4
23866: # 1 "/usr/include/boost/algorithm/string/constants.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/constants.hpp" 3 4
23866: #define BOOST_STRING_CONSTANTS_HPP
23866:
23866: namespace boost {
23866: namespace algorithm {
23866:
23866:
23866:
23866:
23866:
23866: enum token_compress_mode_type
23866: {
23866: token_compress_on,
23866: token_compress_off
23866: };
23866:
23866: }
23866:
23866:
23866: using algorithm::token_compress_on;
23866: using algorithm::token_compress_off;
23866:
23866: }
23866: # 23 "/usr/include/boost/algorithm/string/finder.hpp" 2 3 4
23866: # 1 "/usr/include/boost/algorithm/string/detail/finder.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/detail/finder.hpp" 3 4
23866: #define BOOST_STRING_FINDER_DETAIL_HPP
23866: # 24 "/usr/include/boost/algorithm/string/detail/finder.hpp" 3 4
23866: namespace boost {
23866: namespace algorithm {
23866: namespace detail {
23866: # 36 "/usr/include/boost/algorithm/string/detail/finder.hpp" 3 4
23866: template<typename SearchIteratorT,typename PredicateT>
23866: struct first_finderF
23866: {
23866: typedef SearchIteratorT search_iterator_type;
23866:
23866:
23866: template< typename SearchT >
23866: first_finderF( const SearchT& Search, PredicateT Comp ) :
23866: m_Search(::boost::begin(Search), ::boost::end(Search)), m_Comp(Comp) {}
23866: first_finderF(
23866: search_iterator_type SearchBegin,
23866: search_iterator_type SearchEnd,
23866: PredicateT Comp ) :
23866: m_Search(SearchBegin, SearchEnd), m_Comp(Comp) {}
23866:
23866:
23866: template< typename ForwardIteratorT >
23866: iterator_range<ForwardIteratorT>
23866: operator()(
23866: ForwardIteratorT Begin,
23866: ForwardIteratorT End ) const
23866: {
23866: typedef iterator_range<ForwardIteratorT> result_type;
23866: typedef ForwardIteratorT input_iterator_type;
23866:
23866:
23866: for(input_iterator_type OuterIt=Begin;
23866: OuterIt!=End;
23866: ++OuterIt)
23866: {
23866:
23866: if( boost::empty(m_Search) )
23866: return result_type( End, End );
23866:
23866: input_iterator_type InnerIt=OuterIt;
23866: search_iterator_type SubstrIt=m_Search.begin();
23866: for(;
23866: InnerIt!=End && SubstrIt!=m_Search.end();
23866: ++InnerIt,++SubstrIt)
23866: {
23866: if( !( m_Comp(*InnerIt,*SubstrIt) ) )
23866: break;
23866: }
23866:
23866:
23866: if ( SubstrIt==m_Search.end() )
23866: return result_type( OuterIt, InnerIt );
23866: }
23866:
23866: return result_type( End, End );
23866: }
23866:
23866: private:
23866: iterator_range<search_iterator_type> m_Search;
23866: PredicateT m_Comp;
23866: };
23866: # 100 "/usr/include/boost/algorithm/string/detail/finder.hpp" 3 4
23866: template<typename SearchIteratorT, typename PredicateT>
23866: struct last_finderF
23866: {
23866: typedef SearchIteratorT search_iterator_type;
23866: typedef first_finderF<
23866: search_iterator_type,
23866: PredicateT> first_finder_type;
23866:
23866:
23866: template< typename SearchT >
23866: last_finderF( const SearchT& Search, PredicateT Comp ) :
23866: m_Search(::boost::begin(Search), ::boost::end(Search)), m_Comp(Comp) {}
23866: last_finderF(
23866: search_iterator_type SearchBegin,
23866: search_iterator_type SearchEnd,
23866: PredicateT Comp ) :
23866: m_Search(SearchBegin, SearchEnd), m_Comp(Comp) {}
23866:
23866:
23866: template< typename ForwardIteratorT >
23866: iterator_range<ForwardIteratorT>
23866: operator()(
23866: ForwardIteratorT Begin,
23866: ForwardIteratorT End ) const
23866: {
23866: typedef iterator_range<ForwardIteratorT> result_type;
23866:
23866: if( boost::empty(m_Search) )
23866: return result_type( End, End );
23866:
23866: typedef typename
23866: std::iterator_traits<ForwardIteratorT>::iterator_category category;
23866:
23866: return findit( Begin, End, category() );
23866: }
23866:
23866: private:
23866:
23866: template< typename ForwardIteratorT >
23866: iterator_range<ForwardIteratorT>
23866: findit(
23866: ForwardIteratorT Begin,
23866: ForwardIteratorT End,
23866: std::forward_iterator_tag ) const
23866: {
23866: typedef iterator_range<ForwardIteratorT> result_type;
23866:
23866: first_finder_type first_finder(
23866: m_Search.begin(), m_Search.end(), m_Comp );
23866:
23866: result_type M=first_finder( Begin, End );
23866: result_type Last=M;
23866:
23866: while( M )
23866: {
23866: Last=M;
23866: M=first_finder( ::boost::end(M), End );
23866: }
23866:
23866: return Last;
23866: }
23866:
23866:
23866: template< typename ForwardIteratorT >
23866: iterator_range<ForwardIteratorT>
23866: findit(
23866: ForwardIteratorT Begin,
23866: ForwardIteratorT End,
23866: std::bidirectional_iterator_tag ) const
23866: {
23866: typedef iterator_range<ForwardIteratorT> result_type;
23866: typedef ForwardIteratorT input_iterator_type;
23866:
23866:
23866: for(input_iterator_type OuterIt=End;
23866: OuterIt!=Begin; )
23866: {
23866: input_iterator_type OuterIt2=--OuterIt;
23866:
23866: input_iterator_type InnerIt=OuterIt2;
23866: search_iterator_type SubstrIt=m_Search.begin();
23866: for(;
23866: InnerIt!=End && SubstrIt!=m_Search.end();
23866: ++InnerIt,++SubstrIt)
23866: {
23866: if( !( m_Comp(*InnerIt,*SubstrIt) ) )
23866: break;
23866: }
23866:
23866:
23866: if( SubstrIt==m_Search.end() )
23866: return result_type( OuterIt2, InnerIt );
23866: }
23866:
23866: return result_type( End, End );
23866: }
23866:
23866: private:
23866: iterator_range<search_iterator_type> m_Search;
23866: PredicateT m_Comp;
23866: };
23866: # 209 "/usr/include/boost/algorithm/string/detail/finder.hpp" 3 4
23866: template<typename SearchIteratorT, typename PredicateT>
23866: struct nth_finderF
23866: {
23866: typedef SearchIteratorT search_iterator_type;
23866: typedef first_finderF<
23866: search_iterator_type,
23866: PredicateT> first_finder_type;
23866: typedef last_finderF<
23866: search_iterator_type,
23866: PredicateT> last_finder_type;
23866:
23866:
23866: template< typename SearchT >
23866: nth_finderF(
23866: const SearchT& Search,
23866: int Nth,
23866: PredicateT Comp) :
23866: m_Search(::boost::begin(Search), ::boost::end(Search)),
23866: m_Nth(Nth),
23866: m_Comp(Comp) {}
23866: nth_finderF(
23866: search_iterator_type SearchBegin,
23866: search_iterator_type SearchEnd,
23866: int Nth,
23866: PredicateT Comp) :
23866: m_Search(SearchBegin, SearchEnd),
23866: m_Nth(Nth),
23866: m_Comp(Comp) {}
23866:
23866:
23866: template< typename ForwardIteratorT >
23866: iterator_range<ForwardIteratorT>
23866: operator()(
23866: ForwardIteratorT Begin,
23866: ForwardIteratorT End ) const
23866: {
23866: if(m_Nth>=0)
23866: {
23866: return find_forward(Begin, End, m_Nth);
23866: }
23866: else
23866: {
23866: return find_backward(Begin, End, -m_Nth);
23866: }
23866:
23866: }
23866:
23866: private:
23866:
23866: template< typename ForwardIteratorT >
23866: iterator_range<ForwardIteratorT>
23866: find_forward(
23866: ForwardIteratorT Begin,
23866: ForwardIteratorT End,
23866: unsigned int N) const
23866: {
23866: typedef iterator_range<ForwardIteratorT> result_type;
23866:
23866:
23866: if( boost::empty(m_Search) )
23866: return result_type( End, End );
23866:
23866:
23866: first_finder_type first_finder(
23866: m_Search.begin(), m_Search.end(), m_Comp );
23866:
23866: result_type M( Begin, Begin );
23866:
23866: for( unsigned int n=0; n<=N; ++n )
23866: {
23866:
23866: M=first_finder( ::boost::end(M), End );
23866:
23866: if ( !M )
23866: {
23866:
23866: return M;
23866: }
23866: }
23866:
23866: return M;
23866: }
23866:
23866: template< typename ForwardIteratorT >
23866: iterator_range<ForwardIteratorT>
23866: find_backward(
23866: ForwardIteratorT Begin,
23866: ForwardIteratorT End,
23866: unsigned int N) const
23866: {
23866: typedef iterator_range<ForwardIteratorT> result_type;
23866:
23866:
23866: if( boost::empty(m_Search) )
23866: return result_type( End, End );
23866:
23866:
23866: last_finder_type last_finder(
23866: m_Search.begin(), m_Search.end(), m_Comp );
23866:
23866: result_type M( End, End );
23866:
23866: for( unsigned int n=1; n<=N; ++n )
23866: {
23866:
23866: M=last_finder( Begin, ::boost::begin(M) );
23866:
23866: if ( !M )
23866: {
23866:
23866: return M;
23866: }
23866: }
23866:
23866: return M;
23866: }
23866:
23866:
23866: private:
23866: iterator_range<search_iterator_type> m_Search;
23866: int m_Nth;
23866: PredicateT m_Comp;
23866: };
23866:
23866:
23866:
23866: template<typename ForwardIteratorT>
23866: iterator_range<ForwardIteratorT>
23866: find_head_impl(
23866: ForwardIteratorT Begin,
23866: ForwardIteratorT End,
23866: unsigned int N,
23866: std::forward_iterator_tag )
23866: {
23866: typedef ForwardIteratorT input_iterator_type;
23866: typedef iterator_range<ForwardIteratorT> result_type;
23866:
23866: input_iterator_type It=Begin;
23866: for( unsigned int Index=0; Index<N && It!=End; ++Index,++It )
23866: ;
23866:
23866: return result_type( Begin, It );
23866: }
23866:
23866: template< typename ForwardIteratorT >
23866: iterator_range<ForwardIteratorT>
23866: find_head_impl(
23866: ForwardIteratorT Begin,
23866: ForwardIteratorT End,
23866: unsigned int N,
23866: std::random_access_iterator_tag )
23866: {
23866: typedef iterator_range<ForwardIteratorT> result_type;
23866:
23866: if ( (End<=Begin) || ( static_cast<unsigned int>(End-Begin) < N ) )
23866: return result_type( Begin, End );
23866:
23866: return result_type(Begin,Begin+N);
23866: }
23866:
23866:
23866: template<typename ForwardIteratorT>
23866: iterator_range<ForwardIteratorT>
23866: find_head_impl(
23866: ForwardIteratorT Begin,
23866: ForwardIteratorT End,
23866: unsigned int N )
23866: {
23866: typedef typename
23866: std::iterator_traits<ForwardIteratorT>::iterator_category category;
23866:
23866: return ::boost::algorithm::detail::find_head_impl( Begin, End, N, category() );
23866: }
23866:
23866: template< typename ForwardIteratorT >
23866: iterator_range<ForwardIteratorT>
23866: find_tail_impl(
23866: ForwardIteratorT Begin,
23866: ForwardIteratorT End,
23866: unsigned int N,
23866: std::forward_iterator_tag )
23866: {
23866: typedef ForwardIteratorT input_iterator_type;
23866: typedef iterator_range<ForwardIteratorT> result_type;
23866:
23866: unsigned int Index=0;
23866: input_iterator_type It=Begin;
23866: input_iterator_type It2=Begin;
23866:
23866:
23866: for( Index=0; Index<N && It2!=End; ++Index,++It2 )
23866: ;
23866:
23866:
23866: for(; It2!=End; ++It,++It2 )
23866: ;
23866:
23866: return result_type( It, It2 );
23866: }
23866:
23866: template< typename ForwardIteratorT >
23866: iterator_range<ForwardIteratorT>
23866: find_tail_impl(
23866: ForwardIteratorT Begin,
23866: ForwardIteratorT End,
23866: unsigned int N,
23866: std::bidirectional_iterator_tag )
23866: {
23866: typedef ForwardIteratorT input_iterator_type;
23866: typedef iterator_range<ForwardIteratorT> result_type;
23866:
23866: input_iterator_type It=End;
23866: for( unsigned int Index=0; Index<N && It!=Begin; ++Index,--It )
23866: ;
23866:
23866: return result_type( It, End );
23866: }
23866:
23866: template< typename ForwardIteratorT >
23866: iterator_range<ForwardIteratorT>
23866: find_tail_impl(
23866: ForwardIteratorT Begin,
23866: ForwardIteratorT End,
23866: unsigned int N,
23866: std::random_access_iterator_tag )
23866: {
23866: typedef iterator_range<ForwardIteratorT> result_type;
23866:
23866: if ( (End<=Begin) || ( static_cast<unsigned int>(End-Begin) < N ) )
23866: return result_type( Begin, End );
23866:
23866: return result_type( End-N, End );
23866: }
23866:
23866:
23866: template< typename ForwardIteratorT >
23866: iterator_range<ForwardIteratorT>
23866: find_tail_impl(
23866: ForwardIteratorT Begin,
23866: ForwardIteratorT End,
23866: unsigned int N )
23866: {
23866: typedef typename
23866: std::iterator_traits<ForwardIteratorT>::iterator_category category;
23866:
23866: return ::boost::algorithm::detail::find_tail_impl( Begin, End, N, category() );
23866: }
23866: # 468 "/usr/include/boost/algorithm/string/detail/finder.hpp" 3 4
23866: struct head_finderF
23866: {
23866:
23866: head_finderF( int N ) : m_N(N) {}
23866:
23866:
23866: template< typename ForwardIteratorT >
23866: iterator_range<ForwardIteratorT>
23866: operator()(
23866: ForwardIteratorT Begin,
23866: ForwardIteratorT End ) const
23866: {
23866: if(m_N>=0)
23866: {
23866: return ::boost::algorithm::detail::find_head_impl( Begin, End, m_N );
23866: }
23866: else
23866: {
23866: iterator_range<ForwardIteratorT> Res=
23866: ::boost::algorithm::detail::find_tail_impl( Begin, End, -m_N );
23866:
23866: return ::boost::make_iterator_range(Begin, Res.begin());
23866: }
23866: }
23866:
23866: private:
23866: int m_N;
23866: };
23866: # 506 "/usr/include/boost/algorithm/string/detail/finder.hpp" 3 4
23866: struct tail_finderF
23866: {
23866:
23866: tail_finderF( int N ) : m_N(N) {}
23866:
23866:
23866: template< typename ForwardIteratorT >
23866: iterator_range<ForwardIteratorT>
23866: operator()(
23866: ForwardIteratorT Begin,
23866: ForwardIteratorT End ) const
23866: {
23866: if(m_N>=0)
23866: {
23866: return ::boost::algorithm::detail::find_tail_impl( Begin, End, m_N );
23866: }
23866: else
23866: {
23866: iterator_range<ForwardIteratorT> Res=
23866: ::boost::algorithm::detail::find_head_impl( Begin, End, -m_N );
23866:
23866: return ::boost::make_iterator_range(Res.end(), End);
23866: }
23866: }
23866:
23866: private:
23866: int m_N;
23866: };
23866: # 547 "/usr/include/boost/algorithm/string/detail/finder.hpp" 3 4
23866: template< typename PredicateT >
23866: struct token_finderF
23866: {
23866:
23866: token_finderF(
23866: PredicateT Pred,
23866: token_compress_mode_type eCompress=token_compress_off ) :
23866: m_Pred(Pred), m_eCompress(eCompress) {}
23866:
23866:
23866: template< typename ForwardIteratorT >
23866: iterator_range<ForwardIteratorT>
23866: operator()(
23866: ForwardIteratorT Begin,
23866: ForwardIteratorT End ) const
23866: {
23866: typedef iterator_range<ForwardIteratorT> result_type;
23866:
23866: ForwardIteratorT It=std::find_if( Begin, End, m_Pred );
23866:
23866: if( It==End )
23866: {
23866: return result_type( End, End );
23866: }
23866: else
23866: {
23866: ForwardIteratorT It2=It;
23866:
23866: if( m_eCompress==token_compress_on )
23866: {
23866:
23866: while( It2!=End && m_Pred(*It2) ) ++It2;
23866: }
23866: else
23866: {
23866:
23866: ++It2;
23866: }
23866:
23866: return result_type( It, It2 );
23866: }
23866: }
23866:
23866: private:
23866: PredicateT m_Pred;
23866: token_compress_mode_type m_eCompress;
23866: };
23866: # 602 "/usr/include/boost/algorithm/string/detail/finder.hpp" 3 4
23866: template<typename ForwardIterator1T>
23866: struct range_finderF
23866: {
23866: typedef ForwardIterator1T input_iterator_type;
23866: typedef iterator_range<input_iterator_type> result_type;
23866:
23866:
23866: range_finderF(
23866: input_iterator_type Begin,
23866: input_iterator_type End ) : m_Range(Begin, End) {}
23866:
23866: range_finderF(const iterator_range<input_iterator_type>& Range) :
23866: m_Range(Range) {}
23866:
23866:
23866: template< typename ForwardIterator2T >
23866: iterator_range<ForwardIterator2T>
23866: operator()(
23866: ForwardIterator2T,
23866: ForwardIterator2T ) const
23866: {
23866:
23866:
23866:
23866: return m_Range;
23866:
23866: }
23866:
23866: private:
23866: iterator_range<input_iterator_type> m_Range;
23866: };
23866:
23866:
23866: }
23866: }
23866: }
23866: # 24 "/usr/include/boost/algorithm/string/finder.hpp" 2 3 4
23866: # 34 "/usr/include/boost/algorithm/string/finder.hpp" 3 4
23866: namespace boost {
23866: namespace algorithm {
23866: # 48 "/usr/include/boost/algorithm/string/finder.hpp" 3 4
23866: template<typename RangeT>
23866: inline detail::first_finderF<
23866: typename range_const_iterator<RangeT>::type,
23866: is_equal>
23866: first_finder( const RangeT& Search )
23866: {
23866: return
23866: detail::first_finderF<
23866: typename
23866: range_const_iterator<RangeT>::type,
23866: is_equal>( ::boost::as_literal(Search), is_equal() ) ;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename RangeT,typename PredicateT>
23866: inline detail::first_finderF<
23866: typename range_const_iterator<RangeT>::type,
23866: PredicateT>
23866: first_finder(
23866: const RangeT& Search, PredicateT Comp )
23866: {
23866: return
23866: detail::first_finderF<
23866: typename
23866: range_const_iterator<RangeT>::type,
23866: PredicateT>( ::boost::as_literal(Search), Comp );
23866: }
23866: # 88 "/usr/include/boost/algorithm/string/finder.hpp" 3 4
23866: template<typename RangeT>
23866: inline detail::last_finderF<
23866: typename range_const_iterator<RangeT>::type,
23866: is_equal>
23866: last_finder( const RangeT& Search )
23866: {
23866: return
23866: detail::last_finderF<
23866: typename
23866: range_const_iterator<RangeT>::type,
23866: is_equal>( ::boost::as_literal(Search), is_equal() );
23866: }
23866:
23866:
23866:
23866:
23866: template<typename RangeT, typename PredicateT>
23866: inline detail::last_finderF<
23866: typename range_const_iterator<RangeT>::type,
23866: PredicateT>
23866: last_finder( const RangeT& Search, PredicateT Comp )
23866: {
23866: return
23866: detail::last_finderF<
23866: typename
23866: range_const_iterator<RangeT>::type,
23866: PredicateT>( ::boost::as_literal(Search), Comp ) ;
23866: }
23866: # 127 "/usr/include/boost/algorithm/string/finder.hpp" 3 4
23866: template<typename RangeT>
23866: inline detail::nth_finderF<
23866: typename range_const_iterator<RangeT>::type,
23866: is_equal>
23866: nth_finder(
23866: const RangeT& Search,
23866: int Nth)
23866: {
23866: return
23866: detail::nth_finderF<
23866: typename
23866: range_const_iterator<RangeT>::type,
23866: is_equal>( ::boost::as_literal(Search), Nth, is_equal() ) ;
23866: }
23866:
23866:
23866:
23866:
23866: template<typename RangeT, typename PredicateT>
23866: inline detail::nth_finderF<
23866: typename range_const_iterator<RangeT>::type,
23866: PredicateT>
23866: nth_finder(
23866: const RangeT& Search,
23866: int Nth,
23866: PredicateT Comp )
23866: {
23866: return
23866: detail::nth_finderF<
23866: typename
23866: range_const_iterator<RangeT>::type,
23866: PredicateT>( ::boost::as_literal(Search), Nth, Comp );
23866: }
23866: # 172 "/usr/include/boost/algorithm/string/finder.hpp" 3 4
23866: inline detail::head_finderF
23866: head_finder( int N )
23866: {
23866: return detail::head_finderF(N);
23866: }
23866: # 189 "/usr/include/boost/algorithm/string/finder.hpp" 3 4
23866: inline detail::tail_finderF
23866: tail_finder( int N )
23866: {
23866: return detail::tail_finderF(N);
23866: }
23866: # 213 "/usr/include/boost/algorithm/string/finder.hpp" 3 4
23866: template< typename PredicateT >
23866: inline detail::token_finderF<PredicateT>
23866: token_finder(
23866: PredicateT Pred,
23866: token_compress_mode_type eCompress=token_compress_off )
23866: {
23866: return detail::token_finderF<PredicateT>( Pred, eCompress );
23866: }
23866: # 232 "/usr/include/boost/algorithm/string/finder.hpp" 3 4
23866: template< typename ForwardIteratorT >
23866: inline detail::range_finderF<ForwardIteratorT>
23866: range_finder(
23866: ForwardIteratorT Begin,
23866: ForwardIteratorT End )
23866: {
23866: return detail::range_finderF<ForwardIteratorT>( Begin, End );
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template< typename ForwardIteratorT >
23866: inline detail::range_finderF<ForwardIteratorT>
23866: range_finder( iterator_range<ForwardIteratorT> Range )
23866: {
23866: return detail::range_finderF<ForwardIteratorT>( Range );
23866: }
23866:
23866: }
23866:
23866:
23866: using algorithm::first_finder;
23866: using algorithm::last_finder;
23866: using algorithm::nth_finder;
23866: using algorithm::head_finder;
23866: using algorithm::tail_finder;
23866: using algorithm::token_finder;
23866: using algorithm::range_finder;
23866:
23866: }
23866: # 23 "/usr/include/boost/algorithm/string/find.hpp" 2 3 4
23866: # 32 "/usr/include/boost/algorithm/string/find.hpp" 3 4
23866: namespace boost {
23866: namespace algorithm {
23866: # 49 "/usr/include/boost/algorithm/string/find.hpp" 3 4
23866: template<typename RangeT, typename FinderT>
23866: inline iterator_range<
23866: typename range_iterator<RangeT>::type>
23866: find(
23866: RangeT& Input,
23866: const FinderT& Finder)
23866: {
23866: iterator_range<typename range_iterator<RangeT>::type> lit_input(::boost::as_literal(Input));
23866:
23866: return Finder(::boost::begin(lit_input),::boost::end(lit_input));
23866: }
23866: # 77 "/usr/include/boost/algorithm/string/find.hpp" 3 4
23866: template<typename Range1T, typename Range2T>
23866: inline iterator_range<
23866: typename range_iterator<Range1T>::type>
23866: find_first(
23866: Range1T& Input,
23866: const Range2T& Search)
23866: {
23866: return ::boost::algorithm::find(Input, ::boost::algorithm::first_finder(Search));
23866: }
23866: # 103 "/usr/include/boost/algorithm/string/find.hpp" 3 4
23866: template<typename Range1T, typename Range2T>
23866: inline iterator_range<
23866: typename range_iterator<Range1T>::type>
23866: ifind_first(
23866: Range1T& Input,
23866: const Range2T& Search,
23866: const std::locale& Loc=std::locale())
23866: {
23866: return ::boost::algorithm::find(Input, ::boost::algorithm::first_finder(Search,is_iequal(Loc)));
23866: }
23866: # 130 "/usr/include/boost/algorithm/string/find.hpp" 3 4
23866: template<typename Range1T, typename Range2T>
23866: inline iterator_range<
23866: typename range_iterator<Range1T>::type>
23866: find_last(
23866: Range1T& Input,
23866: const Range2T& Search)
23866: {
23866: return ::boost::algorithm::find(Input, ::boost::algorithm::last_finder(Search));
23866: }
23866: # 156 "/usr/include/boost/algorithm/string/find.hpp" 3 4
23866: template<typename Range1T, typename Range2T>
23866: inline iterator_range<
23866: typename range_iterator<Range1T>::type>
23866: ifind_last(
23866: Range1T& Input,
23866: const Range2T& Search,
23866: const std::locale& Loc=std::locale())
23866: {
23866: return ::boost::algorithm::find(Input, ::boost::algorithm::last_finder(Search, is_iequal(Loc)));
23866: }
23866: # 184 "/usr/include/boost/algorithm/string/find.hpp" 3 4
23866: template<typename Range1T, typename Range2T>
23866: inline iterator_range<
23866: typename range_iterator<Range1T>::type>
23866: find_nth(
23866: Range1T& Input,
23866: const Range2T& Search,
23866: int Nth)
23866: {
23866: return ::boost::algorithm::find(Input, ::boost::algorithm::nth_finder(Search,Nth));
23866: }
23866: # 214 "/usr/include/boost/algorithm/string/find.hpp" 3 4
23866: template<typename Range1T, typename Range2T>
23866: inline iterator_range<
23866: typename range_iterator<Range1T>::type>
23866: ifind_nth(
23866: Range1T& Input,
23866: const Range2T& Search,
23866: int Nth,
23866: const std::locale& Loc=std::locale())
23866: {
23866: return ::boost::algorithm::find(Input, ::boost::algorithm::nth_finder(Search,Nth,is_iequal(Loc)));
23866: }
23866: # 246 "/usr/include/boost/algorithm/string/find.hpp" 3 4
23866: template<typename RangeT>
23866: inline iterator_range<
23866: typename range_iterator<RangeT>::type>
23866: find_head(
23866: RangeT& Input,
23866: int N)
23866: {
23866: return ::boost::algorithm::find(Input, ::boost::algorithm::head_finder(N));
23866: }
23866: # 277 "/usr/include/boost/algorithm/string/find.hpp" 3 4
23866: template<typename RangeT>
23866: inline iterator_range<
23866: typename range_iterator<RangeT>::type>
23866: find_tail(
23866: RangeT& Input,
23866: int N)
23866: {
23866: return ::boost::algorithm::find(Input, ::boost::algorithm::tail_finder(N));
23866: }
23866: # 306 "/usr/include/boost/algorithm/string/find.hpp" 3 4
23866: template<typename RangeT, typename PredicateT>
23866: inline iterator_range<
23866: typename range_iterator<RangeT>::type>
23866: find_token(
23866: RangeT& Input,
23866: PredicateT Pred,
23866: token_compress_mode_type eCompress=token_compress_off)
23866: {
23866: return ::boost::algorithm::find(Input, ::boost::algorithm::token_finder(Pred, eCompress));
23866: }
23866:
23866: }
23866:
23866:
23866: using algorithm::find;
23866: using algorithm::find_first;
23866: using algorithm::ifind_first;
23866: using algorithm::find_last;
23866: using algorithm::ifind_last;
23866: using algorithm::find_nth;
23866: using algorithm::ifind_nth;
23866: using algorithm::find_head;
23866: using algorithm::find_tail;
23866: using algorithm::find_token;
23866:
23866: }
23866: # 25 "/usr/include/boost/algorithm/string/predicate.hpp" 2 3 4
23866: # 1 "/usr/include/boost/algorithm/string/detail/predicate.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/detail/predicate.hpp" 3 4
23866: #define BOOST_STRING_PREDICATE_DETAIL_HPP
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace algorithm {
23866: namespace detail {
23866:
23866:
23866:
23866: template<
23866: typename ForwardIterator1T,
23866: typename ForwardIterator2T,
23866: typename PredicateT>
23866: inline bool ends_with_iter_select(
23866: ForwardIterator1T Begin,
23866: ForwardIterator1T End,
23866: ForwardIterator2T SubBegin,
23866: ForwardIterator2T SubEnd,
23866: PredicateT Comp,
23866: std::bidirectional_iterator_tag)
23866: {
23866: ForwardIterator1T it=End;
23866: ForwardIterator2T pit=SubEnd;
23866: for(;it!=Begin && pit!=SubBegin;)
23866: {
23866: if( !(Comp(*(--it),*(--pit))) )
23866: return false;
23866: }
23866:
23866: return pit==SubBegin;
23866: }
23866:
23866: template<
23866: typename ForwardIterator1T,
23866: typename ForwardIterator2T,
23866: typename PredicateT>
23866: inline bool ends_with_iter_select(
23866: ForwardIterator1T Begin,
23866: ForwardIterator1T End,
23866: ForwardIterator2T SubBegin,
23866: ForwardIterator2T SubEnd,
23866: PredicateT Comp,
23866: std::forward_iterator_tag)
23866: {
23866: if ( SubBegin==SubEnd )
23866: {
23866:
23866: return true;
23866: }
23866:
23866: iterator_range<ForwardIterator1T> Result
23866: =last_finder(
23866: ::boost::make_iterator_range(SubBegin, SubEnd),
23866: Comp)(Begin, End);
23866:
23866: return !Result.empty() && Result.end()==End;
23866: }
23866:
23866: }
23866: }
23866: }
23866: # 26 "/usr/include/boost/algorithm/string/predicate.hpp" 2 3 4
23866: # 38 "/usr/include/boost/algorithm/string/predicate.hpp" 3 4
23866: namespace boost {
23866: namespace algorithm {
23866: # 57 "/usr/include/boost/algorithm/string/predicate.hpp" 3 4
23866: template<typename Range1T, typename Range2T, typename PredicateT>
23866: inline bool starts_with(
23866: const Range1T& Input,
23866: const Range2T& Test,
23866: PredicateT Comp)
23866: {
23866: iterator_range<typename range_const_iterator<Range1T>::type> lit_input(::boost::as_literal(Input));
23866: iterator_range<typename range_const_iterator<Range2T>::type> lit_test(::boost::as_literal(Test));
23866:
23866: typedef typename
23866: range_const_iterator<Range1T>::type Iterator1T;
23866: typedef typename
23866: range_const_iterator<Range2T>::type Iterator2T;
23866:
23866: Iterator1T InputEnd=::boost::end(lit_input);
23866: Iterator2T TestEnd=::boost::end(lit_test);
23866:
23866: Iterator1T it=::boost::begin(lit_input);
23866: Iterator2T pit=::boost::begin(lit_test);
23866: for(;
23866: it!=InputEnd && pit!=TestEnd;
23866: ++it,++pit)
23866: {
23866: if( !(Comp(*it,*pit)) )
23866: return false;
23866: }
23866:
23866: return pit==TestEnd;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename Range1T, typename Range2T>
23866: inline bool starts_with(
23866: const Range1T& Input,
23866: const Range2T& Test)
23866: {
23866: return ::boost::algorithm::starts_with(Input, Test, is_equal());
23866: }
23866: # 112 "/usr/include/boost/algorithm/string/predicate.hpp" 3 4
23866: template<typename Range1T, typename Range2T>
23866: inline bool istarts_with(
23866: const Range1T& Input,
23866: const Range2T& Test,
23866: const std::locale& Loc=std::locale())
23866: {
23866: return ::boost::algorithm::starts_with(Input, Test, is_iequal(Loc));
23866: }
23866: # 139 "/usr/include/boost/algorithm/string/predicate.hpp" 3 4
23866: template<typename Range1T, typename Range2T, typename PredicateT>
23866: inline bool ends_with(
23866: const Range1T& Input,
23866: const Range2T& Test,
23866: PredicateT Comp)
23866: {
23866: iterator_range<typename range_const_iterator<Range1T>::type> lit_input(::boost::as_literal(Input));
23866: iterator_range<typename range_const_iterator<Range2T>::type> lit_test(::boost::as_literal(Test));
23866:
23866: typedef typename
23866: range_const_iterator<Range1T>::type Iterator1T;
23866: typedef typename
23866: std::iterator_traits<Iterator1T>::iterator_category category;
23866:
23866: return detail::
23866: ends_with_iter_select(
23866: ::boost::begin(lit_input),
23866: ::boost::end(lit_input),
23866: ::boost::begin(lit_test),
23866: ::boost::end(lit_test),
23866: Comp,
23866: category());
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename Range1T, typename Range2T>
23866: inline bool ends_with(
23866: const Range1T& Input,
23866: const Range2T& Test)
23866: {
23866: return ::boost::algorithm::ends_with(Input, Test, is_equal());
23866: }
23866: # 189 "/usr/include/boost/algorithm/string/predicate.hpp" 3 4
23866: template<typename Range1T, typename Range2T>
23866: inline bool iends_with(
23866: const Range1T& Input,
23866: const Range2T& Test,
23866: const std::locale& Loc=std::locale())
23866: {
23866: return ::boost::algorithm::ends_with(Input, Test, is_iequal(Loc));
23866: }
23866: # 213 "/usr/include/boost/algorithm/string/predicate.hpp" 3 4
23866: template<typename Range1T, typename Range2T, typename PredicateT>
23866: inline bool contains(
23866: const Range1T& Input,
23866: const Range2T& Test,
23866: PredicateT Comp)
23866: {
23866: iterator_range<typename range_const_iterator<Range1T>::type> lit_input(::boost::as_literal(Input));
23866: iterator_range<typename range_const_iterator<Range2T>::type> lit_test(::boost::as_literal(Test));
23866:
23866: if (::boost::empty(lit_test))
23866: {
23866:
23866: return true;
23866: }
23866:
23866:
23866: bool bResult=(::boost::algorithm::first_finder(lit_test,Comp)(::boost::begin(lit_input), ::boost::end(lit_input)));
23866: return bResult;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename Range1T, typename Range2T>
23866: inline bool contains(
23866: const Range1T& Input,
23866: const Range2T& Test)
23866: {
23866: return ::boost::algorithm::contains(Input, Test, is_equal());
23866: }
23866: # 257 "/usr/include/boost/algorithm/string/predicate.hpp" 3 4
23866: template<typename Range1T, typename Range2T>
23866: inline bool icontains(
23866: const Range1T& Input,
23866: const Range2T& Test,
23866: const std::locale& Loc=std::locale())
23866: {
23866: return ::boost::algorithm::contains(Input, Test, is_iequal(Loc));
23866: }
23866: # 284 "/usr/include/boost/algorithm/string/predicate.hpp" 3 4
23866: template<typename Range1T, typename Range2T, typename PredicateT>
23866: inline bool equals(
23866: const Range1T& Input,
23866: const Range2T& Test,
23866: PredicateT Comp)
23866: {
23866: iterator_range<typename range_const_iterator<Range1T>::type> lit_input(::boost::as_literal(Input));
23866: iterator_range<typename range_const_iterator<Range2T>::type> lit_test(::boost::as_literal(Test));
23866:
23866: typedef typename
23866: range_const_iterator<Range1T>::type Iterator1T;
23866: typedef typename
23866: range_const_iterator<Range2T>::type Iterator2T;
23866:
23866: Iterator1T InputEnd=::boost::end(lit_input);
23866: Iterator2T TestEnd=::boost::end(lit_test);
23866:
23866: Iterator1T it=::boost::begin(lit_input);
23866: Iterator2T pit=::boost::begin(lit_test);
23866: for(;
23866: it!=InputEnd && pit!=TestEnd;
23866: ++it,++pit)
23866: {
23866: if( !(Comp(*it,*pit)) )
23866: return false;
23866: }
23866:
23866: return (pit==TestEnd) && (it==InputEnd);
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename Range1T, typename Range2T>
23866: inline bool equals(
23866: const Range1T& Input,
23866: const Range2T& Test)
23866: {
23866: return ::boost::algorithm::equals(Input, Test, is_equal());
23866: }
23866: # 341 "/usr/include/boost/algorithm/string/predicate.hpp" 3 4
23866: template<typename Range1T, typename Range2T>
23866: inline bool iequals(
23866: const Range1T& Input,
23866: const Range2T& Test,
23866: const std::locale& Loc=std::locale())
23866: {
23866: return ::boost::algorithm::equals(Input, Test, is_iequal(Loc));
23866: }
23866: # 370 "/usr/include/boost/algorithm/string/predicate.hpp" 3 4
23866: template<typename Range1T, typename Range2T, typename PredicateT>
23866: inline bool lexicographical_compare(
23866: const Range1T& Arg1,
23866: const Range2T& Arg2,
23866: PredicateT Pred)
23866: {
23866: iterator_range<typename range_const_iterator<Range1T>::type> lit_arg1(::boost::as_literal(Arg1));
23866: iterator_range<typename range_const_iterator<Range2T>::type> lit_arg2(::boost::as_literal(Arg2));
23866:
23866: return std::lexicographical_compare(
23866: ::boost::begin(lit_arg1),
23866: ::boost::end(lit_arg1),
23866: ::boost::begin(lit_arg2),
23866: ::boost::end(lit_arg2),
23866: Pred);
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename Range1T, typename Range2T>
23866: inline bool lexicographical_compare(
23866: const Range1T& Arg1,
23866: const Range2T& Arg2)
23866: {
23866: return ::boost::algorithm::lexicographical_compare(Arg1, Arg2, is_less());
23866: }
23866: # 415 "/usr/include/boost/algorithm/string/predicate.hpp" 3 4
23866: template<typename Range1T, typename Range2T>
23866: inline bool ilexicographical_compare(
23866: const Range1T& Arg1,
23866: const Range2T& Arg2,
23866: const std::locale& Loc=std::locale())
23866: {
23866: return ::boost::algorithm::lexicographical_compare(Arg1, Arg2, is_iless(Loc));
23866: }
23866: # 438 "/usr/include/boost/algorithm/string/predicate.hpp" 3 4
23866: template<typename RangeT, typename PredicateT>
23866: inline bool all(
23866: const RangeT& Input,
23866: PredicateT Pred)
23866: {
23866: iterator_range<typename range_const_iterator<RangeT>::type> lit_input(::boost::as_literal(Input));
23866:
23866: typedef typename
23866: range_const_iterator<RangeT>::type Iterator1T;
23866:
23866: Iterator1T InputEnd=::boost::end(lit_input);
23866: for( Iterator1T It=::boost::begin(lit_input); It!=InputEnd; ++It)
23866: {
23866: if (!Pred(*It))
23866: return false;
23866: }
23866:
23866: return true;
23866: }
23866:
23866: }
23866:
23866:
23866: using algorithm::starts_with;
23866: using algorithm::istarts_with;
23866: using algorithm::ends_with;
23866: using algorithm::iends_with;
23866: using algorithm::contains;
23866: using algorithm::icontains;
23866: using algorithm::equals;
23866: using algorithm::iequals;
23866: using algorithm::all;
23866: using algorithm::lexicographical_compare;
23866: using algorithm::ilexicographical_compare;
23866:
23866: }
23866: # 22 "/usr/include/boost/algorithm/string.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/algorithm/string/split.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/split.hpp" 3 4
23866: #define BOOST_STRING_SPLIT_HPP
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/algorithm/string/iter_find.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/iter_find.hpp" 3 4
23866: #define BOOST_STRING_ITER_FIND_HPP
23866: # 26 "/usr/include/boost/algorithm/string/iter_find.hpp" 3 4
23866: # 1 "/usr/include/boost/algorithm/string/concept.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/concept.hpp" 3 4
23866: #define BOOST_STRING_CONCEPT_HPP
23866: # 23 "/usr/include/boost/algorithm/string/concept.hpp" 3 4
23866: namespace boost {
23866: namespace algorithm {
23866: # 34 "/usr/include/boost/algorithm/string/concept.hpp" 3 4
23866: template<typename FinderT, typename IteratorT>
23866: struct FinderConcept
23866: {
23866: private:
23866: typedef iterator_range<IteratorT> range;
23866: public:
23866: void constraints()
23866: {
23866:
23866: r=(*pF)(i,i);
23866: }
23866: private:
23866: range r;
23866: IteratorT i;
23866: FinderT* pF;
23866: };
23866: # 61 "/usr/include/boost/algorithm/string/concept.hpp" 3 4
23866: template<typename FormatterT, typename FinderT, typename IteratorT>
23866: struct FormatterConcept
23866: {
23866: public:
23866: void constraints()
23866: {
23866:
23866: ::boost::begin((*pFo)( (*pF)(i,i) ));
23866: ::boost::end((*pFo)( (*pF)(i,i) ));
23866: }
23866: private:
23866: IteratorT i;
23866: FinderT* pF;
23866: FormatterT *pFo;
23866: };
23866:
23866: }
23866: }
23866: # 27 "/usr/include/boost/algorithm/string/iter_find.hpp" 2 3 4
23866: # 1 "/usr/include/boost/algorithm/string/find_iterator.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/find_iterator.hpp" 3 4
23866: #define BOOST_STRING_FIND_ITERATOR_HPP
23866: # 24 "/usr/include/boost/algorithm/string/find_iterator.hpp" 3 4
23866: # 1 "/usr/include/boost/algorithm/string/detail/find_iterator.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/detail/find_iterator.hpp" 3 4
23866: #define BOOST_STRING_FIND_ITERATOR_DETAIL_HPP
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/function.hpp" 1 3 4
23866: # 14 "/usr/include/boost/function.hpp" 3 4
23866: #define BOOST_FUNCTION_MAX_ARGS 10
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_MAX_ARGS_DEFINED 0
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/iterate.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/iterate.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_ITERATE_HPP
23866: # 26 "/usr/include/boost/function.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/function/detail/prologue.hpp" 1 3 4
23866: # 11 "/usr/include/boost/function/detail/prologue.hpp" 3 4
23866: #define BOOST_FUNCTION_PROLOGUE_HPP
23866: # 1 "/usr/include/c++/10/cassert" 1 3 4
23866: # 41 "/usr/include/c++/10/cassert" 3 4
23866:
23866: # 42 "/usr/include/c++/10/cassert" 3
23866:
23866:
23866: # 1 "/usr/include/assert.h" 1 3 4
23866: # 24 "/usr/include/assert.h" 3 4
23866: #undef _ASSERT_H
23866: #undef assert
23866: #undef __ASSERT_VOID_CAST
23866:
23866:
23866: #undef assert_perror
23866:
23866:
23866:
23866:
23866: #define _ASSERT_H 1
23866:
23866:
23866:
23866: #define __ASSERT_VOID_CAST static_cast<void>
23866: # 92 "/usr/include/assert.h" 3 4
23866: #define assert(expr) (static_cast <bool> (expr) ? void (0) : __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 117 "/usr/include/assert.h" 3 4
23866: #define assert_perror(errnum) (!(errnum) ? __ASSERT_VOID_CAST (0) : __assert_perror_fail ((errnum), __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 129 "/usr/include/assert.h" 3 4
23866: #define __ASSERT_FUNCTION __extension__ __PRETTY_FUNCTION__
23866: # 45 "/usr/include/c++/10/cassert" 2 3
23866: # 13 "/usr/include/boost/function/detail/prologue.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/config/no_tr1/functional.hpp" 1 3 4
23866: # 14 "/usr/include/boost/config/no_tr1/functional.hpp" 3 4
23866: #define BOOST_CONFIG_FUNCTIONAL
23866:
23866:
23866: #define BOOST_TR1_NO_RECURSION
23866: #define BOOST_CONFIG_NO_FUNCTIONAL_RECURSION
23866:
23866:
23866:
23866:
23866:
23866: #undef BOOST_TR1_NO_RECURSION
23866: #undef BOOST_CONFIG_NO_FUNCTIONAL_RECURSION
23866: # 15 "/usr/include/boost/function/detail/prologue.hpp" 2 3 4
23866: # 1 "/usr/include/boost/throw_exception.hpp" 1 3 4
23866:
23866: #define BOOST_THROW_EXCEPTION_HPP_INCLUDED
23866: # 23 "/usr/include/boost/throw_exception.hpp" 3 4
23866: # 1 "/usr/include/boost/assert/source_location.hpp" 1 3 4
23866:
23866: #define BOOST_ASSERT_SOURCE_LOCATION_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/current_function.hpp" 1 3 4
23866:
23866: #define BOOST_CURRENT_FUNCTION_HPP_INCLUDED
23866: # 22 "/usr/include/boost/current_function.hpp" 3 4
23866: namespace boost
23866: {
23866:
23866: namespace detail
23866: {
23866:
23866: inline void current_function_helper()
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_CURRENT_FUNCTION __PRETTY_FUNCTION__
23866: # 69 "/usr/include/boost/current_function.hpp" 3 4
23866: }
23866:
23866: }
23866:
23866: }
23866: # 11 "/usr/include/boost/assert/source_location.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/cstdint.hpp" 1 3 4
23866: # 13 "/usr/include/boost/assert/source_location.hpp" 2 3 4
23866:
23866:
23866: namespace boost
23866: {
23866:
23866: struct source_location
23866: {
23866: private:
23866:
23866: char const * file_;
23866: char const * function_;
23866: boost::uint_least32_t line_;
23866: boost::uint_least32_t column_;
23866:
23866: public:
23866:
23866: constexpr source_location() noexcept: file_( "(unknown)" ), function_( "(unknown)" ), line_( 0 ), column_( 0 )
23866: {
23866: }
23866:
23866: constexpr source_location( char const * file, boost::uint_least32_t ln, char const * function, boost::uint_least32_t col = 0 ) noexcept: file_( file ), function_( function ), line_( ln ), column_( col )
23866: {
23866: }
23866:
23866: constexpr char const * file_name() const noexcept
23866: {
23866: return file_;
23866: }
23866:
23866: constexpr char const * function_name() const noexcept
23866: {
23866: return function_;
23866: }
23866:
23866: constexpr boost::uint_least32_t line() const noexcept
23866: {
23866: return line_;
23866: }
23866:
23866: constexpr boost::uint_least32_t column() const noexcept
23866: {
23866: return column_;
23866: }
23866: };
23866:
23866: template<class E, class T> std::basic_ostream<E, T> & operator<<( std::basic_ostream<E, T> & os, source_location const & loc )
23866: {
23866: os.width( 0 );
23866:
23866: if( loc.line() == 0 )
23866: {
23866: os << "(unknown source location)";
23866: }
23866: else
23866: {
23866: os << loc.file_name() << ':' << loc.line();
23866:
23866: if( loc.column() )
23866: {
23866: os << ':' << loc.column();
23866: }
23866:
23866: os << ": in function '" << loc.function_name() << '\'';
23866: }
23866:
23866: return os;
23866: }
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_CURRENT_LOCATION ::boost::source_location(__FILE__, __LINE__, BOOST_CURRENT_FUNCTION)
23866: # 24 "/usr/include/boost/throw_exception.hpp" 2 3 4
23866: # 32 "/usr/include/boost/throw_exception.hpp" 3 4
23866: namespace boost
23866: {
23866:
23866:
23866:
23866:
23866: inline void throw_exception_assert_compatibility( std::exception const & ) {}
23866:
23866: }
23866: # 73 "/usr/include/boost/throw_exception.hpp" 3 4
23866: # 1 "/usr/include/boost/exception/exception.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_EXCEPTION_274DA366004E11DCB1DDFE2E56D89593
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost { template <class T> class shared_ptr; }
23866: namespace boost { namespace exception_detail { using boost::shared_ptr; } }
23866:
23866:
23866:
23866:
23866:
23866: # 22 "/usr/include/boost/exception/exception.hpp" 3
23866: # 32 "/usr/include/boost/exception/exception.hpp" 3
23866: namespace
23866: boost
23866: {
23866: namespace
23866: exception_detail
23866: {
23866: template <class T>
23866: class
23866: refcount_ptr
23866: {
23866: public:
23866:
23866: refcount_ptr():
23866: px_(0)
23866: {
23866: }
23866:
23866: ~refcount_ptr()
23866: {
23866: release();
23866: }
23866:
23866: refcount_ptr( refcount_ptr const & x ):
23866: px_(x.px_)
23866: {
23866: add_ref();
23866: }
23866:
23866: refcount_ptr &
23866: operator=( refcount_ptr const & x )
23866: {
23866: adopt(x.px_);
23866: return *this;
23866: }
23866:
23866: void
23866: adopt( T * px )
23866: {
23866: release();
23866: px_=px;
23866: add_ref();
23866: }
23866:
23866: T *
23866: get() const
23866: {
23866: return px_;
23866: }
23866:
23866: private:
23866:
23866: T * px_;
23866:
23866: void
23866: add_ref()
23866: {
23866: if( px_ )
23866: px_->add_ref();
23866: }
23866:
23866: void
23866: release()
23866: {
23866: if( px_ && px_->release() )
23866: px_=0;
23866: }
23866: };
23866: }
23866:
23866:
23866:
23866: template <class Tag,class T>
23866: class error_info;
23866:
23866: typedef error_info<struct throw_function_,char const *> throw_function;
23866: typedef error_info<struct throw_file_,char const *> throw_file;
23866: typedef error_info<struct throw_line_,int> throw_line;
23866:
23866: template <>
23866: class
23866: error_info<throw_function_,char const *>
23866: {
23866: public:
23866: typedef char const * value_type;
23866: value_type v_;
23866: explicit
23866: error_info( value_type v ):
23866: v_(v)
23866: {
23866: }
23866: };
23866:
23866: template <>
23866: class
23866: error_info<throw_file_,char const *>
23866: {
23866: public:
23866: typedef char const * value_type;
23866: value_type v_;
23866: explicit
23866: error_info( value_type v ):
23866: v_(v)
23866: {
23866: }
23866: };
23866:
23866: template <>
23866: class
23866: error_info<throw_line_,int>
23866: {
23866: public:
23866: typedef int value_type;
23866: value_type v_;
23866: explicit
23866: error_info( value_type v ):
23866: v_(v)
23866: {
23866: }
23866: };
23866:
23866: class
23866: __attribute__((__visibility__("default")))
23866: exception;
23866:
23866: namespace
23866: exception_detail
23866: {
23866: class error_info_base;
23866: struct type_info_;
23866:
23866: struct
23866: error_info_container
23866: {
23866: virtual char const * diagnostic_information( char const * ) const = 0;
23866: virtual shared_ptr<error_info_base> get( type_info_ const & ) const = 0;
23866: virtual void set( shared_ptr<error_info_base> const &, type_info_ const & ) = 0;
23866: virtual void add_ref() const = 0;
23866: virtual bool release() const = 0;
23866: virtual refcount_ptr<exception_detail::error_info_container> clone() const = 0;
23866:
23866: protected:
23866:
23866: ~error_info_container() noexcept
23866: {
23866: }
23866: };
23866:
23866: template <class>
23866: struct get_info;
23866:
23866: template <>
23866: struct get_info<throw_function>;
23866:
23866: template <>
23866: struct get_info<throw_file>;
23866:
23866: template <>
23866: struct get_info<throw_line>;
23866:
23866: template <class>
23866: struct set_info_rv;
23866:
23866: template <>
23866: struct set_info_rv<throw_function>;
23866:
23866: template <>
23866: struct set_info_rv<throw_file>;
23866:
23866: template <>
23866: struct set_info_rv<throw_line>;
23866:
23866: char const * get_diagnostic_information( exception const &, char const * );
23866:
23866: void copy_boost_exception( exception *, exception const * );
23866:
23866: template <class E,class Tag,class T>
23866: E const & set_info( E const &, error_info<Tag,T> const & );
23866:
23866: template <class E>
23866: E const & set_info( E const &, throw_function const & );
23866:
23866: template <class E>
23866: E const & set_info( E const &, throw_file const & );
23866:
23866: template <class E>
23866: E const & set_info( E const &, throw_line const & );
23866: }
23866:
23866: class
23866: __attribute__((__visibility__("default")))
23866: exception
23866: {
23866:
23866: public:
23866: template <class Tag> void set( typename Tag::type const & );
23866: template <class Tag> typename Tag::type const * get() const;
23866:
23866:
23866: protected:
23866:
23866: exception():
23866: throw_function_(0),
23866: throw_file_(0),
23866: throw_line_(-1)
23866: {
23866: }
23866: # 251 "/usr/include/boost/exception/exception.hpp" 3
23866: virtual ~exception() noexcept
23866:
23866: = 0
23866:
23866: ;
23866:
23866:
23866:
23866:
23866: private:
23866:
23866: template <class E>
23866: friend E const & exception_detail::set_info( E const &, throw_function const & );
23866:
23866: template <class E>
23866: friend E const & exception_detail::set_info( E const &, throw_file const & );
23866:
23866: template <class E>
23866: friend E const & exception_detail::set_info( E const &, throw_line const & );
23866:
23866: template <class E,class Tag,class T>
23866: friend E const & exception_detail::set_info( E const &, error_info<Tag,T> const & );
23866:
23866: friend char const * exception_detail::get_diagnostic_information( exception const &, char const * );
23866:
23866: template <class>
23866: friend struct exception_detail::get_info;
23866: friend struct exception_detail::get_info<throw_function>;
23866: friend struct exception_detail::get_info<throw_file>;
23866: friend struct exception_detail::get_info<throw_line>;
23866: template <class>
23866: friend struct exception_detail::set_info_rv;
23866: friend struct exception_detail::set_info_rv<throw_function>;
23866: friend struct exception_detail::set_info_rv<throw_file>;
23866: friend struct exception_detail::set_info_rv<throw_line>;
23866: friend void exception_detail::copy_boost_exception( exception *, exception const * );
23866:
23866: mutable exception_detail::refcount_ptr<exception_detail::error_info_container> data_;
23866: mutable char const * throw_function_;
23866: mutable char const * throw_file_;
23866: mutable int throw_line_;
23866: };
23866:
23866: inline
23866: exception::
23866: ~exception() noexcept
23866: {
23866: }
23866:
23866: namespace
23866: exception_detail
23866: {
23866: template <class E>
23866: E const &
23866: set_info( E const & x, throw_function const & y )
23866: {
23866: x.throw_function_=y.v_;
23866: return x;
23866: }
23866:
23866: template <class E>
23866: E const &
23866: set_info( E const & x, throw_file const & y )
23866: {
23866: x.throw_file_=y.v_;
23866: return x;
23866: }
23866:
23866: template <class E>
23866: E const &
23866: set_info( E const & x, throw_line const & y )
23866: {
23866: x.throw_line_=y.v_;
23866: return x;
23866: }
23866: }
23866:
23866:
23866:
23866: namespace
23866: exception_detail
23866: {
23866: template <class T>
23866: struct
23866: __attribute__((__visibility__("default")))
23866: error_info_injector:
23866: public T,
23866: public exception
23866: {
23866: explicit
23866: error_info_injector( T const & x ):
23866: T(x)
23866: {
23866: }
23866:
23866: ~error_info_injector() noexcept
23866: {
23866: }
23866: };
23866:
23866: struct large_size { char c[256]; };
23866: large_size dispatch_boost_exception( exception const * );
23866:
23866: struct small_size { };
23866: small_size dispatch_boost_exception( void const * );
23866:
23866: template <class,int>
23866: struct enable_error_info_helper;
23866:
23866: template <class T>
23866: struct
23866: enable_error_info_helper<T,sizeof(large_size)>
23866: {
23866: typedef T type;
23866: };
23866:
23866: template <class T>
23866: struct
23866: enable_error_info_helper<T,sizeof(small_size)>
23866: {
23866: typedef error_info_injector<T> type;
23866: };
23866:
23866: template <class T>
23866: struct
23866: enable_error_info_return_type
23866: {
23866: typedef typename enable_error_info_helper<T,sizeof(exception_detail::dispatch_boost_exception(static_cast<T *>(0)))>::type type;
23866: };
23866: }
23866:
23866: template <class T>
23866: inline
23866: typename
23866: exception_detail::enable_error_info_return_type<T>::type
23866: enable_error_info( T const & x )
23866: {
23866: typedef typename exception_detail::enable_error_info_return_type<T>::type rt;
23866: return rt(x);
23866: }
23866:
23866:
23866:
23866: namespace
23866: exception_detail
23866: {
23866: class
23866: __attribute__((__visibility__("default")))
23866: clone_base
23866: {
23866: public:
23866:
23866: virtual clone_base const * clone() const = 0;
23866: virtual void rethrow() const = 0;
23866:
23866: virtual
23866: ~clone_base() noexcept
23866: {
23866: }
23866: };
23866:
23866: inline
23866: void
23866: copy_boost_exception( exception * a, exception const * b )
23866: {
23866: refcount_ptr<error_info_container> data;
23866: if( error_info_container * d=b->data_.get() )
23866: data = d->clone();
23866: a->throw_file_ = b->throw_file_;
23866: a->throw_line_ = b->throw_line_;
23866: a->throw_function_ = b->throw_function_;
23866: a->data_ = data;
23866: }
23866:
23866: inline
23866: void
23866: copy_boost_exception( void *, void const * )
23866: {
23866: }
23866:
23866: template <class T>
23866: class
23866: __attribute__((__visibility__("default")))
23866: clone_impl:
23866: public T,
23866: public virtual clone_base
23866: {
23866: struct clone_tag { };
23866: clone_impl( clone_impl const & x, clone_tag ):
23866: T(x)
23866: {
23866: copy_boost_exception(this,&x);
23866: }
23866:
23866: public:
23866:
23866: explicit
23866: clone_impl( T const & x ):
23866: T(x)
23866: {
23866: copy_boost_exception(this,&x);
23866: }
23866:
23866: ~clone_impl() noexcept
23866: {
23866: }
23866:
23866: private:
23866:
23866: clone_base const *
23866: clone() const
23866: {
23866: return new clone_impl(*this,clone_tag());
23866: }
23866:
23866: void
23866: rethrow() const
23866: {
23866: throw*this;
23866: }
23866: };
23866: }
23866:
23866: template <class T>
23866: inline
23866: exception_detail::clone_impl<T>
23866: enable_current_exception( T const & x )
23866: {
23866: return exception_detail::clone_impl<T>(x);
23866: }
23866: }
23866: # 74 "/usr/include/boost/throw_exception.hpp" 2 3 4
23866:
23866: namespace boost
23866: {
23866:
23866:
23866:
23866: namespace detail
23866: {
23866:
23866: typedef char (&wrapexcept_s1)[ 1 ];
23866: typedef char (&wrapexcept_s2)[ 2 ];
23866:
23866: template<class T> wrapexcept_s1 wrapexcept_is_convertible( T* );
23866: template<class T> wrapexcept_s2 wrapexcept_is_convertible( void* );
23866:
23866: template<class E, class B, int I = sizeof( wrapexcept_is_convertible<B>( static_cast< E* >( 0 ) ) ) > struct wrapexcept_add_base;
23866:
23866: template<class E, class B> struct wrapexcept_add_base<E, B, 1>
23866: {
23866: struct type {};
23866: };
23866:
23866: template<class E, class B> struct wrapexcept_add_base<E, B, 2>
23866: {
23866: typedef B type;
23866: };
23866:
23866: }
23866:
23866: template<class E> struct __attribute__((__visibility__("default"))) wrapexcept:
23866: public detail::wrapexcept_add_base<E, boost::exception_detail::clone_base>::type,
23866: public E,
23866: public detail::wrapexcept_add_base<E, boost::exception>::type
23866: {
23866: private:
23866:
23866: struct deleter
23866: {
23866: wrapexcept * p_;
23866: ~deleter() { delete p_; }
23866: };
23866:
23866: private:
23866:
23866: void copy_from( void const* )
23866: {
23866: }
23866:
23866: void copy_from( boost::exception const* p )
23866: {
23866: static_cast<boost::exception&>( *this ) = *p;
23866: }
23866:
23866: public:
23866:
23866: explicit wrapexcept( E const & e ): E( e )
23866: {
23866: copy_from( &e );
23866: }
23866:
23866: explicit wrapexcept( E const & e, boost::source_location const & loc ): E( e )
23866: {
23866: copy_from( &e );
23866:
23866: set_info( *this, throw_file( loc.file_name() ) );
23866: set_info( *this, throw_line( loc.line() ) );
23866: set_info( *this, throw_function( loc.function_name() ) );
23866: }
23866:
23866: virtual boost::exception_detail::clone_base const * clone() const override
23866: {
23866: wrapexcept * p = new wrapexcept( *this );
23866: deleter del = { p };
23866:
23866: boost::exception_detail::copy_boost_exception( p, this );
23866:
23866: del.p_ = 0;
23866: return p;
23866: }
23866:
23866: virtual void rethrow() const override
23866: {
23866: throw *this;
23866: }
23866: };
23866:
23866:
23866:
23866: template<class E> __attribute__ ((__noreturn__)) void throw_exception( E const & e )
23866: {
23866: throw_exception_assert_compatibility( e );
23866: throw wrapexcept<E>( e );
23866: }
23866:
23866: template<class E> __attribute__ ((__noreturn__)) void throw_exception( E const & e, boost::source_location const & loc )
23866: {
23866: throw_exception_assert_compatibility( e );
23866: throw wrapexcept<E>( e, loc );
23866: }
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_THROW_EXCEPTION(x) ::boost::throw_exception(x, BOOST_CURRENT_LOCATION)
23866: # 16 "/usr/include/boost/function/detail/prologue.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/function/function_base.hpp" 1 3 4
23866: # 12 "/usr/include/boost/function/function_base.hpp" 3 4
23866: #define BOOST_FUNCTION_BASE_HEADER
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/assert.hpp" 1 3 4
23866: # 32 "/usr/include/boost/assert.hpp" 3 4
23866: #undef BOOST_ASSERT
23866: #undef BOOST_ASSERT_MSG
23866: #undef BOOST_ASSERT_IS_VOID
23866: # 58 "/usr/include/boost/assert.hpp" 3 4
23866: # 1 "/usr/include/assert.h" 1 3 4
23866: # 24 "/usr/include/assert.h" 3 4
23866: #undef _ASSERT_H
23866: #undef assert
23866: #undef __ASSERT_VOID_CAST
23866:
23866:
23866: #undef assert_perror
23866:
23866:
23866:
23866:
23866: #define _ASSERT_H 1
23866:
23866:
23866:
23866: #define __ASSERT_VOID_CAST static_cast<void>
23866: # 92 "/usr/include/assert.h" 3 4
23866: #define assert(expr) (static_cast <bool> (expr) ? void (0) : __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 117 "/usr/include/assert.h" 3 4
23866: #define assert_perror(errnum) (!(errnum) ? __ASSERT_VOID_CAST (0) : __assert_perror_fail ((errnum), __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 129 "/usr/include/assert.h" 3 4
23866: #define __ASSERT_FUNCTION __extension__ __PRETTY_FUNCTION__
23866: # 59 "/usr/include/boost/assert.hpp" 2 3 4
23866:
23866: #define BOOST_ASSERT(expr) assert(expr)
23866: #define BOOST_ASSERT_MSG(expr,msg) assert((expr)&&(msg))
23866: # 72 "/usr/include/boost/assert.hpp" 3 4
23866: #undef BOOST_VERIFY
23866: #undef BOOST_VERIFY_MSG
23866: # 82 "/usr/include/boost/assert.hpp" 3 4
23866: #define BOOST_VERIFY(expr) BOOST_ASSERT(expr)
23866: #define BOOST_VERIFY_MSG(expr,msg) BOOST_ASSERT_MSG(expr,msg)
23866: # 20 "/usr/include/boost/function/function_base.hpp" 2 3 4
23866: # 1 "/usr/include/boost/integer.hpp" 1 3 4
23866: # 16 "/usr/include/boost/integer.hpp" 3 4
23866: #define BOOST_INTEGER_HPP
23866:
23866: # 1 "/usr/include/boost/integer_fwd.hpp" 1 3 4
23866: # 10 "/usr/include/boost/integer_fwd.hpp" 3 4
23866: #define BOOST_INTEGER_FWD_HPP
23866:
23866: # 1 "/usr/include/c++/10/climits" 1 3 4
23866: # 39 "/usr/include/c++/10/climits" 3 4
23866:
23866: # 40 "/usr/include/c++/10/climits" 3
23866:
23866:
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/limits.h" 1 3 4
23866: # 43 "/usr/include/c++/10/climits" 2 3
23866: # 13 "/usr/include/boost/integer_fwd.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/cstdint.hpp" 1 3 4
23866: # 18 "/usr/include/boost/integer_fwd.hpp" 2 3 4
23866:
23866:
23866: namespace boost
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: typedef boost::uintmax_t static_min_max_unsigned_type;
23866: typedef boost::intmax_t static_min_max_signed_type;
23866: typedef boost::uintmax_t static_log2_argument_type;
23866: typedef int static_log2_result_type;
23866: # 42 "/usr/include/boost/integer_fwd.hpp" 3 4
23866: template < class T >
23866: class integer_traits;
23866:
23866: template < >
23866: class integer_traits< bool >;
23866:
23866: template < >
23866: class integer_traits< char >;
23866:
23866: template < >
23866: class integer_traits< signed char >;
23866:
23866: template < >
23866: class integer_traits< unsigned char >;
23866:
23866:
23866: template < >
23866: class integer_traits< wchar_t >;
23866:
23866:
23866: template < >
23866: class integer_traits< short >;
23866:
23866: template < >
23866: class integer_traits< unsigned short >;
23866:
23866: template < >
23866: class integer_traits< int >;
23866:
23866: template < >
23866: class integer_traits< unsigned int >;
23866:
23866: template < >
23866: class integer_traits< long >;
23866:
23866: template < >
23866: class integer_traits< unsigned long >;
23866:
23866:
23866: template < >
23866: class integer_traits< ::boost::long_long_type>;
23866:
23866: template < >
23866: class integer_traits< ::boost::ulong_long_type >;
23866: # 97 "/usr/include/boost/integer_fwd.hpp" 3 4
23866: template < typename LeastInt >
23866: struct int_fast_t;
23866:
23866: template< int Bits >
23866: struct int_t;
23866:
23866: template< int Bits >
23866: struct uint_t;
23866:
23866:
23866: template< boost::long_long_type MaxValue >
23866:
23866:
23866:
23866: struct int_max_value_t;
23866:
23866:
23866: template< boost::long_long_type MinValue >
23866:
23866:
23866:
23866: struct int_min_value_t;
23866:
23866:
23866: template< boost::ulong_long_type MaxValue >
23866:
23866:
23866:
23866: struct uint_value_t;
23866:
23866:
23866:
23866:
23866: template < std::size_t Bit >
23866: struct high_bit_mask_t;
23866:
23866: template < std::size_t Bits >
23866: struct low_bits_mask_t;
23866:
23866: template < >
23866: struct low_bits_mask_t< ::std::numeric_limits<unsigned char>::digits >;
23866:
23866:
23866:
23866: template <static_log2_argument_type Value >
23866: struct static_log2;
23866:
23866: template <> struct static_log2<0u>;
23866:
23866:
23866:
23866:
23866: template <static_min_max_signed_type Value1, static_min_max_signed_type Value2>
23866: struct static_signed_min;
23866:
23866: template <static_min_max_signed_type Value1, static_min_max_signed_type Value2>
23866: struct static_signed_max;
23866:
23866: template <static_min_max_unsigned_type Value1, static_min_max_unsigned_type Value2>
23866: struct static_unsigned_min;
23866:
23866: template <static_min_max_unsigned_type Value1, static_min_max_unsigned_type Value2>
23866: struct static_unsigned_max;
23866:
23866:
23866: namespace integer
23866: {
23866:
23866:
23866:
23866:
23866:
23866: typedef boost::uintmax_t static_gcd_type;
23866:
23866:
23866: template < static_gcd_type Value1, static_gcd_type Value2 >
23866: struct static_gcd;
23866: template < static_gcd_type Value1, static_gcd_type Value2 >
23866: struct static_lcm;
23866:
23866:
23866:
23866:
23866: template < typename IntegerType >
23866: class gcd_evaluator;
23866: template < typename IntegerType >
23866: class lcm_evaluator;
23866:
23866: }
23866:
23866: }
23866: # 19 "/usr/include/boost/integer.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/integer_traits.hpp" 1 3 4
23866: # 17 "/usr/include/boost/integer_traits.hpp" 3 4
23866: #define BOOST_INTEGER_TRAITS_HPP
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/limits.h" 1 3 4
23866: # 24 "/usr/include/boost/integer_traits.hpp" 2 3 4
23866: # 39 "/usr/include/boost/integer_traits.hpp" 3 4
23866:
23866: # 40 "/usr/include/boost/integer_traits.hpp" 3
23866:
23866:
23866: namespace boost {
23866: template<class T>
23866: class integer_traits : public std::numeric_limits<T>
23866: {
23866: public:
23866: static const bool is_integral = false;
23866: };
23866:
23866: namespace detail {
23866: template<class T, T min_val, T max_val>
23866: class integer_traits_base
23866: {
23866: public:
23866: static const bool is_integral = true;
23866: static const T const_min = min_val;
23866: static const T const_max = max_val;
23866: };
23866:
23866:
23866:
23866: template<class T, T min_val, T max_val>
23866: const bool integer_traits_base<T, min_val, max_val>::is_integral;
23866:
23866: template<class T, T min_val, T max_val>
23866: const T integer_traits_base<T, min_val, max_val>::const_min;
23866:
23866: template<class T, T min_val, T max_val>
23866: const T integer_traits_base<T, min_val, max_val>::const_max;
23866:
23866:
23866: }
23866:
23866: template<>
23866: class integer_traits<bool>
23866: : public std::numeric_limits<bool>,
23866: public detail::integer_traits_base<bool, false, true>
23866: { };
23866:
23866: template<>
23866: class integer_traits<char>
23866: : public std::numeric_limits<char>,
23866: public detail::integer_traits_base<char, 0, (0x7f * 2 + 1)>
23866: { };
23866:
23866: template<>
23866: class integer_traits<signed char>
23866: : public std::numeric_limits<signed char>,
23866: public detail::integer_traits_base<signed char, (-0x7f - 1), 0x7f>
23866: { };
23866:
23866: template<>
23866: class integer_traits<unsigned char>
23866: : public std::numeric_limits<unsigned char>,
23866: public detail::integer_traits_base<unsigned char, 0, (0x7f * 2 + 1)>
23866: { };
23866:
23866:
23866: template<>
23866: class integer_traits<wchar_t>
23866: : public std::numeric_limits<wchar_t>,
23866:
23866:
23866:
23866: public detail::integer_traits_base<wchar_t, 0U, 0xffffffffU>
23866: # 125 "/usr/include/boost/integer_traits.hpp" 3
23866: { };
23866:
23866:
23866: template<>
23866: class integer_traits<short>
23866: : public std::numeric_limits<short>,
23866: public detail::integer_traits_base<short, (-0x7fff - 1), 0x7fff>
23866: { };
23866:
23866: template<>
23866: class integer_traits<unsigned short>
23866: : public std::numeric_limits<unsigned short>,
23866: public detail::integer_traits_base<unsigned short, 0, (0x7fff * 2 + 1)>
23866: { };
23866:
23866: template<>
23866: class integer_traits<int>
23866: : public std::numeric_limits<int>,
23866: public detail::integer_traits_base<int, (-0x7fffffff - 1), 0x7fffffff>
23866: { };
23866:
23866: template<>
23866: class integer_traits<unsigned int>
23866: : public std::numeric_limits<unsigned int>,
23866: public detail::integer_traits_base<unsigned int, 0, (0x7fffffff * 2U + 1U)>
23866: { };
23866:
23866: template<>
23866: class integer_traits<long>
23866: : public std::numeric_limits<long>,
23866: public detail::integer_traits_base<long, (-0x7fffffffL - 1L), 0x7fffffffL>
23866: { };
23866:
23866: template<>
23866: class integer_traits<unsigned long>
23866: : public std::numeric_limits<unsigned long>,
23866: public detail::integer_traits_base<unsigned long, 0, (0x7fffffffL * 2UL + 1UL)>
23866: { };
23866:
23866:
23866:
23866:
23866: template<>
23866: class integer_traits< ::boost::long_long_type>
23866: : public std::numeric_limits< ::boost::long_long_type>,
23866: public detail::integer_traits_base< ::boost::long_long_type, (-0x7fffffffffffffffLL -1), 0x7fffffffffffffffLL>
23866: { };
23866:
23866: template<>
23866: class integer_traits< ::boost::ulong_long_type>
23866: : public std::numeric_limits< ::boost::ulong_long_type>,
23866: public detail::integer_traits_base< ::boost::ulong_long_type, 0, (0x7fffffffffffffffLL * 2ULL + 1)>
23866: { };
23866: # 251 "/usr/include/boost/integer_traits.hpp" 3
23866: }
23866: # 21 "/usr/include/boost/integer.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/cstdint.hpp" 1 3 4
23866: # 23 "/usr/include/boost/integer.hpp" 2 3 4
23866: # 34 "/usr/include/boost/integer.hpp" 3 4
23866:
23866: # 35 "/usr/include/boost/integer.hpp" 3
23866:
23866:
23866: namespace boost
23866: {
23866:
23866:
23866:
23866:
23866:
23866: template< typename LeastInt >
23866: struct int_fast_t
23866: {
23866: typedef LeastInt fast;
23866: typedef fast type;
23866: };
23866:
23866: namespace detail{
23866:
23866:
23866: template< int Category > struct int_least_helper {};
23866: template< int Category > struct uint_least_helper {};
23866:
23866:
23866:
23866:
23866:
23866: template<> struct int_least_helper<1> { typedef boost::long_long_type least; };
23866:
23866:
23866:
23866: template<> struct int_least_helper<2> { typedef long least; };
23866: template<> struct int_least_helper<3> { typedef int least; };
23866: template<> struct int_least_helper<4> { typedef short least; };
23866: template<> struct int_least_helper<5> { typedef signed char least; };
23866:
23866: template<> struct uint_least_helper<1> { typedef boost::ulong_long_type least; };
23866:
23866:
23866:
23866: template<> struct uint_least_helper<2> { typedef unsigned long least; };
23866: template<> struct uint_least_helper<3> { typedef unsigned int least; };
23866: template<> struct uint_least_helper<4> { typedef unsigned short least; };
23866: template<> struct uint_least_helper<5> { typedef unsigned char least; };
23866:
23866: template <int Bits>
23866: struct exact_signed_base_helper{};
23866: template <int Bits>
23866: struct exact_unsigned_base_helper{};
23866:
23866: template <> struct exact_signed_base_helper<sizeof(signed char)* 8> { typedef signed char exact; };
23866: template <> struct exact_unsigned_base_helper<sizeof(unsigned char)* 8> { typedef unsigned char exact; };
23866:
23866: template <> struct exact_signed_base_helper<sizeof(short)* 8> { typedef short exact; };
23866: template <> struct exact_unsigned_base_helper<sizeof(unsigned short)* 8> { typedef unsigned short exact; };
23866:
23866:
23866: template <> struct exact_signed_base_helper<sizeof(int)* 8> { typedef int exact; };
23866: template <> struct exact_unsigned_base_helper<sizeof(unsigned int)* 8> { typedef unsigned int exact; };
23866: # 104 "/usr/include/boost/integer.hpp" 3
23866: template <> struct exact_signed_base_helper<sizeof(boost::long_long_type)* 8> { typedef boost::long_long_type exact; };
23866: template <> struct exact_unsigned_base_helper<sizeof(boost::ulong_long_type)* 8> { typedef boost::ulong_long_type exact; };
23866:
23866:
23866:
23866: }
23866:
23866:
23866:
23866:
23866: template< int Bits >
23866: struct int_t : public boost::detail::exact_signed_base_helper<Bits>
23866: {
23866: static_assert(Bits <= (int)(sizeof(boost::intmax_t) * 8), "No suitable signed integer type with the requested number of bits is available.")
23866: ;
23866: typedef typename boost::detail::int_least_helper
23866: <
23866:
23866: (Bits <= (int)(sizeof(boost::long_long_type) * 8)) +
23866:
23866:
23866:
23866: (Bits-1 <= ::std::numeric_limits<long>::digits) +
23866: (Bits-1 <= ::std::numeric_limits<int>::digits) +
23866: (Bits-1 <= ::std::numeric_limits<short>::digits) +
23866: (Bits-1 <= ::std::numeric_limits<signed char>::digits)
23866: >::least least;
23866: typedef typename int_fast_t<least>::type fast;
23866: };
23866:
23866:
23866: template< int Bits >
23866: struct uint_t : public boost::detail::exact_unsigned_base_helper<Bits>
23866: {
23866: static_assert(Bits <= (int)(sizeof(boost::uintmax_t) * 8), "No suitable unsigned integer type with the requested number of bits is available.")
23866: ;
23866: # 150 "/usr/include/boost/integer.hpp" 3
23866: typedef typename boost::detail::uint_least_helper
23866: <
23866:
23866: (Bits <= (int)(sizeof(boost::long_long_type) * 8)) +
23866:
23866:
23866:
23866: (Bits <= ::std::numeric_limits<unsigned long>::digits) +
23866: (Bits <= ::std::numeric_limits<unsigned int>::digits) +
23866: (Bits <= ::std::numeric_limits<unsigned short>::digits) +
23866: (Bits <= ::std::numeric_limits<unsigned char>::digits)
23866: >::least least;
23866:
23866: typedef typename int_fast_t<least>::type fast;
23866:
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template< boost::long_long_type MaxValue >
23866:
23866:
23866:
23866: struct int_max_value_t
23866: {
23866: typedef typename boost::detail::int_least_helper
23866: <
23866:
23866: (MaxValue <= ::boost::integer_traits<boost::long_long_type>::const_max) +
23866:
23866:
23866:
23866: (MaxValue <= ::boost::integer_traits<long>::const_max) +
23866: (MaxValue <= ::boost::integer_traits<int>::const_max) +
23866: (MaxValue <= ::boost::integer_traits<short>::const_max) +
23866: (MaxValue <= ::boost::integer_traits<signed char>::const_max)
23866: >::least least;
23866: typedef typename int_fast_t<least>::type fast;
23866: };
23866:
23866:
23866: template< boost::long_long_type MinValue >
23866:
23866:
23866:
23866: struct int_min_value_t
23866: {
23866: typedef typename boost::detail::int_least_helper
23866: <
23866:
23866: (MinValue >= ::boost::integer_traits<boost::long_long_type>::const_min) +
23866:
23866:
23866:
23866: (MinValue >= ::boost::integer_traits<long>::const_min) +
23866: (MinValue >= ::boost::integer_traits<int>::const_min) +
23866: (MinValue >= ::boost::integer_traits<short>::const_min) +
23866: (MinValue >= ::boost::integer_traits<signed char>::const_min)
23866: >::least least;
23866: typedef typename int_fast_t<least>::type fast;
23866: };
23866:
23866:
23866:
23866: template< boost::ulong_long_type MaxValue >
23866:
23866:
23866:
23866: struct uint_value_t
23866: {
23866: # 243 "/usr/include/boost/integer.hpp" 3
23866: typedef typename boost::detail::uint_least_helper
23866: <
23866:
23866: (MaxValue <= ::boost::integer_traits<boost::ulong_long_type>::const_max) +
23866:
23866:
23866:
23866: (MaxValue <= ::boost::integer_traits<unsigned long>::const_max) +
23866: (MaxValue <= ::boost::integer_traits<unsigned int>::const_max) +
23866: (MaxValue <= ::boost::integer_traits<unsigned short>::const_max) +
23866: (MaxValue <= ::boost::integer_traits<unsigned char>::const_max)
23866: >::least least;
23866:
23866: typedef typename int_fast_t<least>::type fast;
23866: };
23866:
23866:
23866: }
23866: # 21 "/usr/include/boost/function/function_base.hpp" 2 3 4
23866: # 1 "/usr/include/boost/type_index.hpp" 1 3 4
23866: # 9 "/usr/include/boost/type_index.hpp" 3 4
23866: #define BOOST_TYPE_INDEX_HPP
23866: # 20 "/usr/include/boost/type_index.hpp" 3 4
23866:
23866: # 29 "/usr/include/boost/type_index.hpp" 3 4
23866: # 1 "/usr/include/boost/type_index/stl_type_index.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_index/stl_type_index.hpp" 3 4
23866: #define BOOST_TYPE_INDEX_STL_TYPE_INDEX_HPP
23866: # 22 "/usr/include/boost/type_index/stl_type_index.hpp" 3 4
23866: # 1 "/usr/include/boost/type_index/type_index_facade.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_index/type_index_facade.hpp" 3 4
23866: #define BOOST_TYPE_INDEX_TYPE_INDEX_FACADE_HPP
23866:
23866:
23866: # 1 "/usr/include/boost/container_hash/hash_fwd.hpp" 1 3 4
23866: # 11 "/usr/include/boost/container_hash/hash_fwd.hpp" 3 4
23866: #define BOOST_FUNCTIONAL_HASH_FWD_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost
23866: {
23866: template <class T> struct hash;
23866:
23866: template <class T> void hash_combine(std::size_t& seed, T const& v);
23866:
23866: template <class It> std::size_t hash_range(It, It);
23866: template <class It> void hash_range(std::size_t&, It, It);
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 14 "/usr/include/boost/type_index/type_index_facade.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/c++/10/cstring" 1 3 4
23866: # 39 "/usr/include/c++/10/cstring" 3 4
23866:
23866: # 40 "/usr/include/c++/10/cstring" 3
23866: # 16 "/usr/include/boost/type_index/type_index_facade.hpp" 2 3 4
23866: # 26 "/usr/include/boost/type_index/type_index_facade.hpp" 3 4
23866:
23866:
23866:
23866: namespace boost { namespace typeindex {
23866: # 61 "/usr/include/boost/type_index/type_index_facade.hpp" 3 4
23866: template <class Derived, class TypeInfo>
23866: class type_index_facade {
23866: private:
23866:
23866: constexpr const Derived & derived() const noexcept {
23866: return *static_cast<Derived const*>(this);
23866: }
23866:
23866: public:
23866: typedef TypeInfo type_info_t;
23866:
23866:
23866:
23866: inline const char* name() const noexcept {
23866: return derived().raw_name();
23866: }
23866:
23866:
23866:
23866: inline std::string pretty_name() const {
23866: return derived().name();
23866: }
23866:
23866:
23866:
23866: inline bool equal(const Derived& rhs) const noexcept {
23866: const char* const left = derived().raw_name();
23866: const char* const right = rhs.raw_name();
23866: return left == right || !std::strcmp(left, right);
23866: }
23866:
23866:
23866:
23866: inline bool before(const Derived& rhs) const noexcept {
23866: const char* const left = derived().raw_name();
23866: const char* const right = rhs.raw_name();
23866: return left != right && std::strcmp(left, right) < 0;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: inline std::size_t hash_code() const noexcept {
23866: const char* const name_raw = derived().raw_name();
23866: return boost::hash_range(name_raw, name_raw + std::strlen(name_raw));
23866: }
23866: # 150 "/usr/include/boost/type_index/type_index_facade.hpp" 3 4
23866: };
23866:
23866:
23866: template <class Derived, class TypeInfo>
23866: constexpr inline bool operator == (const type_index_facade<Derived, TypeInfo>& lhs, const type_index_facade<Derived, TypeInfo>& rhs) noexcept {
23866: return static_cast<Derived const&>(lhs).equal(static_cast<Derived const&>(rhs));
23866: }
23866:
23866: template <class Derived, class TypeInfo>
23866: constexpr inline bool operator < (const type_index_facade<Derived, TypeInfo>& lhs, const type_index_facade<Derived, TypeInfo>& rhs) noexcept {
23866: return static_cast<Derived const&>(lhs).before(static_cast<Derived const&>(rhs));
23866: }
23866:
23866:
23866:
23866: template <class Derived, class TypeInfo>
23866: constexpr inline bool operator > (const type_index_facade<Derived, TypeInfo>& lhs, const type_index_facade<Derived, TypeInfo>& rhs) noexcept {
23866: return rhs < lhs;
23866: }
23866:
23866: template <class Derived, class TypeInfo>
23866: constexpr inline bool operator <= (const type_index_facade<Derived, TypeInfo>& lhs, const type_index_facade<Derived, TypeInfo>& rhs) noexcept {
23866: return !(lhs > rhs);
23866: }
23866:
23866: template <class Derived, class TypeInfo>
23866: constexpr inline bool operator >= (const type_index_facade<Derived, TypeInfo>& lhs, const type_index_facade<Derived, TypeInfo>& rhs) noexcept {
23866: return !(lhs < rhs);
23866: }
23866:
23866: template <class Derived, class TypeInfo>
23866: constexpr inline bool operator != (const type_index_facade<Derived, TypeInfo>& lhs, const type_index_facade<Derived, TypeInfo>& rhs) noexcept {
23866: return !(lhs == rhs);
23866: }
23866:
23866:
23866: template <class Derived, class TypeInfo>
23866: inline bool operator == (const TypeInfo& lhs, const type_index_facade<Derived, TypeInfo>& rhs) noexcept {
23866: return Derived(lhs) == rhs;
23866: }
23866:
23866: template <class Derived, class TypeInfo>
23866: inline bool operator < (const TypeInfo& lhs, const type_index_facade<Derived, TypeInfo>& rhs) noexcept {
23866: return Derived(lhs) < rhs;
23866: }
23866:
23866: template <class Derived, class TypeInfo>
23866: inline bool operator > (const TypeInfo& lhs, const type_index_facade<Derived, TypeInfo>& rhs) noexcept {
23866: return rhs < Derived(lhs);
23866: }
23866:
23866: template <class Derived, class TypeInfo>
23866: inline bool operator <= (const TypeInfo& lhs, const type_index_facade<Derived, TypeInfo>& rhs) noexcept {
23866: return !(Derived(lhs) > rhs);
23866: }
23866:
23866: template <class Derived, class TypeInfo>
23866: inline bool operator >= (const TypeInfo& lhs, const type_index_facade<Derived, TypeInfo>& rhs) noexcept {
23866: return !(Derived(lhs) < rhs);
23866: }
23866:
23866: template <class Derived, class TypeInfo>
23866: inline bool operator != (const TypeInfo& lhs, const type_index_facade<Derived, TypeInfo>& rhs) noexcept {
23866: return !(Derived(lhs) == rhs);
23866: }
23866:
23866:
23866: template <class Derived, class TypeInfo>
23866: inline bool operator == (const type_index_facade<Derived, TypeInfo>& lhs, const TypeInfo& rhs) noexcept {
23866: return lhs == Derived(rhs);
23866: }
23866:
23866: template <class Derived, class TypeInfo>
23866: inline bool operator < (const type_index_facade<Derived, TypeInfo>& lhs, const TypeInfo& rhs) noexcept {
23866: return lhs < Derived(rhs);
23866: }
23866:
23866: template <class Derived, class TypeInfo>
23866: inline bool operator > (const type_index_facade<Derived, TypeInfo>& lhs, const TypeInfo& rhs) noexcept {
23866: return Derived(rhs) < lhs;
23866: }
23866:
23866: template <class Derived, class TypeInfo>
23866: inline bool operator <= (const type_index_facade<Derived, TypeInfo>& lhs, const TypeInfo& rhs) noexcept {
23866: return !(lhs > Derived(rhs));
23866: }
23866:
23866: template <class Derived, class TypeInfo>
23866: inline bool operator >= (const type_index_facade<Derived, TypeInfo>& lhs, const TypeInfo& rhs) noexcept {
23866: return !(lhs < Derived(rhs));
23866: }
23866:
23866: template <class Derived, class TypeInfo>
23866: inline bool operator != (const type_index_facade<Derived, TypeInfo>& lhs, const TypeInfo& rhs) noexcept {
23866: return !(lhs == Derived(rhs));
23866: }
23866: # 276 "/usr/include/boost/type_index/type_index_facade.hpp" 3 4
23866: template <class CharT, class TriatT, class Derived, class TypeInfo>
23866: inline std::basic_ostream<CharT, TriatT>& operator<<(
23866: std::basic_ostream<CharT, TriatT>& ostr,
23866: const type_index_facade<Derived, TypeInfo>& ind)
23866: {
23866: ostr << static_cast<Derived const&>(ind).pretty_name();
23866: return ostr;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template <class Derived, class TypeInfo>
23866: inline std::size_t hash_value(const type_index_facade<Derived, TypeInfo>& lhs) noexcept {
23866: return static_cast<Derived const&>(lhs).hash_code();
23866: }
23866:
23866: }}
23866: # 23 "/usr/include/boost/type_index/stl_type_index.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/cstring" 1 3 4
23866: # 39 "/usr/include/c++/10/cstring" 3 4
23866:
23866: # 40 "/usr/include/c++/10/cstring" 3
23866: # 31 "/usr/include/boost/type_index/stl_type_index.hpp" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/core/demangle.hpp" 1 3 4
23866:
23866: #define BOOST_CORE_DEMANGLE_HPP_INCLUDED
23866: # 17 "/usr/include/boost/core/demangle.hpp" 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_CORE_HAS_CXXABI_H
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/cxxabi.h" 1 3 4
23866: # 42 "/usr/include/c++/10/cxxabi.h" 3 4
23866: #define _CXXABI_H 1
23866:
23866:
23866: # 45 "/usr/include/c++/10/cxxabi.h" 3
23866:
23866: #pragma GCC visibility push(default)
23866:
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 1 3 4
23866: # 49 "/usr/include/c++/10/cxxabi.h" 2 3
23866:
23866: # 1 "/usr/include/arm-linux-gnueabihf/c++/10/bits/cxxabi_tweaks.h" 1 3
23866: # 31 "/usr/include/arm-linux-gnueabihf/c++/10/bits/cxxabi_tweaks.h" 3
23866: #define _CXXABI_TWEAKS_H 1
23866:
23866:
23866: namespace __cxxabiv1
23866: {
23866: extern "C"
23866: {
23866:
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0)
23866: #define _GLIBCXX_GUARD_SET(x) *(x) = 1
23866: #define _GLIBCXX_GUARD_BIT 1
23866: #define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1)
23866: #define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1)
23866: typedef int __guard;
23866:
23866:
23866: #define _GLIBCXX_ELTSIZE_IN_COOKIE 1
23866:
23866:
23866: typedef void * __cxa_vec_ctor_return_type;
23866: #define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x
23866:
23866: typedef void * __cxa_cdtor_return_type;
23866: # 78 "/usr/include/arm-linux-gnueabihf/c++/10/bits/cxxabi_tweaks.h" 3
23866: }
23866: }
23866: # 51 "/usr/include/c++/10/cxxabi.h" 2 3
23866:
23866:
23866:
23866:
23866: namespace __cxxabiv1
23866: {
23866: extern "C"
23866: {
23866:
23866:
23866: typedef __cxa_cdtor_return_type (*__cxa_cdtor_type)(void *);
23866:
23866:
23866: void*
23866: __cxa_vec_new(size_t __element_count, size_t __element_size,
23866: size_t __padding_size, __cxa_cdtor_type __constructor,
23866: __cxa_cdtor_type __destructor);
23866:
23866: void*
23866: __cxa_vec_new2(size_t __element_count, size_t __element_size,
23866: size_t __padding_size, __cxa_cdtor_type __constructor,
23866: __cxa_cdtor_type __destructor, void *(*__alloc) (size_t),
23866: void (*__dealloc) (void*));
23866:
23866: void*
23866: __cxa_vec_new3(size_t __element_count, size_t __element_size,
23866: size_t __padding_size, __cxa_cdtor_type __constructor,
23866: __cxa_cdtor_type __destructor, void *(*__alloc) (size_t),
23866: void (*__dealloc) (void*, size_t));
23866:
23866:
23866: __cxa_vec_ctor_return_type
23866: __cxa_vec_ctor(void* __array_address, size_t __element_count,
23866: size_t __element_size, __cxa_cdtor_type __constructor,
23866: __cxa_cdtor_type __destructor);
23866:
23866: __cxa_vec_ctor_return_type
23866: __cxa_vec_cctor(void* __dest_array, void* __src_array,
23866: size_t __element_count, size_t __element_size,
23866: __cxa_cdtor_return_type (*__constructor) (void*, void*),
23866: __cxa_cdtor_type __destructor);
23866:
23866:
23866: void
23866: __cxa_vec_dtor(void* __array_address, size_t __element_count,
23866: size_t __element_size, __cxa_cdtor_type __destructor);
23866:
23866: void
23866: __cxa_vec_cleanup(void* __array_address, size_t __element_count, size_t __s,
23866: __cxa_cdtor_type __destructor) noexcept;
23866:
23866:
23866: void
23866: __cxa_vec_delete(void* __array_address, size_t __element_size,
23866: size_t __padding_size, __cxa_cdtor_type __destructor);
23866:
23866: void
23866: __cxa_vec_delete2(void* __array_address, size_t __element_size,
23866: size_t __padding_size, __cxa_cdtor_type __destructor,
23866: void (*__dealloc) (void*));
23866:
23866: void
23866: __cxa_vec_delete3(void* __array_address, size_t __element_size,
23866: size_t __padding_size, __cxa_cdtor_type __destructor,
23866: void (*__dealloc) (void*, size_t));
23866:
23866: int
23866: __cxa_guard_acquire(__guard*);
23866:
23866: void
23866: __cxa_guard_release(__guard*) noexcept;
23866:
23866: void
23866: __cxa_guard_abort(__guard*) noexcept;
23866:
23866:
23866: int
23866: __cxa_atexit(void (*)(void*), void*, void*) noexcept;
23866:
23866: int
23866: __cxa_finalize(void*);
23866:
23866:
23866: int
23866: __cxa_thread_atexit(void (*)(void*), void*, void *) noexcept;
23866:
23866:
23866: void
23866: __cxa_pure_virtual(void) __attribute__ ((__noreturn__));
23866:
23866: void
23866: __cxa_deleted_virtual(void) __attribute__ ((__noreturn__));
23866:
23866:
23866: void
23866: __cxa_bad_cast() __attribute__((__noreturn__));
23866:
23866: void
23866: __cxa_bad_typeid() __attribute__((__noreturn__));
23866:
23866: void
23866: __cxa_throw_bad_array_new_length() __attribute__((__noreturn__));
23866: # 195 "/usr/include/c++/10/cxxabi.h" 3
23866: char*
23866: __cxa_demangle(const char* __mangled_name, char* __output_buffer,
23866: size_t* __length, int* __status);
23866:
23866:
23866: }
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace __cxxabiv1
23866: {
23866:
23866: class __fundamental_type_info : public std::type_info
23866: {
23866: public:
23866: explicit
23866: __fundamental_type_info(const char* __n) : std::type_info(__n) { }
23866:
23866: virtual
23866: ~__fundamental_type_info();
23866: };
23866:
23866:
23866: class __array_type_info : public std::type_info
23866: {
23866: public:
23866: explicit
23866: __array_type_info(const char* __n) : std::type_info(__n) { }
23866:
23866: virtual
23866: ~__array_type_info();
23866: };
23866:
23866:
23866: class __function_type_info : public std::type_info
23866: {
23866: public:
23866: explicit
23866: __function_type_info(const char* __n) : std::type_info(__n) { }
23866:
23866: virtual
23866: ~__function_type_info();
23866:
23866: protected:
23866:
23866: virtual bool
23866: __is_function_p() const;
23866: };
23866:
23866:
23866: class __enum_type_info : public std::type_info
23866: {
23866: public:
23866: explicit
23866: __enum_type_info(const char* __n) : std::type_info(__n) { }
23866:
23866: virtual
23866: ~__enum_type_info();
23866: };
23866:
23866:
23866: class __pbase_type_info : public std::type_info
23866: {
23866: public:
23866: unsigned int __flags;
23866: const std::type_info* __pointee;
23866:
23866: explicit
23866: __pbase_type_info(const char* __n, int __quals,
23866: const std::type_info* __type)
23866: : std::type_info(__n), __flags(__quals), __pointee(__type)
23866: { }
23866:
23866: virtual
23866: ~__pbase_type_info();
23866:
23866:
23866: enum __masks
23866: {
23866: __const_mask = 0x1,
23866: __volatile_mask = 0x2,
23866: __restrict_mask = 0x4,
23866: __incomplete_mask = 0x8,
23866: __incomplete_class_mask = 0x10,
23866: __transaction_safe_mask = 0x20,
23866: __noexcept_mask = 0x40
23866: };
23866:
23866: protected:
23866: __pbase_type_info(const __pbase_type_info&);
23866:
23866: __pbase_type_info&
23866: operator=(const __pbase_type_info&);
23866:
23866:
23866: virtual bool
23866: __do_catch(const std::type_info* __thr_type, void** __thr_obj,
23866: unsigned int __outer) const;
23866:
23866: inline virtual bool
23866: __pointer_catch(const __pbase_type_info* __thr_type, void** __thr_obj,
23866: unsigned __outer) const;
23866: };
23866:
23866: inline bool __pbase_type_info::
23866: __pointer_catch (const __pbase_type_info *thrown_type,
23866: void **thr_obj,
23866: unsigned outer) const
23866: {
23866: return __pointee->__do_catch (thrown_type->__pointee, thr_obj, outer + 2);
23866: }
23866:
23866:
23866: class __pointer_type_info : public __pbase_type_info
23866: {
23866: public:
23866: explicit
23866: __pointer_type_info(const char* __n, int __quals,
23866: const std::type_info* __type)
23866: : __pbase_type_info (__n, __quals, __type) { }
23866:
23866:
23866: virtual
23866: ~__pointer_type_info();
23866:
23866: protected:
23866:
23866: virtual bool
23866: __is_pointer_p() const;
23866:
23866: virtual bool
23866: __pointer_catch(const __pbase_type_info* __thr_type, void** __thr_obj,
23866: unsigned __outer) const;
23866: };
23866:
23866: class __class_type_info;
23866:
23866:
23866: class __pointer_to_member_type_info : public __pbase_type_info
23866: {
23866: public:
23866: __class_type_info* __context;
23866:
23866: explicit
23866: __pointer_to_member_type_info(const char* __n, int __quals,
23866: const std::type_info* __type,
23866: __class_type_info* __klass)
23866: : __pbase_type_info(__n, __quals, __type), __context(__klass) { }
23866:
23866: virtual
23866: ~__pointer_to_member_type_info();
23866:
23866: protected:
23866: __pointer_to_member_type_info(const __pointer_to_member_type_info&);
23866:
23866: __pointer_to_member_type_info&
23866: operator=(const __pointer_to_member_type_info&);
23866:
23866:
23866: virtual bool
23866: __pointer_catch(const __pbase_type_info* __thr_type, void** __thr_obj,
23866: unsigned __outer) const;
23866: };
23866:
23866:
23866: class __base_class_type_info
23866: {
23866: public:
23866: const __class_type_info* __base_type;
23866:
23866:
23866:
23866: long __offset_flags;
23866:
23866:
23866: enum __offset_flags_masks
23866: {
23866: __virtual_mask = 0x1,
23866: __public_mask = 0x2,
23866: __hwm_bit = 2,
23866: __offset_shift = 8
23866: };
23866:
23866:
23866: bool
23866: __is_virtual_p() const
23866: { return __offset_flags & __virtual_mask; }
23866:
23866: bool
23866: __is_public_p() const
23866: { return __offset_flags & __public_mask; }
23866:
23866: ptrdiff_t
23866: __offset() const
23866: {
23866:
23866:
23866:
23866: return static_cast<ptrdiff_t>(__offset_flags) >> __offset_shift;
23866: }
23866: };
23866:
23866:
23866: class __class_type_info : public std::type_info
23866: {
23866: public:
23866: explicit
23866: __class_type_info (const char *__n) : type_info(__n) { }
23866:
23866: virtual
23866: ~__class_type_info ();
23866:
23866:
23866:
23866:
23866:
23866:
23866: enum __sub_kind
23866: {
23866:
23866: __unknown = 0,
23866:
23866:
23866:
23866: __not_contained,
23866:
23866:
23866: __contained_ambig,
23866:
23866:
23866: __contained_virtual_mask = __base_class_type_info::__virtual_mask,
23866:
23866:
23866: __contained_public_mask = __base_class_type_info::__public_mask,
23866:
23866:
23866: __contained_mask = 1 << __base_class_type_info::__hwm_bit,
23866:
23866: __contained_private = __contained_mask,
23866: __contained_public = __contained_mask | __contained_public_mask
23866: };
23866:
23866: struct __upcast_result;
23866: struct __dyncast_result;
23866:
23866: protected:
23866:
23866: virtual bool
23866: __do_upcast(const __class_type_info* __dst_type, void**__obj_ptr) const;
23866:
23866: virtual bool
23866: __do_catch(const type_info* __thr_type, void** __thr_obj,
23866: unsigned __outer) const;
23866:
23866: public:
23866:
23866:
23866: virtual bool
23866: __do_upcast(const __class_type_info* __dst, const void* __obj,
23866: __upcast_result& __restrict __result) const;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline __sub_kind
23866: __find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr,
23866: const __class_type_info* __src_type,
23866: const void* __src_ptr) const;
23866: # 478 "/usr/include/c++/10/cxxabi.h" 3
23866: virtual bool
23866: __do_dyncast(ptrdiff_t __src2dst, __sub_kind __access_path,
23866: const __class_type_info* __dst_type, const void* __obj_ptr,
23866: const __class_type_info* __src_type, const void* __src_ptr,
23866: __dyncast_result& __result) const;
23866:
23866:
23866:
23866:
23866:
23866: virtual __sub_kind
23866: __do_find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr,
23866: const __class_type_info* __src_type,
23866: const void* __src_ptr) const;
23866: };
23866:
23866:
23866: class __si_class_type_info : public __class_type_info
23866: {
23866: public:
23866: const __class_type_info* __base_type;
23866:
23866: explicit
23866: __si_class_type_info(const char *__n, const __class_type_info *__base)
23866: : __class_type_info(__n), __base_type(__base) { }
23866:
23866: virtual
23866: ~__si_class_type_info();
23866:
23866: protected:
23866: __si_class_type_info(const __si_class_type_info&);
23866:
23866: __si_class_type_info&
23866: operator=(const __si_class_type_info&);
23866:
23866:
23866: virtual bool
23866: __do_dyncast(ptrdiff_t __src2dst, __sub_kind __access_path,
23866: const __class_type_info* __dst_type, const void* __obj_ptr,
23866: const __class_type_info* __src_type, const void* __src_ptr,
23866: __dyncast_result& __result) const;
23866:
23866: virtual __sub_kind
23866: __do_find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr,
23866: const __class_type_info* __src_type,
23866: const void* __sub_ptr) const;
23866:
23866: virtual bool
23866: __do_upcast(const __class_type_info*__dst, const void*__obj,
23866: __upcast_result& __restrict __result) const;
23866: };
23866:
23866:
23866: class __vmi_class_type_info : public __class_type_info
23866: {
23866: public:
23866: unsigned int __flags;
23866: unsigned int __base_count;
23866:
23866:
23866:
23866:
23866: __base_class_type_info __base_info[1];
23866:
23866: explicit
23866: __vmi_class_type_info(const char* __n, int ___flags)
23866: : __class_type_info(__n), __flags(___flags), __base_count(0) { }
23866:
23866: virtual
23866: ~__vmi_class_type_info();
23866:
23866:
23866: enum __flags_masks
23866: {
23866: __non_diamond_repeat_mask = 0x1,
23866: __diamond_shaped_mask = 0x2,
23866: __flags_unknown_mask = 0x10
23866: };
23866:
23866: protected:
23866:
23866: virtual bool
23866: __do_dyncast(ptrdiff_t __src2dst, __sub_kind __access_path,
23866: const __class_type_info* __dst_type, const void* __obj_ptr,
23866: const __class_type_info* __src_type, const void* __src_ptr,
23866: __dyncast_result& __result) const;
23866:
23866: virtual __sub_kind
23866: __do_find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr,
23866: const __class_type_info* __src_type,
23866: const void* __src_ptr) const;
23866:
23866: virtual bool
23866: __do_upcast(const __class_type_info* __dst, const void* __obj,
23866: __upcast_result& __restrict __result) const;
23866: };
23866:
23866:
23866: struct __cxa_exception;
23866: struct __cxa_refcounted_exception;
23866: struct __cxa_dependent_exception;
23866: struct __cxa_eh_globals;
23866:
23866: extern "C"
23866: {
23866: # 591 "/usr/include/c++/10/cxxabi.h" 3
23866: void*
23866: __dynamic_cast(const void* __src_ptr,
23866: const __class_type_info* __src_type,
23866: const __class_type_info* __dst_type,
23866: ptrdiff_t __src2dst);
23866: # 604 "/usr/include/c++/10/cxxabi.h" 3
23866: __cxa_eh_globals*
23866: __cxa_get_globals() noexcept __attribute__ ((__const__));
23866:
23866: __cxa_eh_globals*
23866: __cxa_get_globals_fast() noexcept __attribute__ ((__const__));
23866:
23866:
23866: void
23866: __cxa_free_exception(void*) noexcept;
23866:
23866:
23866: void
23866: __cxa_throw(void*, std::type_info*, void ( *) (void *))
23866: __attribute__((__noreturn__));
23866:
23866:
23866: void*
23866: __cxa_get_exception_ptr(void*) noexcept __attribute__ ((__pure__));
23866:
23866: void*
23866: __cxa_begin_catch(void*) noexcept;
23866:
23866: void
23866: __cxa_end_catch();
23866:
23866: void
23866: __cxa_rethrow() __attribute__((__noreturn__));
23866:
23866:
23866:
23866: std::type_info*
23866: __cxa_current_exception_type() noexcept __attribute__ ((__pure__));
23866:
23866:
23866:
23866:
23866: __cxa_dependent_exception*
23866: __cxa_allocate_dependent_exception() noexcept;
23866:
23866:
23866: void
23866: __cxa_free_dependent_exception(__cxa_dependent_exception*) noexcept;
23866:
23866: }
23866:
23866:
23866:
23866: class __foreign_exception
23866: {
23866: virtual ~__foreign_exception() throw();
23866: virtual void __pure_dummy() = 0;
23866: };
23866:
23866: }
23866: # 679 "/usr/include/c++/10/cxxabi.h" 3
23866: namespace abi = __cxxabiv1;
23866:
23866: namespace __gnu_cxx
23866: {
23866: # 696 "/usr/include/c++/10/cxxabi.h" 3
23866: class recursive_init_error: public std::exception
23866: {
23866: public:
23866: recursive_init_error() noexcept;
23866: virtual ~recursive_init_error() noexcept;
23866: };
23866: }
23866:
23866:
23866: #pragma GCC visibility pop
23866: # 33 "/usr/include/boost/core/demangle.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/cstdlib" 1 3 4
23866: # 39 "/usr/include/c++/10/cstdlib" 3 4
23866:
23866: # 40 "/usr/include/c++/10/cstdlib" 3
23866: # 40 "/usr/include/boost/core/demangle.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: namespace boost
23866: {
23866:
23866: namespace core
23866: {
23866:
23866: inline char const * demangle_alloc( char const * name ) noexcept;
23866: inline void demangle_free( char const * name ) noexcept;
23866:
23866: class scoped_demangled_name
23866: {
23866: private:
23866: char const * m_p;
23866:
23866: public:
23866: explicit scoped_demangled_name( char const * name ) noexcept :
23866: m_p( demangle_alloc( name ) )
23866: {
23866: }
23866:
23866: ~scoped_demangled_name() noexcept
23866: {
23866: demangle_free( m_p );
23866: }
23866:
23866: char const * get() const noexcept
23866: {
23866: return m_p;
23866: }
23866:
23866: scoped_demangled_name( scoped_demangled_name const& ) = delete;
23866: scoped_demangled_name& operator= ( scoped_demangled_name const& ) = delete;
23866: };
23866:
23866:
23866:
23866:
23866: inline char const * demangle_alloc( char const * name ) noexcept
23866: {
23866: int status = 0;
23866: std::size_t size = 0;
23866: return abi::__cxa_demangle( name, __null, &size, &status );
23866: }
23866:
23866: inline void demangle_free( char const * name ) noexcept
23866: {
23866: std::free( const_cast< char* >( name ) );
23866: }
23866:
23866: inline std::string demangle( char const * name )
23866: {
23866: scoped_demangled_name demangled_name( name );
23866: char const * p = demangled_name.get();
23866: if( !p )
23866: p = name;
23866: return p;
23866: }
23866: # 120 "/usr/include/boost/core/demangle.hpp" 3 4
23866: }
23866:
23866: }
23866:
23866: #undef BOOST_CORE_HAS_CXXABI_H
23866: # 35 "/usr/include/boost/type_index/stl_type_index.hpp" 2 3 4
23866: # 45 "/usr/include/boost/type_index/stl_type_index.hpp" 3 4
23866: #define BOOST_TYPE_INDEX_STD_TYPE_INDEX_HAS_HASH_CODE
23866: # 58 "/usr/include/boost/type_index/stl_type_index.hpp" 3 4
23866:
23866:
23866:
23866: namespace boost { namespace typeindex {
23866:
23866:
23866:
23866:
23866:
23866:
23866: class stl_type_index
23866: : public type_index_facade<
23866: stl_type_index,
23866:
23866:
23866:
23866: std::type_info
23866:
23866: >
23866: {
23866: public:
23866:
23866:
23866:
23866: typedef std::type_info type_info_t;
23866:
23866:
23866: private:
23866: const type_info_t* data_;
23866:
23866: public:
23866: inline stl_type_index() noexcept
23866: : data_(&typeid(void))
23866: {}
23866:
23866: inline stl_type_index(const type_info_t& data) noexcept
23866: : data_(&data)
23866: {}
23866:
23866: inline const type_info_t& type_info() const noexcept;
23866:
23866: inline const char* raw_name() const noexcept;
23866: inline const char* name() const noexcept;
23866: inline std::string pretty_name() const;
23866:
23866: inline std::size_t hash_code() const noexcept;
23866: inline bool equal(const stl_type_index& rhs) const noexcept;
23866: inline bool before(const stl_type_index& rhs) const noexcept;
23866:
23866: template <class T>
23866: inline static stl_type_index type_id() noexcept;
23866:
23866: template <class T>
23866: inline static stl_type_index type_id_with_cvr() noexcept;
23866:
23866: template <class T>
23866: inline static stl_type_index type_id_runtime(const T& value) noexcept;
23866: };
23866:
23866: inline const stl_type_index::type_info_t& stl_type_index::type_info() const noexcept {
23866: return *data_;
23866: }
23866:
23866:
23866: inline const char* stl_type_index::raw_name() const noexcept {
23866:
23866:
23866:
23866: return data_->name();
23866:
23866: }
23866:
23866: inline const char* stl_type_index::name() const noexcept {
23866: return data_->name();
23866: }
23866:
23866: inline std::string stl_type_index::pretty_name() const {
23866: static const char cvr_saver_name[] = "boost::typeindex::detail::cvr_saver<";
23866: static constexpr std::string::size_type cvr_saver_name_len = sizeof(cvr_saver_name) - 1;
23866:
23866:
23866:
23866: const boost::core::scoped_demangled_name demangled_name(data_->name());
23866:
23866: const char* begin = demangled_name.get();
23866: if (!begin) {
23866: boost::throw_exception(std::runtime_error("Type name demangling failed"));
23866: }
23866:
23866: const std::string::size_type len = std::strlen(begin);
23866: const char* end = begin + len;
23866:
23866: if (len > cvr_saver_name_len) {
23866: const char* b = std::strstr(begin, cvr_saver_name);
23866: if (b) {
23866: b += cvr_saver_name_len;
23866:
23866:
23866: while (*b == ' ') {
23866: ++ b;
23866: }
23866:
23866:
23866: const char* e = end - 1;
23866: while (e > b && *e != '>') {
23866: -- e;
23866: }
23866:
23866:
23866: while (e > b && *(e - 1) == ' ') {
23866: -- e;
23866: }
23866:
23866: if (b < e) {
23866:
23866: begin = b;
23866: end = e;
23866: }
23866: }
23866: }
23866:
23866: return std::string(begin, end);
23866: }
23866:
23866:
23866: inline std::size_t stl_type_index::hash_code() const noexcept {
23866:
23866: return data_->hash_code();
23866:
23866:
23866:
23866: }
23866: # 206 "/usr/include/boost/type_index/stl_type_index.hpp" 3 4
23866: inline bool stl_type_index::equal(const stl_type_index& rhs) const noexcept {
23866:
23866:
23866:
23866: return !!(*data_ == *rhs.data_);
23866:
23866: }
23866:
23866: inline bool stl_type_index::before(const stl_type_index& rhs) const noexcept {
23866:
23866:
23866:
23866: return !!data_->before(*rhs.data_);
23866:
23866: }
23866:
23866: #undef BOOST_TYPE_INDEX_CLASSINFO_COMPARE_BY_NAMES
23866:
23866:
23866: template <class T>
23866: inline stl_type_index stl_type_index::type_id() noexcept {
23866: typedef typename boost::remove_reference<T>::type no_ref_t;
23866: typedef typename boost::remove_cv<no_ref_t>::type no_cvr_prefinal_t;
23866: # 243 "/usr/include/boost/type_index/stl_type_index.hpp" 3 4
23866: typedef no_cvr_prefinal_t no_cvr_t;
23866:
23866:
23866: return typeid(no_cvr_t);
23866: }
23866:
23866: namespace detail {
23866: template <class T> class cvr_saver{};
23866: }
23866:
23866: template <class T>
23866: inline stl_type_index stl_type_index::type_id_with_cvr() noexcept {
23866: typedef typename boost::conditional<
23866: boost::is_reference<T>::value || boost::is_const<T>::value || boost::is_volatile<T>::value,
23866: detail::cvr_saver<T>,
23866: T
23866: >::type type;
23866:
23866: return typeid(type);
23866: }
23866:
23866:
23866: template <class T>
23866: inline stl_type_index stl_type_index::type_id_runtime(const T& value) noexcept {
23866:
23866:
23866:
23866: return typeid(value);
23866:
23866: }
23866:
23866: }}
23866:
23866: #undef BOOST_TYPE_INDEX_STD_TYPE_INDEX_HAS_HASH_CODE
23866: # 30 "/usr/include/boost/type_index.hpp" 2 3 4
23866: # 49 "/usr/include/boost/type_index.hpp" 3 4
23866: #define BOOST_TYPE_INDEX_REGISTER_CLASS
23866:
23866:
23866: namespace boost { namespace typeindex {
23866: # 132 "/usr/include/boost/type_index.hpp" 3 4
23866: typedef boost::typeindex::stl_type_index type_index;
23866: # 144 "/usr/include/boost/type_index.hpp" 3 4
23866: typedef type_index::type_info_t type_info;
23866: # 210 "/usr/include/boost/type_index.hpp" 3 4
23866: template <class T>
23866: inline type_index type_id() noexcept {
23866: return type_index::type_id<T>();
23866: }
23866: # 230 "/usr/include/boost/type_index.hpp" 3 4
23866: template <class T>
23866: inline type_index type_id_with_cvr() noexcept {
23866: return type_index::type_id_with_cvr<T>();
23866: }
23866: # 255 "/usr/include/boost/type_index.hpp" 3 4
23866: template <class T>
23866: inline type_index type_id_runtime(const T& runtime_val) noexcept {
23866: return type_index::type_id_runtime(runtime_val);
23866: }
23866:
23866: }}
23866: # 22 "/usr/include/boost/function/function_base.hpp" 2 3 4
23866: # 1 "/usr/include/boost/type_traits/has_trivial_copy.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/has_trivial_copy.hpp" 3 4
23866: #define BOOST_TT_HAS_TRIVIAL_COPY_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/is_copy_constructible.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/is_copy_constructible.hpp" 3 4
23866: #define BOOST_TT_IS_COPY_CONSTRUCTIBLE_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/is_constructible.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/is_constructible.hpp" 3 4
23866: #define BOOST_TT_IS_CONSTRUCTIBLE_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/is_destructible.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/is_destructible.hpp" 3 4
23866: #define BOOST_TT_IS_DESTRUCTIBLE_HPP_INCLUDED
23866: # 23 "/usr/include/boost/type_traits/is_destructible.hpp" 3 4
23866: namespace boost{
23866:
23866: namespace detail{
23866:
23866: struct is_destructible_imp
23866: {
23866: template<typename T, typename = decltype(boost::declval<T&>().~T())>
23866: static boost::type_traits::yes_type test(int);
23866: template<typename>
23866: static boost::type_traits::no_type test(...);
23866: };
23866:
23866: }
23866:
23866: template <class T> struct is_destructible : public integral_constant<bool, sizeof(boost::detail::is_destructible_imp::test<T>(0)) == sizeof(boost::type_traits::yes_type)>
23866: {
23866: static_assert(boost::is_complete<T>::value, "Arguments to is_destructible must be complete types");
23866: };
23866: # 56 "/usr/include/boost/type_traits/is_destructible.hpp" 3 4
23866: template <> struct is_destructible<void> : public false_type{};
23866: template <> struct is_destructible<void const> : public false_type{};
23866: template <> struct is_destructible<void volatile> : public false_type{};
23866: template <> struct is_destructible<void const volatile> : public false_type{};
23866: template <class T> struct is_destructible<T&> : public is_destructible<T>{};
23866:
23866: template <class T> struct is_destructible<T&&> : public is_destructible<T>{};
23866:
23866: template <class T, std::size_t N> struct is_destructible<T[N]> : public is_destructible<T>{};
23866: template <class T> struct is_destructible<T[]> : public is_destructible<T>{};
23866:
23866: }
23866: # 18 "/usr/include/boost/type_traits/is_constructible.hpp" 2 3 4
23866: # 1 "/usr/include/boost/type_traits/is_default_constructible.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/is_default_constructible.hpp" 3 4
23866: #define BOOST_TT_IS_DEFAULT_CONSTRUCTIBLE_HPP_INCLUDED
23866: # 29 "/usr/include/boost/type_traits/is_default_constructible.hpp" 3 4
23866: namespace boost{
23866:
23866: namespace detail{
23866:
23866: struct is_default_constructible_imp
23866: {
23866: template<typename _Tp, typename = decltype(_Tp())>
23866: static boost::type_traits::yes_type test(int);
23866:
23866: template<typename>
23866: static boost::type_traits::no_type test(...);
23866: };
23866: # 53 "/usr/include/boost/type_traits/is_default_constructible.hpp" 3 4
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class T> struct is_default_constructible : public integral_constant<bool, sizeof(boost::detail::is_default_constructible_imp::test<T>(0)) == sizeof(boost::type_traits::yes_type)>
23866: {
23866: static_assert(boost::is_complete<T>::value, "Arguments to is_default_constructible must be complete types");
23866: };
23866:
23866: template <class T, std::size_t N> struct is_default_constructible<T[N]> : public is_default_constructible<T>{};
23866: template <class T> struct is_default_constructible<T[]> : public is_default_constructible<T>{};
23866: template <class T> struct is_default_constructible<T&> : public integral_constant<bool, false>{};
23866:
23866:
23866:
23866:
23866: template <class T> struct is_default_constructible<T&&> : public integral_constant<bool, false>{};
23866:
23866: template <> struct is_default_constructible<void> : public integral_constant<bool, false>{};
23866: template <> struct is_default_constructible<void const> : public integral_constant<bool, false>{};
23866: template <> struct is_default_constructible<void volatile> : public integral_constant<bool, false>{};
23866: template <> struct is_default_constructible<void const volatile> : public integral_constant<bool, false>{};
23866: # 96 "/usr/include/boost/type_traits/is_default_constructible.hpp" 3 4
23866: }
23866: # 19 "/usr/include/boost/type_traits/is_constructible.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_TT_IS_CONSTRUCTIBLE_CONFORMING 1
23866:
23866: namespace boost{
23866:
23866: namespace detail{
23866:
23866: struct is_constructible_imp
23866: {
23866: template<typename T, typename ...TheArgs, typename = decltype(T(boost::declval<TheArgs>()...))>
23866: static boost::type_traits::yes_type test(int);
23866: template<typename, typename...>
23866: static boost::type_traits::no_type test(...);
23866:
23866: template<typename T, typename Arg, typename = decltype(::new T(boost::declval<Arg>()))>
23866: static boost::type_traits::yes_type test1(int);
23866: template<typename, typename>
23866: static boost::type_traits::no_type test1(...);
23866:
23866: template <typename T>
23866: static boost::type_traits::yes_type ref_test(T);
23866: template <typename T>
23866: static boost::type_traits::no_type ref_test(...);
23866: };
23866:
23866: }
23866:
23866: template <class T, class ...Args> struct is_constructible : public integral_constant<bool, sizeof(detail::is_constructible_imp::test<T, Args...>(0)) == sizeof(boost::type_traits::yes_type)>
23866: {
23866: static_assert(::boost::is_complete<T>::value, "The target type must be complete in order to test for constructibility");
23866: };
23866: template <class T, class Arg> struct is_constructible<T, Arg> : public integral_constant<bool, is_destructible<T>::value && sizeof(boost::detail::is_constructible_imp::test1<T, Arg>(0)) == sizeof(boost::type_traits::yes_type)>
23866: {
23866: static_assert(::boost::is_complete<T>::value, "The target type must be complete in order to test for constructibility");
23866: };
23866: template <class Ref, class Arg> struct is_constructible<Ref&, Arg> : public integral_constant<bool, sizeof(detail::is_constructible_imp::ref_test<Ref&>(boost::declval<Arg>())) == sizeof(boost::type_traits::yes_type)>{};
23866: template <class Ref, class Arg> struct is_constructible<Ref&&, Arg> : public integral_constant<bool, sizeof(detail::is_constructible_imp::ref_test<Ref&&>(boost::declval<Arg>())) == sizeof(boost::type_traits::yes_type)>{};
23866:
23866: template <> struct is_constructible<void> : public false_type{};
23866: template <> struct is_constructible<void const> : public false_type{};
23866: template <> struct is_constructible<void const volatile> : public false_type{};
23866: template <> struct is_constructible<void volatile> : public false_type{};
23866:
23866: template <class T> struct is_constructible<T> : public is_default_constructible<T>{};
23866: # 88 "/usr/include/boost/type_traits/is_constructible.hpp" 3 4
23866: }
23866: # 18 "/usr/include/boost/type_traits/is_copy_constructible.hpp" 2 3 4
23866:
23866:
23866:
23866: namespace boost {
23866:
23866: template <class T> struct is_copy_constructible : public boost::is_constructible<T, const T&>{};
23866:
23866: template <> struct is_copy_constructible<void> : public false_type{};
23866: template <> struct is_copy_constructible<void const> : public false_type{};
23866: template <> struct is_copy_constructible<void const volatile> : public false_type{};
23866: template <> struct is_copy_constructible<void volatile> : public false_type{};
23866:
23866: }
23866: # 19 "/usr/include/boost/type_traits/has_trivial_copy.hpp" 2 3 4
23866: #define BOOST_TT_TRIVIAL_CONSTRUCT_FIX && is_copy_constructible<T>::value
23866: # 29 "/usr/include/boost/type_traits/has_trivial_copy.hpp" 3 4
23866: namespace boost {
23866:
23866: template <typename T> struct has_trivial_copy
23866: : public integral_constant<bool,
23866:
23866: ((__has_trivial_copy(T) ) && !is_reference<T>::value) && is_copy_constructible<T>::value
23866:
23866:
23866:
23866: >{};
23866:
23866: template <typename T, std::size_t N> struct has_trivial_copy<T[N]> : public false_type{};
23866: template <typename T> struct has_trivial_copy<T[]> : public false_type{};
23866:
23866: template <typename T> struct has_trivial_copy<T volatile> : public false_type{};
23866:
23866: template <> struct has_trivial_copy<void> : public false_type{};
23866:
23866: template <> struct has_trivial_copy<void const> : public false_type{};
23866: template <> struct has_trivial_copy<void volatile> : public false_type{};
23866: template <> struct has_trivial_copy<void const volatile> : public false_type{};
23866:
23866:
23866: template <class T> struct has_trivial_copy<T&> : public false_type{};
23866:
23866: template <class T> struct has_trivial_copy<T&&> : public false_type{};
23866:
23866:
23866: template <class T> struct has_trivial_copy_constructor : public has_trivial_copy<T>{};
23866:
23866: #undef BOOST_TT_TRIVIAL_CONSTRUCT_FIX
23866:
23866: }
23866: # 23 "/usr/include/boost/function/function_base.hpp" 2 3 4
23866: # 1 "/usr/include/boost/type_traits/has_trivial_destructor.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/has_trivial_destructor.hpp" 3 4
23866: #define BOOST_TT_HAS_TRIVIAL_DESTRUCTOR_HPP_INCLUDED
23866: # 28 "/usr/include/boost/type_traits/has_trivial_destructor.hpp" 3 4
23866: namespace boost {
23866:
23866: template <typename T> struct has_trivial_destructor : public integral_constant<bool, (__has_trivial_destructor(T) && is_destructible<T>::value)>{};
23866: # 39 "/usr/include/boost/type_traits/has_trivial_destructor.hpp" 3 4
23866: template <> struct has_trivial_destructor<void> : public false_type{};
23866:
23866: template <> struct has_trivial_destructor<void const> : public false_type{};
23866: template <> struct has_trivial_destructor<void const volatile> : public false_type{};
23866: template <> struct has_trivial_destructor<void volatile> : public false_type{};
23866:
23866:
23866: }
23866: # 24 "/usr/include/boost/function/function_base.hpp" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/composite_traits.hpp" 1 3 4
23866: # 14 "/usr/include/boost/type_traits/composite_traits.hpp" 3 4
23866: #define BOOST_TT_COMPOSITE_TRAITS_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/is_union.hpp" 1 3 4
23866: # 12 "/usr/include/boost/type_traits/is_union.hpp" 3 4
23866: #define BOOST_TT_IS_UNION_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866: namespace boost {
23866:
23866:
23866: template <class T> struct is_union : public integral_constant<bool, __is_union(T)> {};
23866:
23866:
23866:
23866:
23866: template <class T> struct is_union<T const> : public is_union<T>{};
23866: template <class T> struct is_union<T volatile const> : public is_union<T>{};
23866: template <class T> struct is_union<T volatile> : public is_union<T>{};
23866:
23866: }
23866: # 23 "/usr/include/boost/type_traits/composite_traits.hpp" 2 3 4
23866: # 28 "/usr/include/boost/function/function_base.hpp" 2 3 4
23866: # 1 "/usr/include/boost/ref.hpp" 1 3 4
23866: # 10 "/usr/include/boost/ref.hpp" 3 4
23866: #define BOOST_REF_HPP
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/core/ref.hpp" 1 3 4
23866:
23866: #define BOOST_CORE_REF_HPP
23866: # 40 "/usr/include/boost/core/ref.hpp" 3 4
23866: namespace boost
23866: {
23866: # 60 "/usr/include/boost/core/ref.hpp" 3 4
23866: template<class T> class reference_wrapper
23866: {
23866: public:
23866:
23866:
23866:
23866: typedef T type;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline __attribute__ ((__always_inline__)) explicit reference_wrapper(T& t): t_(boost::addressof(t)) {}
23866: # 86 "/usr/include/boost/core/ref.hpp" 3 4
23866: reference_wrapper(T&& t) = delete;
23866: public:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline __attribute__ ((__always_inline__)) operator T& () const { return *t_; }
23866:
23866:
23866:
23866:
23866:
23866: inline __attribute__ ((__always_inline__)) T& get() const { return *t_; }
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline __attribute__ ((__always_inline__)) T* get_pointer() const { return t_; }
23866:
23866: private:
23866:
23866: T* t_;
23866: };
23866: # 122 "/usr/include/boost/core/ref.hpp" 3 4
23866: #define BOOST_REF_CONST const
23866: # 132 "/usr/include/boost/core/ref.hpp" 3 4
23866: template<class T> inline __attribute__ ((__always_inline__)) reference_wrapper<T> const ref( T & t )
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: return reference_wrapper<T>( t );
23866:
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<class T> inline __attribute__ ((__always_inline__)) reference_wrapper<T const> const cref( T const & t )
23866: {
23866: return reference_wrapper<T const>(t);
23866: }
23866:
23866: #undef BOOST_REF_CONST
23866: # 166 "/usr/include/boost/core/ref.hpp" 3 4
23866: #define BOOST_REF_DELETE = delete
23866: # 175 "/usr/include/boost/core/ref.hpp" 3 4
23866: template<class T> void ref(T const&&) = delete;
23866:
23866:
23866:
23866:
23866: template<class T> void cref(T const&&) = delete;
23866:
23866: #undef BOOST_REF_DELETE
23866: # 195 "/usr/include/boost/core/ref.hpp" 3 4
23866: template<typename T> struct is_reference_wrapper
23866: {
23866: static const bool value = false;
23866: };
23866:
23866:
23866:
23866:
23866: template<typename T> struct is_reference_wrapper< reference_wrapper<T> >
23866: {
23866: static const bool value = true;
23866: };
23866:
23866:
23866:
23866: template<typename T> struct is_reference_wrapper< reference_wrapper<T> const >
23866: {
23866: static const bool value = true;
23866: };
23866:
23866: template<typename T> struct is_reference_wrapper< reference_wrapper<T> volatile >
23866: {
23866: static const bool value = true;
23866: };
23866:
23866: template<typename T> struct is_reference_wrapper< reference_wrapper<T> const volatile >
23866: {
23866: static const bool value = true;
23866: };
23866: # 240 "/usr/include/boost/core/ref.hpp" 3 4
23866: template<typename T> struct unwrap_reference
23866: {
23866: typedef T type;
23866: };
23866:
23866:
23866:
23866:
23866: template<typename T> struct unwrap_reference< reference_wrapper<T> >
23866: {
23866: typedef T type;
23866: };
23866:
23866:
23866:
23866: template<typename T> struct unwrap_reference< reference_wrapper<T> const >
23866: {
23866: typedef T type;
23866: };
23866:
23866: template<typename T> struct unwrap_reference< reference_wrapper<T> volatile >
23866: {
23866: typedef T type;
23866: };
23866:
23866: template<typename T> struct unwrap_reference< reference_wrapper<T> const volatile >
23866: {
23866: typedef T type;
23866: };
23866: # 282 "/usr/include/boost/core/ref.hpp" 3 4
23866: template<class T> inline __attribute__ ((__always_inline__)) typename unwrap_reference<T>::type& unwrap_ref( T & t )
23866: {
23866: return t;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<class T> inline __attribute__ ((__always_inline__)) T* get_pointer( reference_wrapper<T> const & r )
23866: {
23866: return r.get_pointer();
23866: }
23866:
23866:
23866:
23866:
23866: }
23866: # 16 "/usr/include/boost/ref.hpp" 2 3 4
23866: # 29 "/usr/include/boost/function/function_base.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/alignment_of.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/alignment_of.hpp" 3 4
23866: #define BOOST_TT_ALIGNMENT_OF_HPP_INCLUDED
23866: # 26 "/usr/include/boost/type_traits/alignment_of.hpp" 3 4
23866: namespace boost {
23866:
23866: template <typename T> struct alignment_of;
23866:
23866:
23866: namespace detail {
23866:
23866:
23866:
23866:
23866:
23866: template <typename T>
23866: struct alignment_of_hack
23866: {
23866: char c;
23866: T t;
23866: alignment_of_hack();
23866: };
23866:
23866:
23866:
23866:
23866: template <unsigned A, unsigned S>
23866: struct alignment_logic
23866: {
23866: static const std::size_t value = A < S ? A : S;
23866: };
23866:
23866:
23866: template< typename T >
23866: struct alignment_of_impl
23866: {
23866: # 70 "/usr/include/boost/type_traits/alignment_of.hpp" 3 4
23866: static const std::size_t value = (::boost::detail::alignment_logic< sizeof(::boost::detail::alignment_of_hack<T>) - sizeof(T), sizeof(T) >::value)
23866:
23866:
23866:
23866: ;
23866: # 84 "/usr/include/boost/type_traits/alignment_of.hpp" 3 4
23866: };
23866:
23866: }
23866:
23866: template <class T> struct alignment_of : public integral_constant<std::size_t, ::boost::detail::alignment_of_impl<T>::value>{};
23866:
23866:
23866:
23866: template <typename T> struct alignment_of<T&> : public alignment_of<T*>{};
23866: # 102 "/usr/include/boost/type_traits/alignment_of.hpp" 3 4
23866: template<> struct alignment_of<void> : integral_constant<std::size_t, 0>{};
23866:
23866: template<> struct alignment_of<void const> : integral_constant<std::size_t, 0>{};
23866: template<> struct alignment_of<void const volatile> : integral_constant<std::size_t, 0>{};
23866: template<> struct alignment_of<void volatile> : integral_constant<std::size_t, 0>{};
23866:
23866:
23866: }
23866: # 32 "/usr/include/boost/function/function_base.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/type_traits/enable_if.hpp" 1 3 4
23866: # 16 "/usr/include/boost/type_traits/enable_if.hpp" 3 4
23866: #define BOOST_TT_ENABLE_IF_HPP_INCLUDED
23866:
23866:
23866:
23866: namespace boost {
23866:
23866: template<bool B, class T = void>
23866: struct enable_if_ {
23866: typedef T type;
23866: };
23866:
23866: template<class T>
23866: struct enable_if_<false, T> { };
23866:
23866:
23866: template<bool B, class T = void>
23866: using enable_if_t = typename enable_if_<B, T>::type;
23866:
23866:
23866: }
23866: # 34 "/usr/include/boost/function/function_base.hpp" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/function_equal.hpp" 1 3 4
23866: # 11 "/usr/include/boost/function_equal.hpp" 3 4
23866: #define BOOST_FUNCTION_EQUAL_HPP
23866:
23866: namespace boost {
23866:
23866: template<typename F, typename G>
23866: bool function_equal_impl(const F& f, const G& g, long)
23866: { return f == g; }
23866:
23866:
23866:
23866:
23866: template<typename F, typename G>
23866: bool function_equal(const F& f, const G& g)
23866: { return function_equal_impl(f, g, 0); }
23866:
23866: }
23866: # 38 "/usr/include/boost/function/function_base.hpp" 2 3 4
23866: # 1 "/usr/include/boost/function/function_fwd.hpp" 1 3 4
23866: # 10 "/usr/include/boost/function/function_fwd.hpp" 3 4
23866: #define BOOST_FUNCTION_FWD_HPP
23866: # 27 "/usr/include/boost/function/function_fwd.hpp" 3 4
23866: namespace boost {
23866: class bad_function_call;
23866:
23866:
23866:
23866: template<typename Signature> class function;
23866:
23866: template<typename Signature>
23866: inline void swap(function<Signature>& f1, function<Signature>& f2)
23866: {
23866: f1.swap(f2);
23866: }
23866:
23866:
23866:
23866: template<typename R> class function0;
23866: template<typename R, typename T1> class function1;
23866: template<typename R, typename T1, typename T2> class function2;
23866: template<typename R, typename T1, typename T2, typename T3> class function3;
23866: template<typename R, typename T1, typename T2, typename T3, typename T4>
23866: class function4;
23866: template<typename R, typename T1, typename T2, typename T3, typename T4,
23866: typename T5>
23866: class function5;
23866: template<typename R, typename T1, typename T2, typename T3, typename T4,
23866: typename T5, typename T6>
23866: class function6;
23866: template<typename R, typename T1, typename T2, typename T3, typename T4,
23866: typename T5, typename T6, typename T7>
23866: class function7;
23866: template<typename R, typename T1, typename T2, typename T3, typename T4,
23866: typename T5, typename T6, typename T7, typename T8>
23866: class function8;
23866: template<typename R, typename T1, typename T2, typename T3, typename T4,
23866: typename T5, typename T6, typename T7, typename T8, typename T9>
23866: class function9;
23866: template<typename R, typename T1, typename T2, typename T3, typename T4,
23866: typename T5, typename T6, typename T7, typename T8, typename T9,
23866: typename T10>
23866: class function10;
23866: }
23866: # 39 "/usr/include/boost/function/function_base.hpp" 2 3 4
23866: # 49 "/usr/include/boost/function/function_base.hpp" 3 4
23866: #define BOOST_FUNCTION_TARGET_FIX(x)
23866:
23866:
23866: #define BOOST_FUNCTION_ENABLE_IF_NOT_INTEGRAL(Functor,Type) typename ::boost::enable_if_< !(::boost::is_integral<Functor>::value), Type>::type
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace detail {
23866: namespace function {
23866: class X;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: union function_buffer_members
23866: {
23866:
23866: typedef void* obj_ptr_t;
23866: mutable obj_ptr_t obj_ptr;
23866:
23866:
23866: struct type_t {
23866:
23866: const boost::typeindex::type_info* type;
23866:
23866:
23866: bool const_qualified;
23866:
23866: bool volatile_qualified;
23866: } type;
23866:
23866:
23866: typedef void (*func_ptr_t)();
23866: mutable func_ptr_t func_ptr;
23866:
23866:
23866: struct bound_memfunc_ptr_t {
23866: void (X::*memfunc_ptr)(int);
23866: void* obj_ptr;
23866: } bound_memfunc_ptr;
23866:
23866:
23866:
23866: struct obj_ref_t {
23866: mutable void* obj_ptr;
23866: bool is_const_qualified;
23866: bool is_volatile_qualified;
23866: } obj_ref;
23866: };
23866:
23866: union __attribute__((__visibility__("default"))) function_buffer
23866: {
23866:
23866: mutable function_buffer_members members;
23866:
23866:
23866: mutable char data[sizeof(function_buffer_members)];
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: struct unusable
23866: {
23866: unusable() {}
23866: template<typename T> unusable(const T&) {}
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template<typename T> struct function_return_type { typedef T type; };
23866:
23866: template<>
23866: struct function_return_type<void>
23866: {
23866: typedef unusable type;
23866: };
23866:
23866:
23866: enum functor_manager_operation_type {
23866: clone_functor_tag,
23866: move_functor_tag,
23866: destroy_functor_tag,
23866: check_functor_type_tag,
23866: get_functor_type_tag
23866: };
23866:
23866:
23866: struct function_ptr_tag {};
23866: struct function_obj_tag {};
23866: struct member_ptr_tag {};
23866: struct function_obj_ref_tag {};
23866:
23866: template<typename F>
23866: class get_function_tag
23866: {
23866: typedef typename conditional<(is_pointer<F>::value),
23866: function_ptr_tag,
23866: function_obj_tag>::type ptr_or_obj_tag;
23866:
23866: typedef typename conditional<(is_member_pointer<F>::value),
23866: member_ptr_tag,
23866: ptr_or_obj_tag>::type ptr_or_obj_or_mem_tag;
23866:
23866: typedef typename conditional<(is_reference_wrapper<F>::value),
23866: function_obj_ref_tag,
23866: ptr_or_obj_or_mem_tag>::type or_ref_tag;
23866:
23866: public:
23866: typedef or_ref_tag type;
23866: };
23866:
23866:
23866:
23866: template<typename F>
23866: struct reference_manager
23866: {
23866: static inline void
23866: manage(const function_buffer& in_buffer, function_buffer& out_buffer,
23866: functor_manager_operation_type op)
23866: {
23866: switch (op) {
23866: case clone_functor_tag:
23866: out_buffer.members.obj_ref = in_buffer.members.obj_ref;
23866: return;
23866:
23866: case move_functor_tag:
23866: out_buffer.members.obj_ref = in_buffer.members.obj_ref;
23866: in_buffer.members.obj_ref.obj_ptr = 0;
23866: return;
23866:
23866: case destroy_functor_tag:
23866: out_buffer.members.obj_ref.obj_ptr = 0;
23866: return;
23866:
23866: case check_functor_type_tag:
23866: {
23866:
23866:
23866: if (*out_buffer.members.type.type == boost::typeindex::type_id<F>()
23866: && (!in_buffer.members.obj_ref.is_const_qualified
23866: || out_buffer.members.type.const_qualified)
23866: && (!in_buffer.members.obj_ref.is_volatile_qualified
23866: || out_buffer.members.type.volatile_qualified))
23866: out_buffer.members.obj_ptr = in_buffer.members.obj_ref.obj_ptr;
23866: else
23866: out_buffer.members.obj_ptr = 0;
23866: }
23866: return;
23866:
23866: case get_functor_type_tag:
23866: out_buffer.members.type.type = &boost::typeindex::type_id<F>().type_info();
23866: out_buffer.members.type.const_qualified = in_buffer.members.obj_ref.is_const_qualified;
23866: out_buffer.members.type.volatile_qualified = in_buffer.members.obj_ref.is_volatile_qualified;
23866: return;
23866: }
23866: }
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template<typename F>
23866: struct function_allows_small_object_optimization
23866: {
23866: static const bool value = ((sizeof(F) <= sizeof(function_buffer) && (alignment_of<function_buffer>::value % alignment_of<F>::value == 0)))
23866:
23866:
23866:
23866: ;
23866: };
23866:
23866: template <typename F,typename A>
23866: struct functor_wrapper: public F, public A
23866: {
23866: functor_wrapper( F f, A a ):
23866: F(f),
23866: A(a)
23866: {
23866: }
23866:
23866: functor_wrapper(const functor_wrapper& f) :
23866: F(static_cast<const F&>(f)),
23866: A(static_cast<const A&>(f))
23866: {
23866: }
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template<typename Functor>
23866: struct functor_manager_common
23866: {
23866: typedef Functor functor_type;
23866:
23866:
23866: static inline void
23866: manage_ptr(const function_buffer& in_buffer, function_buffer& out_buffer,
23866: functor_manager_operation_type op)
23866: {
23866: if (op == clone_functor_tag)
23866: out_buffer.members.func_ptr = in_buffer.members.func_ptr;
23866: else if (op == move_functor_tag) {
23866: out_buffer.members.func_ptr = in_buffer.members.func_ptr;
23866: in_buffer.members.func_ptr = 0;
23866: } else if (op == destroy_functor_tag)
23866: out_buffer.members.func_ptr = 0;
23866: else if (op == check_functor_type_tag) {
23866: if (*out_buffer.members.type.type == boost::typeindex::type_id<Functor>())
23866: out_buffer.members.obj_ptr = &in_buffer.members.func_ptr;
23866: else
23866: out_buffer.members.obj_ptr = 0;
23866: } else {
23866: out_buffer.members.type.type = &boost::typeindex::type_id<Functor>().type_info();
23866: out_buffer.members.type.const_qualified = false;
23866: out_buffer.members.type.volatile_qualified = false;
23866: }
23866: }
23866:
23866:
23866: static inline void
23866: manage_small(const function_buffer& in_buffer, function_buffer& out_buffer,
23866: functor_manager_operation_type op)
23866: {
23866: if (op == clone_functor_tag || op == move_functor_tag) {
23866: const functor_type* in_functor =
23866: reinterpret_cast<const functor_type*>(in_buffer.data);
23866: new (reinterpret_cast<void*>(out_buffer.data)) functor_type(*in_functor);
23866:
23866: if (op == move_functor_tag) {
23866: functor_type* f = reinterpret_cast<functor_type*>(in_buffer.data);
23866: (void)f;
23866: f->~Functor();
23866: }
23866: } else if (op == destroy_functor_tag) {
23866:
23866: functor_type* f = reinterpret_cast<functor_type*>(out_buffer.data);
23866: (void)f;
23866: f->~Functor();
23866: } else if (op == check_functor_type_tag) {
23866: if (*out_buffer.members.type.type == boost::typeindex::type_id<Functor>())
23866: out_buffer.members.obj_ptr = in_buffer.data;
23866: else
23866: out_buffer.members.obj_ptr = 0;
23866: } else {
23866: out_buffer.members.type.type = &boost::typeindex::type_id<Functor>().type_info();
23866: out_buffer.members.type.const_qualified = false;
23866: out_buffer.members.type.volatile_qualified = false;
23866: }
23866: }
23866: };
23866:
23866: template<typename Functor>
23866: struct functor_manager
23866: {
23866: private:
23866: typedef Functor functor_type;
23866:
23866:
23866: static inline void
23866: manager(const function_buffer& in_buffer, function_buffer& out_buffer,
23866: functor_manager_operation_type op, function_ptr_tag)
23866: {
23866: functor_manager_common<Functor>::manage_ptr(in_buffer,out_buffer,op);
23866: }
23866:
23866:
23866: static inline void
23866: manager(const function_buffer& in_buffer, function_buffer& out_buffer,
23866: functor_manager_operation_type op, true_type)
23866: {
23866: functor_manager_common<Functor>::manage_small(in_buffer,out_buffer,op);
23866: }
23866:
23866:
23866: static inline void
23866: manager(const function_buffer& in_buffer, function_buffer& out_buffer,
23866: functor_manager_operation_type op, false_type)
23866: {
23866: if (op == clone_functor_tag) {
23866:
23866:
23866:
23866:
23866:
23866: const functor_type* f =
23866: static_cast<const functor_type*>(in_buffer.members.obj_ptr);
23866: functor_type* new_f = new functor_type(*f);
23866: out_buffer.members.obj_ptr = new_f;
23866: } else if (op == move_functor_tag) {
23866: out_buffer.members.obj_ptr = in_buffer.members.obj_ptr;
23866: in_buffer.members.obj_ptr = 0;
23866: } else if (op == destroy_functor_tag) {
23866:
23866: functor_type* f =
23866: static_cast<functor_type*>(out_buffer.members.obj_ptr);
23866: delete f;
23866: out_buffer.members.obj_ptr = 0;
23866: } else if (op == check_functor_type_tag) {
23866: if (*out_buffer.members.type.type == boost::typeindex::type_id<Functor>())
23866: out_buffer.members.obj_ptr = in_buffer.members.obj_ptr;
23866: else
23866: out_buffer.members.obj_ptr = 0;
23866: } else {
23866: out_buffer.members.type.type = &boost::typeindex::type_id<Functor>().type_info();
23866: out_buffer.members.type.const_qualified = false;
23866: out_buffer.members.type.volatile_qualified = false;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866: static inline void
23866: manager(const function_buffer& in_buffer, function_buffer& out_buffer,
23866: functor_manager_operation_type op, function_obj_tag)
23866: {
23866: manager(in_buffer, out_buffer, op,
23866: integral_constant<bool, (function_allows_small_object_optimization<functor_type>::value)>());
23866: }
23866:
23866:
23866: static inline void
23866: manager(const function_buffer& in_buffer, function_buffer& out_buffer,
23866: functor_manager_operation_type op, member_ptr_tag)
23866: {
23866: manager(in_buffer, out_buffer, op, true_type());
23866: }
23866:
23866: public:
23866:
23866:
23866: static inline void
23866: manage(const function_buffer& in_buffer, function_buffer& out_buffer,
23866: functor_manager_operation_type op)
23866: {
23866: typedef typename get_function_tag<functor_type>::type tag_type;
23866: if (op == get_functor_type_tag) {
23866: out_buffer.members.type.type = &boost::typeindex::type_id<functor_type>().type_info();
23866: out_buffer.members.type.const_qualified = false;
23866: out_buffer.members.type.volatile_qualified = false;
23866: } else {
23866: manager(in_buffer, out_buffer, op, tag_type());
23866: }
23866: }
23866: };
23866:
23866: template<typename Functor, typename Allocator>
23866: struct functor_manager_a
23866: {
23866: private:
23866: typedef Functor functor_type;
23866:
23866:
23866: static inline void
23866: manager(const function_buffer& in_buffer, function_buffer& out_buffer,
23866: functor_manager_operation_type op, function_ptr_tag)
23866: {
23866: functor_manager_common<Functor>::manage_ptr(in_buffer,out_buffer,op);
23866: }
23866:
23866:
23866: static inline void
23866: manager(const function_buffer& in_buffer, function_buffer& out_buffer,
23866: functor_manager_operation_type op, true_type)
23866: {
23866: functor_manager_common<Functor>::manage_small(in_buffer,out_buffer,op);
23866: }
23866:
23866:
23866: static inline void
23866: manager(const function_buffer& in_buffer, function_buffer& out_buffer,
23866: functor_manager_operation_type op, false_type)
23866: {
23866: typedef functor_wrapper<Functor,Allocator> functor_wrapper_type;
23866:
23866:
23866:
23866:
23866:
23866: using wrapper_allocator_type = typename std::allocator_traits<Allocator>::template rebind_alloc<functor_wrapper_type>;
23866: using wrapper_allocator_pointer_type = typename std::allocator_traits<wrapper_allocator_type>::pointer;
23866:
23866:
23866: if (op == clone_functor_tag) {
23866:
23866:
23866:
23866: const functor_wrapper_type* f =
23866: static_cast<const functor_wrapper_type*>(in_buffer.members.obj_ptr);
23866: wrapper_allocator_type wrapper_allocator(static_cast<Allocator const &>(*f));
23866: wrapper_allocator_pointer_type copy = wrapper_allocator.allocate(1);
23866:
23866:
23866:
23866: std::allocator_traits<wrapper_allocator_type>::construct(wrapper_allocator, copy, *f);
23866:
23866:
23866:
23866: functor_wrapper_type* new_f = static_cast<functor_wrapper_type*>(copy);
23866: out_buffer.members.obj_ptr = new_f;
23866: } else if (op == move_functor_tag) {
23866: out_buffer.members.obj_ptr = in_buffer.members.obj_ptr;
23866: in_buffer.members.obj_ptr = 0;
23866: } else if (op == destroy_functor_tag) {
23866:
23866: functor_wrapper_type* victim =
23866: static_cast<functor_wrapper_type*>(in_buffer.members.obj_ptr);
23866: wrapper_allocator_type wrapper_allocator(static_cast<Allocator const &>(*victim));
23866:
23866:
23866:
23866: std::allocator_traits<wrapper_allocator_type>::destroy(wrapper_allocator, victim);
23866:
23866: wrapper_allocator.deallocate(victim,1);
23866: out_buffer.members.obj_ptr = 0;
23866: } else if (op == check_functor_type_tag) {
23866: if (*out_buffer.members.type.type == boost::typeindex::type_id<Functor>())
23866: out_buffer.members.obj_ptr = in_buffer.members.obj_ptr;
23866: else
23866: out_buffer.members.obj_ptr = 0;
23866: } else {
23866: out_buffer.members.type.type = &boost::typeindex::type_id<Functor>().type_info();
23866: out_buffer.members.type.const_qualified = false;
23866: out_buffer.members.type.volatile_qualified = false;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866: static inline void
23866: manager(const function_buffer& in_buffer, function_buffer& out_buffer,
23866: functor_manager_operation_type op, function_obj_tag)
23866: {
23866: manager(in_buffer, out_buffer, op,
23866: integral_constant<bool, (function_allows_small_object_optimization<functor_type>::value)>());
23866: }
23866:
23866: public:
23866:
23866:
23866: static inline void
23866: manage(const function_buffer& in_buffer, function_buffer& out_buffer,
23866: functor_manager_operation_type op)
23866: {
23866: typedef typename get_function_tag<functor_type>::type tag_type;
23866: if (op == get_functor_type_tag) {
23866: out_buffer.members.type.type = &boost::typeindex::type_id<functor_type>().type_info();
23866: out_buffer.members.type.const_qualified = false;
23866: out_buffer.members.type.volatile_qualified = false;
23866: } else {
23866: manager(in_buffer, out_buffer, op, tag_type());
23866: }
23866: }
23866: };
23866:
23866:
23866: struct useless_clear_type {};
23866: # 585 "/usr/include/boost/function/function_base.hpp" 3 4
23866: struct vtable_base
23866: {
23866: void (*manager)(const function_buffer& in_buffer,
23866: function_buffer& out_buffer,
23866: functor_manager_operation_type op);
23866: };
23866: }
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: class function_base
23866: {
23866: public:
23866: function_base() : vtable(0) { }
23866:
23866:
23866: bool empty() const { return !vtable; }
23866:
23866:
23866:
23866: const boost::typeindex::type_info& target_type() const
23866: {
23866: if (!vtable) return boost::typeindex::type_id<void>().type_info();
23866:
23866: detail::function::function_buffer type;
23866: get_vtable()->manager(functor, type, detail::function::get_functor_type_tag);
23866: return *type.members.type.type;
23866: }
23866:
23866: template<typename Functor>
23866: Functor* target()
23866: {
23866: if (!vtable) return 0;
23866:
23866: detail::function::function_buffer type_result;
23866: type_result.members.type.type = &boost::typeindex::type_id<Functor>().type_info();
23866: type_result.members.type.const_qualified = is_const<Functor>::value;
23866: type_result.members.type.volatile_qualified = is_volatile<Functor>::value;
23866: get_vtable()->manager(functor, type_result,
23866: detail::function::check_functor_type_tag);
23866: return static_cast<Functor*>(type_result.members.obj_ptr);
23866: }
23866:
23866: template<typename Functor>
23866: const Functor* target() const
23866: {
23866: if (!vtable) return 0;
23866:
23866: detail::function::function_buffer type_result;
23866: type_result.members.type.type = &boost::typeindex::type_id<Functor>().type_info();
23866: type_result.members.type.const_qualified = true;
23866: type_result.members.type.volatile_qualified = is_volatile<Functor>::value;
23866: get_vtable()->manager(functor, type_result,
23866: detail::function::check_functor_type_tag);
23866:
23866:
23866: return static_cast<const Functor*>(type_result.members.obj_ptr);
23866: }
23866:
23866: template<typename F>
23866: bool contains(const F& f) const
23866: {
23866: if (const F* fp = this->template target<F>())
23866: {
23866: return function_equal(*fp, f);
23866: } else {
23866: return false;
23866: }
23866: }
23866: # 683 "/usr/include/boost/function/function_base.hpp" 3 4
23866: public:
23866: detail::function::vtable_base* get_vtable() const {
23866: return reinterpret_cast<detail::function::vtable_base*>(
23866: reinterpret_cast<std::size_t>(vtable) & ~static_cast<std::size_t>(0x01));
23866: }
23866:
23866: bool has_trivial_copy_and_destroy() const {
23866: return reinterpret_cast<std::size_t>(vtable) & 0x01;
23866: }
23866:
23866: detail::function::vtable_base* vtable;
23866: mutable detail::function::function_buffer functor;
23866: };
23866: # 705 "/usr/include/boost/function/function_base.hpp" 3 4
23866: class __attribute__((__visibility__("default"))) bad_function_call : public std::runtime_error
23866: {
23866: public:
23866: bad_function_call() : std::runtime_error("call to empty boost::function") {}
23866: };
23866:
23866:
23866:
23866:
23866:
23866: inline bool operator==(const function_base& f,
23866: detail::function::useless_clear_type*)
23866: {
23866: return f.empty();
23866: }
23866:
23866: inline bool operator!=(const function_base& f,
23866: detail::function::useless_clear_type*)
23866: {
23866: return !f.empty();
23866: }
23866:
23866: inline bool operator==(detail::function::useless_clear_type*,
23866: const function_base& f)
23866: {
23866: return f.empty();
23866: }
23866:
23866: inline bool operator!=(detail::function::useless_clear_type*,
23866: const function_base& f)
23866: {
23866: return !f.empty();
23866: }
23866: # 775 "/usr/include/boost/function/function_base.hpp" 3 4
23866: template<typename Functor>
23866: typename ::boost::enable_if_< !(::boost::is_integral<Functor>::value), bool>::type
23866: operator==(const function_base& f, Functor g)
23866: {
23866: if (const Functor* fp = f.template target<Functor>())
23866: return function_equal(*fp, g);
23866: else return false;
23866: }
23866:
23866: template<typename Functor>
23866: typename ::boost::enable_if_< !(::boost::is_integral<Functor>::value), bool>::type
23866: operator==(Functor g, const function_base& f)
23866: {
23866: if (const Functor* fp = f.template target<Functor>())
23866: return function_equal(g, *fp);
23866: else return false;
23866: }
23866:
23866: template<typename Functor>
23866: typename ::boost::enable_if_< !(::boost::is_integral<Functor>::value), bool>::type
23866: operator!=(const function_base& f, Functor g)
23866: {
23866: if (const Functor* fp = f.template target<Functor>())
23866: return !function_equal(*fp, g);
23866: else return true;
23866: }
23866:
23866: template<typename Functor>
23866: typename ::boost::enable_if_< !(::boost::is_integral<Functor>::value), bool>::type
23866: operator!=(Functor g, const function_base& f)
23866: {
23866: if (const Functor* fp = f.template target<Functor>())
23866: return !function_equal(g, *fp);
23866: else return true;
23866: }
23866:
23866:
23866: template<typename Functor>
23866: typename ::boost::enable_if_< !(::boost::is_integral<Functor>::value), bool>::type
23866: operator==(const function_base& f, reference_wrapper<Functor> g)
23866: {
23866: if (const Functor* fp = f.template target<Functor>())
23866: return fp == g.get_pointer();
23866: else return false;
23866: }
23866:
23866: template<typename Functor>
23866: typename ::boost::enable_if_< !(::boost::is_integral<Functor>::value), bool>::type
23866: operator==(reference_wrapper<Functor> g, const function_base& f)
23866: {
23866: if (const Functor* fp = f.template target<Functor>())
23866: return g.get_pointer() == fp;
23866: else return false;
23866: }
23866:
23866: template<typename Functor>
23866: typename ::boost::enable_if_< !(::boost::is_integral<Functor>::value), bool>::type
23866: operator!=(const function_base& f, reference_wrapper<Functor> g)
23866: {
23866: if (const Functor* fp = f.template target<Functor>())
23866: return fp != g.get_pointer();
23866: else return true;
23866: }
23866:
23866: template<typename Functor>
23866: typename ::boost::enable_if_< !(::boost::is_integral<Functor>::value), bool>::type
23866: operator!=(reference_wrapper<Functor> g, const function_base& f)
23866: {
23866: if (const Functor* fp = f.template target<Functor>())
23866: return g.get_pointer() != fp;
23866: else return true;
23866: }
23866:
23866:
23866:
23866: namespace detail {
23866: namespace function {
23866: inline bool has_empty_target(const function_base* f)
23866: {
23866: return f->empty();
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline bool has_empty_target(...)
23866: {
23866: return false;
23866: }
23866:
23866: }
23866: }
23866: }
23866:
23866: #undef BOOST_FUNCTION_ENABLE_IF_NOT_INTEGRAL
23866: # 18 "/usr/include/boost/function/detail/prologue.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mem_fn.hpp" 1 3 4
23866:
23866: #define BOOST_MEM_FN_HPP_INCLUDED
23866: # 22 "/usr/include/boost/mem_fn.hpp" 3 4
23866: # 1 "/usr/include/boost/bind/mem_fn.hpp" 1 3 4
23866:
23866: #define BOOST_BIND_MEM_FN_HPP_INCLUDED
23866: # 25 "/usr/include/boost/bind/mem_fn.hpp" 3 4
23866: # 1 "/usr/include/boost/get_pointer.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866: #define GET_POINTER_DWA20021219_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/config/no_tr1/memory.hpp" 1 3 4
23866: # 14 "/usr/include/boost/config/no_tr1/memory.hpp" 3 4
23866: #define BOOST_CONFIG_MEMORY
23866:
23866:
23866: #define BOOST_TR1_NO_RECURSION
23866: #define BOOST_CONFIG_NO_MEMORY_RECURSION
23866:
23866:
23866:
23866:
23866:
23866: #undef BOOST_TR1_NO_RECURSION
23866: #undef BOOST_CONFIG_NO_MEMORY_RECURSION
23866: # 15 "/usr/include/boost/get_pointer.hpp" 2 3 4
23866:
23866: namespace boost {
23866:
23866:
23866:
23866: template<class T> T * get_pointer(T * p)
23866: {
23866: return p;
23866: }
23866: # 32 "/usr/include/boost/get_pointer.hpp" 3 4
23866: #define BOOST_CORE_DETAIL_DISABLE_LIBSTDCXX_DEPRECATED_WARNINGS
23866: # 43 "/usr/include/boost/get_pointer.hpp" 3 4
23866: #pragma GCC diagnostic push
23866: #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
23866: #define BOOST_CORE_DETAIL_DISABLED_DEPRECATED_WARNINGS
23866:
23866:
23866: template<class T> T * get_pointer(std::auto_ptr<T> const& p)
23866: {
23866: return p.get();
23866: }
23866:
23866:
23866: #pragma GCC diagnostic pop
23866: #undef BOOST_CORE_DETAIL_DISABLE_LIBSTDCXX_DEPRECATED_WARNINGS
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<class T> T * get_pointer( std::unique_ptr<T> const& p )
23866: {
23866: return p.get();
23866: }
23866:
23866: template<class T> T * get_pointer( std::shared_ptr<T> const& p )
23866: {
23866: return p.get();
23866: }
23866:
23866:
23866:
23866: }
23866: # 26 "/usr/include/boost/bind/mem_fn.hpp" 2 3 4
23866:
23866:
23866: namespace boost
23866: {
23866: # 204 "/usr/include/boost/bind/mem_fn.hpp" 3 4
23866: #define BOOST_MEM_FN_CLASS_F
23866: #define BOOST_MEM_FN_TYPEDEF(X) typedef X;
23866:
23866: namespace _mfi
23866: {
23866:
23866: #define BOOST_MEM_FN_RETURN return
23866:
23866: #define BOOST_MEM_FN_NAME(X) X
23866: #define BOOST_MEM_FN_CC
23866:
23866: # 1 "/usr/include/boost/bind/mem_fn_template.hpp" 1 3 4
23866: # 16 "/usr/include/boost/bind/mem_fn_template.hpp" 3 4
23866: #define BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
23866:
23866:
23866:
23866:
23866: template<class R, class T > class mf0
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866: typedef T * argument_type;
23866:
23866: private:
23866:
23866: typedef R ( T::*F) ();
23866: F f_;
23866:
23866: template<class U> R call(U & u, T const *) const
23866: {
23866: return (u.*f_)();
23866: }
23866:
23866: template<class U> R call(U & u, void const *) const
23866: {
23866: return (get_pointer(u)->*f_)();
23866: }
23866:
23866: public:
23866:
23866: explicit mf0(F f): f_(f) {}
23866:
23866: R operator()(T * p) const
23866: {
23866: return (p->*f_)();
23866: }
23866:
23866: template<class U> R operator()(U & u) const
23866: {
23866: U const * p = 0;
23866: return call(u, p);
23866: }
23866:
23866:
23866:
23866: template<class U> R operator()(U const & u) const
23866: {
23866: U const * p = 0;
23866: return call(u, p);
23866: }
23866:
23866:
23866:
23866: R operator()(T & t) const
23866: {
23866: return (t.*f_)();
23866: }
23866:
23866: bool operator==(mf0 const & rhs) const
23866: {
23866: return f_ == rhs.f_;
23866: }
23866:
23866: bool operator!=(mf0 const & rhs) const
23866: {
23866: return f_ != rhs.f_;
23866: }
23866: };
23866:
23866:
23866:
23866: template<class R, class T > class cmf0
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866: typedef T const * argument_type;
23866:
23866: private:
23866:
23866: typedef R ( T::*F) () const;
23866: F f_;
23866:
23866: template<class U> R call(U & u, T const *) const
23866: {
23866: return (u.*f_)();
23866: }
23866:
23866: template<class U> R call(U & u, void const *) const
23866: {
23866: return (get_pointer(u)->*f_)();
23866: }
23866:
23866: public:
23866:
23866: explicit cmf0(F f): f_(f) {}
23866:
23866: template<class U> R operator()(U const & u) const
23866: {
23866: U const * p = 0;
23866: return call(u, p);
23866: }
23866:
23866: R operator()(T const & t) const
23866: {
23866: return (t.*f_)();
23866: }
23866:
23866: bool operator==(cmf0 const & rhs) const
23866: {
23866: return f_ == rhs.f_;
23866: }
23866:
23866: bool operator!=(cmf0 const & rhs) const
23866: {
23866: return f_ != rhs.f_;
23866: }
23866: };
23866:
23866:
23866:
23866: template<class R, class T, class A1 > class mf1
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866: typedef T * first_argument_type;
23866: typedef A1 second_argument_type;
23866:
23866: private:
23866:
23866: typedef R ( T::*F) (A1);
23866: F f_;
23866:
23866: template<class U, class B1> R call(U & u, T const *, B1 & b1) const
23866: {
23866: return (u.*f_)(b1);
23866: }
23866:
23866: template<class U, class B1> R call(U & u, void const *, B1 & b1) const
23866: {
23866: return (get_pointer(u)->*f_)(b1);
23866: }
23866:
23866: public:
23866:
23866: explicit mf1(F f): f_(f) {}
23866:
23866: R operator()(T * p, A1 a1) const
23866: {
23866: return (p->*f_)(a1);
23866: }
23866:
23866: template<class U> R operator()(U & u, A1 a1) const
23866: {
23866: U const * p = 0;
23866: return call(u, p, a1);
23866: }
23866:
23866:
23866:
23866: template<class U> R operator()(U const & u, A1 a1) const
23866: {
23866: U const * p = 0;
23866: return call(u, p, a1);
23866: }
23866:
23866:
23866:
23866: R operator()(T & t, A1 a1) const
23866: {
23866: return (t.*f_)(a1);
23866: }
23866:
23866: bool operator==(mf1 const & rhs) const
23866: {
23866: return f_ == rhs.f_;
23866: }
23866:
23866: bool operator!=(mf1 const & rhs) const
23866: {
23866: return f_ != rhs.f_;
23866: }
23866: };
23866:
23866:
23866:
23866: template<class R, class T, class A1 > class cmf1
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866: typedef T const * first_argument_type;
23866: typedef A1 second_argument_type;
23866:
23866: private:
23866:
23866: typedef R ( T::*F) (A1) const;
23866: F f_;
23866:
23866: template<class U, class B1> R call(U & u, T const *, B1 & b1) const
23866: {
23866: return (u.*f_)(b1);
23866: }
23866:
23866: template<class U, class B1> R call(U & u, void const *, B1 & b1) const
23866: {
23866: return (get_pointer(u)->*f_)(b1);
23866: }
23866:
23866: public:
23866:
23866: explicit cmf1(F f): f_(f) {}
23866:
23866: template<class U> R operator()(U const & u, A1 a1) const
23866: {
23866: U const * p = 0;
23866: return call(u, p, a1);
23866: }
23866:
23866: R operator()(T const & t, A1 a1) const
23866: {
23866: return (t.*f_)(a1);
23866: }
23866:
23866: bool operator==(cmf1 const & rhs) const
23866: {
23866: return f_ == rhs.f_;
23866: }
23866:
23866: bool operator!=(cmf1 const & rhs) const
23866: {
23866: return f_ != rhs.f_;
23866: }
23866: };
23866:
23866:
23866:
23866: template<class R, class T, class A1, class A2 > class mf2
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866:
23866: private:
23866:
23866: typedef R ( T::*F) (A1, A2);
23866: F f_;
23866:
23866: template<class U, class B1, class B2> R call(U & u, T const *, B1 & b1, B2 & b2) const
23866: {
23866: return (u.*f_)(b1, b2);
23866: }
23866:
23866: template<class U, class B1, class B2> R call(U & u, void const *, B1 & b1, B2 & b2) const
23866: {
23866: return (get_pointer(u)->*f_)(b1, b2);
23866: }
23866:
23866: public:
23866:
23866: explicit mf2(F f): f_(f) {}
23866:
23866: R operator()(T * p, A1 a1, A2 a2) const
23866: {
23866: return (p->*f_)(a1, a2);
23866: }
23866:
23866: template<class U> R operator()(U & u, A1 a1, A2 a2) const
23866: {
23866: U const * p = 0;
23866: return call(u, p, a1, a2);
23866: }
23866:
23866:
23866:
23866: template<class U> R operator()(U const & u, A1 a1, A2 a2) const
23866: {
23866: U const * p = 0;
23866: return call(u, p, a1, a2);
23866: }
23866:
23866:
23866:
23866: R operator()(T & t, A1 a1, A2 a2) const
23866: {
23866: return (t.*f_)(a1, a2);
23866: }
23866:
23866: bool operator==(mf2 const & rhs) const
23866: {
23866: return f_ == rhs.f_;
23866: }
23866:
23866: bool operator!=(mf2 const & rhs) const
23866: {
23866: return f_ != rhs.f_;
23866: }
23866: };
23866:
23866:
23866:
23866: template<class R, class T, class A1, class A2 > class cmf2
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866:
23866: private:
23866:
23866: typedef R ( T::*F) (A1, A2) const;
23866: F f_;
23866:
23866: template<class U, class B1, class B2> R call(U & u, T const *, B1 & b1, B2 & b2) const
23866: {
23866: return (u.*f_)(b1, b2);
23866: }
23866:
23866: template<class U, class B1, class B2> R call(U & u, void const *, B1 & b1, B2 & b2) const
23866: {
23866: return (get_pointer(u)->*f_)(b1, b2);
23866: }
23866:
23866: public:
23866:
23866: explicit cmf2(F f): f_(f) {}
23866:
23866: template<class U> R operator()(U const & u, A1 a1, A2 a2) const
23866: {
23866: U const * p = 0;
23866: return call(u, p, a1, a2);
23866: }
23866:
23866: R operator()(T const & t, A1 a1, A2 a2) const
23866: {
23866: return (t.*f_)(a1, a2);
23866: }
23866:
23866: bool operator==(cmf2 const & rhs) const
23866: {
23866: return f_ == rhs.f_;
23866: }
23866:
23866: bool operator!=(cmf2 const & rhs) const
23866: {
23866: return f_ != rhs.f_;
23866: }
23866: };
23866:
23866:
23866:
23866: template<class R, class T, class A1, class A2, class A3 > class mf3
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866:
23866: private:
23866:
23866: typedef R ( T::*F) (A1, A2, A3);
23866: F f_;
23866:
23866: template<class U, class B1, class B2, class B3> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3) const
23866: {
23866: return (u.*f_)(b1, b2, b3);
23866: }
23866:
23866: template<class U, class B1, class B2, class B3> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3) const
23866: {
23866: return (get_pointer(u)->*f_)(b1, b2, b3);
23866: }
23866:
23866: public:
23866:
23866: explicit mf3(F f): f_(f) {}
23866:
23866: R operator()(T * p, A1 a1, A2 a2, A3 a3) const
23866: {
23866: return (p->*f_)(a1, a2, a3);
23866: }
23866:
23866: template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3) const
23866: {
23866: U const * p = 0;
23866: return call(u, p, a1, a2, a3);
23866: }
23866:
23866:
23866:
23866: template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3) const
23866: {
23866: U const * p = 0;
23866: return call(u, p, a1, a2, a3);
23866: }
23866:
23866:
23866:
23866: R operator()(T & t, A1 a1, A2 a2, A3 a3) const
23866: {
23866: return (t.*f_)(a1, a2, a3);
23866: }
23866:
23866: bool operator==(mf3 const & rhs) const
23866: {
23866: return f_ == rhs.f_;
23866: }
23866:
23866: bool operator!=(mf3 const & rhs) const
23866: {
23866: return f_ != rhs.f_;
23866: }
23866: };
23866:
23866:
23866:
23866: template<class R, class T, class A1, class A2, class A3 > class cmf3
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866:
23866: private:
23866:
23866: typedef R ( T::*F) (A1, A2, A3) const;
23866: F f_;
23866:
23866: template<class U, class B1, class B2, class B3> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3) const
23866: {
23866: return (u.*f_)(b1, b2, b3);
23866: }
23866:
23866: template<class U, class B1, class B2, class B3> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3) const
23866: {
23866: return (get_pointer(u)->*f_)(b1, b2, b3);
23866: }
23866:
23866: public:
23866:
23866: explicit cmf3(F f): f_(f) {}
23866:
23866: template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3) const
23866: {
23866: U const * p = 0;
23866: return call(u, p, a1, a2, a3);
23866: }
23866:
23866: R operator()(T const & t, A1 a1, A2 a2, A3 a3) const
23866: {
23866: return (t.*f_)(a1, a2, a3);
23866: }
23866:
23866: bool operator==(cmf3 const & rhs) const
23866: {
23866: return f_ == rhs.f_;
23866: }
23866:
23866: bool operator!=(cmf3 const & rhs) const
23866: {
23866: return f_ != rhs.f_;
23866: }
23866: };
23866:
23866:
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4 > class mf4
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866:
23866: private:
23866:
23866: typedef R ( T::*F) (A1, A2, A3, A4);
23866: F f_;
23866:
23866: template<class U, class B1, class B2, class B3, class B4> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const
23866: {
23866: return (u.*f_)(b1, b2, b3, b4);
23866: }
23866:
23866: template<class U, class B1, class B2, class B3, class B4> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const
23866: {
23866: return (get_pointer(u)->*f_)(b1, b2, b3, b4);
23866: }
23866:
23866: public:
23866:
23866: explicit mf4(F f): f_(f) {}
23866:
23866: R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4) const
23866: {
23866: return (p->*f_)(a1, a2, a3, a4);
23866: }
23866:
23866: template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4) const
23866: {
23866: U const * p = 0;
23866: return call(u, p, a1, a2, a3, a4);
23866: }
23866:
23866:
23866:
23866: template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4) const
23866: {
23866: U const * p = 0;
23866: return call(u, p, a1, a2, a3, a4);
23866: }
23866:
23866:
23866:
23866: R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4) const
23866: {
23866: return (t.*f_)(a1, a2, a3, a4);
23866: }
23866:
23866: bool operator==(mf4 const & rhs) const
23866: {
23866: return f_ == rhs.f_;
23866: }
23866:
23866: bool operator!=(mf4 const & rhs) const
23866: {
23866: return f_ != rhs.f_;
23866: }
23866: };
23866:
23866:
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4 > class cmf4
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866:
23866: private:
23866:
23866: typedef R ( T::*F) (A1, A2, A3, A4) const;
23866: F f_;
23866:
23866: template<class U, class B1, class B2, class B3, class B4> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const
23866: {
23866: return (u.*f_)(b1, b2, b3, b4);
23866: }
23866:
23866: template<class U, class B1, class B2, class B3, class B4> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const
23866: {
23866: return (get_pointer(u)->*f_)(b1, b2, b3, b4);
23866: }
23866:
23866: public:
23866:
23866: explicit cmf4(F f): f_(f) {}
23866:
23866: template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4) const
23866: {
23866: U const * p = 0;
23866: return call(u, p, a1, a2, a3, a4);
23866: }
23866:
23866: R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4) const
23866: {
23866: return (t.*f_)(a1, a2, a3, a4);
23866: }
23866:
23866: bool operator==(cmf4 const & rhs) const
23866: {
23866: return f_ == rhs.f_;
23866: }
23866:
23866: bool operator!=(cmf4 const & rhs) const
23866: {
23866: return f_ != rhs.f_;
23866: }
23866: };
23866:
23866:
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4, class A5 > class mf5
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866:
23866: private:
23866:
23866: typedef R ( T::*F) (A1, A2, A3, A4, A5);
23866: F f_;
23866:
23866: template<class U, class B1, class B2, class B3, class B4, class B5> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const
23866: {
23866: return (u.*f_)(b1, b2, b3, b4, b5);
23866: }
23866:
23866: template<class U, class B1, class B2, class B3, class B4, class B5> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const
23866: {
23866: return (get_pointer(u)->*f_)(b1, b2, b3, b4, b5);
23866: }
23866:
23866: public:
23866:
23866: explicit mf5(F f): f_(f) {}
23866:
23866: R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
23866: {
23866: return (p->*f_)(a1, a2, a3, a4, a5);
23866: }
23866:
23866: template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
23866: {
23866: U const * p = 0;
23866: return call(u, p, a1, a2, a3, a4, a5);
23866: }
23866:
23866:
23866:
23866: template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
23866: {
23866: U const * p = 0;
23866: return call(u, p, a1, a2, a3, a4, a5);
23866: }
23866:
23866:
23866:
23866: R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
23866: {
23866: return (t.*f_)(a1, a2, a3, a4, a5);
23866: }
23866:
23866: bool operator==(mf5 const & rhs) const
23866: {
23866: return f_ == rhs.f_;
23866: }
23866:
23866: bool operator!=(mf5 const & rhs) const
23866: {
23866: return f_ != rhs.f_;
23866: }
23866: };
23866:
23866:
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4, class A5 > class cmf5
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866:
23866: private:
23866:
23866: typedef R ( T::*F) (A1, A2, A3, A4, A5) const;
23866: F f_;
23866:
23866: template<class U, class B1, class B2, class B3, class B4, class B5> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const
23866: {
23866: return (u.*f_)(b1, b2, b3, b4, b5);
23866: }
23866:
23866: template<class U, class B1, class B2, class B3, class B4, class B5> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const
23866: {
23866: return (get_pointer(u)->*f_)(b1, b2, b3, b4, b5);
23866: }
23866:
23866: public:
23866:
23866: explicit cmf5(F f): f_(f) {}
23866:
23866: template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
23866: {
23866: U const * p = 0;
23866: return call(u, p, a1, a2, a3, a4, a5);
23866: }
23866:
23866: R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
23866: {
23866: return (t.*f_)(a1, a2, a3, a4, a5);
23866: }
23866:
23866: bool operator==(cmf5 const & rhs) const
23866: {
23866: return f_ == rhs.f_;
23866: }
23866:
23866: bool operator!=(cmf5 const & rhs) const
23866: {
23866: return f_ != rhs.f_;
23866: }
23866: };
23866:
23866:
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6 > class mf6
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866:
23866: private:
23866:
23866: typedef R ( T::*F) (A1, A2, A3, A4, A5, A6);
23866: F f_;
23866:
23866: template<class U, class B1, class B2, class B3, class B4, class B5, class B6> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const
23866: {
23866: return (u.*f_)(b1, b2, b3, b4, b5, b6);
23866: }
23866:
23866: template<class U, class B1, class B2, class B3, class B4, class B5, class B6> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const
23866: {
23866: return (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6);
23866: }
23866:
23866: public:
23866:
23866: explicit mf6(F f): f_(f) {}
23866:
23866: R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
23866: {
23866: return (p->*f_)(a1, a2, a3, a4, a5, a6);
23866: }
23866:
23866: template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
23866: {
23866: U const * p = 0;
23866: return call(u, p, a1, a2, a3, a4, a5, a6);
23866: }
23866:
23866:
23866:
23866: template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
23866: {
23866: U const * p = 0;
23866: return call(u, p, a1, a2, a3, a4, a5, a6);
23866: }
23866:
23866:
23866:
23866: R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
23866: {
23866: return (t.*f_)(a1, a2, a3, a4, a5, a6);
23866: }
23866:
23866: bool operator==(mf6 const & rhs) const
23866: {
23866: return f_ == rhs.f_;
23866: }
23866:
23866: bool operator!=(mf6 const & rhs) const
23866: {
23866: return f_ != rhs.f_;
23866: }
23866: };
23866:
23866:
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6 > class cmf6
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866:
23866: private:
23866:
23866: typedef R ( T::*F) (A1, A2, A3, A4, A5, A6) const;
23866: F f_;
23866:
23866: template<class U, class B1, class B2, class B3, class B4, class B5, class B6> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const
23866: {
23866: return (u.*f_)(b1, b2, b3, b4, b5, b6);
23866: }
23866:
23866: template<class U, class B1, class B2, class B3, class B4, class B5, class B6> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const
23866: {
23866: return (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6);
23866: }
23866:
23866: public:
23866:
23866: explicit cmf6(F f): f_(f) {}
23866:
23866: template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
23866: {
23866: U const * p = 0;
23866: return call(u, p, a1, a2, a3, a4, a5, a6);
23866: }
23866:
23866: R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
23866: {
23866: return (t.*f_)(a1, a2, a3, a4, a5, a6);
23866: }
23866:
23866: bool operator==(cmf6 const & rhs) const
23866: {
23866: return f_ == rhs.f_;
23866: }
23866:
23866: bool operator!=(cmf6 const & rhs) const
23866: {
23866: return f_ != rhs.f_;
23866: }
23866: };
23866:
23866:
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7 > class mf7
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866:
23866: private:
23866:
23866: typedef R ( T::*F) (A1, A2, A3, A4, A5, A6, A7);
23866: F f_;
23866:
23866: template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const
23866: {
23866: return (u.*f_)(b1, b2, b3, b4, b5, b6, b7);
23866: }
23866:
23866: template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const
23866: {
23866: return (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7);
23866: }
23866:
23866: public:
23866:
23866: explicit mf7(F f): f_(f) {}
23866:
23866: R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
23866: {
23866: return (p->*f_)(a1, a2, a3, a4, a5, a6, a7);
23866: }
23866:
23866: template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
23866: {
23866: U const * p = 0;
23866: return call(u, p, a1, a2, a3, a4, a5, a6, a7);
23866: }
23866:
23866:
23866:
23866: template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
23866: {
23866: U const * p = 0;
23866: return call(u, p, a1, a2, a3, a4, a5, a6, a7);
23866: }
23866:
23866:
23866:
23866: R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
23866: {
23866: return (t.*f_)(a1, a2, a3, a4, a5, a6, a7);
23866: }
23866:
23866: bool operator==(mf7 const & rhs) const
23866: {
23866: return f_ == rhs.f_;
23866: }
23866:
23866: bool operator!=(mf7 const & rhs) const
23866: {
23866: return f_ != rhs.f_;
23866: }
23866: };
23866:
23866:
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7 > class cmf7
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866:
23866: private:
23866:
23866: typedef R ( T::*F) (A1, A2, A3, A4, A5, A6, A7) const;
23866: F f_;
23866:
23866: template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const
23866: {
23866: return (u.*f_)(b1, b2, b3, b4, b5, b6, b7);
23866: }
23866:
23866: template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const
23866: {
23866: return (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7);
23866: }
23866:
23866: public:
23866:
23866: explicit cmf7(F f): f_(f) {}
23866:
23866: template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
23866: {
23866: U const * p = 0;
23866: return call(u, p, a1, a2, a3, a4, a5, a6, a7);
23866: }
23866:
23866: R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
23866: {
23866: return (t.*f_)(a1, a2, a3, a4, a5, a6, a7);
23866: }
23866:
23866: bool operator==(cmf7 const & rhs) const
23866: {
23866: return f_ == rhs.f_;
23866: }
23866:
23866: bool operator!=(cmf7 const & rhs) const
23866: {
23866: return f_ != rhs.f_;
23866: }
23866: };
23866:
23866:
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8 > class mf8
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866:
23866: private:
23866:
23866: typedef R ( T::*F) (A1, A2, A3, A4, A5, A6, A7, A8);
23866: F f_;
23866:
23866: template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const
23866: {
23866: return (u.*f_)(b1, b2, b3, b4, b5, b6, b7, b8);
23866: }
23866:
23866: template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const
23866: {
23866: return (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7, b8);
23866: }
23866:
23866: public:
23866:
23866: explicit mf8(F f): f_(f) {}
23866:
23866: R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
23866: {
23866: return (p->*f_)(a1, a2, a3, a4, a5, a6, a7, a8);
23866: }
23866:
23866: template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
23866: {
23866: U const * p = 0;
23866: return call(u, p, a1, a2, a3, a4, a5, a6, a7, a8);
23866: }
23866:
23866:
23866:
23866: template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
23866: {
23866: U const * p = 0;
23866: return call(u, p, a1, a2, a3, a4, a5, a6, a7, a8);
23866: }
23866:
23866:
23866:
23866: R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
23866: {
23866: return (t.*f_)(a1, a2, a3, a4, a5, a6, a7, a8);
23866: }
23866:
23866: bool operator==(mf8 const & rhs) const
23866: {
23866: return f_ == rhs.f_;
23866: }
23866:
23866: bool operator!=(mf8 const & rhs) const
23866: {
23866: return f_ != rhs.f_;
23866: }
23866: };
23866:
23866:
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8 > class cmf8
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866:
23866: private:
23866:
23866: typedef R ( T::*F) (A1, A2, A3, A4, A5, A6, A7, A8) const;
23866: F f_;
23866:
23866: template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const
23866: {
23866: return (u.*f_)(b1, b2, b3, b4, b5, b6, b7, b8);
23866: }
23866:
23866: template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const
23866: {
23866: return (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7, b8);
23866: }
23866:
23866: public:
23866:
23866: explicit cmf8(F f): f_(f) {}
23866:
23866: R operator()(T const * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
23866: {
23866: return (p->*f_)(a1, a2, a3, a4, a5, a6, a7, a8);
23866: }
23866:
23866: template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
23866: {
23866: U const * p = 0;
23866: return call(u, p, a1, a2, a3, a4, a5, a6, a7, a8);
23866: }
23866:
23866: R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
23866: {
23866: return (t.*f_)(a1, a2, a3, a4, a5, a6, a7, a8);
23866: }
23866:
23866: bool operator==(cmf8 const & rhs) const
23866: {
23866: return f_ == rhs.f_;
23866: }
23866:
23866: bool operator!=(cmf8 const & rhs) const
23866: {
23866: return f_ != rhs.f_;
23866: }
23866: };
23866:
23866: #undef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
23866: # 216 "/usr/include/boost/bind/mem_fn.hpp" 2 3 4
23866:
23866: #undef BOOST_MEM_FN_CC
23866: #undef BOOST_MEM_FN_NAME
23866: # 256 "/usr/include/boost/bind/mem_fn.hpp" 3 4
23866: #undef BOOST_MEM_FN_RETURN
23866:
23866: }
23866:
23866: #undef BOOST_MEM_FN_CLASS_F
23866: #undef BOOST_MEM_FN_TYPEDEF
23866:
23866:
23866:
23866: #define BOOST_MEM_FN_NAME(X) X
23866: #define BOOST_MEM_FN_CC
23866: #define BOOST_MEM_FN_NOEXCEPT
23866:
23866: # 1 "/usr/include/boost/bind/mem_fn_cc.hpp" 1 3 4
23866: # 15 "/usr/include/boost/bind/mem_fn_cc.hpp" 3 4
23866: template<class R, class T> _mfi::mf0<R, T> mem_fn(R ( T::*f) () )
23866: {
23866: return _mfi::mf0<R, T>(f);
23866: }
23866:
23866: template<class R, class T> _mfi::cmf0<R, T> mem_fn(R ( T::*f) () const )
23866: {
23866: return _mfi::cmf0<R, T>(f);
23866: }
23866:
23866: template<class R, class T, class A1> _mfi::mf1<R, T, A1> mem_fn(R ( T::*f) (A1) )
23866: {
23866: return _mfi::mf1<R, T, A1>(f);
23866: }
23866:
23866: template<class R, class T, class A1> _mfi::cmf1<R, T, A1> mem_fn(R ( T::*f) (A1) const )
23866: {
23866: return _mfi::cmf1<R, T, A1>(f);
23866: }
23866:
23866: template<class R, class T, class A1, class A2> _mfi::mf2<R, T, A1, A2> mem_fn(R ( T::*f) (A1, A2) )
23866: {
23866: return _mfi::mf2<R, T, A1, A2>(f);
23866: }
23866:
23866: template<class R, class T, class A1, class A2> _mfi::cmf2<R, T, A1, A2> mem_fn(R ( T::*f) (A1, A2) const )
23866: {
23866: return _mfi::cmf2<R, T, A1, A2>(f);
23866: }
23866:
23866: template<class R, class T, class A1, class A2, class A3> _mfi::mf3<R, T, A1, A2, A3> mem_fn(R ( T::*f) (A1, A2, A3) )
23866: {
23866: return _mfi::mf3<R, T, A1, A2, A3>(f);
23866: }
23866:
23866: template<class R, class T, class A1, class A2, class A3> _mfi::cmf3<R, T, A1, A2, A3> mem_fn(R ( T::*f) (A1, A2, A3) const )
23866: {
23866: return _mfi::cmf3<R, T, A1, A2, A3>(f);
23866: }
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4> _mfi::mf4<R, T, A1, A2, A3, A4> mem_fn(R ( T::*f) (A1, A2, A3, A4) )
23866: {
23866: return _mfi::mf4<R, T, A1, A2, A3, A4>(f);
23866: }
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4> _mfi::cmf4<R, T, A1, A2, A3, A4> mem_fn(R ( T::*f) (A1, A2, A3, A4) const )
23866: {
23866: return _mfi::cmf4<R, T, A1, A2, A3, A4>(f);
23866: }
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4, class A5> _mfi::mf5<R, T, A1, A2, A3, A4, A5> mem_fn(R ( T::*f) (A1, A2, A3, A4, A5) )
23866: {
23866: return _mfi::mf5<R, T, A1, A2, A3, A4, A5>(f);
23866: }
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4, class A5> _mfi::cmf5<R, T, A1, A2, A3, A4, A5> mem_fn(R ( T::*f) (A1, A2, A3, A4, A5) const )
23866: {
23866: return _mfi::cmf5<R, T, A1, A2, A3, A4, A5>(f);
23866: }
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6> _mfi::mf6<R, T, A1, A2, A3, A4, A5, A6> mem_fn(R ( T::*f) (A1, A2, A3, A4, A5, A6) )
23866: {
23866: return _mfi::mf6<R, T, A1, A2, A3, A4, A5, A6>(f);
23866: }
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6> _mfi::cmf6<R, T, A1, A2, A3, A4, A5, A6> mem_fn(R ( T::*f) (A1, A2, A3, A4, A5, A6) const )
23866: {
23866: return _mfi::cmf6<R, T, A1, A2, A3, A4, A5, A6>(f);
23866: }
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7> _mfi::mf7<R, T, A1, A2, A3, A4, A5, A6, A7> mem_fn(R ( T::*f) (A1, A2, A3, A4, A5, A6, A7) )
23866: {
23866: return _mfi::mf7<R, T, A1, A2, A3, A4, A5, A6, A7>(f);
23866: }
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7> _mfi::cmf7<R, T, A1, A2, A3, A4, A5, A6, A7> mem_fn(R ( T::*f) (A1, A2, A3, A4, A5, A6, A7) const )
23866: {
23866: return _mfi::cmf7<R, T, A1, A2, A3, A4, A5, A6, A7>(f);
23866: }
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> _mfi::mf8<R, T, A1, A2, A3, A4, A5, A6, A7, A8> mem_fn(R ( T::*f) (A1, A2, A3, A4, A5, A6, A7, A8) )
23866: {
23866: return _mfi::mf8<R, T, A1, A2, A3, A4, A5, A6, A7, A8>(f);
23866: }
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> _mfi::cmf8<R, T, A1, A2, A3, A4, A5, A6, A7, A8> mem_fn(R ( T::*f) (A1, A2, A3, A4, A5, A6, A7, A8) const )
23866: {
23866: return _mfi::cmf8<R, T, A1, A2, A3, A4, A5, A6, A7, A8>(f);
23866: }
23866: # 270 "/usr/include/boost/bind/mem_fn.hpp" 2 3 4
23866:
23866:
23866: #undef BOOST_MEM_FN_NOEXCEPT
23866: #define BOOST_MEM_FN_NOEXCEPT noexcept
23866: # 1 "/usr/include/boost/bind/mem_fn_cc.hpp" 1 3 4
23866: # 15 "/usr/include/boost/bind/mem_fn_cc.hpp" 3 4
23866: template<class R, class T> _mfi::mf0<R, T> mem_fn(R ( T::*f) () noexcept)
23866: {
23866: return _mfi::mf0<R, T>(f);
23866: }
23866:
23866: template<class R, class T> _mfi::cmf0<R, T> mem_fn(R ( T::*f) () const noexcept)
23866: {
23866: return _mfi::cmf0<R, T>(f);
23866: }
23866:
23866: template<class R, class T, class A1> _mfi::mf1<R, T, A1> mem_fn(R ( T::*f) (A1) noexcept)
23866: {
23866: return _mfi::mf1<R, T, A1>(f);
23866: }
23866:
23866: template<class R, class T, class A1> _mfi::cmf1<R, T, A1> mem_fn(R ( T::*f) (A1) const noexcept)
23866: {
23866: return _mfi::cmf1<R, T, A1>(f);
23866: }
23866:
23866: template<class R, class T, class A1, class A2> _mfi::mf2<R, T, A1, A2> mem_fn(R ( T::*f) (A1, A2) noexcept)
23866: {
23866: return _mfi::mf2<R, T, A1, A2>(f);
23866: }
23866:
23866: template<class R, class T, class A1, class A2> _mfi::cmf2<R, T, A1, A2> mem_fn(R ( T::*f) (A1, A2) const noexcept)
23866: {
23866: return _mfi::cmf2<R, T, A1, A2>(f);
23866: }
23866:
23866: template<class R, class T, class A1, class A2, class A3> _mfi::mf3<R, T, A1, A2, A3> mem_fn(R ( T::*f) (A1, A2, A3) noexcept)
23866: {
23866: return _mfi::mf3<R, T, A1, A2, A3>(f);
23866: }
23866:
23866: template<class R, class T, class A1, class A2, class A3> _mfi::cmf3<R, T, A1, A2, A3> mem_fn(R ( T::*f) (A1, A2, A3) const noexcept)
23866: {
23866: return _mfi::cmf3<R, T, A1, A2, A3>(f);
23866: }
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4> _mfi::mf4<R, T, A1, A2, A3, A4> mem_fn(R ( T::*f) (A1, A2, A3, A4) noexcept)
23866: {
23866: return _mfi::mf4<R, T, A1, A2, A3, A4>(f);
23866: }
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4> _mfi::cmf4<R, T, A1, A2, A3, A4> mem_fn(R ( T::*f) (A1, A2, A3, A4) const noexcept)
23866: {
23866: return _mfi::cmf4<R, T, A1, A2, A3, A4>(f);
23866: }
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4, class A5> _mfi::mf5<R, T, A1, A2, A3, A4, A5> mem_fn(R ( T::*f) (A1, A2, A3, A4, A5) noexcept)
23866: {
23866: return _mfi::mf5<R, T, A1, A2, A3, A4, A5>(f);
23866: }
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4, class A5> _mfi::cmf5<R, T, A1, A2, A3, A4, A5> mem_fn(R ( T::*f) (A1, A2, A3, A4, A5) const noexcept)
23866: {
23866: return _mfi::cmf5<R, T, A1, A2, A3, A4, A5>(f);
23866: }
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6> _mfi::mf6<R, T, A1, A2, A3, A4, A5, A6> mem_fn(R ( T::*f) (A1, A2, A3, A4, A5, A6) noexcept)
23866: {
23866: return _mfi::mf6<R, T, A1, A2, A3, A4, A5, A6>(f);
23866: }
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6> _mfi::cmf6<R, T, A1, A2, A3, A4, A5, A6> mem_fn(R ( T::*f) (A1, A2, A3, A4, A5, A6) const noexcept)
23866: {
23866: return _mfi::cmf6<R, T, A1, A2, A3, A4, A5, A6>(f);
23866: }
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7> _mfi::mf7<R, T, A1, A2, A3, A4, A5, A6, A7> mem_fn(R ( T::*f) (A1, A2, A3, A4, A5, A6, A7) noexcept)
23866: {
23866: return _mfi::mf7<R, T, A1, A2, A3, A4, A5, A6, A7>(f);
23866: }
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7> _mfi::cmf7<R, T, A1, A2, A3, A4, A5, A6, A7> mem_fn(R ( T::*f) (A1, A2, A3, A4, A5, A6, A7) const noexcept)
23866: {
23866: return _mfi::cmf7<R, T, A1, A2, A3, A4, A5, A6, A7>(f);
23866: }
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> _mfi::mf8<R, T, A1, A2, A3, A4, A5, A6, A7, A8> mem_fn(R ( T::*f) (A1, A2, A3, A4, A5, A6, A7, A8) noexcept)
23866: {
23866: return _mfi::mf8<R, T, A1, A2, A3, A4, A5, A6, A7, A8>(f);
23866: }
23866:
23866: template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> _mfi::cmf8<R, T, A1, A2, A3, A4, A5, A6, A7, A8> mem_fn(R ( T::*f) (A1, A2, A3, A4, A5, A6, A7, A8) const noexcept)
23866: {
23866: return _mfi::cmf8<R, T, A1, A2, A3, A4, A5, A6, A7, A8>(f);
23866: }
23866: # 275 "/usr/include/boost/bind/mem_fn.hpp" 2 3 4
23866:
23866:
23866: #undef BOOST_MEM_FN_NAME
23866: #undef BOOST_MEM_FN_CC
23866: #undef BOOST_MEM_FN_NOEXCEPT
23866: # 325 "/usr/include/boost/bind/mem_fn.hpp" 3 4
23866: namespace _mfi
23866: {
23866:
23866: template<class R, class T> class dm
23866: {
23866: public:
23866:
23866: typedef R const & result_type;
23866: typedef T const * argument_type;
23866:
23866: private:
23866:
23866: typedef R (T::*F);
23866: F f_;
23866:
23866: template<class U> R const & call(U & u, T const *) const
23866: {
23866: return (u.*f_);
23866: }
23866:
23866: template<class U> R const & call(U & u, void const *) const
23866: {
23866: return (get_pointer(u)->*f_);
23866: }
23866:
23866: public:
23866:
23866: explicit dm(F f): f_(f) {}
23866:
23866: R & operator()(T * p) const
23866: {
23866: return (p->*f_);
23866: }
23866:
23866: R const & operator()(T const * p) const
23866: {
23866: return (p->*f_);
23866: }
23866:
23866: template<class U> R const & operator()(U const & u) const
23866: {
23866: return call(u, &u);
23866: }
23866:
23866:
23866:
23866: R & operator()(T & t) const
23866: {
23866: return (t.*f_);
23866: }
23866:
23866: R const & operator()(T const & t) const
23866: {
23866: return (t.*f_);
23866: }
23866:
23866:
23866:
23866: bool operator==(dm const & rhs) const
23866: {
23866: return f_ == rhs.f_;
23866: }
23866:
23866: bool operator!=(dm const & rhs) const
23866: {
23866: return f_ != rhs.f_;
23866: }
23866: };
23866:
23866: }
23866:
23866: template<class R, class T> _mfi::dm<R, T> mem_fn(R T::*f)
23866: {
23866: return _mfi::dm<R, T>(f);
23866: }
23866:
23866: }
23866: # 23 "/usr/include/boost/mem_fn.hpp" 2 3 4
23866: # 19 "/usr/include/boost/function/detail/prologue.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/preprocessor/enum.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/enum.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_ENUM_HPP
23866:
23866: # 1 "/usr/include/boost/preprocessor/repetition/enum.hpp" 1 3 4
23866: # 15 "/usr/include/boost/preprocessor/repetition/enum.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_REPETITION_ENUM_HPP
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/preprocessor/detail/auto_rec.hpp" 1 3 4
23866: # 21 "/usr/include/boost/preprocessor/repetition/enum.hpp" 2 3 4
23866: # 32 "/usr/include/boost/preprocessor/repetition/enum.hpp" 3 4
23866: #define BOOST_PP_ENUM BOOST_PP_CAT(BOOST_PP_ENUM_, BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4))
23866:
23866:
23866: #define BOOST_PP_ENUM_1(c,m,d) BOOST_PP_REPEAT_1(c, BOOST_PP_ENUM_M_1, (m, d))
23866: #define BOOST_PP_ENUM_2(c,m,d) BOOST_PP_REPEAT_2(c, BOOST_PP_ENUM_M_2, (m, d))
23866: #define BOOST_PP_ENUM_3(c,m,d) BOOST_PP_REPEAT_3(c, BOOST_PP_ENUM_M_3, (m, d))
23866: # 47 "/usr/include/boost/preprocessor/repetition/enum.hpp" 3 4
23866: #define BOOST_PP_ENUM_4(c,m,d) BOOST_PP_ERROR(0x0003)
23866:
23866:
23866: #define BOOST_PP_ENUM_M_1(z,n,md) BOOST_PP_ENUM_M_1_IM(z, n, BOOST_PP_TUPLE_REM_2 md)
23866: #define BOOST_PP_ENUM_M_2(z,n,md) BOOST_PP_ENUM_M_2_IM(z, n, BOOST_PP_TUPLE_REM_2 md)
23866: #define BOOST_PP_ENUM_M_3(z,n,md) BOOST_PP_ENUM_M_3_IM(z, n, BOOST_PP_TUPLE_REM_2 md)
23866: #define BOOST_PP_ENUM_M_1_IM(z,n,im) BOOST_PP_ENUM_M_1_I(z, n, im)
23866: #define BOOST_PP_ENUM_M_2_IM(z,n,im) BOOST_PP_ENUM_M_2_I(z, n, im)
23866: #define BOOST_PP_ENUM_M_3_IM(z,n,im) BOOST_PP_ENUM_M_3_I(z, n, im)
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_ENUM_M_1_I(z,n,m,d) BOOST_PP_COMMA_IF(n) m(z, n, d)
23866: #define BOOST_PP_ENUM_M_2_I(z,n,m,d) BOOST_PP_COMMA_IF(n) m(z, n, d)
23866: #define BOOST_PP_ENUM_M_3_I(z,n,m,d) BOOST_PP_COMMA_IF(n) m(z, n, d)
23866: # 16 "/usr/include/boost/preprocessor/enum.hpp" 2 3 4
23866: # 21 "/usr/include/boost/function/detail/prologue.hpp" 2 3 4
23866: # 1 "/usr/include/boost/preprocessor/enum_params.hpp" 1 3 4
23866: # 13 "/usr/include/boost/preprocessor/enum_params.hpp" 3 4
23866: #define BOOST_PREPROCESSOR_ENUM_PARAMS_HPP
23866: # 22 "/usr/include/boost/function/detail/prologue.hpp" 2 3 4
23866: # 31 "/usr/include/boost/function.hpp" 2 3 4
23866: # 69 "/usr/include/boost/function.hpp" 3 4
23866: #define BOOST_PP_ITERATION_PARAMS_1 (3,(0,BOOST_FUNCTION_MAX_ARGS,<boost/function/detail/function_iterate.hpp>))
23866: # 1 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 1 3 4
23866: # 23 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 3 4
23866: #define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ITERATION_PARAMS_1)
23866: # 1 "/usr/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp" 1 3 4
23866: # 12 "/usr/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp" 3 4
23866: # 1 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 1 3 4
23866: # 16 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #undef BOOST_PP_SLOT_TEMP_1
23866: #undef BOOST_PP_SLOT_TEMP_2
23866: #undef BOOST_PP_SLOT_TEMP_3
23866: #undef BOOST_PP_SLOT_TEMP_4
23866: #undef BOOST_PP_SLOT_TEMP_5
23866: #undef BOOST_PP_SLOT_TEMP_6
23866: #undef BOOST_PP_SLOT_TEMP_7
23866: #undef BOOST_PP_SLOT_TEMP_8
23866: #undef BOOST_PP_SLOT_TEMP_9
23866: #undef BOOST_PP_SLOT_TEMP_10
23866:
23866:
23866: #define BOOST_PP_SLOT_TEMP_10 0
23866: # 50 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_9 0
23866: # 72 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_8 0
23866: # 94 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_7 0
23866: # 116 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_6 0
23866: # 138 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_5 0
23866: # 160 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_4 0
23866: # 182 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_3 0
23866: # 204 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_2 0
23866: # 226 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_1 0
23866: # 247 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #undef BOOST_PP_VALUE
23866: # 13 "/usr/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp" 2 3 4
23866:
23866: #undef BOOST_PP_ITERATION_START_1
23866:
23866: #undef BOOST_PP_ITERATION_START_1_DIGIT_1
23866: #undef BOOST_PP_ITERATION_START_1_DIGIT_2
23866: #undef BOOST_PP_ITERATION_START_1_DIGIT_3
23866: #undef BOOST_PP_ITERATION_START_1_DIGIT_4
23866: #undef BOOST_PP_ITERATION_START_1_DIGIT_5
23866: #undef BOOST_PP_ITERATION_START_1_DIGIT_6
23866: #undef BOOST_PP_ITERATION_START_1_DIGIT_7
23866: #undef BOOST_PP_ITERATION_START_1_DIGIT_8
23866: #undef BOOST_PP_ITERATION_START_1_DIGIT_9
23866: #undef BOOST_PP_ITERATION_START_1_DIGIT_10
23866:
23866:
23866: #define BOOST_PP_ITERATION_START_1_DIGIT_3 0
23866: # 50 "/usr/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp" 3 4
23866: #define BOOST_PP_ITERATION_START_1_DIGIT_2 0
23866: # 72 "/usr/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp" 3 4
23866: #define BOOST_PP_ITERATION_START_1_DIGIT_1 0
23866: # 98 "/usr/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp" 3 4
23866: #define BOOST_PP_ITERATION_START_1 BOOST_PP_ITERATION_START_1_DIGIT_1
23866: # 25 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(1, BOOST_PP_ITERATION_PARAMS_1)
23866: # 1 "/usr/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp" 1 3 4
23866: # 12 "/usr/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp" 3 4
23866: # 1 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 1 3 4
23866: # 16 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #undef BOOST_PP_SLOT_TEMP_1
23866: #undef BOOST_PP_SLOT_TEMP_2
23866: #undef BOOST_PP_SLOT_TEMP_3
23866: #undef BOOST_PP_SLOT_TEMP_4
23866: #undef BOOST_PP_SLOT_TEMP_5
23866: #undef BOOST_PP_SLOT_TEMP_6
23866: #undef BOOST_PP_SLOT_TEMP_7
23866: #undef BOOST_PP_SLOT_TEMP_8
23866: #undef BOOST_PP_SLOT_TEMP_9
23866: #undef BOOST_PP_SLOT_TEMP_10
23866:
23866:
23866: #define BOOST_PP_SLOT_TEMP_10 0
23866: # 50 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_9 0
23866: # 72 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_8 0
23866: # 94 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_7 0
23866: # 116 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_6 0
23866: # 138 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_5 0
23866: # 160 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_4 0
23866: # 182 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_3 0
23866: # 206 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_2 1
23866: # 226 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #define BOOST_PP_SLOT_TEMP_1 0
23866: # 247 "/usr/include/boost/preprocessor/slot/detail/shared.hpp" 3 4
23866: #undef BOOST_PP_VALUE
23866: # 13 "/usr/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp" 2 3 4
23866:
23866: #undef BOOST_PP_ITERATION_FINISH_1
23866:
23866: #undef BOOST_PP_ITERATION_FINISH_1_DIGIT_1
23866: #undef BOOST_PP_ITERATION_FINISH_1_DIGIT_2
23866: #undef BOOST_PP_ITERATION_FINISH_1_DIGIT_3
23866: #undef BOOST_PP_ITERATION_FINISH_1_DIGIT_4
23866: #undef BOOST_PP_ITERATION_FINISH_1_DIGIT_5
23866: #undef BOOST_PP_ITERATION_FINISH_1_DIGIT_6
23866: #undef BOOST_PP_ITERATION_FINISH_1_DIGIT_7
23866: #undef BOOST_PP_ITERATION_FINISH_1_DIGIT_8
23866: #undef BOOST_PP_ITERATION_FINISH_1_DIGIT_9
23866: #undef BOOST_PP_ITERATION_FINISH_1_DIGIT_10
23866:
23866:
23866: #define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 0
23866: # 52 "/usr/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp" 3 4
23866: #define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 1
23866: # 72 "/usr/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp" 3 4
23866: #define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 0
23866: # 96 "/usr/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp" 3 4
23866: #define BOOST_PP_ITERATION_FINISH_1 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_FINISH_1_DIGIT_2, BOOST_PP_ITERATION_FINISH_1_DIGIT_1)
23866: # 27 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #define BOOST_PP_FILENAME_1 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_1)
23866:
23866:
23866:
23866: #define BOOST_PP_ITERATION_FLAGS_1() 0
23866:
23866:
23866:
23866:
23866:
23866: #undef BOOST_PP_ITERATION_DEPTH
23866: #define BOOST_PP_ITERATION_DEPTH() 1
23866:
23866: #define BOOST_PP_IS_ITERATING 1
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_PP_ITERATION_1 0
23866: # 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
23866: # 13 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
23866: #define BOOST_FUNCTION_NUM_ARGS BOOST_PP_ITERATION()
23866: # 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
23866: # 11 "/usr/include/boost/function/detail/maybe_include.hpp" 3 4
23866: #undef BOOST_FUNCTION_MAX_ARGS_DEFINED
23866: #define BOOST_FUNCTION_MAX_ARGS_DEFINED 0
23866:
23866: #define BOOST_FUNCTION_0
23866: # 1 "/usr/include/boost/function/function_template.hpp" 1 3 4
23866: # 14 "/usr/include/boost/function/function_template.hpp" 3 4
23866: # 1 "/usr/include/boost/core/no_exceptions_support.hpp" 1 3 4
23866:
23866: #define BOOST_CORE_NO_EXCEPTIONS_SUPPORT_HPP
23866: # 27 "/usr/include/boost/core/no_exceptions_support.hpp" 3 4
23866: #define BOOST_TRY { try
23866: #define BOOST_CATCH(x) catch(x)
23866: #define BOOST_RETHROW throw;
23866: #define BOOST_CATCH_END }
23866: # 15 "/usr/include/boost/function/function_template.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_TEMPLATE_PARMS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, typename T)
23866:
23866: #define BOOST_FUNCTION_TEMPLATE_ARGS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, T)
23866:
23866: #define BOOST_FUNCTION_PARM(J,I,D) BOOST_PP_CAT(T,I) BOOST_PP_CAT(a,I)
23866:
23866: #define BOOST_FUNCTION_PARMS BOOST_PP_ENUM(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_PARM,BOOST_PP_EMPTY)
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_ARG(J,I,D) static_cast<BOOST_PP_CAT(T,I)&&>(BOOST_PP_CAT(a,I))
23866: #define BOOST_FUNCTION_ARGS BOOST_PP_ENUM(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_ARG,BOOST_PP_EMPTY)
23866:
23866:
23866: #define BOOST_FUNCTION_ARG_TYPE(J,I,D) typedef BOOST_PP_CAT(T,I) BOOST_PP_CAT(BOOST_PP_CAT(arg, BOOST_PP_INC(I)),_type);
23866:
23866:
23866: #define BOOST_FUNCTION_ARG_TYPES BOOST_PP_REPEAT(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_ARG_TYPE,BOOST_PP_EMPTY)
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_COMMA
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_FUNCTION BOOST_JOIN(function,BOOST_FUNCTION_NUM_ARGS)
23866: #define BOOST_FUNCTION_FUNCTION_INVOKER BOOST_JOIN(function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_INVOKER BOOST_JOIN(void_function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_FUNCTION_OBJ_INVOKER BOOST_JOIN(function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER BOOST_JOIN(void_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_FUNCTION_REF_INVOKER BOOST_JOIN(function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER BOOST_JOIN(void_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_MEMBER_INVOKER BOOST_JOIN(function_mem_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_MEMBER_INVOKER BOOST_JOIN(function_void_mem_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_INVOKER BOOST_JOIN(get_function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER BOOST_JOIN(get_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER BOOST_JOIN(get_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_MEMBER_INVOKER BOOST_JOIN(get_member_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_INVOKER BOOST_JOIN(get_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VTABLE BOOST_JOIN(basic_vtable,BOOST_FUNCTION_NUM_ARGS)
23866:
23866:
23866: #define BOOST_FUNCTION_VOID_RETURN_TYPE void
23866: #define BOOST_FUNCTION_RETURN(X) X
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace detail {
23866: namespace function {
23866: template<
23866: typename FunctionPtr,
23866: typename R
23866:
23866: >
23866: struct function_invoker0
23866: {
23866: static R invoke(function_buffer& function_ptr
23866: )
23866: {
23866: FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.members.func_ptr);
23866: return f();
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionPtr,
23866: typename R
23866:
23866: >
23866: struct void_function_invoker0
23866: {
23866: static void
23866: invoke(function_buffer& function_ptr
23866: )
23866:
23866: {
23866: FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.members.func_ptr);
23866: f();
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R
23866:
23866: >
23866: struct function_obj_invoker0
23866: {
23866: static R invoke(function_buffer& function_obj_ptr
23866: )
23866:
23866: {
23866: FunctionObj* f;
23866: if (function_allows_small_object_optimization<FunctionObj>::value)
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.data);
23866: else
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: return (*f)();
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R
23866:
23866: >
23866: struct void_function_obj_invoker0
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr
23866: )
23866:
23866: {
23866: FunctionObj* f;
23866: if (function_allows_small_object_optimization<FunctionObj>::value)
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.data);
23866: else
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: (*f)();
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R
23866:
23866: >
23866: struct function_ref_invoker0
23866: {
23866: static R invoke(function_buffer& function_obj_ptr
23866: )
23866:
23866: {
23866: FunctionObj* f =
23866: reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: return (*f)();
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R
23866:
23866: >
23866: struct void_function_ref_invoker0
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr
23866: )
23866:
23866: {
23866: FunctionObj* f =
23866: reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: (*f)();
23866: }
23866: };
23866: # 235 "/usr/include/boost/function/function_template.hpp" 3 4
23866: template<
23866: typename FunctionPtr,
23866: typename R
23866:
23866: >
23866: struct get_function_invoker0
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_invoker0<
23866: FunctionPtr,
23866: R
23866:
23866: >,
23866: function_invoker0<
23866: FunctionPtr,
23866: R
23866:
23866: >
23866: >::type type;
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R
23866:
23866: >
23866: struct get_function_obj_invoker0
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_obj_invoker0<
23866: FunctionObj,
23866: R
23866:
23866: >,
23866: function_obj_invoker0<
23866: FunctionObj,
23866: R
23866:
23866: >
23866: >::type type;
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R
23866:
23866: >
23866: struct get_function_ref_invoker0
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_ref_invoker0<
23866: FunctionObj,
23866: R
23866:
23866: >,
23866: function_ref_invoker0<
23866: FunctionObj,
23866: R
23866:
23866: >
23866: >::type type;
23866: };
23866: # 331 "/usr/include/boost/function/function_template.hpp" 3 4
23866: template<typename Tag>
23866: struct get_invoker0 { };
23866:
23866:
23866: template<>
23866: struct get_invoker0<function_ptr_tag>
23866: {
23866: template<typename FunctionPtr,
23866: typename R >
23866: struct apply
23866: {
23866: typedef typename get_function_invoker0<
23866: FunctionPtr,
23866: R
23866:
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionPtr> manager_type;
23866: };
23866:
23866: template<typename FunctionPtr, typename Allocator,
23866: typename R >
23866: struct apply_a
23866: {
23866: typedef typename get_function_invoker0<
23866: FunctionPtr,
23866: R
23866:
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionPtr> manager_type;
23866: };
23866: };
23866: # 403 "/usr/include/boost/function/function_template.hpp" 3 4
23866: template<>
23866: struct get_invoker0<function_obj_tag>
23866: {
23866: template<typename FunctionObj,
23866: typename R >
23866: struct apply
23866: {
23866: typedef typename get_function_obj_invoker0<
23866: FunctionObj,
23866: R
23866:
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionObj> manager_type;
23866: };
23866:
23866: template<typename FunctionObj, typename Allocator,
23866: typename R >
23866: struct apply_a
23866: {
23866: typedef typename get_function_obj_invoker0<
23866: FunctionObj,
23866: R
23866:
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager_a<FunctionObj, Allocator> manager_type;
23866: };
23866: };
23866:
23866:
23866: template<>
23866: struct get_invoker0<function_obj_ref_tag>
23866: {
23866: template<typename RefWrapper,
23866: typename R >
23866: struct apply
23866: {
23866: typedef typename get_function_ref_invoker0<
23866: typename RefWrapper::type,
23866: R
23866:
23866: >::type
23866: invoker_type;
23866:
23866: typedef reference_manager<typename RefWrapper::type> manager_type;
23866: };
23866:
23866: template<typename RefWrapper, typename Allocator,
23866: typename R >
23866: struct apply_a
23866: {
23866: typedef typename get_function_ref_invoker0<
23866: typename RefWrapper::type,
23866: R
23866:
23866: >::type
23866: invoker_type;
23866:
23866: typedef reference_manager<typename RefWrapper::type> manager_type;
23866: };
23866: };
23866: # 476 "/usr/include/boost/function/function_template.hpp" 3 4
23866: template<typename R >
23866: struct basic_vtable0
23866: {
23866:
23866: typedef R result_type;
23866:
23866:
23866:
23866:
23866: typedef result_type (*invoker_type)(function_buffer&
23866:
23866: );
23866:
23866: template<typename F>
23866: bool assign_to(F f, function_buffer& functor) const
23866: {
23866: typedef typename get_function_tag<F>::type tag;
23866: return assign_to(f, functor, tag());
23866: }
23866: template<typename F,typename Allocator>
23866: bool assign_to_a(F f, function_buffer& functor, Allocator a) const
23866: {
23866: typedef typename get_function_tag<F>::type tag;
23866: return assign_to_a(f, functor, a, tag());
23866: }
23866:
23866: void clear(function_buffer& functor) const
23866: {
23866: if (base.manager)
23866: base.manager(functor, functor, destroy_functor_tag);
23866: }
23866:
23866: private:
23866:
23866: template<typename FunctionPtr>
23866: bool
23866: assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag) const
23866: {
23866: this->clear(functor);
23866: if (f) {
23866:
23866:
23866: functor.members.func_ptr = reinterpret_cast<void (*)()>(f);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename FunctionPtr,typename Allocator>
23866: bool
23866: assign_to_a(FunctionPtr f, function_buffer& functor, Allocator, function_ptr_tag) const
23866: {
23866: return assign_to(f,functor,function_ptr_tag());
23866: }
23866: # 563 "/usr/include/boost/function/function_template.hpp" 3 4
23866: template<typename FunctionObj>
23866: void
23866: assign_functor(FunctionObj f, function_buffer& functor, true_type) const
23866: {
23866: new (reinterpret_cast<void*>(functor.data)) FunctionObj(f);
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: void
23866: assign_functor_a(FunctionObj f, function_buffer& functor, Allocator, true_type) const
23866: {
23866: assign_functor(f,functor,true_type());
23866: }
23866:
23866:
23866: template<typename FunctionObj>
23866: void
23866: assign_functor(FunctionObj f, function_buffer& functor, false_type) const
23866: {
23866: functor.members.obj_ptr = new FunctionObj(f);
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: void
23866: assign_functor_a(FunctionObj f, function_buffer& functor, Allocator a, false_type) const
23866: {
23866: typedef functor_wrapper<FunctionObj,Allocator> functor_wrapper_type;
23866:
23866:
23866:
23866:
23866:
23866: using wrapper_allocator_type = typename std::allocator_traits<Allocator>::template rebind_alloc<functor_wrapper_type>;
23866: using wrapper_allocator_pointer_type = typename std::allocator_traits<wrapper_allocator_type>::pointer;
23866:
23866: wrapper_allocator_type wrapper_allocator(a);
23866: wrapper_allocator_pointer_type copy = wrapper_allocator.allocate(1);
23866:
23866:
23866:
23866: std::allocator_traits<wrapper_allocator_type>::construct(wrapper_allocator, copy, functor_wrapper_type(f,a));
23866:
23866: functor_wrapper_type* new_f = static_cast<functor_wrapper_type*>(copy);
23866: functor.members.obj_ptr = new_f;
23866: }
23866:
23866: template<typename FunctionObj>
23866: bool
23866: assign_to(FunctionObj f, function_buffer& functor, function_obj_tag) const
23866: {
23866: if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
23866: assign_functor(f, functor,
23866: integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>());
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: bool
23866: assign_to_a(FunctionObj f, function_buffer& functor, Allocator a, function_obj_tag) const
23866: {
23866: if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
23866: assign_functor_a(f, functor, a,
23866: integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>());
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866:
23866:
23866: template<typename FunctionObj>
23866: bool
23866: assign_to(const reference_wrapper<FunctionObj>& f,
23866: function_buffer& functor, function_obj_ref_tag) const
23866: {
23866: functor.members.obj_ref.obj_ptr = (void *)(f.get_pointer());
23866: functor.members.obj_ref.is_const_qualified = is_const<FunctionObj>::value;
23866: functor.members.obj_ref.is_volatile_qualified = is_volatile<FunctionObj>::value;
23866: return true;
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: bool
23866: assign_to_a(const reference_wrapper<FunctionObj>& f,
23866: function_buffer& functor, Allocator, function_obj_ref_tag) const
23866: {
23866: return assign_to(f,functor,function_obj_ref_tag());
23866: }
23866:
23866: public:
23866: vtable_base base;
23866: invoker_type invoker;
23866: };
23866: }
23866: }
23866:
23866: template<
23866: typename R
23866:
23866: >
23866: class function0 : public function_base
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866:
23866:
23866:
23866:
23866:
23866: private:
23866: typedef boost::detail::function::basic_vtable0<
23866: R >
23866: vtable_type;
23866:
23866: vtable_type* get_vtable() const {
23866: return reinterpret_cast<vtable_type*>(
23866: reinterpret_cast<std::size_t>(vtable) & ~static_cast<std::size_t>(0x01));
23866: }
23866:
23866: struct clear_type {};
23866:
23866: public:
23866: static const int args = 0;
23866:
23866:
23866: template<typename Args>
23866: struct sig
23866: {
23866: typedef result_type type;
23866: };
23866: # 701 "/usr/include/boost/function/function_template.hpp" 3 4
23866: static const int arity = 0;
23866:
23866:
23866: typedef function0 self_type;
23866:
23866: function0() = default;
23866:
23866:
23866:
23866: template<typename Functor>
23866: function0(Functor f
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: function_base()
23866: {
23866: this->assign_to(f);
23866: }
23866: template<typename Functor,typename Allocator>
23866: function0(Functor f, Allocator a
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: function_base()
23866: {
23866: this->assign_to_a(f,a);
23866: }
23866:
23866:
23866: function0(clear_type*) : function_base() { }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: function0(const function0& f) : function_base()
23866: {
23866: this->assign_to_own(f);
23866: }
23866:
23866:
23866: function0(function0&& f) : function_base()
23866: {
23866: this->move_assign(f);
23866: }
23866:
23866:
23866: ~function0() { clear(); }
23866:
23866: result_type operator()() const
23866: {
23866: if (this->empty())
23866: boost::throw_exception(bad_function_call());
23866:
23866: return get_vtable()->invoker
23866: (this->functor );
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename Functor>
23866:
23866: typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: function0&>::type
23866:
23866:
23866:
23866: operator=(Functor f)
23866: {
23866: this->clear();
23866: { try {
23866: this->assign_to(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866: template<typename Functor,typename Allocator>
23866: void assign(Functor f, Allocator a)
23866: {
23866: this->clear();
23866: { try{
23866: this->assign_to_a(f,a);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: }
23866:
23866:
23866: function0& operator=(clear_type*)
23866: {
23866: this->clear();
23866: return *this;
23866: }
23866: # 821 "/usr/include/boost/function/function_template.hpp" 3 4
23866: function0& operator=(const function0& f)
23866: {
23866: if (&f == this)
23866: return *this;
23866:
23866: this->clear();
23866: { try {
23866: this->assign_to_own(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866:
23866:
23866:
23866: function0& operator=(function0&& f)
23866: {
23866: if (&f == this)
23866: return *this;
23866:
23866: this->clear();
23866: { try {
23866: this->move_assign(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866:
23866:
23866: void swap(function0& other)
23866: {
23866: if (&other == this)
23866: return;
23866:
23866: function0 tmp;
23866: tmp.move_assign(*this);
23866: this->move_assign(other);
23866: other.move_assign(tmp);
23866: }
23866:
23866:
23866: void clear()
23866: {
23866: if (vtable) {
23866: if (!this->has_trivial_copy_and_destroy())
23866: get_vtable()->clear(this->functor);
23866: vtable = 0;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866:
23866: private:
23866: struct dummy {
23866: void nonnull() {}
23866: };
23866:
23866: typedef void (dummy::*safe_bool)();
23866:
23866: public:
23866: operator safe_bool () const
23866: { return (this->empty())? 0 : &dummy::nonnull; }
23866:
23866: bool operator!() const
23866: { return this->empty(); }
23866:
23866:
23866: private:
23866: void assign_to_own(const function0& f)
23866: {
23866: if (!f.empty()) {
23866: this->vtable = f.vtable;
23866: if (this->has_trivial_copy_and_destroy()) {
23866:
23866:
23866:
23866: #pragma GCC diagnostic push
23866:
23866:
23866: #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
23866:
23866: std::memcpy(this->functor.data, f.functor.data, sizeof(boost::detail::function::function_buffer));
23866:
23866: #pragma GCC diagnostic pop
23866:
23866: } else
23866: get_vtable()->base.manager(f.functor, this->functor,
23866: boost::detail::function::clone_functor_tag);
23866: }
23866: }
23866:
23866: template<typename Functor>
23866: void assign_to(Functor f)
23866: {
23866: using boost::detail::function::vtable_base;
23866:
23866: typedef typename boost::detail::function::get_function_tag<Functor>::type tag;
23866: typedef boost::detail::function::get_invoker0<tag> get_invoker;
23866: typedef typename get_invoker::
23866: template apply<Functor, R
23866: >
23866: handler_type;
23866:
23866: typedef typename handler_type::invoker_type invoker_type;
23866: typedef typename handler_type::manager_type manager_type;
23866:
23866:
23866:
23866:
23866:
23866: static const vtable_type stored_vtable =
23866: { { &manager_type::manage }, &invoker_type::invoke };
23866:
23866: if (stored_vtable.assign_to(f, functor)) {
23866: std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
23866:
23866: if (boost::has_trivial_copy_constructor<Functor>::value &&
23866: boost::has_trivial_destructor<Functor>::value &&
23866: boost::detail::function::function_allows_small_object_optimization<Functor>::value)
23866: value |= static_cast<std::size_t>(0x01);
23866: vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value);
23866: } else
23866: vtable = 0;
23866: }
23866:
23866: template<typename Functor,typename Allocator>
23866: void assign_to_a(Functor f,Allocator a)
23866: {
23866: using boost::detail::function::vtable_base;
23866:
23866: typedef typename boost::detail::function::get_function_tag<Functor>::type tag;
23866: typedef boost::detail::function::get_invoker0<tag> get_invoker;
23866: typedef typename get_invoker::
23866: template apply_a<Functor, Allocator, R
23866: >
23866: handler_type;
23866:
23866: typedef typename handler_type::invoker_type invoker_type;
23866: typedef typename handler_type::manager_type manager_type;
23866:
23866:
23866:
23866:
23866:
23866: static const vtable_type stored_vtable =
23866: { { &manager_type::manage }, &invoker_type::invoke };
23866:
23866: if (stored_vtable.assign_to_a(f, functor, a)) {
23866: std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
23866:
23866: if (boost::has_trivial_copy_constructor<Functor>::value &&
23866: boost::has_trivial_destructor<Functor>::value &&
23866: boost::detail::function::function_allows_small_object_optimization<Functor>::value)
23866: value |= static_cast<std::size_t>(0x01);
23866: vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value);
23866: } else
23866: vtable = 0;
23866: }
23866:
23866:
23866:
23866:
23866: void move_assign(function0& f)
23866: {
23866: if (&f == this)
23866: return;
23866:
23866: { try {
23866: if (!f.empty()) {
23866: this->vtable = f.vtable;
23866: if (this->has_trivial_copy_and_destroy()) {
23866:
23866:
23866:
23866: #pragma GCC diagnostic push
23866:
23866:
23866: #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
23866:
23866: std::memcpy(this->functor.data, f.functor.data, sizeof(this->functor.data));
23866:
23866: #pragma GCC diagnostic pop
23866:
23866: } else
23866: get_vtable()->base.manager(f.functor, this->functor,
23866: boost::detail::function::move_functor_tag);
23866: f.vtable = 0;
23866: } else {
23866: clear();
23866: }
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: }
23866: };
23866:
23866: template<typename R >
23866: inline void swap(function0<
23866: R
23866:
23866: >& f1,
23866: function0<
23866: R
23866:
23866: >& f2)
23866: {
23866: f1.swap(f2);
23866: }
23866:
23866:
23866: template<typename R >
23866: void operator==(const function0<
23866: R
23866: >&,
23866: const function0<
23866: R
23866: >&);
23866: template<typename R >
23866: void operator!=(const function0<
23866: R
23866: >&,
23866: const function0<
23866: R
23866: >& );
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_PARTIAL_SPEC R (void)
23866:
23866:
23866:
23866:
23866: template<typename R
23866: >
23866: class function<R (void)>
23866: : public function0<R >
23866: {
23866: typedef function0<R > base_type;
23866: typedef function self_type;
23866:
23866: struct clear_type {};
23866:
23866: public:
23866:
23866: function() = default;
23866:
23866: template<typename Functor>
23866: function(Functor f
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: base_type(f)
23866: {
23866: }
23866: template<typename Functor,typename Allocator>
23866: function(Functor f, Allocator a
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: base_type(f,a)
23866: {
23866: }
23866:
23866:
23866: function(clear_type*) : base_type() {}
23866:
23866:
23866: function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}
23866:
23866: function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}
23866:
23866:
23866:
23866: function(self_type&& f): base_type(static_cast<base_type&&>(f)){}
23866: function(base_type&& f): base_type(static_cast<base_type&&>(f)){}
23866:
23866:
23866: self_type& operator=(const self_type& f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(self_type&& f)
23866: {
23866: self_type(static_cast<self_type&&>(f)).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: template<typename Functor>
23866:
23866: typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: self_type&>::type
23866:
23866:
23866:
23866: operator=(Functor f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(clear_type*)
23866: {
23866: this->clear();
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(const base_type& f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(base_type&& f)
23866: {
23866: self_type(static_cast<base_type&&>(f)).swap(*this);
23866: return *this;
23866: }
23866:
23866: };
23866:
23866: #undef BOOST_FUNCTION_PARTIAL_SPEC
23866:
23866:
23866: }
23866:
23866:
23866: #undef BOOST_FUNCTION_VTABLE
23866: #undef BOOST_FUNCTION_COMMA
23866: #undef BOOST_FUNCTION_FUNCTION
23866: #undef BOOST_FUNCTION_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_MEMBER_INVOKER
23866: #undef BOOST_FUNCTION_VOID_MEMBER_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_GET_MEM_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_GET_INVOKER
23866: #undef BOOST_FUNCTION_TEMPLATE_PARMS
23866: #undef BOOST_FUNCTION_TEMPLATE_ARGS
23866: #undef BOOST_FUNCTION_PARMS
23866: #undef BOOST_FUNCTION_PARM
23866:
23866: #undef BOOST_FUNCTION_ARG
23866:
23866: #undef BOOST_FUNCTION_ARGS
23866: #undef BOOST_FUNCTION_ARG_TYPE
23866: #undef BOOST_FUNCTION_ARG_TYPES
23866: #undef BOOST_FUNCTION_VOID_RETURN_TYPE
23866: #undef BOOST_FUNCTION_RETURN
23866: # 16 "/usr/include/boost/function/detail/maybe_include.hpp" 2 3 4
23866: # 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
23866: #undef BOOST_FUNCTION_NUM_ARGS
23866: # 48 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_1
23866:
23866:
23866: #define BOOST_PP_ITERATION_1 1
23866: # 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
23866: # 13 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
23866: #define BOOST_FUNCTION_NUM_ARGS BOOST_PP_ITERATION()
23866: # 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
23866: # 18 "/usr/include/boost/function/detail/maybe_include.hpp" 3 4
23866: #undef BOOST_FUNCTION_MAX_ARGS_DEFINED
23866: #define BOOST_FUNCTION_MAX_ARGS_DEFINED 1
23866:
23866: #define BOOST_FUNCTION_1
23866: # 1 "/usr/include/boost/function/function_template.hpp" 1 3 4
23866: # 21 "/usr/include/boost/function/function_template.hpp" 3 4
23866: #define BOOST_FUNCTION_TEMPLATE_PARMS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, typename T)
23866:
23866: #define BOOST_FUNCTION_TEMPLATE_ARGS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, T)
23866:
23866: #define BOOST_FUNCTION_PARM(J,I,D) BOOST_PP_CAT(T,I) BOOST_PP_CAT(a,I)
23866:
23866: #define BOOST_FUNCTION_PARMS BOOST_PP_ENUM(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_PARM,BOOST_PP_EMPTY)
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_ARG(J,I,D) static_cast<BOOST_PP_CAT(T,I)&&>(BOOST_PP_CAT(a,I))
23866: #define BOOST_FUNCTION_ARGS BOOST_PP_ENUM(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_ARG,BOOST_PP_EMPTY)
23866:
23866:
23866: #define BOOST_FUNCTION_ARG_TYPE(J,I,D) typedef BOOST_PP_CAT(T,I) BOOST_PP_CAT(BOOST_PP_CAT(arg, BOOST_PP_INC(I)),_type);
23866:
23866:
23866: #define BOOST_FUNCTION_ARG_TYPES BOOST_PP_REPEAT(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_ARG_TYPE,BOOST_PP_EMPTY)
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_COMMA ,
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_FUNCTION BOOST_JOIN(function,BOOST_FUNCTION_NUM_ARGS)
23866: #define BOOST_FUNCTION_FUNCTION_INVOKER BOOST_JOIN(function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_INVOKER BOOST_JOIN(void_function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_FUNCTION_OBJ_INVOKER BOOST_JOIN(function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER BOOST_JOIN(void_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_FUNCTION_REF_INVOKER BOOST_JOIN(function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER BOOST_JOIN(void_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_MEMBER_INVOKER BOOST_JOIN(function_mem_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_MEMBER_INVOKER BOOST_JOIN(function_void_mem_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_INVOKER BOOST_JOIN(get_function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER BOOST_JOIN(get_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER BOOST_JOIN(get_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_MEMBER_INVOKER BOOST_JOIN(get_member_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_INVOKER BOOST_JOIN(get_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VTABLE BOOST_JOIN(basic_vtable,BOOST_FUNCTION_NUM_ARGS)
23866:
23866:
23866: #define BOOST_FUNCTION_VOID_RETURN_TYPE void
23866: #define BOOST_FUNCTION_RETURN(X) X
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace detail {
23866: namespace function {
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0
23866: >
23866: struct function_invoker1
23866: {
23866: static R invoke(function_buffer& function_ptr ,
23866: T0 a0)
23866: {
23866: FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.members.func_ptr);
23866: return f( static_cast<T0&&>(a0));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0
23866: >
23866: struct void_function_invoker1
23866: {
23866: static void
23866: invoke(function_buffer& function_ptr ,
23866: T0 a0)
23866:
23866: {
23866: FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.members.func_ptr);
23866: f( static_cast<T0&&>(a0));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0
23866: >
23866: struct function_obj_invoker1
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0)
23866:
23866: {
23866: FunctionObj* f;
23866: if (function_allows_small_object_optimization<FunctionObj>::value)
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.data);
23866: else
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: return (*f)( static_cast<T0&&>(a0));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0
23866: >
23866: struct void_function_obj_invoker1
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0)
23866:
23866: {
23866: FunctionObj* f;
23866: if (function_allows_small_object_optimization<FunctionObj>::value)
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.data);
23866: else
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: (*f)( static_cast<T0&&>(a0));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0
23866: >
23866: struct function_ref_invoker1
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0)
23866:
23866: {
23866: FunctionObj* f =
23866: reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: return (*f)( static_cast<T0&&>(a0));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0
23866: >
23866: struct void_function_ref_invoker1
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0)
23866:
23866: {
23866: FunctionObj* f =
23866: reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: (*f)( static_cast<T0&&>(a0));
23866: }
23866: };
23866:
23866:
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0
23866: >
23866: struct function_mem_invoker1
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0)
23866:
23866: {
23866: MemberPtr* f =
23866: reinterpret_cast<MemberPtr*>(function_obj_ptr.data);
23866: return boost::mem_fn(*f)( static_cast<T0&&>(a0));
23866: }
23866: };
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0
23866: >
23866: struct function_void_mem_invoker1
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0)
23866:
23866: {
23866: MemberPtr* f =
23866: reinterpret_cast<MemberPtr*>(function_obj_ptr.data);
23866: boost::mem_fn(*f)( static_cast<T0&&>(a0));
23866: }
23866: };
23866:
23866:
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0
23866: >
23866: struct get_function_invoker1
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_invoker1<
23866: FunctionPtr,
23866: R ,
23866: T0
23866: >,
23866: function_invoker1<
23866: FunctionPtr,
23866: R ,
23866: T0
23866: >
23866: >::type type;
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0
23866: >
23866: struct get_function_obj_invoker1
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_obj_invoker1<
23866: FunctionObj,
23866: R ,
23866: T0
23866: >,
23866: function_obj_invoker1<
23866: FunctionObj,
23866: R ,
23866: T0
23866: >
23866: >::type type;
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0
23866: >
23866: struct get_function_ref_invoker1
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_ref_invoker1<
23866: FunctionObj,
23866: R ,
23866: T0
23866: >,
23866: function_ref_invoker1<
23866: FunctionObj,
23866: R ,
23866: T0
23866: >
23866: >::type type;
23866: };
23866:
23866:
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0
23866: >
23866: struct get_member_invoker1
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: function_void_mem_invoker1<
23866: MemberPtr,
23866: R ,
23866: T0
23866: >,
23866: function_mem_invoker1<
23866: MemberPtr,
23866: R ,
23866: T0
23866: >
23866: >::type type;
23866: };
23866: # 331 "/usr/include/boost/function/function_template.hpp" 3 4
23866: template<typename Tag>
23866: struct get_invoker1 { };
23866:
23866:
23866: template<>
23866: struct get_invoker1<function_ptr_tag>
23866: {
23866: template<typename FunctionPtr,
23866: typename R , typename T0>
23866: struct apply
23866: {
23866: typedef typename get_function_invoker1<
23866: FunctionPtr,
23866: R ,
23866: T0
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionPtr> manager_type;
23866: };
23866:
23866: template<typename FunctionPtr, typename Allocator,
23866: typename R , typename T0>
23866: struct apply_a
23866: {
23866: typedef typename get_function_invoker1<
23866: FunctionPtr,
23866: R ,
23866: T0
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionPtr> manager_type;
23866: };
23866: };
23866:
23866:
23866:
23866: template<>
23866: struct get_invoker1<member_ptr_tag>
23866: {
23866: template<typename MemberPtr,
23866: typename R , typename T0>
23866: struct apply
23866: {
23866: typedef typename get_member_invoker1<
23866: MemberPtr,
23866: R ,
23866: T0
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<MemberPtr> manager_type;
23866: };
23866:
23866: template<typename MemberPtr, typename Allocator,
23866: typename R , typename T0>
23866: struct apply_a
23866: {
23866: typedef typename get_member_invoker1<
23866: MemberPtr,
23866: R ,
23866: T0
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<MemberPtr> manager_type;
23866: };
23866: };
23866:
23866:
23866:
23866: template<>
23866: struct get_invoker1<function_obj_tag>
23866: {
23866: template<typename FunctionObj,
23866: typename R , typename T0>
23866: struct apply
23866: {
23866: typedef typename get_function_obj_invoker1<
23866: FunctionObj,
23866: R ,
23866: T0
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionObj> manager_type;
23866: };
23866:
23866: template<typename FunctionObj, typename Allocator,
23866: typename R , typename T0>
23866: struct apply_a
23866: {
23866: typedef typename get_function_obj_invoker1<
23866: FunctionObj,
23866: R ,
23866: T0
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager_a<FunctionObj, Allocator> manager_type;
23866: };
23866: };
23866:
23866:
23866: template<>
23866: struct get_invoker1<function_obj_ref_tag>
23866: {
23866: template<typename RefWrapper,
23866: typename R , typename T0>
23866: struct apply
23866: {
23866: typedef typename get_function_ref_invoker1<
23866: typename RefWrapper::type,
23866: R ,
23866: T0
23866: >::type
23866: invoker_type;
23866:
23866: typedef reference_manager<typename RefWrapper::type> manager_type;
23866: };
23866:
23866: template<typename RefWrapper, typename Allocator,
23866: typename R , typename T0>
23866: struct apply_a
23866: {
23866: typedef typename get_function_ref_invoker1<
23866: typename RefWrapper::type,
23866: R ,
23866: T0
23866: >::type
23866: invoker_type;
23866:
23866: typedef reference_manager<typename RefWrapper::type> manager_type;
23866: };
23866: };
23866: # 476 "/usr/include/boost/function/function_template.hpp" 3 4
23866: template<typename R , typename T0>
23866: struct basic_vtable1
23866: {
23866:
23866: typedef R result_type;
23866:
23866:
23866:
23866:
23866: typedef result_type (*invoker_type)(function_buffer&
23866: ,
23866: T0);
23866:
23866: template<typename F>
23866: bool assign_to(F f, function_buffer& functor) const
23866: {
23866: typedef typename get_function_tag<F>::type tag;
23866: return assign_to(f, functor, tag());
23866: }
23866: template<typename F,typename Allocator>
23866: bool assign_to_a(F f, function_buffer& functor, Allocator a) const
23866: {
23866: typedef typename get_function_tag<F>::type tag;
23866: return assign_to_a(f, functor, a, tag());
23866: }
23866:
23866: void clear(function_buffer& functor) const
23866: {
23866: if (base.manager)
23866: base.manager(functor, functor, destroy_functor_tag);
23866: }
23866:
23866: private:
23866:
23866: template<typename FunctionPtr>
23866: bool
23866: assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag) const
23866: {
23866: this->clear(functor);
23866: if (f) {
23866:
23866:
23866: functor.members.func_ptr = reinterpret_cast<void (*)()>(f);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename FunctionPtr,typename Allocator>
23866: bool
23866: assign_to_a(FunctionPtr f, function_buffer& functor, Allocator, function_ptr_tag) const
23866: {
23866: return assign_to(f,functor,function_ptr_tag());
23866: }
23866:
23866:
23866:
23866: template<typename MemberPtr>
23866: bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag) const
23866: {
23866:
23866:
23866:
23866: if (f) {
23866: this->assign_to(boost::mem_fn(f), functor);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename MemberPtr,typename Allocator>
23866: bool assign_to_a(MemberPtr f, function_buffer& functor, Allocator a, member_ptr_tag) const
23866: {
23866:
23866:
23866:
23866: if (f) {
23866: this->assign_to_a(boost::mem_fn(f), functor, a);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866: template<typename FunctionObj>
23866: void
23866: assign_functor(FunctionObj f, function_buffer& functor, true_type) const
23866: {
23866: new (reinterpret_cast<void*>(functor.data)) FunctionObj(f);
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: void
23866: assign_functor_a(FunctionObj f, function_buffer& functor, Allocator, true_type) const
23866: {
23866: assign_functor(f,functor,true_type());
23866: }
23866:
23866:
23866: template<typename FunctionObj>
23866: void
23866: assign_functor(FunctionObj f, function_buffer& functor, false_type) const
23866: {
23866: functor.members.obj_ptr = new FunctionObj(f);
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: void
23866: assign_functor_a(FunctionObj f, function_buffer& functor, Allocator a, false_type) const
23866: {
23866: typedef functor_wrapper<FunctionObj,Allocator> functor_wrapper_type;
23866:
23866:
23866:
23866:
23866:
23866: using wrapper_allocator_type = typename std::allocator_traits<Allocator>::template rebind_alloc<functor_wrapper_type>;
23866: using wrapper_allocator_pointer_type = typename std::allocator_traits<wrapper_allocator_type>::pointer;
23866:
23866: wrapper_allocator_type wrapper_allocator(a);
23866: wrapper_allocator_pointer_type copy = wrapper_allocator.allocate(1);
23866:
23866:
23866:
23866: std::allocator_traits<wrapper_allocator_type>::construct(wrapper_allocator, copy, functor_wrapper_type(f,a));
23866:
23866: functor_wrapper_type* new_f = static_cast<functor_wrapper_type*>(copy);
23866: functor.members.obj_ptr = new_f;
23866: }
23866:
23866: template<typename FunctionObj>
23866: bool
23866: assign_to(FunctionObj f, function_buffer& functor, function_obj_tag) const
23866: {
23866: if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
23866: assign_functor(f, functor,
23866: integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>());
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: bool
23866: assign_to_a(FunctionObj f, function_buffer& functor, Allocator a, function_obj_tag) const
23866: {
23866: if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
23866: assign_functor_a(f, functor, a,
23866: integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>());
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866:
23866:
23866: template<typename FunctionObj>
23866: bool
23866: assign_to(const reference_wrapper<FunctionObj>& f,
23866: function_buffer& functor, function_obj_ref_tag) const
23866: {
23866: functor.members.obj_ref.obj_ptr = (void *)(f.get_pointer());
23866: functor.members.obj_ref.is_const_qualified = is_const<FunctionObj>::value;
23866: functor.members.obj_ref.is_volatile_qualified = is_volatile<FunctionObj>::value;
23866: return true;
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: bool
23866: assign_to_a(const reference_wrapper<FunctionObj>& f,
23866: function_buffer& functor, Allocator, function_obj_ref_tag) const
23866: {
23866: return assign_to(f,functor,function_obj_ref_tag());
23866: }
23866:
23866: public:
23866: vtable_base base;
23866: invoker_type invoker;
23866: };
23866: }
23866: }
23866:
23866: template<
23866: typename R ,
23866: typename T0
23866: >
23866: class function1 : public function_base
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866:
23866:
23866:
23866:
23866:
23866: private:
23866: typedef boost::detail::function::basic_vtable1<
23866: R , T0>
23866: vtable_type;
23866:
23866: vtable_type* get_vtable() const {
23866: return reinterpret_cast<vtable_type*>(
23866: reinterpret_cast<std::size_t>(vtable) & ~static_cast<std::size_t>(0x01));
23866: }
23866:
23866: struct clear_type {};
23866:
23866: public:
23866: static const int args = 1;
23866:
23866:
23866: template<typename Args>
23866: struct sig
23866: {
23866: typedef result_type type;
23866: };
23866:
23866:
23866: typedef T0 argument_type;
23866:
23866:
23866:
23866:
23866:
23866: static const int arity = 1;
23866: typedef T0 arg1_type;
23866:
23866: typedef function1 self_type;
23866:
23866: function1() = default;
23866:
23866:
23866:
23866: template<typename Functor>
23866: function1(Functor f
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: function_base()
23866: {
23866: this->assign_to(f);
23866: }
23866: template<typename Functor,typename Allocator>
23866: function1(Functor f, Allocator a
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: function_base()
23866: {
23866: this->assign_to_a(f,a);
23866: }
23866:
23866:
23866: function1(clear_type*) : function_base() { }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: function1(const function1& f) : function_base()
23866: {
23866: this->assign_to_own(f);
23866: }
23866:
23866:
23866: function1(function1&& f) : function_base()
23866: {
23866: this->move_assign(f);
23866: }
23866:
23866:
23866: ~function1() { clear(); }
23866:
23866: result_type operator()( T0 a0) const
23866: {
23866: if (this->empty())
23866: boost::throw_exception(bad_function_call());
23866:
23866: return get_vtable()->invoker
23866: (this->functor , static_cast<T0&&>(a0));
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename Functor>
23866:
23866: typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: function1&>::type
23866:
23866:
23866:
23866: operator=(Functor f)
23866: {
23866: this->clear();
23866: { try {
23866: this->assign_to(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866: template<typename Functor,typename Allocator>
23866: void assign(Functor f, Allocator a)
23866: {
23866: this->clear();
23866: { try{
23866: this->assign_to_a(f,a);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: }
23866:
23866:
23866: function1& operator=(clear_type*)
23866: {
23866: this->clear();
23866: return *this;
23866: }
23866: # 821 "/usr/include/boost/function/function_template.hpp" 3 4
23866: function1& operator=(const function1& f)
23866: {
23866: if (&f == this)
23866: return *this;
23866:
23866: this->clear();
23866: { try {
23866: this->assign_to_own(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866:
23866:
23866:
23866: function1& operator=(function1&& f)
23866: {
23866: if (&f == this)
23866: return *this;
23866:
23866: this->clear();
23866: { try {
23866: this->move_assign(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866:
23866:
23866: void swap(function1& other)
23866: {
23866: if (&other == this)
23866: return;
23866:
23866: function1 tmp;
23866: tmp.move_assign(*this);
23866: this->move_assign(other);
23866: other.move_assign(tmp);
23866: }
23866:
23866:
23866: void clear()
23866: {
23866: if (vtable) {
23866: if (!this->has_trivial_copy_and_destroy())
23866: get_vtable()->clear(this->functor);
23866: vtable = 0;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866:
23866: private:
23866: struct dummy {
23866: void nonnull() {}
23866: };
23866:
23866: typedef void (dummy::*safe_bool)();
23866:
23866: public:
23866: operator safe_bool () const
23866: { return (this->empty())? 0 : &dummy::nonnull; }
23866:
23866: bool operator!() const
23866: { return this->empty(); }
23866:
23866:
23866: private:
23866: void assign_to_own(const function1& f)
23866: {
23866: if (!f.empty()) {
23866: this->vtable = f.vtable;
23866: if (this->has_trivial_copy_and_destroy()) {
23866:
23866:
23866:
23866: #pragma GCC diagnostic push
23866:
23866:
23866: #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
23866:
23866: std::memcpy(this->functor.data, f.functor.data, sizeof(boost::detail::function::function_buffer));
23866:
23866: #pragma GCC diagnostic pop
23866:
23866: } else
23866: get_vtable()->base.manager(f.functor, this->functor,
23866: boost::detail::function::clone_functor_tag);
23866: }
23866: }
23866:
23866: template<typename Functor>
23866: void assign_to(Functor f)
23866: {
23866: using boost::detail::function::vtable_base;
23866:
23866: typedef typename boost::detail::function::get_function_tag<Functor>::type tag;
23866: typedef boost::detail::function::get_invoker1<tag> get_invoker;
23866: typedef typename get_invoker::
23866: template apply<Functor, R ,
23866: T0>
23866: handler_type;
23866:
23866: typedef typename handler_type::invoker_type invoker_type;
23866: typedef typename handler_type::manager_type manager_type;
23866:
23866:
23866:
23866:
23866:
23866: static const vtable_type stored_vtable =
23866: { { &manager_type::manage }, &invoker_type::invoke };
23866:
23866: if (stored_vtable.assign_to(f, functor)) {
23866: std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
23866:
23866: if (boost::has_trivial_copy_constructor<Functor>::value &&
23866: boost::has_trivial_destructor<Functor>::value &&
23866: boost::detail::function::function_allows_small_object_optimization<Functor>::value)
23866: value |= static_cast<std::size_t>(0x01);
23866: vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value);
23866: } else
23866: vtable = 0;
23866: }
23866:
23866: template<typename Functor,typename Allocator>
23866: void assign_to_a(Functor f,Allocator a)
23866: {
23866: using boost::detail::function::vtable_base;
23866:
23866: typedef typename boost::detail::function::get_function_tag<Functor>::type tag;
23866: typedef boost::detail::function::get_invoker1<tag> get_invoker;
23866: typedef typename get_invoker::
23866: template apply_a<Functor, Allocator, R ,
23866: T0>
23866: handler_type;
23866:
23866: typedef typename handler_type::invoker_type invoker_type;
23866: typedef typename handler_type::manager_type manager_type;
23866:
23866:
23866:
23866:
23866:
23866: static const vtable_type stored_vtable =
23866: { { &manager_type::manage }, &invoker_type::invoke };
23866:
23866: if (stored_vtable.assign_to_a(f, functor, a)) {
23866: std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
23866:
23866: if (boost::has_trivial_copy_constructor<Functor>::value &&
23866: boost::has_trivial_destructor<Functor>::value &&
23866: boost::detail::function::function_allows_small_object_optimization<Functor>::value)
23866: value |= static_cast<std::size_t>(0x01);
23866: vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value);
23866: } else
23866: vtable = 0;
23866: }
23866:
23866:
23866:
23866:
23866: void move_assign(function1& f)
23866: {
23866: if (&f == this)
23866: return;
23866:
23866: { try {
23866: if (!f.empty()) {
23866: this->vtable = f.vtable;
23866: if (this->has_trivial_copy_and_destroy()) {
23866:
23866:
23866:
23866: #pragma GCC diagnostic push
23866:
23866:
23866: #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
23866:
23866: std::memcpy(this->functor.data, f.functor.data, sizeof(this->functor.data));
23866:
23866: #pragma GCC diagnostic pop
23866:
23866: } else
23866: get_vtable()->base.manager(f.functor, this->functor,
23866: boost::detail::function::move_functor_tag);
23866: f.vtable = 0;
23866: } else {
23866: clear();
23866: }
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: }
23866: };
23866:
23866: template<typename R , typename T0>
23866: inline void swap(function1<
23866: R ,
23866: T0
23866: >& f1,
23866: function1<
23866: R ,
23866: T0
23866: >& f2)
23866: {
23866: f1.swap(f2);
23866: }
23866:
23866:
23866: template<typename R , typename T0>
23866: void operator==(const function1<
23866: R ,
23866: T0>&,
23866: const function1<
23866: R ,
23866: T0>&);
23866: template<typename R , typename T0>
23866: void operator!=(const function1<
23866: R ,
23866: T0>&,
23866: const function1<
23866: R ,
23866: T0>& );
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_PARTIAL_SPEC R (BOOST_FUNCTION_TEMPLATE_ARGS)
23866:
23866:
23866: template<typename R ,
23866: typename T0>
23866: class function<R ( T0)>
23866: : public function1<R , T0>
23866: {
23866: typedef function1<R , T0> base_type;
23866: typedef function self_type;
23866:
23866: struct clear_type {};
23866:
23866: public:
23866:
23866: function() = default;
23866:
23866: template<typename Functor>
23866: function(Functor f
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: base_type(f)
23866: {
23866: }
23866: template<typename Functor,typename Allocator>
23866: function(Functor f, Allocator a
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: base_type(f,a)
23866: {
23866: }
23866:
23866:
23866: function(clear_type*) : base_type() {}
23866:
23866:
23866: function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}
23866:
23866: function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}
23866:
23866:
23866:
23866: function(self_type&& f): base_type(static_cast<base_type&&>(f)){}
23866: function(base_type&& f): base_type(static_cast<base_type&&>(f)){}
23866:
23866:
23866: self_type& operator=(const self_type& f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(self_type&& f)
23866: {
23866: self_type(static_cast<self_type&&>(f)).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: template<typename Functor>
23866:
23866: typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: self_type&>::type
23866:
23866:
23866:
23866: operator=(Functor f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(clear_type*)
23866: {
23866: this->clear();
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(const base_type& f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(base_type&& f)
23866: {
23866: self_type(static_cast<base_type&&>(f)).swap(*this);
23866: return *this;
23866: }
23866:
23866: };
23866:
23866: #undef BOOST_FUNCTION_PARTIAL_SPEC
23866:
23866:
23866: }
23866:
23866:
23866: #undef BOOST_FUNCTION_VTABLE
23866: #undef BOOST_FUNCTION_COMMA
23866: #undef BOOST_FUNCTION_FUNCTION
23866: #undef BOOST_FUNCTION_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_MEMBER_INVOKER
23866: #undef BOOST_FUNCTION_VOID_MEMBER_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_GET_MEM_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_GET_INVOKER
23866: #undef BOOST_FUNCTION_TEMPLATE_PARMS
23866: #undef BOOST_FUNCTION_TEMPLATE_ARGS
23866: #undef BOOST_FUNCTION_PARMS
23866: #undef BOOST_FUNCTION_PARM
23866:
23866: #undef BOOST_FUNCTION_ARG
23866:
23866: #undef BOOST_FUNCTION_ARGS
23866: #undef BOOST_FUNCTION_ARG_TYPE
23866: #undef BOOST_FUNCTION_ARG_TYPES
23866: #undef BOOST_FUNCTION_VOID_RETURN_TYPE
23866: #undef BOOST_FUNCTION_RETURN
23866: # 23 "/usr/include/boost/function/detail/maybe_include.hpp" 2 3 4
23866: # 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
23866: #undef BOOST_FUNCTION_NUM_ARGS
23866: # 53 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_1
23866:
23866:
23866: #define BOOST_PP_ITERATION_1 2
23866: # 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
23866: # 13 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
23866: #define BOOST_FUNCTION_NUM_ARGS BOOST_PP_ITERATION()
23866: # 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
23866: # 25 "/usr/include/boost/function/detail/maybe_include.hpp" 3 4
23866: #undef BOOST_FUNCTION_MAX_ARGS_DEFINED
23866: #define BOOST_FUNCTION_MAX_ARGS_DEFINED 2
23866:
23866: #define BOOST_FUNCTION_2
23866: # 1 "/usr/include/boost/function/function_template.hpp" 1 3 4
23866: # 21 "/usr/include/boost/function/function_template.hpp" 3 4
23866: #define BOOST_FUNCTION_TEMPLATE_PARMS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, typename T)
23866:
23866: #define BOOST_FUNCTION_TEMPLATE_ARGS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, T)
23866:
23866: #define BOOST_FUNCTION_PARM(J,I,D) BOOST_PP_CAT(T,I) BOOST_PP_CAT(a,I)
23866:
23866: #define BOOST_FUNCTION_PARMS BOOST_PP_ENUM(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_PARM,BOOST_PP_EMPTY)
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_ARG(J,I,D) static_cast<BOOST_PP_CAT(T,I)&&>(BOOST_PP_CAT(a,I))
23866: #define BOOST_FUNCTION_ARGS BOOST_PP_ENUM(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_ARG,BOOST_PP_EMPTY)
23866:
23866:
23866: #define BOOST_FUNCTION_ARG_TYPE(J,I,D) typedef BOOST_PP_CAT(T,I) BOOST_PP_CAT(BOOST_PP_CAT(arg, BOOST_PP_INC(I)),_type);
23866:
23866:
23866: #define BOOST_FUNCTION_ARG_TYPES BOOST_PP_REPEAT(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_ARG_TYPE,BOOST_PP_EMPTY)
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_COMMA ,
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_FUNCTION BOOST_JOIN(function,BOOST_FUNCTION_NUM_ARGS)
23866: #define BOOST_FUNCTION_FUNCTION_INVOKER BOOST_JOIN(function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_INVOKER BOOST_JOIN(void_function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_FUNCTION_OBJ_INVOKER BOOST_JOIN(function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER BOOST_JOIN(void_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_FUNCTION_REF_INVOKER BOOST_JOIN(function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER BOOST_JOIN(void_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_MEMBER_INVOKER BOOST_JOIN(function_mem_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_MEMBER_INVOKER BOOST_JOIN(function_void_mem_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_INVOKER BOOST_JOIN(get_function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER BOOST_JOIN(get_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER BOOST_JOIN(get_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_MEMBER_INVOKER BOOST_JOIN(get_member_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_INVOKER BOOST_JOIN(get_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VTABLE BOOST_JOIN(basic_vtable,BOOST_FUNCTION_NUM_ARGS)
23866:
23866:
23866: #define BOOST_FUNCTION_VOID_RETURN_TYPE void
23866: #define BOOST_FUNCTION_RETURN(X) X
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace detail {
23866: namespace function {
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0 , typename T1
23866: >
23866: struct function_invoker2
23866: {
23866: static R invoke(function_buffer& function_ptr ,
23866: T0 a0 , T1 a1)
23866: {
23866: FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.members.func_ptr);
23866: return f( static_cast<T0&&>(a0) , static_cast<T1&&>(a1));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0 , typename T1
23866: >
23866: struct void_function_invoker2
23866: {
23866: static void
23866: invoke(function_buffer& function_ptr ,
23866: T0 a0 , T1 a1)
23866:
23866: {
23866: FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.members.func_ptr);
23866: f( static_cast<T0&&>(a0) , static_cast<T1&&>(a1));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1
23866: >
23866: struct function_obj_invoker2
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1)
23866:
23866: {
23866: FunctionObj* f;
23866: if (function_allows_small_object_optimization<FunctionObj>::value)
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.data);
23866: else
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: return (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1
23866: >
23866: struct void_function_obj_invoker2
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1)
23866:
23866: {
23866: FunctionObj* f;
23866: if (function_allows_small_object_optimization<FunctionObj>::value)
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.data);
23866: else
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1
23866: >
23866: struct function_ref_invoker2
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1)
23866:
23866: {
23866: FunctionObj* f =
23866: reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: return (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1
23866: >
23866: struct void_function_ref_invoker2
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1)
23866:
23866: {
23866: FunctionObj* f =
23866: reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1));
23866: }
23866: };
23866:
23866:
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0 , typename T1
23866: >
23866: struct function_mem_invoker2
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1)
23866:
23866: {
23866: MemberPtr* f =
23866: reinterpret_cast<MemberPtr*>(function_obj_ptr.data);
23866: return boost::mem_fn(*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1));
23866: }
23866: };
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0 , typename T1
23866: >
23866: struct function_void_mem_invoker2
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1)
23866:
23866: {
23866: MemberPtr* f =
23866: reinterpret_cast<MemberPtr*>(function_obj_ptr.data);
23866: boost::mem_fn(*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1));
23866: }
23866: };
23866:
23866:
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0 , typename T1
23866: >
23866: struct get_function_invoker2
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_invoker2<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1
23866: >,
23866: function_invoker2<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1
23866: >
23866: >::type type;
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1
23866: >
23866: struct get_function_obj_invoker2
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_obj_invoker2<
23866: FunctionObj,
23866: R ,
23866: T0 , T1
23866: >,
23866: function_obj_invoker2<
23866: FunctionObj,
23866: R ,
23866: T0 , T1
23866: >
23866: >::type type;
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1
23866: >
23866: struct get_function_ref_invoker2
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_ref_invoker2<
23866: FunctionObj,
23866: R ,
23866: T0 , T1
23866: >,
23866: function_ref_invoker2<
23866: FunctionObj,
23866: R ,
23866: T0 , T1
23866: >
23866: >::type type;
23866: };
23866:
23866:
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0 , typename T1
23866: >
23866: struct get_member_invoker2
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: function_void_mem_invoker2<
23866: MemberPtr,
23866: R ,
23866: T0 , T1
23866: >,
23866: function_mem_invoker2<
23866: MemberPtr,
23866: R ,
23866: T0 , T1
23866: >
23866: >::type type;
23866: };
23866: # 331 "/usr/include/boost/function/function_template.hpp" 3 4
23866: template<typename Tag>
23866: struct get_invoker2 { };
23866:
23866:
23866: template<>
23866: struct get_invoker2<function_ptr_tag>
23866: {
23866: template<typename FunctionPtr,
23866: typename R , typename T0 , typename T1>
23866: struct apply
23866: {
23866: typedef typename get_function_invoker2<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionPtr> manager_type;
23866: };
23866:
23866: template<typename FunctionPtr, typename Allocator,
23866: typename R , typename T0 , typename T1>
23866: struct apply_a
23866: {
23866: typedef typename get_function_invoker2<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionPtr> manager_type;
23866: };
23866: };
23866:
23866:
23866:
23866: template<>
23866: struct get_invoker2<member_ptr_tag>
23866: {
23866: template<typename MemberPtr,
23866: typename R , typename T0 , typename T1>
23866: struct apply
23866: {
23866: typedef typename get_member_invoker2<
23866: MemberPtr,
23866: R ,
23866: T0 , T1
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<MemberPtr> manager_type;
23866: };
23866:
23866: template<typename MemberPtr, typename Allocator,
23866: typename R , typename T0 , typename T1>
23866: struct apply_a
23866: {
23866: typedef typename get_member_invoker2<
23866: MemberPtr,
23866: R ,
23866: T0 , T1
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<MemberPtr> manager_type;
23866: };
23866: };
23866:
23866:
23866:
23866: template<>
23866: struct get_invoker2<function_obj_tag>
23866: {
23866: template<typename FunctionObj,
23866: typename R , typename T0 , typename T1>
23866: struct apply
23866: {
23866: typedef typename get_function_obj_invoker2<
23866: FunctionObj,
23866: R ,
23866: T0 , T1
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionObj> manager_type;
23866: };
23866:
23866: template<typename FunctionObj, typename Allocator,
23866: typename R , typename T0 , typename T1>
23866: struct apply_a
23866: {
23866: typedef typename get_function_obj_invoker2<
23866: FunctionObj,
23866: R ,
23866: T0 , T1
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager_a<FunctionObj, Allocator> manager_type;
23866: };
23866: };
23866:
23866:
23866: template<>
23866: struct get_invoker2<function_obj_ref_tag>
23866: {
23866: template<typename RefWrapper,
23866: typename R , typename T0 , typename T1>
23866: struct apply
23866: {
23866: typedef typename get_function_ref_invoker2<
23866: typename RefWrapper::type,
23866: R ,
23866: T0 , T1
23866: >::type
23866: invoker_type;
23866:
23866: typedef reference_manager<typename RefWrapper::type> manager_type;
23866: };
23866:
23866: template<typename RefWrapper, typename Allocator,
23866: typename R , typename T0 , typename T1>
23866: struct apply_a
23866: {
23866: typedef typename get_function_ref_invoker2<
23866: typename RefWrapper::type,
23866: R ,
23866: T0 , T1
23866: >::type
23866: invoker_type;
23866:
23866: typedef reference_manager<typename RefWrapper::type> manager_type;
23866: };
23866: };
23866: # 476 "/usr/include/boost/function/function_template.hpp" 3 4
23866: template<typename R , typename T0 , typename T1>
23866: struct basic_vtable2
23866: {
23866:
23866: typedef R result_type;
23866:
23866:
23866:
23866:
23866: typedef result_type (*invoker_type)(function_buffer&
23866: ,
23866: T0 , T1);
23866:
23866: template<typename F>
23866: bool assign_to(F f, function_buffer& functor) const
23866: {
23866: typedef typename get_function_tag<F>::type tag;
23866: return assign_to(f, functor, tag());
23866: }
23866: template<typename F,typename Allocator>
23866: bool assign_to_a(F f, function_buffer& functor, Allocator a) const
23866: {
23866: typedef typename get_function_tag<F>::type tag;
23866: return assign_to_a(f, functor, a, tag());
23866: }
23866:
23866: void clear(function_buffer& functor) const
23866: {
23866: if (base.manager)
23866: base.manager(functor, functor, destroy_functor_tag);
23866: }
23866:
23866: private:
23866:
23866: template<typename FunctionPtr>
23866: bool
23866: assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag) const
23866: {
23866: this->clear(functor);
23866: if (f) {
23866:
23866:
23866: functor.members.func_ptr = reinterpret_cast<void (*)()>(f);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename FunctionPtr,typename Allocator>
23866: bool
23866: assign_to_a(FunctionPtr f, function_buffer& functor, Allocator, function_ptr_tag) const
23866: {
23866: return assign_to(f,functor,function_ptr_tag());
23866: }
23866:
23866:
23866:
23866: template<typename MemberPtr>
23866: bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag) const
23866: {
23866:
23866:
23866:
23866: if (f) {
23866: this->assign_to(boost::mem_fn(f), functor);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename MemberPtr,typename Allocator>
23866: bool assign_to_a(MemberPtr f, function_buffer& functor, Allocator a, member_ptr_tag) const
23866: {
23866:
23866:
23866:
23866: if (f) {
23866: this->assign_to_a(boost::mem_fn(f), functor, a);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866: template<typename FunctionObj>
23866: void
23866: assign_functor(FunctionObj f, function_buffer& functor, true_type) const
23866: {
23866: new (reinterpret_cast<void*>(functor.data)) FunctionObj(f);
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: void
23866: assign_functor_a(FunctionObj f, function_buffer& functor, Allocator, true_type) const
23866: {
23866: assign_functor(f,functor,true_type());
23866: }
23866:
23866:
23866: template<typename FunctionObj>
23866: void
23866: assign_functor(FunctionObj f, function_buffer& functor, false_type) const
23866: {
23866: functor.members.obj_ptr = new FunctionObj(f);
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: void
23866: assign_functor_a(FunctionObj f, function_buffer& functor, Allocator a, false_type) const
23866: {
23866: typedef functor_wrapper<FunctionObj,Allocator> functor_wrapper_type;
23866:
23866:
23866:
23866:
23866:
23866: using wrapper_allocator_type = typename std::allocator_traits<Allocator>::template rebind_alloc<functor_wrapper_type>;
23866: using wrapper_allocator_pointer_type = typename std::allocator_traits<wrapper_allocator_type>::pointer;
23866:
23866: wrapper_allocator_type wrapper_allocator(a);
23866: wrapper_allocator_pointer_type copy = wrapper_allocator.allocate(1);
23866:
23866:
23866:
23866: std::allocator_traits<wrapper_allocator_type>::construct(wrapper_allocator, copy, functor_wrapper_type(f,a));
23866:
23866: functor_wrapper_type* new_f = static_cast<functor_wrapper_type*>(copy);
23866: functor.members.obj_ptr = new_f;
23866: }
23866:
23866: template<typename FunctionObj>
23866: bool
23866: assign_to(FunctionObj f, function_buffer& functor, function_obj_tag) const
23866: {
23866: if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
23866: assign_functor(f, functor,
23866: integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>());
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: bool
23866: assign_to_a(FunctionObj f, function_buffer& functor, Allocator a, function_obj_tag) const
23866: {
23866: if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
23866: assign_functor_a(f, functor, a,
23866: integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>());
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866:
23866:
23866: template<typename FunctionObj>
23866: bool
23866: assign_to(const reference_wrapper<FunctionObj>& f,
23866: function_buffer& functor, function_obj_ref_tag) const
23866: {
23866: functor.members.obj_ref.obj_ptr = (void *)(f.get_pointer());
23866: functor.members.obj_ref.is_const_qualified = is_const<FunctionObj>::value;
23866: functor.members.obj_ref.is_volatile_qualified = is_volatile<FunctionObj>::value;
23866: return true;
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: bool
23866: assign_to_a(const reference_wrapper<FunctionObj>& f,
23866: function_buffer& functor, Allocator, function_obj_ref_tag) const
23866: {
23866: return assign_to(f,functor,function_obj_ref_tag());
23866: }
23866:
23866: public:
23866: vtable_base base;
23866: invoker_type invoker;
23866: };
23866: }
23866: }
23866:
23866: template<
23866: typename R ,
23866: typename T0 , typename T1
23866: >
23866: class function2 : public function_base
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866:
23866:
23866:
23866:
23866:
23866: private:
23866: typedef boost::detail::function::basic_vtable2<
23866: R , T0 , T1>
23866: vtable_type;
23866:
23866: vtable_type* get_vtable() const {
23866: return reinterpret_cast<vtable_type*>(
23866: reinterpret_cast<std::size_t>(vtable) & ~static_cast<std::size_t>(0x01));
23866: }
23866:
23866: struct clear_type {};
23866:
23866: public:
23866: static const int args = 2;
23866:
23866:
23866: template<typename Args>
23866: struct sig
23866: {
23866: typedef result_type type;
23866: };
23866:
23866:
23866:
23866:
23866: typedef T0 first_argument_type;
23866: typedef T1 second_argument_type;
23866:
23866:
23866: static const int arity = 2;
23866: typedef T0 arg1_type; typedef T1 arg2_type;
23866:
23866: typedef function2 self_type;
23866:
23866: function2() = default;
23866:
23866:
23866:
23866: template<typename Functor>
23866: function2(Functor f
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: function_base()
23866: {
23866: this->assign_to(f);
23866: }
23866: template<typename Functor,typename Allocator>
23866: function2(Functor f, Allocator a
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: function_base()
23866: {
23866: this->assign_to_a(f,a);
23866: }
23866:
23866:
23866: function2(clear_type*) : function_base() { }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: function2(const function2& f) : function_base()
23866: {
23866: this->assign_to_own(f);
23866: }
23866:
23866:
23866: function2(function2&& f) : function_base()
23866: {
23866: this->move_assign(f);
23866: }
23866:
23866:
23866: ~function2() { clear(); }
23866:
23866: result_type operator()( T0 a0 , T1 a1) const
23866: {
23866: if (this->empty())
23866: boost::throw_exception(bad_function_call());
23866:
23866: return get_vtable()->invoker
23866: (this->functor , static_cast<T0&&>(a0) , static_cast<T1&&>(a1));
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename Functor>
23866:
23866: typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: function2&>::type
23866:
23866:
23866:
23866: operator=(Functor f)
23866: {
23866: this->clear();
23866: { try {
23866: this->assign_to(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866: template<typename Functor,typename Allocator>
23866: void assign(Functor f, Allocator a)
23866: {
23866: this->clear();
23866: { try{
23866: this->assign_to_a(f,a);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: }
23866:
23866:
23866: function2& operator=(clear_type*)
23866: {
23866: this->clear();
23866: return *this;
23866: }
23866: # 821 "/usr/include/boost/function/function_template.hpp" 3 4
23866: function2& operator=(const function2& f)
23866: {
23866: if (&f == this)
23866: return *this;
23866:
23866: this->clear();
23866: { try {
23866: this->assign_to_own(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866:
23866:
23866:
23866: function2& operator=(function2&& f)
23866: {
23866: if (&f == this)
23866: return *this;
23866:
23866: this->clear();
23866: { try {
23866: this->move_assign(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866:
23866:
23866: void swap(function2& other)
23866: {
23866: if (&other == this)
23866: return;
23866:
23866: function2 tmp;
23866: tmp.move_assign(*this);
23866: this->move_assign(other);
23866: other.move_assign(tmp);
23866: }
23866:
23866:
23866: void clear()
23866: {
23866: if (vtable) {
23866: if (!this->has_trivial_copy_and_destroy())
23866: get_vtable()->clear(this->functor);
23866: vtable = 0;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866:
23866: private:
23866: struct dummy {
23866: void nonnull() {}
23866: };
23866:
23866: typedef void (dummy::*safe_bool)();
23866:
23866: public:
23866: operator safe_bool () const
23866: { return (this->empty())? 0 : &dummy::nonnull; }
23866:
23866: bool operator!() const
23866: { return this->empty(); }
23866:
23866:
23866: private:
23866: void assign_to_own(const function2& f)
23866: {
23866: if (!f.empty()) {
23866: this->vtable = f.vtable;
23866: if (this->has_trivial_copy_and_destroy()) {
23866:
23866:
23866:
23866: #pragma GCC diagnostic push
23866:
23866:
23866: #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
23866:
23866: std::memcpy(this->functor.data, f.functor.data, sizeof(boost::detail::function::function_buffer));
23866:
23866: #pragma GCC diagnostic pop
23866:
23866: } else
23866: get_vtable()->base.manager(f.functor, this->functor,
23866: boost::detail::function::clone_functor_tag);
23866: }
23866: }
23866:
23866: template<typename Functor>
23866: void assign_to(Functor f)
23866: {
23866: using boost::detail::function::vtable_base;
23866:
23866: typedef typename boost::detail::function::get_function_tag<Functor>::type tag;
23866: typedef boost::detail::function::get_invoker2<tag> get_invoker;
23866: typedef typename get_invoker::
23866: template apply<Functor, R ,
23866: T0 , T1>
23866: handler_type;
23866:
23866: typedef typename handler_type::invoker_type invoker_type;
23866: typedef typename handler_type::manager_type manager_type;
23866:
23866:
23866:
23866:
23866:
23866: static const vtable_type stored_vtable =
23866: { { &manager_type::manage }, &invoker_type::invoke };
23866:
23866: if (stored_vtable.assign_to(f, functor)) {
23866: std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
23866:
23866: if (boost::has_trivial_copy_constructor<Functor>::value &&
23866: boost::has_trivial_destructor<Functor>::value &&
23866: boost::detail::function::function_allows_small_object_optimization<Functor>::value)
23866: value |= static_cast<std::size_t>(0x01);
23866: vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value);
23866: } else
23866: vtable = 0;
23866: }
23866:
23866: template<typename Functor,typename Allocator>
23866: void assign_to_a(Functor f,Allocator a)
23866: {
23866: using boost::detail::function::vtable_base;
23866:
23866: typedef typename boost::detail::function::get_function_tag<Functor>::type tag;
23866: typedef boost::detail::function::get_invoker2<tag> get_invoker;
23866: typedef typename get_invoker::
23866: template apply_a<Functor, Allocator, R ,
23866: T0 , T1>
23866: handler_type;
23866:
23866: typedef typename handler_type::invoker_type invoker_type;
23866: typedef typename handler_type::manager_type manager_type;
23866:
23866:
23866:
23866:
23866:
23866: static const vtable_type stored_vtable =
23866: { { &manager_type::manage }, &invoker_type::invoke };
23866:
23866: if (stored_vtable.assign_to_a(f, functor, a)) {
23866: std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
23866:
23866: if (boost::has_trivial_copy_constructor<Functor>::value &&
23866: boost::has_trivial_destructor<Functor>::value &&
23866: boost::detail::function::function_allows_small_object_optimization<Functor>::value)
23866: value |= static_cast<std::size_t>(0x01);
23866: vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value);
23866: } else
23866: vtable = 0;
23866: }
23866:
23866:
23866:
23866:
23866: void move_assign(function2& f)
23866: {
23866: if (&f == this)
23866: return;
23866:
23866: { try {
23866: if (!f.empty()) {
23866: this->vtable = f.vtable;
23866: if (this->has_trivial_copy_and_destroy()) {
23866:
23866:
23866:
23866: #pragma GCC diagnostic push
23866:
23866:
23866: #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
23866:
23866: std::memcpy(this->functor.data, f.functor.data, sizeof(this->functor.data));
23866:
23866: #pragma GCC diagnostic pop
23866:
23866: } else
23866: get_vtable()->base.manager(f.functor, this->functor,
23866: boost::detail::function::move_functor_tag);
23866: f.vtable = 0;
23866: } else {
23866: clear();
23866: }
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: }
23866: };
23866:
23866: template<typename R , typename T0 , typename T1>
23866: inline void swap(function2<
23866: R ,
23866: T0 , T1
23866: >& f1,
23866: function2<
23866: R ,
23866: T0 , T1
23866: >& f2)
23866: {
23866: f1.swap(f2);
23866: }
23866:
23866:
23866: template<typename R , typename T0 , typename T1>
23866: void operator==(const function2<
23866: R ,
23866: T0 , T1>&,
23866: const function2<
23866: R ,
23866: T0 , T1>&);
23866: template<typename R , typename T0 , typename T1>
23866: void operator!=(const function2<
23866: R ,
23866: T0 , T1>&,
23866: const function2<
23866: R ,
23866: T0 , T1>& );
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_PARTIAL_SPEC R (BOOST_FUNCTION_TEMPLATE_ARGS)
23866:
23866:
23866: template<typename R ,
23866: typename T0 , typename T1>
23866: class function<R ( T0 , T1)>
23866: : public function2<R , T0 , T1>
23866: {
23866: typedef function2<R , T0 , T1> base_type;
23866: typedef function self_type;
23866:
23866: struct clear_type {};
23866:
23866: public:
23866:
23866: function() = default;
23866:
23866: template<typename Functor>
23866: function(Functor f
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: base_type(f)
23866: {
23866: }
23866: template<typename Functor,typename Allocator>
23866: function(Functor f, Allocator a
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: base_type(f,a)
23866: {
23866: }
23866:
23866:
23866: function(clear_type*) : base_type() {}
23866:
23866:
23866: function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}
23866:
23866: function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}
23866:
23866:
23866:
23866: function(self_type&& f): base_type(static_cast<base_type&&>(f)){}
23866: function(base_type&& f): base_type(static_cast<base_type&&>(f)){}
23866:
23866:
23866: self_type& operator=(const self_type& f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(self_type&& f)
23866: {
23866: self_type(static_cast<self_type&&>(f)).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: template<typename Functor>
23866:
23866: typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: self_type&>::type
23866:
23866:
23866:
23866: operator=(Functor f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(clear_type*)
23866: {
23866: this->clear();
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(const base_type& f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(base_type&& f)
23866: {
23866: self_type(static_cast<base_type&&>(f)).swap(*this);
23866: return *this;
23866: }
23866:
23866: };
23866:
23866: #undef BOOST_FUNCTION_PARTIAL_SPEC
23866:
23866:
23866: }
23866:
23866:
23866: #undef BOOST_FUNCTION_VTABLE
23866: #undef BOOST_FUNCTION_COMMA
23866: #undef BOOST_FUNCTION_FUNCTION
23866: #undef BOOST_FUNCTION_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_MEMBER_INVOKER
23866: #undef BOOST_FUNCTION_VOID_MEMBER_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_GET_MEM_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_GET_INVOKER
23866: #undef BOOST_FUNCTION_TEMPLATE_PARMS
23866: #undef BOOST_FUNCTION_TEMPLATE_ARGS
23866: #undef BOOST_FUNCTION_PARMS
23866: #undef BOOST_FUNCTION_PARM
23866:
23866: #undef BOOST_FUNCTION_ARG
23866:
23866: #undef BOOST_FUNCTION_ARGS
23866: #undef BOOST_FUNCTION_ARG_TYPE
23866: #undef BOOST_FUNCTION_ARG_TYPES
23866: #undef BOOST_FUNCTION_VOID_RETURN_TYPE
23866: #undef BOOST_FUNCTION_RETURN
23866: # 30 "/usr/include/boost/function/detail/maybe_include.hpp" 2 3 4
23866: # 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
23866: #undef BOOST_FUNCTION_NUM_ARGS
23866: # 58 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_1
23866:
23866:
23866: #define BOOST_PP_ITERATION_1 3
23866: # 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
23866: # 13 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
23866: #define BOOST_FUNCTION_NUM_ARGS BOOST_PP_ITERATION()
23866: # 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
23866: # 32 "/usr/include/boost/function/detail/maybe_include.hpp" 3 4
23866: #undef BOOST_FUNCTION_MAX_ARGS_DEFINED
23866: #define BOOST_FUNCTION_MAX_ARGS_DEFINED 3
23866:
23866: #define BOOST_FUNCTION_3
23866: # 1 "/usr/include/boost/function/function_template.hpp" 1 3 4
23866: # 21 "/usr/include/boost/function/function_template.hpp" 3 4
23866: #define BOOST_FUNCTION_TEMPLATE_PARMS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, typename T)
23866:
23866: #define BOOST_FUNCTION_TEMPLATE_ARGS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, T)
23866:
23866: #define BOOST_FUNCTION_PARM(J,I,D) BOOST_PP_CAT(T,I) BOOST_PP_CAT(a,I)
23866:
23866: #define BOOST_FUNCTION_PARMS BOOST_PP_ENUM(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_PARM,BOOST_PP_EMPTY)
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_ARG(J,I,D) static_cast<BOOST_PP_CAT(T,I)&&>(BOOST_PP_CAT(a,I))
23866: #define BOOST_FUNCTION_ARGS BOOST_PP_ENUM(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_ARG,BOOST_PP_EMPTY)
23866:
23866:
23866: #define BOOST_FUNCTION_ARG_TYPE(J,I,D) typedef BOOST_PP_CAT(T,I) BOOST_PP_CAT(BOOST_PP_CAT(arg, BOOST_PP_INC(I)),_type);
23866:
23866:
23866: #define BOOST_FUNCTION_ARG_TYPES BOOST_PP_REPEAT(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_ARG_TYPE,BOOST_PP_EMPTY)
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_COMMA ,
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_FUNCTION BOOST_JOIN(function,BOOST_FUNCTION_NUM_ARGS)
23866: #define BOOST_FUNCTION_FUNCTION_INVOKER BOOST_JOIN(function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_INVOKER BOOST_JOIN(void_function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_FUNCTION_OBJ_INVOKER BOOST_JOIN(function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER BOOST_JOIN(void_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_FUNCTION_REF_INVOKER BOOST_JOIN(function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER BOOST_JOIN(void_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_MEMBER_INVOKER BOOST_JOIN(function_mem_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_MEMBER_INVOKER BOOST_JOIN(function_void_mem_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_INVOKER BOOST_JOIN(get_function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER BOOST_JOIN(get_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER BOOST_JOIN(get_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_MEMBER_INVOKER BOOST_JOIN(get_member_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_INVOKER BOOST_JOIN(get_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VTABLE BOOST_JOIN(basic_vtable,BOOST_FUNCTION_NUM_ARGS)
23866:
23866:
23866: #define BOOST_FUNCTION_VOID_RETURN_TYPE void
23866: #define BOOST_FUNCTION_RETURN(X) X
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace detail {
23866: namespace function {
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2
23866: >
23866: struct function_invoker3
23866: {
23866: static R invoke(function_buffer& function_ptr ,
23866: T0 a0 , T1 a1 , T2 a2)
23866: {
23866: FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.members.func_ptr);
23866: return f( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2
23866: >
23866: struct void_function_invoker3
23866: {
23866: static void
23866: invoke(function_buffer& function_ptr ,
23866: T0 a0 , T1 a1 , T2 a2)
23866:
23866: {
23866: FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.members.func_ptr);
23866: f( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2
23866: >
23866: struct function_obj_invoker3
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2)
23866:
23866: {
23866: FunctionObj* f;
23866: if (function_allows_small_object_optimization<FunctionObj>::value)
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.data);
23866: else
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: return (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2
23866: >
23866: struct void_function_obj_invoker3
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2)
23866:
23866: {
23866: FunctionObj* f;
23866: if (function_allows_small_object_optimization<FunctionObj>::value)
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.data);
23866: else
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2
23866: >
23866: struct function_ref_invoker3
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2)
23866:
23866: {
23866: FunctionObj* f =
23866: reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: return (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2
23866: >
23866: struct void_function_ref_invoker3
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2)
23866:
23866: {
23866: FunctionObj* f =
23866: reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2));
23866: }
23866: };
23866:
23866:
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2
23866: >
23866: struct function_mem_invoker3
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2)
23866:
23866: {
23866: MemberPtr* f =
23866: reinterpret_cast<MemberPtr*>(function_obj_ptr.data);
23866: return boost::mem_fn(*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2));
23866: }
23866: };
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2
23866: >
23866: struct function_void_mem_invoker3
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2)
23866:
23866: {
23866: MemberPtr* f =
23866: reinterpret_cast<MemberPtr*>(function_obj_ptr.data);
23866: boost::mem_fn(*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2));
23866: }
23866: };
23866:
23866:
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2
23866: >
23866: struct get_function_invoker3
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_invoker3<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2
23866: >,
23866: function_invoker3<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2
23866: >
23866: >::type type;
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2
23866: >
23866: struct get_function_obj_invoker3
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_obj_invoker3<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2
23866: >,
23866: function_obj_invoker3<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2
23866: >
23866: >::type type;
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2
23866: >
23866: struct get_function_ref_invoker3
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_ref_invoker3<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2
23866: >,
23866: function_ref_invoker3<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2
23866: >
23866: >::type type;
23866: };
23866:
23866:
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2
23866: >
23866: struct get_member_invoker3
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: function_void_mem_invoker3<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2
23866: >,
23866: function_mem_invoker3<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2
23866: >
23866: >::type type;
23866: };
23866: # 331 "/usr/include/boost/function/function_template.hpp" 3 4
23866: template<typename Tag>
23866: struct get_invoker3 { };
23866:
23866:
23866: template<>
23866: struct get_invoker3<function_ptr_tag>
23866: {
23866: template<typename FunctionPtr,
23866: typename R , typename T0 , typename T1 , typename T2>
23866: struct apply
23866: {
23866: typedef typename get_function_invoker3<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionPtr> manager_type;
23866: };
23866:
23866: template<typename FunctionPtr, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2>
23866: struct apply_a
23866: {
23866: typedef typename get_function_invoker3<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionPtr> manager_type;
23866: };
23866: };
23866:
23866:
23866:
23866: template<>
23866: struct get_invoker3<member_ptr_tag>
23866: {
23866: template<typename MemberPtr,
23866: typename R , typename T0 , typename T1 , typename T2>
23866: struct apply
23866: {
23866: typedef typename get_member_invoker3<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<MemberPtr> manager_type;
23866: };
23866:
23866: template<typename MemberPtr, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2>
23866: struct apply_a
23866: {
23866: typedef typename get_member_invoker3<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<MemberPtr> manager_type;
23866: };
23866: };
23866:
23866:
23866:
23866: template<>
23866: struct get_invoker3<function_obj_tag>
23866: {
23866: template<typename FunctionObj,
23866: typename R , typename T0 , typename T1 , typename T2>
23866: struct apply
23866: {
23866: typedef typename get_function_obj_invoker3<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionObj> manager_type;
23866: };
23866:
23866: template<typename FunctionObj, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2>
23866: struct apply_a
23866: {
23866: typedef typename get_function_obj_invoker3<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager_a<FunctionObj, Allocator> manager_type;
23866: };
23866: };
23866:
23866:
23866: template<>
23866: struct get_invoker3<function_obj_ref_tag>
23866: {
23866: template<typename RefWrapper,
23866: typename R , typename T0 , typename T1 , typename T2>
23866: struct apply
23866: {
23866: typedef typename get_function_ref_invoker3<
23866: typename RefWrapper::type,
23866: R ,
23866: T0 , T1 , T2
23866: >::type
23866: invoker_type;
23866:
23866: typedef reference_manager<typename RefWrapper::type> manager_type;
23866: };
23866:
23866: template<typename RefWrapper, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2>
23866: struct apply_a
23866: {
23866: typedef typename get_function_ref_invoker3<
23866: typename RefWrapper::type,
23866: R ,
23866: T0 , T1 , T2
23866: >::type
23866: invoker_type;
23866:
23866: typedef reference_manager<typename RefWrapper::type> manager_type;
23866: };
23866: };
23866: # 476 "/usr/include/boost/function/function_template.hpp" 3 4
23866: template<typename R , typename T0 , typename T1 , typename T2>
23866: struct basic_vtable3
23866: {
23866:
23866: typedef R result_type;
23866:
23866:
23866:
23866:
23866: typedef result_type (*invoker_type)(function_buffer&
23866: ,
23866: T0 , T1 , T2);
23866:
23866: template<typename F>
23866: bool assign_to(F f, function_buffer& functor) const
23866: {
23866: typedef typename get_function_tag<F>::type tag;
23866: return assign_to(f, functor, tag());
23866: }
23866: template<typename F,typename Allocator>
23866: bool assign_to_a(F f, function_buffer& functor, Allocator a) const
23866: {
23866: typedef typename get_function_tag<F>::type tag;
23866: return assign_to_a(f, functor, a, tag());
23866: }
23866:
23866: void clear(function_buffer& functor) const
23866: {
23866: if (base.manager)
23866: base.manager(functor, functor, destroy_functor_tag);
23866: }
23866:
23866: private:
23866:
23866: template<typename FunctionPtr>
23866: bool
23866: assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag) const
23866: {
23866: this->clear(functor);
23866: if (f) {
23866:
23866:
23866: functor.members.func_ptr = reinterpret_cast<void (*)()>(f);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename FunctionPtr,typename Allocator>
23866: bool
23866: assign_to_a(FunctionPtr f, function_buffer& functor, Allocator, function_ptr_tag) const
23866: {
23866: return assign_to(f,functor,function_ptr_tag());
23866: }
23866:
23866:
23866:
23866: template<typename MemberPtr>
23866: bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag) const
23866: {
23866:
23866:
23866:
23866: if (f) {
23866: this->assign_to(boost::mem_fn(f), functor);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename MemberPtr,typename Allocator>
23866: bool assign_to_a(MemberPtr f, function_buffer& functor, Allocator a, member_ptr_tag) const
23866: {
23866:
23866:
23866:
23866: if (f) {
23866: this->assign_to_a(boost::mem_fn(f), functor, a);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866: template<typename FunctionObj>
23866: void
23866: assign_functor(FunctionObj f, function_buffer& functor, true_type) const
23866: {
23866: new (reinterpret_cast<void*>(functor.data)) FunctionObj(f);
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: void
23866: assign_functor_a(FunctionObj f, function_buffer& functor, Allocator, true_type) const
23866: {
23866: assign_functor(f,functor,true_type());
23866: }
23866:
23866:
23866: template<typename FunctionObj>
23866: void
23866: assign_functor(FunctionObj f, function_buffer& functor, false_type) const
23866: {
23866: functor.members.obj_ptr = new FunctionObj(f);
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: void
23866: assign_functor_a(FunctionObj f, function_buffer& functor, Allocator a, false_type) const
23866: {
23866: typedef functor_wrapper<FunctionObj,Allocator> functor_wrapper_type;
23866:
23866:
23866:
23866:
23866:
23866: using wrapper_allocator_type = typename std::allocator_traits<Allocator>::template rebind_alloc<functor_wrapper_type>;
23866: using wrapper_allocator_pointer_type = typename std::allocator_traits<wrapper_allocator_type>::pointer;
23866:
23866: wrapper_allocator_type wrapper_allocator(a);
23866: wrapper_allocator_pointer_type copy = wrapper_allocator.allocate(1);
23866:
23866:
23866:
23866: std::allocator_traits<wrapper_allocator_type>::construct(wrapper_allocator, copy, functor_wrapper_type(f,a));
23866:
23866: functor_wrapper_type* new_f = static_cast<functor_wrapper_type*>(copy);
23866: functor.members.obj_ptr = new_f;
23866: }
23866:
23866: template<typename FunctionObj>
23866: bool
23866: assign_to(FunctionObj f, function_buffer& functor, function_obj_tag) const
23866: {
23866: if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
23866: assign_functor(f, functor,
23866: integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>());
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: bool
23866: assign_to_a(FunctionObj f, function_buffer& functor, Allocator a, function_obj_tag) const
23866: {
23866: if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
23866: assign_functor_a(f, functor, a,
23866: integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>());
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866:
23866:
23866: template<typename FunctionObj>
23866: bool
23866: assign_to(const reference_wrapper<FunctionObj>& f,
23866: function_buffer& functor, function_obj_ref_tag) const
23866: {
23866: functor.members.obj_ref.obj_ptr = (void *)(f.get_pointer());
23866: functor.members.obj_ref.is_const_qualified = is_const<FunctionObj>::value;
23866: functor.members.obj_ref.is_volatile_qualified = is_volatile<FunctionObj>::value;
23866: return true;
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: bool
23866: assign_to_a(const reference_wrapper<FunctionObj>& f,
23866: function_buffer& functor, Allocator, function_obj_ref_tag) const
23866: {
23866: return assign_to(f,functor,function_obj_ref_tag());
23866: }
23866:
23866: public:
23866: vtable_base base;
23866: invoker_type invoker;
23866: };
23866: }
23866: }
23866:
23866: template<
23866: typename R ,
23866: typename T0 , typename T1 , typename T2
23866: >
23866: class function3 : public function_base
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866:
23866:
23866:
23866:
23866:
23866: private:
23866: typedef boost::detail::function::basic_vtable3<
23866: R , T0 , T1 , T2>
23866: vtable_type;
23866:
23866: vtable_type* get_vtable() const {
23866: return reinterpret_cast<vtable_type*>(
23866: reinterpret_cast<std::size_t>(vtable) & ~static_cast<std::size_t>(0x01));
23866: }
23866:
23866: struct clear_type {};
23866:
23866: public:
23866: static const int args = 3;
23866:
23866:
23866: template<typename Args>
23866: struct sig
23866: {
23866: typedef result_type type;
23866: };
23866: # 701 "/usr/include/boost/function/function_template.hpp" 3 4
23866: static const int arity = 3;
23866: typedef T0 arg1_type; typedef T1 arg2_type; typedef T2 arg3_type;
23866:
23866: typedef function3 self_type;
23866:
23866: function3() = default;
23866:
23866:
23866:
23866: template<typename Functor>
23866: function3(Functor f
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: function_base()
23866: {
23866: this->assign_to(f);
23866: }
23866: template<typename Functor,typename Allocator>
23866: function3(Functor f, Allocator a
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: function_base()
23866: {
23866: this->assign_to_a(f,a);
23866: }
23866:
23866:
23866: function3(clear_type*) : function_base() { }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: function3(const function3& f) : function_base()
23866: {
23866: this->assign_to_own(f);
23866: }
23866:
23866:
23866: function3(function3&& f) : function_base()
23866: {
23866: this->move_assign(f);
23866: }
23866:
23866:
23866: ~function3() { clear(); }
23866:
23866: result_type operator()( T0 a0 , T1 a1 , T2 a2) const
23866: {
23866: if (this->empty())
23866: boost::throw_exception(bad_function_call());
23866:
23866: return get_vtable()->invoker
23866: (this->functor , static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2));
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename Functor>
23866:
23866: typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: function3&>::type
23866:
23866:
23866:
23866: operator=(Functor f)
23866: {
23866: this->clear();
23866: { try {
23866: this->assign_to(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866: template<typename Functor,typename Allocator>
23866: void assign(Functor f, Allocator a)
23866: {
23866: this->clear();
23866: { try{
23866: this->assign_to_a(f,a);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: }
23866:
23866:
23866: function3& operator=(clear_type*)
23866: {
23866: this->clear();
23866: return *this;
23866: }
23866: # 821 "/usr/include/boost/function/function_template.hpp" 3 4
23866: function3& operator=(const function3& f)
23866: {
23866: if (&f == this)
23866: return *this;
23866:
23866: this->clear();
23866: { try {
23866: this->assign_to_own(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866:
23866:
23866:
23866: function3& operator=(function3&& f)
23866: {
23866: if (&f == this)
23866: return *this;
23866:
23866: this->clear();
23866: { try {
23866: this->move_assign(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866:
23866:
23866: void swap(function3& other)
23866: {
23866: if (&other == this)
23866: return;
23866:
23866: function3 tmp;
23866: tmp.move_assign(*this);
23866: this->move_assign(other);
23866: other.move_assign(tmp);
23866: }
23866:
23866:
23866: void clear()
23866: {
23866: if (vtable) {
23866: if (!this->has_trivial_copy_and_destroy())
23866: get_vtable()->clear(this->functor);
23866: vtable = 0;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866:
23866: private:
23866: struct dummy {
23866: void nonnull() {}
23866: };
23866:
23866: typedef void (dummy::*safe_bool)();
23866:
23866: public:
23866: operator safe_bool () const
23866: { return (this->empty())? 0 : &dummy::nonnull; }
23866:
23866: bool operator!() const
23866: { return this->empty(); }
23866:
23866:
23866: private:
23866: void assign_to_own(const function3& f)
23866: {
23866: if (!f.empty()) {
23866: this->vtable = f.vtable;
23866: if (this->has_trivial_copy_and_destroy()) {
23866:
23866:
23866:
23866: #pragma GCC diagnostic push
23866:
23866:
23866: #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
23866:
23866: std::memcpy(this->functor.data, f.functor.data, sizeof(boost::detail::function::function_buffer));
23866:
23866: #pragma GCC diagnostic pop
23866:
23866: } else
23866: get_vtable()->base.manager(f.functor, this->functor,
23866: boost::detail::function::clone_functor_tag);
23866: }
23866: }
23866:
23866: template<typename Functor>
23866: void assign_to(Functor f)
23866: {
23866: using boost::detail::function::vtable_base;
23866:
23866: typedef typename boost::detail::function::get_function_tag<Functor>::type tag;
23866: typedef boost::detail::function::get_invoker3<tag> get_invoker;
23866: typedef typename get_invoker::
23866: template apply<Functor, R ,
23866: T0 , T1 , T2>
23866: handler_type;
23866:
23866: typedef typename handler_type::invoker_type invoker_type;
23866: typedef typename handler_type::manager_type manager_type;
23866:
23866:
23866:
23866:
23866:
23866: static const vtable_type stored_vtable =
23866: { { &manager_type::manage }, &invoker_type::invoke };
23866:
23866: if (stored_vtable.assign_to(f, functor)) {
23866: std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
23866:
23866: if (boost::has_trivial_copy_constructor<Functor>::value &&
23866: boost::has_trivial_destructor<Functor>::value &&
23866: boost::detail::function::function_allows_small_object_optimization<Functor>::value)
23866: value |= static_cast<std::size_t>(0x01);
23866: vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value);
23866: } else
23866: vtable = 0;
23866: }
23866:
23866: template<typename Functor,typename Allocator>
23866: void assign_to_a(Functor f,Allocator a)
23866: {
23866: using boost::detail::function::vtable_base;
23866:
23866: typedef typename boost::detail::function::get_function_tag<Functor>::type tag;
23866: typedef boost::detail::function::get_invoker3<tag> get_invoker;
23866: typedef typename get_invoker::
23866: template apply_a<Functor, Allocator, R ,
23866: T0 , T1 , T2>
23866: handler_type;
23866:
23866: typedef typename handler_type::invoker_type invoker_type;
23866: typedef typename handler_type::manager_type manager_type;
23866:
23866:
23866:
23866:
23866:
23866: static const vtable_type stored_vtable =
23866: { { &manager_type::manage }, &invoker_type::invoke };
23866:
23866: if (stored_vtable.assign_to_a(f, functor, a)) {
23866: std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
23866:
23866: if (boost::has_trivial_copy_constructor<Functor>::value &&
23866: boost::has_trivial_destructor<Functor>::value &&
23866: boost::detail::function::function_allows_small_object_optimization<Functor>::value)
23866: value |= static_cast<std::size_t>(0x01);
23866: vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value);
23866: } else
23866: vtable = 0;
23866: }
23866:
23866:
23866:
23866:
23866: void move_assign(function3& f)
23866: {
23866: if (&f == this)
23866: return;
23866:
23866: { try {
23866: if (!f.empty()) {
23866: this->vtable = f.vtable;
23866: if (this->has_trivial_copy_and_destroy()) {
23866:
23866:
23866:
23866: #pragma GCC diagnostic push
23866:
23866:
23866: #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
23866:
23866: std::memcpy(this->functor.data, f.functor.data, sizeof(this->functor.data));
23866:
23866: #pragma GCC diagnostic pop
23866:
23866: } else
23866: get_vtable()->base.manager(f.functor, this->functor,
23866: boost::detail::function::move_functor_tag);
23866: f.vtable = 0;
23866: } else {
23866: clear();
23866: }
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: }
23866: };
23866:
23866: template<typename R , typename T0 , typename T1 , typename T2>
23866: inline void swap(function3<
23866: R ,
23866: T0 , T1 , T2
23866: >& f1,
23866: function3<
23866: R ,
23866: T0 , T1 , T2
23866: >& f2)
23866: {
23866: f1.swap(f2);
23866: }
23866:
23866:
23866: template<typename R , typename T0 , typename T1 , typename T2>
23866: void operator==(const function3<
23866: R ,
23866: T0 , T1 , T2>&,
23866: const function3<
23866: R ,
23866: T0 , T1 , T2>&);
23866: template<typename R , typename T0 , typename T1 , typename T2>
23866: void operator!=(const function3<
23866: R ,
23866: T0 , T1 , T2>&,
23866: const function3<
23866: R ,
23866: T0 , T1 , T2>& );
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_PARTIAL_SPEC R (BOOST_FUNCTION_TEMPLATE_ARGS)
23866:
23866:
23866: template<typename R ,
23866: typename T0 , typename T1 , typename T2>
23866: class function<R ( T0 , T1 , T2)>
23866: : public function3<R , T0 , T1 , T2>
23866: {
23866: typedef function3<R , T0 , T1 , T2> base_type;
23866: typedef function self_type;
23866:
23866: struct clear_type {};
23866:
23866: public:
23866:
23866: function() = default;
23866:
23866: template<typename Functor>
23866: function(Functor f
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: base_type(f)
23866: {
23866: }
23866: template<typename Functor,typename Allocator>
23866: function(Functor f, Allocator a
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: base_type(f,a)
23866: {
23866: }
23866:
23866:
23866: function(clear_type*) : base_type() {}
23866:
23866:
23866: function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}
23866:
23866: function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}
23866:
23866:
23866:
23866: function(self_type&& f): base_type(static_cast<base_type&&>(f)){}
23866: function(base_type&& f): base_type(static_cast<base_type&&>(f)){}
23866:
23866:
23866: self_type& operator=(const self_type& f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(self_type&& f)
23866: {
23866: self_type(static_cast<self_type&&>(f)).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: template<typename Functor>
23866:
23866: typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: self_type&>::type
23866:
23866:
23866:
23866: operator=(Functor f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(clear_type*)
23866: {
23866: this->clear();
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(const base_type& f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(base_type&& f)
23866: {
23866: self_type(static_cast<base_type&&>(f)).swap(*this);
23866: return *this;
23866: }
23866:
23866: };
23866:
23866: #undef BOOST_FUNCTION_PARTIAL_SPEC
23866:
23866:
23866: }
23866:
23866:
23866: #undef BOOST_FUNCTION_VTABLE
23866: #undef BOOST_FUNCTION_COMMA
23866: #undef BOOST_FUNCTION_FUNCTION
23866: #undef BOOST_FUNCTION_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_MEMBER_INVOKER
23866: #undef BOOST_FUNCTION_VOID_MEMBER_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_GET_MEM_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_GET_INVOKER
23866: #undef BOOST_FUNCTION_TEMPLATE_PARMS
23866: #undef BOOST_FUNCTION_TEMPLATE_ARGS
23866: #undef BOOST_FUNCTION_PARMS
23866: #undef BOOST_FUNCTION_PARM
23866:
23866: #undef BOOST_FUNCTION_ARG
23866:
23866: #undef BOOST_FUNCTION_ARGS
23866: #undef BOOST_FUNCTION_ARG_TYPE
23866: #undef BOOST_FUNCTION_ARG_TYPES
23866: #undef BOOST_FUNCTION_VOID_RETURN_TYPE
23866: #undef BOOST_FUNCTION_RETURN
23866: # 37 "/usr/include/boost/function/detail/maybe_include.hpp" 2 3 4
23866: # 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
23866: #undef BOOST_FUNCTION_NUM_ARGS
23866: # 63 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_1
23866:
23866:
23866: #define BOOST_PP_ITERATION_1 4
23866: # 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
23866: # 13 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
23866: #define BOOST_FUNCTION_NUM_ARGS BOOST_PP_ITERATION()
23866: # 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
23866: # 39 "/usr/include/boost/function/detail/maybe_include.hpp" 3 4
23866: #undef BOOST_FUNCTION_MAX_ARGS_DEFINED
23866: #define BOOST_FUNCTION_MAX_ARGS_DEFINED 4
23866:
23866: #define BOOST_FUNCTION_4
23866: # 1 "/usr/include/boost/function/function_template.hpp" 1 3 4
23866: # 21 "/usr/include/boost/function/function_template.hpp" 3 4
23866: #define BOOST_FUNCTION_TEMPLATE_PARMS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, typename T)
23866:
23866: #define BOOST_FUNCTION_TEMPLATE_ARGS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, T)
23866:
23866: #define BOOST_FUNCTION_PARM(J,I,D) BOOST_PP_CAT(T,I) BOOST_PP_CAT(a,I)
23866:
23866: #define BOOST_FUNCTION_PARMS BOOST_PP_ENUM(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_PARM,BOOST_PP_EMPTY)
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_ARG(J,I,D) static_cast<BOOST_PP_CAT(T,I)&&>(BOOST_PP_CAT(a,I))
23866: #define BOOST_FUNCTION_ARGS BOOST_PP_ENUM(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_ARG,BOOST_PP_EMPTY)
23866:
23866:
23866: #define BOOST_FUNCTION_ARG_TYPE(J,I,D) typedef BOOST_PP_CAT(T,I) BOOST_PP_CAT(BOOST_PP_CAT(arg, BOOST_PP_INC(I)),_type);
23866:
23866:
23866: #define BOOST_FUNCTION_ARG_TYPES BOOST_PP_REPEAT(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_ARG_TYPE,BOOST_PP_EMPTY)
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_COMMA ,
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_FUNCTION BOOST_JOIN(function,BOOST_FUNCTION_NUM_ARGS)
23866: #define BOOST_FUNCTION_FUNCTION_INVOKER BOOST_JOIN(function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_INVOKER BOOST_JOIN(void_function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_FUNCTION_OBJ_INVOKER BOOST_JOIN(function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER BOOST_JOIN(void_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_FUNCTION_REF_INVOKER BOOST_JOIN(function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER BOOST_JOIN(void_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_MEMBER_INVOKER BOOST_JOIN(function_mem_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_MEMBER_INVOKER BOOST_JOIN(function_void_mem_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_INVOKER BOOST_JOIN(get_function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER BOOST_JOIN(get_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER BOOST_JOIN(get_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_MEMBER_INVOKER BOOST_JOIN(get_member_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_INVOKER BOOST_JOIN(get_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VTABLE BOOST_JOIN(basic_vtable,BOOST_FUNCTION_NUM_ARGS)
23866:
23866:
23866: #define BOOST_FUNCTION_VOID_RETURN_TYPE void
23866: #define BOOST_FUNCTION_RETURN(X) X
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace detail {
23866: namespace function {
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3
23866: >
23866: struct function_invoker4
23866: {
23866: static R invoke(function_buffer& function_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3)
23866: {
23866: FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.members.func_ptr);
23866: return f( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3
23866: >
23866: struct void_function_invoker4
23866: {
23866: static void
23866: invoke(function_buffer& function_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3)
23866:
23866: {
23866: FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.members.func_ptr);
23866: f( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3
23866: >
23866: struct function_obj_invoker4
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3)
23866:
23866: {
23866: FunctionObj* f;
23866: if (function_allows_small_object_optimization<FunctionObj>::value)
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.data);
23866: else
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: return (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3
23866: >
23866: struct void_function_obj_invoker4
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3)
23866:
23866: {
23866: FunctionObj* f;
23866: if (function_allows_small_object_optimization<FunctionObj>::value)
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.data);
23866: else
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3
23866: >
23866: struct function_ref_invoker4
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3)
23866:
23866: {
23866: FunctionObj* f =
23866: reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: return (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3
23866: >
23866: struct void_function_ref_invoker4
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3)
23866:
23866: {
23866: FunctionObj* f =
23866: reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3));
23866: }
23866: };
23866:
23866:
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3
23866: >
23866: struct function_mem_invoker4
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3)
23866:
23866: {
23866: MemberPtr* f =
23866: reinterpret_cast<MemberPtr*>(function_obj_ptr.data);
23866: return boost::mem_fn(*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3));
23866: }
23866: };
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3
23866: >
23866: struct function_void_mem_invoker4
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3)
23866:
23866: {
23866: MemberPtr* f =
23866: reinterpret_cast<MemberPtr*>(function_obj_ptr.data);
23866: boost::mem_fn(*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3));
23866: }
23866: };
23866:
23866:
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3
23866: >
23866: struct get_function_invoker4
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_invoker4<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2 , T3
23866: >,
23866: function_invoker4<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2 , T3
23866: >
23866: >::type type;
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3
23866: >
23866: struct get_function_obj_invoker4
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_obj_invoker4<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3
23866: >,
23866: function_obj_invoker4<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3
23866: >
23866: >::type type;
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3
23866: >
23866: struct get_function_ref_invoker4
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_ref_invoker4<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3
23866: >,
23866: function_ref_invoker4<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3
23866: >
23866: >::type type;
23866: };
23866:
23866:
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3
23866: >
23866: struct get_member_invoker4
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: function_void_mem_invoker4<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2 , T3
23866: >,
23866: function_mem_invoker4<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2 , T3
23866: >
23866: >::type type;
23866: };
23866: # 331 "/usr/include/boost/function/function_template.hpp" 3 4
23866: template<typename Tag>
23866: struct get_invoker4 { };
23866:
23866:
23866: template<>
23866: struct get_invoker4<function_ptr_tag>
23866: {
23866: template<typename FunctionPtr,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3>
23866: struct apply
23866: {
23866: typedef typename get_function_invoker4<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2 , T3
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionPtr> manager_type;
23866: };
23866:
23866: template<typename FunctionPtr, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3>
23866: struct apply_a
23866: {
23866: typedef typename get_function_invoker4<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2 , T3
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionPtr> manager_type;
23866: };
23866: };
23866:
23866:
23866:
23866: template<>
23866: struct get_invoker4<member_ptr_tag>
23866: {
23866: template<typename MemberPtr,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3>
23866: struct apply
23866: {
23866: typedef typename get_member_invoker4<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2 , T3
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<MemberPtr> manager_type;
23866: };
23866:
23866: template<typename MemberPtr, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3>
23866: struct apply_a
23866: {
23866: typedef typename get_member_invoker4<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2 , T3
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<MemberPtr> manager_type;
23866: };
23866: };
23866:
23866:
23866:
23866: template<>
23866: struct get_invoker4<function_obj_tag>
23866: {
23866: template<typename FunctionObj,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3>
23866: struct apply
23866: {
23866: typedef typename get_function_obj_invoker4<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionObj> manager_type;
23866: };
23866:
23866: template<typename FunctionObj, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3>
23866: struct apply_a
23866: {
23866: typedef typename get_function_obj_invoker4<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager_a<FunctionObj, Allocator> manager_type;
23866: };
23866: };
23866:
23866:
23866: template<>
23866: struct get_invoker4<function_obj_ref_tag>
23866: {
23866: template<typename RefWrapper,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3>
23866: struct apply
23866: {
23866: typedef typename get_function_ref_invoker4<
23866: typename RefWrapper::type,
23866: R ,
23866: T0 , T1 , T2 , T3
23866: >::type
23866: invoker_type;
23866:
23866: typedef reference_manager<typename RefWrapper::type> manager_type;
23866: };
23866:
23866: template<typename RefWrapper, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3>
23866: struct apply_a
23866: {
23866: typedef typename get_function_ref_invoker4<
23866: typename RefWrapper::type,
23866: R ,
23866: T0 , T1 , T2 , T3
23866: >::type
23866: invoker_type;
23866:
23866: typedef reference_manager<typename RefWrapper::type> manager_type;
23866: };
23866: };
23866: # 476 "/usr/include/boost/function/function_template.hpp" 3 4
23866: template<typename R , typename T0 , typename T1 , typename T2 , typename T3>
23866: struct basic_vtable4
23866: {
23866:
23866: typedef R result_type;
23866:
23866:
23866:
23866:
23866: typedef result_type (*invoker_type)(function_buffer&
23866: ,
23866: T0 , T1 , T2 , T3);
23866:
23866: template<typename F>
23866: bool assign_to(F f, function_buffer& functor) const
23866: {
23866: typedef typename get_function_tag<F>::type tag;
23866: return assign_to(f, functor, tag());
23866: }
23866: template<typename F,typename Allocator>
23866: bool assign_to_a(F f, function_buffer& functor, Allocator a) const
23866: {
23866: typedef typename get_function_tag<F>::type tag;
23866: return assign_to_a(f, functor, a, tag());
23866: }
23866:
23866: void clear(function_buffer& functor) const
23866: {
23866: if (base.manager)
23866: base.manager(functor, functor, destroy_functor_tag);
23866: }
23866:
23866: private:
23866:
23866: template<typename FunctionPtr>
23866: bool
23866: assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag) const
23866: {
23866: this->clear(functor);
23866: if (f) {
23866:
23866:
23866: functor.members.func_ptr = reinterpret_cast<void (*)()>(f);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename FunctionPtr,typename Allocator>
23866: bool
23866: assign_to_a(FunctionPtr f, function_buffer& functor, Allocator, function_ptr_tag) const
23866: {
23866: return assign_to(f,functor,function_ptr_tag());
23866: }
23866:
23866:
23866:
23866: template<typename MemberPtr>
23866: bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag) const
23866: {
23866:
23866:
23866:
23866: if (f) {
23866: this->assign_to(boost::mem_fn(f), functor);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename MemberPtr,typename Allocator>
23866: bool assign_to_a(MemberPtr f, function_buffer& functor, Allocator a, member_ptr_tag) const
23866: {
23866:
23866:
23866:
23866: if (f) {
23866: this->assign_to_a(boost::mem_fn(f), functor, a);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866: template<typename FunctionObj>
23866: void
23866: assign_functor(FunctionObj f, function_buffer& functor, true_type) const
23866: {
23866: new (reinterpret_cast<void*>(functor.data)) FunctionObj(f);
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: void
23866: assign_functor_a(FunctionObj f, function_buffer& functor, Allocator, true_type) const
23866: {
23866: assign_functor(f,functor,true_type());
23866: }
23866:
23866:
23866: template<typename FunctionObj>
23866: void
23866: assign_functor(FunctionObj f, function_buffer& functor, false_type) const
23866: {
23866: functor.members.obj_ptr = new FunctionObj(f);
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: void
23866: assign_functor_a(FunctionObj f, function_buffer& functor, Allocator a, false_type) const
23866: {
23866: typedef functor_wrapper<FunctionObj,Allocator> functor_wrapper_type;
23866:
23866:
23866:
23866:
23866:
23866: using wrapper_allocator_type = typename std::allocator_traits<Allocator>::template rebind_alloc<functor_wrapper_type>;
23866: using wrapper_allocator_pointer_type = typename std::allocator_traits<wrapper_allocator_type>::pointer;
23866:
23866: wrapper_allocator_type wrapper_allocator(a);
23866: wrapper_allocator_pointer_type copy = wrapper_allocator.allocate(1);
23866:
23866:
23866:
23866: std::allocator_traits<wrapper_allocator_type>::construct(wrapper_allocator, copy, functor_wrapper_type(f,a));
23866:
23866: functor_wrapper_type* new_f = static_cast<functor_wrapper_type*>(copy);
23866: functor.members.obj_ptr = new_f;
23866: }
23866:
23866: template<typename FunctionObj>
23866: bool
23866: assign_to(FunctionObj f, function_buffer& functor, function_obj_tag) const
23866: {
23866: if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
23866: assign_functor(f, functor,
23866: integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>());
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: bool
23866: assign_to_a(FunctionObj f, function_buffer& functor, Allocator a, function_obj_tag) const
23866: {
23866: if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
23866: assign_functor_a(f, functor, a,
23866: integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>());
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866:
23866:
23866: template<typename FunctionObj>
23866: bool
23866: assign_to(const reference_wrapper<FunctionObj>& f,
23866: function_buffer& functor, function_obj_ref_tag) const
23866: {
23866: functor.members.obj_ref.obj_ptr = (void *)(f.get_pointer());
23866: functor.members.obj_ref.is_const_qualified = is_const<FunctionObj>::value;
23866: functor.members.obj_ref.is_volatile_qualified = is_volatile<FunctionObj>::value;
23866: return true;
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: bool
23866: assign_to_a(const reference_wrapper<FunctionObj>& f,
23866: function_buffer& functor, Allocator, function_obj_ref_tag) const
23866: {
23866: return assign_to(f,functor,function_obj_ref_tag());
23866: }
23866:
23866: public:
23866: vtable_base base;
23866: invoker_type invoker;
23866: };
23866: }
23866: }
23866:
23866: template<
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3
23866: >
23866: class function4 : public function_base
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866:
23866:
23866:
23866:
23866:
23866: private:
23866: typedef boost::detail::function::basic_vtable4<
23866: R , T0 , T1 , T2 , T3>
23866: vtable_type;
23866:
23866: vtable_type* get_vtable() const {
23866: return reinterpret_cast<vtable_type*>(
23866: reinterpret_cast<std::size_t>(vtable) & ~static_cast<std::size_t>(0x01));
23866: }
23866:
23866: struct clear_type {};
23866:
23866: public:
23866: static const int args = 4;
23866:
23866:
23866: template<typename Args>
23866: struct sig
23866: {
23866: typedef result_type type;
23866: };
23866: # 701 "/usr/include/boost/function/function_template.hpp" 3 4
23866: static const int arity = 4;
23866: typedef T0 arg1_type; typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type;
23866:
23866: typedef function4 self_type;
23866:
23866: function4() = default;
23866:
23866:
23866:
23866: template<typename Functor>
23866: function4(Functor f
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: function_base()
23866: {
23866: this->assign_to(f);
23866: }
23866: template<typename Functor,typename Allocator>
23866: function4(Functor f, Allocator a
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: function_base()
23866: {
23866: this->assign_to_a(f,a);
23866: }
23866:
23866:
23866: function4(clear_type*) : function_base() { }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: function4(const function4& f) : function_base()
23866: {
23866: this->assign_to_own(f);
23866: }
23866:
23866:
23866: function4(function4&& f) : function_base()
23866: {
23866: this->move_assign(f);
23866: }
23866:
23866:
23866: ~function4() { clear(); }
23866:
23866: result_type operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3) const
23866: {
23866: if (this->empty())
23866: boost::throw_exception(bad_function_call());
23866:
23866: return get_vtable()->invoker
23866: (this->functor , static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3));
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename Functor>
23866:
23866: typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: function4&>::type
23866:
23866:
23866:
23866: operator=(Functor f)
23866: {
23866: this->clear();
23866: { try {
23866: this->assign_to(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866: template<typename Functor,typename Allocator>
23866: void assign(Functor f, Allocator a)
23866: {
23866: this->clear();
23866: { try{
23866: this->assign_to_a(f,a);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: }
23866:
23866:
23866: function4& operator=(clear_type*)
23866: {
23866: this->clear();
23866: return *this;
23866: }
23866: # 821 "/usr/include/boost/function/function_template.hpp" 3 4
23866: function4& operator=(const function4& f)
23866: {
23866: if (&f == this)
23866: return *this;
23866:
23866: this->clear();
23866: { try {
23866: this->assign_to_own(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866:
23866:
23866:
23866: function4& operator=(function4&& f)
23866: {
23866: if (&f == this)
23866: return *this;
23866:
23866: this->clear();
23866: { try {
23866: this->move_assign(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866:
23866:
23866: void swap(function4& other)
23866: {
23866: if (&other == this)
23866: return;
23866:
23866: function4 tmp;
23866: tmp.move_assign(*this);
23866: this->move_assign(other);
23866: other.move_assign(tmp);
23866: }
23866:
23866:
23866: void clear()
23866: {
23866: if (vtable) {
23866: if (!this->has_trivial_copy_and_destroy())
23866: get_vtable()->clear(this->functor);
23866: vtable = 0;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866:
23866: private:
23866: struct dummy {
23866: void nonnull() {}
23866: };
23866:
23866: typedef void (dummy::*safe_bool)();
23866:
23866: public:
23866: operator safe_bool () const
23866: { return (this->empty())? 0 : &dummy::nonnull; }
23866:
23866: bool operator!() const
23866: { return this->empty(); }
23866:
23866:
23866: private:
23866: void assign_to_own(const function4& f)
23866: {
23866: if (!f.empty()) {
23866: this->vtable = f.vtable;
23866: if (this->has_trivial_copy_and_destroy()) {
23866:
23866:
23866:
23866: #pragma GCC diagnostic push
23866:
23866:
23866: #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
23866:
23866: std::memcpy(this->functor.data, f.functor.data, sizeof(boost::detail::function::function_buffer));
23866:
23866: #pragma GCC diagnostic pop
23866:
23866: } else
23866: get_vtable()->base.manager(f.functor, this->functor,
23866: boost::detail::function::clone_functor_tag);
23866: }
23866: }
23866:
23866: template<typename Functor>
23866: void assign_to(Functor f)
23866: {
23866: using boost::detail::function::vtable_base;
23866:
23866: typedef typename boost::detail::function::get_function_tag<Functor>::type tag;
23866: typedef boost::detail::function::get_invoker4<tag> get_invoker;
23866: typedef typename get_invoker::
23866: template apply<Functor, R ,
23866: T0 , T1 , T2 , T3>
23866: handler_type;
23866:
23866: typedef typename handler_type::invoker_type invoker_type;
23866: typedef typename handler_type::manager_type manager_type;
23866:
23866:
23866:
23866:
23866:
23866: static const vtable_type stored_vtable =
23866: { { &manager_type::manage }, &invoker_type::invoke };
23866:
23866: if (stored_vtable.assign_to(f, functor)) {
23866: std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
23866:
23866: if (boost::has_trivial_copy_constructor<Functor>::value &&
23866: boost::has_trivial_destructor<Functor>::value &&
23866: boost::detail::function::function_allows_small_object_optimization<Functor>::value)
23866: value |= static_cast<std::size_t>(0x01);
23866: vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value);
23866: } else
23866: vtable = 0;
23866: }
23866:
23866: template<typename Functor,typename Allocator>
23866: void assign_to_a(Functor f,Allocator a)
23866: {
23866: using boost::detail::function::vtable_base;
23866:
23866: typedef typename boost::detail::function::get_function_tag<Functor>::type tag;
23866: typedef boost::detail::function::get_invoker4<tag> get_invoker;
23866: typedef typename get_invoker::
23866: template apply_a<Functor, Allocator, R ,
23866: T0 , T1 , T2 , T3>
23866: handler_type;
23866:
23866: typedef typename handler_type::invoker_type invoker_type;
23866: typedef typename handler_type::manager_type manager_type;
23866:
23866:
23866:
23866:
23866:
23866: static const vtable_type stored_vtable =
23866: { { &manager_type::manage }, &invoker_type::invoke };
23866:
23866: if (stored_vtable.assign_to_a(f, functor, a)) {
23866: std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
23866:
23866: if (boost::has_trivial_copy_constructor<Functor>::value &&
23866: boost::has_trivial_destructor<Functor>::value &&
23866: boost::detail::function::function_allows_small_object_optimization<Functor>::value)
23866: value |= static_cast<std::size_t>(0x01);
23866: vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value);
23866: } else
23866: vtable = 0;
23866: }
23866:
23866:
23866:
23866:
23866: void move_assign(function4& f)
23866: {
23866: if (&f == this)
23866: return;
23866:
23866: { try {
23866: if (!f.empty()) {
23866: this->vtable = f.vtable;
23866: if (this->has_trivial_copy_and_destroy()) {
23866:
23866:
23866:
23866: #pragma GCC diagnostic push
23866:
23866:
23866: #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
23866:
23866: std::memcpy(this->functor.data, f.functor.data, sizeof(this->functor.data));
23866:
23866: #pragma GCC diagnostic pop
23866:
23866: } else
23866: get_vtable()->base.manager(f.functor, this->functor,
23866: boost::detail::function::move_functor_tag);
23866: f.vtable = 0;
23866: } else {
23866: clear();
23866: }
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: }
23866: };
23866:
23866: template<typename R , typename T0 , typename T1 , typename T2 , typename T3>
23866: inline void swap(function4<
23866: R ,
23866: T0 , T1 , T2 , T3
23866: >& f1,
23866: function4<
23866: R ,
23866: T0 , T1 , T2 , T3
23866: >& f2)
23866: {
23866: f1.swap(f2);
23866: }
23866:
23866:
23866: template<typename R , typename T0 , typename T1 , typename T2 , typename T3>
23866: void operator==(const function4<
23866: R ,
23866: T0 , T1 , T2 , T3>&,
23866: const function4<
23866: R ,
23866: T0 , T1 , T2 , T3>&);
23866: template<typename R , typename T0 , typename T1 , typename T2 , typename T3>
23866: void operator!=(const function4<
23866: R ,
23866: T0 , T1 , T2 , T3>&,
23866: const function4<
23866: R ,
23866: T0 , T1 , T2 , T3>& );
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_PARTIAL_SPEC R (BOOST_FUNCTION_TEMPLATE_ARGS)
23866:
23866:
23866: template<typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3>
23866: class function<R ( T0 , T1 , T2 , T3)>
23866: : public function4<R , T0 , T1 , T2 , T3>
23866: {
23866: typedef function4<R , T0 , T1 , T2 , T3> base_type;
23866: typedef function self_type;
23866:
23866: struct clear_type {};
23866:
23866: public:
23866:
23866: function() = default;
23866:
23866: template<typename Functor>
23866: function(Functor f
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: base_type(f)
23866: {
23866: }
23866: template<typename Functor,typename Allocator>
23866: function(Functor f, Allocator a
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: base_type(f,a)
23866: {
23866: }
23866:
23866:
23866: function(clear_type*) : base_type() {}
23866:
23866:
23866: function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}
23866:
23866: function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}
23866:
23866:
23866:
23866: function(self_type&& f): base_type(static_cast<base_type&&>(f)){}
23866: function(base_type&& f): base_type(static_cast<base_type&&>(f)){}
23866:
23866:
23866: self_type& operator=(const self_type& f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(self_type&& f)
23866: {
23866: self_type(static_cast<self_type&&>(f)).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: template<typename Functor>
23866:
23866: typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: self_type&>::type
23866:
23866:
23866:
23866: operator=(Functor f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(clear_type*)
23866: {
23866: this->clear();
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(const base_type& f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(base_type&& f)
23866: {
23866: self_type(static_cast<base_type&&>(f)).swap(*this);
23866: return *this;
23866: }
23866:
23866: };
23866:
23866: #undef BOOST_FUNCTION_PARTIAL_SPEC
23866:
23866:
23866: }
23866:
23866:
23866: #undef BOOST_FUNCTION_VTABLE
23866: #undef BOOST_FUNCTION_COMMA
23866: #undef BOOST_FUNCTION_FUNCTION
23866: #undef BOOST_FUNCTION_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_MEMBER_INVOKER
23866: #undef BOOST_FUNCTION_VOID_MEMBER_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_GET_MEM_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_GET_INVOKER
23866: #undef BOOST_FUNCTION_TEMPLATE_PARMS
23866: #undef BOOST_FUNCTION_TEMPLATE_ARGS
23866: #undef BOOST_FUNCTION_PARMS
23866: #undef BOOST_FUNCTION_PARM
23866:
23866: #undef BOOST_FUNCTION_ARG
23866:
23866: #undef BOOST_FUNCTION_ARGS
23866: #undef BOOST_FUNCTION_ARG_TYPE
23866: #undef BOOST_FUNCTION_ARG_TYPES
23866: #undef BOOST_FUNCTION_VOID_RETURN_TYPE
23866: #undef BOOST_FUNCTION_RETURN
23866: # 44 "/usr/include/boost/function/detail/maybe_include.hpp" 2 3 4
23866: # 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
23866: #undef BOOST_FUNCTION_NUM_ARGS
23866: # 68 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_1
23866:
23866:
23866: #define BOOST_PP_ITERATION_1 5
23866: # 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
23866: # 13 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
23866: #define BOOST_FUNCTION_NUM_ARGS BOOST_PP_ITERATION()
23866: # 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
23866: # 46 "/usr/include/boost/function/detail/maybe_include.hpp" 3 4
23866: #undef BOOST_FUNCTION_MAX_ARGS_DEFINED
23866: #define BOOST_FUNCTION_MAX_ARGS_DEFINED 5
23866:
23866: #define BOOST_FUNCTION_5
23866: # 1 "/usr/include/boost/function/function_template.hpp" 1 3 4
23866: # 21 "/usr/include/boost/function/function_template.hpp" 3 4
23866: #define BOOST_FUNCTION_TEMPLATE_PARMS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, typename T)
23866:
23866: #define BOOST_FUNCTION_TEMPLATE_ARGS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, T)
23866:
23866: #define BOOST_FUNCTION_PARM(J,I,D) BOOST_PP_CAT(T,I) BOOST_PP_CAT(a,I)
23866:
23866: #define BOOST_FUNCTION_PARMS BOOST_PP_ENUM(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_PARM,BOOST_PP_EMPTY)
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_ARG(J,I,D) static_cast<BOOST_PP_CAT(T,I)&&>(BOOST_PP_CAT(a,I))
23866: #define BOOST_FUNCTION_ARGS BOOST_PP_ENUM(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_ARG,BOOST_PP_EMPTY)
23866:
23866:
23866: #define BOOST_FUNCTION_ARG_TYPE(J,I,D) typedef BOOST_PP_CAT(T,I) BOOST_PP_CAT(BOOST_PP_CAT(arg, BOOST_PP_INC(I)),_type);
23866:
23866:
23866: #define BOOST_FUNCTION_ARG_TYPES BOOST_PP_REPEAT(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_ARG_TYPE,BOOST_PP_EMPTY)
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_COMMA ,
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_FUNCTION BOOST_JOIN(function,BOOST_FUNCTION_NUM_ARGS)
23866: #define BOOST_FUNCTION_FUNCTION_INVOKER BOOST_JOIN(function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_INVOKER BOOST_JOIN(void_function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_FUNCTION_OBJ_INVOKER BOOST_JOIN(function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER BOOST_JOIN(void_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_FUNCTION_REF_INVOKER BOOST_JOIN(function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER BOOST_JOIN(void_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_MEMBER_INVOKER BOOST_JOIN(function_mem_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_MEMBER_INVOKER BOOST_JOIN(function_void_mem_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_INVOKER BOOST_JOIN(get_function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER BOOST_JOIN(get_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER BOOST_JOIN(get_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_MEMBER_INVOKER BOOST_JOIN(get_member_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_INVOKER BOOST_JOIN(get_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VTABLE BOOST_JOIN(basic_vtable,BOOST_FUNCTION_NUM_ARGS)
23866:
23866:
23866: #define BOOST_FUNCTION_VOID_RETURN_TYPE void
23866: #define BOOST_FUNCTION_RETURN(X) X
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace detail {
23866: namespace function {
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4
23866: >
23866: struct function_invoker5
23866: {
23866: static R invoke(function_buffer& function_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4)
23866: {
23866: FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.members.func_ptr);
23866: return f( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4
23866: >
23866: struct void_function_invoker5
23866: {
23866: static void
23866: invoke(function_buffer& function_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4)
23866:
23866: {
23866: FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.members.func_ptr);
23866: f( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4
23866: >
23866: struct function_obj_invoker5
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4)
23866:
23866: {
23866: FunctionObj* f;
23866: if (function_allows_small_object_optimization<FunctionObj>::value)
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.data);
23866: else
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: return (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4
23866: >
23866: struct void_function_obj_invoker5
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4)
23866:
23866: {
23866: FunctionObj* f;
23866: if (function_allows_small_object_optimization<FunctionObj>::value)
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.data);
23866: else
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4
23866: >
23866: struct function_ref_invoker5
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4)
23866:
23866: {
23866: FunctionObj* f =
23866: reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: return (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4
23866: >
23866: struct void_function_ref_invoker5
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4)
23866:
23866: {
23866: FunctionObj* f =
23866: reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4));
23866: }
23866: };
23866:
23866:
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4
23866: >
23866: struct function_mem_invoker5
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4)
23866:
23866: {
23866: MemberPtr* f =
23866: reinterpret_cast<MemberPtr*>(function_obj_ptr.data);
23866: return boost::mem_fn(*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4));
23866: }
23866: };
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4
23866: >
23866: struct function_void_mem_invoker5
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4)
23866:
23866: {
23866: MemberPtr* f =
23866: reinterpret_cast<MemberPtr*>(function_obj_ptr.data);
23866: boost::mem_fn(*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4));
23866: }
23866: };
23866:
23866:
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4
23866: >
23866: struct get_function_invoker5
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_invoker5<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4
23866: >,
23866: function_invoker5<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4
23866: >
23866: >::type type;
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4
23866: >
23866: struct get_function_obj_invoker5
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_obj_invoker5<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4
23866: >,
23866: function_obj_invoker5<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4
23866: >
23866: >::type type;
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4
23866: >
23866: struct get_function_ref_invoker5
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_ref_invoker5<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4
23866: >,
23866: function_ref_invoker5<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4
23866: >
23866: >::type type;
23866: };
23866:
23866:
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4
23866: >
23866: struct get_member_invoker5
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: function_void_mem_invoker5<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4
23866: >,
23866: function_mem_invoker5<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4
23866: >
23866: >::type type;
23866: };
23866: # 331 "/usr/include/boost/function/function_template.hpp" 3 4
23866: template<typename Tag>
23866: struct get_invoker5 { };
23866:
23866:
23866: template<>
23866: struct get_invoker5<function_ptr_tag>
23866: {
23866: template<typename FunctionPtr,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
23866: struct apply
23866: {
23866: typedef typename get_function_invoker5<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionPtr> manager_type;
23866: };
23866:
23866: template<typename FunctionPtr, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
23866: struct apply_a
23866: {
23866: typedef typename get_function_invoker5<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionPtr> manager_type;
23866: };
23866: };
23866:
23866:
23866:
23866: template<>
23866: struct get_invoker5<member_ptr_tag>
23866: {
23866: template<typename MemberPtr,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
23866: struct apply
23866: {
23866: typedef typename get_member_invoker5<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<MemberPtr> manager_type;
23866: };
23866:
23866: template<typename MemberPtr, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
23866: struct apply_a
23866: {
23866: typedef typename get_member_invoker5<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<MemberPtr> manager_type;
23866: };
23866: };
23866:
23866:
23866:
23866: template<>
23866: struct get_invoker5<function_obj_tag>
23866: {
23866: template<typename FunctionObj,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
23866: struct apply
23866: {
23866: typedef typename get_function_obj_invoker5<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionObj> manager_type;
23866: };
23866:
23866: template<typename FunctionObj, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
23866: struct apply_a
23866: {
23866: typedef typename get_function_obj_invoker5<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager_a<FunctionObj, Allocator> manager_type;
23866: };
23866: };
23866:
23866:
23866: template<>
23866: struct get_invoker5<function_obj_ref_tag>
23866: {
23866: template<typename RefWrapper,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
23866: struct apply
23866: {
23866: typedef typename get_function_ref_invoker5<
23866: typename RefWrapper::type,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4
23866: >::type
23866: invoker_type;
23866:
23866: typedef reference_manager<typename RefWrapper::type> manager_type;
23866: };
23866:
23866: template<typename RefWrapper, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
23866: struct apply_a
23866: {
23866: typedef typename get_function_ref_invoker5<
23866: typename RefWrapper::type,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4
23866: >::type
23866: invoker_type;
23866:
23866: typedef reference_manager<typename RefWrapper::type> manager_type;
23866: };
23866: };
23866: # 476 "/usr/include/boost/function/function_template.hpp" 3 4
23866: template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
23866: struct basic_vtable5
23866: {
23866:
23866: typedef R result_type;
23866:
23866:
23866:
23866:
23866: typedef result_type (*invoker_type)(function_buffer&
23866: ,
23866: T0 , T1 , T2 , T3 , T4);
23866:
23866: template<typename F>
23866: bool assign_to(F f, function_buffer& functor) const
23866: {
23866: typedef typename get_function_tag<F>::type tag;
23866: return assign_to(f, functor, tag());
23866: }
23866: template<typename F,typename Allocator>
23866: bool assign_to_a(F f, function_buffer& functor, Allocator a) const
23866: {
23866: typedef typename get_function_tag<F>::type tag;
23866: return assign_to_a(f, functor, a, tag());
23866: }
23866:
23866: void clear(function_buffer& functor) const
23866: {
23866: if (base.manager)
23866: base.manager(functor, functor, destroy_functor_tag);
23866: }
23866:
23866: private:
23866:
23866: template<typename FunctionPtr>
23866: bool
23866: assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag) const
23866: {
23866: this->clear(functor);
23866: if (f) {
23866:
23866:
23866: functor.members.func_ptr = reinterpret_cast<void (*)()>(f);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename FunctionPtr,typename Allocator>
23866: bool
23866: assign_to_a(FunctionPtr f, function_buffer& functor, Allocator, function_ptr_tag) const
23866: {
23866: return assign_to(f,functor,function_ptr_tag());
23866: }
23866:
23866:
23866:
23866: template<typename MemberPtr>
23866: bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag) const
23866: {
23866:
23866:
23866:
23866: if (f) {
23866: this->assign_to(boost::mem_fn(f), functor);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename MemberPtr,typename Allocator>
23866: bool assign_to_a(MemberPtr f, function_buffer& functor, Allocator a, member_ptr_tag) const
23866: {
23866:
23866:
23866:
23866: if (f) {
23866: this->assign_to_a(boost::mem_fn(f), functor, a);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866: template<typename FunctionObj>
23866: void
23866: assign_functor(FunctionObj f, function_buffer& functor, true_type) const
23866: {
23866: new (reinterpret_cast<void*>(functor.data)) FunctionObj(f);
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: void
23866: assign_functor_a(FunctionObj f, function_buffer& functor, Allocator, true_type) const
23866: {
23866: assign_functor(f,functor,true_type());
23866: }
23866:
23866:
23866: template<typename FunctionObj>
23866: void
23866: assign_functor(FunctionObj f, function_buffer& functor, false_type) const
23866: {
23866: functor.members.obj_ptr = new FunctionObj(f);
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: void
23866: assign_functor_a(FunctionObj f, function_buffer& functor, Allocator a, false_type) const
23866: {
23866: typedef functor_wrapper<FunctionObj,Allocator> functor_wrapper_type;
23866:
23866:
23866:
23866:
23866:
23866: using wrapper_allocator_type = typename std::allocator_traits<Allocator>::template rebind_alloc<functor_wrapper_type>;
23866: using wrapper_allocator_pointer_type = typename std::allocator_traits<wrapper_allocator_type>::pointer;
23866:
23866: wrapper_allocator_type wrapper_allocator(a);
23866: wrapper_allocator_pointer_type copy = wrapper_allocator.allocate(1);
23866:
23866:
23866:
23866: std::allocator_traits<wrapper_allocator_type>::construct(wrapper_allocator, copy, functor_wrapper_type(f,a));
23866:
23866: functor_wrapper_type* new_f = static_cast<functor_wrapper_type*>(copy);
23866: functor.members.obj_ptr = new_f;
23866: }
23866:
23866: template<typename FunctionObj>
23866: bool
23866: assign_to(FunctionObj f, function_buffer& functor, function_obj_tag) const
23866: {
23866: if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
23866: assign_functor(f, functor,
23866: integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>());
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: bool
23866: assign_to_a(FunctionObj f, function_buffer& functor, Allocator a, function_obj_tag) const
23866: {
23866: if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
23866: assign_functor_a(f, functor, a,
23866: integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>());
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866:
23866:
23866: template<typename FunctionObj>
23866: bool
23866: assign_to(const reference_wrapper<FunctionObj>& f,
23866: function_buffer& functor, function_obj_ref_tag) const
23866: {
23866: functor.members.obj_ref.obj_ptr = (void *)(f.get_pointer());
23866: functor.members.obj_ref.is_const_qualified = is_const<FunctionObj>::value;
23866: functor.members.obj_ref.is_volatile_qualified = is_volatile<FunctionObj>::value;
23866: return true;
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: bool
23866: assign_to_a(const reference_wrapper<FunctionObj>& f,
23866: function_buffer& functor, Allocator, function_obj_ref_tag) const
23866: {
23866: return assign_to(f,functor,function_obj_ref_tag());
23866: }
23866:
23866: public:
23866: vtable_base base;
23866: invoker_type invoker;
23866: };
23866: }
23866: }
23866:
23866: template<
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4
23866: >
23866: class function5 : public function_base
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866:
23866:
23866:
23866:
23866:
23866: private:
23866: typedef boost::detail::function::basic_vtable5<
23866: R , T0 , T1 , T2 , T3 , T4>
23866: vtable_type;
23866:
23866: vtable_type* get_vtable() const {
23866: return reinterpret_cast<vtable_type*>(
23866: reinterpret_cast<std::size_t>(vtable) & ~static_cast<std::size_t>(0x01));
23866: }
23866:
23866: struct clear_type {};
23866:
23866: public:
23866: static const int args = 5;
23866:
23866:
23866: template<typename Args>
23866: struct sig
23866: {
23866: typedef result_type type;
23866: };
23866: # 701 "/usr/include/boost/function/function_template.hpp" 3 4
23866: static const int arity = 5;
23866: typedef T0 arg1_type; typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type; typedef T4 arg5_type;
23866:
23866: typedef function5 self_type;
23866:
23866: function5() = default;
23866:
23866:
23866:
23866: template<typename Functor>
23866: function5(Functor f
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: function_base()
23866: {
23866: this->assign_to(f);
23866: }
23866: template<typename Functor,typename Allocator>
23866: function5(Functor f, Allocator a
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: function_base()
23866: {
23866: this->assign_to_a(f,a);
23866: }
23866:
23866:
23866: function5(clear_type*) : function_base() { }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: function5(const function5& f) : function_base()
23866: {
23866: this->assign_to_own(f);
23866: }
23866:
23866:
23866: function5(function5&& f) : function_base()
23866: {
23866: this->move_assign(f);
23866: }
23866:
23866:
23866: ~function5() { clear(); }
23866:
23866: result_type operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4) const
23866: {
23866: if (this->empty())
23866: boost::throw_exception(bad_function_call());
23866:
23866: return get_vtable()->invoker
23866: (this->functor , static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4));
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename Functor>
23866:
23866: typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: function5&>::type
23866:
23866:
23866:
23866: operator=(Functor f)
23866: {
23866: this->clear();
23866: { try {
23866: this->assign_to(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866: template<typename Functor,typename Allocator>
23866: void assign(Functor f, Allocator a)
23866: {
23866: this->clear();
23866: { try{
23866: this->assign_to_a(f,a);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: }
23866:
23866:
23866: function5& operator=(clear_type*)
23866: {
23866: this->clear();
23866: return *this;
23866: }
23866: # 821 "/usr/include/boost/function/function_template.hpp" 3 4
23866: function5& operator=(const function5& f)
23866: {
23866: if (&f == this)
23866: return *this;
23866:
23866: this->clear();
23866: { try {
23866: this->assign_to_own(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866:
23866:
23866:
23866: function5& operator=(function5&& f)
23866: {
23866: if (&f == this)
23866: return *this;
23866:
23866: this->clear();
23866: { try {
23866: this->move_assign(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866:
23866:
23866: void swap(function5& other)
23866: {
23866: if (&other == this)
23866: return;
23866:
23866: function5 tmp;
23866: tmp.move_assign(*this);
23866: this->move_assign(other);
23866: other.move_assign(tmp);
23866: }
23866:
23866:
23866: void clear()
23866: {
23866: if (vtable) {
23866: if (!this->has_trivial_copy_and_destroy())
23866: get_vtable()->clear(this->functor);
23866: vtable = 0;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866:
23866: private:
23866: struct dummy {
23866: void nonnull() {}
23866: };
23866:
23866: typedef void (dummy::*safe_bool)();
23866:
23866: public:
23866: operator safe_bool () const
23866: { return (this->empty())? 0 : &dummy::nonnull; }
23866:
23866: bool operator!() const
23866: { return this->empty(); }
23866:
23866:
23866: private:
23866: void assign_to_own(const function5& f)
23866: {
23866: if (!f.empty()) {
23866: this->vtable = f.vtable;
23866: if (this->has_trivial_copy_and_destroy()) {
23866:
23866:
23866:
23866: #pragma GCC diagnostic push
23866:
23866:
23866: #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
23866:
23866: std::memcpy(this->functor.data, f.functor.data, sizeof(boost::detail::function::function_buffer));
23866:
23866: #pragma GCC diagnostic pop
23866:
23866: } else
23866: get_vtable()->base.manager(f.functor, this->functor,
23866: boost::detail::function::clone_functor_tag);
23866: }
23866: }
23866:
23866: template<typename Functor>
23866: void assign_to(Functor f)
23866: {
23866: using boost::detail::function::vtable_base;
23866:
23866: typedef typename boost::detail::function::get_function_tag<Functor>::type tag;
23866: typedef boost::detail::function::get_invoker5<tag> get_invoker;
23866: typedef typename get_invoker::
23866: template apply<Functor, R ,
23866: T0 , T1 , T2 , T3 , T4>
23866: handler_type;
23866:
23866: typedef typename handler_type::invoker_type invoker_type;
23866: typedef typename handler_type::manager_type manager_type;
23866:
23866:
23866:
23866:
23866:
23866: static const vtable_type stored_vtable =
23866: { { &manager_type::manage }, &invoker_type::invoke };
23866:
23866: if (stored_vtable.assign_to(f, functor)) {
23866: std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
23866:
23866: if (boost::has_trivial_copy_constructor<Functor>::value &&
23866: boost::has_trivial_destructor<Functor>::value &&
23866: boost::detail::function::function_allows_small_object_optimization<Functor>::value)
23866: value |= static_cast<std::size_t>(0x01);
23866: vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value);
23866: } else
23866: vtable = 0;
23866: }
23866:
23866: template<typename Functor,typename Allocator>
23866: void assign_to_a(Functor f,Allocator a)
23866: {
23866: using boost::detail::function::vtable_base;
23866:
23866: typedef typename boost::detail::function::get_function_tag<Functor>::type tag;
23866: typedef boost::detail::function::get_invoker5<tag> get_invoker;
23866: typedef typename get_invoker::
23866: template apply_a<Functor, Allocator, R ,
23866: T0 , T1 , T2 , T3 , T4>
23866: handler_type;
23866:
23866: typedef typename handler_type::invoker_type invoker_type;
23866: typedef typename handler_type::manager_type manager_type;
23866:
23866:
23866:
23866:
23866:
23866: static const vtable_type stored_vtable =
23866: { { &manager_type::manage }, &invoker_type::invoke };
23866:
23866: if (stored_vtable.assign_to_a(f, functor, a)) {
23866: std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
23866:
23866: if (boost::has_trivial_copy_constructor<Functor>::value &&
23866: boost::has_trivial_destructor<Functor>::value &&
23866: boost::detail::function::function_allows_small_object_optimization<Functor>::value)
23866: value |= static_cast<std::size_t>(0x01);
23866: vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value);
23866: } else
23866: vtable = 0;
23866: }
23866:
23866:
23866:
23866:
23866: void move_assign(function5& f)
23866: {
23866: if (&f == this)
23866: return;
23866:
23866: { try {
23866: if (!f.empty()) {
23866: this->vtable = f.vtable;
23866: if (this->has_trivial_copy_and_destroy()) {
23866:
23866:
23866:
23866: #pragma GCC diagnostic push
23866:
23866:
23866: #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
23866:
23866: std::memcpy(this->functor.data, f.functor.data, sizeof(this->functor.data));
23866:
23866: #pragma GCC diagnostic pop
23866:
23866: } else
23866: get_vtable()->base.manager(f.functor, this->functor,
23866: boost::detail::function::move_functor_tag);
23866: f.vtable = 0;
23866: } else {
23866: clear();
23866: }
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: }
23866: };
23866:
23866: template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
23866: inline void swap(function5<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4
23866: >& f1,
23866: function5<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4
23866: >& f2)
23866: {
23866: f1.swap(f2);
23866: }
23866:
23866:
23866: template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
23866: void operator==(const function5<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4>&,
23866: const function5<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4>&);
23866: template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
23866: void operator!=(const function5<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4>&,
23866: const function5<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4>& );
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_PARTIAL_SPEC R (BOOST_FUNCTION_TEMPLATE_ARGS)
23866:
23866:
23866: template<typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
23866: class function<R ( T0 , T1 , T2 , T3 , T4)>
23866: : public function5<R , T0 , T1 , T2 , T3 , T4>
23866: {
23866: typedef function5<R , T0 , T1 , T2 , T3 , T4> base_type;
23866: typedef function self_type;
23866:
23866: struct clear_type {};
23866:
23866: public:
23866:
23866: function() = default;
23866:
23866: template<typename Functor>
23866: function(Functor f
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: base_type(f)
23866: {
23866: }
23866: template<typename Functor,typename Allocator>
23866: function(Functor f, Allocator a
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: base_type(f,a)
23866: {
23866: }
23866:
23866:
23866: function(clear_type*) : base_type() {}
23866:
23866:
23866: function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}
23866:
23866: function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}
23866:
23866:
23866:
23866: function(self_type&& f): base_type(static_cast<base_type&&>(f)){}
23866: function(base_type&& f): base_type(static_cast<base_type&&>(f)){}
23866:
23866:
23866: self_type& operator=(const self_type& f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(self_type&& f)
23866: {
23866: self_type(static_cast<self_type&&>(f)).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: template<typename Functor>
23866:
23866: typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: self_type&>::type
23866:
23866:
23866:
23866: operator=(Functor f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(clear_type*)
23866: {
23866: this->clear();
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(const base_type& f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(base_type&& f)
23866: {
23866: self_type(static_cast<base_type&&>(f)).swap(*this);
23866: return *this;
23866: }
23866:
23866: };
23866:
23866: #undef BOOST_FUNCTION_PARTIAL_SPEC
23866:
23866:
23866: }
23866:
23866:
23866: #undef BOOST_FUNCTION_VTABLE
23866: #undef BOOST_FUNCTION_COMMA
23866: #undef BOOST_FUNCTION_FUNCTION
23866: #undef BOOST_FUNCTION_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_MEMBER_INVOKER
23866: #undef BOOST_FUNCTION_VOID_MEMBER_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_GET_MEM_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_GET_INVOKER
23866: #undef BOOST_FUNCTION_TEMPLATE_PARMS
23866: #undef BOOST_FUNCTION_TEMPLATE_ARGS
23866: #undef BOOST_FUNCTION_PARMS
23866: #undef BOOST_FUNCTION_PARM
23866:
23866: #undef BOOST_FUNCTION_ARG
23866:
23866: #undef BOOST_FUNCTION_ARGS
23866: #undef BOOST_FUNCTION_ARG_TYPE
23866: #undef BOOST_FUNCTION_ARG_TYPES
23866: #undef BOOST_FUNCTION_VOID_RETURN_TYPE
23866: #undef BOOST_FUNCTION_RETURN
23866: # 51 "/usr/include/boost/function/detail/maybe_include.hpp" 2 3 4
23866: # 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
23866: #undef BOOST_FUNCTION_NUM_ARGS
23866: # 73 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_1
23866:
23866:
23866: #define BOOST_PP_ITERATION_1 6
23866: # 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
23866: # 13 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
23866: #define BOOST_FUNCTION_NUM_ARGS BOOST_PP_ITERATION()
23866: # 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
23866: # 53 "/usr/include/boost/function/detail/maybe_include.hpp" 3 4
23866: #undef BOOST_FUNCTION_MAX_ARGS_DEFINED
23866: #define BOOST_FUNCTION_MAX_ARGS_DEFINED 6
23866:
23866: #define BOOST_FUNCTION_6
23866: # 1 "/usr/include/boost/function/function_template.hpp" 1 3 4
23866: # 21 "/usr/include/boost/function/function_template.hpp" 3 4
23866: #define BOOST_FUNCTION_TEMPLATE_PARMS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, typename T)
23866:
23866: #define BOOST_FUNCTION_TEMPLATE_ARGS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, T)
23866:
23866: #define BOOST_FUNCTION_PARM(J,I,D) BOOST_PP_CAT(T,I) BOOST_PP_CAT(a,I)
23866:
23866: #define BOOST_FUNCTION_PARMS BOOST_PP_ENUM(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_PARM,BOOST_PP_EMPTY)
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_ARG(J,I,D) static_cast<BOOST_PP_CAT(T,I)&&>(BOOST_PP_CAT(a,I))
23866: #define BOOST_FUNCTION_ARGS BOOST_PP_ENUM(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_ARG,BOOST_PP_EMPTY)
23866:
23866:
23866: #define BOOST_FUNCTION_ARG_TYPE(J,I,D) typedef BOOST_PP_CAT(T,I) BOOST_PP_CAT(BOOST_PP_CAT(arg, BOOST_PP_INC(I)),_type);
23866:
23866:
23866: #define BOOST_FUNCTION_ARG_TYPES BOOST_PP_REPEAT(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_ARG_TYPE,BOOST_PP_EMPTY)
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_COMMA ,
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_FUNCTION BOOST_JOIN(function,BOOST_FUNCTION_NUM_ARGS)
23866: #define BOOST_FUNCTION_FUNCTION_INVOKER BOOST_JOIN(function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_INVOKER BOOST_JOIN(void_function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_FUNCTION_OBJ_INVOKER BOOST_JOIN(function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER BOOST_JOIN(void_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_FUNCTION_REF_INVOKER BOOST_JOIN(function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER BOOST_JOIN(void_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_MEMBER_INVOKER BOOST_JOIN(function_mem_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_MEMBER_INVOKER BOOST_JOIN(function_void_mem_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_INVOKER BOOST_JOIN(get_function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER BOOST_JOIN(get_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER BOOST_JOIN(get_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_MEMBER_INVOKER BOOST_JOIN(get_member_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_INVOKER BOOST_JOIN(get_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VTABLE BOOST_JOIN(basic_vtable,BOOST_FUNCTION_NUM_ARGS)
23866:
23866:
23866: #define BOOST_FUNCTION_VOID_RETURN_TYPE void
23866: #define BOOST_FUNCTION_RETURN(X) X
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace detail {
23866: namespace function {
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
23866: >
23866: struct function_invoker6
23866: {
23866: static R invoke(function_buffer& function_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5)
23866: {
23866: FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.members.func_ptr);
23866: return f( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
23866: >
23866: struct void_function_invoker6
23866: {
23866: static void
23866: invoke(function_buffer& function_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5)
23866:
23866: {
23866: FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.members.func_ptr);
23866: f( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
23866: >
23866: struct function_obj_invoker6
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5)
23866:
23866: {
23866: FunctionObj* f;
23866: if (function_allows_small_object_optimization<FunctionObj>::value)
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.data);
23866: else
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: return (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
23866: >
23866: struct void_function_obj_invoker6
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5)
23866:
23866: {
23866: FunctionObj* f;
23866: if (function_allows_small_object_optimization<FunctionObj>::value)
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.data);
23866: else
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
23866: >
23866: struct function_ref_invoker6
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5)
23866:
23866: {
23866: FunctionObj* f =
23866: reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: return (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
23866: >
23866: struct void_function_ref_invoker6
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5)
23866:
23866: {
23866: FunctionObj* f =
23866: reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5));
23866: }
23866: };
23866:
23866:
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
23866: >
23866: struct function_mem_invoker6
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5)
23866:
23866: {
23866: MemberPtr* f =
23866: reinterpret_cast<MemberPtr*>(function_obj_ptr.data);
23866: return boost::mem_fn(*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5));
23866: }
23866: };
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
23866: >
23866: struct function_void_mem_invoker6
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5)
23866:
23866: {
23866: MemberPtr* f =
23866: reinterpret_cast<MemberPtr*>(function_obj_ptr.data);
23866: boost::mem_fn(*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5));
23866: }
23866: };
23866:
23866:
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
23866: >
23866: struct get_function_invoker6
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_invoker6<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5
23866: >,
23866: function_invoker6<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5
23866: >
23866: >::type type;
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
23866: >
23866: struct get_function_obj_invoker6
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_obj_invoker6<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5
23866: >,
23866: function_obj_invoker6<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5
23866: >
23866: >::type type;
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
23866: >
23866: struct get_function_ref_invoker6
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_ref_invoker6<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5
23866: >,
23866: function_ref_invoker6<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5
23866: >
23866: >::type type;
23866: };
23866:
23866:
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
23866: >
23866: struct get_member_invoker6
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: function_void_mem_invoker6<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5
23866: >,
23866: function_mem_invoker6<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5
23866: >
23866: >::type type;
23866: };
23866: # 331 "/usr/include/boost/function/function_template.hpp" 3 4
23866: template<typename Tag>
23866: struct get_invoker6 { };
23866:
23866:
23866: template<>
23866: struct get_invoker6<function_ptr_tag>
23866: {
23866: template<typename FunctionPtr,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
23866: struct apply
23866: {
23866: typedef typename get_function_invoker6<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionPtr> manager_type;
23866: };
23866:
23866: template<typename FunctionPtr, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
23866: struct apply_a
23866: {
23866: typedef typename get_function_invoker6<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionPtr> manager_type;
23866: };
23866: };
23866:
23866:
23866:
23866: template<>
23866: struct get_invoker6<member_ptr_tag>
23866: {
23866: template<typename MemberPtr,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
23866: struct apply
23866: {
23866: typedef typename get_member_invoker6<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<MemberPtr> manager_type;
23866: };
23866:
23866: template<typename MemberPtr, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
23866: struct apply_a
23866: {
23866: typedef typename get_member_invoker6<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<MemberPtr> manager_type;
23866: };
23866: };
23866:
23866:
23866:
23866: template<>
23866: struct get_invoker6<function_obj_tag>
23866: {
23866: template<typename FunctionObj,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
23866: struct apply
23866: {
23866: typedef typename get_function_obj_invoker6<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionObj> manager_type;
23866: };
23866:
23866: template<typename FunctionObj, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
23866: struct apply_a
23866: {
23866: typedef typename get_function_obj_invoker6<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager_a<FunctionObj, Allocator> manager_type;
23866: };
23866: };
23866:
23866:
23866: template<>
23866: struct get_invoker6<function_obj_ref_tag>
23866: {
23866: template<typename RefWrapper,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
23866: struct apply
23866: {
23866: typedef typename get_function_ref_invoker6<
23866: typename RefWrapper::type,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5
23866: >::type
23866: invoker_type;
23866:
23866: typedef reference_manager<typename RefWrapper::type> manager_type;
23866: };
23866:
23866: template<typename RefWrapper, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
23866: struct apply_a
23866: {
23866: typedef typename get_function_ref_invoker6<
23866: typename RefWrapper::type,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5
23866: >::type
23866: invoker_type;
23866:
23866: typedef reference_manager<typename RefWrapper::type> manager_type;
23866: };
23866: };
23866: # 476 "/usr/include/boost/function/function_template.hpp" 3 4
23866: template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
23866: struct basic_vtable6
23866: {
23866:
23866: typedef R result_type;
23866:
23866:
23866:
23866:
23866: typedef result_type (*invoker_type)(function_buffer&
23866: ,
23866: T0 , T1 , T2 , T3 , T4 , T5);
23866:
23866: template<typename F>
23866: bool assign_to(F f, function_buffer& functor) const
23866: {
23866: typedef typename get_function_tag<F>::type tag;
23866: return assign_to(f, functor, tag());
23866: }
23866: template<typename F,typename Allocator>
23866: bool assign_to_a(F f, function_buffer& functor, Allocator a) const
23866: {
23866: typedef typename get_function_tag<F>::type tag;
23866: return assign_to_a(f, functor, a, tag());
23866: }
23866:
23866: void clear(function_buffer& functor) const
23866: {
23866: if (base.manager)
23866: base.manager(functor, functor, destroy_functor_tag);
23866: }
23866:
23866: private:
23866:
23866: template<typename FunctionPtr>
23866: bool
23866: assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag) const
23866: {
23866: this->clear(functor);
23866: if (f) {
23866:
23866:
23866: functor.members.func_ptr = reinterpret_cast<void (*)()>(f);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename FunctionPtr,typename Allocator>
23866: bool
23866: assign_to_a(FunctionPtr f, function_buffer& functor, Allocator, function_ptr_tag) const
23866: {
23866: return assign_to(f,functor,function_ptr_tag());
23866: }
23866:
23866:
23866:
23866: template<typename MemberPtr>
23866: bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag) const
23866: {
23866:
23866:
23866:
23866: if (f) {
23866: this->assign_to(boost::mem_fn(f), functor);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename MemberPtr,typename Allocator>
23866: bool assign_to_a(MemberPtr f, function_buffer& functor, Allocator a, member_ptr_tag) const
23866: {
23866:
23866:
23866:
23866: if (f) {
23866: this->assign_to_a(boost::mem_fn(f), functor, a);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866: template<typename FunctionObj>
23866: void
23866: assign_functor(FunctionObj f, function_buffer& functor, true_type) const
23866: {
23866: new (reinterpret_cast<void*>(functor.data)) FunctionObj(f);
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: void
23866: assign_functor_a(FunctionObj f, function_buffer& functor, Allocator, true_type) const
23866: {
23866: assign_functor(f,functor,true_type());
23866: }
23866:
23866:
23866: template<typename FunctionObj>
23866: void
23866: assign_functor(FunctionObj f, function_buffer& functor, false_type) const
23866: {
23866: functor.members.obj_ptr = new FunctionObj(f);
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: void
23866: assign_functor_a(FunctionObj f, function_buffer& functor, Allocator a, false_type) const
23866: {
23866: typedef functor_wrapper<FunctionObj,Allocator> functor_wrapper_type;
23866:
23866:
23866:
23866:
23866:
23866: using wrapper_allocator_type = typename std::allocator_traits<Allocator>::template rebind_alloc<functor_wrapper_type>;
23866: using wrapper_allocator_pointer_type = typename std::allocator_traits<wrapper_allocator_type>::pointer;
23866:
23866: wrapper_allocator_type wrapper_allocator(a);
23866: wrapper_allocator_pointer_type copy = wrapper_allocator.allocate(1);
23866:
23866:
23866:
23866: std::allocator_traits<wrapper_allocator_type>::construct(wrapper_allocator, copy, functor_wrapper_type(f,a));
23866:
23866: functor_wrapper_type* new_f = static_cast<functor_wrapper_type*>(copy);
23866: functor.members.obj_ptr = new_f;
23866: }
23866:
23866: template<typename FunctionObj>
23866: bool
23866: assign_to(FunctionObj f, function_buffer& functor, function_obj_tag) const
23866: {
23866: if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
23866: assign_functor(f, functor,
23866: integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>());
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: bool
23866: assign_to_a(FunctionObj f, function_buffer& functor, Allocator a, function_obj_tag) const
23866: {
23866: if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
23866: assign_functor_a(f, functor, a,
23866: integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>());
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866:
23866:
23866: template<typename FunctionObj>
23866: bool
23866: assign_to(const reference_wrapper<FunctionObj>& f,
23866: function_buffer& functor, function_obj_ref_tag) const
23866: {
23866: functor.members.obj_ref.obj_ptr = (void *)(f.get_pointer());
23866: functor.members.obj_ref.is_const_qualified = is_const<FunctionObj>::value;
23866: functor.members.obj_ref.is_volatile_qualified = is_volatile<FunctionObj>::value;
23866: return true;
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: bool
23866: assign_to_a(const reference_wrapper<FunctionObj>& f,
23866: function_buffer& functor, Allocator, function_obj_ref_tag) const
23866: {
23866: return assign_to(f,functor,function_obj_ref_tag());
23866: }
23866:
23866: public:
23866: vtable_base base;
23866: invoker_type invoker;
23866: };
23866: }
23866: }
23866:
23866: template<
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
23866: >
23866: class function6 : public function_base
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866:
23866:
23866:
23866:
23866:
23866: private:
23866: typedef boost::detail::function::basic_vtable6<
23866: R , T0 , T1 , T2 , T3 , T4 , T5>
23866: vtable_type;
23866:
23866: vtable_type* get_vtable() const {
23866: return reinterpret_cast<vtable_type*>(
23866: reinterpret_cast<std::size_t>(vtable) & ~static_cast<std::size_t>(0x01));
23866: }
23866:
23866: struct clear_type {};
23866:
23866: public:
23866: static const int args = 6;
23866:
23866:
23866: template<typename Args>
23866: struct sig
23866: {
23866: typedef result_type type;
23866: };
23866: # 701 "/usr/include/boost/function/function_template.hpp" 3 4
23866: static const int arity = 6;
23866: typedef T0 arg1_type; typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type; typedef T4 arg5_type; typedef T5 arg6_type;
23866:
23866: typedef function6 self_type;
23866:
23866: function6() = default;
23866:
23866:
23866:
23866: template<typename Functor>
23866: function6(Functor f
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: function_base()
23866: {
23866: this->assign_to(f);
23866: }
23866: template<typename Functor,typename Allocator>
23866: function6(Functor f, Allocator a
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: function_base()
23866: {
23866: this->assign_to_a(f,a);
23866: }
23866:
23866:
23866: function6(clear_type*) : function_base() { }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: function6(const function6& f) : function_base()
23866: {
23866: this->assign_to_own(f);
23866: }
23866:
23866:
23866: function6(function6&& f) : function_base()
23866: {
23866: this->move_assign(f);
23866: }
23866:
23866:
23866: ~function6() { clear(); }
23866:
23866: result_type operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5) const
23866: {
23866: if (this->empty())
23866: boost::throw_exception(bad_function_call());
23866:
23866: return get_vtable()->invoker
23866: (this->functor , static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5));
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename Functor>
23866:
23866: typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: function6&>::type
23866:
23866:
23866:
23866: operator=(Functor f)
23866: {
23866: this->clear();
23866: { try {
23866: this->assign_to(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866: template<typename Functor,typename Allocator>
23866: void assign(Functor f, Allocator a)
23866: {
23866: this->clear();
23866: { try{
23866: this->assign_to_a(f,a);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: }
23866:
23866:
23866: function6& operator=(clear_type*)
23866: {
23866: this->clear();
23866: return *this;
23866: }
23866: # 821 "/usr/include/boost/function/function_template.hpp" 3 4
23866: function6& operator=(const function6& f)
23866: {
23866: if (&f == this)
23866: return *this;
23866:
23866: this->clear();
23866: { try {
23866: this->assign_to_own(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866:
23866:
23866:
23866: function6& operator=(function6&& f)
23866: {
23866: if (&f == this)
23866: return *this;
23866:
23866: this->clear();
23866: { try {
23866: this->move_assign(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866:
23866:
23866: void swap(function6& other)
23866: {
23866: if (&other == this)
23866: return;
23866:
23866: function6 tmp;
23866: tmp.move_assign(*this);
23866: this->move_assign(other);
23866: other.move_assign(tmp);
23866: }
23866:
23866:
23866: void clear()
23866: {
23866: if (vtable) {
23866: if (!this->has_trivial_copy_and_destroy())
23866: get_vtable()->clear(this->functor);
23866: vtable = 0;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866:
23866: private:
23866: struct dummy {
23866: void nonnull() {}
23866: };
23866:
23866: typedef void (dummy::*safe_bool)();
23866:
23866: public:
23866: operator safe_bool () const
23866: { return (this->empty())? 0 : &dummy::nonnull; }
23866:
23866: bool operator!() const
23866: { return this->empty(); }
23866:
23866:
23866: private:
23866: void assign_to_own(const function6& f)
23866: {
23866: if (!f.empty()) {
23866: this->vtable = f.vtable;
23866: if (this->has_trivial_copy_and_destroy()) {
23866:
23866:
23866:
23866: #pragma GCC diagnostic push
23866:
23866:
23866: #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
23866:
23866: std::memcpy(this->functor.data, f.functor.data, sizeof(boost::detail::function::function_buffer));
23866:
23866: #pragma GCC diagnostic pop
23866:
23866: } else
23866: get_vtable()->base.manager(f.functor, this->functor,
23866: boost::detail::function::clone_functor_tag);
23866: }
23866: }
23866:
23866: template<typename Functor>
23866: void assign_to(Functor f)
23866: {
23866: using boost::detail::function::vtable_base;
23866:
23866: typedef typename boost::detail::function::get_function_tag<Functor>::type tag;
23866: typedef boost::detail::function::get_invoker6<tag> get_invoker;
23866: typedef typename get_invoker::
23866: template apply<Functor, R ,
23866: T0 , T1 , T2 , T3 , T4 , T5>
23866: handler_type;
23866:
23866: typedef typename handler_type::invoker_type invoker_type;
23866: typedef typename handler_type::manager_type manager_type;
23866:
23866:
23866:
23866:
23866:
23866: static const vtable_type stored_vtable =
23866: { { &manager_type::manage }, &invoker_type::invoke };
23866:
23866: if (stored_vtable.assign_to(f, functor)) {
23866: std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
23866:
23866: if (boost::has_trivial_copy_constructor<Functor>::value &&
23866: boost::has_trivial_destructor<Functor>::value &&
23866: boost::detail::function::function_allows_small_object_optimization<Functor>::value)
23866: value |= static_cast<std::size_t>(0x01);
23866: vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value);
23866: } else
23866: vtable = 0;
23866: }
23866:
23866: template<typename Functor,typename Allocator>
23866: void assign_to_a(Functor f,Allocator a)
23866: {
23866: using boost::detail::function::vtable_base;
23866:
23866: typedef typename boost::detail::function::get_function_tag<Functor>::type tag;
23866: typedef boost::detail::function::get_invoker6<tag> get_invoker;
23866: typedef typename get_invoker::
23866: template apply_a<Functor, Allocator, R ,
23866: T0 , T1 , T2 , T3 , T4 , T5>
23866: handler_type;
23866:
23866: typedef typename handler_type::invoker_type invoker_type;
23866: typedef typename handler_type::manager_type manager_type;
23866:
23866:
23866:
23866:
23866:
23866: static const vtable_type stored_vtable =
23866: { { &manager_type::manage }, &invoker_type::invoke };
23866:
23866: if (stored_vtable.assign_to_a(f, functor, a)) {
23866: std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
23866:
23866: if (boost::has_trivial_copy_constructor<Functor>::value &&
23866: boost::has_trivial_destructor<Functor>::value &&
23866: boost::detail::function::function_allows_small_object_optimization<Functor>::value)
23866: value |= static_cast<std::size_t>(0x01);
23866: vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value);
23866: } else
23866: vtable = 0;
23866: }
23866:
23866:
23866:
23866:
23866: void move_assign(function6& f)
23866: {
23866: if (&f == this)
23866: return;
23866:
23866: { try {
23866: if (!f.empty()) {
23866: this->vtable = f.vtable;
23866: if (this->has_trivial_copy_and_destroy()) {
23866:
23866:
23866:
23866: #pragma GCC diagnostic push
23866:
23866:
23866: #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
23866:
23866: std::memcpy(this->functor.data, f.functor.data, sizeof(this->functor.data));
23866:
23866: #pragma GCC diagnostic pop
23866:
23866: } else
23866: get_vtable()->base.manager(f.functor, this->functor,
23866: boost::detail::function::move_functor_tag);
23866: f.vtable = 0;
23866: } else {
23866: clear();
23866: }
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: }
23866: };
23866:
23866: template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
23866: inline void swap(function6<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5
23866: >& f1,
23866: function6<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5
23866: >& f2)
23866: {
23866: f1.swap(f2);
23866: }
23866:
23866:
23866: template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
23866: void operator==(const function6<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5>&,
23866: const function6<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5>&);
23866: template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
23866: void operator!=(const function6<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5>&,
23866: const function6<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5>& );
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_PARTIAL_SPEC R (BOOST_FUNCTION_TEMPLATE_ARGS)
23866:
23866:
23866: template<typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
23866: class function<R ( T0 , T1 , T2 , T3 , T4 , T5)>
23866: : public function6<R , T0 , T1 , T2 , T3 , T4 , T5>
23866: {
23866: typedef function6<R , T0 , T1 , T2 , T3 , T4 , T5> base_type;
23866: typedef function self_type;
23866:
23866: struct clear_type {};
23866:
23866: public:
23866:
23866: function() = default;
23866:
23866: template<typename Functor>
23866: function(Functor f
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: base_type(f)
23866: {
23866: }
23866: template<typename Functor,typename Allocator>
23866: function(Functor f, Allocator a
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: base_type(f,a)
23866: {
23866: }
23866:
23866:
23866: function(clear_type*) : base_type() {}
23866:
23866:
23866: function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}
23866:
23866: function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}
23866:
23866:
23866:
23866: function(self_type&& f): base_type(static_cast<base_type&&>(f)){}
23866: function(base_type&& f): base_type(static_cast<base_type&&>(f)){}
23866:
23866:
23866: self_type& operator=(const self_type& f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(self_type&& f)
23866: {
23866: self_type(static_cast<self_type&&>(f)).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: template<typename Functor>
23866:
23866: typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: self_type&>::type
23866:
23866:
23866:
23866: operator=(Functor f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(clear_type*)
23866: {
23866: this->clear();
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(const base_type& f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(base_type&& f)
23866: {
23866: self_type(static_cast<base_type&&>(f)).swap(*this);
23866: return *this;
23866: }
23866:
23866: };
23866:
23866: #undef BOOST_FUNCTION_PARTIAL_SPEC
23866:
23866:
23866: }
23866:
23866:
23866: #undef BOOST_FUNCTION_VTABLE
23866: #undef BOOST_FUNCTION_COMMA
23866: #undef BOOST_FUNCTION_FUNCTION
23866: #undef BOOST_FUNCTION_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_MEMBER_INVOKER
23866: #undef BOOST_FUNCTION_VOID_MEMBER_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_GET_MEM_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_GET_INVOKER
23866: #undef BOOST_FUNCTION_TEMPLATE_PARMS
23866: #undef BOOST_FUNCTION_TEMPLATE_ARGS
23866: #undef BOOST_FUNCTION_PARMS
23866: #undef BOOST_FUNCTION_PARM
23866:
23866: #undef BOOST_FUNCTION_ARG
23866:
23866: #undef BOOST_FUNCTION_ARGS
23866: #undef BOOST_FUNCTION_ARG_TYPE
23866: #undef BOOST_FUNCTION_ARG_TYPES
23866: #undef BOOST_FUNCTION_VOID_RETURN_TYPE
23866: #undef BOOST_FUNCTION_RETURN
23866: # 58 "/usr/include/boost/function/detail/maybe_include.hpp" 2 3 4
23866: # 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
23866: #undef BOOST_FUNCTION_NUM_ARGS
23866: # 78 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_1
23866:
23866:
23866: #define BOOST_PP_ITERATION_1 7
23866: # 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
23866: # 13 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
23866: #define BOOST_FUNCTION_NUM_ARGS BOOST_PP_ITERATION()
23866: # 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
23866: # 60 "/usr/include/boost/function/detail/maybe_include.hpp" 3 4
23866: #undef BOOST_FUNCTION_MAX_ARGS_DEFINED
23866: #define BOOST_FUNCTION_MAX_ARGS_DEFINED 7
23866:
23866: #define BOOST_FUNCTION_7
23866: # 1 "/usr/include/boost/function/function_template.hpp" 1 3 4
23866: # 21 "/usr/include/boost/function/function_template.hpp" 3 4
23866: #define BOOST_FUNCTION_TEMPLATE_PARMS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, typename T)
23866:
23866: #define BOOST_FUNCTION_TEMPLATE_ARGS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, T)
23866:
23866: #define BOOST_FUNCTION_PARM(J,I,D) BOOST_PP_CAT(T,I) BOOST_PP_CAT(a,I)
23866:
23866: #define BOOST_FUNCTION_PARMS BOOST_PP_ENUM(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_PARM,BOOST_PP_EMPTY)
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_ARG(J,I,D) static_cast<BOOST_PP_CAT(T,I)&&>(BOOST_PP_CAT(a,I))
23866: #define BOOST_FUNCTION_ARGS BOOST_PP_ENUM(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_ARG,BOOST_PP_EMPTY)
23866:
23866:
23866: #define BOOST_FUNCTION_ARG_TYPE(J,I,D) typedef BOOST_PP_CAT(T,I) BOOST_PP_CAT(BOOST_PP_CAT(arg, BOOST_PP_INC(I)),_type);
23866:
23866:
23866: #define BOOST_FUNCTION_ARG_TYPES BOOST_PP_REPEAT(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_ARG_TYPE,BOOST_PP_EMPTY)
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_COMMA ,
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_FUNCTION BOOST_JOIN(function,BOOST_FUNCTION_NUM_ARGS)
23866: #define BOOST_FUNCTION_FUNCTION_INVOKER BOOST_JOIN(function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_INVOKER BOOST_JOIN(void_function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_FUNCTION_OBJ_INVOKER BOOST_JOIN(function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER BOOST_JOIN(void_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_FUNCTION_REF_INVOKER BOOST_JOIN(function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER BOOST_JOIN(void_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_MEMBER_INVOKER BOOST_JOIN(function_mem_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_MEMBER_INVOKER BOOST_JOIN(function_void_mem_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_INVOKER BOOST_JOIN(get_function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER BOOST_JOIN(get_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER BOOST_JOIN(get_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_MEMBER_INVOKER BOOST_JOIN(get_member_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_INVOKER BOOST_JOIN(get_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VTABLE BOOST_JOIN(basic_vtable,BOOST_FUNCTION_NUM_ARGS)
23866:
23866:
23866: #define BOOST_FUNCTION_VOID_RETURN_TYPE void
23866: #define BOOST_FUNCTION_RETURN(X) X
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace detail {
23866: namespace function {
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
23866: >
23866: struct function_invoker7
23866: {
23866: static R invoke(function_buffer& function_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6)
23866: {
23866: FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.members.func_ptr);
23866: return f( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
23866: >
23866: struct void_function_invoker7
23866: {
23866: static void
23866: invoke(function_buffer& function_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6)
23866:
23866: {
23866: FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.members.func_ptr);
23866: f( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
23866: >
23866: struct function_obj_invoker7
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6)
23866:
23866: {
23866: FunctionObj* f;
23866: if (function_allows_small_object_optimization<FunctionObj>::value)
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.data);
23866: else
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: return (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
23866: >
23866: struct void_function_obj_invoker7
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6)
23866:
23866: {
23866: FunctionObj* f;
23866: if (function_allows_small_object_optimization<FunctionObj>::value)
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.data);
23866: else
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
23866: >
23866: struct function_ref_invoker7
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6)
23866:
23866: {
23866: FunctionObj* f =
23866: reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: return (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
23866: >
23866: struct void_function_ref_invoker7
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6)
23866:
23866: {
23866: FunctionObj* f =
23866: reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6));
23866: }
23866: };
23866:
23866:
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
23866: >
23866: struct function_mem_invoker7
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6)
23866:
23866: {
23866: MemberPtr* f =
23866: reinterpret_cast<MemberPtr*>(function_obj_ptr.data);
23866: return boost::mem_fn(*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6));
23866: }
23866: };
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
23866: >
23866: struct function_void_mem_invoker7
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6)
23866:
23866: {
23866: MemberPtr* f =
23866: reinterpret_cast<MemberPtr*>(function_obj_ptr.data);
23866: boost::mem_fn(*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6));
23866: }
23866: };
23866:
23866:
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
23866: >
23866: struct get_function_invoker7
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_invoker7<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6
23866: >,
23866: function_invoker7<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6
23866: >
23866: >::type type;
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
23866: >
23866: struct get_function_obj_invoker7
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_obj_invoker7<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6
23866: >,
23866: function_obj_invoker7<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6
23866: >
23866: >::type type;
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
23866: >
23866: struct get_function_ref_invoker7
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_ref_invoker7<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6
23866: >,
23866: function_ref_invoker7<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6
23866: >
23866: >::type type;
23866: };
23866:
23866:
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
23866: >
23866: struct get_member_invoker7
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: function_void_mem_invoker7<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6
23866: >,
23866: function_mem_invoker7<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6
23866: >
23866: >::type type;
23866: };
23866: # 331 "/usr/include/boost/function/function_template.hpp" 3 4
23866: template<typename Tag>
23866: struct get_invoker7 { };
23866:
23866:
23866: template<>
23866: struct get_invoker7<function_ptr_tag>
23866: {
23866: template<typename FunctionPtr,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
23866: struct apply
23866: {
23866: typedef typename get_function_invoker7<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionPtr> manager_type;
23866: };
23866:
23866: template<typename FunctionPtr, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
23866: struct apply_a
23866: {
23866: typedef typename get_function_invoker7<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionPtr> manager_type;
23866: };
23866: };
23866:
23866:
23866:
23866: template<>
23866: struct get_invoker7<member_ptr_tag>
23866: {
23866: template<typename MemberPtr,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
23866: struct apply
23866: {
23866: typedef typename get_member_invoker7<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<MemberPtr> manager_type;
23866: };
23866:
23866: template<typename MemberPtr, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
23866: struct apply_a
23866: {
23866: typedef typename get_member_invoker7<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<MemberPtr> manager_type;
23866: };
23866: };
23866:
23866:
23866:
23866: template<>
23866: struct get_invoker7<function_obj_tag>
23866: {
23866: template<typename FunctionObj,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
23866: struct apply
23866: {
23866: typedef typename get_function_obj_invoker7<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionObj> manager_type;
23866: };
23866:
23866: template<typename FunctionObj, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
23866: struct apply_a
23866: {
23866: typedef typename get_function_obj_invoker7<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager_a<FunctionObj, Allocator> manager_type;
23866: };
23866: };
23866:
23866:
23866: template<>
23866: struct get_invoker7<function_obj_ref_tag>
23866: {
23866: template<typename RefWrapper,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
23866: struct apply
23866: {
23866: typedef typename get_function_ref_invoker7<
23866: typename RefWrapper::type,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6
23866: >::type
23866: invoker_type;
23866:
23866: typedef reference_manager<typename RefWrapper::type> manager_type;
23866: };
23866:
23866: template<typename RefWrapper, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
23866: struct apply_a
23866: {
23866: typedef typename get_function_ref_invoker7<
23866: typename RefWrapper::type,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6
23866: >::type
23866: invoker_type;
23866:
23866: typedef reference_manager<typename RefWrapper::type> manager_type;
23866: };
23866: };
23866: # 476 "/usr/include/boost/function/function_template.hpp" 3 4
23866: template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
23866: struct basic_vtable7
23866: {
23866:
23866: typedef R result_type;
23866:
23866:
23866:
23866:
23866: typedef result_type (*invoker_type)(function_buffer&
23866: ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6);
23866:
23866: template<typename F>
23866: bool assign_to(F f, function_buffer& functor) const
23866: {
23866: typedef typename get_function_tag<F>::type tag;
23866: return assign_to(f, functor, tag());
23866: }
23866: template<typename F,typename Allocator>
23866: bool assign_to_a(F f, function_buffer& functor, Allocator a) const
23866: {
23866: typedef typename get_function_tag<F>::type tag;
23866: return assign_to_a(f, functor, a, tag());
23866: }
23866:
23866: void clear(function_buffer& functor) const
23866: {
23866: if (base.manager)
23866: base.manager(functor, functor, destroy_functor_tag);
23866: }
23866:
23866: private:
23866:
23866: template<typename FunctionPtr>
23866: bool
23866: assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag) const
23866: {
23866: this->clear(functor);
23866: if (f) {
23866:
23866:
23866: functor.members.func_ptr = reinterpret_cast<void (*)()>(f);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename FunctionPtr,typename Allocator>
23866: bool
23866: assign_to_a(FunctionPtr f, function_buffer& functor, Allocator, function_ptr_tag) const
23866: {
23866: return assign_to(f,functor,function_ptr_tag());
23866: }
23866:
23866:
23866:
23866: template<typename MemberPtr>
23866: bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag) const
23866: {
23866:
23866:
23866:
23866: if (f) {
23866: this->assign_to(boost::mem_fn(f), functor);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename MemberPtr,typename Allocator>
23866: bool assign_to_a(MemberPtr f, function_buffer& functor, Allocator a, member_ptr_tag) const
23866: {
23866:
23866:
23866:
23866: if (f) {
23866: this->assign_to_a(boost::mem_fn(f), functor, a);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866: template<typename FunctionObj>
23866: void
23866: assign_functor(FunctionObj f, function_buffer& functor, true_type) const
23866: {
23866: new (reinterpret_cast<void*>(functor.data)) FunctionObj(f);
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: void
23866: assign_functor_a(FunctionObj f, function_buffer& functor, Allocator, true_type) const
23866: {
23866: assign_functor(f,functor,true_type());
23866: }
23866:
23866:
23866: template<typename FunctionObj>
23866: void
23866: assign_functor(FunctionObj f, function_buffer& functor, false_type) const
23866: {
23866: functor.members.obj_ptr = new FunctionObj(f);
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: void
23866: assign_functor_a(FunctionObj f, function_buffer& functor, Allocator a, false_type) const
23866: {
23866: typedef functor_wrapper<FunctionObj,Allocator> functor_wrapper_type;
23866:
23866:
23866:
23866:
23866:
23866: using wrapper_allocator_type = typename std::allocator_traits<Allocator>::template rebind_alloc<functor_wrapper_type>;
23866: using wrapper_allocator_pointer_type = typename std::allocator_traits<wrapper_allocator_type>::pointer;
23866:
23866: wrapper_allocator_type wrapper_allocator(a);
23866: wrapper_allocator_pointer_type copy = wrapper_allocator.allocate(1);
23866:
23866:
23866:
23866: std::allocator_traits<wrapper_allocator_type>::construct(wrapper_allocator, copy, functor_wrapper_type(f,a));
23866:
23866: functor_wrapper_type* new_f = static_cast<functor_wrapper_type*>(copy);
23866: functor.members.obj_ptr = new_f;
23866: }
23866:
23866: template<typename FunctionObj>
23866: bool
23866: assign_to(FunctionObj f, function_buffer& functor, function_obj_tag) const
23866: {
23866: if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
23866: assign_functor(f, functor,
23866: integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>());
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: bool
23866: assign_to_a(FunctionObj f, function_buffer& functor, Allocator a, function_obj_tag) const
23866: {
23866: if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
23866: assign_functor_a(f, functor, a,
23866: integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>());
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866:
23866:
23866: template<typename FunctionObj>
23866: bool
23866: assign_to(const reference_wrapper<FunctionObj>& f,
23866: function_buffer& functor, function_obj_ref_tag) const
23866: {
23866: functor.members.obj_ref.obj_ptr = (void *)(f.get_pointer());
23866: functor.members.obj_ref.is_const_qualified = is_const<FunctionObj>::value;
23866: functor.members.obj_ref.is_volatile_qualified = is_volatile<FunctionObj>::value;
23866: return true;
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: bool
23866: assign_to_a(const reference_wrapper<FunctionObj>& f,
23866: function_buffer& functor, Allocator, function_obj_ref_tag) const
23866: {
23866: return assign_to(f,functor,function_obj_ref_tag());
23866: }
23866:
23866: public:
23866: vtable_base base;
23866: invoker_type invoker;
23866: };
23866: }
23866: }
23866:
23866: template<
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
23866: >
23866: class function7 : public function_base
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866:
23866:
23866:
23866:
23866:
23866: private:
23866: typedef boost::detail::function::basic_vtable7<
23866: R , T0 , T1 , T2 , T3 , T4 , T5 , T6>
23866: vtable_type;
23866:
23866: vtable_type* get_vtable() const {
23866: return reinterpret_cast<vtable_type*>(
23866: reinterpret_cast<std::size_t>(vtable) & ~static_cast<std::size_t>(0x01));
23866: }
23866:
23866: struct clear_type {};
23866:
23866: public:
23866: static const int args = 7;
23866:
23866:
23866: template<typename Args>
23866: struct sig
23866: {
23866: typedef result_type type;
23866: };
23866: # 701 "/usr/include/boost/function/function_template.hpp" 3 4
23866: static const int arity = 7;
23866: typedef T0 arg1_type; typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type; typedef T4 arg5_type; typedef T5 arg6_type; typedef T6 arg7_type;
23866:
23866: typedef function7 self_type;
23866:
23866: function7() = default;
23866:
23866:
23866:
23866: template<typename Functor>
23866: function7(Functor f
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: function_base()
23866: {
23866: this->assign_to(f);
23866: }
23866: template<typename Functor,typename Allocator>
23866: function7(Functor f, Allocator a
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: function_base()
23866: {
23866: this->assign_to_a(f,a);
23866: }
23866:
23866:
23866: function7(clear_type*) : function_base() { }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: function7(const function7& f) : function_base()
23866: {
23866: this->assign_to_own(f);
23866: }
23866:
23866:
23866: function7(function7&& f) : function_base()
23866: {
23866: this->move_assign(f);
23866: }
23866:
23866:
23866: ~function7() { clear(); }
23866:
23866: result_type operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6) const
23866: {
23866: if (this->empty())
23866: boost::throw_exception(bad_function_call());
23866:
23866: return get_vtable()->invoker
23866: (this->functor , static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6));
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename Functor>
23866:
23866: typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: function7&>::type
23866:
23866:
23866:
23866: operator=(Functor f)
23866: {
23866: this->clear();
23866: { try {
23866: this->assign_to(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866: template<typename Functor,typename Allocator>
23866: void assign(Functor f, Allocator a)
23866: {
23866: this->clear();
23866: { try{
23866: this->assign_to_a(f,a);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: }
23866:
23866:
23866: function7& operator=(clear_type*)
23866: {
23866: this->clear();
23866: return *this;
23866: }
23866: # 821 "/usr/include/boost/function/function_template.hpp" 3 4
23866: function7& operator=(const function7& f)
23866: {
23866: if (&f == this)
23866: return *this;
23866:
23866: this->clear();
23866: { try {
23866: this->assign_to_own(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866:
23866:
23866:
23866: function7& operator=(function7&& f)
23866: {
23866: if (&f == this)
23866: return *this;
23866:
23866: this->clear();
23866: { try {
23866: this->move_assign(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866:
23866:
23866: void swap(function7& other)
23866: {
23866: if (&other == this)
23866: return;
23866:
23866: function7 tmp;
23866: tmp.move_assign(*this);
23866: this->move_assign(other);
23866: other.move_assign(tmp);
23866: }
23866:
23866:
23866: void clear()
23866: {
23866: if (vtable) {
23866: if (!this->has_trivial_copy_and_destroy())
23866: get_vtable()->clear(this->functor);
23866: vtable = 0;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866:
23866: private:
23866: struct dummy {
23866: void nonnull() {}
23866: };
23866:
23866: typedef void (dummy::*safe_bool)();
23866:
23866: public:
23866: operator safe_bool () const
23866: { return (this->empty())? 0 : &dummy::nonnull; }
23866:
23866: bool operator!() const
23866: { return this->empty(); }
23866:
23866:
23866: private:
23866: void assign_to_own(const function7& f)
23866: {
23866: if (!f.empty()) {
23866: this->vtable = f.vtable;
23866: if (this->has_trivial_copy_and_destroy()) {
23866:
23866:
23866:
23866: #pragma GCC diagnostic push
23866:
23866:
23866: #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
23866:
23866: std::memcpy(this->functor.data, f.functor.data, sizeof(boost::detail::function::function_buffer));
23866:
23866: #pragma GCC diagnostic pop
23866:
23866: } else
23866: get_vtable()->base.manager(f.functor, this->functor,
23866: boost::detail::function::clone_functor_tag);
23866: }
23866: }
23866:
23866: template<typename Functor>
23866: void assign_to(Functor f)
23866: {
23866: using boost::detail::function::vtable_base;
23866:
23866: typedef typename boost::detail::function::get_function_tag<Functor>::type tag;
23866: typedef boost::detail::function::get_invoker7<tag> get_invoker;
23866: typedef typename get_invoker::
23866: template apply<Functor, R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6>
23866: handler_type;
23866:
23866: typedef typename handler_type::invoker_type invoker_type;
23866: typedef typename handler_type::manager_type manager_type;
23866:
23866:
23866:
23866:
23866:
23866: static const vtable_type stored_vtable =
23866: { { &manager_type::manage }, &invoker_type::invoke };
23866:
23866: if (stored_vtable.assign_to(f, functor)) {
23866: std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
23866:
23866: if (boost::has_trivial_copy_constructor<Functor>::value &&
23866: boost::has_trivial_destructor<Functor>::value &&
23866: boost::detail::function::function_allows_small_object_optimization<Functor>::value)
23866: value |= static_cast<std::size_t>(0x01);
23866: vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value);
23866: } else
23866: vtable = 0;
23866: }
23866:
23866: template<typename Functor,typename Allocator>
23866: void assign_to_a(Functor f,Allocator a)
23866: {
23866: using boost::detail::function::vtable_base;
23866:
23866: typedef typename boost::detail::function::get_function_tag<Functor>::type tag;
23866: typedef boost::detail::function::get_invoker7<tag> get_invoker;
23866: typedef typename get_invoker::
23866: template apply_a<Functor, Allocator, R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6>
23866: handler_type;
23866:
23866: typedef typename handler_type::invoker_type invoker_type;
23866: typedef typename handler_type::manager_type manager_type;
23866:
23866:
23866:
23866:
23866:
23866: static const vtable_type stored_vtable =
23866: { { &manager_type::manage }, &invoker_type::invoke };
23866:
23866: if (stored_vtable.assign_to_a(f, functor, a)) {
23866: std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
23866:
23866: if (boost::has_trivial_copy_constructor<Functor>::value &&
23866: boost::has_trivial_destructor<Functor>::value &&
23866: boost::detail::function::function_allows_small_object_optimization<Functor>::value)
23866: value |= static_cast<std::size_t>(0x01);
23866: vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value);
23866: } else
23866: vtable = 0;
23866: }
23866:
23866:
23866:
23866:
23866: void move_assign(function7& f)
23866: {
23866: if (&f == this)
23866: return;
23866:
23866: { try {
23866: if (!f.empty()) {
23866: this->vtable = f.vtable;
23866: if (this->has_trivial_copy_and_destroy()) {
23866:
23866:
23866:
23866: #pragma GCC diagnostic push
23866:
23866:
23866: #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
23866:
23866: std::memcpy(this->functor.data, f.functor.data, sizeof(this->functor.data));
23866:
23866: #pragma GCC diagnostic pop
23866:
23866: } else
23866: get_vtable()->base.manager(f.functor, this->functor,
23866: boost::detail::function::move_functor_tag);
23866: f.vtable = 0;
23866: } else {
23866: clear();
23866: }
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: }
23866: };
23866:
23866: template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
23866: inline void swap(function7<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6
23866: >& f1,
23866: function7<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6
23866: >& f2)
23866: {
23866: f1.swap(f2);
23866: }
23866:
23866:
23866: template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
23866: void operator==(const function7<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6>&,
23866: const function7<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6>&);
23866: template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
23866: void operator!=(const function7<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6>&,
23866: const function7<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6>& );
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_PARTIAL_SPEC R (BOOST_FUNCTION_TEMPLATE_ARGS)
23866:
23866:
23866: template<typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
23866: class function<R ( T0 , T1 , T2 , T3 , T4 , T5 , T6)>
23866: : public function7<R , T0 , T1 , T2 , T3 , T4 , T5 , T6>
23866: {
23866: typedef function7<R , T0 , T1 , T2 , T3 , T4 , T5 , T6> base_type;
23866: typedef function self_type;
23866:
23866: struct clear_type {};
23866:
23866: public:
23866:
23866: function() = default;
23866:
23866: template<typename Functor>
23866: function(Functor f
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: base_type(f)
23866: {
23866: }
23866: template<typename Functor,typename Allocator>
23866: function(Functor f, Allocator a
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: base_type(f,a)
23866: {
23866: }
23866:
23866:
23866: function(clear_type*) : base_type() {}
23866:
23866:
23866: function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}
23866:
23866: function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}
23866:
23866:
23866:
23866: function(self_type&& f): base_type(static_cast<base_type&&>(f)){}
23866: function(base_type&& f): base_type(static_cast<base_type&&>(f)){}
23866:
23866:
23866: self_type& operator=(const self_type& f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(self_type&& f)
23866: {
23866: self_type(static_cast<self_type&&>(f)).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: template<typename Functor>
23866:
23866: typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: self_type&>::type
23866:
23866:
23866:
23866: operator=(Functor f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(clear_type*)
23866: {
23866: this->clear();
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(const base_type& f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(base_type&& f)
23866: {
23866: self_type(static_cast<base_type&&>(f)).swap(*this);
23866: return *this;
23866: }
23866:
23866: };
23866:
23866: #undef BOOST_FUNCTION_PARTIAL_SPEC
23866:
23866:
23866: }
23866:
23866:
23866: #undef BOOST_FUNCTION_VTABLE
23866: #undef BOOST_FUNCTION_COMMA
23866: #undef BOOST_FUNCTION_FUNCTION
23866: #undef BOOST_FUNCTION_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_MEMBER_INVOKER
23866: #undef BOOST_FUNCTION_VOID_MEMBER_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_GET_MEM_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_GET_INVOKER
23866: #undef BOOST_FUNCTION_TEMPLATE_PARMS
23866: #undef BOOST_FUNCTION_TEMPLATE_ARGS
23866: #undef BOOST_FUNCTION_PARMS
23866: #undef BOOST_FUNCTION_PARM
23866:
23866: #undef BOOST_FUNCTION_ARG
23866:
23866: #undef BOOST_FUNCTION_ARGS
23866: #undef BOOST_FUNCTION_ARG_TYPE
23866: #undef BOOST_FUNCTION_ARG_TYPES
23866: #undef BOOST_FUNCTION_VOID_RETURN_TYPE
23866: #undef BOOST_FUNCTION_RETURN
23866: # 65 "/usr/include/boost/function/detail/maybe_include.hpp" 2 3 4
23866: # 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
23866: #undef BOOST_FUNCTION_NUM_ARGS
23866: # 83 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_1
23866:
23866:
23866: #define BOOST_PP_ITERATION_1 8
23866: # 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
23866: # 13 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
23866: #define BOOST_FUNCTION_NUM_ARGS BOOST_PP_ITERATION()
23866: # 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
23866: # 67 "/usr/include/boost/function/detail/maybe_include.hpp" 3 4
23866: #undef BOOST_FUNCTION_MAX_ARGS_DEFINED
23866: #define BOOST_FUNCTION_MAX_ARGS_DEFINED 8
23866:
23866: #define BOOST_FUNCTION_8
23866: # 1 "/usr/include/boost/function/function_template.hpp" 1 3 4
23866: # 21 "/usr/include/boost/function/function_template.hpp" 3 4
23866: #define BOOST_FUNCTION_TEMPLATE_PARMS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, typename T)
23866:
23866: #define BOOST_FUNCTION_TEMPLATE_ARGS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, T)
23866:
23866: #define BOOST_FUNCTION_PARM(J,I,D) BOOST_PP_CAT(T,I) BOOST_PP_CAT(a,I)
23866:
23866: #define BOOST_FUNCTION_PARMS BOOST_PP_ENUM(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_PARM,BOOST_PP_EMPTY)
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_ARG(J,I,D) static_cast<BOOST_PP_CAT(T,I)&&>(BOOST_PP_CAT(a,I))
23866: #define BOOST_FUNCTION_ARGS BOOST_PP_ENUM(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_ARG,BOOST_PP_EMPTY)
23866:
23866:
23866: #define BOOST_FUNCTION_ARG_TYPE(J,I,D) typedef BOOST_PP_CAT(T,I) BOOST_PP_CAT(BOOST_PP_CAT(arg, BOOST_PP_INC(I)),_type);
23866:
23866:
23866: #define BOOST_FUNCTION_ARG_TYPES BOOST_PP_REPEAT(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_ARG_TYPE,BOOST_PP_EMPTY)
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_COMMA ,
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_FUNCTION BOOST_JOIN(function,BOOST_FUNCTION_NUM_ARGS)
23866: #define BOOST_FUNCTION_FUNCTION_INVOKER BOOST_JOIN(function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_INVOKER BOOST_JOIN(void_function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_FUNCTION_OBJ_INVOKER BOOST_JOIN(function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER BOOST_JOIN(void_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_FUNCTION_REF_INVOKER BOOST_JOIN(function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER BOOST_JOIN(void_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_MEMBER_INVOKER BOOST_JOIN(function_mem_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_MEMBER_INVOKER BOOST_JOIN(function_void_mem_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_INVOKER BOOST_JOIN(get_function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER BOOST_JOIN(get_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER BOOST_JOIN(get_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_MEMBER_INVOKER BOOST_JOIN(get_member_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_INVOKER BOOST_JOIN(get_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VTABLE BOOST_JOIN(basic_vtable,BOOST_FUNCTION_NUM_ARGS)
23866:
23866:
23866: #define BOOST_FUNCTION_VOID_RETURN_TYPE void
23866: #define BOOST_FUNCTION_RETURN(X) X
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace detail {
23866: namespace function {
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
23866: >
23866: struct function_invoker8
23866: {
23866: static R invoke(function_buffer& function_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7)
23866: {
23866: FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.members.func_ptr);
23866: return f( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6) , static_cast<T7&&>(a7));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
23866: >
23866: struct void_function_invoker8
23866: {
23866: static void
23866: invoke(function_buffer& function_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7)
23866:
23866: {
23866: FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.members.func_ptr);
23866: f( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6) , static_cast<T7&&>(a7));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
23866: >
23866: struct function_obj_invoker8
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7)
23866:
23866: {
23866: FunctionObj* f;
23866: if (function_allows_small_object_optimization<FunctionObj>::value)
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.data);
23866: else
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: return (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6) , static_cast<T7&&>(a7));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
23866: >
23866: struct void_function_obj_invoker8
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7)
23866:
23866: {
23866: FunctionObj* f;
23866: if (function_allows_small_object_optimization<FunctionObj>::value)
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.data);
23866: else
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6) , static_cast<T7&&>(a7));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
23866: >
23866: struct function_ref_invoker8
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7)
23866:
23866: {
23866: FunctionObj* f =
23866: reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: return (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6) , static_cast<T7&&>(a7));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
23866: >
23866: struct void_function_ref_invoker8
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7)
23866:
23866: {
23866: FunctionObj* f =
23866: reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6) , static_cast<T7&&>(a7));
23866: }
23866: };
23866:
23866:
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
23866: >
23866: struct function_mem_invoker8
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7)
23866:
23866: {
23866: MemberPtr* f =
23866: reinterpret_cast<MemberPtr*>(function_obj_ptr.data);
23866: return boost::mem_fn(*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6) , static_cast<T7&&>(a7));
23866: }
23866: };
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
23866: >
23866: struct function_void_mem_invoker8
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7)
23866:
23866: {
23866: MemberPtr* f =
23866: reinterpret_cast<MemberPtr*>(function_obj_ptr.data);
23866: boost::mem_fn(*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6) , static_cast<T7&&>(a7));
23866: }
23866: };
23866:
23866:
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
23866: >
23866: struct get_function_invoker8
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_invoker8<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
23866: >,
23866: function_invoker8<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
23866: >
23866: >::type type;
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
23866: >
23866: struct get_function_obj_invoker8
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_obj_invoker8<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
23866: >,
23866: function_obj_invoker8<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
23866: >
23866: >::type type;
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
23866: >
23866: struct get_function_ref_invoker8
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_ref_invoker8<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
23866: >,
23866: function_ref_invoker8<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
23866: >
23866: >::type type;
23866: };
23866:
23866:
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
23866: >
23866: struct get_member_invoker8
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: function_void_mem_invoker8<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
23866: >,
23866: function_mem_invoker8<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
23866: >
23866: >::type type;
23866: };
23866: # 331 "/usr/include/boost/function/function_template.hpp" 3 4
23866: template<typename Tag>
23866: struct get_invoker8 { };
23866:
23866:
23866: template<>
23866: struct get_invoker8<function_ptr_tag>
23866: {
23866: template<typename FunctionPtr,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
23866: struct apply
23866: {
23866: typedef typename get_function_invoker8<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionPtr> manager_type;
23866: };
23866:
23866: template<typename FunctionPtr, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
23866: struct apply_a
23866: {
23866: typedef typename get_function_invoker8<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionPtr> manager_type;
23866: };
23866: };
23866:
23866:
23866:
23866: template<>
23866: struct get_invoker8<member_ptr_tag>
23866: {
23866: template<typename MemberPtr,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
23866: struct apply
23866: {
23866: typedef typename get_member_invoker8<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<MemberPtr> manager_type;
23866: };
23866:
23866: template<typename MemberPtr, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
23866: struct apply_a
23866: {
23866: typedef typename get_member_invoker8<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<MemberPtr> manager_type;
23866: };
23866: };
23866:
23866:
23866:
23866: template<>
23866: struct get_invoker8<function_obj_tag>
23866: {
23866: template<typename FunctionObj,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
23866: struct apply
23866: {
23866: typedef typename get_function_obj_invoker8<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionObj> manager_type;
23866: };
23866:
23866: template<typename FunctionObj, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
23866: struct apply_a
23866: {
23866: typedef typename get_function_obj_invoker8<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager_a<FunctionObj, Allocator> manager_type;
23866: };
23866: };
23866:
23866:
23866: template<>
23866: struct get_invoker8<function_obj_ref_tag>
23866: {
23866: template<typename RefWrapper,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
23866: struct apply
23866: {
23866: typedef typename get_function_ref_invoker8<
23866: typename RefWrapper::type,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
23866: >::type
23866: invoker_type;
23866:
23866: typedef reference_manager<typename RefWrapper::type> manager_type;
23866: };
23866:
23866: template<typename RefWrapper, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
23866: struct apply_a
23866: {
23866: typedef typename get_function_ref_invoker8<
23866: typename RefWrapper::type,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
23866: >::type
23866: invoker_type;
23866:
23866: typedef reference_manager<typename RefWrapper::type> manager_type;
23866: };
23866: };
23866: # 476 "/usr/include/boost/function/function_template.hpp" 3 4
23866: template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
23866: struct basic_vtable8
23866: {
23866:
23866: typedef R result_type;
23866:
23866:
23866:
23866:
23866: typedef result_type (*invoker_type)(function_buffer&
23866: ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7);
23866:
23866: template<typename F>
23866: bool assign_to(F f, function_buffer& functor) const
23866: {
23866: typedef typename get_function_tag<F>::type tag;
23866: return assign_to(f, functor, tag());
23866: }
23866: template<typename F,typename Allocator>
23866: bool assign_to_a(F f, function_buffer& functor, Allocator a) const
23866: {
23866: typedef typename get_function_tag<F>::type tag;
23866: return assign_to_a(f, functor, a, tag());
23866: }
23866:
23866: void clear(function_buffer& functor) const
23866: {
23866: if (base.manager)
23866: base.manager(functor, functor, destroy_functor_tag);
23866: }
23866:
23866: private:
23866:
23866: template<typename FunctionPtr>
23866: bool
23866: assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag) const
23866: {
23866: this->clear(functor);
23866: if (f) {
23866:
23866:
23866: functor.members.func_ptr = reinterpret_cast<void (*)()>(f);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename FunctionPtr,typename Allocator>
23866: bool
23866: assign_to_a(FunctionPtr f, function_buffer& functor, Allocator, function_ptr_tag) const
23866: {
23866: return assign_to(f,functor,function_ptr_tag());
23866: }
23866:
23866:
23866:
23866: template<typename MemberPtr>
23866: bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag) const
23866: {
23866:
23866:
23866:
23866: if (f) {
23866: this->assign_to(boost::mem_fn(f), functor);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename MemberPtr,typename Allocator>
23866: bool assign_to_a(MemberPtr f, function_buffer& functor, Allocator a, member_ptr_tag) const
23866: {
23866:
23866:
23866:
23866: if (f) {
23866: this->assign_to_a(boost::mem_fn(f), functor, a);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866: template<typename FunctionObj>
23866: void
23866: assign_functor(FunctionObj f, function_buffer& functor, true_type) const
23866: {
23866: new (reinterpret_cast<void*>(functor.data)) FunctionObj(f);
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: void
23866: assign_functor_a(FunctionObj f, function_buffer& functor, Allocator, true_type) const
23866: {
23866: assign_functor(f,functor,true_type());
23866: }
23866:
23866:
23866: template<typename FunctionObj>
23866: void
23866: assign_functor(FunctionObj f, function_buffer& functor, false_type) const
23866: {
23866: functor.members.obj_ptr = new FunctionObj(f);
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: void
23866: assign_functor_a(FunctionObj f, function_buffer& functor, Allocator a, false_type) const
23866: {
23866: typedef functor_wrapper<FunctionObj,Allocator> functor_wrapper_type;
23866:
23866:
23866:
23866:
23866:
23866: using wrapper_allocator_type = typename std::allocator_traits<Allocator>::template rebind_alloc<functor_wrapper_type>;
23866: using wrapper_allocator_pointer_type = typename std::allocator_traits<wrapper_allocator_type>::pointer;
23866:
23866: wrapper_allocator_type wrapper_allocator(a);
23866: wrapper_allocator_pointer_type copy = wrapper_allocator.allocate(1);
23866:
23866:
23866:
23866: std::allocator_traits<wrapper_allocator_type>::construct(wrapper_allocator, copy, functor_wrapper_type(f,a));
23866:
23866: functor_wrapper_type* new_f = static_cast<functor_wrapper_type*>(copy);
23866: functor.members.obj_ptr = new_f;
23866: }
23866:
23866: template<typename FunctionObj>
23866: bool
23866: assign_to(FunctionObj f, function_buffer& functor, function_obj_tag) const
23866: {
23866: if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
23866: assign_functor(f, functor,
23866: integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>());
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: bool
23866: assign_to_a(FunctionObj f, function_buffer& functor, Allocator a, function_obj_tag) const
23866: {
23866: if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
23866: assign_functor_a(f, functor, a,
23866: integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>());
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866:
23866:
23866: template<typename FunctionObj>
23866: bool
23866: assign_to(const reference_wrapper<FunctionObj>& f,
23866: function_buffer& functor, function_obj_ref_tag) const
23866: {
23866: functor.members.obj_ref.obj_ptr = (void *)(f.get_pointer());
23866: functor.members.obj_ref.is_const_qualified = is_const<FunctionObj>::value;
23866: functor.members.obj_ref.is_volatile_qualified = is_volatile<FunctionObj>::value;
23866: return true;
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: bool
23866: assign_to_a(const reference_wrapper<FunctionObj>& f,
23866: function_buffer& functor, Allocator, function_obj_ref_tag) const
23866: {
23866: return assign_to(f,functor,function_obj_ref_tag());
23866: }
23866:
23866: public:
23866: vtable_base base;
23866: invoker_type invoker;
23866: };
23866: }
23866: }
23866:
23866: template<
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
23866: >
23866: class function8 : public function_base
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866:
23866:
23866:
23866:
23866:
23866: private:
23866: typedef boost::detail::function::basic_vtable8<
23866: R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7>
23866: vtable_type;
23866:
23866: vtable_type* get_vtable() const {
23866: return reinterpret_cast<vtable_type*>(
23866: reinterpret_cast<std::size_t>(vtable) & ~static_cast<std::size_t>(0x01));
23866: }
23866:
23866: struct clear_type {};
23866:
23866: public:
23866: static const int args = 8;
23866:
23866:
23866: template<typename Args>
23866: struct sig
23866: {
23866: typedef result_type type;
23866: };
23866: # 701 "/usr/include/boost/function/function_template.hpp" 3 4
23866: static const int arity = 8;
23866: typedef T0 arg1_type; typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type; typedef T4 arg5_type; typedef T5 arg6_type; typedef T6 arg7_type; typedef T7 arg8_type;
23866:
23866: typedef function8 self_type;
23866:
23866: function8() = default;
23866:
23866:
23866:
23866: template<typename Functor>
23866: function8(Functor f
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: function_base()
23866: {
23866: this->assign_to(f);
23866: }
23866: template<typename Functor,typename Allocator>
23866: function8(Functor f, Allocator a
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: function_base()
23866: {
23866: this->assign_to_a(f,a);
23866: }
23866:
23866:
23866: function8(clear_type*) : function_base() { }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: function8(const function8& f) : function_base()
23866: {
23866: this->assign_to_own(f);
23866: }
23866:
23866:
23866: function8(function8&& f) : function_base()
23866: {
23866: this->move_assign(f);
23866: }
23866:
23866:
23866: ~function8() { clear(); }
23866:
23866: result_type operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7) const
23866: {
23866: if (this->empty())
23866: boost::throw_exception(bad_function_call());
23866:
23866: return get_vtable()->invoker
23866: (this->functor , static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6) , static_cast<T7&&>(a7));
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename Functor>
23866:
23866: typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: function8&>::type
23866:
23866:
23866:
23866: operator=(Functor f)
23866: {
23866: this->clear();
23866: { try {
23866: this->assign_to(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866: template<typename Functor,typename Allocator>
23866: void assign(Functor f, Allocator a)
23866: {
23866: this->clear();
23866: { try{
23866: this->assign_to_a(f,a);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: }
23866:
23866:
23866: function8& operator=(clear_type*)
23866: {
23866: this->clear();
23866: return *this;
23866: }
23866: # 821 "/usr/include/boost/function/function_template.hpp" 3 4
23866: function8& operator=(const function8& f)
23866: {
23866: if (&f == this)
23866: return *this;
23866:
23866: this->clear();
23866: { try {
23866: this->assign_to_own(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866:
23866:
23866:
23866: function8& operator=(function8&& f)
23866: {
23866: if (&f == this)
23866: return *this;
23866:
23866: this->clear();
23866: { try {
23866: this->move_assign(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866:
23866:
23866: void swap(function8& other)
23866: {
23866: if (&other == this)
23866: return;
23866:
23866: function8 tmp;
23866: tmp.move_assign(*this);
23866: this->move_assign(other);
23866: other.move_assign(tmp);
23866: }
23866:
23866:
23866: void clear()
23866: {
23866: if (vtable) {
23866: if (!this->has_trivial_copy_and_destroy())
23866: get_vtable()->clear(this->functor);
23866: vtable = 0;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866:
23866: private:
23866: struct dummy {
23866: void nonnull() {}
23866: };
23866:
23866: typedef void (dummy::*safe_bool)();
23866:
23866: public:
23866: operator safe_bool () const
23866: { return (this->empty())? 0 : &dummy::nonnull; }
23866:
23866: bool operator!() const
23866: { return this->empty(); }
23866:
23866:
23866: private:
23866: void assign_to_own(const function8& f)
23866: {
23866: if (!f.empty()) {
23866: this->vtable = f.vtable;
23866: if (this->has_trivial_copy_and_destroy()) {
23866:
23866:
23866:
23866: #pragma GCC diagnostic push
23866:
23866:
23866: #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
23866:
23866: std::memcpy(this->functor.data, f.functor.data, sizeof(boost::detail::function::function_buffer));
23866:
23866: #pragma GCC diagnostic pop
23866:
23866: } else
23866: get_vtable()->base.manager(f.functor, this->functor,
23866: boost::detail::function::clone_functor_tag);
23866: }
23866: }
23866:
23866: template<typename Functor>
23866: void assign_to(Functor f)
23866: {
23866: using boost::detail::function::vtable_base;
23866:
23866: typedef typename boost::detail::function::get_function_tag<Functor>::type tag;
23866: typedef boost::detail::function::get_invoker8<tag> get_invoker;
23866: typedef typename get_invoker::
23866: template apply<Functor, R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7>
23866: handler_type;
23866:
23866: typedef typename handler_type::invoker_type invoker_type;
23866: typedef typename handler_type::manager_type manager_type;
23866:
23866:
23866:
23866:
23866:
23866: static const vtable_type stored_vtable =
23866: { { &manager_type::manage }, &invoker_type::invoke };
23866:
23866: if (stored_vtable.assign_to(f, functor)) {
23866: std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
23866:
23866: if (boost::has_trivial_copy_constructor<Functor>::value &&
23866: boost::has_trivial_destructor<Functor>::value &&
23866: boost::detail::function::function_allows_small_object_optimization<Functor>::value)
23866: value |= static_cast<std::size_t>(0x01);
23866: vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value);
23866: } else
23866: vtable = 0;
23866: }
23866:
23866: template<typename Functor,typename Allocator>
23866: void assign_to_a(Functor f,Allocator a)
23866: {
23866: using boost::detail::function::vtable_base;
23866:
23866: typedef typename boost::detail::function::get_function_tag<Functor>::type tag;
23866: typedef boost::detail::function::get_invoker8<tag> get_invoker;
23866: typedef typename get_invoker::
23866: template apply_a<Functor, Allocator, R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7>
23866: handler_type;
23866:
23866: typedef typename handler_type::invoker_type invoker_type;
23866: typedef typename handler_type::manager_type manager_type;
23866:
23866:
23866:
23866:
23866:
23866: static const vtable_type stored_vtable =
23866: { { &manager_type::manage }, &invoker_type::invoke };
23866:
23866: if (stored_vtable.assign_to_a(f, functor, a)) {
23866: std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
23866:
23866: if (boost::has_trivial_copy_constructor<Functor>::value &&
23866: boost::has_trivial_destructor<Functor>::value &&
23866: boost::detail::function::function_allows_small_object_optimization<Functor>::value)
23866: value |= static_cast<std::size_t>(0x01);
23866: vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value);
23866: } else
23866: vtable = 0;
23866: }
23866:
23866:
23866:
23866:
23866: void move_assign(function8& f)
23866: {
23866: if (&f == this)
23866: return;
23866:
23866: { try {
23866: if (!f.empty()) {
23866: this->vtable = f.vtable;
23866: if (this->has_trivial_copy_and_destroy()) {
23866:
23866:
23866:
23866: #pragma GCC diagnostic push
23866:
23866:
23866: #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
23866:
23866: std::memcpy(this->functor.data, f.functor.data, sizeof(this->functor.data));
23866:
23866: #pragma GCC diagnostic pop
23866:
23866: } else
23866: get_vtable()->base.manager(f.functor, this->functor,
23866: boost::detail::function::move_functor_tag);
23866: f.vtable = 0;
23866: } else {
23866: clear();
23866: }
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: }
23866: };
23866:
23866: template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
23866: inline void swap(function8<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
23866: >& f1,
23866: function8<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
23866: >& f2)
23866: {
23866: f1.swap(f2);
23866: }
23866:
23866:
23866: template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
23866: void operator==(const function8<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7>&,
23866: const function8<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7>&);
23866: template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
23866: void operator!=(const function8<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7>&,
23866: const function8<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7>& );
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_PARTIAL_SPEC R (BOOST_FUNCTION_TEMPLATE_ARGS)
23866:
23866:
23866: template<typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
23866: class function<R ( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)>
23866: : public function8<R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7>
23866: {
23866: typedef function8<R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7> base_type;
23866: typedef function self_type;
23866:
23866: struct clear_type {};
23866:
23866: public:
23866:
23866: function() = default;
23866:
23866: template<typename Functor>
23866: function(Functor f
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: base_type(f)
23866: {
23866: }
23866: template<typename Functor,typename Allocator>
23866: function(Functor f, Allocator a
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: base_type(f,a)
23866: {
23866: }
23866:
23866:
23866: function(clear_type*) : base_type() {}
23866:
23866:
23866: function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}
23866:
23866: function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}
23866:
23866:
23866:
23866: function(self_type&& f): base_type(static_cast<base_type&&>(f)){}
23866: function(base_type&& f): base_type(static_cast<base_type&&>(f)){}
23866:
23866:
23866: self_type& operator=(const self_type& f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(self_type&& f)
23866: {
23866: self_type(static_cast<self_type&&>(f)).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: template<typename Functor>
23866:
23866: typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: self_type&>::type
23866:
23866:
23866:
23866: operator=(Functor f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(clear_type*)
23866: {
23866: this->clear();
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(const base_type& f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(base_type&& f)
23866: {
23866: self_type(static_cast<base_type&&>(f)).swap(*this);
23866: return *this;
23866: }
23866:
23866: };
23866:
23866: #undef BOOST_FUNCTION_PARTIAL_SPEC
23866:
23866:
23866: }
23866:
23866:
23866: #undef BOOST_FUNCTION_VTABLE
23866: #undef BOOST_FUNCTION_COMMA
23866: #undef BOOST_FUNCTION_FUNCTION
23866: #undef BOOST_FUNCTION_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_MEMBER_INVOKER
23866: #undef BOOST_FUNCTION_VOID_MEMBER_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_GET_MEM_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_GET_INVOKER
23866: #undef BOOST_FUNCTION_TEMPLATE_PARMS
23866: #undef BOOST_FUNCTION_TEMPLATE_ARGS
23866: #undef BOOST_FUNCTION_PARMS
23866: #undef BOOST_FUNCTION_PARM
23866:
23866: #undef BOOST_FUNCTION_ARG
23866:
23866: #undef BOOST_FUNCTION_ARGS
23866: #undef BOOST_FUNCTION_ARG_TYPE
23866: #undef BOOST_FUNCTION_ARG_TYPES
23866: #undef BOOST_FUNCTION_VOID_RETURN_TYPE
23866: #undef BOOST_FUNCTION_RETURN
23866: # 72 "/usr/include/boost/function/detail/maybe_include.hpp" 2 3 4
23866: # 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
23866: #undef BOOST_FUNCTION_NUM_ARGS
23866: # 88 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_1
23866:
23866:
23866: #define BOOST_PP_ITERATION_1 9
23866: # 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
23866: # 13 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
23866: #define BOOST_FUNCTION_NUM_ARGS BOOST_PP_ITERATION()
23866: # 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
23866: # 74 "/usr/include/boost/function/detail/maybe_include.hpp" 3 4
23866: #undef BOOST_FUNCTION_MAX_ARGS_DEFINED
23866: #define BOOST_FUNCTION_MAX_ARGS_DEFINED 9
23866:
23866: #define BOOST_FUNCTION_9
23866: # 1 "/usr/include/boost/function/function_template.hpp" 1 3 4
23866: # 21 "/usr/include/boost/function/function_template.hpp" 3 4
23866: #define BOOST_FUNCTION_TEMPLATE_PARMS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, typename T)
23866:
23866: #define BOOST_FUNCTION_TEMPLATE_ARGS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, T)
23866:
23866: #define BOOST_FUNCTION_PARM(J,I,D) BOOST_PP_CAT(T,I) BOOST_PP_CAT(a,I)
23866:
23866: #define BOOST_FUNCTION_PARMS BOOST_PP_ENUM(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_PARM,BOOST_PP_EMPTY)
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_ARG(J,I,D) static_cast<BOOST_PP_CAT(T,I)&&>(BOOST_PP_CAT(a,I))
23866: #define BOOST_FUNCTION_ARGS BOOST_PP_ENUM(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_ARG,BOOST_PP_EMPTY)
23866:
23866:
23866: #define BOOST_FUNCTION_ARG_TYPE(J,I,D) typedef BOOST_PP_CAT(T,I) BOOST_PP_CAT(BOOST_PP_CAT(arg, BOOST_PP_INC(I)),_type);
23866:
23866:
23866: #define BOOST_FUNCTION_ARG_TYPES BOOST_PP_REPEAT(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_ARG_TYPE,BOOST_PP_EMPTY)
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_COMMA ,
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_FUNCTION BOOST_JOIN(function,BOOST_FUNCTION_NUM_ARGS)
23866: #define BOOST_FUNCTION_FUNCTION_INVOKER BOOST_JOIN(function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_INVOKER BOOST_JOIN(void_function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_FUNCTION_OBJ_INVOKER BOOST_JOIN(function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER BOOST_JOIN(void_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_FUNCTION_REF_INVOKER BOOST_JOIN(function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER BOOST_JOIN(void_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_MEMBER_INVOKER BOOST_JOIN(function_mem_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_MEMBER_INVOKER BOOST_JOIN(function_void_mem_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_INVOKER BOOST_JOIN(get_function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER BOOST_JOIN(get_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER BOOST_JOIN(get_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_MEMBER_INVOKER BOOST_JOIN(get_member_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_INVOKER BOOST_JOIN(get_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VTABLE BOOST_JOIN(basic_vtable,BOOST_FUNCTION_NUM_ARGS)
23866:
23866:
23866: #define BOOST_FUNCTION_VOID_RETURN_TYPE void
23866: #define BOOST_FUNCTION_RETURN(X) X
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace detail {
23866: namespace function {
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
23866: >
23866: struct function_invoker9
23866: {
23866: static R invoke(function_buffer& function_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8)
23866: {
23866: FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.members.func_ptr);
23866: return f( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6) , static_cast<T7&&>(a7) , static_cast<T8&&>(a8));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
23866: >
23866: struct void_function_invoker9
23866: {
23866: static void
23866: invoke(function_buffer& function_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8)
23866:
23866: {
23866: FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.members.func_ptr);
23866: f( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6) , static_cast<T7&&>(a7) , static_cast<T8&&>(a8));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
23866: >
23866: struct function_obj_invoker9
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8)
23866:
23866: {
23866: FunctionObj* f;
23866: if (function_allows_small_object_optimization<FunctionObj>::value)
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.data);
23866: else
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: return (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6) , static_cast<T7&&>(a7) , static_cast<T8&&>(a8));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
23866: >
23866: struct void_function_obj_invoker9
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8)
23866:
23866: {
23866: FunctionObj* f;
23866: if (function_allows_small_object_optimization<FunctionObj>::value)
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.data);
23866: else
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6) , static_cast<T7&&>(a7) , static_cast<T8&&>(a8));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
23866: >
23866: struct function_ref_invoker9
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8)
23866:
23866: {
23866: FunctionObj* f =
23866: reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: return (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6) , static_cast<T7&&>(a7) , static_cast<T8&&>(a8));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
23866: >
23866: struct void_function_ref_invoker9
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8)
23866:
23866: {
23866: FunctionObj* f =
23866: reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6) , static_cast<T7&&>(a7) , static_cast<T8&&>(a8));
23866: }
23866: };
23866:
23866:
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
23866: >
23866: struct function_mem_invoker9
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8)
23866:
23866: {
23866: MemberPtr* f =
23866: reinterpret_cast<MemberPtr*>(function_obj_ptr.data);
23866: return boost::mem_fn(*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6) , static_cast<T7&&>(a7) , static_cast<T8&&>(a8));
23866: }
23866: };
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
23866: >
23866: struct function_void_mem_invoker9
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8)
23866:
23866: {
23866: MemberPtr* f =
23866: reinterpret_cast<MemberPtr*>(function_obj_ptr.data);
23866: boost::mem_fn(*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6) , static_cast<T7&&>(a7) , static_cast<T8&&>(a8));
23866: }
23866: };
23866:
23866:
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
23866: >
23866: struct get_function_invoker9
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_invoker9<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
23866: >,
23866: function_invoker9<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
23866: >
23866: >::type type;
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
23866: >
23866: struct get_function_obj_invoker9
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_obj_invoker9<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
23866: >,
23866: function_obj_invoker9<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
23866: >
23866: >::type type;
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
23866: >
23866: struct get_function_ref_invoker9
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_ref_invoker9<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
23866: >,
23866: function_ref_invoker9<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
23866: >
23866: >::type type;
23866: };
23866:
23866:
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
23866: >
23866: struct get_member_invoker9
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: function_void_mem_invoker9<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
23866: >,
23866: function_mem_invoker9<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
23866: >
23866: >::type type;
23866: };
23866: # 331 "/usr/include/boost/function/function_template.hpp" 3 4
23866: template<typename Tag>
23866: struct get_invoker9 { };
23866:
23866:
23866: template<>
23866: struct get_invoker9<function_ptr_tag>
23866: {
23866: template<typename FunctionPtr,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
23866: struct apply
23866: {
23866: typedef typename get_function_invoker9<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionPtr> manager_type;
23866: };
23866:
23866: template<typename FunctionPtr, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
23866: struct apply_a
23866: {
23866: typedef typename get_function_invoker9<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionPtr> manager_type;
23866: };
23866: };
23866:
23866:
23866:
23866: template<>
23866: struct get_invoker9<member_ptr_tag>
23866: {
23866: template<typename MemberPtr,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
23866: struct apply
23866: {
23866: typedef typename get_member_invoker9<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<MemberPtr> manager_type;
23866: };
23866:
23866: template<typename MemberPtr, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
23866: struct apply_a
23866: {
23866: typedef typename get_member_invoker9<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<MemberPtr> manager_type;
23866: };
23866: };
23866:
23866:
23866:
23866: template<>
23866: struct get_invoker9<function_obj_tag>
23866: {
23866: template<typename FunctionObj,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
23866: struct apply
23866: {
23866: typedef typename get_function_obj_invoker9<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionObj> manager_type;
23866: };
23866:
23866: template<typename FunctionObj, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
23866: struct apply_a
23866: {
23866: typedef typename get_function_obj_invoker9<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager_a<FunctionObj, Allocator> manager_type;
23866: };
23866: };
23866:
23866:
23866: template<>
23866: struct get_invoker9<function_obj_ref_tag>
23866: {
23866: template<typename RefWrapper,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
23866: struct apply
23866: {
23866: typedef typename get_function_ref_invoker9<
23866: typename RefWrapper::type,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
23866: >::type
23866: invoker_type;
23866:
23866: typedef reference_manager<typename RefWrapper::type> manager_type;
23866: };
23866:
23866: template<typename RefWrapper, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
23866: struct apply_a
23866: {
23866: typedef typename get_function_ref_invoker9<
23866: typename RefWrapper::type,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
23866: >::type
23866: invoker_type;
23866:
23866: typedef reference_manager<typename RefWrapper::type> manager_type;
23866: };
23866: };
23866: # 476 "/usr/include/boost/function/function_template.hpp" 3 4
23866: template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
23866: struct basic_vtable9
23866: {
23866:
23866: typedef R result_type;
23866:
23866:
23866:
23866:
23866: typedef result_type (*invoker_type)(function_buffer&
23866: ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8);
23866:
23866: template<typename F>
23866: bool assign_to(F f, function_buffer& functor) const
23866: {
23866: typedef typename get_function_tag<F>::type tag;
23866: return assign_to(f, functor, tag());
23866: }
23866: template<typename F,typename Allocator>
23866: bool assign_to_a(F f, function_buffer& functor, Allocator a) const
23866: {
23866: typedef typename get_function_tag<F>::type tag;
23866: return assign_to_a(f, functor, a, tag());
23866: }
23866:
23866: void clear(function_buffer& functor) const
23866: {
23866: if (base.manager)
23866: base.manager(functor, functor, destroy_functor_tag);
23866: }
23866:
23866: private:
23866:
23866: template<typename FunctionPtr>
23866: bool
23866: assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag) const
23866: {
23866: this->clear(functor);
23866: if (f) {
23866:
23866:
23866: functor.members.func_ptr = reinterpret_cast<void (*)()>(f);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename FunctionPtr,typename Allocator>
23866: bool
23866: assign_to_a(FunctionPtr f, function_buffer& functor, Allocator, function_ptr_tag) const
23866: {
23866: return assign_to(f,functor,function_ptr_tag());
23866: }
23866:
23866:
23866:
23866: template<typename MemberPtr>
23866: bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag) const
23866: {
23866:
23866:
23866:
23866: if (f) {
23866: this->assign_to(boost::mem_fn(f), functor);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename MemberPtr,typename Allocator>
23866: bool assign_to_a(MemberPtr f, function_buffer& functor, Allocator a, member_ptr_tag) const
23866: {
23866:
23866:
23866:
23866: if (f) {
23866: this->assign_to_a(boost::mem_fn(f), functor, a);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866: template<typename FunctionObj>
23866: void
23866: assign_functor(FunctionObj f, function_buffer& functor, true_type) const
23866: {
23866: new (reinterpret_cast<void*>(functor.data)) FunctionObj(f);
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: void
23866: assign_functor_a(FunctionObj f, function_buffer& functor, Allocator, true_type) const
23866: {
23866: assign_functor(f,functor,true_type());
23866: }
23866:
23866:
23866: template<typename FunctionObj>
23866: void
23866: assign_functor(FunctionObj f, function_buffer& functor, false_type) const
23866: {
23866: functor.members.obj_ptr = new FunctionObj(f);
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: void
23866: assign_functor_a(FunctionObj f, function_buffer& functor, Allocator a, false_type) const
23866: {
23866: typedef functor_wrapper<FunctionObj,Allocator> functor_wrapper_type;
23866:
23866:
23866:
23866:
23866:
23866: using wrapper_allocator_type = typename std::allocator_traits<Allocator>::template rebind_alloc<functor_wrapper_type>;
23866: using wrapper_allocator_pointer_type = typename std::allocator_traits<wrapper_allocator_type>::pointer;
23866:
23866: wrapper_allocator_type wrapper_allocator(a);
23866: wrapper_allocator_pointer_type copy = wrapper_allocator.allocate(1);
23866:
23866:
23866:
23866: std::allocator_traits<wrapper_allocator_type>::construct(wrapper_allocator, copy, functor_wrapper_type(f,a));
23866:
23866: functor_wrapper_type* new_f = static_cast<functor_wrapper_type*>(copy);
23866: functor.members.obj_ptr = new_f;
23866: }
23866:
23866: template<typename FunctionObj>
23866: bool
23866: assign_to(FunctionObj f, function_buffer& functor, function_obj_tag) const
23866: {
23866: if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
23866: assign_functor(f, functor,
23866: integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>());
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: bool
23866: assign_to_a(FunctionObj f, function_buffer& functor, Allocator a, function_obj_tag) const
23866: {
23866: if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
23866: assign_functor_a(f, functor, a,
23866: integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>());
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866:
23866:
23866: template<typename FunctionObj>
23866: bool
23866: assign_to(const reference_wrapper<FunctionObj>& f,
23866: function_buffer& functor, function_obj_ref_tag) const
23866: {
23866: functor.members.obj_ref.obj_ptr = (void *)(f.get_pointer());
23866: functor.members.obj_ref.is_const_qualified = is_const<FunctionObj>::value;
23866: functor.members.obj_ref.is_volatile_qualified = is_volatile<FunctionObj>::value;
23866: return true;
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: bool
23866: assign_to_a(const reference_wrapper<FunctionObj>& f,
23866: function_buffer& functor, Allocator, function_obj_ref_tag) const
23866: {
23866: return assign_to(f,functor,function_obj_ref_tag());
23866: }
23866:
23866: public:
23866: vtable_base base;
23866: invoker_type invoker;
23866: };
23866: }
23866: }
23866:
23866: template<
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
23866: >
23866: class function9 : public function_base
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866:
23866:
23866:
23866:
23866:
23866: private:
23866: typedef boost::detail::function::basic_vtable9<
23866: R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8>
23866: vtable_type;
23866:
23866: vtable_type* get_vtable() const {
23866: return reinterpret_cast<vtable_type*>(
23866: reinterpret_cast<std::size_t>(vtable) & ~static_cast<std::size_t>(0x01));
23866: }
23866:
23866: struct clear_type {};
23866:
23866: public:
23866: static const int args = 9;
23866:
23866:
23866: template<typename Args>
23866: struct sig
23866: {
23866: typedef result_type type;
23866: };
23866: # 701 "/usr/include/boost/function/function_template.hpp" 3 4
23866: static const int arity = 9;
23866: typedef T0 arg1_type; typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type; typedef T4 arg5_type; typedef T5 arg6_type; typedef T6 arg7_type; typedef T7 arg8_type; typedef T8 arg9_type;
23866:
23866: typedef function9 self_type;
23866:
23866: function9() = default;
23866:
23866:
23866:
23866: template<typename Functor>
23866: function9(Functor f
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: function_base()
23866: {
23866: this->assign_to(f);
23866: }
23866: template<typename Functor,typename Allocator>
23866: function9(Functor f, Allocator a
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: function_base()
23866: {
23866: this->assign_to_a(f,a);
23866: }
23866:
23866:
23866: function9(clear_type*) : function_base() { }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: function9(const function9& f) : function_base()
23866: {
23866: this->assign_to_own(f);
23866: }
23866:
23866:
23866: function9(function9&& f) : function_base()
23866: {
23866: this->move_assign(f);
23866: }
23866:
23866:
23866: ~function9() { clear(); }
23866:
23866: result_type operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8) const
23866: {
23866: if (this->empty())
23866: boost::throw_exception(bad_function_call());
23866:
23866: return get_vtable()->invoker
23866: (this->functor , static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6) , static_cast<T7&&>(a7) , static_cast<T8&&>(a8));
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename Functor>
23866:
23866: typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: function9&>::type
23866:
23866:
23866:
23866: operator=(Functor f)
23866: {
23866: this->clear();
23866: { try {
23866: this->assign_to(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866: template<typename Functor,typename Allocator>
23866: void assign(Functor f, Allocator a)
23866: {
23866: this->clear();
23866: { try{
23866: this->assign_to_a(f,a);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: }
23866:
23866:
23866: function9& operator=(clear_type*)
23866: {
23866: this->clear();
23866: return *this;
23866: }
23866: # 821 "/usr/include/boost/function/function_template.hpp" 3 4
23866: function9& operator=(const function9& f)
23866: {
23866: if (&f == this)
23866: return *this;
23866:
23866: this->clear();
23866: { try {
23866: this->assign_to_own(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866:
23866:
23866:
23866: function9& operator=(function9&& f)
23866: {
23866: if (&f == this)
23866: return *this;
23866:
23866: this->clear();
23866: { try {
23866: this->move_assign(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866:
23866:
23866: void swap(function9& other)
23866: {
23866: if (&other == this)
23866: return;
23866:
23866: function9 tmp;
23866: tmp.move_assign(*this);
23866: this->move_assign(other);
23866: other.move_assign(tmp);
23866: }
23866:
23866:
23866: void clear()
23866: {
23866: if (vtable) {
23866: if (!this->has_trivial_copy_and_destroy())
23866: get_vtable()->clear(this->functor);
23866: vtable = 0;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866:
23866: private:
23866: struct dummy {
23866: void nonnull() {}
23866: };
23866:
23866: typedef void (dummy::*safe_bool)();
23866:
23866: public:
23866: operator safe_bool () const
23866: { return (this->empty())? 0 : &dummy::nonnull; }
23866:
23866: bool operator!() const
23866: { return this->empty(); }
23866:
23866:
23866: private:
23866: void assign_to_own(const function9& f)
23866: {
23866: if (!f.empty()) {
23866: this->vtable = f.vtable;
23866: if (this->has_trivial_copy_and_destroy()) {
23866:
23866:
23866:
23866: #pragma GCC diagnostic push
23866:
23866:
23866: #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
23866:
23866: std::memcpy(this->functor.data, f.functor.data, sizeof(boost::detail::function::function_buffer));
23866:
23866: #pragma GCC diagnostic pop
23866:
23866: } else
23866: get_vtable()->base.manager(f.functor, this->functor,
23866: boost::detail::function::clone_functor_tag);
23866: }
23866: }
23866:
23866: template<typename Functor>
23866: void assign_to(Functor f)
23866: {
23866: using boost::detail::function::vtable_base;
23866:
23866: typedef typename boost::detail::function::get_function_tag<Functor>::type tag;
23866: typedef boost::detail::function::get_invoker9<tag> get_invoker;
23866: typedef typename get_invoker::
23866: template apply<Functor, R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8>
23866: handler_type;
23866:
23866: typedef typename handler_type::invoker_type invoker_type;
23866: typedef typename handler_type::manager_type manager_type;
23866:
23866:
23866:
23866:
23866:
23866: static const vtable_type stored_vtable =
23866: { { &manager_type::manage }, &invoker_type::invoke };
23866:
23866: if (stored_vtable.assign_to(f, functor)) {
23866: std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
23866:
23866: if (boost::has_trivial_copy_constructor<Functor>::value &&
23866: boost::has_trivial_destructor<Functor>::value &&
23866: boost::detail::function::function_allows_small_object_optimization<Functor>::value)
23866: value |= static_cast<std::size_t>(0x01);
23866: vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value);
23866: } else
23866: vtable = 0;
23866: }
23866:
23866: template<typename Functor,typename Allocator>
23866: void assign_to_a(Functor f,Allocator a)
23866: {
23866: using boost::detail::function::vtable_base;
23866:
23866: typedef typename boost::detail::function::get_function_tag<Functor>::type tag;
23866: typedef boost::detail::function::get_invoker9<tag> get_invoker;
23866: typedef typename get_invoker::
23866: template apply_a<Functor, Allocator, R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8>
23866: handler_type;
23866:
23866: typedef typename handler_type::invoker_type invoker_type;
23866: typedef typename handler_type::manager_type manager_type;
23866:
23866:
23866:
23866:
23866:
23866: static const vtable_type stored_vtable =
23866: { { &manager_type::manage }, &invoker_type::invoke };
23866:
23866: if (stored_vtable.assign_to_a(f, functor, a)) {
23866: std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
23866:
23866: if (boost::has_trivial_copy_constructor<Functor>::value &&
23866: boost::has_trivial_destructor<Functor>::value &&
23866: boost::detail::function::function_allows_small_object_optimization<Functor>::value)
23866: value |= static_cast<std::size_t>(0x01);
23866: vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value);
23866: } else
23866: vtable = 0;
23866: }
23866:
23866:
23866:
23866:
23866: void move_assign(function9& f)
23866: {
23866: if (&f == this)
23866: return;
23866:
23866: { try {
23866: if (!f.empty()) {
23866: this->vtable = f.vtable;
23866: if (this->has_trivial_copy_and_destroy()) {
23866:
23866:
23866:
23866: #pragma GCC diagnostic push
23866:
23866:
23866: #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
23866:
23866: std::memcpy(this->functor.data, f.functor.data, sizeof(this->functor.data));
23866:
23866: #pragma GCC diagnostic pop
23866:
23866: } else
23866: get_vtable()->base.manager(f.functor, this->functor,
23866: boost::detail::function::move_functor_tag);
23866: f.vtable = 0;
23866: } else {
23866: clear();
23866: }
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: }
23866: };
23866:
23866: template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
23866: inline void swap(function9<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
23866: >& f1,
23866: function9<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
23866: >& f2)
23866: {
23866: f1.swap(f2);
23866: }
23866:
23866:
23866: template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
23866: void operator==(const function9<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8>&,
23866: const function9<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8>&);
23866: template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
23866: void operator!=(const function9<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8>&,
23866: const function9<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8>& );
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_PARTIAL_SPEC R (BOOST_FUNCTION_TEMPLATE_ARGS)
23866:
23866:
23866: template<typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
23866: class function<R ( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)>
23866: : public function9<R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8>
23866: {
23866: typedef function9<R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8> base_type;
23866: typedef function self_type;
23866:
23866: struct clear_type {};
23866:
23866: public:
23866:
23866: function() = default;
23866:
23866: template<typename Functor>
23866: function(Functor f
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: base_type(f)
23866: {
23866: }
23866: template<typename Functor,typename Allocator>
23866: function(Functor f, Allocator a
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: base_type(f,a)
23866: {
23866: }
23866:
23866:
23866: function(clear_type*) : base_type() {}
23866:
23866:
23866: function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}
23866:
23866: function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}
23866:
23866:
23866:
23866: function(self_type&& f): base_type(static_cast<base_type&&>(f)){}
23866: function(base_type&& f): base_type(static_cast<base_type&&>(f)){}
23866:
23866:
23866: self_type& operator=(const self_type& f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(self_type&& f)
23866: {
23866: self_type(static_cast<self_type&&>(f)).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: template<typename Functor>
23866:
23866: typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: self_type&>::type
23866:
23866:
23866:
23866: operator=(Functor f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(clear_type*)
23866: {
23866: this->clear();
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(const base_type& f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(base_type&& f)
23866: {
23866: self_type(static_cast<base_type&&>(f)).swap(*this);
23866: return *this;
23866: }
23866:
23866: };
23866:
23866: #undef BOOST_FUNCTION_PARTIAL_SPEC
23866:
23866:
23866: }
23866:
23866:
23866: #undef BOOST_FUNCTION_VTABLE
23866: #undef BOOST_FUNCTION_COMMA
23866: #undef BOOST_FUNCTION_FUNCTION
23866: #undef BOOST_FUNCTION_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_MEMBER_INVOKER
23866: #undef BOOST_FUNCTION_VOID_MEMBER_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_GET_MEM_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_GET_INVOKER
23866: #undef BOOST_FUNCTION_TEMPLATE_PARMS
23866: #undef BOOST_FUNCTION_TEMPLATE_ARGS
23866: #undef BOOST_FUNCTION_PARMS
23866: #undef BOOST_FUNCTION_PARM
23866:
23866: #undef BOOST_FUNCTION_ARG
23866:
23866: #undef BOOST_FUNCTION_ARGS
23866: #undef BOOST_FUNCTION_ARG_TYPE
23866: #undef BOOST_FUNCTION_ARG_TYPES
23866: #undef BOOST_FUNCTION_VOID_RETURN_TYPE
23866: #undef BOOST_FUNCTION_RETURN
23866: # 79 "/usr/include/boost/function/detail/maybe_include.hpp" 2 3 4
23866: # 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
23866: #undef BOOST_FUNCTION_NUM_ARGS
23866: # 93 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_1
23866:
23866:
23866: #define BOOST_PP_ITERATION_1 10
23866: # 1 "/usr/include/boost/function/detail/function_iterate.hpp" 1 3 4
23866: # 13 "/usr/include/boost/function/detail/function_iterate.hpp" 3 4
23866: #define BOOST_FUNCTION_NUM_ARGS BOOST_PP_ITERATION()
23866: # 1 "/usr/include/boost/function/detail/maybe_include.hpp" 1 3 4
23866: # 81 "/usr/include/boost/function/detail/maybe_include.hpp" 3 4
23866: #undef BOOST_FUNCTION_MAX_ARGS_DEFINED
23866: #define BOOST_FUNCTION_MAX_ARGS_DEFINED 10
23866:
23866: #define BOOST_FUNCTION_10
23866: # 1 "/usr/include/boost/function/function_template.hpp" 1 3 4
23866: # 21 "/usr/include/boost/function/function_template.hpp" 3 4
23866: #define BOOST_FUNCTION_TEMPLATE_PARMS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, typename T)
23866:
23866: #define BOOST_FUNCTION_TEMPLATE_ARGS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, T)
23866:
23866: #define BOOST_FUNCTION_PARM(J,I,D) BOOST_PP_CAT(T,I) BOOST_PP_CAT(a,I)
23866:
23866: #define BOOST_FUNCTION_PARMS BOOST_PP_ENUM(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_PARM,BOOST_PP_EMPTY)
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_ARG(J,I,D) static_cast<BOOST_PP_CAT(T,I)&&>(BOOST_PP_CAT(a,I))
23866: #define BOOST_FUNCTION_ARGS BOOST_PP_ENUM(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_ARG,BOOST_PP_EMPTY)
23866:
23866:
23866: #define BOOST_FUNCTION_ARG_TYPE(J,I,D) typedef BOOST_PP_CAT(T,I) BOOST_PP_CAT(BOOST_PP_CAT(arg, BOOST_PP_INC(I)),_type);
23866:
23866:
23866: #define BOOST_FUNCTION_ARG_TYPES BOOST_PP_REPEAT(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_ARG_TYPE,BOOST_PP_EMPTY)
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_COMMA ,
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_FUNCTION BOOST_JOIN(function,BOOST_FUNCTION_NUM_ARGS)
23866: #define BOOST_FUNCTION_FUNCTION_INVOKER BOOST_JOIN(function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_INVOKER BOOST_JOIN(void_function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_FUNCTION_OBJ_INVOKER BOOST_JOIN(function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER BOOST_JOIN(void_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_FUNCTION_REF_INVOKER BOOST_JOIN(function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER BOOST_JOIN(void_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_MEMBER_INVOKER BOOST_JOIN(function_mem_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VOID_MEMBER_INVOKER BOOST_JOIN(function_void_mem_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_INVOKER BOOST_JOIN(get_function_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER BOOST_JOIN(get_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER BOOST_JOIN(get_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_MEMBER_INVOKER BOOST_JOIN(get_member_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_GET_INVOKER BOOST_JOIN(get_invoker,BOOST_FUNCTION_NUM_ARGS)
23866:
23866: #define BOOST_FUNCTION_VTABLE BOOST_JOIN(basic_vtable,BOOST_FUNCTION_NUM_ARGS)
23866:
23866:
23866: #define BOOST_FUNCTION_VOID_RETURN_TYPE void
23866: #define BOOST_FUNCTION_RETURN(X) X
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace detail {
23866: namespace function {
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
23866: >
23866: struct function_invoker10
23866: {
23866: static R invoke(function_buffer& function_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8 , T9 a9)
23866: {
23866: FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.members.func_ptr);
23866: return f( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6) , static_cast<T7&&>(a7) , static_cast<T8&&>(a8) , static_cast<T9&&>(a9));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
23866: >
23866: struct void_function_invoker10
23866: {
23866: static void
23866: invoke(function_buffer& function_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8 , T9 a9)
23866:
23866: {
23866: FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.members.func_ptr);
23866: f( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6) , static_cast<T7&&>(a7) , static_cast<T8&&>(a8) , static_cast<T9&&>(a9));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
23866: >
23866: struct function_obj_invoker10
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8 , T9 a9)
23866:
23866: {
23866: FunctionObj* f;
23866: if (function_allows_small_object_optimization<FunctionObj>::value)
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.data);
23866: else
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: return (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6) , static_cast<T7&&>(a7) , static_cast<T8&&>(a8) , static_cast<T9&&>(a9));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
23866: >
23866: struct void_function_obj_invoker10
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8 , T9 a9)
23866:
23866: {
23866: FunctionObj* f;
23866: if (function_allows_small_object_optimization<FunctionObj>::value)
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.data);
23866: else
23866: f = reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6) , static_cast<T7&&>(a7) , static_cast<T8&&>(a8) , static_cast<T9&&>(a9));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
23866: >
23866: struct function_ref_invoker10
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8 , T9 a9)
23866:
23866: {
23866: FunctionObj* f =
23866: reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: return (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6) , static_cast<T7&&>(a7) , static_cast<T8&&>(a8) , static_cast<T9&&>(a9));
23866: }
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
23866: >
23866: struct void_function_ref_invoker10
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8 , T9 a9)
23866:
23866: {
23866: FunctionObj* f =
23866: reinterpret_cast<FunctionObj*>(function_obj_ptr.members.obj_ptr);
23866: (*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6) , static_cast<T7&&>(a7) , static_cast<T8&&>(a8) , static_cast<T9&&>(a9));
23866: }
23866: };
23866:
23866:
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
23866: >
23866: struct function_mem_invoker10
23866: {
23866: static R invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8 , T9 a9)
23866:
23866: {
23866: MemberPtr* f =
23866: reinterpret_cast<MemberPtr*>(function_obj_ptr.data);
23866: return boost::mem_fn(*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6) , static_cast<T7&&>(a7) , static_cast<T8&&>(a8) , static_cast<T9&&>(a9));
23866: }
23866: };
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
23866: >
23866: struct function_void_mem_invoker10
23866: {
23866: static void
23866: invoke(function_buffer& function_obj_ptr ,
23866: T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8 , T9 a9)
23866:
23866: {
23866: MemberPtr* f =
23866: reinterpret_cast<MemberPtr*>(function_obj_ptr.data);
23866: boost::mem_fn(*f)( static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6) , static_cast<T7&&>(a7) , static_cast<T8&&>(a8) , static_cast<T9&&>(a9));
23866: }
23866: };
23866:
23866:
23866: template<
23866: typename FunctionPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
23866: >
23866: struct get_function_invoker10
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_invoker10<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
23866: >,
23866: function_invoker10<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
23866: >
23866: >::type type;
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
23866: >
23866: struct get_function_obj_invoker10
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_obj_invoker10<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
23866: >,
23866: function_obj_invoker10<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
23866: >
23866: >::type type;
23866: };
23866:
23866: template<
23866: typename FunctionObj,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
23866: >
23866: struct get_function_ref_invoker10
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: void_function_ref_invoker10<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
23866: >,
23866: function_ref_invoker10<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
23866: >
23866: >::type type;
23866: };
23866:
23866:
23866:
23866: template<
23866: typename MemberPtr,
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
23866: >
23866: struct get_member_invoker10
23866: {
23866: typedef typename conditional<(is_void<R>::value),
23866: function_void_mem_invoker10<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
23866: >,
23866: function_mem_invoker10<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
23866: >
23866: >::type type;
23866: };
23866: # 331 "/usr/include/boost/function/function_template.hpp" 3 4
23866: template<typename Tag>
23866: struct get_invoker10 { };
23866:
23866:
23866: template<>
23866: struct get_invoker10<function_ptr_tag>
23866: {
23866: template<typename FunctionPtr,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
23866: struct apply
23866: {
23866: typedef typename get_function_invoker10<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionPtr> manager_type;
23866: };
23866:
23866: template<typename FunctionPtr, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
23866: struct apply_a
23866: {
23866: typedef typename get_function_invoker10<
23866: FunctionPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionPtr> manager_type;
23866: };
23866: };
23866:
23866:
23866:
23866: template<>
23866: struct get_invoker10<member_ptr_tag>
23866: {
23866: template<typename MemberPtr,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
23866: struct apply
23866: {
23866: typedef typename get_member_invoker10<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<MemberPtr> manager_type;
23866: };
23866:
23866: template<typename MemberPtr, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
23866: struct apply_a
23866: {
23866: typedef typename get_member_invoker10<
23866: MemberPtr,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<MemberPtr> manager_type;
23866: };
23866: };
23866:
23866:
23866:
23866: template<>
23866: struct get_invoker10<function_obj_tag>
23866: {
23866: template<typename FunctionObj,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
23866: struct apply
23866: {
23866: typedef typename get_function_obj_invoker10<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager<FunctionObj> manager_type;
23866: };
23866:
23866: template<typename FunctionObj, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
23866: struct apply_a
23866: {
23866: typedef typename get_function_obj_invoker10<
23866: FunctionObj,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
23866: >::type
23866: invoker_type;
23866:
23866: typedef functor_manager_a<FunctionObj, Allocator> manager_type;
23866: };
23866: };
23866:
23866:
23866: template<>
23866: struct get_invoker10<function_obj_ref_tag>
23866: {
23866: template<typename RefWrapper,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
23866: struct apply
23866: {
23866: typedef typename get_function_ref_invoker10<
23866: typename RefWrapper::type,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
23866: >::type
23866: invoker_type;
23866:
23866: typedef reference_manager<typename RefWrapper::type> manager_type;
23866: };
23866:
23866: template<typename RefWrapper, typename Allocator,
23866: typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
23866: struct apply_a
23866: {
23866: typedef typename get_function_ref_invoker10<
23866: typename RefWrapper::type,
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
23866: >::type
23866: invoker_type;
23866:
23866: typedef reference_manager<typename RefWrapper::type> manager_type;
23866: };
23866: };
23866: # 476 "/usr/include/boost/function/function_template.hpp" 3 4
23866: template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
23866: struct basic_vtable10
23866: {
23866:
23866: typedef R result_type;
23866:
23866:
23866:
23866:
23866: typedef result_type (*invoker_type)(function_buffer&
23866: ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9);
23866:
23866: template<typename F>
23866: bool assign_to(F f, function_buffer& functor) const
23866: {
23866: typedef typename get_function_tag<F>::type tag;
23866: return assign_to(f, functor, tag());
23866: }
23866: template<typename F,typename Allocator>
23866: bool assign_to_a(F f, function_buffer& functor, Allocator a) const
23866: {
23866: typedef typename get_function_tag<F>::type tag;
23866: return assign_to_a(f, functor, a, tag());
23866: }
23866:
23866: void clear(function_buffer& functor) const
23866: {
23866: if (base.manager)
23866: base.manager(functor, functor, destroy_functor_tag);
23866: }
23866:
23866: private:
23866:
23866: template<typename FunctionPtr>
23866: bool
23866: assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag) const
23866: {
23866: this->clear(functor);
23866: if (f) {
23866:
23866:
23866: functor.members.func_ptr = reinterpret_cast<void (*)()>(f);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename FunctionPtr,typename Allocator>
23866: bool
23866: assign_to_a(FunctionPtr f, function_buffer& functor, Allocator, function_ptr_tag) const
23866: {
23866: return assign_to(f,functor,function_ptr_tag());
23866: }
23866:
23866:
23866:
23866: template<typename MemberPtr>
23866: bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag) const
23866: {
23866:
23866:
23866:
23866: if (f) {
23866: this->assign_to(boost::mem_fn(f), functor);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename MemberPtr,typename Allocator>
23866: bool assign_to_a(MemberPtr f, function_buffer& functor, Allocator a, member_ptr_tag) const
23866: {
23866:
23866:
23866:
23866: if (f) {
23866: this->assign_to_a(boost::mem_fn(f), functor, a);
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866: template<typename FunctionObj>
23866: void
23866: assign_functor(FunctionObj f, function_buffer& functor, true_type) const
23866: {
23866: new (reinterpret_cast<void*>(functor.data)) FunctionObj(f);
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: void
23866: assign_functor_a(FunctionObj f, function_buffer& functor, Allocator, true_type) const
23866: {
23866: assign_functor(f,functor,true_type());
23866: }
23866:
23866:
23866: template<typename FunctionObj>
23866: void
23866: assign_functor(FunctionObj f, function_buffer& functor, false_type) const
23866: {
23866: functor.members.obj_ptr = new FunctionObj(f);
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: void
23866: assign_functor_a(FunctionObj f, function_buffer& functor, Allocator a, false_type) const
23866: {
23866: typedef functor_wrapper<FunctionObj,Allocator> functor_wrapper_type;
23866:
23866:
23866:
23866:
23866:
23866: using wrapper_allocator_type = typename std::allocator_traits<Allocator>::template rebind_alloc<functor_wrapper_type>;
23866: using wrapper_allocator_pointer_type = typename std::allocator_traits<wrapper_allocator_type>::pointer;
23866:
23866: wrapper_allocator_type wrapper_allocator(a);
23866: wrapper_allocator_pointer_type copy = wrapper_allocator.allocate(1);
23866:
23866:
23866:
23866: std::allocator_traits<wrapper_allocator_type>::construct(wrapper_allocator, copy, functor_wrapper_type(f,a));
23866:
23866: functor_wrapper_type* new_f = static_cast<functor_wrapper_type*>(copy);
23866: functor.members.obj_ptr = new_f;
23866: }
23866:
23866: template<typename FunctionObj>
23866: bool
23866: assign_to(FunctionObj f, function_buffer& functor, function_obj_tag) const
23866: {
23866: if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
23866: assign_functor(f, functor,
23866: integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>());
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: bool
23866: assign_to_a(FunctionObj f, function_buffer& functor, Allocator a, function_obj_tag) const
23866: {
23866: if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
23866: assign_functor_a(f, functor, a,
23866: integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>());
23866: return true;
23866: } else {
23866: return false;
23866: }
23866: }
23866:
23866:
23866: template<typename FunctionObj>
23866: bool
23866: assign_to(const reference_wrapper<FunctionObj>& f,
23866: function_buffer& functor, function_obj_ref_tag) const
23866: {
23866: functor.members.obj_ref.obj_ptr = (void *)(f.get_pointer());
23866: functor.members.obj_ref.is_const_qualified = is_const<FunctionObj>::value;
23866: functor.members.obj_ref.is_volatile_qualified = is_volatile<FunctionObj>::value;
23866: return true;
23866: }
23866: template<typename FunctionObj,typename Allocator>
23866: bool
23866: assign_to_a(const reference_wrapper<FunctionObj>& f,
23866: function_buffer& functor, Allocator, function_obj_ref_tag) const
23866: {
23866: return assign_to(f,functor,function_obj_ref_tag());
23866: }
23866:
23866: public:
23866: vtable_base base;
23866: invoker_type invoker;
23866: };
23866: }
23866: }
23866:
23866: template<
23866: typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
23866: >
23866: class function10 : public function_base
23866: {
23866: public:
23866:
23866: typedef R result_type;
23866:
23866:
23866:
23866:
23866:
23866: private:
23866: typedef boost::detail::function::basic_vtable10<
23866: R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9>
23866: vtable_type;
23866:
23866: vtable_type* get_vtable() const {
23866: return reinterpret_cast<vtable_type*>(
23866: reinterpret_cast<std::size_t>(vtable) & ~static_cast<std::size_t>(0x01));
23866: }
23866:
23866: struct clear_type {};
23866:
23866: public:
23866: static const int args = 10;
23866:
23866:
23866: template<typename Args>
23866: struct sig
23866: {
23866: typedef result_type type;
23866: };
23866: # 701 "/usr/include/boost/function/function_template.hpp" 3 4
23866: static const int arity = 10;
23866: typedef T0 arg1_type; typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type; typedef T4 arg5_type; typedef T5 arg6_type; typedef T6 arg7_type; typedef T7 arg8_type; typedef T8 arg9_type; typedef T9 arg10_type;
23866:
23866: typedef function10 self_type;
23866:
23866: function10() = default;
23866:
23866:
23866:
23866: template<typename Functor>
23866: function10(Functor f
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: function_base()
23866: {
23866: this->assign_to(f);
23866: }
23866: template<typename Functor,typename Allocator>
23866: function10(Functor f, Allocator a
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: function_base()
23866: {
23866: this->assign_to_a(f,a);
23866: }
23866:
23866:
23866: function10(clear_type*) : function_base() { }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: function10(const function10& f) : function_base()
23866: {
23866: this->assign_to_own(f);
23866: }
23866:
23866:
23866: function10(function10&& f) : function_base()
23866: {
23866: this->move_assign(f);
23866: }
23866:
23866:
23866: ~function10() { clear(); }
23866:
23866: result_type operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8 , T9 a9) const
23866: {
23866: if (this->empty())
23866: boost::throw_exception(bad_function_call());
23866:
23866: return get_vtable()->invoker
23866: (this->functor , static_cast<T0&&>(a0) , static_cast<T1&&>(a1) , static_cast<T2&&>(a2) , static_cast<T3&&>(a3) , static_cast<T4&&>(a4) , static_cast<T5&&>(a5) , static_cast<T6&&>(a6) , static_cast<T7&&>(a7) , static_cast<T8&&>(a8) , static_cast<T9&&>(a9));
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename Functor>
23866:
23866: typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: function10&>::type
23866:
23866:
23866:
23866: operator=(Functor f)
23866: {
23866: this->clear();
23866: { try {
23866: this->assign_to(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866: template<typename Functor,typename Allocator>
23866: void assign(Functor f, Allocator a)
23866: {
23866: this->clear();
23866: { try{
23866: this->assign_to_a(f,a);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: }
23866:
23866:
23866: function10& operator=(clear_type*)
23866: {
23866: this->clear();
23866: return *this;
23866: }
23866: # 821 "/usr/include/boost/function/function_template.hpp" 3 4
23866: function10& operator=(const function10& f)
23866: {
23866: if (&f == this)
23866: return *this;
23866:
23866: this->clear();
23866: { try {
23866: this->assign_to_own(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866:
23866:
23866:
23866: function10& operator=(function10&& f)
23866: {
23866: if (&f == this)
23866: return *this;
23866:
23866: this->clear();
23866: { try {
23866: this->move_assign(f);
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: return *this;
23866: }
23866:
23866:
23866: void swap(function10& other)
23866: {
23866: if (&other == this)
23866: return;
23866:
23866: function10 tmp;
23866: tmp.move_assign(*this);
23866: this->move_assign(other);
23866: other.move_assign(tmp);
23866: }
23866:
23866:
23866: void clear()
23866: {
23866: if (vtable) {
23866: if (!this->has_trivial_copy_and_destroy())
23866: get_vtable()->clear(this->functor);
23866: vtable = 0;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866:
23866: private:
23866: struct dummy {
23866: void nonnull() {}
23866: };
23866:
23866: typedef void (dummy::*safe_bool)();
23866:
23866: public:
23866: operator safe_bool () const
23866: { return (this->empty())? 0 : &dummy::nonnull; }
23866:
23866: bool operator!() const
23866: { return this->empty(); }
23866:
23866:
23866: private:
23866: void assign_to_own(const function10& f)
23866: {
23866: if (!f.empty()) {
23866: this->vtable = f.vtable;
23866: if (this->has_trivial_copy_and_destroy()) {
23866:
23866:
23866:
23866: #pragma GCC diagnostic push
23866:
23866:
23866: #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
23866:
23866: std::memcpy(this->functor.data, f.functor.data, sizeof(boost::detail::function::function_buffer));
23866:
23866: #pragma GCC diagnostic pop
23866:
23866: } else
23866: get_vtable()->base.manager(f.functor, this->functor,
23866: boost::detail::function::clone_functor_tag);
23866: }
23866: }
23866:
23866: template<typename Functor>
23866: void assign_to(Functor f)
23866: {
23866: using boost::detail::function::vtable_base;
23866:
23866: typedef typename boost::detail::function::get_function_tag<Functor>::type tag;
23866: typedef boost::detail::function::get_invoker10<tag> get_invoker;
23866: typedef typename get_invoker::
23866: template apply<Functor, R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9>
23866: handler_type;
23866:
23866: typedef typename handler_type::invoker_type invoker_type;
23866: typedef typename handler_type::manager_type manager_type;
23866:
23866:
23866:
23866:
23866:
23866: static const vtable_type stored_vtable =
23866: { { &manager_type::manage }, &invoker_type::invoke };
23866:
23866: if (stored_vtable.assign_to(f, functor)) {
23866: std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
23866:
23866: if (boost::has_trivial_copy_constructor<Functor>::value &&
23866: boost::has_trivial_destructor<Functor>::value &&
23866: boost::detail::function::function_allows_small_object_optimization<Functor>::value)
23866: value |= static_cast<std::size_t>(0x01);
23866: vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value);
23866: } else
23866: vtable = 0;
23866: }
23866:
23866: template<typename Functor,typename Allocator>
23866: void assign_to_a(Functor f,Allocator a)
23866: {
23866: using boost::detail::function::vtable_base;
23866:
23866: typedef typename boost::detail::function::get_function_tag<Functor>::type tag;
23866: typedef boost::detail::function::get_invoker10<tag> get_invoker;
23866: typedef typename get_invoker::
23866: template apply_a<Functor, Allocator, R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9>
23866: handler_type;
23866:
23866: typedef typename handler_type::invoker_type invoker_type;
23866: typedef typename handler_type::manager_type manager_type;
23866:
23866:
23866:
23866:
23866:
23866: static const vtable_type stored_vtable =
23866: { { &manager_type::manage }, &invoker_type::invoke };
23866:
23866: if (stored_vtable.assign_to_a(f, functor, a)) {
23866: std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
23866:
23866: if (boost::has_trivial_copy_constructor<Functor>::value &&
23866: boost::has_trivial_destructor<Functor>::value &&
23866: boost::detail::function::function_allows_small_object_optimization<Functor>::value)
23866: value |= static_cast<std::size_t>(0x01);
23866: vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value);
23866: } else
23866: vtable = 0;
23866: }
23866:
23866:
23866:
23866:
23866: void move_assign(function10& f)
23866: {
23866: if (&f == this)
23866: return;
23866:
23866: { try {
23866: if (!f.empty()) {
23866: this->vtable = f.vtable;
23866: if (this->has_trivial_copy_and_destroy()) {
23866:
23866:
23866:
23866: #pragma GCC diagnostic push
23866:
23866:
23866: #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
23866:
23866: std::memcpy(this->functor.data, f.functor.data, sizeof(this->functor.data));
23866:
23866: #pragma GCC diagnostic pop
23866:
23866: } else
23866: get_vtable()->base.manager(f.functor, this->functor,
23866: boost::detail::function::move_functor_tag);
23866: f.vtable = 0;
23866: } else {
23866: clear();
23866: }
23866: } catch(...) {
23866: vtable = 0;
23866: throw;;
23866: }
23866: }
23866: }
23866: };
23866:
23866: template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
23866: inline void swap(function10<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
23866: >& f1,
23866: function10<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
23866: >& f2)
23866: {
23866: f1.swap(f2);
23866: }
23866:
23866:
23866: template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
23866: void operator==(const function10<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9>&,
23866: const function10<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9>&);
23866: template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
23866: void operator!=(const function10<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9>&,
23866: const function10<
23866: R ,
23866: T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9>& );
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTION_PARTIAL_SPEC R (BOOST_FUNCTION_TEMPLATE_ARGS)
23866:
23866:
23866: template<typename R ,
23866: typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
23866: class function<R ( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)>
23866: : public function10<R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9>
23866: {
23866: typedef function10<R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9> base_type;
23866: typedef function self_type;
23866:
23866: struct clear_type {};
23866:
23866: public:
23866:
23866: function() = default;
23866:
23866: template<typename Functor>
23866: function(Functor f
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: base_type(f)
23866: {
23866: }
23866: template<typename Functor,typename Allocator>
23866: function(Functor f, Allocator a
23866:
23866: ,typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: int>::type = 0
23866:
23866: ) :
23866: base_type(f,a)
23866: {
23866: }
23866:
23866:
23866: function(clear_type*) : base_type() {}
23866:
23866:
23866: function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}
23866:
23866: function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}
23866:
23866:
23866:
23866: function(self_type&& f): base_type(static_cast<base_type&&>(f)){}
23866: function(base_type&& f): base_type(static_cast<base_type&&>(f)){}
23866:
23866:
23866: self_type& operator=(const self_type& f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(self_type&& f)
23866: {
23866: self_type(static_cast<self_type&&>(f)).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: template<typename Functor>
23866:
23866: typename boost::enable_if_<
23866: !(is_integral<Functor>::value),
23866: self_type&>::type
23866:
23866:
23866:
23866: operator=(Functor f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(clear_type*)
23866: {
23866: this->clear();
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(const base_type& f)
23866: {
23866: self_type(f).swap(*this);
23866: return *this;
23866: }
23866:
23866:
23866: self_type& operator=(base_type&& f)
23866: {
23866: self_type(static_cast<base_type&&>(f)).swap(*this);
23866: return *this;
23866: }
23866:
23866: };
23866:
23866: #undef BOOST_FUNCTION_PARTIAL_SPEC
23866:
23866:
23866: }
23866:
23866:
23866: #undef BOOST_FUNCTION_VTABLE
23866: #undef BOOST_FUNCTION_COMMA
23866: #undef BOOST_FUNCTION_FUNCTION
23866: #undef BOOST_FUNCTION_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_MEMBER_INVOKER
23866: #undef BOOST_FUNCTION_VOID_MEMBER_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER
23866: #undef BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER
23866: #undef BOOST_FUNCTION_GET_MEM_FUNCTION_INVOKER
23866: #undef BOOST_FUNCTION_GET_INVOKER
23866: #undef BOOST_FUNCTION_TEMPLATE_PARMS
23866: #undef BOOST_FUNCTION_TEMPLATE_ARGS
23866: #undef BOOST_FUNCTION_PARMS
23866: #undef BOOST_FUNCTION_PARM
23866:
23866: #undef BOOST_FUNCTION_ARG
23866:
23866: #undef BOOST_FUNCTION_ARGS
23866: #undef BOOST_FUNCTION_ARG_TYPE
23866: #undef BOOST_FUNCTION_ARG_TYPES
23866: #undef BOOST_FUNCTION_VOID_RETURN_TYPE
23866: #undef BOOST_FUNCTION_RETURN
23866: # 86 "/usr/include/boost/function/detail/maybe_include.hpp" 2 3 4
23866: # 15 "/usr/include/boost/function/detail/function_iterate.hpp" 2 3 4
23866: #undef BOOST_FUNCTION_NUM_ARGS
23866: # 98 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_1
23866: # 1332 "/usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp" 3 4
23866: #undef BOOST_PP_IS_ITERATING
23866:
23866: #undef BOOST_PP_ITERATION_DEPTH
23866: #define BOOST_PP_ITERATION_DEPTH() 0
23866:
23866: #undef BOOST_PP_ITERATION_START_1
23866: #undef BOOST_PP_ITERATION_FINISH_1
23866: #undef BOOST_PP_FILENAME_1
23866:
23866: #undef BOOST_PP_ITERATION_FLAGS_1
23866: #undef BOOST_PP_ITERATION_PARAMS_1
23866: # 71 "/usr/include/boost/function.hpp" 2 3 4
23866: #undef BOOST_PP_ITERATION_PARAMS_1
23866: # 19 "/usr/include/boost/algorithm/string/detail/find_iterator.hpp" 2 3 4
23866:
23866: namespace boost {
23866: namespace algorithm {
23866: namespace detail {
23866:
23866:
23866:
23866:
23866: template<typename IteratorT>
23866: class find_iterator_base
23866: {
23866: protected:
23866:
23866: typedef IteratorT input_iterator_type;
23866: typedef iterator_range<IteratorT> match_type;
23866: typedef function2<
23866: match_type,
23866: input_iterator_type,
23866: input_iterator_type> finder_type;
23866:
23866: protected:
23866:
23866:
23866:
23866: find_iterator_base() {}
23866:
23866: find_iterator_base( const find_iterator_base& Other ) :
23866: m_Finder(Other.m_Finder) {}
23866:
23866:
23866: template<typename FinderT>
23866: find_iterator_base( FinderT Finder, int ) :
23866: m_Finder(Finder) {}
23866:
23866:
23866: ~find_iterator_base() {}
23866:
23866:
23866: match_type do_find(
23866: input_iterator_type Begin,
23866: input_iterator_type End ) const
23866: {
23866: if (!m_Finder.empty())
23866: {
23866: return m_Finder(Begin,End);
23866: }
23866: else
23866: {
23866: return match_type(End,End);
23866: }
23866: }
23866:
23866:
23866: bool is_null() const
23866: {
23866: return m_Finder.empty();
23866: }
23866:
23866: private:
23866:
23866: finder_type m_Finder;
23866: };
23866:
23866: }
23866: }
23866: }
23866: # 25 "/usr/include/boost/algorithm/string/find_iterator.hpp" 2 3 4
23866: # 33 "/usr/include/boost/algorithm/string/find_iterator.hpp" 3 4
23866: namespace boost {
23866: namespace algorithm {
23866: # 49 "/usr/include/boost/algorithm/string/find_iterator.hpp" 3 4
23866: template<typename IteratorT>
23866: class find_iterator :
23866: public iterator_facade<
23866: find_iterator<IteratorT>,
23866: const iterator_range<IteratorT>,
23866: forward_traversal_tag >,
23866: private detail::find_iterator_base<IteratorT>
23866: {
23866: private:
23866:
23866: friend class ::boost::iterator_core_access;
23866:
23866: private:
23866:
23866:
23866: typedef detail::find_iterator_base<IteratorT> base_type;
23866: typedef typename
23866: base_type::input_iterator_type input_iterator_type;
23866: typedef typename
23866: base_type::match_type match_type;
23866:
23866: public:
23866:
23866:
23866:
23866:
23866:
23866:
23866: find_iterator() {}
23866:
23866:
23866:
23866:
23866:
23866: find_iterator( const find_iterator& Other ) :
23866: base_type(Other),
23866: m_Match(Other.m_Match),
23866: m_End(Other.m_End) {}
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename FinderT>
23866: find_iterator(
23866: IteratorT Begin,
23866: IteratorT End,
23866: FinderT Finder ) :
23866: detail::find_iterator_base<IteratorT>(Finder,0),
23866: m_Match(Begin,Begin),
23866: m_End(End)
23866: {
23866: increment();
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename FinderT, typename RangeT>
23866: find_iterator(
23866: RangeT& Col,
23866: FinderT Finder ) :
23866: detail::find_iterator_base<IteratorT>(Finder,0)
23866: {
23866: iterator_range<typename range_iterator<RangeT>::type> lit_col(::boost::as_literal(Col));
23866: m_Match=::boost::make_iterator_range(::boost::begin(lit_col), ::boost::begin(lit_col));
23866: m_End=::boost::end(lit_col);
23866:
23866: increment();
23866: }
23866:
23866: private:
23866:
23866:
23866:
23866: const match_type& dereference() const
23866: {
23866: return m_Match;
23866: }
23866:
23866:
23866: void increment()
23866: {
23866: m_Match=this->do_find(m_Match.end(),m_End);
23866: }
23866:
23866:
23866: bool equal( const find_iterator& Other ) const
23866: {
23866: bool bEof=eof();
23866: bool bOtherEof=Other.eof();
23866:
23866: return bEof || bOtherEof ? bEof==bOtherEof :
23866: (
23866: m_Match==Other.m_Match &&
23866: m_End==Other.m_End
23866: );
23866: }
23866:
23866: public:
23866: # 160 "/usr/include/boost/algorithm/string/find_iterator.hpp" 3 4
23866: bool eof() const
23866: {
23866: return
23866: this->is_null() ||
23866: (
23866: m_Match.begin() == m_End &&
23866: m_Match.end() == m_End
23866: );
23866: }
23866:
23866: private:
23866:
23866: match_type m_Match;
23866: input_iterator_type m_End;
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template<typename RangeT, typename FinderT>
23866: inline find_iterator<
23866: typename range_iterator<RangeT>::type>
23866: make_find_iterator(
23866: RangeT& Collection,
23866: FinderT Finder)
23866: {
23866: return find_iterator<typename range_iterator<RangeT>::type>(
23866: Collection, Finder);
23866: }
23866: # 205 "/usr/include/boost/algorithm/string/find_iterator.hpp" 3 4
23866: template<typename IteratorT>
23866: class split_iterator :
23866: public iterator_facade<
23866: split_iterator<IteratorT>,
23866: const iterator_range<IteratorT>,
23866: forward_traversal_tag >,
23866: private detail::find_iterator_base<IteratorT>
23866: {
23866: private:
23866:
23866: friend class ::boost::iterator_core_access;
23866:
23866: private:
23866:
23866:
23866: typedef detail::find_iterator_base<IteratorT> base_type;
23866: typedef typename
23866: base_type::input_iterator_type input_iterator_type;
23866: typedef typename
23866: base_type::match_type match_type;
23866:
23866: public:
23866:
23866:
23866:
23866:
23866:
23866:
23866: split_iterator() :
23866: m_Next(),
23866: m_End(),
23866: m_bEof(true)
23866: {}
23866:
23866:
23866:
23866:
23866:
23866: split_iterator( const split_iterator& Other ) :
23866: base_type(Other),
23866: m_Match(Other.m_Match),
23866: m_Next(Other.m_Next),
23866: m_End(Other.m_End),
23866: m_bEof(Other.m_bEof)
23866: {}
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename FinderT>
23866: split_iterator(
23866: IteratorT Begin,
23866: IteratorT End,
23866: FinderT Finder ) :
23866: detail::find_iterator_base<IteratorT>(Finder,0),
23866: m_Match(Begin,Begin),
23866: m_Next(Begin),
23866: m_End(End),
23866: m_bEof(false)
23866: {
23866:
23866: if(Begin!=End)
23866: {
23866: increment();
23866: }
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename FinderT, typename RangeT>
23866: split_iterator(
23866: RangeT& Col,
23866: FinderT Finder ) :
23866: detail::find_iterator_base<IteratorT>(Finder,0),
23866: m_bEof(false)
23866: {
23866: iterator_range<typename range_iterator<RangeT>::type> lit_col(::boost::as_literal(Col));
23866: m_Match=make_iterator_range(::boost::begin(lit_col), ::boost::begin(lit_col));
23866: m_Next=::boost::begin(lit_col);
23866: m_End=::boost::end(lit_col);
23866:
23866:
23866: if(m_Next!=m_End)
23866: {
23866: increment();
23866: }
23866: }
23866:
23866:
23866: private:
23866:
23866:
23866:
23866: const match_type& dereference() const
23866: {
23866: return m_Match;
23866: }
23866:
23866:
23866: void increment()
23866: {
23866: match_type FindMatch=this->do_find( m_Next, m_End );
23866:
23866: if(FindMatch.begin()==m_End && FindMatch.end()==m_End)
23866: {
23866: if(m_Match.end()==m_End)
23866: {
23866:
23866: m_bEof=true;
23866: }
23866: }
23866:
23866: m_Match=match_type( m_Next, FindMatch.begin() );
23866: m_Next=FindMatch.end();
23866: }
23866:
23866:
23866: bool equal( const split_iterator& Other ) const
23866: {
23866: bool bEof=eof();
23866: bool bOtherEof=Other.eof();
23866:
23866: return bEof || bOtherEof ? bEof==bOtherEof :
23866: (
23866: m_Match==Other.m_Match &&
23866: m_Next==Other.m_Next &&
23866: m_End==Other.m_End
23866: );
23866: }
23866:
23866: public:
23866: # 348 "/usr/include/boost/algorithm/string/find_iterator.hpp" 3 4
23866: bool eof() const
23866: {
23866: return this->is_null() || m_bEof;
23866: }
23866:
23866: private:
23866:
23866: match_type m_Match;
23866: input_iterator_type m_Next;
23866: input_iterator_type m_End;
23866: bool m_bEof;
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template<typename RangeT, typename FinderT>
23866: inline split_iterator<
23866: typename range_iterator<RangeT>::type>
23866: make_split_iterator(
23866: RangeT& Collection,
23866: FinderT Finder)
23866: {
23866: return split_iterator<typename range_iterator<RangeT>::type>(
23866: Collection, Finder);
23866: }
23866:
23866:
23866: }
23866:
23866:
23866: using algorithm::find_iterator;
23866: using algorithm::make_find_iterator;
23866: using algorithm::split_iterator;
23866: using algorithm::make_split_iterator;
23866:
23866: }
23866: # 28 "/usr/include/boost/algorithm/string/iter_find.hpp" 2 3 4
23866: # 1 "/usr/include/boost/algorithm/string/detail/util.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/detail/util.hpp" 3 4
23866: #define BOOST_STRING_UTIL_DETAIL_HPP
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace algorithm {
23866: namespace detail {
23866: # 31 "/usr/include/boost/algorithm/string/detail/util.hpp" 3 4
23866: template< typename CharT >
23866: struct empty_container
23866: {
23866: typedef empty_container<CharT> type;
23866: typedef CharT value_type;
23866: typedef std::size_t size_type;
23866: typedef std::ptrdiff_t difference_type;
23866: typedef const value_type& reference;
23866: typedef const value_type& const_reference;
23866: typedef const value_type* iterator;
23866: typedef const value_type* const_iterator;
23866:
23866:
23866:
23866: const_iterator begin() const
23866: {
23866: return reinterpret_cast<const_iterator>(0);
23866: }
23866:
23866: const_iterator end() const
23866: {
23866: return reinterpret_cast<const_iterator>(0);
23866: }
23866:
23866: bool empty() const
23866: {
23866: return false;
23866: }
23866:
23866: size_type size() const
23866: {
23866: return 0;
23866: }
23866: };
23866:
23866:
23866:
23866:
23866: template<typename InputIteratorT, typename OutputIteratorT>
23866: inline OutputIteratorT bounded_copy(
23866: InputIteratorT First,
23866: InputIteratorT Last,
23866: OutputIteratorT DestFirst,
23866: OutputIteratorT DestLast )
23866: {
23866: InputIteratorT InputIt=First;
23866: OutputIteratorT OutputIt=DestFirst;
23866: for(; InputIt!=Last && OutputIt!=DestLast; InputIt++, OutputIt++ )
23866: {
23866: *OutputIt=*InputIt;
23866: }
23866:
23866: return OutputIt;
23866: }
23866:
23866:
23866:
23866:
23866: template<
23866: typename SeqT,
23866: typename IteratorT=typename SeqT::const_iterator >
23866: struct copy_iterator_rangeF
23866: {
23866: typedef iterator_range<IteratorT> argument_type;
23866: typedef SeqT result_type;
23866: SeqT operator()( const iterator_range<IteratorT>& Range ) const
23866: {
23866: return copy_range<SeqT>(Range);
23866: }
23866: };
23866:
23866: }
23866: }
23866: }
23866: # 29 "/usr/include/boost/algorithm/string/iter_find.hpp" 2 3 4
23866: # 41 "/usr/include/boost/algorithm/string/iter_find.hpp" 3 4
23866: namespace boost {
23866: namespace algorithm {
23866: # 67 "/usr/include/boost/algorithm/string/iter_find.hpp" 3 4
23866: template<
23866: typename SequenceSequenceT,
23866: typename RangeT,
23866: typename FinderT >
23866: inline SequenceSequenceT&
23866: iter_find(
23866: SequenceSequenceT& Result,
23866:
23866: RangeT&& Input,
23866:
23866:
23866:
23866: FinderT Finder )
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( FinderConcept< FinderT, typename range_iterator<RangeT>::type> )>::failed> boost_concept_check81 __attribute__((__unused__))
23866:
23866:
23866:
23866: ;
23866:
23866: iterator_range<typename range_iterator<RangeT>::type> lit_input(::boost::as_literal(Input));
23866:
23866: typedef typename
23866: range_iterator<RangeT>::type input_iterator_type;
23866: typedef find_iterator<input_iterator_type> find_iterator_type;
23866: typedef detail::copy_iterator_rangeF<
23866: typename
23866: range_value<SequenceSequenceT>::type,
23866: input_iterator_type> copy_range_type;
23866:
23866: input_iterator_type InputEnd=::boost::end(lit_input);
23866:
23866: typedef transform_iterator<copy_range_type, find_iterator_type>
23866: transform_iter_type;
23866:
23866: transform_iter_type itBegin=
23866: ::boost::make_transform_iterator(
23866: find_iterator_type( ::boost::begin(lit_input), InputEnd, Finder ),
23866: copy_range_type());
23866:
23866: transform_iter_type itEnd=
23866: ::boost::make_transform_iterator(
23866: find_iterator_type(),
23866: copy_range_type());
23866:
23866: SequenceSequenceT Tmp(itBegin, itEnd);
23866:
23866: Result.swap(Tmp);
23866: return Result;
23866: }
23866: # 142 "/usr/include/boost/algorithm/string/iter_find.hpp" 3 4
23866: template<
23866: typename SequenceSequenceT,
23866: typename RangeT,
23866: typename FinderT >
23866: inline SequenceSequenceT&
23866: iter_split(
23866: SequenceSequenceT& Result,
23866:
23866: RangeT&& Input,
23866:
23866:
23866:
23866: FinderT Finder )
23866: {
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( FinderConcept<FinderT, typename range_iterator<RangeT>::type> )>::failed> boost_concept_check156 __attribute__((__unused__))
23866:
23866:
23866: ;
23866:
23866: iterator_range<typename range_iterator<RangeT>::type> lit_input(::boost::as_literal(Input));
23866:
23866: typedef typename
23866: range_iterator<RangeT>::type input_iterator_type;
23866: typedef split_iterator<input_iterator_type> find_iterator_type;
23866: typedef detail::copy_iterator_rangeF<
23866: typename
23866: range_value<SequenceSequenceT>::type,
23866: input_iterator_type> copy_range_type;
23866:
23866: input_iterator_type InputEnd=::boost::end(lit_input);
23866:
23866: typedef transform_iterator<copy_range_type, find_iterator_type>
23866: transform_iter_type;
23866:
23866: transform_iter_type itBegin=
23866: ::boost::make_transform_iterator(
23866: find_iterator_type( ::boost::begin(lit_input), InputEnd, Finder ),
23866: copy_range_type() );
23866:
23866: transform_iter_type itEnd=
23866: ::boost::make_transform_iterator(
23866: find_iterator_type(),
23866: copy_range_type() );
23866:
23866: SequenceSequenceT Tmp(itBegin, itEnd);
23866:
23866: Result.swap(Tmp);
23866: return Result;
23866: }
23866:
23866: }
23866:
23866:
23866: using algorithm::iter_find;
23866: using algorithm::iter_split;
23866:
23866: }
23866: # 17 "/usr/include/boost/algorithm/string/split.hpp" 2 3 4
23866: # 34 "/usr/include/boost/algorithm/string/split.hpp" 3 4
23866: namespace boost {
23866: namespace algorithm {
23866: # 61 "/usr/include/boost/algorithm/string/split.hpp" 3 4
23866: template< typename SequenceSequenceT, typename Range1T, typename Range2T >
23866: inline SequenceSequenceT& find_all(
23866: SequenceSequenceT& Result,
23866:
23866: Range1T&& Input,
23866:
23866:
23866:
23866: const Range2T& Search)
23866: {
23866: return ::boost::algorithm::iter_find(
23866: Result,
23866: Input,
23866: ::boost::algorithm::first_finder(Search) );
23866: }
23866: # 100 "/usr/include/boost/algorithm/string/split.hpp" 3 4
23866: template< typename SequenceSequenceT, typename Range1T, typename Range2T >
23866: inline SequenceSequenceT& ifind_all(
23866: SequenceSequenceT& Result,
23866:
23866: Range1T&& Input,
23866:
23866:
23866:
23866: const Range2T& Search,
23866: const std::locale& Loc=std::locale() )
23866: {
23866: return ::boost::algorithm::iter_find(
23866: Result,
23866: Input,
23866: ::boost::algorithm::first_finder(Search, is_iequal(Loc) ) );
23866: }
23866: # 147 "/usr/include/boost/algorithm/string/split.hpp" 3 4
23866: template< typename SequenceSequenceT, typename RangeT, typename PredicateT >
23866: inline SequenceSequenceT& split(
23866: SequenceSequenceT& Result,
23866:
23866: RangeT&& Input,
23866:
23866:
23866:
23866: PredicateT Pred,
23866: token_compress_mode_type eCompress=token_compress_off )
23866: {
23866: return ::boost::algorithm::iter_split(
23866: Result,
23866: Input,
23866: ::boost::algorithm::token_finder( Pred, eCompress ) );
23866: }
23866:
23866: }
23866:
23866:
23866: using algorithm::find_all;
23866: using algorithm::ifind_all;
23866: using algorithm::split;
23866:
23866: }
23866: # 24 "/usr/include/boost/algorithm/string.hpp" 2 3 4
23866: # 1 "/usr/include/boost/algorithm/string/join.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/join.hpp" 3 4
23866: #define BOOST_STRING_JOIN_HPP
23866:
23866:
23866: # 1 "/usr/include/boost/algorithm/string/detail/sequence.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/detail/sequence.hpp" 3 4
23866: #define BOOST_STRING_DETAIL_SEQUENCE_HPP
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/logical.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_LOGICAL_HPP_INCLUDED
23866: # 17 "/usr/include/boost/algorithm/string/detail/sequence.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace algorithm {
23866: namespace detail {
23866:
23866:
23866:
23866: template< typename InputT, typename ForwardIteratorT >
23866: inline void insert(
23866: InputT& Input,
23866: typename InputT::iterator At,
23866: ForwardIteratorT Begin,
23866: ForwardIteratorT End )
23866: {
23866: Input.insert( At, Begin, End );
23866: }
23866:
23866: template< typename InputT, typename InsertT >
23866: inline void insert(
23866: InputT& Input,
23866: typename InputT::iterator At,
23866: const InsertT& Insert )
23866: {
23866: ::boost::algorithm::detail::insert( Input, At, ::boost::begin(Insert), ::boost::end(Insert) );
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template< typename InputT >
23866: inline typename InputT::iterator erase(
23866: InputT& Input,
23866: typename InputT::iterator From,
23866: typename InputT::iterator To )
23866: {
23866: return Input.erase( From, To );
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template< bool HasConstTimeOperations >
23866: struct replace_const_time_helper
23866: {
23866: template< typename InputT, typename ForwardIteratorT >
23866: void operator()(
23866: InputT& Input,
23866: typename InputT::iterator From,
23866: typename InputT::iterator To,
23866: ForwardIteratorT Begin,
23866: ForwardIteratorT End )
23866: {
23866:
23866: ForwardIteratorT InsertIt=Begin;
23866: typename InputT::iterator InputIt=From;
23866: for(; InsertIt!=End && InputIt!=To; InsertIt++, InputIt++ )
23866: {
23866: *InputIt=*InsertIt;
23866: }
23866:
23866: if ( InsertIt!=End )
23866: {
23866:
23866: Input.insert( InputIt, InsertIt, End );
23866: }
23866: else
23866: {
23866: if ( InputIt!=To )
23866: {
23866:
23866: Input.erase( InputIt, To );
23866: }
23866: }
23866: }
23866: };
23866:
23866: template<>
23866: struct replace_const_time_helper< true >
23866: {
23866:
23866: template< typename InputT, typename ForwardIteratorT >
23866: void operator()(
23866: InputT& Input,
23866: typename InputT::iterator From,
23866: typename InputT::iterator To,
23866: ForwardIteratorT Begin,
23866: ForwardIteratorT End )
23866: {
23866: typename InputT::iterator At=Input.erase( From, To );
23866: if ( Begin!=End )
23866: {
23866: if(!Input.empty())
23866: {
23866: Input.insert( At, Begin, End );
23866: }
23866: else
23866: {
23866: Input.insert( Input.begin(), Begin, End );
23866: }
23866: }
23866: }
23866: };
23866:
23866:
23866: template< bool HasNative >
23866: struct replace_native_helper
23866: {
23866: template< typename InputT, typename ForwardIteratorT >
23866: void operator()(
23866: InputT& Input,
23866: typename InputT::iterator From,
23866: typename InputT::iterator To,
23866: ForwardIteratorT Begin,
23866: ForwardIteratorT End )
23866: {
23866: replace_const_time_helper<
23866: boost::mpl::and_<
23866: has_const_time_insert<InputT>,
23866: has_const_time_erase<InputT> >::value >()(
23866: Input, From, To, Begin, End );
23866: }
23866: };
23866:
23866:
23866: template<>
23866: struct replace_native_helper< true >
23866: {
23866: template< typename InputT, typename ForwardIteratorT >
23866: void operator()(
23866: InputT& Input,
23866: typename InputT::iterator From,
23866: typename InputT::iterator To,
23866: ForwardIteratorT Begin,
23866: ForwardIteratorT End )
23866: {
23866: Input.replace( From, To, Begin, End );
23866: }
23866: };
23866:
23866:
23866:
23866: template< typename InputT, typename ForwardIteratorT >
23866: inline void replace(
23866: InputT& Input,
23866: typename InputT::iterator From,
23866: typename InputT::iterator To,
23866: ForwardIteratorT Begin,
23866: ForwardIteratorT End )
23866: {
23866: replace_native_helper< has_native_replace<InputT>::value >()(
23866: Input, From, To, Begin, End );
23866: }
23866:
23866: template< typename InputT, typename InsertT >
23866: inline void replace(
23866: InputT& Input,
23866: typename InputT::iterator From,
23866: typename InputT::iterator To,
23866: const InsertT& Insert )
23866: {
23866: if(From!=To)
23866: {
23866: ::boost::algorithm::detail::replace( Input, From, To, ::boost::begin(Insert), ::boost::end(Insert) );
23866: }
23866: else
23866: {
23866: ::boost::algorithm::detail::insert( Input, From, ::boost::begin(Insert), ::boost::end(Insert) );
23866: }
23866: }
23866:
23866: }
23866: }
23866: }
23866: # 16 "/usr/include/boost/algorithm/string/join.hpp" 2 3 4
23866: # 28 "/usr/include/boost/algorithm/string/join.hpp" 3 4
23866: namespace boost {
23866: namespace algorithm {
23866: # 44 "/usr/include/boost/algorithm/string/join.hpp" 3 4
23866: template< typename SequenceSequenceT, typename Range1T>
23866: inline typename range_value<SequenceSequenceT>::type
23866: join(
23866: const SequenceSequenceT& Input,
23866: const Range1T& Separator)
23866: {
23866:
23866: typedef typename range_value<SequenceSequenceT>::type ResultT;
23866: typedef typename range_const_iterator<SequenceSequenceT>::type InputIteratorT;
23866:
23866:
23866: InputIteratorT itBegin=::boost::begin(Input);
23866: InputIteratorT itEnd=::boost::end(Input);
23866:
23866:
23866: ResultT Result;
23866:
23866:
23866: if(itBegin!=itEnd)
23866: {
23866: detail::insert(Result, ::boost::end(Result), *itBegin);
23866: ++itBegin;
23866: }
23866:
23866: for(;itBegin!=itEnd; ++itBegin)
23866: {
23866:
23866: detail::insert(Result, ::boost::end(Result), ::boost::as_literal(Separator));
23866:
23866: detail::insert(Result, ::boost::end(Result), *itBegin);
23866: }
23866:
23866: return Result;
23866: }
23866: # 94 "/usr/include/boost/algorithm/string/join.hpp" 3 4
23866: template< typename SequenceSequenceT, typename Range1T, typename PredicateT>
23866: inline typename range_value<SequenceSequenceT>::type
23866: join_if(
23866: const SequenceSequenceT& Input,
23866: const Range1T& Separator,
23866: PredicateT Pred)
23866: {
23866:
23866: typedef typename range_value<SequenceSequenceT>::type ResultT;
23866: typedef typename range_const_iterator<SequenceSequenceT>::type InputIteratorT;
23866:
23866:
23866: InputIteratorT itBegin=::boost::begin(Input);
23866: InputIteratorT itEnd=::boost::end(Input);
23866:
23866:
23866: ResultT Result;
23866:
23866:
23866: while(itBegin!=itEnd && !Pred(*itBegin)) ++itBegin;
23866:
23866: if(itBegin!=itEnd)
23866: {
23866: detail::insert(Result, ::boost::end(Result), *itBegin);
23866: ++itBegin;
23866: }
23866:
23866: for(;itBegin!=itEnd; ++itBegin)
23866: {
23866: if(Pred(*itBegin))
23866: {
23866:
23866: detail::insert(Result, ::boost::end(Result), ::boost::as_literal(Separator));
23866:
23866: detail::insert(Result, ::boost::end(Result), *itBegin);
23866: }
23866: }
23866:
23866: return Result;
23866: }
23866:
23866: }
23866:
23866:
23866: using algorithm::join;
23866: using algorithm::join_if;
23866:
23866: }
23866: # 25 "/usr/include/boost/algorithm/string.hpp" 2 3 4
23866: # 1 "/usr/include/boost/algorithm/string/replace.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/replace.hpp" 3 4
23866: #define BOOST_STRING_REPLACE_HPP
23866: # 22 "/usr/include/boost/algorithm/string/replace.hpp" 3 4
23866: # 1 "/usr/include/boost/algorithm/string/find_format.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/find_format.hpp" 3 4
23866: #define BOOST_STRING_FIND_FORMAT_HPP
23866:
23866: # 1 "/usr/include/c++/10/deque" 1 3 4
23866: # 56 "/usr/include/c++/10/deque" 3 4
23866: #define _GLIBCXX_DEQUE 1
23866:
23866:
23866: # 59 "/usr/include/c++/10/deque" 3
23866: # 67 "/usr/include/c++/10/deque" 3
23866: # 1 "/usr/include/c++/10/bits/stl_deque.h" 1 3
23866: # 57 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: #define _STL_DEQUE_H 1
23866: # 72 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: # 92 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: #define _GLIBCXX_DEQUE_BUF_SIZE 512
23866:
23866:
23866: constexpr inline size_t
23866: __deque_buf_size(size_t __size)
23866: { return (__size < 512
23866: ? size_t(512 / __size) : size_t(1)); }
23866: # 112 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: template<typename _Tp, typename _Ref, typename _Ptr>
23866: struct _Deque_iterator
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: private:
23866: template<typename _CvTp>
23866: using __iter = _Deque_iterator<_Tp, _CvTp&, __ptr_rebind<_Ptr, _CvTp>>;
23866: public:
23866: typedef __iter<_Tp> iterator;
23866: typedef __iter<const _Tp> const_iterator;
23866: typedef __ptr_rebind<_Ptr, _Tp> _Elt_pointer;
23866: typedef __ptr_rebind<_Ptr, _Elt_pointer> _Map_pointer;
23866:
23866:
23866: static size_t _S_buffer_size() noexcept
23866: { return __deque_buf_size(sizeof(_Tp)); }
23866:
23866: typedef std::random_access_iterator_tag iterator_category;
23866: typedef _Tp value_type;
23866: typedef _Ptr pointer;
23866: typedef _Ref reference;
23866: typedef size_t size_type;
23866: typedef ptrdiff_t difference_type;
23866: typedef _Deque_iterator _Self;
23866:
23866: _Elt_pointer _M_cur;
23866: _Elt_pointer _M_first;
23866: _Elt_pointer _M_last;
23866: _Map_pointer _M_node;
23866:
23866: _Deque_iterator(_Elt_pointer __x, _Map_pointer __y) noexcept
23866: : _M_cur(__x), _M_first(*__y),
23866: _M_last(*__y + _S_buffer_size()), _M_node(__y) { }
23866:
23866: _Deque_iterator() noexcept
23866: : _M_cur(), _M_first(), _M_last(), _M_node() { }
23866: # 161 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: template<typename _Iter,
23866: typename = _Require<is_same<_Self, const_iterator>,
23866: is_same<_Iter, iterator>>>
23866: _Deque_iterator(const _Iter& __x) noexcept
23866: : _M_cur(__x._M_cur), _M_first(__x._M_first),
23866: _M_last(__x._M_last), _M_node(__x._M_node) { }
23866:
23866: _Deque_iterator(const _Deque_iterator& __x) noexcept
23866: : _M_cur(__x._M_cur), _M_first(__x._M_first),
23866: _M_last(__x._M_last), _M_node(__x._M_node) { }
23866:
23866: _Deque_iterator& operator=(const _Deque_iterator&) = default;
23866:
23866:
23866: iterator
23866: _M_const_cast() const noexcept
23866: { return iterator(_M_cur, _M_node); }
23866:
23866: reference
23866: operator*() const noexcept
23866: { return *_M_cur; }
23866:
23866: pointer
23866: operator->() const noexcept
23866: { return _M_cur; }
23866:
23866: _Self&
23866: operator++() noexcept
23866: {
23866: ++_M_cur;
23866: if (_M_cur == _M_last)
23866: {
23866: _M_set_node(_M_node + 1);
23866: _M_cur = _M_first;
23866: }
23866: return *this;
23866: }
23866:
23866: _Self
23866: operator++(int) noexcept
23866: {
23866: _Self __tmp = *this;
23866: ++*this;
23866: return __tmp;
23866: }
23866:
23866: _Self&
23866: operator--() noexcept
23866: {
23866: if (_M_cur == _M_first)
23866: {
23866: _M_set_node(_M_node - 1);
23866: _M_cur = _M_last;
23866: }
23866: --_M_cur;
23866: return *this;
23866: }
23866:
23866: _Self
23866: operator--(int) noexcept
23866: {
23866: _Self __tmp = *this;
23866: --*this;
23866: return __tmp;
23866: }
23866:
23866: _Self&
23866: operator+=(difference_type __n) noexcept
23866: {
23866: const difference_type __offset = __n + (_M_cur - _M_first);
23866: if (__offset >= 0 && __offset < difference_type(_S_buffer_size()))
23866: _M_cur += __n;
23866: else
23866: {
23866: const difference_type __node_offset =
23866: __offset > 0 ? __offset / difference_type(_S_buffer_size())
23866: : -difference_type((-__offset - 1)
23866: / _S_buffer_size()) - 1;
23866: _M_set_node(_M_node + __node_offset);
23866: _M_cur = _M_first + (__offset - __node_offset
23866: * difference_type(_S_buffer_size()));
23866: }
23866: return *this;
23866: }
23866:
23866: _Self&
23866: operator-=(difference_type __n) noexcept
23866: { return *this += -__n; }
23866:
23866: reference
23866: operator[](difference_type __n) const noexcept
23866: { return *(*this + __n); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: void
23866: _M_set_node(_Map_pointer __new_node) noexcept
23866: {
23866: _M_node = __new_node;
23866: _M_first = *__new_node;
23866: _M_last = _M_first + difference_type(_S_buffer_size());
23866: }
23866:
23866: friend bool
23866: operator==(const _Self& __x, const _Self& __y) noexcept
23866: { return __x._M_cur == __y._M_cur; }
23866:
23866:
23866:
23866:
23866: template<typename _RefR, typename _PtrR>
23866: friend bool
23866: operator==(const _Self& __x,
23866: const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
23866: noexcept
23866: { return __x._M_cur == __y._M_cur; }
23866: # 290 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: friend bool
23866: operator!=(const _Self& __x, const _Self& __y) noexcept
23866: { return !(__x == __y); }
23866:
23866: template<typename _RefR, typename _PtrR>
23866: friend bool
23866: operator!=(const _Self& __x,
23866: const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
23866: noexcept
23866: { return !(__x == __y); }
23866:
23866: friend bool
23866: operator<(const _Self& __x, const _Self& __y) noexcept
23866: {
23866: return (__x._M_node == __y._M_node)
23866: ? (__x._M_cur < __y._M_cur) : (__x._M_node < __y._M_node);
23866: }
23866:
23866: template<typename _RefR, typename _PtrR>
23866: friend bool
23866: operator<(const _Self& __x,
23866: const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
23866: noexcept
23866: {
23866: return (__x._M_node == __y._M_node)
23866: ? (__x._M_cur < __y._M_cur) : (__x._M_node < __y._M_node);
23866: }
23866:
23866: friend bool
23866: operator>(const _Self& __x, const _Self& __y) noexcept
23866: { return __y < __x; }
23866:
23866: template<typename _RefR, typename _PtrR>
23866: friend bool
23866: operator>(const _Self& __x,
23866: const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
23866: noexcept
23866: { return __y < __x; }
23866:
23866: friend bool
23866: operator<=(const _Self& __x, const _Self& __y) noexcept
23866: { return !(__y < __x); }
23866:
23866: template<typename _RefR, typename _PtrR>
23866: friend bool
23866: operator<=(const _Self& __x,
23866: const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
23866: noexcept
23866: { return !(__y < __x); }
23866:
23866: friend bool
23866: operator>=(const _Self& __x, const _Self& __y) noexcept
23866: { return !(__x < __y); }
23866:
23866: template<typename _RefR, typename _PtrR>
23866: friend bool
23866: operator>=(const _Self& __x,
23866: const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
23866: noexcept
23866: { return !(__x < __y); }
23866:
23866:
23866: friend difference_type
23866: operator-(const _Self& __x, const _Self& __y) noexcept
23866: {
23866: return difference_type(_S_buffer_size())
23866: * (__x._M_node - __y._M_node - 1) + (__x._M_cur - __x._M_first)
23866: + (__y._M_last - __y._M_cur);
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename _RefR, typename _PtrR>
23866: friend difference_type
23866: operator-(const _Self& __x,
23866: const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) noexcept
23866: {
23866: return difference_type(_S_buffer_size())
23866: * (__x._M_node - __y._M_node - 1) + (__x._M_cur - __x._M_first)
23866: + (__y._M_last - __y._M_cur);
23866: }
23866:
23866: friend _Self
23866: operator+(const _Self& __x, difference_type __n) noexcept
23866: {
23866: _Self __tmp = __x;
23866: __tmp += __n;
23866: return __tmp;
23866: }
23866:
23866: friend _Self
23866: operator-(const _Self& __x, difference_type __n) noexcept
23866: {
23866: _Self __tmp = __x;
23866: __tmp -= __n;
23866: return __tmp;
23866: }
23866:
23866: friend _Self
23866: operator+(difference_type __n, const _Self& __x) noexcept
23866: { return __x + __n; }
23866: };
23866: # 405 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: template<typename _Tp, typename _Alloc>
23866: class _Deque_base
23866: {
23866: protected:
23866: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template
23866: rebind<_Tp>::other _Tp_alloc_type;
23866: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Alloc_traits;
23866:
23866:
23866:
23866:
23866:
23866: typedef typename _Alloc_traits::pointer _Ptr;
23866: typedef typename _Alloc_traits::const_pointer _Ptr_const;
23866:
23866:
23866: typedef typename _Alloc_traits::template rebind<_Ptr>::other
23866: _Map_alloc_type;
23866: typedef __gnu_cxx::__alloc_traits<_Map_alloc_type> _Map_alloc_traits;
23866:
23866: typedef _Alloc allocator_type;
23866:
23866: allocator_type
23866: get_allocator() const noexcept
23866: { return allocator_type(_M_get_Tp_allocator()); }
23866:
23866: typedef _Deque_iterator<_Tp, _Tp&, _Ptr> iterator;
23866: typedef _Deque_iterator<_Tp, const _Tp&, _Ptr_const> const_iterator;
23866:
23866: _Deque_base()
23866: : _M_impl()
23866: { _M_initialize_map(0); }
23866:
23866: _Deque_base(size_t __num_elements)
23866: : _M_impl()
23866: { _M_initialize_map(__num_elements); }
23866:
23866: _Deque_base(const allocator_type& __a, size_t __num_elements)
23866: : _M_impl(__a)
23866: { _M_initialize_map(__num_elements); }
23866:
23866: _Deque_base(const allocator_type& __a)
23866: : _M_impl(__a)
23866: { }
23866:
23866:
23866: _Deque_base(_Deque_base&& __x)
23866: : _M_impl(std::move(__x._M_get_Tp_allocator()))
23866: {
23866: _M_initialize_map(0);
23866: if (__x._M_impl._M_map)
23866: this->_M_impl._M_swap_data(__x._M_impl);
23866: }
23866:
23866: _Deque_base(_Deque_base&& __x, const allocator_type& __a)
23866: : _M_impl(std::move(__x._M_impl), _Tp_alloc_type(__a))
23866: { __x._M_initialize_map(0); }
23866:
23866: _Deque_base(_Deque_base&& __x, const allocator_type& __a, size_t __n)
23866: : _M_impl(__a)
23866: {
23866: if (__x.get_allocator() == __a)
23866: {
23866: if (__x._M_impl._M_map)
23866: {
23866: _M_initialize_map(0);
23866: this->_M_impl._M_swap_data(__x._M_impl);
23866: }
23866: }
23866: else
23866: {
23866: _M_initialize_map(__n);
23866: }
23866: }
23866:
23866:
23866: ~_Deque_base() noexcept;
23866:
23866: typedef typename iterator::_Map_pointer _Map_pointer;
23866:
23866: struct _Deque_impl_data
23866: {
23866: _Map_pointer _M_map;
23866: size_t _M_map_size;
23866: iterator _M_start;
23866: iterator _M_finish;
23866:
23866: _Deque_impl_data() noexcept
23866: : _M_map(), _M_map_size(), _M_start(), _M_finish()
23866: { }
23866:
23866:
23866: _Deque_impl_data(const _Deque_impl_data&) = default;
23866: _Deque_impl_data&
23866: operator=(const _Deque_impl_data&) = default;
23866:
23866: _Deque_impl_data(_Deque_impl_data&& __x) noexcept
23866: : _Deque_impl_data(__x)
23866: { __x = _Deque_impl_data(); }
23866:
23866:
23866: void
23866: _M_swap_data(_Deque_impl_data& __x) noexcept
23866: {
23866:
23866:
23866: std::swap(*this, __x);
23866: }
23866: };
23866:
23866:
23866:
23866:
23866: struct _Deque_impl
23866: : public _Tp_alloc_type, public _Deque_impl_data
23866: {
23866: _Deque_impl() noexcept(is_nothrow_default_constructible<_Tp_alloc_type>::value)
23866:
23866: : _Tp_alloc_type()
23866: { }
23866:
23866: _Deque_impl(const _Tp_alloc_type& __a) noexcept
23866: : _Tp_alloc_type(__a)
23866: { }
23866:
23866:
23866: _Deque_impl(_Deque_impl&&) = default;
23866:
23866: _Deque_impl(_Tp_alloc_type&& __a) noexcept
23866: : _Tp_alloc_type(std::move(__a))
23866: { }
23866:
23866: _Deque_impl(_Deque_impl&& __d, _Tp_alloc_type&& __a)
23866: : _Tp_alloc_type(std::move(__a)), _Deque_impl_data(std::move(__d))
23866: { }
23866:
23866: };
23866:
23866: _Tp_alloc_type&
23866: _M_get_Tp_allocator() noexcept
23866: { return this->_M_impl; }
23866:
23866: const _Tp_alloc_type&
23866: _M_get_Tp_allocator() const noexcept
23866: { return this->_M_impl; }
23866:
23866: _Map_alloc_type
23866: _M_get_map_allocator() const noexcept
23866: { return _Map_alloc_type(_M_get_Tp_allocator()); }
23866:
23866: _Ptr
23866: _M_allocate_node()
23866: {
23866: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Traits;
23866: return _Traits::allocate(_M_impl, __deque_buf_size(sizeof(_Tp)));
23866: }
23866:
23866: void
23866: _M_deallocate_node(_Ptr __p) noexcept
23866: {
23866: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Traits;
23866: _Traits::deallocate(_M_impl, __p, __deque_buf_size(sizeof(_Tp)));
23866: }
23866:
23866: _Map_pointer
23866: _M_allocate_map(size_t __n)
23866: {
23866: _Map_alloc_type __map_alloc = _M_get_map_allocator();
23866: return _Map_alloc_traits::allocate(__map_alloc, __n);
23866: }
23866:
23866: void
23866: _M_deallocate_map(_Map_pointer __p, size_t __n) noexcept
23866: {
23866: _Map_alloc_type __map_alloc = _M_get_map_allocator();
23866: _Map_alloc_traits::deallocate(__map_alloc, __p, __n);
23866: }
23866:
23866: void _M_initialize_map(size_t);
23866: void _M_create_nodes(_Map_pointer __nstart, _Map_pointer __nfinish);
23866: void _M_destroy_nodes(_Map_pointer __nstart,
23866: _Map_pointer __nfinish) noexcept;
23866: enum { _S_initial_map_size = 8 };
23866:
23866: _Deque_impl _M_impl;
23866: };
23866:
23866: template<typename _Tp, typename _Alloc>
23866: _Deque_base<_Tp, _Alloc>::
23866: ~_Deque_base() noexcept
23866: {
23866: if (this->_M_impl._M_map)
23866: {
23866: _M_destroy_nodes(this->_M_impl._M_start._M_node,
23866: this->_M_impl._M_finish._M_node + 1);
23866: _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size);
23866: }
23866: }
23866: # 612 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: template<typename _Tp, typename _Alloc>
23866: void
23866: _Deque_base<_Tp, _Alloc>::
23866: _M_initialize_map(size_t __num_elements)
23866: {
23866: const size_t __num_nodes = (__num_elements / __deque_buf_size(sizeof(_Tp))
23866: + 1);
23866:
23866: this->_M_impl._M_map_size = std::max((size_t) _S_initial_map_size,
23866: size_t(__num_nodes + 2));
23866: this->_M_impl._M_map = _M_allocate_map(this->_M_impl._M_map_size);
23866:
23866:
23866:
23866:
23866:
23866:
23866: _Map_pointer __nstart = (this->_M_impl._M_map
23866: + (this->_M_impl._M_map_size - __num_nodes) / 2);
23866: _Map_pointer __nfinish = __nstart + __num_nodes;
23866:
23866: try
23866: { _M_create_nodes(__nstart, __nfinish); }
23866: catch(...)
23866: {
23866: _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size);
23866: this->_M_impl._M_map = _Map_pointer();
23866: this->_M_impl._M_map_size = 0;
23866: throw;
23866: }
23866:
23866: this->_M_impl._M_start._M_set_node(__nstart);
23866: this->_M_impl._M_finish._M_set_node(__nfinish - 1);
23866: this->_M_impl._M_start._M_cur = _M_impl._M_start._M_first;
23866: this->_M_impl._M_finish._M_cur = (this->_M_impl._M_finish._M_first
23866: + __num_elements
23866: % __deque_buf_size(sizeof(_Tp)));
23866: }
23866:
23866: template<typename _Tp, typename _Alloc>
23866: void
23866: _Deque_base<_Tp, _Alloc>::
23866: _M_create_nodes(_Map_pointer __nstart, _Map_pointer __nfinish)
23866: {
23866: _Map_pointer __cur;
23866: try
23866: {
23866: for (__cur = __nstart; __cur < __nfinish; ++__cur)
23866: *__cur = this->_M_allocate_node();
23866: }
23866: catch(...)
23866: {
23866: _M_destroy_nodes(__nstart, __cur);
23866: throw;
23866: }
23866: }
23866:
23866: template<typename _Tp, typename _Alloc>
23866: void
23866: _Deque_base<_Tp, _Alloc>::
23866: _M_destroy_nodes(_Map_pointer __nstart,
23866: _Map_pointer __nfinish) noexcept
23866: {
23866: for (_Map_pointer __n = __nstart; __n < __nfinish; ++__n)
23866: _M_deallocate_node(*__n);
23866: }
23866: # 763 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
23866: class deque : protected _Deque_base<_Tp, _Alloc>
23866: {
23866: # 776 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: static_assert(is_same<typename remove_cv<_Tp>::type, _Tp>::value,
23866: "std::deque must have a non-const, non-volatile value_type");
23866:
23866: static_assert(is_same<typename _Alloc::value_type, _Tp>::value,
23866: "std::deque must have the same value_type as its allocator");
23866:
23866:
23866:
23866: typedef _Deque_base<_Tp, _Alloc> _Base;
23866: typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
23866: typedef typename _Base::_Alloc_traits _Alloc_traits;
23866: typedef typename _Base::_Map_pointer _Map_pointer;
23866:
23866: public:
23866: typedef _Tp value_type;
23866: typedef typename _Alloc_traits::pointer pointer;
23866: typedef typename _Alloc_traits::const_pointer const_pointer;
23866: typedef typename _Alloc_traits::reference reference;
23866: typedef typename _Alloc_traits::const_reference const_reference;
23866: typedef typename _Base::iterator iterator;
23866: typedef typename _Base::const_iterator const_iterator;
23866: typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
23866: typedef std::reverse_iterator<iterator> reverse_iterator;
23866: typedef size_t size_type;
23866: typedef ptrdiff_t difference_type;
23866: typedef _Alloc allocator_type;
23866:
23866: private:
23866: static size_t _S_buffer_size() noexcept
23866: { return __deque_buf_size(sizeof(_Tp)); }
23866:
23866:
23866: using _Base::_M_initialize_map;
23866: using _Base::_M_create_nodes;
23866: using _Base::_M_destroy_nodes;
23866: using _Base::_M_allocate_node;
23866: using _Base::_M_deallocate_node;
23866: using _Base::_M_allocate_map;
23866: using _Base::_M_deallocate_map;
23866: using _Base::_M_get_Tp_allocator;
23866:
23866:
23866:
23866:
23866:
23866: using _Base::_M_impl;
23866:
23866: public:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: deque() = default;
23866: # 840 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: explicit
23866: deque(const allocator_type& __a)
23866: : _Base(__a, 0) { }
23866: # 853 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: explicit
23866: deque(size_type __n, const allocator_type& __a = allocator_type())
23866: : _Base(__a, _S_check_init_len(__n, __a))
23866: { _M_default_initialize(); }
23866: # 866 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: deque(size_type __n, const value_type& __value,
23866: const allocator_type& __a = allocator_type())
23866: : _Base(__a, _S_check_init_len(__n, __a))
23866: { _M_fill_initialize(__value); }
23866: # 893 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: deque(const deque& __x)
23866: : _Base(_Alloc_traits::_S_select_on_copy(__x._M_get_Tp_allocator()),
23866: __x.size())
23866: { std::__uninitialized_copy_a(__x.begin(), __x.end(),
23866: this->_M_impl._M_start,
23866: _M_get_Tp_allocator()); }
23866: # 909 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: deque(deque&&) = default;
23866:
23866:
23866: deque(const deque& __x, const allocator_type& __a)
23866: : _Base(__a, __x.size())
23866: { std::__uninitialized_copy_a(__x.begin(), __x.end(),
23866: this->_M_impl._M_start,
23866: _M_get_Tp_allocator()); }
23866:
23866:
23866: deque(deque&& __x, const allocator_type& __a)
23866: : deque(std::move(__x), __a, typename _Alloc_traits::is_always_equal{})
23866: { }
23866:
23866: private:
23866: deque(deque&& __x, const allocator_type& __a, true_type)
23866: : _Base(std::move(__x), __a)
23866: { }
23866:
23866: deque(deque&& __x, const allocator_type& __a, false_type)
23866: : _Base(std::move(__x), __a, __x.size())
23866: {
23866: if (__x.get_allocator() != __a && !__x.empty())
23866: {
23866: std::__uninitialized_move_a(__x.begin(), __x.end(),
23866: this->_M_impl._M_start,
23866: _M_get_Tp_allocator());
23866: __x.clear();
23866: }
23866: }
23866:
23866: public:
23866: # 952 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: deque(initializer_list<value_type> __l,
23866: const allocator_type& __a = allocator_type())
23866: : _Base(__a)
23866: {
23866: _M_range_initialize(__l.begin(), __l.end(),
23866: random_access_iterator_tag());
23866: }
23866: # 977 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: template<typename _InputIterator,
23866: typename = std::_RequireInputIter<_InputIterator>>
23866: deque(_InputIterator __first, _InputIterator __last,
23866: const allocator_type& __a = allocator_type())
23866: : _Base(__a)
23866: {
23866: _M_range_initialize(__first, __last,
23866: std::__iterator_category(__first));
23866: }
23866: # 1003 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: ~deque()
23866: { _M_destroy_data(begin(), end(), _M_get_Tp_allocator()); }
23866: # 1015 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: deque&
23866: operator=(const deque& __x);
23866: # 1027 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: deque&
23866: operator=(deque&& __x) noexcept(_Alloc_traits::_S_always_equal())
23866: {
23866: using __always_equal = typename _Alloc_traits::is_always_equal;
23866: _M_move_assign1(std::move(__x), __always_equal{});
23866: return *this;
23866: }
23866: # 1046 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: deque&
23866: operator=(initializer_list<value_type> __l)
23866: {
23866: _M_assign_aux(__l.begin(), __l.end(),
23866: random_access_iterator_tag());
23866: return *this;
23866: }
23866: # 1065 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: void
23866: assign(size_type __n, const value_type& __val)
23866: { _M_fill_assign(__n, __val); }
23866: # 1082 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: template<typename _InputIterator,
23866: typename = std::_RequireInputIter<_InputIterator>>
23866: void
23866: assign(_InputIterator __first, _InputIterator __last)
23866: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); }
23866: # 1109 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: void
23866: assign(initializer_list<value_type> __l)
23866: { _M_assign_aux(__l.begin(), __l.end(), random_access_iterator_tag()); }
23866:
23866:
23866:
23866: allocator_type
23866: get_allocator() const noexcept
23866: { return _Base::get_allocator(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: iterator
23866: begin() noexcept
23866: { return this->_M_impl._M_start; }
23866:
23866:
23866:
23866:
23866:
23866: const_iterator
23866: begin() const noexcept
23866: { return this->_M_impl._M_start; }
23866:
23866:
23866:
23866:
23866:
23866:
23866: iterator
23866: end() noexcept
23866: { return this->_M_impl._M_finish; }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_iterator
23866: end() const noexcept
23866: { return this->_M_impl._M_finish; }
23866:
23866:
23866:
23866:
23866:
23866:
23866: reverse_iterator
23866: rbegin() noexcept
23866: { return reverse_iterator(this->_M_impl._M_finish); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_reverse_iterator
23866: rbegin() const noexcept
23866: { return const_reverse_iterator(this->_M_impl._M_finish); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: reverse_iterator
23866: rend() noexcept
23866: { return reverse_iterator(this->_M_impl._M_start); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_reverse_iterator
23866: rend() const noexcept
23866: { return const_reverse_iterator(this->_M_impl._M_start); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_iterator
23866: cbegin() const noexcept
23866: { return this->_M_impl._M_start; }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_iterator
23866: cend() const noexcept
23866: { return this->_M_impl._M_finish; }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_reverse_iterator
23866: crbegin() const noexcept
23866: { return const_reverse_iterator(this->_M_impl._M_finish); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_reverse_iterator
23866: crend() const noexcept
23866: { return const_reverse_iterator(this->_M_impl._M_start); }
23866:
23866:
23866:
23866:
23866: size_type
23866: size() const noexcept
23866: { return this->_M_impl._M_finish - this->_M_impl._M_start; }
23866:
23866:
23866: size_type
23866: max_size() const noexcept
23866: { return _S_max_size(_M_get_Tp_allocator()); }
23866: # 1248 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: void
23866: resize(size_type __new_size)
23866: {
23866: const size_type __len = size();
23866: if (__new_size > __len)
23866: _M_default_append(__new_size - __len);
23866: else if (__new_size < __len)
23866: _M_erase_at_end(this->_M_impl._M_start
23866: + difference_type(__new_size));
23866: }
23866: # 1270 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: void
23866: resize(size_type __new_size, const value_type& __x)
23866: # 1287 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: {
23866: const size_type __len = size();
23866: if (__new_size > __len)
23866: _M_fill_insert(this->_M_impl._M_finish, __new_size - __len, __x);
23866: else if (__new_size < __len)
23866: _M_erase_at_end(this->_M_impl._M_start
23866: + difference_type(__new_size));
23866: }
23866:
23866:
23866:
23866: void
23866: shrink_to_fit() noexcept
23866: { _M_shrink_to_fit(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: [[__nodiscard__]] bool
23866: empty() const noexcept
23866: { return this->_M_impl._M_finish == this->_M_impl._M_start; }
23866: # 1323 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: reference
23866: operator[](size_type __n) noexcept
23866: {
23866: ;
23866: return this->_M_impl._M_start[difference_type(__n)];
23866: }
23866: # 1341 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: const_reference
23866: operator[](size_type __n) const noexcept
23866: {
23866: ;
23866: return this->_M_impl._M_start[difference_type(__n)];
23866: }
23866:
23866: protected:
23866:
23866: void
23866: _M_range_check(size_type __n) const
23866: {
23866: if (__n >= this->size())
23866: __throw_out_of_range_fmt(("deque::_M_range_check: __n " "(which is %zu)>= this->size() " "(which is %zu)")
23866:
23866: ,
23866: __n, this->size());
23866: }
23866:
23866: public:
23866: # 1372 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: reference
23866: at(size_type __n)
23866: {
23866: _M_range_check(__n);
23866: return (*this)[__n];
23866: }
23866: # 1390 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: const_reference
23866: at(size_type __n) const
23866: {
23866: _M_range_check(__n);
23866: return (*this)[__n];
23866: }
23866:
23866:
23866:
23866:
23866:
23866: reference
23866: front() noexcept
23866: {
23866: ;
23866: return *begin();
23866: }
23866:
23866:
23866:
23866:
23866:
23866: const_reference
23866: front() const noexcept
23866: {
23866: ;
23866: return *begin();
23866: }
23866:
23866:
23866:
23866:
23866:
23866: reference
23866: back() noexcept
23866: {
23866: ;
23866: iterator __tmp = end();
23866: --__tmp;
23866: return *__tmp;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: const_reference
23866: back() const noexcept
23866: {
23866: ;
23866: const_iterator __tmp = end();
23866: --__tmp;
23866: return *__tmp;
23866: }
23866: # 1455 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: void
23866: push_front(const value_type& __x)
23866: {
23866: if (this->_M_impl._M_start._M_cur != this->_M_impl._M_start._M_first)
23866: {
23866: _Alloc_traits::construct(this->_M_impl,
23866: this->_M_impl._M_start._M_cur - 1,
23866: __x);
23866: --this->_M_impl._M_start._M_cur;
23866: }
23866: else
23866: _M_push_front_aux(__x);
23866: }
23866:
23866:
23866: void
23866: push_front(value_type&& __x)
23866: { emplace_front(std::move(__x)); }
23866:
23866: template<typename... _Args>
23866:
23866: reference
23866:
23866:
23866:
23866: emplace_front(_Args&&... __args);
23866: # 1492 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: void
23866: push_back(const value_type& __x)
23866: {
23866: if (this->_M_impl._M_finish._M_cur
23866: != this->_M_impl._M_finish._M_last - 1)
23866: {
23866: _Alloc_traits::construct(this->_M_impl,
23866: this->_M_impl._M_finish._M_cur, __x);
23866: ++this->_M_impl._M_finish._M_cur;
23866: }
23866: else
23866: _M_push_back_aux(__x);
23866: }
23866:
23866:
23866: void
23866: push_back(value_type&& __x)
23866: { emplace_back(std::move(__x)); }
23866:
23866: template<typename... _Args>
23866:
23866: reference
23866:
23866:
23866:
23866: emplace_back(_Args&&... __args);
23866: # 1528 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: void
23866: pop_front() noexcept
23866: {
23866: ;
23866: if (this->_M_impl._M_start._M_cur
23866: != this->_M_impl._M_start._M_last - 1)
23866: {
23866: _Alloc_traits::destroy(_M_get_Tp_allocator(),
23866: this->_M_impl._M_start._M_cur);
23866: ++this->_M_impl._M_start._M_cur;
23866: }
23866: else
23866: _M_pop_front_aux();
23866: }
23866: # 1551 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: void
23866: pop_back() noexcept
23866: {
23866: ;
23866: if (this->_M_impl._M_finish._M_cur
23866: != this->_M_impl._M_finish._M_first)
23866: {
23866: --this->_M_impl._M_finish._M_cur;
23866: _Alloc_traits::destroy(_M_get_Tp_allocator(),
23866: this->_M_impl._M_finish._M_cur);
23866: }
23866: else
23866: _M_pop_back_aux();
23866: }
23866: # 1576 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: template<typename... _Args>
23866: iterator
23866: emplace(const_iterator __position, _Args&&... __args);
23866: # 1589 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: iterator
23866: insert(const_iterator __position, const value_type& __x);
23866: # 1615 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: iterator
23866: insert(const_iterator __position, value_type&& __x)
23866: { return emplace(__position, std::move(__x)); }
23866: # 1629 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: iterator
23866: insert(const_iterator __p, initializer_list<value_type> __l)
23866: {
23866: auto __offset = __p - cbegin();
23866: _M_range_insert_aux(__p._M_const_cast(), __l.begin(), __l.end(),
23866: std::random_access_iterator_tag());
23866: return begin() + __offset;
23866: }
23866: # 1648 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: iterator
23866: insert(const_iterator __position, size_type __n, const value_type& __x)
23866: {
23866: difference_type __offset = __position - cbegin();
23866: _M_fill_insert(__position._M_const_cast(), __n, __x);
23866: return begin() + __offset;
23866: }
23866: # 1682 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: template<typename _InputIterator,
23866: typename = std::_RequireInputIter<_InputIterator>>
23866: iterator
23866: insert(const_iterator __position, _InputIterator __first,
23866: _InputIterator __last)
23866: {
23866: difference_type __offset = __position - cbegin();
23866: _M_range_insert_aux(__position._M_const_cast(), __first, __last,
23866: std::__iterator_category(__first));
23866: return begin() + __offset;
23866: }
23866: # 1728 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: iterator
23866:
23866: erase(const_iterator __position)
23866:
23866:
23866:
23866: { return _M_erase(__position._M_const_cast()); }
23866: # 1752 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: iterator
23866:
23866: erase(const_iterator __first, const_iterator __last)
23866:
23866:
23866:
23866: { return _M_erase(__first._M_const_cast(), __last._M_const_cast()); }
23866: # 1771 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: void
23866: swap(deque& __x) noexcept
23866: {
23866:
23866:
23866: ;
23866:
23866: _M_impl._M_swap_data(__x._M_impl);
23866: _Alloc_traits::_S_on_swap(_M_get_Tp_allocator(),
23866: __x._M_get_Tp_allocator());
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: void
23866: clear() noexcept
23866: { _M_erase_at_end(begin()); }
23866:
23866: protected:
23866: # 1821 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: static size_t
23866: _S_check_init_len(size_t __n, const allocator_type& __a)
23866: {
23866: if (__n > _S_max_size(__a))
23866: __throw_length_error(
23866: ("cannot create std::deque larger than max_size()"));
23866: return __n;
23866: }
23866:
23866: static size_type
23866: _S_max_size(const _Tp_alloc_type& __a) noexcept
23866: {
23866: const size_t __diffmax = __gnu_cxx::__numeric_traits<ptrdiff_t>::__max;
23866: const size_t __allocmax = _Alloc_traits::max_size(__a);
23866: return (std::min)(__diffmax, __allocmax);
23866: }
23866: # 1850 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: template<typename _InputIterator>
23866: void
23866: _M_range_initialize(_InputIterator __first, _InputIterator __last,
23866: std::input_iterator_tag);
23866:
23866:
23866: template<typename _ForwardIterator>
23866: void
23866: _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last,
23866: std::forward_iterator_tag);
23866: # 1872 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: void
23866: _M_fill_initialize(const value_type& __value);
23866:
23866:
23866:
23866: void
23866: _M_default_initialize();
23866: # 1903 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: template<typename _InputIterator>
23866: void
23866: _M_assign_aux(_InputIterator __first, _InputIterator __last,
23866: std::input_iterator_tag);
23866:
23866:
23866: template<typename _ForwardIterator>
23866: void
23866: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
23866: std::forward_iterator_tag)
23866: {
23866: const size_type __len = std::distance(__first, __last);
23866: if (__len > size())
23866: {
23866: _ForwardIterator __mid = __first;
23866: std::advance(__mid, size());
23866: std::copy(__first, __mid, begin());
23866: _M_range_insert_aux(end(), __mid, __last,
23866: std::__iterator_category(__first));
23866: }
23866: else
23866: _M_erase_at_end(std::copy(__first, __last, begin()));
23866: }
23866:
23866:
23866:
23866: void
23866: _M_fill_assign(size_type __n, const value_type& __val)
23866: {
23866: if (__n > size())
23866: {
23866: std::fill(begin(), end(), __val);
23866: _M_fill_insert(end(), __n - size(), __val);
23866: }
23866: else
23866: {
23866: _M_erase_at_end(begin() + difference_type(__n));
23866: std::fill(begin(), end(), __val);
23866: }
23866: }
23866: # 1951 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: template<typename... _Args>
23866: void _M_push_back_aux(_Args&&... __args);
23866:
23866: template<typename... _Args>
23866: void _M_push_front_aux(_Args&&... __args);
23866:
23866:
23866: void _M_pop_back_aux();
23866:
23866: void _M_pop_front_aux();
23866: # 1990 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: template<typename _InputIterator>
23866: void
23866: _M_range_insert_aux(iterator __pos, _InputIterator __first,
23866: _InputIterator __last, std::input_iterator_tag);
23866:
23866:
23866: template<typename _ForwardIterator>
23866: void
23866: _M_range_insert_aux(iterator __pos, _ForwardIterator __first,
23866: _ForwardIterator __last, std::forward_iterator_tag);
23866:
23866:
23866:
23866:
23866: void
23866: _M_fill_insert(iterator __pos, size_type __n, const value_type& __x);
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename... _Args>
23866: iterator
23866: _M_insert_aux(iterator __pos, _Args&&... __args);
23866:
23866:
23866:
23866: void
23866: _M_insert_aux(iterator __pos, size_type __n, const value_type& __x);
23866:
23866:
23866: template<typename _ForwardIterator>
23866: void
23866: _M_insert_aux(iterator __pos,
23866: _ForwardIterator __first, _ForwardIterator __last,
23866: size_type __n);
23866:
23866:
23866:
23866:
23866: void
23866: _M_destroy_data_aux(iterator __first, iterator __last);
23866:
23866:
23866:
23866: template<typename _Alloc1>
23866: void
23866: _M_destroy_data(iterator __first, iterator __last, const _Alloc1&)
23866: { _M_destroy_data_aux(__first, __last); }
23866:
23866: void
23866: _M_destroy_data(iterator __first, iterator __last,
23866: const std::allocator<_Tp>&)
23866: {
23866: if (!__has_trivial_destructor(value_type))
23866: _M_destroy_data_aux(__first, __last);
23866: }
23866:
23866:
23866: void
23866: _M_erase_at_begin(iterator __pos)
23866: {
23866: _M_destroy_data(begin(), __pos, _M_get_Tp_allocator());
23866: _M_destroy_nodes(this->_M_impl._M_start._M_node, __pos._M_node);
23866: this->_M_impl._M_start = __pos;
23866: }
23866:
23866:
23866:
23866: void
23866: _M_erase_at_end(iterator __pos)
23866: {
23866: _M_destroy_data(__pos, end(), _M_get_Tp_allocator());
23866: _M_destroy_nodes(__pos._M_node + 1,
23866: this->_M_impl._M_finish._M_node + 1);
23866: this->_M_impl._M_finish = __pos;
23866: }
23866:
23866: iterator
23866: _M_erase(iterator __pos);
23866:
23866: iterator
23866: _M_erase(iterator __first, iterator __last);
23866:
23866:
23866:
23866: void
23866: _M_default_append(size_type __n);
23866:
23866: bool
23866: _M_shrink_to_fit();
23866:
23866:
23866:
23866:
23866: iterator
23866: _M_reserve_elements_at_front(size_type __n)
23866: {
23866: const size_type __vacancies = this->_M_impl._M_start._M_cur
23866: - this->_M_impl._M_start._M_first;
23866: if (__n > __vacancies)
23866: _M_new_elements_at_front(__n - __vacancies);
23866: return this->_M_impl._M_start - difference_type(__n);
23866: }
23866:
23866: iterator
23866: _M_reserve_elements_at_back(size_type __n)
23866: {
23866: const size_type __vacancies = (this->_M_impl._M_finish._M_last
23866: - this->_M_impl._M_finish._M_cur) - 1;
23866: if (__n > __vacancies)
23866: _M_new_elements_at_back(__n - __vacancies);
23866: return this->_M_impl._M_finish + difference_type(__n);
23866: }
23866:
23866: void
23866: _M_new_elements_at_front(size_type __new_elements);
23866:
23866: void
23866: _M_new_elements_at_back(size_type __new_elements);
23866: # 2122 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: void
23866: _M_reserve_map_at_back(size_type __nodes_to_add = 1)
23866: {
23866: if (__nodes_to_add + 1 > this->_M_impl._M_map_size
23866: - (this->_M_impl._M_finish._M_node - this->_M_impl._M_map))
23866: _M_reallocate_map(__nodes_to_add, false);
23866: }
23866:
23866: void
23866: _M_reserve_map_at_front(size_type __nodes_to_add = 1)
23866: {
23866: if (__nodes_to_add > size_type(this->_M_impl._M_start._M_node
23866: - this->_M_impl._M_map))
23866: _M_reallocate_map(__nodes_to_add, true);
23866: }
23866:
23866: void
23866: _M_reallocate_map(size_type __nodes_to_add, bool __add_at_front);
23866:
23866:
23866:
23866:
23866:
23866: void
23866: _M_move_assign1(deque&& __x, true_type) noexcept
23866: {
23866: this->_M_impl._M_swap_data(__x._M_impl);
23866: __x.clear();
23866: std::__alloc_on_move(_M_get_Tp_allocator(), __x._M_get_Tp_allocator());
23866: }
23866:
23866:
23866:
23866:
23866: void
23866: _M_move_assign1(deque&& __x, false_type)
23866: {
23866: constexpr bool __move_storage =
23866: _Alloc_traits::_S_propagate_on_move_assign();
23866: _M_move_assign2(std::move(__x), __bool_constant<__move_storage>());
23866: }
23866:
23866:
23866:
23866: template<typename... _Args>
23866: void
23866: _M_replace_map(_Args&&... __args)
23866: {
23866:
23866: deque __newobj(std::forward<_Args>(__args)...);
23866:
23866: clear();
23866: _M_deallocate_node(*begin()._M_node);
23866: _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size);
23866: this->_M_impl._M_map = nullptr;
23866: this->_M_impl._M_map_size = 0;
23866:
23866: this->_M_impl._M_swap_data(__newobj._M_impl);
23866: }
23866:
23866:
23866: void
23866: _M_move_assign2(deque&& __x, true_type)
23866: {
23866:
23866: auto __alloc = __x._M_get_Tp_allocator();
23866:
23866:
23866: _M_replace_map(std::move(__x));
23866:
23866: _M_get_Tp_allocator() = std::move(__alloc);
23866: }
23866:
23866:
23866:
23866: void
23866: _M_move_assign2(deque&& __x, false_type)
23866: {
23866: if (__x._M_get_Tp_allocator() == this->_M_get_Tp_allocator())
23866: {
23866:
23866:
23866: _M_replace_map(std::move(__x), __x.get_allocator());
23866: }
23866: else
23866: {
23866:
23866:
23866: _M_assign_aux(std::make_move_iterator(__x.begin()),
23866: std::make_move_iterator(__x.end()),
23866: std::random_access_iterator_tag());
23866: __x.clear();
23866: }
23866: }
23866:
23866: };
23866:
23866:
23866: template<typename _InputIterator, typename _ValT
23866: = typename iterator_traits<_InputIterator>::value_type,
23866: typename _Allocator = allocator<_ValT>,
23866: typename = _RequireInputIter<_InputIterator>,
23866: typename = _RequireAllocator<_Allocator>>
23866: deque(_InputIterator, _InputIterator, _Allocator = _Allocator())
23866: -> deque<_ValT, _Allocator>;
23866: # 2239 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: template<typename _Tp, typename _Alloc>
23866: inline bool
23866: operator==(const deque<_Tp, _Alloc>& __x, const deque<_Tp, _Alloc>& __y)
23866: { return __x.size() == __y.size()
23866: && std::equal(__x.begin(), __x.end(), __y.begin()); }
23866: # 2277 "/usr/include/c++/10/bits/stl_deque.h" 3
23866: template<typename _Tp, typename _Alloc>
23866: inline bool
23866: operator<(const deque<_Tp, _Alloc>& __x, const deque<_Tp, _Alloc>& __y)
23866: { return std::lexicographical_compare(__x.begin(), __x.end(),
23866: __y.begin(), __y.end()); }
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: inline bool
23866: operator!=(const deque<_Tp, _Alloc>& __x, const deque<_Tp, _Alloc>& __y)
23866: { return !(__x == __y); }
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: inline bool
23866: operator>(const deque<_Tp, _Alloc>& __x, const deque<_Tp, _Alloc>& __y)
23866: { return __y < __x; }
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: inline bool
23866: operator<=(const deque<_Tp, _Alloc>& __x, const deque<_Tp, _Alloc>& __y)
23866: { return !(__y < __x); }
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: inline bool
23866: operator>=(const deque<_Tp, _Alloc>& __x, const deque<_Tp, _Alloc>& __y)
23866: { return !(__x < __y); }
23866:
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: inline void
23866: swap(deque<_Tp,_Alloc>& __x, deque<_Tp,_Alloc>& __y)
23866: noexcept(noexcept(__x.swap(__y)))
23866: { __x.swap(__y); }
23866:
23866: #undef _GLIBCXX_DEQUE_BUF_SIZE
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<class _Tp>
23866: struct __is_bitwise_relocatable<std::deque<_Tp>>
23866: : true_type { };
23866:
23866:
23866:
23866: }
23866: # 68 "/usr/include/c++/10/deque" 2 3
23866:
23866: # 1 "/usr/include/c++/10/bits/deque.tcc" 1 3
23866: # 57 "/usr/include/c++/10/bits/deque.tcc" 3
23866: #define _DEQUE_TCC 1
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866: template <typename _Tp, typename _Alloc>
23866: void
23866: deque<_Tp, _Alloc>::
23866: _M_default_initialize()
23866: {
23866: _Map_pointer __cur;
23866: try
23866: {
23866: for (__cur = this->_M_impl._M_start._M_node;
23866: __cur < this->_M_impl._M_finish._M_node;
23866: ++__cur)
23866: std::__uninitialized_default_a(*__cur, *__cur + _S_buffer_size(),
23866: _M_get_Tp_allocator());
23866: std::__uninitialized_default_a(this->_M_impl._M_finish._M_first,
23866: this->_M_impl._M_finish._M_cur,
23866: _M_get_Tp_allocator());
23866: }
23866: catch(...)
23866: {
23866: std::_Destroy(this->_M_impl._M_start, iterator(*__cur, __cur),
23866: _M_get_Tp_allocator());
23866: throw;
23866: }
23866: }
23866:
23866:
23866: template <typename _Tp, typename _Alloc>
23866: deque<_Tp, _Alloc>&
23866: deque<_Tp, _Alloc>::
23866: operator=(const deque& __x)
23866: {
23866: if (&__x != this)
23866: {
23866:
23866: if (_Alloc_traits::_S_propagate_on_copy_assign())
23866: {
23866: if (!_Alloc_traits::_S_always_equal()
23866: && _M_get_Tp_allocator() != __x._M_get_Tp_allocator())
23866: {
23866:
23866:
23866: _M_replace_map(__x, __x.get_allocator());
23866: std::__alloc_on_copy(_M_get_Tp_allocator(),
23866: __x._M_get_Tp_allocator());
23866: return *this;
23866: }
23866: std::__alloc_on_copy(_M_get_Tp_allocator(),
23866: __x._M_get_Tp_allocator());
23866: }
23866:
23866: const size_type __len = size();
23866: if (__len >= __x.size())
23866: _M_erase_at_end(std::copy(__x.begin(), __x.end(),
23866: this->_M_impl._M_start));
23866: else
23866: {
23866: const_iterator __mid = __x.begin() + difference_type(__len);
23866: std::copy(__x.begin(), __mid, this->_M_impl._M_start);
23866: _M_range_insert_aux(this->_M_impl._M_finish, __mid, __x.end(),
23866: std::random_access_iterator_tag());
23866: }
23866: }
23866: return *this;
23866: }
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: template<typename... _Args>
23866:
23866: typename deque<_Tp, _Alloc>::reference
23866:
23866:
23866:
23866: deque<_Tp, _Alloc>::
23866: emplace_front(_Args&&... __args)
23866: {
23866: if (this->_M_impl._M_start._M_cur != this->_M_impl._M_start._M_first)
23866: {
23866: _Alloc_traits::construct(this->_M_impl,
23866: this->_M_impl._M_start._M_cur - 1,
23866: std::forward<_Args>(__args)...);
23866: --this->_M_impl._M_start._M_cur;
23866: }
23866: else
23866: _M_push_front_aux(std::forward<_Args>(__args)...);
23866:
23866: return front();
23866:
23866: }
23866:
23866: template<typename _Tp, typename _Alloc>
23866: template<typename... _Args>
23866:
23866: typename deque<_Tp, _Alloc>::reference
23866:
23866:
23866:
23866: deque<_Tp, _Alloc>::
23866: emplace_back(_Args&&... __args)
23866: {
23866: if (this->_M_impl._M_finish._M_cur
23866: != this->_M_impl._M_finish._M_last - 1)
23866: {
23866: _Alloc_traits::construct(this->_M_impl,
23866: this->_M_impl._M_finish._M_cur,
23866: std::forward<_Args>(__args)...);
23866: ++this->_M_impl._M_finish._M_cur;
23866: }
23866: else
23866: _M_push_back_aux(std::forward<_Args>(__args)...);
23866:
23866: return back();
23866:
23866: }
23866:
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866: template<typename... _Args>
23866: typename deque<_Tp, _Alloc>::iterator
23866: deque<_Tp, _Alloc>::
23866: emplace(const_iterator __position, _Args&&... __args)
23866: {
23866: if (__position._M_cur == this->_M_impl._M_start._M_cur)
23866: {
23866: emplace_front(std::forward<_Args>(__args)...);
23866: return this->_M_impl._M_start;
23866: }
23866: else if (__position._M_cur == this->_M_impl._M_finish._M_cur)
23866: {
23866: emplace_back(std::forward<_Args>(__args)...);
23866: iterator __tmp = this->_M_impl._M_finish;
23866: --__tmp;
23866: return __tmp;
23866: }
23866: else
23866: return _M_insert_aux(__position._M_const_cast(),
23866: std::forward<_Args>(__args)...);
23866: }
23866:
23866:
23866: template <typename _Tp, typename _Alloc>
23866: typename deque<_Tp, _Alloc>::iterator
23866: deque<_Tp, _Alloc>::
23866:
23866: insert(const_iterator __position, const value_type& __x)
23866:
23866:
23866:
23866: {
23866: if (__position._M_cur == this->_M_impl._M_start._M_cur)
23866: {
23866: push_front(__x);
23866: return this->_M_impl._M_start;
23866: }
23866: else if (__position._M_cur == this->_M_impl._M_finish._M_cur)
23866: {
23866: push_back(__x);
23866: iterator __tmp = this->_M_impl._M_finish;
23866: --__tmp;
23866: return __tmp;
23866: }
23866: else
23866: return _M_insert_aux(__position._M_const_cast(), __x);
23866: }
23866:
23866: template <typename _Tp, typename _Alloc>
23866: typename deque<_Tp, _Alloc>::iterator
23866: deque<_Tp, _Alloc>::
23866: _M_erase(iterator __position)
23866: {
23866: iterator __next = __position;
23866: ++__next;
23866: const difference_type __index = __position - begin();
23866: if (static_cast<size_type>(__index) < (size() >> 1))
23866: {
23866: if (__position != begin())
23866: std::move_backward(begin(), __position, __next);
23866: pop_front();
23866: }
23866: else
23866: {
23866: if (__next != end())
23866: std::move(__next, end(), __position);
23866: pop_back();
23866: }
23866: return begin() + __index;
23866: }
23866:
23866: template <typename _Tp, typename _Alloc>
23866: typename deque<_Tp, _Alloc>::iterator
23866: deque<_Tp, _Alloc>::
23866: _M_erase(iterator __first, iterator __last)
23866: {
23866: if (__first == __last)
23866: return __first;
23866: else if (__first == begin() && __last == end())
23866: {
23866: clear();
23866: return end();
23866: }
23866: else
23866: {
23866: const difference_type __n = __last - __first;
23866: const difference_type __elems_before = __first - begin();
23866: if (static_cast<size_type>(__elems_before) <= (size() - __n) / 2)
23866: {
23866: if (__first != begin())
23866: std::move_backward(begin(), __first, __last);
23866: _M_erase_at_begin(begin() + __n);
23866: }
23866: else
23866: {
23866: if (__last != end())
23866: std::move(__last, end(), __first);
23866: _M_erase_at_end(end() - __n);
23866: }
23866: return begin() + __elems_before;
23866: }
23866: }
23866:
23866: template <typename _Tp, class _Alloc>
23866: template <typename _InputIterator>
23866: void
23866: deque<_Tp, _Alloc>::
23866: _M_assign_aux(_InputIterator __first, _InputIterator __last,
23866: std::input_iterator_tag)
23866: {
23866: iterator __cur = begin();
23866: for (; __first != __last && __cur != end(); ++__cur, (void)++__first)
23866: *__cur = *__first;
23866: if (__first == __last)
23866: _M_erase_at_end(__cur);
23866: else
23866: _M_range_insert_aux(end(), __first, __last,
23866: std::__iterator_category(__first));
23866: }
23866:
23866: template <typename _Tp, typename _Alloc>
23866: void
23866: deque<_Tp, _Alloc>::
23866: _M_fill_insert(iterator __pos, size_type __n, const value_type& __x)
23866: {
23866: if (__pos._M_cur == this->_M_impl._M_start._M_cur)
23866: {
23866: iterator __new_start = _M_reserve_elements_at_front(__n);
23866: try
23866: {
23866: std::__uninitialized_fill_a(__new_start, this->_M_impl._M_start,
23866: __x, _M_get_Tp_allocator());
23866: this->_M_impl._M_start = __new_start;
23866: }
23866: catch(...)
23866: {
23866: _M_destroy_nodes(__new_start._M_node,
23866: this->_M_impl._M_start._M_node);
23866: throw;
23866: }
23866: }
23866: else if (__pos._M_cur == this->_M_impl._M_finish._M_cur)
23866: {
23866: iterator __new_finish = _M_reserve_elements_at_back(__n);
23866: try
23866: {
23866: std::__uninitialized_fill_a(this->_M_impl._M_finish,
23866: __new_finish, __x,
23866: _M_get_Tp_allocator());
23866: this->_M_impl._M_finish = __new_finish;
23866: }
23866: catch(...)
23866: {
23866: _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1,
23866: __new_finish._M_node + 1);
23866: throw;
23866: }
23866: }
23866: else
23866: _M_insert_aux(__pos, __n, __x);
23866: }
23866:
23866:
23866: template <typename _Tp, typename _Alloc>
23866: void
23866: deque<_Tp, _Alloc>::
23866: _M_default_append(size_type __n)
23866: {
23866: if (__n)
23866: {
23866: iterator __new_finish = _M_reserve_elements_at_back(__n);
23866: try
23866: {
23866: std::__uninitialized_default_a(this->_M_impl._M_finish,
23866: __new_finish,
23866: _M_get_Tp_allocator());
23866: this->_M_impl._M_finish = __new_finish;
23866: }
23866: catch(...)
23866: {
23866: _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1,
23866: __new_finish._M_node + 1);
23866: throw;
23866: }
23866: }
23866: }
23866:
23866: template <typename _Tp, typename _Alloc>
23866: bool
23866: deque<_Tp, _Alloc>::
23866: _M_shrink_to_fit()
23866: {
23866: const difference_type __front_capacity
23866: = (this->_M_impl._M_start._M_cur - this->_M_impl._M_start._M_first);
23866: if (__front_capacity == 0)
23866: return false;
23866:
23866: const difference_type __back_capacity
23866: = (this->_M_impl._M_finish._M_last - this->_M_impl._M_finish._M_cur);
23866: if (__front_capacity + __back_capacity < _S_buffer_size())
23866: return false;
23866:
23866: return std::__shrink_to_fit_aux<deque>::_S_do_it(*this);
23866: }
23866:
23866:
23866: template <typename _Tp, typename _Alloc>
23866: void
23866: deque<_Tp, _Alloc>::
23866: _M_fill_initialize(const value_type& __value)
23866: {
23866: _Map_pointer __cur;
23866: try
23866: {
23866: for (__cur = this->_M_impl._M_start._M_node;
23866: __cur < this->_M_impl._M_finish._M_node;
23866: ++__cur)
23866: std::__uninitialized_fill_a(*__cur, *__cur + _S_buffer_size(),
23866: __value, _M_get_Tp_allocator());
23866: std::__uninitialized_fill_a(this->_M_impl._M_finish._M_first,
23866: this->_M_impl._M_finish._M_cur,
23866: __value, _M_get_Tp_allocator());
23866: }
23866: catch(...)
23866: {
23866: std::_Destroy(this->_M_impl._M_start, iterator(*__cur, __cur),
23866: _M_get_Tp_allocator());
23866: throw;
23866: }
23866: }
23866:
23866: template <typename _Tp, typename _Alloc>
23866: template <typename _InputIterator>
23866: void
23866: deque<_Tp, _Alloc>::
23866: _M_range_initialize(_InputIterator __first, _InputIterator __last,
23866: std::input_iterator_tag)
23866: {
23866: this->_M_initialize_map(0);
23866: try
23866: {
23866: for (; __first != __last; ++__first)
23866:
23866: emplace_back(*__first);
23866:
23866:
23866:
23866: }
23866: catch(...)
23866: {
23866: clear();
23866: throw;
23866: }
23866: }
23866:
23866: template <typename _Tp, typename _Alloc>
23866: template <typename _ForwardIterator>
23866: void
23866: deque<_Tp, _Alloc>::
23866: _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last,
23866: std::forward_iterator_tag)
23866: {
23866: const size_type __n = std::distance(__first, __last);
23866: this->_M_initialize_map(_S_check_init_len(__n, _M_get_Tp_allocator()));
23866:
23866: _Map_pointer __cur_node;
23866: try
23866: {
23866: for (__cur_node = this->_M_impl._M_start._M_node;
23866: __cur_node < this->_M_impl._M_finish._M_node;
23866: ++__cur_node)
23866: {
23866: _ForwardIterator __mid = __first;
23866: std::advance(__mid, _S_buffer_size());
23866: std::__uninitialized_copy_a(__first, __mid, *__cur_node,
23866: _M_get_Tp_allocator());
23866: __first = __mid;
23866: }
23866: std::__uninitialized_copy_a(__first, __last,
23866: this->_M_impl._M_finish._M_first,
23866: _M_get_Tp_allocator());
23866: }
23866: catch(...)
23866: {
23866: std::_Destroy(this->_M_impl._M_start,
23866: iterator(*__cur_node, __cur_node),
23866: _M_get_Tp_allocator());
23866: throw;
23866: }
23866: }
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866:
23866: template<typename... _Args>
23866: void
23866: deque<_Tp, _Alloc>::
23866: _M_push_back_aux(_Args&&... __args)
23866:
23866:
23866:
23866:
23866:
23866: {
23866: if (size() == max_size())
23866: __throw_length_error(
23866: ("cannot create std::deque larger than max_size()"));
23866:
23866: _M_reserve_map_at_back();
23866: *(this->_M_impl._M_finish._M_node + 1) = this->_M_allocate_node();
23866: try
23866: {
23866:
23866: _Alloc_traits::construct(this->_M_impl,
23866: this->_M_impl._M_finish._M_cur,
23866: std::forward<_Args>(__args)...);
23866:
23866:
23866:
23866: this->_M_impl._M_finish._M_set_node(this->_M_impl._M_finish._M_node
23866: + 1);
23866: this->_M_impl._M_finish._M_cur = this->_M_impl._M_finish._M_first;
23866: }
23866: catch(...)
23866: {
23866: _M_deallocate_node(*(this->_M_impl._M_finish._M_node + 1));
23866: throw;
23866: }
23866: }
23866:
23866:
23866: template<typename _Tp, typename _Alloc>
23866:
23866: template<typename... _Args>
23866: void
23866: deque<_Tp, _Alloc>::
23866: _M_push_front_aux(_Args&&... __args)
23866:
23866:
23866:
23866:
23866:
23866: {
23866: if (size() == max_size())
23866: __throw_length_error(
23866: ("cannot create std::deque larger than max_size()"));
23866:
23866: _M_reserve_map_at_front();
23866: *(this->_M_impl._M_start._M_node - 1) = this->_M_allocate_node();
23866: try
23866: {
23866: this->_M_impl._M_start._M_set_node(this->_M_impl._M_start._M_node
23866: - 1);
23866: this->_M_impl._M_start._M_cur = this->_M_impl._M_start._M_last - 1;
23866:
23866: _Alloc_traits::construct(this->_M_impl,
23866: this->_M_impl._M_start._M_cur,
23866: std::forward<_Args>(__args)...);
23866:
23866:
23866:
23866: }
23866: catch(...)
23866: {
23866: ++this->_M_impl._M_start;
23866: _M_deallocate_node(*(this->_M_impl._M_start._M_node - 1));
23866: throw;
23866: }
23866: }
23866:
23866:
23866: template <typename _Tp, typename _Alloc>
23866: void deque<_Tp, _Alloc>::
23866: _M_pop_back_aux()
23866: {
23866: _M_deallocate_node(this->_M_impl._M_finish._M_first);
23866: this->_M_impl._M_finish._M_set_node(this->_M_impl._M_finish._M_node - 1);
23866: this->_M_impl._M_finish._M_cur = this->_M_impl._M_finish._M_last - 1;
23866: _Alloc_traits::destroy(_M_get_Tp_allocator(),
23866: this->_M_impl._M_finish._M_cur);
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <typename _Tp, typename _Alloc>
23866: void deque<_Tp, _Alloc>::
23866: _M_pop_front_aux()
23866: {
23866: _Alloc_traits::destroy(_M_get_Tp_allocator(),
23866: this->_M_impl._M_start._M_cur);
23866: _M_deallocate_node(this->_M_impl._M_start._M_first);
23866: this->_M_impl._M_start._M_set_node(this->_M_impl._M_start._M_node + 1);
23866: this->_M_impl._M_start._M_cur = this->_M_impl._M_start._M_first;
23866: }
23866:
23866: template <typename _Tp, typename _Alloc>
23866: template <typename _InputIterator>
23866: void
23866: deque<_Tp, _Alloc>::
23866: _M_range_insert_aux(iterator __pos,
23866: _InputIterator __first, _InputIterator __last,
23866: std::input_iterator_tag)
23866: { std::copy(__first, __last, std::inserter(*this, __pos)); }
23866:
23866: template <typename _Tp, typename _Alloc>
23866: template <typename _ForwardIterator>
23866: void
23866: deque<_Tp, _Alloc>::
23866: _M_range_insert_aux(iterator __pos,
23866: _ForwardIterator __first, _ForwardIterator __last,
23866: std::forward_iterator_tag)
23866: {
23866: const size_type __n = std::distance(__first, __last);
23866: if (__pos._M_cur == this->_M_impl._M_start._M_cur)
23866: {
23866: iterator __new_start = _M_reserve_elements_at_front(__n);
23866: try
23866: {
23866: std::__uninitialized_copy_a(__first, __last, __new_start,
23866: _M_get_Tp_allocator());
23866: this->_M_impl._M_start = __new_start;
23866: }
23866: catch(...)
23866: {
23866: _M_destroy_nodes(__new_start._M_node,
23866: this->_M_impl._M_start._M_node);
23866: throw;
23866: }
23866: }
23866: else if (__pos._M_cur == this->_M_impl._M_finish._M_cur)
23866: {
23866: iterator __new_finish = _M_reserve_elements_at_back(__n);
23866: try
23866: {
23866: std::__uninitialized_copy_a(__first, __last,
23866: this->_M_impl._M_finish,
23866: _M_get_Tp_allocator());
23866: this->_M_impl._M_finish = __new_finish;
23866: }
23866: catch(...)
23866: {
23866: _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1,
23866: __new_finish._M_node + 1);
23866: throw;
23866: }
23866: }
23866: else
23866: _M_insert_aux(__pos, __first, __last, __n);
23866: }
23866:
23866: template<typename _Tp, typename _Alloc>
23866:
23866: template<typename... _Args>
23866: typename deque<_Tp, _Alloc>::iterator
23866: deque<_Tp, _Alloc>::
23866: _M_insert_aux(iterator __pos, _Args&&... __args)
23866: {
23866: value_type __x_copy(std::forward<_Args>(__args)...);
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: difference_type __index = __pos - this->_M_impl._M_start;
23866: if (static_cast<size_type>(__index) < size() / 2)
23866: {
23866: push_front(std::move(front()));
23866: iterator __front1 = this->_M_impl._M_start;
23866: ++__front1;
23866: iterator __front2 = __front1;
23866: ++__front2;
23866: __pos = this->_M_impl._M_start + __index;
23866: iterator __pos1 = __pos;
23866: ++__pos1;
23866: std::move(__front2, __pos1, __front1);
23866: }
23866: else
23866: {
23866: push_back(std::move(back()));
23866: iterator __back1 = this->_M_impl._M_finish;
23866: --__back1;
23866: iterator __back2 = __back1;
23866: --__back2;
23866: __pos = this->_M_impl._M_start + __index;
23866: std::move_backward(__pos, __back2, __back1);
23866: }
23866: *__pos = std::move(__x_copy);
23866: return __pos;
23866: }
23866:
23866: template <typename _Tp, typename _Alloc>
23866: void
23866: deque<_Tp, _Alloc>::
23866: _M_insert_aux(iterator __pos, size_type __n, const value_type& __x)
23866: {
23866: const difference_type __elems_before = __pos - this->_M_impl._M_start;
23866: const size_type __length = this->size();
23866: value_type __x_copy = __x;
23866: if (__elems_before < difference_type(__length / 2))
23866: {
23866: iterator __new_start = _M_reserve_elements_at_front(__n);
23866: iterator __old_start = this->_M_impl._M_start;
23866: __pos = this->_M_impl._M_start + __elems_before;
23866: try
23866: {
23866: if (__elems_before >= difference_type(__n))
23866: {
23866: iterator __start_n = (this->_M_impl._M_start
23866: + difference_type(__n));
23866: std::__uninitialized_move_a(this->_M_impl._M_start,
23866: __start_n, __new_start,
23866: _M_get_Tp_allocator());
23866: this->_M_impl._M_start = __new_start;
23866: std::move(__start_n, __pos, __old_start);
23866: std::fill(__pos - difference_type(__n), __pos, __x_copy);
23866: }
23866: else
23866: {
23866: std::__uninitialized_move_fill(this->_M_impl._M_start,
23866: __pos, __new_start,
23866: this->_M_impl._M_start,
23866: __x_copy,
23866: _M_get_Tp_allocator());
23866: this->_M_impl._M_start = __new_start;
23866: std::fill(__old_start, __pos, __x_copy);
23866: }
23866: }
23866: catch(...)
23866: {
23866: _M_destroy_nodes(__new_start._M_node,
23866: this->_M_impl._M_start._M_node);
23866: throw;
23866: }
23866: }
23866: else
23866: {
23866: iterator __new_finish = _M_reserve_elements_at_back(__n);
23866: iterator __old_finish = this->_M_impl._M_finish;
23866: const difference_type __elems_after =
23866: difference_type(__length) - __elems_before;
23866: __pos = this->_M_impl._M_finish - __elems_after;
23866: try
23866: {
23866: if (__elems_after > difference_type(__n))
23866: {
23866: iterator __finish_n = (this->_M_impl._M_finish
23866: - difference_type(__n));
23866: std::__uninitialized_move_a(__finish_n,
23866: this->_M_impl._M_finish,
23866: this->_M_impl._M_finish,
23866: _M_get_Tp_allocator());
23866: this->_M_impl._M_finish = __new_finish;
23866: std::move_backward(__pos, __finish_n, __old_finish);
23866: std::fill(__pos, __pos + difference_type(__n), __x_copy);
23866: }
23866: else
23866: {
23866: std::__uninitialized_fill_move(this->_M_impl._M_finish,
23866: __pos + difference_type(__n),
23866: __x_copy, __pos,
23866: this->_M_impl._M_finish,
23866: _M_get_Tp_allocator());
23866: this->_M_impl._M_finish = __new_finish;
23866: std::fill(__pos, __old_finish, __x_copy);
23866: }
23866: }
23866: catch(...)
23866: {
23866: _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1,
23866: __new_finish._M_node + 1);
23866: throw;
23866: }
23866: }
23866: }
23866:
23866: template <typename _Tp, typename _Alloc>
23866: template <typename _ForwardIterator>
23866: void
23866: deque<_Tp, _Alloc>::
23866: _M_insert_aux(iterator __pos,
23866: _ForwardIterator __first, _ForwardIterator __last,
23866: size_type __n)
23866: {
23866: const difference_type __elemsbefore = __pos - this->_M_impl._M_start;
23866: const size_type __length = size();
23866: if (static_cast<size_type>(__elemsbefore) < __length / 2)
23866: {
23866: iterator __new_start = _M_reserve_elements_at_front(__n);
23866: iterator __old_start = this->_M_impl._M_start;
23866: __pos = this->_M_impl._M_start + __elemsbefore;
23866: try
23866: {
23866: if (__elemsbefore >= difference_type(__n))
23866: {
23866: iterator __start_n = (this->_M_impl._M_start
23866: + difference_type(__n));
23866: std::__uninitialized_move_a(this->_M_impl._M_start,
23866: __start_n, __new_start,
23866: _M_get_Tp_allocator());
23866: this->_M_impl._M_start = __new_start;
23866: std::move(__start_n, __pos, __old_start);
23866: std::copy(__first, __last, __pos - difference_type(__n));
23866: }
23866: else
23866: {
23866: _ForwardIterator __mid = __first;
23866: std::advance(__mid, difference_type(__n) - __elemsbefore);
23866: std::__uninitialized_move_copy(this->_M_impl._M_start,
23866: __pos, __first, __mid,
23866: __new_start,
23866: _M_get_Tp_allocator());
23866: this->_M_impl._M_start = __new_start;
23866: std::copy(__mid, __last, __old_start);
23866: }
23866: }
23866: catch(...)
23866: {
23866: _M_destroy_nodes(__new_start._M_node,
23866: this->_M_impl._M_start._M_node);
23866: throw;
23866: }
23866: }
23866: else
23866: {
23866: iterator __new_finish = _M_reserve_elements_at_back(__n);
23866: iterator __old_finish = this->_M_impl._M_finish;
23866: const difference_type __elemsafter =
23866: difference_type(__length) - __elemsbefore;
23866: __pos = this->_M_impl._M_finish - __elemsafter;
23866: try
23866: {
23866: if (__elemsafter > difference_type(__n))
23866: {
23866: iterator __finish_n = (this->_M_impl._M_finish
23866: - difference_type(__n));
23866: std::__uninitialized_move_a(__finish_n,
23866: this->_M_impl._M_finish,
23866: this->_M_impl._M_finish,
23866: _M_get_Tp_allocator());
23866: this->_M_impl._M_finish = __new_finish;
23866: std::move_backward(__pos, __finish_n, __old_finish);
23866: std::copy(__first, __last, __pos);
23866: }
23866: else
23866: {
23866: _ForwardIterator __mid = __first;
23866: std::advance(__mid, __elemsafter);
23866: std::__uninitialized_copy_move(__mid, __last, __pos,
23866: this->_M_impl._M_finish,
23866: this->_M_impl._M_finish,
23866: _M_get_Tp_allocator());
23866: this->_M_impl._M_finish = __new_finish;
23866: std::copy(__first, __mid, __pos);
23866: }
23866: }
23866: catch(...)
23866: {
23866: _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1,
23866: __new_finish._M_node + 1);
23866: throw;
23866: }
23866: }
23866: }
23866:
23866: template<typename _Tp, typename _Alloc>
23866: void
23866: deque<_Tp, _Alloc>::
23866: _M_destroy_data_aux(iterator __first, iterator __last)
23866: {
23866: for (_Map_pointer __node = __first._M_node + 1;
23866: __node < __last._M_node; ++__node)
23866: std::_Destroy(*__node, *__node + _S_buffer_size(),
23866: _M_get_Tp_allocator());
23866:
23866: if (__first._M_node != __last._M_node)
23866: {
23866: std::_Destroy(__first._M_cur, __first._M_last,
23866: _M_get_Tp_allocator());
23866: std::_Destroy(__last._M_first, __last._M_cur,
23866: _M_get_Tp_allocator());
23866: }
23866: else
23866: std::_Destroy(__first._M_cur, __last._M_cur,
23866: _M_get_Tp_allocator());
23866: }
23866:
23866: template <typename _Tp, typename _Alloc>
23866: void
23866: deque<_Tp, _Alloc>::
23866: _M_new_elements_at_front(size_type __new_elems)
23866: {
23866: if (this->max_size() - this->size() < __new_elems)
23866: __throw_length_error(("deque::_M_new_elements_at_front"));
23866:
23866: const size_type __new_nodes = ((__new_elems + _S_buffer_size() - 1)
23866: / _S_buffer_size());
23866: _M_reserve_map_at_front(__new_nodes);
23866: size_type __i;
23866: try
23866: {
23866: for (__i = 1; __i <= __new_nodes; ++__i)
23866: *(this->_M_impl._M_start._M_node - __i) = this->_M_allocate_node();
23866: }
23866: catch(...)
23866: {
23866: for (size_type __j = 1; __j < __i; ++__j)
23866: _M_deallocate_node(*(this->_M_impl._M_start._M_node - __j));
23866: throw;
23866: }
23866: }
23866:
23866: template <typename _Tp, typename _Alloc>
23866: void
23866: deque<_Tp, _Alloc>::
23866: _M_new_elements_at_back(size_type __new_elems)
23866: {
23866: if (this->max_size() - this->size() < __new_elems)
23866: __throw_length_error(("deque::_M_new_elements_at_back"));
23866:
23866: const size_type __new_nodes = ((__new_elems + _S_buffer_size() - 1)
23866: / _S_buffer_size());
23866: _M_reserve_map_at_back(__new_nodes);
23866: size_type __i;
23866: try
23866: {
23866: for (__i = 1; __i <= __new_nodes; ++__i)
23866: *(this->_M_impl._M_finish._M_node + __i) = this->_M_allocate_node();
23866: }
23866: catch(...)
23866: {
23866: for (size_type __j = 1; __j < __i; ++__j)
23866: _M_deallocate_node(*(this->_M_impl._M_finish._M_node + __j));
23866: throw;
23866: }
23866: }
23866:
23866: template <typename _Tp, typename _Alloc>
23866: void
23866: deque<_Tp, _Alloc>::
23866: _M_reallocate_map(size_type __nodes_to_add, bool __add_at_front)
23866: {
23866: const size_type __old_num_nodes
23866: = this->_M_impl._M_finish._M_node - this->_M_impl._M_start._M_node + 1;
23866: const size_type __new_num_nodes = __old_num_nodes + __nodes_to_add;
23866:
23866: _Map_pointer __new_nstart;
23866: if (this->_M_impl._M_map_size > 2 * __new_num_nodes)
23866: {
23866: __new_nstart = this->_M_impl._M_map + (this->_M_impl._M_map_size
23866: - __new_num_nodes) / 2
23866: + (__add_at_front ? __nodes_to_add : 0);
23866: if (__new_nstart < this->_M_impl._M_start._M_node)
23866: std::copy(this->_M_impl._M_start._M_node,
23866: this->_M_impl._M_finish._M_node + 1,
23866: __new_nstart);
23866: else
23866: std::copy_backward(this->_M_impl._M_start._M_node,
23866: this->_M_impl._M_finish._M_node + 1,
23866: __new_nstart + __old_num_nodes);
23866: }
23866: else
23866: {
23866: size_type __new_map_size = this->_M_impl._M_map_size
23866: + std::max(this->_M_impl._M_map_size,
23866: __nodes_to_add) + 2;
23866:
23866: _Map_pointer __new_map = this->_M_allocate_map(__new_map_size);
23866: __new_nstart = __new_map + (__new_map_size - __new_num_nodes) / 2
23866: + (__add_at_front ? __nodes_to_add : 0);
23866: std::copy(this->_M_impl._M_start._M_node,
23866: this->_M_impl._M_finish._M_node + 1,
23866: __new_nstart);
23866: _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size);
23866:
23866: this->_M_impl._M_map = __new_map;
23866: this->_M_impl._M_map_size = __new_map_size;
23866: }
23866:
23866: this->_M_impl._M_start._M_set_node(__new_nstart);
23866: this->_M_impl._M_finish._M_set_node(__new_nstart + __old_num_nodes - 1);
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp, typename _VTp>
23866: void
23866: __fill_a1(const std::_Deque_iterator<_Tp, _Tp&, _Tp*>& __first,
23866: const std::_Deque_iterator<_Tp, _Tp&, _Tp*>& __last,
23866: const _VTp& __value)
23866: {
23866: typedef std::_Deque_iterator<_Tp, _Tp&, _Tp*> _Iter;
23866: if (__first._M_node != __last._M_node)
23866: {
23866: std::__fill_a1(__first._M_cur, __first._M_last, __value);
23866:
23866: for (typename _Iter::_Map_pointer __node = __first._M_node + 1;
23866: __node < __last._M_node; ++__node)
23866: std::__fill_a1(*__node, *__node + _Iter::_S_buffer_size(), __value);
23866:
23866: std::__fill_a1(__last._M_first, __last._M_cur, __value);
23866: }
23866: else
23866: std::__fill_a1(__first._M_cur, __last._M_cur, __value);
23866: }
23866:
23866: template<bool _IsMove,
23866: typename _Tp, typename _Ref, typename _Ptr, typename _OI>
23866: _OI
23866: __copy_move_dit(std::_Deque_iterator<_Tp, _Ref, _Ptr> __first,
23866: std::_Deque_iterator<_Tp, _Ref, _Ptr> __last,
23866: _OI __result)
23866: {
23866: typedef std::_Deque_iterator<_Tp, _Ref, _Ptr> _Iter;
23866: if (__first._M_node != __last._M_node)
23866: {
23866: __result
23866: = std::__copy_move_a1<_IsMove>(__first._M_cur, __first._M_last,
23866: __result);
23866:
23866: for (typename _Iter::_Map_pointer __node = __first._M_node + 1;
23866: __node != __last._M_node; ++__node)
23866: __result
23866: = std::__copy_move_a1<_IsMove>(*__node,
23866: *__node + _Iter::_S_buffer_size(),
23866: __result);
23866:
23866: return std::__copy_move_a1<_IsMove>(__last._M_first, __last._M_cur,
23866: __result);
23866: }
23866:
23866: return std::__copy_move_a1<_IsMove>(__first._M_cur, __last._M_cur,
23866: __result);
23866: }
23866:
23866: template<bool _IsMove,
23866: typename _Tp, typename _Ref, typename _Ptr, typename _OI>
23866: _OI
23866: __copy_move_a1(std::_Deque_iterator<_Tp, _Ref, _Ptr> __first,
23866: std::_Deque_iterator<_Tp, _Ref, _Ptr> __last,
23866: _OI __result)
23866: { return __copy_move_dit<_IsMove>(__first, __last, __result); }
23866:
23866: template<bool _IsMove,
23866: typename _ITp, typename _IRef, typename _IPtr, typename _OTp>
23866: std::_Deque_iterator<_OTp, _OTp&, _OTp*>
23866: __copy_move_a1(std::_Deque_iterator<_ITp, _IRef, _IPtr> __first,
23866: std::_Deque_iterator<_ITp, _IRef, _IPtr> __last,
23866: std::_Deque_iterator<_OTp, _OTp&, _OTp*> __result)
23866: { return __copy_move_dit<_IsMove>(__first, __last, __result); }
23866:
23866: template<bool _IsMove, typename _II, typename _Tp>
23866: typename __gnu_cxx::__enable_if<
23866: __is_random_access_iter<_II>::__value,
23866: std::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type
23866: __copy_move_a1(_II __first, _II __last,
23866: std::_Deque_iterator<_Tp, _Tp&, _Tp*> __result)
23866: {
23866: typedef std::_Deque_iterator<_Tp, _Tp&, _Tp*> _Iter;
23866: typedef typename _Iter::difference_type difference_type;
23866:
23866: difference_type __len = __last - __first;
23866: while (__len > 0)
23866: {
23866: const difference_type __clen
23866: = std::min(__len, __result._M_last - __result._M_cur);
23866: std::__copy_move_a1<_IsMove>(__first, __first + __clen,
23866: __result._M_cur);
23866:
23866: __first += __clen;
23866: __result += __clen;
23866: __len -= __clen;
23866: }
23866:
23866: return __result;
23866: }
23866:
23866: template<bool _IsMove,
23866: typename _Tp, typename _Ref, typename _Ptr, typename _OI>
23866: _OI
23866: __copy_move_backward_dit(
23866: std::_Deque_iterator<_Tp, _Ref, _Ptr> __first,
23866: std::_Deque_iterator<_Tp, _Ref, _Ptr> __last,
23866: _OI __result)
23866: {
23866: typedef std::_Deque_iterator<_Tp, _Ref, _Ptr> _Iter;
23866: if (__first._M_node != __last._M_node)
23866: {
23866: __result = std::__copy_move_backward_a1<_IsMove>(
23866: __last._M_first, __last._M_cur, __result);
23866:
23866: for (typename _Iter::_Map_pointer __node = __last._M_node - 1;
23866: __node != __first._M_node; --__node)
23866: __result = std::__copy_move_backward_a1<_IsMove>(
23866: *__node, *__node + _Iter::_S_buffer_size(), __result);
23866:
23866: return std::__copy_move_backward_a1<_IsMove>(
23866: __first._M_cur, __first._M_last, __result);
23866: }
23866:
23866: return std::__copy_move_backward_a1<_IsMove>(
23866: __first._M_cur, __last._M_cur, __result);
23866: }
23866:
23866: template<bool _IsMove,
23866: typename _Tp, typename _Ref, typename _Ptr, typename _OI>
23866: _OI
23866: __copy_move_backward_a1(
23866: std::_Deque_iterator<_Tp, _Ref, _Ptr> __first,
23866: std::_Deque_iterator<_Tp, _Ref, _Ptr> __last,
23866: _OI __result)
23866: { return __copy_move_backward_dit<_IsMove>(__first, __last, __result); }
23866:
23866: template<bool _IsMove,
23866: typename _ITp, typename _IRef, typename _IPtr, typename _OTp>
23866: std::_Deque_iterator<_OTp, _OTp&, _OTp*>
23866: __copy_move_backward_a1(
23866: std::_Deque_iterator<_ITp, _IRef, _IPtr> __first,
23866: std::_Deque_iterator<_ITp, _IRef, _IPtr> __last,
23866: std::_Deque_iterator<_OTp, _OTp&, _OTp*> __result)
23866: { return __copy_move_backward_dit<_IsMove>(__first, __last, __result); }
23866:
23866: template<bool _IsMove, typename _II, typename _Tp>
23866: typename __gnu_cxx::__enable_if<
23866: __is_random_access_iter<_II>::__value,
23866: std::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type
23866: __copy_move_backward_a1(_II __first, _II __last,
23866: std::_Deque_iterator<_Tp, _Tp&, _Tp*> __result)
23866: {
23866: typedef std::_Deque_iterator<_Tp, _Tp&, _Tp*> _Iter;
23866: typedef typename _Iter::difference_type difference_type;
23866:
23866: difference_type __len = __last - __first;
23866: while (__len > 0)
23866: {
23866: difference_type __rlen = __result._M_cur - __result._M_first;
23866: _Tp* __rend = __result._M_cur;
23866: if (!__rlen)
23866: {
23866: __rlen = _Iter::_S_buffer_size();
23866: __rend = *(__result._M_node - 1) + __rlen;
23866: }
23866:
23866: const difference_type __clen = std::min(__len, __rlen);
23866: std::__copy_move_backward_a1<_IsMove>(__last - __clen, __last, __rend);
23866:
23866: __last -= __clen;
23866: __result -= __clen;
23866: __len -= __clen;
23866: }
23866:
23866: return __result;
23866: }
23866:
23866: template<typename _Tp, typename _Ref, typename _Ptr, typename _II>
23866: bool
23866: __equal_dit(
23866: const std::_Deque_iterator<_Tp, _Ref, _Ptr>& __first1,
23866: const std::_Deque_iterator<_Tp, _Ref, _Ptr>& __last1,
23866: _II __first2)
23866: {
23866: typedef std::_Deque_iterator<_Tp, _Ref, _Ptr> _Iter;
23866: if (__first1._M_node != __last1._M_node)
23866: {
23866: if (!std::__equal_aux1(__first1._M_cur, __first1._M_last, __first2))
23866: return false;
23866:
23866: __first2 += __first1._M_last - __first1._M_cur;
23866: for (typename _Iter::_Map_pointer __node = __first1._M_node + 1;
23866: __node != __last1._M_node;
23866: __first2 += _Iter::_S_buffer_size(), ++__node)
23866: if (!std::__equal_aux1(*__node, *__node + _Iter::_S_buffer_size(),
23866: __first2))
23866: return false;
23866:
23866: return std::__equal_aux1(__last1._M_first, __last1._M_cur, __first2);
23866: }
23866:
23866: return std::__equal_aux1(__first1._M_cur, __last1._M_cur, __first2);
23866: }
23866:
23866: template<typename _Tp, typename _Ref, typename _Ptr, typename _II>
23866: typename __gnu_cxx::__enable_if<
23866: __is_random_access_iter<_II>::__value, bool>::__type
23866: __equal_aux1(std::_Deque_iterator<_Tp, _Ref, _Ptr> __first1,
23866: std::_Deque_iterator<_Tp, _Ref, _Ptr> __last1,
23866: _II __first2)
23866: { return std::__equal_dit(__first1, __last1, __first2); }
23866:
23866: template<typename _Tp1, typename _Ref1, typename _Ptr1,
23866: typename _Tp2, typename _Ref2, typename _Ptr2>
23866: bool
23866: __equal_aux1(std::_Deque_iterator<_Tp1, _Ref1, _Ptr1> __first1,
23866: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1> __last1,
23866: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2> __first2)
23866: { return std::__equal_dit(__first1, __last1, __first2); }
23866:
23866: template<typename _II, typename _Tp, typename _Ref, typename _Ptr>
23866: typename __gnu_cxx::__enable_if<
23866: __is_random_access_iter<_II>::__value, bool>::__type
23866: __equal_aux1(_II __first1, _II __last1,
23866: std::_Deque_iterator<_Tp, _Ref, _Ptr> __first2)
23866: {
23866: typedef std::_Deque_iterator<_Tp, _Ref, _Ptr> _Iter;
23866: typedef typename _Iter::difference_type difference_type;
23866:
23866: difference_type __len = __last1 - __first1;
23866: while (__len > 0)
23866: {
23866: const difference_type __clen
23866: = std::min(__len, __first2._M_last - __first2._M_cur);
23866: if (!std::__equal_aux1(__first1, __first1 + __clen, __first2._M_cur))
23866: return false;
23866:
23866: __first1 += __clen;
23866: __len -= __clen;
23866: __first2 += __clen;
23866: }
23866:
23866: return true;
23866: }
23866:
23866:
23866: }
23866: # 70 "/usr/include/c++/10/deque" 2 3
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: namespace pmr
23866: {
23866: template<typename _Tp> class polymorphic_allocator;
23866: template<typename _Tp>
23866: using deque = std::deque<_Tp, polymorphic_allocator<_Tp>>;
23866: }
23866:
23866: }
23866: # 15 "/usr/include/boost/algorithm/string/find_format.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/algorithm/string/detail/find_format.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/detail/find_format.hpp" 3 4
23866: #define BOOST_STRING_FIND_FORMAT_DETAIL_HPP
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/algorithm/string/detail/find_format_store.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/detail/find_format_store.hpp" 3 4
23866: #define BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace algorithm {
23866: namespace detail {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<
23866: typename ForwardIteratorT,
23866: typename FormatterT,
23866: typename FormatResultT >
23866: class find_format_store :
23866: public iterator_range<ForwardIteratorT>
23866: {
23866: public:
23866:
23866: typedef iterator_range<ForwardIteratorT> base_type;
23866: typedef FormatterT formatter_type;
23866: typedef FormatResultT format_result_type;
23866:
23866: public:
23866:
23866: find_format_store(
23866: const base_type& FindResult,
23866: const format_result_type& FormatResult,
23866: const formatter_type& Formatter ) :
23866: base_type(FindResult),
23866: m_FormatResult(FormatResult),
23866: m_Formatter(Formatter) {}
23866:
23866:
23866: template< typename FindResultT >
23866: find_format_store& operator=( FindResultT FindResult )
23866: {
23866: iterator_range<ForwardIteratorT>::operator=(FindResult);
23866: if( !this->empty() ) {
23866: m_FormatResult=m_Formatter(FindResult);
23866: }
23866:
23866: return *this;
23866: }
23866:
23866:
23866: const format_result_type& format_result()
23866: {
23866: return m_FormatResult;
23866: }
23866:
23866: private:
23866: format_result_type m_FormatResult;
23866: const formatter_type& m_Formatter;
23866: };
23866:
23866: template<typename InputT, typename FindResultT>
23866: bool check_find_result(InputT&, FindResultT& FindResult)
23866: {
23866: typedef typename
23866: range_const_iterator<InputT>::type input_iterator_type;
23866: iterator_range<input_iterator_type> ResultRange(FindResult);
23866: return !ResultRange.empty();
23866: }
23866:
23866:
23866:
23866:
23866: }
23866: }
23866: }
23866: # 19 "/usr/include/boost/algorithm/string/detail/find_format.hpp" 2 3 4
23866: # 1 "/usr/include/boost/algorithm/string/detail/replace_storage.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/detail/replace_storage.hpp" 3 4
23866: #define BOOST_STRING_REPLACE_STORAGE_DETAIL_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace algorithm {
23866: namespace detail {
23866:
23866:
23866:
23866: template< typename StorageT, typename OutputIteratorT >
23866: inline OutputIteratorT move_from_storage(
23866: StorageT& Storage,
23866: OutputIteratorT DestBegin,
23866: OutputIteratorT DestEnd )
23866: {
23866: OutputIteratorT OutputIt=DestBegin;
23866:
23866: while( !Storage.empty() && OutputIt!=DestEnd )
23866: {
23866: *OutputIt=Storage.front();
23866: Storage.pop_front();
23866: ++OutputIt;
23866: }
23866:
23866: return OutputIt;
23866: }
23866:
23866: template< typename StorageT, typename WhatT >
23866: inline void copy_to_storage(
23866: StorageT& Storage,
23866: const WhatT& What )
23866: {
23866: Storage.insert( Storage.end(), ::boost::begin(What), ::boost::end(What) );
23866: }
23866:
23866:
23866:
23866:
23866: template< bool HasStableIterators >
23866: struct process_segment_helper
23866: {
23866:
23866: template<
23866: typename StorageT,
23866: typename InputT,
23866: typename ForwardIteratorT >
23866: ForwardIteratorT operator()(
23866: StorageT& Storage,
23866: InputT& ,
23866: ForwardIteratorT InsertIt,
23866: ForwardIteratorT SegmentBegin,
23866: ForwardIteratorT SegmentEnd )
23866: {
23866:
23866: ForwardIteratorT It=::boost::algorithm::detail::move_from_storage( Storage, InsertIt, SegmentBegin );
23866:
23866:
23866:
23866:
23866:
23866:
23866: if( Storage.empty() )
23866: {
23866: if( It==SegmentBegin )
23866: {
23866:
23866: return SegmentEnd;
23866: }
23866: else
23866: {
23866:
23866: return std::copy( SegmentBegin, SegmentEnd, It );
23866: }
23866: }
23866: else
23866: {
23866:
23866: while( It!=SegmentEnd )
23866: {
23866:
23866: Storage.push_back( *It );
23866:
23866: *It=Storage.front();
23866: Storage.pop_front();
23866:
23866:
23866: ++It;
23866: }
23866:
23866: return It;
23866: }
23866: }
23866: };
23866:
23866: template<>
23866: struct process_segment_helper< true >
23866: {
23866:
23866: template<
23866: typename StorageT,
23866: typename InputT,
23866: typename ForwardIteratorT >
23866: ForwardIteratorT operator()(
23866: StorageT& Storage,
23866: InputT& Input,
23866: ForwardIteratorT InsertIt,
23866: ForwardIteratorT SegmentBegin,
23866: ForwardIteratorT SegmentEnd )
23866:
23866: {
23866:
23866: ::boost::algorithm::detail::replace( Input, InsertIt, SegmentBegin, Storage );
23866:
23866: Storage.clear();
23866:
23866: return SegmentEnd;
23866: }
23866: };
23866:
23866:
23866: template<
23866: typename StorageT,
23866: typename InputT,
23866: typename ForwardIteratorT >
23866: inline ForwardIteratorT process_segment(
23866: StorageT& Storage,
23866: InputT& Input,
23866: ForwardIteratorT InsertIt,
23866: ForwardIteratorT SegmentBegin,
23866: ForwardIteratorT SegmentEnd )
23866: {
23866: return
23866: process_segment_helper<
23866: has_stable_iterators<InputT>::value>()(
23866: Storage, Input, InsertIt, SegmentBegin, SegmentEnd );
23866: }
23866:
23866:
23866: }
23866: }
23866: }
23866: # 20 "/usr/include/boost/algorithm/string/detail/find_format.hpp" 2 3 4
23866:
23866: namespace boost {
23866: namespace algorithm {
23866: namespace detail {
23866:
23866:
23866:
23866: template<
23866: typename OutputIteratorT,
23866: typename InputT,
23866: typename FormatterT,
23866: typename FindResultT,
23866: typename FormatResultT >
23866: inline OutputIteratorT find_format_copy_impl2(
23866: OutputIteratorT Output,
23866: const InputT& Input,
23866: FormatterT Formatter,
23866: const FindResultT& FindResult,
23866: const FormatResultT& FormatResult )
23866: {
23866: typedef find_format_store<
23866: typename
23866: range_const_iterator<InputT>::type,
23866: FormatterT,
23866: FormatResultT > store_type;
23866:
23866:
23866: store_type M( FindResult, FormatResult, Formatter );
23866:
23866: if ( !M )
23866: {
23866:
23866: Output = std::copy( ::boost::begin(Input), ::boost::end(Input), Output );
23866: return Output;
23866: }
23866:
23866:
23866: Output = std::copy( ::boost::begin(Input), ::boost::begin(M), Output );
23866:
23866:
23866: Output = std::copy( ::boost::begin(M.format_result()), ::boost::end(M.format_result()), Output );
23866:
23866: Output = std::copy( M.end(), ::boost::end(Input), Output );
23866:
23866: return Output;
23866: }
23866:
23866: template<
23866: typename OutputIteratorT,
23866: typename InputT,
23866: typename FormatterT,
23866: typename FindResultT >
23866: inline OutputIteratorT find_format_copy_impl(
23866: OutputIteratorT Output,
23866: const InputT& Input,
23866: FormatterT Formatter,
23866: const FindResultT& FindResult )
23866: {
23866: if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
23866: return ::boost::algorithm::detail::find_format_copy_impl2(
23866: Output,
23866: Input,
23866: Formatter,
23866: FindResult,
23866: Formatter(FindResult) );
23866: } else {
23866: return std::copy( ::boost::begin(Input), ::boost::end(Input), Output );
23866: }
23866: }
23866:
23866:
23866:
23866:
23866: template<
23866: typename InputT,
23866: typename FormatterT,
23866: typename FindResultT,
23866: typename FormatResultT >
23866: inline InputT find_format_copy_impl2(
23866: const InputT& Input,
23866: FormatterT Formatter,
23866: const FindResultT& FindResult,
23866: const FormatResultT& FormatResult)
23866: {
23866: typedef find_format_store<
23866: typename
23866: range_const_iterator<InputT>::type,
23866: FormatterT,
23866: FormatResultT > store_type;
23866:
23866:
23866: store_type M( FindResult, FormatResult, Formatter );
23866:
23866: if ( !M )
23866: {
23866:
23866: return InputT( Input );
23866: }
23866:
23866: InputT Output;
23866:
23866: boost::algorithm::detail::insert( Output, ::boost::end(Output), ::boost::begin(Input), M.begin() );
23866:
23866: boost::algorithm::detail::insert( Output, ::boost::end(Output), M.format_result() );
23866:
23866: boost::algorithm::detail::insert( Output, ::boost::end(Output), M.end(), ::boost::end(Input) );
23866:
23866: return Output;
23866: }
23866:
23866: template<
23866: typename InputT,
23866: typename FormatterT,
23866: typename FindResultT >
23866: inline InputT find_format_copy_impl(
23866: const InputT& Input,
23866: FormatterT Formatter,
23866: const FindResultT& FindResult)
23866: {
23866: if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
23866: return ::boost::algorithm::detail::find_format_copy_impl2(
23866: Input,
23866: Formatter,
23866: FindResult,
23866: Formatter(FindResult) );
23866: } else {
23866: return Input;
23866: }
23866: }
23866:
23866:
23866:
23866: template<
23866: typename InputT,
23866: typename FormatterT,
23866: typename FindResultT,
23866: typename FormatResultT >
23866: inline void find_format_impl2(
23866: InputT& Input,
23866: FormatterT Formatter,
23866: const FindResultT& FindResult,
23866: const FormatResultT& FormatResult)
23866: {
23866: typedef find_format_store<
23866: typename
23866: range_iterator<InputT>::type,
23866: FormatterT,
23866: FormatResultT > store_type;
23866:
23866:
23866: store_type M( FindResult, FormatResult, Formatter );
23866:
23866: if ( !M )
23866: {
23866:
23866: return;
23866: }
23866:
23866:
23866: ::boost::algorithm::detail::replace( Input, M.begin(), M.end(), M.format_result() );
23866: }
23866:
23866: template<
23866: typename InputT,
23866: typename FormatterT,
23866: typename FindResultT >
23866: inline void find_format_impl(
23866: InputT& Input,
23866: FormatterT Formatter,
23866: const FindResultT& FindResult)
23866: {
23866: if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
23866: ::boost::algorithm::detail::find_format_impl2(
23866: Input,
23866: Formatter,
23866: FindResult,
23866: Formatter(FindResult) );
23866: }
23866: }
23866:
23866: }
23866: }
23866: }
23866: # 23 "/usr/include/boost/algorithm/string/find_format.hpp" 2 3 4
23866: # 1 "/usr/include/boost/algorithm/string/detail/find_format_all.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/detail/find_format_all.hpp" 3 4
23866: #define BOOST_STRING_FIND_FORMAT_ALL_DETAIL_HPP
23866: # 21 "/usr/include/boost/algorithm/string/detail/find_format_all.hpp" 3 4
23866: namespace boost {
23866: namespace algorithm {
23866: namespace detail {
23866:
23866:
23866:
23866: template<
23866: typename OutputIteratorT,
23866: typename InputT,
23866: typename FinderT,
23866: typename FormatterT,
23866: typename FindResultT,
23866: typename FormatResultT >
23866: inline OutputIteratorT find_format_all_copy_impl2(
23866: OutputIteratorT Output,
23866: const InputT& Input,
23866: FinderT Finder,
23866: FormatterT Formatter,
23866: const FindResultT& FindResult,
23866: const FormatResultT& FormatResult )
23866: {
23866: typedef typename
23866: range_const_iterator<InputT>::type input_iterator_type;
23866:
23866: typedef find_format_store<
23866: input_iterator_type,
23866: FormatterT,
23866: FormatResultT > store_type;
23866:
23866:
23866: store_type M( FindResult, FormatResult, Formatter );
23866:
23866:
23866: input_iterator_type LastMatch=::boost::begin(Input);
23866:
23866:
23866: while( M )
23866: {
23866:
23866: Output = std::copy( LastMatch, M.begin(), Output );
23866:
23866: Output = std::copy( ::boost::begin(M.format_result()), ::boost::end(M.format_result()), Output );
23866:
23866:
23866: LastMatch=M.end();
23866: M=Finder( LastMatch, ::boost::end(Input) );
23866: }
23866:
23866:
23866: Output = std::copy( LastMatch, ::boost::end(Input), Output );
23866:
23866: return Output;
23866: }
23866:
23866: template<
23866: typename OutputIteratorT,
23866: typename InputT,
23866: typename FinderT,
23866: typename FormatterT,
23866: typename FindResultT >
23866: inline OutputIteratorT find_format_all_copy_impl(
23866: OutputIteratorT Output,
23866: const InputT& Input,
23866: FinderT Finder,
23866: FormatterT Formatter,
23866: const FindResultT& FindResult )
23866: {
23866: if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
23866: return ::boost::algorithm::detail::find_format_all_copy_impl2(
23866: Output,
23866: Input,
23866: Finder,
23866: Formatter,
23866: FindResult,
23866: Formatter(FindResult) );
23866: } else {
23866: return std::copy( ::boost::begin(Input), ::boost::end(Input), Output );
23866: }
23866: }
23866:
23866:
23866:
23866: template<
23866: typename InputT,
23866: typename FinderT,
23866: typename FormatterT,
23866: typename FindResultT,
23866: typename FormatResultT >
23866: inline InputT find_format_all_copy_impl2(
23866: const InputT& Input,
23866: FinderT Finder,
23866: FormatterT Formatter,
23866: const FindResultT& FindResult,
23866: const FormatResultT& FormatResult)
23866: {
23866: typedef typename
23866: range_const_iterator<InputT>::type input_iterator_type;
23866:
23866: typedef find_format_store<
23866: input_iterator_type,
23866: FormatterT,
23866: FormatResultT > store_type;
23866:
23866:
23866: store_type M( FindResult, FormatResult, Formatter );
23866:
23866:
23866: input_iterator_type LastMatch=::boost::begin(Input);
23866:
23866:
23866: InputT Output;
23866:
23866:
23866: while( M )
23866: {
23866:
23866: boost::algorithm::detail::insert( Output, ::boost::end(Output), LastMatch, M.begin() );
23866:
23866: boost::algorithm::detail::insert( Output, ::boost::end(Output), M.format_result() );
23866:
23866:
23866: LastMatch=M.end();
23866: M=Finder( LastMatch, ::boost::end(Input) );
23866: }
23866:
23866:
23866: ::boost::algorithm::detail::insert( Output, ::boost::end(Output), LastMatch, ::boost::end(Input) );
23866:
23866: return Output;
23866: }
23866:
23866: template<
23866: typename InputT,
23866: typename FinderT,
23866: typename FormatterT,
23866: typename FindResultT >
23866: inline InputT find_format_all_copy_impl(
23866: const InputT& Input,
23866: FinderT Finder,
23866: FormatterT Formatter,
23866: const FindResultT& FindResult)
23866: {
23866: if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
23866: return ::boost::algorithm::detail::find_format_all_copy_impl2(
23866: Input,
23866: Finder,
23866: Formatter,
23866: FindResult,
23866: Formatter(FindResult) );
23866: } else {
23866: return Input;
23866: }
23866: }
23866:
23866:
23866:
23866: template<
23866: typename InputT,
23866: typename FinderT,
23866: typename FormatterT,
23866: typename FindResultT,
23866: typename FormatResultT >
23866: inline void find_format_all_impl2(
23866: InputT& Input,
23866: FinderT Finder,
23866: FormatterT Formatter,
23866: FindResultT FindResult,
23866: FormatResultT FormatResult)
23866: {
23866: typedef typename
23866: range_iterator<InputT>::type input_iterator_type;
23866: typedef find_format_store<
23866: input_iterator_type,
23866: FormatterT,
23866: FormatResultT > store_type;
23866:
23866:
23866: store_type M( FindResult, FormatResult, Formatter );
23866:
23866:
23866: std::deque<
23866: typename range_value<InputT>::type> Storage;
23866:
23866:
23866: input_iterator_type InsertIt=::boost::begin(Input);
23866: input_iterator_type SearchIt=::boost::begin(Input);
23866:
23866: while( M )
23866: {
23866:
23866: InsertIt=process_segment(
23866: Storage,
23866: Input,
23866: InsertIt,
23866: SearchIt,
23866: M.begin() );
23866:
23866:
23866: SearchIt=M.end();
23866:
23866:
23866: ::boost::algorithm::detail::copy_to_storage( Storage, M.format_result() );
23866:
23866:
23866: M=Finder( SearchIt, ::boost::end(Input) );
23866: }
23866:
23866:
23866: InsertIt=::boost::algorithm::detail::process_segment(
23866: Storage,
23866: Input,
23866: InsertIt,
23866: SearchIt,
23866: ::boost::end(Input) );
23866:
23866: if ( Storage.empty() )
23866: {
23866:
23866: ::boost::algorithm::detail::erase( Input, InsertIt, ::boost::end(Input) );
23866: }
23866: else
23866: {
23866:
23866: ::boost::algorithm::detail::insert( Input, ::boost::end(Input), Storage.begin(), Storage.end() );
23866: }
23866: }
23866:
23866: template<
23866: typename InputT,
23866: typename FinderT,
23866: typename FormatterT,
23866: typename FindResultT >
23866: inline void find_format_all_impl(
23866: InputT& Input,
23866: FinderT Finder,
23866: FormatterT Formatter,
23866: FindResultT FindResult)
23866: {
23866: if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
23866: ::boost::algorithm::detail::find_format_all_impl2(
23866: Input,
23866: Finder,
23866: Formatter,
23866: FindResult,
23866: Formatter(FindResult) );
23866: }
23866: }
23866:
23866: }
23866: }
23866: }
23866: # 24 "/usr/include/boost/algorithm/string/find_format.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace algorithm {
23866: # 52 "/usr/include/boost/algorithm/string/find_format.hpp" 3 4
23866: template<
23866: typename OutputIteratorT,
23866: typename RangeT,
23866: typename FinderT,
23866: typename FormatterT>
23866: inline OutputIteratorT find_format_copy(
23866: OutputIteratorT Output,
23866: const RangeT& Input,
23866: FinderT Finder,
23866: FormatterT Formatter )
23866: {
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( FinderConcept< FinderT, typename range_const_iterator<RangeT>::type> )>::failed> boost_concept_check64 __attribute__((__unused__))
23866:
23866:
23866:
23866: ;
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( FormatterConcept< FormatterT, FinderT,typename range_const_iterator<RangeT>::type> )>::failed> boost_concept_check69 __attribute__((__unused__))
23866:
23866:
23866:
23866: ;
23866:
23866: iterator_range<typename range_const_iterator<RangeT>::type> lit_input(::boost::as_literal(Input));
23866:
23866: return detail::find_format_copy_impl(
23866: Output,
23866: lit_input,
23866: Formatter,
23866: Finder( ::boost::begin(lit_input), ::boost::end(lit_input) ) );
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<
23866: typename SequenceT,
23866: typename FinderT,
23866: typename FormatterT>
23866: inline SequenceT find_format_copy(
23866: const SequenceT& Input,
23866: FinderT Finder,
23866: FormatterT Formatter )
23866: {
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( FinderConcept< FinderT, typename range_const_iterator<SequenceT>::type> )>::failed> boost_concept_check98 __attribute__((__unused__))
23866:
23866:
23866:
23866: ;
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( FormatterConcept< FormatterT, FinderT,typename range_const_iterator<SequenceT>::type> )>::failed> boost_concept_check103 __attribute__((__unused__))
23866:
23866:
23866:
23866: ;
23866:
23866: return detail::find_format_copy_impl(
23866: Input,
23866: Formatter,
23866: Finder(::boost::begin(Input), ::boost::end(Input)));
23866: }
23866: # 124 "/usr/include/boost/algorithm/string/find_format.hpp" 3 4
23866: template<
23866: typename SequenceT,
23866: typename FinderT,
23866: typename FormatterT>
23866: inline void find_format(
23866: SequenceT& Input,
23866: FinderT Finder,
23866: FormatterT Formatter)
23866: {
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( FinderConcept< FinderT, typename range_const_iterator<SequenceT>::type> )>::failed> boost_concept_check134 __attribute__((__unused__))
23866:
23866:
23866:
23866: ;
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( FormatterConcept< FormatterT, FinderT,typename range_const_iterator<SequenceT>::type> )>::failed> boost_concept_check139 __attribute__((__unused__))
23866:
23866:
23866:
23866: ;
23866:
23866: detail::find_format_impl(
23866: Input,
23866: Formatter,
23866: Finder(::boost::begin(Input), ::boost::end(Input)));
23866: }
23866: # 171 "/usr/include/boost/algorithm/string/find_format.hpp" 3 4
23866: template<
23866: typename OutputIteratorT,
23866: typename RangeT,
23866: typename FinderT,
23866: typename FormatterT>
23866: inline OutputIteratorT find_format_all_copy(
23866: OutputIteratorT Output,
23866: const RangeT& Input,
23866: FinderT Finder,
23866: FormatterT Formatter)
23866: {
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( FinderConcept< FinderT, typename range_const_iterator<RangeT>::type> )>::failed> boost_concept_check183 __attribute__((__unused__))
23866:
23866:
23866:
23866: ;
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( FormatterConcept< FormatterT, FinderT,typename range_const_iterator<RangeT>::type> )>::failed> boost_concept_check188 __attribute__((__unused__))
23866:
23866:
23866:
23866: ;
23866:
23866: iterator_range<typename range_const_iterator<RangeT>::type> lit_input(::boost::as_literal(Input));
23866:
23866: return detail::find_format_all_copy_impl(
23866: Output,
23866: lit_input,
23866: Finder,
23866: Formatter,
23866: Finder(::boost::begin(lit_input), ::boost::end(lit_input)));
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<
23866: typename SequenceT,
23866: typename FinderT,
23866: typename FormatterT >
23866: inline SequenceT find_format_all_copy(
23866: const SequenceT& Input,
23866: FinderT Finder,
23866: FormatterT Formatter )
23866: {
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( FinderConcept< FinderT, typename range_const_iterator<SequenceT>::type> )>::failed> boost_concept_check218 __attribute__((__unused__))
23866:
23866:
23866:
23866: ;
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( FormatterConcept< FormatterT, FinderT,typename range_const_iterator<SequenceT>::type> )>::failed> boost_concept_check223 __attribute__((__unused__))
23866:
23866:
23866:
23866: ;
23866:
23866: return detail::find_format_all_copy_impl(
23866: Input,
23866: Finder,
23866: Formatter,
23866: Finder( ::boost::begin(Input), ::boost::end(Input) ) );
23866: }
23866: # 246 "/usr/include/boost/algorithm/string/find_format.hpp" 3 4
23866: template<
23866: typename SequenceT,
23866: typename FinderT,
23866: typename FormatterT >
23866: inline void find_format_all(
23866: SequenceT& Input,
23866: FinderT Finder,
23866: FormatterT Formatter )
23866: {
23866:
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( FinderConcept< FinderT, typename range_const_iterator<SequenceT>::type> )>::failed> boost_concept_check256 __attribute__((__unused__))
23866:
23866:
23866:
23866: ;
23866: typedef ::boost::concepts::detail::instantiate< &::boost::concepts::requirement_<void(*)( FormatterConcept< FormatterT, FinderT,typename range_const_iterator<SequenceT>::type> )>::failed> boost_concept_check261 __attribute__((__unused__))
23866:
23866:
23866:
23866: ;
23866:
23866: detail::find_format_all_impl(
23866: Input,
23866: Finder,
23866: Formatter,
23866: Finder(::boost::begin(Input), ::boost::end(Input)));
23866:
23866: }
23866:
23866: }
23866:
23866:
23866: using algorithm::find_format_copy;
23866: using algorithm::find_format;
23866: using algorithm::find_format_all_copy;
23866: using algorithm::find_format_all;
23866:
23866: }
23866: # 23 "/usr/include/boost/algorithm/string/replace.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/algorithm/string/formatter.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/formatter.hpp" 3 4
23866: #define BOOST_STRING_FORMATTER_HPP
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/algorithm/string/detail/formatter.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/detail/formatter.hpp" 3 4
23866: #define BOOST_STRING_FORMATTER_DETAIL_HPP
23866: # 24 "/usr/include/boost/algorithm/string/detail/formatter.hpp" 3 4
23866: namespace boost {
23866: namespace algorithm {
23866: namespace detail {
23866:
23866:
23866:
23866:
23866: template<typename RangeT>
23866: struct const_formatF
23866: {
23866: private:
23866: typedef typename
23866: range_const_iterator<RangeT>::type format_iterator;
23866: typedef iterator_range<format_iterator> result_type;
23866:
23866: public:
23866:
23866: const_formatF(const RangeT& Format) :
23866: m_Format(::boost::begin(Format), ::boost::end(Format)) {}
23866: # 53 "/usr/include/boost/algorithm/string/detail/formatter.hpp" 3 4
23866: template<typename Range2T>
23866: const result_type& operator()(const Range2T&) const
23866: {
23866: return m_Format;
23866: }
23866:
23866: private:
23866: result_type m_Format;
23866: };
23866:
23866:
23866:
23866:
23866: template<typename RangeT>
23866: struct identity_formatF
23866: {
23866:
23866: template< typename Range2T >
23866: const RangeT& operator()(const Range2T& Replace) const
23866: {
23866: return RangeT(::boost::begin(Replace), ::boost::end(Replace));
23866: }
23866: };
23866:
23866:
23866:
23866:
23866: template< typename CharT >
23866: struct empty_formatF
23866: {
23866: template< typename ReplaceT >
23866: empty_container<CharT> operator()(const ReplaceT&) const
23866: {
23866: return empty_container<CharT>();
23866: }
23866: };
23866:
23866:
23866:
23866:
23866: template<typename FinderT>
23866: struct dissect_formatF
23866: {
23866: public:
23866:
23866: dissect_formatF(FinderT Finder) :
23866: m_Finder(Finder) {}
23866:
23866:
23866: template<typename RangeT>
23866: inline iterator_range<
23866: typename range_const_iterator<RangeT>::type>
23866: operator()(const RangeT& Replace) const
23866: {
23866: return m_Finder(::boost::begin(Replace), ::boost::end(Replace));
23866: }
23866:
23866: private:
23866: FinderT m_Finder;
23866: };
23866:
23866:
23866: }
23866: }
23866: }
23866: # 19 "/usr/include/boost/algorithm/string/formatter.hpp" 2 3 4
23866: # 31 "/usr/include/boost/algorithm/string/formatter.hpp" 3 4
23866: namespace boost {
23866: namespace algorithm {
23866: # 44 "/usr/include/boost/algorithm/string/formatter.hpp" 3 4
23866: template<typename RangeT>
23866: inline detail::const_formatF<
23866: iterator_range<
23866: typename range_const_iterator<RangeT>::type> >
23866: const_formatter(const RangeT& Format)
23866: {
23866: return detail::const_formatF<
23866: iterator_range<
23866: typename range_const_iterator<RangeT>::type> >(::boost::as_literal(Format));
23866: }
23866: # 62 "/usr/include/boost/algorithm/string/formatter.hpp" 3 4
23866: template<typename RangeT>
23866: inline detail::identity_formatF<
23866: iterator_range<
23866: typename range_const_iterator<RangeT>::type> >
23866: identity_formatter()
23866: {
23866: return detail::identity_formatF<
23866: iterator_range<
23866: typename range_const_iterator<RangeT>::type> >();
23866: }
23866: # 82 "/usr/include/boost/algorithm/string/formatter.hpp" 3 4
23866: template<typename RangeT>
23866: inline detail::empty_formatF<
23866: typename range_value<RangeT>::type>
23866: empty_formatter(const RangeT&)
23866: {
23866: return detail::empty_formatF<
23866: typename range_value<RangeT>::type>();
23866: }
23866: # 100 "/usr/include/boost/algorithm/string/formatter.hpp" 3 4
23866: template<typename FinderT>
23866: inline detail::dissect_formatF< FinderT >
23866: dissect_formatter(const FinderT& Finder)
23866: {
23866: return detail::dissect_formatF<FinderT>(Finder);
23866: }
23866:
23866:
23866: }
23866:
23866:
23866: using algorithm::const_formatter;
23866: using algorithm::identity_formatter;
23866: using algorithm::empty_formatter;
23866: using algorithm::dissect_formatter;
23866:
23866: }
23866: # 25 "/usr/include/boost/algorithm/string/replace.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace algorithm {
23866: # 52 "/usr/include/boost/algorithm/string/replace.hpp" 3 4
23866: template<
23866: typename OutputIteratorT,
23866: typename Range1T,
23866: typename Range2T>
23866: inline OutputIteratorT replace_range_copy(
23866: OutputIteratorT Output,
23866: const Range1T& Input,
23866: const iterator_range<
23866: typename
23866: range_const_iterator<Range1T>::type>& SearchRange,
23866: const Range2T& Format)
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Output,
23866: Input,
23866: ::boost::algorithm::range_finder(SearchRange),
23866: ::boost::algorithm::const_formatter(Format));
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename SequenceT, typename RangeT>
23866: inline SequenceT replace_range_copy(
23866: const SequenceT& Input,
23866: const iterator_range<
23866: typename
23866: range_const_iterator<SequenceT>::type>& SearchRange,
23866: const RangeT& Format)
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Input,
23866: ::boost::algorithm::range_finder(SearchRange),
23866: ::boost::algorithm::const_formatter(Format));
23866: }
23866: # 98 "/usr/include/boost/algorithm/string/replace.hpp" 3 4
23866: template<typename SequenceT, typename RangeT>
23866: inline void replace_range(
23866: SequenceT& Input,
23866: const iterator_range<
23866: typename
23866: range_iterator<SequenceT>::type>& SearchRange,
23866: const RangeT& Format)
23866: {
23866: ::boost::algorithm::find_format(
23866: Input,
23866: ::boost::algorithm::range_finder(SearchRange),
23866: ::boost::algorithm::const_formatter(Format));
23866: }
23866: # 130 "/usr/include/boost/algorithm/string/replace.hpp" 3 4
23866: template<
23866: typename OutputIteratorT,
23866: typename Range1T,
23866: typename Range2T,
23866: typename Range3T>
23866: inline OutputIteratorT replace_first_copy(
23866: OutputIteratorT Output,
23866: const Range1T& Input,
23866: const Range2T& Search,
23866: const Range3T& Format)
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Output,
23866: Input,
23866: ::boost::algorithm::first_finder(Search),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename SequenceT, typename Range1T, typename Range2T>
23866: inline SequenceT replace_first_copy(
23866: const SequenceT& Input,
23866: const Range1T& Search,
23866: const Range2T& Format )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Input,
23866: ::boost::algorithm::first_finder(Search),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866: # 173 "/usr/include/boost/algorithm/string/replace.hpp" 3 4
23866: template<typename SequenceT, typename Range1T, typename Range2T>
23866: inline void replace_first(
23866: SequenceT& Input,
23866: const Range1T& Search,
23866: const Range2T& Format )
23866: {
23866: ::boost::algorithm::find_format(
23866: Input,
23866: ::boost::algorithm::first_finder(Search),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866: # 205 "/usr/include/boost/algorithm/string/replace.hpp" 3 4
23866: template<
23866: typename OutputIteratorT,
23866: typename Range1T,
23866: typename Range2T,
23866: typename Range3T>
23866: inline OutputIteratorT ireplace_first_copy(
23866: OutputIteratorT Output,
23866: const Range1T& Input,
23866: const Range2T& Search,
23866: const Range3T& Format,
23866: const std::locale& Loc=std::locale() )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Output,
23866: Input,
23866: ::boost::algorithm::first_finder(Search, is_iequal(Loc)),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename SequenceT, typename Range2T, typename Range1T>
23866: inline SequenceT ireplace_first_copy(
23866: const SequenceT& Input,
23866: const Range2T& Search,
23866: const Range1T& Format,
23866: const std::locale& Loc=std::locale() )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Input,
23866: ::boost::algorithm::first_finder(Search, is_iequal(Loc)),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866: # 252 "/usr/include/boost/algorithm/string/replace.hpp" 3 4
23866: template<typename SequenceT, typename Range1T, typename Range2T>
23866: inline void ireplace_first(
23866: SequenceT& Input,
23866: const Range1T& Search,
23866: const Range2T& Format,
23866: const std::locale& Loc=std::locale() )
23866: {
23866: ::boost::algorithm::find_format(
23866: Input,
23866: ::boost::algorithm::first_finder(Search, is_iequal(Loc)),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866: # 283 "/usr/include/boost/algorithm/string/replace.hpp" 3 4
23866: template<
23866: typename OutputIteratorT,
23866: typename Range1T,
23866: typename Range2T,
23866: typename Range3T>
23866: inline OutputIteratorT replace_last_copy(
23866: OutputIteratorT Output,
23866: const Range1T& Input,
23866: const Range2T& Search,
23866: const Range3T& Format )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Output,
23866: Input,
23866: ::boost::algorithm::last_finder(Search),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename SequenceT, typename Range1T, typename Range2T>
23866: inline SequenceT replace_last_copy(
23866: const SequenceT& Input,
23866: const Range1T& Search,
23866: const Range2T& Format )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Input,
23866: ::boost::algorithm::last_finder(Search),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866: # 326 "/usr/include/boost/algorithm/string/replace.hpp" 3 4
23866: template<typename SequenceT, typename Range1T, typename Range2T>
23866: inline void replace_last(
23866: SequenceT& Input,
23866: const Range1T& Search,
23866: const Range2T& Format )
23866: {
23866: ::boost::algorithm::find_format(
23866: Input,
23866: ::boost::algorithm::last_finder(Search),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866: # 358 "/usr/include/boost/algorithm/string/replace.hpp" 3 4
23866: template<
23866: typename OutputIteratorT,
23866: typename Range1T,
23866: typename Range2T,
23866: typename Range3T>
23866: inline OutputIteratorT ireplace_last_copy(
23866: OutputIteratorT Output,
23866: const Range1T& Input,
23866: const Range2T& Search,
23866: const Range3T& Format,
23866: const std::locale& Loc=std::locale() )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Output,
23866: Input,
23866: ::boost::algorithm::last_finder(Search, is_iequal(Loc)),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename SequenceT, typename Range1T, typename Range2T>
23866: inline SequenceT ireplace_last_copy(
23866: const SequenceT& Input,
23866: const Range1T& Search,
23866: const Range2T& Format,
23866: const std::locale& Loc=std::locale() )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Input,
23866: ::boost::algorithm::last_finder(Search, is_iequal(Loc)),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866: # 405 "/usr/include/boost/algorithm/string/replace.hpp" 3 4
23866: template<typename SequenceT, typename Range1T, typename Range2T>
23866: inline void ireplace_last(
23866: SequenceT& Input,
23866: const Range1T& Search,
23866: const Range2T& Format,
23866: const std::locale& Loc=std::locale() )
23866: {
23866: ::boost::algorithm::find_format(
23866: Input,
23866: ::boost::algorithm::last_finder(Search, is_iequal(Loc)),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866: # 438 "/usr/include/boost/algorithm/string/replace.hpp" 3 4
23866: template<
23866: typename OutputIteratorT,
23866: typename Range1T,
23866: typename Range2T,
23866: typename Range3T>
23866: inline OutputIteratorT replace_nth_copy(
23866: OutputIteratorT Output,
23866: const Range1T& Input,
23866: const Range2T& Search,
23866: int Nth,
23866: const Range3T& Format )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Output,
23866: Input,
23866: ::boost::algorithm::nth_finder(Search, Nth),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename SequenceT, typename Range1T, typename Range2T>
23866: inline SequenceT replace_nth_copy(
23866: const SequenceT& Input,
23866: const Range1T& Search,
23866: int Nth,
23866: const Range2T& Format )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Input,
23866: ::boost::algorithm::nth_finder(Search, Nth),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866: # 485 "/usr/include/boost/algorithm/string/replace.hpp" 3 4
23866: template<typename SequenceT, typename Range1T, typename Range2T>
23866: inline void replace_nth(
23866: SequenceT& Input,
23866: const Range1T& Search,
23866: int Nth,
23866: const Range2T& Format )
23866: {
23866: ::boost::algorithm::find_format(
23866: Input,
23866: ::boost::algorithm::nth_finder(Search, Nth),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866: # 520 "/usr/include/boost/algorithm/string/replace.hpp" 3 4
23866: template<
23866: typename OutputIteratorT,
23866: typename Range1T,
23866: typename Range2T,
23866: typename Range3T>
23866: inline OutputIteratorT ireplace_nth_copy(
23866: OutputIteratorT Output,
23866: const Range1T& Input,
23866: const Range2T& Search,
23866: int Nth,
23866: const Range3T& Format,
23866: const std::locale& Loc=std::locale() )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Output,
23866: Input,
23866: ::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc) ),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename SequenceT, typename Range1T, typename Range2T>
23866: inline SequenceT ireplace_nth_copy(
23866: const SequenceT& Input,
23866: const Range1T& Search,
23866: int Nth,
23866: const Range2T& Format,
23866: const std::locale& Loc=std::locale() )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Input,
23866: ::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866: # 571 "/usr/include/boost/algorithm/string/replace.hpp" 3 4
23866: template<typename SequenceT, typename Range1T, typename Range2T>
23866: inline void ireplace_nth(
23866: SequenceT& Input,
23866: const Range1T& Search,
23866: int Nth,
23866: const Range2T& Format,
23866: const std::locale& Loc=std::locale() )
23866: {
23866: ::boost::algorithm::find_format(
23866: Input,
23866: ::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866: # 603 "/usr/include/boost/algorithm/string/replace.hpp" 3 4
23866: template<
23866: typename OutputIteratorT,
23866: typename Range1T,
23866: typename Range2T,
23866: typename Range3T>
23866: inline OutputIteratorT replace_all_copy(
23866: OutputIteratorT Output,
23866: const Range1T& Input,
23866: const Range2T& Search,
23866: const Range3T& Format )
23866: {
23866: return ::boost::algorithm::find_format_all_copy(
23866: Output,
23866: Input,
23866: ::boost::algorithm::first_finder(Search),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename SequenceT, typename Range1T, typename Range2T>
23866: inline SequenceT replace_all_copy(
23866: const SequenceT& Input,
23866: const Range1T& Search,
23866: const Range2T& Format )
23866: {
23866: return ::boost::algorithm::find_format_all_copy(
23866: Input,
23866: ::boost::algorithm::first_finder(Search),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866: # 646 "/usr/include/boost/algorithm/string/replace.hpp" 3 4
23866: template<typename SequenceT, typename Range1T, typename Range2T>
23866: inline void replace_all(
23866: SequenceT& Input,
23866: const Range1T& Search,
23866: const Range2T& Format )
23866: {
23866: ::boost::algorithm::find_format_all(
23866: Input,
23866: ::boost::algorithm::first_finder(Search),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866: # 678 "/usr/include/boost/algorithm/string/replace.hpp" 3 4
23866: template<
23866: typename OutputIteratorT,
23866: typename Range1T,
23866: typename Range2T,
23866: typename Range3T>
23866: inline OutputIteratorT ireplace_all_copy(
23866: OutputIteratorT Output,
23866: const Range1T& Input,
23866: const Range2T& Search,
23866: const Range3T& Format,
23866: const std::locale& Loc=std::locale() )
23866: {
23866: return ::boost::algorithm::find_format_all_copy(
23866: Output,
23866: Input,
23866: ::boost::algorithm::first_finder(Search, is_iequal(Loc)),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename SequenceT, typename Range1T, typename Range2T>
23866: inline SequenceT ireplace_all_copy(
23866: const SequenceT& Input,
23866: const Range1T& Search,
23866: const Range2T& Format,
23866: const std::locale& Loc=std::locale() )
23866: {
23866: return ::boost::algorithm::find_format_all_copy(
23866: Input,
23866: ::boost::algorithm::first_finder(Search, is_iequal(Loc)),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866: # 725 "/usr/include/boost/algorithm/string/replace.hpp" 3 4
23866: template<typename SequenceT, typename Range1T, typename Range2T>
23866: inline void ireplace_all(
23866: SequenceT& Input,
23866: const Range1T& Search,
23866: const Range2T& Format,
23866: const std::locale& Loc=std::locale() )
23866: {
23866: ::boost::algorithm::find_format_all(
23866: Input,
23866: ::boost::algorithm::first_finder(Search, is_iequal(Loc)),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866: # 760 "/usr/include/boost/algorithm/string/replace.hpp" 3 4
23866: template<
23866: typename OutputIteratorT,
23866: typename Range1T,
23866: typename Range2T>
23866: inline OutputIteratorT replace_head_copy(
23866: OutputIteratorT Output,
23866: const Range1T& Input,
23866: int N,
23866: const Range2T& Format )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Output,
23866: Input,
23866: ::boost::algorithm::head_finder(N),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename SequenceT, typename RangeT>
23866: inline SequenceT replace_head_copy(
23866: const SequenceT& Input,
23866: int N,
23866: const RangeT& Format )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Input,
23866: ::boost::algorithm::head_finder(N),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866: # 806 "/usr/include/boost/algorithm/string/replace.hpp" 3 4
23866: template<typename SequenceT, typename RangeT>
23866: inline void replace_head(
23866: SequenceT& Input,
23866: int N,
23866: const RangeT& Format )
23866: {
23866: ::boost::algorithm::find_format(
23866: Input,
23866: ::boost::algorithm::head_finder(N),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866: # 840 "/usr/include/boost/algorithm/string/replace.hpp" 3 4
23866: template<
23866: typename OutputIteratorT,
23866: typename Range1T,
23866: typename Range2T>
23866: inline OutputIteratorT replace_tail_copy(
23866: OutputIteratorT Output,
23866: const Range1T& Input,
23866: int N,
23866: const Range2T& Format )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Output,
23866: Input,
23866: ::boost::algorithm::tail_finder(N),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename SequenceT, typename RangeT>
23866: inline SequenceT replace_tail_copy(
23866: const SequenceT& Input,
23866: int N,
23866: const RangeT& Format )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Input,
23866: ::boost::algorithm::tail_finder(N),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866: # 886 "/usr/include/boost/algorithm/string/replace.hpp" 3 4
23866: template<typename SequenceT, typename RangeT>
23866: inline void replace_tail(
23866: SequenceT& Input,
23866: int N,
23866: const RangeT& Format )
23866: {
23866: ::boost::algorithm::find_format(
23866: Input,
23866: ::boost::algorithm::tail_finder(N),
23866: ::boost::algorithm::const_formatter(Format) );
23866: }
23866:
23866: }
23866:
23866:
23866: using algorithm::replace_range_copy;
23866: using algorithm::replace_range;
23866: using algorithm::replace_first_copy;
23866: using algorithm::replace_first;
23866: using algorithm::ireplace_first_copy;
23866: using algorithm::ireplace_first;
23866: using algorithm::replace_last_copy;
23866: using algorithm::replace_last;
23866: using algorithm::ireplace_last_copy;
23866: using algorithm::ireplace_last;
23866: using algorithm::replace_nth_copy;
23866: using algorithm::replace_nth;
23866: using algorithm::ireplace_nth_copy;
23866: using algorithm::ireplace_nth;
23866: using algorithm::replace_all_copy;
23866: using algorithm::replace_all;
23866: using algorithm::ireplace_all_copy;
23866: using algorithm::ireplace_all;
23866: using algorithm::replace_head_copy;
23866: using algorithm::replace_head;
23866: using algorithm::replace_tail_copy;
23866: using algorithm::replace_tail;
23866:
23866: }
23866: # 26 "/usr/include/boost/algorithm/string.hpp" 2 3 4
23866: # 1 "/usr/include/boost/algorithm/string/erase.hpp" 1 3 4
23866: # 12 "/usr/include/boost/algorithm/string/erase.hpp" 3 4
23866: #define BOOST_STRING_ERASE_HPP
23866: # 31 "/usr/include/boost/algorithm/string/erase.hpp" 3 4
23866: namespace boost {
23866: namespace algorithm {
23866: # 49 "/usr/include/boost/algorithm/string/erase.hpp" 3 4
23866: template<typename OutputIteratorT, typename RangeT>
23866: inline OutputIteratorT erase_range_copy(
23866: OutputIteratorT Output,
23866: const RangeT& Input,
23866: const iterator_range<
23866: typename
23866: range_const_iterator<RangeT>::type>& SearchRange )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Output,
23866: Input,
23866: ::boost::algorithm::range_finder(SearchRange),
23866: ::boost::algorithm::empty_formatter(Input) );
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename SequenceT>
23866: inline SequenceT erase_range_copy(
23866: const SequenceT& Input,
23866: const iterator_range<
23866: typename
23866: range_const_iterator<SequenceT>::type>& SearchRange )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Input,
23866: ::boost::algorithm::range_finder(SearchRange),
23866: ::boost::algorithm::empty_formatter(Input) );
23866: }
23866: # 89 "/usr/include/boost/algorithm/string/erase.hpp" 3 4
23866: template<typename SequenceT>
23866: inline void erase_range(
23866: SequenceT& Input,
23866: const iterator_range<
23866: typename
23866: range_iterator<SequenceT>::type>& SearchRange )
23866: {
23866: ::boost::algorithm::find_format(
23866: Input,
23866: ::boost::algorithm::range_finder(SearchRange),
23866: ::boost::algorithm::empty_formatter(Input) );
23866: }
23866: # 118 "/usr/include/boost/algorithm/string/erase.hpp" 3 4
23866: template<
23866: typename OutputIteratorT,
23866: typename Range1T,
23866: typename Range2T>
23866: inline OutputIteratorT erase_first_copy(
23866: OutputIteratorT Output,
23866: const Range1T& Input,
23866: const Range2T& Search )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Output,
23866: Input,
23866: ::boost::algorithm::first_finder(Search),
23866: ::boost::algorithm::empty_formatter(Input) );
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename SequenceT, typename RangeT>
23866: inline SequenceT erase_first_copy(
23866: const SequenceT& Input,
23866: const RangeT& Search )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Input,
23866: ::boost::algorithm::first_finder(Search),
23866: ::boost::algorithm::empty_formatter(Input) );
23866: }
23866: # 157 "/usr/include/boost/algorithm/string/erase.hpp" 3 4
23866: template<typename SequenceT, typename RangeT>
23866: inline void erase_first(
23866: SequenceT& Input,
23866: const RangeT& Search )
23866: {
23866: ::boost::algorithm::find_format(
23866: Input,
23866: ::boost::algorithm::first_finder(Search),
23866: ::boost::algorithm::empty_formatter(Input) );
23866: }
23866: # 186 "/usr/include/boost/algorithm/string/erase.hpp" 3 4
23866: template<
23866: typename OutputIteratorT,
23866: typename Range1T,
23866: typename Range2T>
23866: inline OutputIteratorT ierase_first_copy(
23866: OutputIteratorT Output,
23866: const Range1T& Input,
23866: const Range2T& Search,
23866: const std::locale& Loc=std::locale() )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Output,
23866: Input,
23866: ::boost::algorithm::first_finder(Search, is_iequal(Loc)),
23866: ::boost::algorithm::empty_formatter(Input) );
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename SequenceT, typename RangeT>
23866: inline SequenceT ierase_first_copy(
23866: const SequenceT& Input,
23866: const RangeT& Search,
23866: const std::locale& Loc=std::locale() )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Input,
23866: ::boost::algorithm::first_finder(Search, is_iequal(Loc)),
23866: ::boost::algorithm::empty_formatter(Input) );
23866: }
23866: # 228 "/usr/include/boost/algorithm/string/erase.hpp" 3 4
23866: template<typename SequenceT, typename RangeT>
23866: inline void ierase_first(
23866: SequenceT& Input,
23866: const RangeT& Search,
23866: const std::locale& Loc=std::locale() )
23866: {
23866: ::boost::algorithm::find_format(
23866: Input,
23866: ::boost::algorithm::first_finder(Search, is_iequal(Loc)),
23866: ::boost::algorithm::empty_formatter(Input) );
23866: }
23866: # 256 "/usr/include/boost/algorithm/string/erase.hpp" 3 4
23866: template<
23866: typename OutputIteratorT,
23866: typename Range1T,
23866: typename Range2T>
23866: inline OutputIteratorT erase_last_copy(
23866: OutputIteratorT Output,
23866: const Range1T& Input,
23866: const Range2T& Search )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Output,
23866: Input,
23866: ::boost::algorithm::last_finder(Search),
23866: ::boost::algorithm::empty_formatter(Input) );
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename SequenceT, typename RangeT>
23866: inline SequenceT erase_last_copy(
23866: const SequenceT& Input,
23866: const RangeT& Search )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Input,
23866: ::boost::algorithm::last_finder(Search),
23866: ::boost::algorithm::empty_formatter(Input) );
23866: }
23866: # 295 "/usr/include/boost/algorithm/string/erase.hpp" 3 4
23866: template<typename SequenceT, typename RangeT>
23866: inline void erase_last(
23866: SequenceT& Input,
23866: const RangeT& Search )
23866: {
23866: ::boost::algorithm::find_format(
23866: Input,
23866: ::boost::algorithm::last_finder(Search),
23866: ::boost::algorithm::empty_formatter(Input) );
23866: }
23866: # 324 "/usr/include/boost/algorithm/string/erase.hpp" 3 4
23866: template<
23866: typename OutputIteratorT,
23866: typename Range1T,
23866: typename Range2T>
23866: inline OutputIteratorT ierase_last_copy(
23866: OutputIteratorT Output,
23866: const Range1T& Input,
23866: const Range2T& Search,
23866: const std::locale& Loc=std::locale() )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Output,
23866: Input,
23866: ::boost::algorithm::last_finder(Search, is_iequal(Loc)),
23866: ::boost::algorithm::empty_formatter(Input) );
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename SequenceT, typename RangeT>
23866: inline SequenceT ierase_last_copy(
23866: const SequenceT& Input,
23866: const RangeT& Search,
23866: const std::locale& Loc=std::locale() )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Input,
23866: ::boost::algorithm::last_finder(Search, is_iequal(Loc)),
23866: ::boost::algorithm::empty_formatter(Input) );
23866: }
23866: # 366 "/usr/include/boost/algorithm/string/erase.hpp" 3 4
23866: template<typename SequenceT, typename RangeT>
23866: inline void ierase_last(
23866: SequenceT& Input,
23866: const RangeT& Search,
23866: const std::locale& Loc=std::locale() )
23866: {
23866: ::boost::algorithm::find_format(
23866: Input,
23866: ::boost::algorithm::last_finder(Search, is_iequal(Loc)),
23866: ::boost::algorithm::empty_formatter(Input) );
23866: }
23866: # 397 "/usr/include/boost/algorithm/string/erase.hpp" 3 4
23866: template<
23866: typename OutputIteratorT,
23866: typename Range1T,
23866: typename Range2T>
23866: inline OutputIteratorT erase_nth_copy(
23866: OutputIteratorT Output,
23866: const Range1T& Input,
23866: const Range2T& Search,
23866: int Nth )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Output,
23866: Input,
23866: ::boost::algorithm::nth_finder(Search, Nth),
23866: ::boost::algorithm::empty_formatter(Input) );
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename SequenceT, typename RangeT>
23866: inline SequenceT erase_nth_copy(
23866: const SequenceT& Input,
23866: const RangeT& Search,
23866: int Nth )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Input,
23866: ::boost::algorithm::nth_finder(Search, Nth),
23866: ::boost::algorithm::empty_formatter(Input) );
23866: }
23866: # 440 "/usr/include/boost/algorithm/string/erase.hpp" 3 4
23866: template<typename SequenceT, typename RangeT>
23866: inline void erase_nth(
23866: SequenceT& Input,
23866: const RangeT& Search,
23866: int Nth )
23866: {
23866: ::boost::algorithm::find_format(
23866: Input,
23866: ::boost::algorithm::nth_finder(Search, Nth),
23866: ::boost::algorithm::empty_formatter(Input) );
23866: }
23866: # 472 "/usr/include/boost/algorithm/string/erase.hpp" 3 4
23866: template<
23866: typename OutputIteratorT,
23866: typename Range1T,
23866: typename Range2T>
23866: inline OutputIteratorT ierase_nth_copy(
23866: OutputIteratorT Output,
23866: const Range1T& Input,
23866: const Range2T& Search,
23866: int Nth,
23866: const std::locale& Loc=std::locale() )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Output,
23866: Input,
23866: ::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)),
23866: ::boost::algorithm::empty_formatter(Input) );
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename SequenceT, typename RangeT>
23866: inline SequenceT ierase_nth_copy(
23866: const SequenceT& Input,
23866: const RangeT& Search,
23866: int Nth,
23866: const std::locale& Loc=std::locale() )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Input,
23866: ::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)),
23866: empty_formatter(Input) );
23866: }
23866: # 518 "/usr/include/boost/algorithm/string/erase.hpp" 3 4
23866: template<typename SequenceT, typename RangeT>
23866: inline void ierase_nth(
23866: SequenceT& Input,
23866: const RangeT& Search,
23866: int Nth,
23866: const std::locale& Loc=std::locale() )
23866: {
23866: ::boost::algorithm::find_format(
23866: Input,
23866: ::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)),
23866: ::boost::algorithm::empty_formatter(Input) );
23866: }
23866: # 549 "/usr/include/boost/algorithm/string/erase.hpp" 3 4
23866: template<
23866: typename OutputIteratorT,
23866: typename Range1T,
23866: typename Range2T>
23866: inline OutputIteratorT erase_all_copy(
23866: OutputIteratorT Output,
23866: const Range1T& Input,
23866: const Range2T& Search )
23866: {
23866: return ::boost::algorithm::find_format_all_copy(
23866: Output,
23866: Input,
23866: ::boost::algorithm::first_finder(Search),
23866: ::boost::algorithm::empty_formatter(Input) );
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename SequenceT, typename RangeT>
23866: inline SequenceT erase_all_copy(
23866: const SequenceT& Input,
23866: const RangeT& Search )
23866: {
23866: return ::boost::algorithm::find_format_all_copy(
23866: Input,
23866: ::boost::algorithm::first_finder(Search),
23866: ::boost::algorithm::empty_formatter(Input) );
23866: }
23866: # 588 "/usr/include/boost/algorithm/string/erase.hpp" 3 4
23866: template<typename SequenceT, typename RangeT>
23866: inline void erase_all(
23866: SequenceT& Input,
23866: const RangeT& Search )
23866: {
23866: ::boost::algorithm::find_format_all(
23866: Input,
23866: ::boost::algorithm::first_finder(Search),
23866: ::boost::algorithm::empty_formatter(Input) );
23866: }
23866: # 617 "/usr/include/boost/algorithm/string/erase.hpp" 3 4
23866: template<
23866: typename OutputIteratorT,
23866: typename Range1T,
23866: typename Range2T>
23866: inline OutputIteratorT ierase_all_copy(
23866: OutputIteratorT Output,
23866: const Range1T& Input,
23866: const Range2T& Search,
23866: const std::locale& Loc=std::locale() )
23866: {
23866: return ::boost::algorithm::find_format_all_copy(
23866: Output,
23866: Input,
23866: ::boost::algorithm::first_finder(Search, is_iequal(Loc)),
23866: ::boost::algorithm::empty_formatter(Input) );
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename SequenceT, typename RangeT>
23866: inline SequenceT ierase_all_copy(
23866: const SequenceT& Input,
23866: const RangeT& Search,
23866: const std::locale& Loc=std::locale() )
23866: {
23866: return ::boost::algorithm::find_format_all_copy(
23866: Input,
23866: ::boost::algorithm::first_finder(Search, is_iequal(Loc)),
23866: ::boost::algorithm::empty_formatter(Input) );
23866: }
23866: # 659 "/usr/include/boost/algorithm/string/erase.hpp" 3 4
23866: template<typename SequenceT, typename RangeT>
23866: inline void ierase_all(
23866: SequenceT& Input,
23866: const RangeT& Search,
23866: const std::locale& Loc=std::locale() )
23866: {
23866: ::boost::algorithm::find_format_all(
23866: Input,
23866: ::boost::algorithm::first_finder(Search, is_iequal(Loc)),
23866: ::boost::algorithm::empty_formatter(Input) );
23866: }
23866: # 691 "/usr/include/boost/algorithm/string/erase.hpp" 3 4
23866: template<
23866: typename OutputIteratorT,
23866: typename RangeT>
23866: inline OutputIteratorT erase_head_copy(
23866: OutputIteratorT Output,
23866: const RangeT& Input,
23866: int N )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Output,
23866: Input,
23866: ::boost::algorithm::head_finder(N),
23866: ::boost::algorithm::empty_formatter( Input ) );
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename SequenceT>
23866: inline SequenceT erase_head_copy(
23866: const SequenceT& Input,
23866: int N )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Input,
23866: ::boost::algorithm::head_finder(N),
23866: ::boost::algorithm::empty_formatter( Input ) );
23866: }
23866: # 732 "/usr/include/boost/algorithm/string/erase.hpp" 3 4
23866: template<typename SequenceT>
23866: inline void erase_head(
23866: SequenceT& Input,
23866: int N )
23866: {
23866: ::boost::algorithm::find_format(
23866: Input,
23866: ::boost::algorithm::head_finder(N),
23866: ::boost::algorithm::empty_formatter( Input ) );
23866: }
23866: # 763 "/usr/include/boost/algorithm/string/erase.hpp" 3 4
23866: template<
23866: typename OutputIteratorT,
23866: typename RangeT>
23866: inline OutputIteratorT erase_tail_copy(
23866: OutputIteratorT Output,
23866: const RangeT& Input,
23866: int N )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Output,
23866: Input,
23866: ::boost::algorithm::tail_finder(N),
23866: ::boost::algorithm::empty_formatter( Input ) );
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<typename SequenceT>
23866: inline SequenceT erase_tail_copy(
23866: const SequenceT& Input,
23866: int N )
23866: {
23866: return ::boost::algorithm::find_format_copy(
23866: Input,
23866: ::boost::algorithm::tail_finder(N),
23866: ::boost::algorithm::empty_formatter( Input ) );
23866: }
23866: # 804 "/usr/include/boost/algorithm/string/erase.hpp" 3 4
23866: template<typename SequenceT>
23866: inline void erase_tail(
23866: SequenceT& Input,
23866: int N )
23866: {
23866: ::boost::algorithm::find_format(
23866: Input,
23866: ::boost::algorithm::tail_finder(N),
23866: ::boost::algorithm::empty_formatter( Input ) );
23866: }
23866:
23866: }
23866:
23866:
23866: using algorithm::erase_range_copy;
23866: using algorithm::erase_range;
23866: using algorithm::erase_first_copy;
23866: using algorithm::erase_first;
23866: using algorithm::ierase_first_copy;
23866: using algorithm::ierase_first;
23866: using algorithm::erase_last_copy;
23866: using algorithm::erase_last;
23866: using algorithm::ierase_last_copy;
23866: using algorithm::ierase_last;
23866: using algorithm::erase_nth_copy;
23866: using algorithm::erase_nth;
23866: using algorithm::ierase_nth_copy;
23866: using algorithm::ierase_nth;
23866: using algorithm::erase_all_copy;
23866: using algorithm::erase_all;
23866: using algorithm::ierase_all_copy;
23866: using algorithm::ierase_all;
23866: using algorithm::erase_head_copy;
23866: using algorithm::erase_head;
23866: using algorithm::erase_tail_copy;
23866: using algorithm::erase_tail;
23866:
23866: }
23866: # 27 "/usr/include/boost/algorithm/string.hpp" 2 3 4
23866: # 47 "src/common/common.h" 2
23866: # 1 "/usr/include/boost/multiprecision/cpp_int.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MP_CPP_INT_HPP
23866:
23866: # 1 "/usr/include/c++/10/iostream" 1 3 4
23866: # 34 "/usr/include/c++/10/iostream" 3 4
23866: #define _GLIBCXX_IOSTREAM 1
23866:
23866:
23866: # 37 "/usr/include/c++/10/iostream" 3
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 60 "/usr/include/c++/10/iostream" 3
23866: extern istream cin;
23866: extern ostream cout;
23866: extern ostream cerr;
23866: extern ostream clog;
23866:
23866:
23866: extern wistream wcin;
23866: extern wostream wcout;
23866: extern wostream wcerr;
23866: extern wostream wclog;
23866:
23866:
23866:
23866:
23866: static ios_base::Init __ioinit;
23866:
23866:
23866: }
23866: # 10 "/usr/include/boost/multiprecision/cpp_int.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/cstdint.hpp" 1 3 4
23866: # 12 "/usr/include/boost/multiprecision/cpp_int.hpp" 2 3 4
23866: # 1 "/usr/include/boost/multiprecision/number.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MATH_EXTENDED_REAL_HPP
23866:
23866:
23866: # 1 "/usr/include/boost/cstdint.hpp" 1 3 4
23866: # 11 "/usr/include/boost/multiprecision/number.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/max.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_MAX_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/max.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/min_max.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_MIN_MAX_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/min_max.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/less.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_LESS_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/less.hpp" 3 4
23866: #define AUX778076_OP_NAME less
23866: #define AUX778076_OP_TOKEN <
23866: # 1 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 1 3 4
23866: # 22 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 3 4
23866: #define AUX778076_OP_PREFIX AUX778076_OP_NAME
23866:
23866:
23866: #define AUX778076_OP_ARITY 2
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 1 3 4
23866: # 21 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/numeric_cast.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_NUMERIC_CAST_HPP_INCLUDED
23866: # 27 "/usr/include/boost/mpl/numeric_cast.hpp" 3 4
23866: #define BOOST_MPL_AUX_NUMERIC_CAST numeric_cast
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866:
23866:
23866: template< typename SourceTag, typename TargetTag > struct numeric_cast
23866: {
23866: template< typename N > struct apply;
23866: };
23866:
23866: }}
23866: # 22 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/apply_wrap.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/mpl/tag.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_TAG_HPP_INCLUDED
23866: # 19 "/usr/include/boost/mpl/tag.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/has_tag.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_HAS_TAG_HPP_INCLUDED
23866: # 19 "/usr/include/boost/mpl/aux_/has_tag.hpp" 3 4
23866: namespace boost { namespace mpl { namespace aux {
23866: template< typename T, typename fallback_ = boost::mpl::bool_<false> > struct has_tag { struct gcc_3_2_wknd { template< typename U > static boost::mpl::aux::yes_tag test( boost::mpl::aux::type_wrapper<U> const volatile* , boost::mpl::aux::type_wrapper<typename U::tag>* = 0 ); static boost::mpl::aux::no_tag test(...); }; typedef boost::mpl::aux::type_wrapper<T> t_; static const bool value = sizeof(gcc_3_2_wknd::test(static_cast<t_*>(0))) == sizeof(boost::mpl::aux::yes_tag); typedef boost::mpl::bool_<value> type; };
23866: }}}
23866: # 20 "/usr/include/boost/mpl/tag.hpp" 2 3 4
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: namespace aux {
23866: template< typename T > struct tag_impl
23866: {
23866: typedef typename T::tag type;
23866: };
23866: }
23866:
23866: template< typename T, typename Default = void_ > struct tag
23866:
23866: : if_<
23866: aux::has_tag<T>
23866: , aux::tag_impl<T>
23866: , Default
23866: >::type
23866: {
23866: # 48 "/usr/include/boost/mpl/tag.hpp" 3 4
23866: };
23866:
23866: }}
23866: # 25 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/numeric_cast_utils.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_NUMERIC_CAST_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/aux_/numeric_cast_utils.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/apply_wrap.hpp" 1 3 4
23866: # 19 "/usr/include/boost/mpl/aux_/numeric_cast_utils.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/config/forwarding.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CONFIG_FORWARDING_HPP_INCLUDED
23866: # 20 "/usr/include/boost/mpl/aux_/numeric_cast_utils.hpp" 2 3 4
23866:
23866: namespace boost { namespace mpl { namespace aux {
23866:
23866: template<
23866: typename F
23866: , typename Tag1
23866: , typename Tag2
23866: >
23866: struct cast1st_impl
23866: {
23866: template< typename N1, typename N2 > struct apply
23866:
23866: : apply_wrap2<
23866: F
23866: , typename apply_wrap1< numeric_cast<Tag1,Tag2>,N1 >::type
23866: , N2
23866: >
23866: {
23866: # 46 "/usr/include/boost/mpl/aux_/numeric_cast_utils.hpp" 3 4
23866: };
23866: };
23866:
23866: template<
23866: typename F
23866: , typename Tag1
23866: , typename Tag2
23866: >
23866: struct cast2nd_impl
23866: {
23866: template< typename N1, typename N2 > struct apply
23866:
23866: : apply_wrap2<
23866: F
23866: , N1
23866: , typename apply_wrap1< numeric_cast<Tag2,Tag1>,N2 >::type
23866: >
23866: {
23866: # 72 "/usr/include/boost/mpl/aux_/numeric_cast_utils.hpp" 3 4
23866: };
23866: };
23866:
23866: }}}
23866: # 26 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/msvc_eti_base.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_MSVC_ETI_BASE_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/aux_/msvc_eti_base.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/is_msvc_eti_arg.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_IS_MSVC_ETI_ARG_HPP_INCLUDED
23866: # 21 "/usr/include/boost/mpl/aux_/is_msvc_eti_arg.hpp" 3 4
23866: namespace boost { namespace mpl { namespace aux {
23866: # 62 "/usr/include/boost/mpl/aux_/is_msvc_eti_arg.hpp" 3 4
23866: }}}
23866: # 18 "/usr/include/boost/mpl/aux_/msvc_eti_base.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: namespace boost { namespace mpl { namespace aux {
23866: # 55 "/usr/include/boost/mpl/aux_/msvc_eti_base.hpp" 3 4
23866: template< typename T > struct msvc_eti_base
23866: : T
23866: {
23866:
23866: msvc_eti_base();
23866:
23866: typedef T type;
23866: };
23866:
23866:
23866:
23866: template<> struct msvc_eti_base<int>
23866: {
23866: typedef msvc_eti_base type;
23866: typedef msvc_eti_base first;
23866: typedef msvc_eti_base second;
23866: typedef msvc_eti_base tag;
23866: enum { value = 0 };
23866: };
23866:
23866: }}}
23866: # 30 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 2 3 4
23866: # 28 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_PREPROCESSED_HEADER AUX778076_OP_PREFIX.hpp
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/less.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/less.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename Tag1
23866: , typename Tag2
23866: >
23866: struct less_impl
23866: : if_c<
23866: ( Tag1::value
23866: > Tag2::value
23866: )
23866:
23866: , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
23866: , aux::cast1st_impl< less_impl< Tag2,Tag2 >,Tag1, Tag2 >
23866: >::type
23866: {
23866: };
23866:
23866:
23866: template<> struct less_impl< na,na >
23866: {
23866: template< typename U1, typename U2 > struct apply
23866: {
23866: typedef apply type;
23866: static const int value = 0;
23866: };
23866: };
23866:
23866: template< typename Tag > struct less_impl< na,Tag >
23866: {
23866: template< typename U1, typename U2 > struct apply
23866: {
23866: typedef apply type;
23866: static const int value = 0;
23866: };
23866: };
23866:
23866: template< typename Tag > struct less_impl< Tag,na >
23866: {
23866: template< typename U1, typename U2 > struct apply
23866: {
23866: typedef apply type;
23866: static const int value = 0;
23866: };
23866: };
23866:
23866: template< typename T > struct less_tag
23866: {
23866: typedef typename T::tag type;
23866: };
23866:
23866: template<
23866: typename N1 = na
23866: , typename N2 = na
23866: >
23866: struct less
23866:
23866: : less_impl<
23866: typename less_tag<N1>::type
23866: , typename less_tag<N2>::type
23866: >::template apply< N1,N2 >::type
23866: {
23866:
23866:
23866: };
23866:
23866: template<> struct less< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : less< T1 , T2 > { }; }; template< typename Tag > struct lambda< less< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef less< na , na > result_; typedef less< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< less< T1 , T2 > > : int_<2> { }; template<> struct template_arity< less< na , na > > : int_<-1> { }; }
23866:
23866: }}
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<>
23866: struct less_impl< integral_c_tag,integral_c_tag >
23866: {
23866: template< typename N1, typename N2 > struct apply
23866:
23866: : bool_< ( N2::value > N1::value ) >
23866: {
23866: };
23866: };
23866:
23866: }}
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 36 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 2 3 4
23866: # 78 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 3 4
23866: #undef AUX778076_OP_TAG_NAME
23866: #undef AUX778076_OP_IMPL_NAME
23866: #undef AUX778076_OP_ARITY
23866: #undef AUX778076_OP_PREFIX
23866: #undef AUX778076_OP_NAME
23866: #undef AUX778076_OP_TOKEN
23866: # 20 "/usr/include/boost/mpl/less.hpp" 2 3 4
23866: # 18 "/usr/include/boost/mpl/min_max.hpp" 2 3 4
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename N1 = na
23866: , typename N2 = na
23866: >
23866: struct min
23866: : if_< less<N1,N2>,N1,N2 >
23866: {
23866: };
23866:
23866: template<
23866: typename N1 = na
23866: , typename N2 = na
23866: >
23866: struct max
23866: : if_< less<N1,N2>,N2,N1 >
23866: {
23866: };
23866:
23866: template<> struct min< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : min< T1 , T2 > { }; }; template< typename Tag > struct lambda< min< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef min< na , na > result_; typedef min< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< min< T1 , T2 > > : int_<2> { }; template<> struct template_arity< min< na , na > > : int_<-1> { }; }
23866: template<> struct max< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : max< T1 , T2 > { }; }; template< typename Tag > struct lambda< max< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef max< na , na > result_; typedef max< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< max< T1 , T2 > > : int_<2> { }; template<> struct template_arity< max< na , na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 18 "/usr/include/boost/mpl/max.hpp" 2 3 4
23866: # 12 "/usr/include/boost/multiprecision/number.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/plus.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_PLUS_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/plus.hpp" 3 4
23866: #define AUX778076_OP_NAME plus
23866: #define AUX778076_OP_TOKEN +
23866: # 1 "/usr/include/boost/mpl/aux_/arithmetic_op.hpp" 1 3 4
23866: # 17 "/usr/include/boost/mpl/aux_/arithmetic_op.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/integral_c.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_INTEGRAL_C_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/integral_c.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/integral_c_fwd.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_INTEGRAL_C_FWD_HPP_INCLUDED
23866: # 20 "/usr/include/boost/mpl/integral_c_fwd.hpp" 3 4
23866: namespace mpl_ {
23866:
23866:
23866:
23866:
23866:
23866: template< typename T, T N > struct integral_c;
23866:
23866:
23866: }
23866: namespace boost { namespace mpl { using ::mpl_::integral_c; } }
23866: # 18 "/usr/include/boost/mpl/integral_c.hpp" 2 3 4
23866: # 26 "/usr/include/boost/mpl/integral_c.hpp" 3 4
23866: #define AUX_WRAPPER_PARAMS(N) typename T, T N
23866:
23866:
23866: #define AUX_WRAPPER_NAME integral_c
23866: #define AUX_WRAPPER_VALUE_TYPE T
23866: #define AUX_WRAPPER_INST(value) AUX_WRAPPER_NAME< T, value >
23866: # 1 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 1 3 4
23866: # 40 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 3 4
23866: namespace mpl_ {
23866:
23866: template< typename T, T N >
23866: struct integral_c
23866: {
23866: static const T value = N;
23866:
23866:
23866:
23866:
23866:
23866: typedef integral_c type;
23866:
23866: typedef T value_type;
23866: typedef integral_c_tag tag;
23866: # 72 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 3 4
23866: typedef integral_c< T, static_cast<T>((value + 1)) > next;
23866: typedef integral_c< T, static_cast<T>((value - 1)) > prior;
23866:
23866:
23866:
23866:
23866:
23866:
23866: constexpr operator T() const { return static_cast<T>(this->value); }
23866: };
23866:
23866:
23866: template< typename T, T N >
23866: T const integral_c< T, N >::value;
23866:
23866:
23866: }
23866:
23866: #undef AUX_WRAPPER_NAME
23866: #undef AUX_WRAPPER_PARAMS
23866: #undef AUX_WRAPPER_INST
23866: #undef AUX_WRAPPER_VALUE_TYPE
23866: # 33 "/usr/include/boost/mpl/integral_c.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: namespace mpl_ {
23866:
23866: template< bool C >
23866: struct integral_c<bool, C>
23866: {
23866: static const bool value = C;
23866: typedef integral_c_tag tag;
23866: typedef integral_c type;
23866: typedef bool value_type;
23866: operator bool() const { return this->value; }
23866: };
23866: }
23866: # 18 "/usr/include/boost/mpl/aux_/arithmetic_op.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/largest_int.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_LARGEST_INT_HPP_INCLUDED
23866: # 22 "/usr/include/boost/mpl/aux_/largest_int.hpp" 3 4
23866: namespace boost { namespace mpl { namespace aux {
23866:
23866: template< typename T > struct integral_rank;
23866:
23866: template<> struct integral_rank<bool> : int_<1> {};
23866: template<> struct integral_rank<signed char> : int_<2> {};
23866: template<> struct integral_rank<char> : int_<3> {};
23866: template<> struct integral_rank<unsigned char> : int_<4> {};
23866:
23866: template<> struct integral_rank<wchar_t> : int_<5> {};
23866:
23866: template<> struct integral_rank<short> : int_<6> {};
23866: template<> struct integral_rank<unsigned short> : int_<7> {};
23866: template<> struct integral_rank<int> : int_<8> {};
23866: template<> struct integral_rank<unsigned int> : int_<9> {};
23866: template<> struct integral_rank<long> : int_<10> {};
23866: template<> struct integral_rank<unsigned long> : int_<11> {};
23866:
23866:
23866: template<> struct integral_rank<long_long_type> : int_<12> {};
23866: template<> struct integral_rank<ulong_long_type>: int_<13> {};
23866:
23866:
23866: template< typename T1, typename T2 > struct largest_int
23866:
23866: : if_c<
23866: ( integral_rank<T1>::value >= integral_rank<T2>::value )
23866: , T1
23866: , T2
23866: >
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866: }}}
23866: # 19 "/usr/include/boost/mpl/aux_/arithmetic_op.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: #define AUX778076_OP_PREFIX AUX778076_OP_NAME
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 1 3 4
23866: # 22 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/apply_wrap.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 2 3 4
23866: # 27 "/usr/include/boost/mpl/aux_/arithmetic_op.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_PREPROCESSED_HEADER AUX778076_OP_PREFIX.hpp
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/plus.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/plus.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename Tag1
23866: , typename Tag2
23866: >
23866: struct plus_impl
23866: : if_c<
23866: ( Tag1::value
23866: > Tag2::value
23866: )
23866:
23866: , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
23866: , aux::cast1st_impl< plus_impl< Tag2,Tag2 >,Tag1, Tag2 >
23866: >::type
23866: {
23866: };
23866:
23866:
23866: template<> struct plus_impl< na,na >
23866: {
23866: template< typename U1, typename U2 > struct apply
23866: {
23866: typedef apply type;
23866: static const int value = 0;
23866: };
23866: };
23866:
23866: template< typename Tag > struct plus_impl< na,Tag >
23866: {
23866: template< typename U1, typename U2 > struct apply
23866: {
23866: typedef apply type;
23866: static const int value = 0;
23866: };
23866: };
23866:
23866: template< typename Tag > struct plus_impl< Tag,na >
23866: {
23866: template< typename U1, typename U2 > struct apply
23866: {
23866: typedef apply type;
23866: static const int value = 0;
23866: };
23866: };
23866:
23866: template< typename T > struct plus_tag
23866: {
23866: typedef typename T::tag type;
23866: };
23866:
23866: template<
23866: typename N1 = na
23866: , typename N2 = na
23866: , typename N3 = na, typename N4 = na, typename N5 = na
23866: >
23866: struct plus
23866: : plus< plus< plus< plus< N1,N2 >, N3>, N4>, N5>
23866: {
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866: template<
23866: typename N1, typename N2, typename N3, typename N4
23866: >
23866: struct plus< N1,N2,N3,N4,na >
23866:
23866: : plus< plus< plus< N1,N2 >, N3>, N4>
23866: {
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866: template<
23866: typename N1, typename N2, typename N3
23866: >
23866: struct plus< N1,N2,N3,na,na >
23866:
23866: : plus< plus< N1,N2 >, N3>
23866: {
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866: template<
23866: typename N1, typename N2
23866: >
23866: struct plus< N1,N2,na,na,na >
23866: : plus_impl<
23866: typename plus_tag<N1>::type
23866: , typename plus_tag<N2>::type
23866: >::template apply< N1,N2 >::type
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866: template<> struct plus< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : plus< T1 , T2 > { }; }; template< typename Tag > struct lambda< plus< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef plus< na , na > result_; typedef plus< na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > struct template_arity< plus< T1 , T2 , T3 , T4 , T5 > > : int_<5> { }; template<> struct template_arity< plus< na , na > > : int_<-1> { }; }
23866:
23866: }}
23866:
23866: namespace boost { namespace mpl {
23866: template<>
23866: struct plus_impl< integral_c_tag,integral_c_tag >
23866: {
23866: template< typename N1, typename N2 > struct apply
23866:
23866: : integral_c<
23866: typename aux::largest_int<
23866: typename N1::value_type
23866: , typename N2::value_type
23866: >::type
23866: , ( N1::value
23866: + N2::value
23866: )
23866: >
23866: {
23866: };
23866: };
23866:
23866: }}
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 35 "/usr/include/boost/mpl/aux_/arithmetic_op.hpp" 2 3 4
23866: # 87 "/usr/include/boost/mpl/aux_/arithmetic_op.hpp" 3 4
23866: #undef AUX778076_OP_TAG_NAME
23866: #undef AUX778076_OP_IMPL_NAME
23866: #undef AUX778076_OP_ARITY
23866: #undef AUX778076_OP_PREFIX
23866: #undef AUX778076_OP_NAME
23866: #undef AUX778076_OP_TOKEN
23866: # 20 "/usr/include/boost/mpl/plus.hpp" 2 3 4
23866: # 13 "/usr/include/boost/multiprecision/number.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/mpl/find_if.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_FIND_IF_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/find_if.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/find_if_pred.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_FIND_IF_PRED_HPP_INCLUDED
23866: # 14 "/usr/include/boost/mpl/aux_/find_if_pred.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/iter_apply.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_ITER_APPLY_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/aux_/iter_apply.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/apply.hpp" 1 3 4
23866: # 18 "/usr/include/boost/mpl/aux_/iter_apply.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/deref.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_DEREF_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/deref.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/msvc_type.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_MSVC_TYPE_HPP_INCLUDED
23866: # 20 "/usr/include/boost/mpl/aux_/msvc_type.hpp" 3 4
23866: namespace boost { namespace mpl { namespace aux {
23866: # 48 "/usr/include/boost/mpl/aux_/msvc_type.hpp" 3 4
23866: template< typename T > struct msvc_type
23866: {
23866: typedef typename T::type type;
23866: };
23866:
23866: template<> struct msvc_type<int>
23866: {
23866: typedef int type;
23866: };
23866:
23866:
23866:
23866: }}}
23866: # 18 "/usr/include/boost/mpl/deref.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename Iterator = na
23866: >
23866: struct deref
23866: {
23866:
23866: typedef typename Iterator::type type;
23866:
23866:
23866:
23866:
23866: };
23866:
23866: template<> struct deref< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : deref< T1 > { }; }; template< typename Tag > struct lambda< deref< na > , Tag , int_<-1> > { typedef false_ is_le; typedef deref< na > result_; typedef deref< na > type; }; namespace aux { template< typename T1 > struct template_arity< deref< T1 > > : int_<1> { }; template<> struct template_arity< deref< na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 19 "/usr/include/boost/mpl/aux_/iter_apply.hpp" 2 3 4
23866:
23866: namespace boost { namespace mpl { namespace aux {
23866:
23866: template<
23866: typename F
23866: , typename Iterator
23866: >
23866: struct iter_apply1
23866: : apply1< F,typename deref<Iterator>::type >
23866: {
23866: };
23866:
23866: template<
23866: typename F
23866: , typename Iterator1
23866: , typename Iterator2
23866: >
23866: struct iter_apply2
23866: : apply2<
23866: F
23866: , typename deref<Iterator1>::type
23866: , typename deref<Iterator2>::type
23866: >
23866: {
23866: };
23866:
23866: }}}
23866: # 15 "/usr/include/boost/mpl/aux_/find_if_pred.hpp" 2 3 4
23866:
23866:
23866: namespace boost { namespace mpl { namespace aux {
23866:
23866: template< typename Predicate >
23866: struct find_if_pred
23866: {
23866: template< typename Iterator >
23866: struct apply
23866: {
23866: typedef not_< aux::iter_apply1<Predicate,Iterator> > type;
23866: };
23866: };
23866:
23866: }}}
23866: # 18 "/usr/include/boost/mpl/find_if.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/arg.hpp" 1 3 4
23866: # 19 "/usr/include/boost/mpl/find_if.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/iter_fold_if.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_ITER_FOLD_IF_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/iter_fold_if.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/begin_end.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_BEGIN_END_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/begin_end.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/begin_end_fwd.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_BEGIN_END_FWD_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/begin_end_fwd.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template< typename Tag > struct begin_impl;
23866: template< typename Tag > struct end_impl;
23866:
23866: template< typename Sequence > struct begin;
23866: template< typename Sequence > struct end;
23866:
23866: }}
23866: # 18 "/usr/include/boost/mpl/begin_end.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/begin_end_impl.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_BEGIN_END_IMPL_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/aux_/begin_end_impl.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/sequence_tag_fwd.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_SEQUENCE_TAG_FWD_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/sequence_tag_fwd.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: struct nested_begin_end_tag;
23866: struct non_sequence_tag;
23866:
23866: template< typename Sequence > struct sequence_tag;
23866:
23866: }}
23866: # 19 "/usr/include/boost/mpl/aux_/begin_end_impl.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/has_begin.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_HAS_BEGIN_HPP_INCLUDED
23866: # 19 "/usr/include/boost/mpl/aux_/has_begin.hpp" 3 4
23866: namespace boost { namespace mpl { namespace aux {
23866: template< typename T, typename fallback_ = boost::mpl::bool_<true> > struct has_begin { struct gcc_3_2_wknd { template< typename U > static boost::mpl::aux::yes_tag test( boost::mpl::aux::type_wrapper<U> const volatile* , boost::mpl::aux::type_wrapper<typename U::begin>* = 0 ); static boost::mpl::aux::no_tag test(...); }; typedef boost::mpl::aux::type_wrapper<T> t_; static const bool value = sizeof(gcc_3_2_wknd::test(static_cast<t_*>(0))) == sizeof(boost::mpl::aux::yes_tag); typedef boost::mpl::bool_<value> type; };
23866: }}}
23866: # 22 "/usr/include/boost/mpl/aux_/begin_end_impl.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/traits_lambda_spec.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_TRAITS_LAMBDA_SPEC_HPP_INCLUDED
23866: # 24 "/usr/include/boost/mpl/aux_/traits_lambda_spec.hpp" 3 4
23866: #define BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(i,trait)
23866: # 58 "/usr/include/boost/mpl/aux_/traits_lambda_spec.hpp" 3 4
23866: #define BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(i,trait) BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(i, trait) template<> struct trait<non_sequence_tag> {};
23866: # 24 "/usr/include/boost/mpl/aux_/begin_end_impl.hpp" 2 3 4
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866:
23866: namespace aux {
23866:
23866: template< typename Sequence >
23866: struct begin_type
23866: {
23866: typedef typename Sequence::begin type;
23866: };
23866: template< typename Sequence >
23866: struct end_type
23866: {
23866: typedef typename Sequence::end type;
23866: };
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template< typename Tag >
23866: struct begin_impl
23866: {
23866: template< typename Sequence > struct apply
23866: {
23866: typedef typename eval_if<aux::has_begin<Sequence, true_>,
23866: aux::begin_type<Sequence>, void_>::type type;
23866: };
23866: };
23866:
23866: template< typename Tag >
23866: struct end_impl
23866: {
23866: template< typename Sequence > struct apply
23866: {
23866: typedef typename eval_if<aux::has_begin<Sequence, true_>,
23866: aux::end_type<Sequence>, void_>::type type;
23866: };
23866: };
23866:
23866:
23866:
23866: #define AUX778076_IMPL_SPEC(name,tag,result) template<> struct name ##_impl<tag> { template< typename Sequence > struct apply { typedef result type; }; };
23866: # 82 "/usr/include/boost/mpl/aux_/begin_end_impl.hpp" 3 4
23866: template<> struct begin_impl<nested_begin_end_tag> { template< typename Sequence > struct apply { typedef typename Sequence::begin type; }; };
23866: template<> struct end_impl<nested_begin_end_tag> { template< typename Sequence > struct apply { typedef typename Sequence::end type; }; };
23866:
23866:
23866:
23866:
23866: template<> struct begin_impl<non_sequence_tag> { template< typename Sequence > struct apply { typedef void_ type; }; };
23866: template<> struct end_impl<non_sequence_tag> { template< typename Sequence > struct apply { typedef void_ type; }; };
23866: template<> struct begin_impl<na> { template< typename Sequence > struct apply { typedef void_ type; }; };
23866: template<> struct end_impl<na> { template< typename Sequence > struct apply { typedef void_ type; }; };
23866:
23866: #undef AUX778076_IMPL_SPEC
23866:
23866:
23866:
23866:
23866:
23866: }}
23866: # 19 "/usr/include/boost/mpl/begin_end.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/sequence_tag.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_SEQUENCE_TAG_HPP_INCLUDED
23866: # 26 "/usr/include/boost/mpl/sequence_tag.hpp" 3 4
23866: namespace boost { namespace mpl {
23866: # 78 "/usr/include/boost/mpl/sequence_tag.hpp" 3 4
23866: namespace aux {
23866:
23866: template< bool has_tag_, bool has_begin_ >
23866: struct sequence_tag_impl
23866: {
23866:
23866:
23866: template< typename Sequence > struct result2_;
23866: };
23866:
23866: #define AUX_CLASS_SEQUENCE_TAG_SPEC(has_tag,has_begin,result_type) template<> struct sequence_tag_impl<has_tag,has_begin> { template< typename Sequence > struct result2_ { typedef result_type type; }; };
23866: # 98 "/usr/include/boost/mpl/sequence_tag.hpp" 3 4
23866: template<> struct sequence_tag_impl<true,true> { template< typename Sequence > struct result2_ { typedef typename Sequence::tag type; }; };
23866: template<> struct sequence_tag_impl<true,false> { template< typename Sequence > struct result2_ { typedef typename Sequence::tag type; }; };
23866: template<> struct sequence_tag_impl<false,true> { template< typename Sequence > struct result2_ { typedef nested_begin_end_tag type; }; };
23866: template<> struct sequence_tag_impl<false,false> { template< typename Sequence > struct result2_ { typedef non_sequence_tag type; }; };
23866:
23866: #undef AUX_CLASS_SEQUENCE_TAG_SPEC
23866:
23866: }
23866:
23866: template<
23866: typename Sequence = na
23866: >
23866: struct sequence_tag
23866: : aux::sequence_tag_impl<
23866: ::boost::mpl::aux::has_tag<Sequence>::value
23866: , ::boost::mpl::aux::has_begin<Sequence>::value
23866: >::template result2_<Sequence>
23866: {
23866: };
23866:
23866:
23866:
23866: template<> struct sequence_tag< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : sequence_tag< T1 > { }; }; template< typename Tag > struct lambda< sequence_tag< na > , Tag , int_<-1> > { typedef false_ is_le; typedef sequence_tag< na > result_; typedef sequence_tag< na > type; }; namespace aux { template< typename T1 > struct template_arity< sequence_tag< T1 > > : int_<1> { }; template<> struct template_arity< sequence_tag< na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 20 "/usr/include/boost/mpl/begin_end.hpp" 2 3 4
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866:
23866:
23866:
23866: template<
23866: typename Sequence = na
23866: >
23866: struct begin
23866: {
23866: typedef typename sequence_tag<Sequence>::type tag_;
23866: typedef typename begin_impl< tag_ >
23866: ::template apply< Sequence >::type type;
23866:
23866:
23866: };
23866:
23866: template<
23866: typename Sequence = na
23866: >
23866: struct end
23866: {
23866: typedef typename sequence_tag<Sequence>::type tag_;
23866: typedef typename end_impl< tag_ >
23866: ::template apply< Sequence >::type type;
23866:
23866:
23866: };
23866:
23866: template<> struct begin< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : begin< T1 > { }; }; template< typename Tag > struct lambda< begin< na > , Tag , int_<-1> > { typedef false_ is_le; typedef begin< na > result_; typedef begin< na > type; }; namespace aux { template< typename T1 > struct template_arity< begin< T1 > > : int_<1> { }; template<> struct template_arity< begin< na > > : int_<-1> { }; }
23866: template<> struct end< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : end< T1 > { }; }; template< typename Tag > struct lambda< end< na > , Tag , int_<-1> > { typedef false_ is_le; typedef end< na > result_; typedef end< na > type; }; namespace aux { template< typename T1 > struct template_arity< end< T1 > > : int_<1> { }; template<> struct template_arity< end< na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 19 "/usr/include/boost/mpl/iter_fold_if.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/pair.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_PAIR_HPP_INCLUDED
23866: # 22 "/usr/include/boost/mpl/pair.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename T1 = na
23866: , typename T2 = na
23866: >
23866: struct pair
23866: {
23866: typedef pair type;
23866: typedef T1 first;
23866: typedef T2 second;
23866:
23866:
23866: };
23866:
23866: template<
23866: typename P = na
23866: >
23866: struct first
23866: {
23866:
23866: typedef typename P::first type;
23866:
23866:
23866:
23866:
23866: };
23866:
23866: template<
23866: typename P = na
23866: >
23866: struct second
23866: {
23866:
23866: typedef typename P::second type;
23866:
23866:
23866:
23866:
23866: };
23866:
23866:
23866: template<> struct pair< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : pair< T1 , T2 > { }; }; template< typename Tag > struct lambda< pair< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef pair< na , na > result_; typedef pair< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< pair< T1 , T2 > > : int_<2> { }; template<> struct template_arity< pair< na , na > > : int_<-1> { }; }
23866: template<> struct first< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : first< T1 > { }; }; template< typename Tag > struct lambda< first< na > , Tag , int_<-1> > { typedef false_ is_le; typedef first< na > result_; typedef first< na > type; }; namespace aux { template< typename T1 > struct template_arity< first< T1 > > : int_<1> { }; template<> struct template_arity< first< na > > : int_<-1> { }; }
23866: template<> struct second< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : second< T1 > { }; }; template< typename Tag > struct lambda< second< na > , Tag , int_<-1> > { typedef false_ is_le; typedef second< na > result_; typedef second< na > type; }; namespace aux { template< typename T1 > struct template_arity< second< T1 > > : int_<1> { }; template<> struct template_arity< second< na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 24 "/usr/include/boost/mpl/iter_fold_if.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/apply.hpp" 1 3 4
23866: # 25 "/usr/include/boost/mpl/iter_fold_if.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/iter_fold_if_impl.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_ITER_FOLD_IF_IMPL_HPP_INCLUDED
23866: # 22 "/usr/include/boost/mpl/aux_/iter_fold_if_impl.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/apply.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/iter_fold_if_impl.hpp" 2 3 4
23866: # 31 "/usr/include/boost/mpl/aux_/iter_fold_if_impl.hpp" 3 4
23866: #define BOOST_MPL_PREPROCESSED_HEADER iter_fold_if_impl.hpp
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp" 1 3 4
23866: # 13 "/usr/include/boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp" 3 4
23866: namespace boost { namespace mpl { namespace aux {
23866:
23866: template< typename Iterator, typename State >
23866: struct iter_fold_if_null_step
23866: {
23866: typedef State state;
23866: typedef Iterator iterator;
23866: };
23866:
23866: template< bool >
23866: struct iter_fold_if_step_impl
23866: {
23866: template<
23866: typename Iterator
23866: , typename State
23866: , typename StateOp
23866: , typename IteratorOp
23866: >
23866: struct result_
23866: {
23866: typedef typename apply2< StateOp,State,Iterator >::type state;
23866: typedef typename IteratorOp::type iterator;
23866: };
23866: };
23866:
23866: template<>
23866: struct iter_fold_if_step_impl<false>
23866: {
23866: template<
23866: typename Iterator
23866: , typename State
23866: , typename StateOp
23866: , typename IteratorOp
23866: >
23866: struct result_
23866: {
23866: typedef State state;
23866: typedef Iterator iterator;
23866: };
23866: };
23866:
23866: template<
23866: typename Iterator
23866: , typename State
23866: , typename ForwardOp
23866: , typename Predicate
23866: >
23866: struct iter_fold_if_forward_step
23866: {
23866: typedef typename apply2< Predicate,State,Iterator >::type not_last;
23866: typedef typename iter_fold_if_step_impl<
23866: not_last::value
23866: >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
23866:
23866: typedef typename impl_::state state;
23866: typedef typename impl_::iterator iterator;
23866: };
23866:
23866: template<
23866: typename Iterator
23866: , typename State
23866: , typename BackwardOp
23866: , typename Predicate
23866: >
23866: struct iter_fold_if_backward_step
23866: {
23866: typedef typename apply2< Predicate,State,Iterator >::type not_last;
23866: typedef typename iter_fold_if_step_impl<
23866: not_last::value
23866: >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
23866:
23866: typedef typename impl_::state state;
23866: typedef typename impl_::iterator iterator;
23866: };
23866:
23866: template<
23866: typename Iterator
23866: , typename State
23866: , typename ForwardOp
23866: , typename ForwardPredicate
23866: , typename BackwardOp
23866: , typename BackwardPredicate
23866: >
23866: struct iter_fold_if_impl
23866: {
23866: private:
23866: typedef iter_fold_if_null_step< Iterator,State > forward_step0;
23866: typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1;
23866: typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2;
23866: typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3;
23866: typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4;
23866:
23866:
23866: typedef typename if_<
23866: typename forward_step4::not_last
23866: , iter_fold_if_impl<
23866: typename forward_step4::iterator
23866: , typename forward_step4::state
23866: , ForwardOp
23866: , ForwardPredicate
23866: , BackwardOp
23866: , BackwardPredicate
23866: >
23866: , iter_fold_if_null_step<
23866: typename forward_step4::iterator
23866: , typename forward_step4::state
23866: >
23866: >::type backward_step4;
23866:
23866: typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3;
23866: typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2;
23866: typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1;
23866: typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0;
23866:
23866:
23866: public:
23866: typedef typename backward_step0::state state;
23866: typedef typename backward_step4::iterator iterator;
23866: };
23866:
23866: }}}
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 33 "/usr/include/boost/mpl/aux_/iter_fold_if_impl.hpp" 2 3 4
23866: # 26 "/usr/include/boost/mpl/iter_fold_if.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: namespace aux {
23866:
23866: template< typename Predicate, typename LastIterator >
23866: struct iter_fold_if_pred
23866: {
23866: template< typename State, typename Iterator > struct apply
23866:
23866: : and_<
23866: not_< is_same<Iterator,LastIterator> >
23866: , apply1<Predicate,Iterator>
23866: >
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: };
23866: };
23866:
23866: }
23866:
23866: template<
23866: typename Sequence = na
23866: , typename State = na
23866: , typename ForwardOp = na
23866: , typename ForwardPredicate = na
23866: , typename BackwardOp = na
23866: , typename BackwardPredicate = na
23866: >
23866: struct iter_fold_if
23866: {
23866:
23866: typedef typename begin<Sequence>::type first_;
23866: typedef typename end<Sequence>::type last_;
23866:
23866: typedef typename eval_if<
23866: is_na<BackwardPredicate>
23866: , if_< is_na<BackwardOp>, always<false_>, always<true_> >
23866: , identity<BackwardPredicate>
23866: >::type backward_pred_;
23866:
23866:
23866:
23866: struct result_ :
23866:
23866:
23866:
23866: aux::iter_fold_if_impl<
23866: first_
23866: , State
23866: , ForwardOp
23866: , protect< aux::iter_fold_if_pred< ForwardPredicate,last_ > >
23866: , BackwardOp
23866: , backward_pred_
23866: >
23866:
23866: { };
23866:
23866:
23866:
23866:
23866: public:
23866:
23866: typedef pair<
23866: typename result_::state
23866: , typename result_::iterator
23866: > type;
23866:
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866: template<> struct iter_fold_if< na , na , na , na , na , na > { template< typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 > struct apply : iter_fold_if< T1 , T2 , T3 , T4 , T5 , T6 > { }; }; template< typename Tag > struct lambda< iter_fold_if< na , na , na , na , na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef iter_fold_if< na , na , na , na , na , na > result_; typedef iter_fold_if< na , na , na , na , na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 > struct template_arity< iter_fold_if< T1 , T2 , T3 , T4 , T5 , T6 > > : int_<6> { }; template<> struct template_arity< iter_fold_if< na , na , na , na , na , na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 20 "/usr/include/boost/mpl/find_if.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866:
23866:
23866: template<
23866: typename Sequence = na
23866: , typename Predicate = na
23866: >
23866: struct find_if
23866: {
23866: typedef typename iter_fold_if<
23866: Sequence
23866: , void
23866: , mpl::arg<1>
23866: , protect< aux::find_if_pred<Predicate> >
23866: >::type result_;
23866:
23866: typedef typename second<result_>::type type;
23866:
23866:
23866: };
23866:
23866: template<> struct find_if< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : find_if< T1 , T2 > { }; }; template< typename Tag > struct lambda< find_if< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef find_if< na , na > result_; typedef find_if< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< find_if< T1 , T2 > > : int_<2> { }; template<> struct template_arity< find_if< na , na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 15 "/usr/include/boost/multiprecision/number.hpp" 2 3 4
23866: # 1 "/usr/include/boost/assert.hpp" 1 3 4
23866: # 32 "/usr/include/boost/assert.hpp" 3 4
23866: #undef BOOST_ASSERT
23866: #undef BOOST_ASSERT_MSG
23866: #undef BOOST_ASSERT_IS_VOID
23866: # 58 "/usr/include/boost/assert.hpp" 3 4
23866: # 1 "/usr/include/assert.h" 1 3 4
23866: # 24 "/usr/include/assert.h" 3 4
23866: #undef _ASSERT_H
23866: #undef assert
23866: #undef __ASSERT_VOID_CAST
23866:
23866:
23866: #undef assert_perror
23866:
23866:
23866:
23866:
23866: #define _ASSERT_H 1
23866:
23866:
23866:
23866: #define __ASSERT_VOID_CAST static_cast<void>
23866: # 92 "/usr/include/assert.h" 3 4
23866: #define assert(expr) (static_cast <bool> (expr) ? void (0) : __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 117 "/usr/include/assert.h" 3 4
23866: #define assert_perror(errnum) (!(errnum) ? __ASSERT_VOID_CAST (0) : __assert_perror_fail ((errnum), __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 129 "/usr/include/assert.h" 3 4
23866: #define __ASSERT_FUNCTION __extension__ __PRETTY_FUNCTION__
23866: # 59 "/usr/include/boost/assert.hpp" 2 3 4
23866:
23866: #define BOOST_ASSERT(expr) assert(expr)
23866: #define BOOST_ASSERT_MSG(expr,msg) assert((expr)&&(msg))
23866: # 72 "/usr/include/boost/assert.hpp" 3 4
23866: #undef BOOST_VERIFY
23866: #undef BOOST_VERIFY_MSG
23866: # 82 "/usr/include/boost/assert.hpp" 3 4
23866: #define BOOST_VERIFY(expr) BOOST_ASSERT(expr)
23866: #define BOOST_VERIFY_MSG(expr,msg) BOOST_ASSERT_MSG(expr,msg)
23866: # 16 "/usr/include/boost/multiprecision/number.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/is_complex.hpp" 1 3 4
23866: # 9 "/usr/include/boost/type_traits/is_complex.hpp" 3 4
23866: #define BOOST_TT_IS_COMPLEX_HPP
23866:
23866:
23866: # 1 "/usr/include/c++/10/complex" 1 3 4
23866: # 37 "/usr/include/c++/10/complex" 3 4
23866: #define _GLIBCXX_COMPLEX 1
23866:
23866:
23866: # 40 "/usr/include/c++/10/complex" 3
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/cmath" 1 3
23866: # 39 "/usr/include/c++/10/cmath" 3
23866:
23866: # 40 "/usr/include/c++/10/cmath" 3
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_INCLUDE_NEXT_C_HEADERS
23866:
23866: #undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS
23866: # 45 "/usr/include/c++/10/complex" 2 3
23866:
23866:
23866:
23866: #undef complex
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 67 "/usr/include/c++/10/complex" 3
23866: template<typename _Tp> class complex;
23866: template<> class complex<float>;
23866: template<> class complex<double>;
23866: template<> class complex<long double>;
23866:
23866:
23866: template<typename _Tp> _Tp abs(const complex<_Tp>&);
23866:
23866: template<typename _Tp> _Tp arg(const complex<_Tp>&);
23866:
23866: template<typename _Tp> _Tp norm(const complex<_Tp>&);
23866:
23866:
23866: template<typename _Tp>
23866: complex<_Tp> conj(const complex<_Tp>&);
23866:
23866: template<typename _Tp> complex<_Tp> polar(const _Tp&, const _Tp& = 0);
23866:
23866:
23866:
23866: template<typename _Tp> complex<_Tp> cos(const complex<_Tp>&);
23866:
23866: template<typename _Tp> complex<_Tp> cosh(const complex<_Tp>&);
23866:
23866: template<typename _Tp> complex<_Tp> exp(const complex<_Tp>&);
23866:
23866: template<typename _Tp> complex<_Tp> log(const complex<_Tp>&);
23866:
23866: template<typename _Tp> complex<_Tp> log10(const complex<_Tp>&);
23866:
23866: template<typename _Tp> complex<_Tp> pow(const complex<_Tp>&, int);
23866:
23866: template<typename _Tp> complex<_Tp> pow(const complex<_Tp>&, const _Tp&);
23866:
23866: template<typename _Tp> complex<_Tp> pow(const complex<_Tp>&,
23866: const complex<_Tp>&);
23866:
23866: template<typename _Tp> complex<_Tp> pow(const _Tp&, const complex<_Tp>&);
23866:
23866: template<typename _Tp> complex<_Tp> sin(const complex<_Tp>&);
23866:
23866: template<typename _Tp> complex<_Tp> sinh(const complex<_Tp>&);
23866:
23866: template<typename _Tp> complex<_Tp> sqrt(const complex<_Tp>&);
23866:
23866: template<typename _Tp> complex<_Tp> tan(const complex<_Tp>&);
23866:
23866: template<typename _Tp> complex<_Tp> tanh(const complex<_Tp>&);
23866: # 126 "/usr/include/c++/10/complex" 3
23866: template<typename _Tp>
23866: struct complex
23866: {
23866:
23866: typedef _Tp value_type;
23866:
23866:
23866:
23866: constexpr complex(const _Tp& __r = _Tp(), const _Tp& __i = _Tp())
23866: : _M_real(__r), _M_imag(__i) { }
23866:
23866:
23866:
23866: constexpr complex(const complex&) = default;
23866:
23866:
23866:
23866: template<typename _Up>
23866: constexpr complex(const complex<_Up>& __z)
23866: : _M_real(__z.real()), _M_imag(__z.imag()) { }
23866:
23866:
23866:
23866:
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: constexpr _Tp
23866: real() const { return _M_real; }
23866:
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: constexpr _Tp
23866: imag() const { return _M_imag; }
23866: # 177 "/usr/include/c++/10/complex" 3
23866: void
23866: real(_Tp __val) { _M_real = __val; }
23866:
23866: void
23866: imag(_Tp __val) { _M_imag = __val; }
23866:
23866:
23866: complex<_Tp>& operator=(const _Tp&);
23866:
23866:
23866:
23866: complex<_Tp>&
23866: operator+=(const _Tp& __t)
23866: {
23866: _M_real += __t;
23866: return *this;
23866: }
23866:
23866:
23866:
23866: complex<_Tp>&
23866: operator-=(const _Tp& __t)
23866: {
23866: _M_real -= __t;
23866: return *this;
23866: }
23866:
23866:
23866: complex<_Tp>& operator*=(const _Tp&);
23866:
23866: complex<_Tp>& operator/=(const _Tp&);
23866:
23866:
23866:
23866: complex& operator=(const complex&) = default;
23866:
23866:
23866:
23866: template<typename _Up>
23866: complex<_Tp>& operator=(const complex<_Up>&);
23866:
23866: template<typename _Up>
23866: complex<_Tp>& operator+=(const complex<_Up>&);
23866:
23866: template<typename _Up>
23866: complex<_Tp>& operator-=(const complex<_Up>&);
23866:
23866: template<typename _Up>
23866: complex<_Tp>& operator*=(const complex<_Up>&);
23866:
23866: template<typename _Up>
23866: complex<_Tp>& operator/=(const complex<_Up>&);
23866:
23866: constexpr complex __rep() const
23866: { return *this; }
23866:
23866: private:
23866: _Tp _M_real;
23866: _Tp _M_imag;
23866: };
23866:
23866: template<typename _Tp>
23866: complex<_Tp>&
23866: complex<_Tp>::operator=(const _Tp& __t)
23866: {
23866: _M_real = __t;
23866: _M_imag = _Tp();
23866: return *this;
23866: }
23866:
23866:
23866: template<typename _Tp>
23866: complex<_Tp>&
23866: complex<_Tp>::operator*=(const _Tp& __t)
23866: {
23866: _M_real *= __t;
23866: _M_imag *= __t;
23866: return *this;
23866: }
23866:
23866:
23866: template<typename _Tp>
23866: complex<_Tp>&
23866: complex<_Tp>::operator/=(const _Tp& __t)
23866: {
23866: _M_real /= __t;
23866: _M_imag /= __t;
23866: return *this;
23866: }
23866:
23866: template<typename _Tp>
23866: template<typename _Up>
23866: complex<_Tp>&
23866: complex<_Tp>::operator=(const complex<_Up>& __z)
23866: {
23866: _M_real = __z.real();
23866: _M_imag = __z.imag();
23866: return *this;
23866: }
23866:
23866:
23866: template<typename _Tp>
23866: template<typename _Up>
23866: complex<_Tp>&
23866: complex<_Tp>::operator+=(const complex<_Up>& __z)
23866: {
23866: _M_real += __z.real();
23866: _M_imag += __z.imag();
23866: return *this;
23866: }
23866:
23866:
23866: template<typename _Tp>
23866: template<typename _Up>
23866: complex<_Tp>&
23866: complex<_Tp>::operator-=(const complex<_Up>& __z)
23866: {
23866: _M_real -= __z.real();
23866: _M_imag -= __z.imag();
23866: return *this;
23866: }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: template<typename _Up>
23866: complex<_Tp>&
23866: complex<_Tp>::operator*=(const complex<_Up>& __z)
23866: {
23866: const _Tp __r = _M_real * __z.real() - _M_imag * __z.imag();
23866: _M_imag = _M_real * __z.imag() + _M_imag * __z.real();
23866: _M_real = __r;
23866: return *this;
23866: }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: template<typename _Up>
23866: complex<_Tp>&
23866: complex<_Tp>::operator/=(const complex<_Up>& __z)
23866: {
23866: const _Tp __r = _M_real * __z.real() + _M_imag * __z.imag();
23866: const _Tp __n = std::norm(__z);
23866: _M_imag = (_M_imag * __z.real() - _M_real * __z.imag()) / __n;
23866: _M_real = __r / __n;
23866: return *this;
23866: }
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: operator+(const complex<_Tp>& __x, const complex<_Tp>& __y)
23866: {
23866: complex<_Tp> __r = __x;
23866: __r += __y;
23866: return __r;
23866: }
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: operator+(const complex<_Tp>& __x, const _Tp& __y)
23866: {
23866: complex<_Tp> __r = __x;
23866: __r += __y;
23866: return __r;
23866: }
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: operator+(const _Tp& __x, const complex<_Tp>& __y)
23866: {
23866: complex<_Tp> __r = __y;
23866: __r += __x;
23866: return __r;
23866: }
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: operator-(const complex<_Tp>& __x, const complex<_Tp>& __y)
23866: {
23866: complex<_Tp> __r = __x;
23866: __r -= __y;
23866: return __r;
23866: }
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: operator-(const complex<_Tp>& __x, const _Tp& __y)
23866: {
23866: complex<_Tp> __r = __x;
23866: __r -= __y;
23866: return __r;
23866: }
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: operator-(const _Tp& __x, const complex<_Tp>& __y)
23866: {
23866: complex<_Tp> __r = -__y;
23866: __r += __x;
23866: return __r;
23866: }
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: operator*(const complex<_Tp>& __x, const complex<_Tp>& __y)
23866: {
23866: complex<_Tp> __r = __x;
23866: __r *= __y;
23866: return __r;
23866: }
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: operator*(const complex<_Tp>& __x, const _Tp& __y)
23866: {
23866: complex<_Tp> __r = __x;
23866: __r *= __y;
23866: return __r;
23866: }
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: operator*(const _Tp& __x, const complex<_Tp>& __y)
23866: {
23866: complex<_Tp> __r = __y;
23866: __r *= __x;
23866: return __r;
23866: }
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: operator/(const complex<_Tp>& __x, const complex<_Tp>& __y)
23866: {
23866: complex<_Tp> __r = __x;
23866: __r /= __y;
23866: return __r;
23866: }
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: operator/(const complex<_Tp>& __x, const _Tp& __y)
23866: {
23866: complex<_Tp> __r = __x;
23866: __r /= __y;
23866: return __r;
23866: }
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: operator/(const _Tp& __x, const complex<_Tp>& __y)
23866: {
23866: complex<_Tp> __r = __x;
23866: __r /= __y;
23866: return __r;
23866: }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: operator+(const complex<_Tp>& __x)
23866: { return __x; }
23866:
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: operator-(const complex<_Tp>& __x)
23866: { return complex<_Tp>(-__x.real(), -__x.imag()); }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: inline constexpr bool
23866: operator==(const complex<_Tp>& __x, const complex<_Tp>& __y)
23866: { return __x.real() == __y.real() && __x.imag() == __y.imag(); }
23866:
23866: template<typename _Tp>
23866: inline constexpr bool
23866: operator==(const complex<_Tp>& __x, const _Tp& __y)
23866: { return __x.real() == __y && __x.imag() == _Tp(); }
23866:
23866:
23866: template<typename _Tp>
23866: inline constexpr bool
23866: operator==(const _Tp& __x, const complex<_Tp>& __y)
23866: { return __x == __y.real() && _Tp() == __y.imag(); }
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: inline constexpr bool
23866: operator!=(const complex<_Tp>& __x, const complex<_Tp>& __y)
23866: { return __x.real() != __y.real() || __x.imag() != __y.imag(); }
23866:
23866: template<typename _Tp>
23866: inline constexpr bool
23866: operator!=(const complex<_Tp>& __x, const _Tp& __y)
23866: { return __x.real() != __y || __x.imag() != _Tp(); }
23866:
23866: template<typename _Tp>
23866: inline constexpr bool
23866: operator!=(const _Tp& __x, const complex<_Tp>& __y)
23866: { return __x != __y.real() || _Tp() != __y.imag(); }
23866:
23866:
23866:
23866:
23866: template<typename _Tp, typename _CharT, class _Traits>
23866: basic_istream<_CharT, _Traits>&
23866: operator>>(basic_istream<_CharT, _Traits>& __is, complex<_Tp>& __x)
23866: {
23866: bool __fail = true;
23866: _CharT __ch;
23866: if (__is >> __ch)
23866: {
23866: if (_Traits::eq(__ch, __is.widen('(')))
23866: {
23866: _Tp __u;
23866: if (__is >> __u >> __ch)
23866: {
23866: const _CharT __rparen = __is.widen(')');
23866: if (_Traits::eq(__ch, __rparen))
23866: {
23866: __x = __u;
23866: __fail = false;
23866: }
23866: else if (_Traits::eq(__ch, __is.widen(',')))
23866: {
23866: _Tp __v;
23866: if (__is >> __v >> __ch)
23866: {
23866: if (_Traits::eq(__ch, __rparen))
23866: {
23866: __x = complex<_Tp>(__u, __v);
23866: __fail = false;
23866: }
23866: else
23866: __is.putback(__ch);
23866: }
23866: }
23866: else
23866: __is.putback(__ch);
23866: }
23866: }
23866: else
23866: {
23866: __is.putback(__ch);
23866: _Tp __u;
23866: if (__is >> __u)
23866: {
23866: __x = __u;
23866: __fail = false;
23866: }
23866: }
23866: }
23866: if (__fail)
23866: __is.setstate(ios_base::failbit);
23866: return __is;
23866: }
23866:
23866:
23866: template<typename _Tp, typename _CharT, class _Traits>
23866: basic_ostream<_CharT, _Traits>&
23866: operator<<(basic_ostream<_CharT, _Traits>& __os, const complex<_Tp>& __x)
23866: {
23866: basic_ostringstream<_CharT, _Traits> __s;
23866: __s.flags(__os.flags());
23866: __s.imbue(__os.getloc());
23866: __s.precision(__os.precision());
23866: __s << '(' << __x.real() << ',' << __x.imag() << ')';
23866: return __os << __s.str();
23866: }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: constexpr _Tp
23866: real(const complex<_Tp>& __z)
23866: { return __z.real(); }
23866:
23866: template<typename _Tp>
23866: constexpr _Tp
23866: imag(const complex<_Tp>& __z)
23866: { return __z.imag(); }
23866: # 598 "/usr/include/c++/10/complex" 3
23866: template<typename _Tp>
23866: inline _Tp
23866: __complex_abs(const complex<_Tp>& __z)
23866: {
23866: _Tp __x = __z.real();
23866: _Tp __y = __z.imag();
23866: const _Tp __s = std::max(abs(__x), abs(__y));
23866: if (__s == _Tp())
23866: return __s;
23866: __x /= __s;
23866: __y /= __s;
23866: return __s * sqrt(__x * __x + __y * __y);
23866: }
23866:
23866:
23866: inline float
23866: __complex_abs(__complex__ float __z) { return __builtin_cabsf(__z); }
23866:
23866: inline double
23866: __complex_abs(__complex__ double __z) { return __builtin_cabs(__z); }
23866:
23866: inline long double
23866: __complex_abs(const __complex__ long double& __z)
23866: { return __builtin_cabsl(__z); }
23866:
23866: template<typename _Tp>
23866: inline _Tp
23866: abs(const complex<_Tp>& __z) { return __complex_abs(__z.__rep()); }
23866: # 634 "/usr/include/c++/10/complex" 3
23866: template<typename _Tp>
23866: inline _Tp
23866: __complex_arg(const complex<_Tp>& __z)
23866: { return atan2(__z.imag(), __z.real()); }
23866:
23866:
23866: inline float
23866: __complex_arg(__complex__ float __z) { return __builtin_cargf(__z); }
23866:
23866: inline double
23866: __complex_arg(__complex__ double __z) { return __builtin_carg(__z); }
23866:
23866: inline long double
23866: __complex_arg(const __complex__ long double& __z)
23866: { return __builtin_cargl(__z); }
23866:
23866: template<typename _Tp>
23866: inline _Tp
23866: arg(const complex<_Tp>& __z) { return __complex_arg(__z.__rep()); }
23866: # 664 "/usr/include/c++/10/complex" 3
23866: template<bool>
23866: struct _Norm_helper
23866: {
23866: template<typename _Tp>
23866: static inline _Tp _S_do_it(const complex<_Tp>& __z)
23866: {
23866: const _Tp __x = __z.real();
23866: const _Tp __y = __z.imag();
23866: return __x * __x + __y * __y;
23866: }
23866: };
23866:
23866: template<>
23866: struct _Norm_helper<true>
23866: {
23866: template<typename _Tp>
23866: static inline _Tp _S_do_it(const complex<_Tp>& __z)
23866: {
23866:
23866:
23866: const _Tp __x = __z.real();
23866: const _Tp __y = __z.imag();
23866: return __x * __x + __y * __y;
23866: }
23866: };
23866:
23866: template<typename _Tp>
23866: inline _Tp
23866: norm(const complex<_Tp>& __z)
23866: {
23866: return _Norm_helper<__is_floating<_Tp>::__value
23866: && !0>::_S_do_it(__z);
23866: }
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: polar(const _Tp& __rho, const _Tp& __theta)
23866: {
23866: ;
23866: return complex<_Tp>(__rho * cos(__theta), __rho * sin(__theta));
23866: }
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: conj(const complex<_Tp>& __z)
23866: { return complex<_Tp>(__z.real(), -__z.imag()); }
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: __complex_cos(const complex<_Tp>& __z)
23866: {
23866: const _Tp __x = __z.real();
23866: const _Tp __y = __z.imag();
23866: return complex<_Tp>(cos(__x) * cosh(__y), -sin(__x) * sinh(__y));
23866: }
23866:
23866:
23866: inline __complex__ float
23866: __complex_cos(__complex__ float __z) { return __builtin_ccosf(__z); }
23866:
23866: inline __complex__ double
23866: __complex_cos(__complex__ double __z) { return __builtin_ccos(__z); }
23866:
23866: inline __complex__ long double
23866: __complex_cos(const __complex__ long double& __z)
23866: { return __builtin_ccosl(__z); }
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: cos(const complex<_Tp>& __z) { return __complex_cos(__z.__rep()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: __complex_cosh(const complex<_Tp>& __z)
23866: {
23866: const _Tp __x = __z.real();
23866: const _Tp __y = __z.imag();
23866: return complex<_Tp>(cosh(__x) * cos(__y), sinh(__x) * sin(__y));
23866: }
23866:
23866:
23866: inline __complex__ float
23866: __complex_cosh(__complex__ float __z) { return __builtin_ccoshf(__z); }
23866:
23866: inline __complex__ double
23866: __complex_cosh(__complex__ double __z) { return __builtin_ccosh(__z); }
23866:
23866: inline __complex__ long double
23866: __complex_cosh(const __complex__ long double& __z)
23866: { return __builtin_ccoshl(__z); }
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: cosh(const complex<_Tp>& __z) { return __complex_cosh(__z.__rep()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: __complex_exp(const complex<_Tp>& __z)
23866: { return std::polar<_Tp>(exp(__z.real()), __z.imag()); }
23866:
23866:
23866: inline __complex__ float
23866: __complex_exp(__complex__ float __z) { return __builtin_cexpf(__z); }
23866:
23866: inline __complex__ double
23866: __complex_exp(__complex__ double __z) { return __builtin_cexp(__z); }
23866:
23866: inline __complex__ long double
23866: __complex_exp(const __complex__ long double& __z)
23866: { return __builtin_cexpl(__z); }
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: exp(const complex<_Tp>& __z) { return __complex_exp(__z.__rep()); }
23866: # 801 "/usr/include/c++/10/complex" 3
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: __complex_log(const complex<_Tp>& __z)
23866: { return complex<_Tp>(log(std::abs(__z)), std::arg(__z)); }
23866:
23866:
23866: inline __complex__ float
23866: __complex_log(__complex__ float __z) { return __builtin_clogf(__z); }
23866:
23866: inline __complex__ double
23866: __complex_log(__complex__ double __z) { return __builtin_clog(__z); }
23866:
23866: inline __complex__ long double
23866: __complex_log(const __complex__ long double& __z)
23866: { return __builtin_clogl(__z); }
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: log(const complex<_Tp>& __z) { return __complex_log(__z.__rep()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: log10(const complex<_Tp>& __z)
23866: { return std::log(__z) / log(_Tp(10.0)); }
23866:
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: __complex_sin(const complex<_Tp>& __z)
23866: {
23866: const _Tp __x = __z.real();
23866: const _Tp __y = __z.imag();
23866: return complex<_Tp>(sin(__x) * cosh(__y), cos(__x) * sinh(__y));
23866: }
23866:
23866:
23866: inline __complex__ float
23866: __complex_sin(__complex__ float __z) { return __builtin_csinf(__z); }
23866:
23866: inline __complex__ double
23866: __complex_sin(__complex__ double __z) { return __builtin_csin(__z); }
23866:
23866: inline __complex__ long double
23866: __complex_sin(const __complex__ long double& __z)
23866: { return __builtin_csinl(__z); }
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: sin(const complex<_Tp>& __z) { return __complex_sin(__z.__rep()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: __complex_sinh(const complex<_Tp>& __z)
23866: {
23866: const _Tp __x = __z.real();
23866: const _Tp __y = __z.imag();
23866: return complex<_Tp>(sinh(__x) * cos(__y), cosh(__x) * sin(__y));
23866: }
23866:
23866:
23866: inline __complex__ float
23866: __complex_sinh(__complex__ float __z) { return __builtin_csinhf(__z); }
23866:
23866: inline __complex__ double
23866: __complex_sinh(__complex__ double __z) { return __builtin_csinh(__z); }
23866:
23866: inline __complex__ long double
23866: __complex_sinh(const __complex__ long double& __z)
23866: { return __builtin_csinhl(__z); }
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: sinh(const complex<_Tp>& __z) { return __complex_sinh(__z.__rep()); }
23866: # 893 "/usr/include/c++/10/complex" 3
23866: template<typename _Tp>
23866: complex<_Tp>
23866: __complex_sqrt(const complex<_Tp>& __z)
23866: {
23866: _Tp __x = __z.real();
23866: _Tp __y = __z.imag();
23866:
23866: if (__x == _Tp())
23866: {
23866: _Tp __t = sqrt(abs(__y) / 2);
23866: return complex<_Tp>(__t, __y < _Tp() ? -__t : __t);
23866: }
23866: else
23866: {
23866: _Tp __t = sqrt(2 * (std::abs(__z) + abs(__x)));
23866: _Tp __u = __t / 2;
23866: return __x > _Tp()
23866: ? complex<_Tp>(__u, __y / __t)
23866: : complex<_Tp>(abs(__y) / __t, __y < _Tp() ? -__u : __u);
23866: }
23866: }
23866:
23866:
23866: inline __complex__ float
23866: __complex_sqrt(__complex__ float __z) { return __builtin_csqrtf(__z); }
23866:
23866: inline __complex__ double
23866: __complex_sqrt(__complex__ double __z) { return __builtin_csqrt(__z); }
23866:
23866: inline __complex__ long double
23866: __complex_sqrt(const __complex__ long double& __z)
23866: { return __builtin_csqrtl(__z); }
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: sqrt(const complex<_Tp>& __z) { return __complex_sqrt(__z.__rep()); }
23866: # 937 "/usr/include/c++/10/complex" 3
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: __complex_tan(const complex<_Tp>& __z)
23866: { return std::sin(__z) / std::cos(__z); }
23866:
23866:
23866: inline __complex__ float
23866: __complex_tan(__complex__ float __z) { return __builtin_ctanf(__z); }
23866:
23866: inline __complex__ double
23866: __complex_tan(__complex__ double __z) { return __builtin_ctan(__z); }
23866:
23866: inline __complex__ long double
23866: __complex_tan(const __complex__ long double& __z)
23866: { return __builtin_ctanl(__z); }
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: tan(const complex<_Tp>& __z) { return __complex_tan(__z.__rep()); }
23866: # 965 "/usr/include/c++/10/complex" 3
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: __complex_tanh(const complex<_Tp>& __z)
23866: { return std::sinh(__z) / std::cosh(__z); }
23866:
23866:
23866: inline __complex__ float
23866: __complex_tanh(__complex__ float __z) { return __builtin_ctanhf(__z); }
23866:
23866: inline __complex__ double
23866: __complex_tanh(__complex__ double __z) { return __builtin_ctanh(__z); }
23866:
23866: inline __complex__ long double
23866: __complex_tanh(const __complex__ long double& __z)
23866: { return __builtin_ctanhl(__z); }
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: tanh(const complex<_Tp>& __z) { return __complex_tanh(__z.__rep()); }
23866: # 994 "/usr/include/c++/10/complex" 3
23866: template<typename _Tp>
23866: complex<_Tp>
23866: __complex_pow_unsigned(complex<_Tp> __x, unsigned __n)
23866: {
23866: complex<_Tp> __y = __n % 2 ? __x : complex<_Tp>(1);
23866:
23866: while (__n >>= 1)
23866: {
23866: __x *= __x;
23866: if (__n % 2)
23866: __y *= __x;
23866: }
23866:
23866: return __y;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: pow(const complex<_Tp>& __z, int __n)
23866: {
23866: return __n < 0
23866: ? complex<_Tp>(1) / std::__complex_pow_unsigned(__z, -(unsigned)__n)
23866: : std::__complex_pow_unsigned(__z, __n);
23866: }
23866:
23866: template<typename _Tp>
23866: complex<_Tp>
23866: pow(const complex<_Tp>& __x, const _Tp& __y)
23866: {
23866:
23866:
23866:
23866:
23866: if (__x.imag() == _Tp() && __x.real() > _Tp())
23866: return pow(__x.real(), __y);
23866:
23866: complex<_Tp> __t = std::log(__x);
23866: return std::polar<_Tp>(exp(__y * __t.real()), __y * __t.imag());
23866: }
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: __complex_pow(const complex<_Tp>& __x, const complex<_Tp>& __y)
23866: { return __x == _Tp() ? _Tp() : std::exp(__y * std::log(__x)); }
23866:
23866:
23866: inline __complex__ float
23866: __complex_pow(__complex__ float __x, __complex__ float __y)
23866: { return __builtin_cpowf(__x, __y); }
23866:
23866: inline __complex__ double
23866: __complex_pow(__complex__ double __x, __complex__ double __y)
23866: { return __builtin_cpow(__x, __y); }
23866:
23866: inline __complex__ long double
23866: __complex_pow(const __complex__ long double& __x,
23866: const __complex__ long double& __y)
23866: { return __builtin_cpowl(__x, __y); }
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: pow(const complex<_Tp>& __x, const complex<_Tp>& __y)
23866: { return __complex_pow(__x.__rep(), __y.__rep()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: inline complex<_Tp>
23866: pow(const _Tp& __x, const complex<_Tp>& __y)
23866: {
23866: return __x > _Tp() ? std::polar<_Tp>(pow(__x, __y.real()),
23866: __y.imag() * log(__x))
23866: : std::pow(complex<_Tp>(__x), __y);
23866: }
23866:
23866:
23866:
23866: template<>
23866: struct complex<float>
23866: {
23866: typedef float value_type;
23866: typedef __complex__ float _ComplexT;
23866:
23866: constexpr complex(_ComplexT __z) : _M_value(__z) { }
23866:
23866: constexpr complex(float __r = 0.0f, float __i = 0.0f)
23866:
23866: : _M_value{ __r, __i } { }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: explicit constexpr complex(const complex<double>&);
23866: explicit constexpr complex(const complex<long double>&);
23866:
23866:
23866:
23866:
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: constexpr float
23866: real() const { return __real__ _M_value; }
23866:
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: constexpr float
23866: imag() const { return __imag__ _M_value; }
23866: # 1128 "/usr/include/c++/10/complex" 3
23866: void
23866: real(float __val) { __real__ _M_value = __val; }
23866:
23866: void
23866: imag(float __val) { __imag__ _M_value = __val; }
23866:
23866: complex&
23866: operator=(float __f)
23866: {
23866: _M_value = __f;
23866: return *this;
23866: }
23866:
23866: complex&
23866: operator+=(float __f)
23866: {
23866: _M_value += __f;
23866: return *this;
23866: }
23866:
23866: complex&
23866: operator-=(float __f)
23866: {
23866: _M_value -= __f;
23866: return *this;
23866: }
23866:
23866: complex&
23866: operator*=(float __f)
23866: {
23866: _M_value *= __f;
23866: return *this;
23866: }
23866:
23866: complex&
23866: operator/=(float __f)
23866: {
23866: _M_value /= __f;
23866: return *this;
23866: }
23866:
23866:
23866:
23866:
23866: constexpr complex& operator=(const complex&) = default;
23866:
23866:
23866: template<typename _Tp>
23866: complex&
23866: operator=(const complex<_Tp>& __z)
23866: {
23866: __real__ _M_value = __z.real();
23866: __imag__ _M_value = __z.imag();
23866: return *this;
23866: }
23866:
23866: template<typename _Tp>
23866: complex&
23866: operator+=(const complex<_Tp>& __z)
23866: {
23866: _M_value += __z.__rep();
23866: return *this;
23866: }
23866:
23866: template<class _Tp>
23866: complex&
23866: operator-=(const complex<_Tp>& __z)
23866: {
23866: _M_value -= __z.__rep();
23866: return *this;
23866: }
23866:
23866: template<class _Tp>
23866: complex&
23866: operator*=(const complex<_Tp>& __z)
23866: {
23866: const _ComplexT __t = __z.__rep();
23866: _M_value *= __t;
23866: return *this;
23866: }
23866:
23866: template<class _Tp>
23866: complex&
23866: operator/=(const complex<_Tp>& __z)
23866: {
23866: const _ComplexT __t = __z.__rep();
23866: _M_value /= __t;
23866: return *this;
23866: }
23866:
23866: constexpr _ComplexT __rep() const { return _M_value; }
23866:
23866: private:
23866: _ComplexT _M_value;
23866: };
23866:
23866:
23866:
23866: template<>
23866: struct complex<double>
23866: {
23866: typedef double value_type;
23866: typedef __complex__ double _ComplexT;
23866:
23866: constexpr complex(_ComplexT __z) : _M_value(__z) { }
23866:
23866: constexpr complex(double __r = 0.0, double __i = 0.0)
23866:
23866: : _M_value{ __r, __i } { }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: constexpr complex(const complex<float>& __z)
23866: : _M_value(__z.__rep()) { }
23866:
23866: explicit constexpr complex(const complex<long double>&);
23866:
23866:
23866:
23866:
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: constexpr double
23866: real() const { return __real__ _M_value; }
23866:
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: constexpr double
23866: imag() const { return __imag__ _M_value; }
23866: # 1275 "/usr/include/c++/10/complex" 3
23866: void
23866: real(double __val) { __real__ _M_value = __val; }
23866:
23866: void
23866: imag(double __val) { __imag__ _M_value = __val; }
23866:
23866: complex&
23866: operator=(double __d)
23866: {
23866: _M_value = __d;
23866: return *this;
23866: }
23866:
23866: complex&
23866: operator+=(double __d)
23866: {
23866: _M_value += __d;
23866: return *this;
23866: }
23866:
23866: complex&
23866: operator-=(double __d)
23866: {
23866: _M_value -= __d;
23866: return *this;
23866: }
23866:
23866: complex&
23866: operator*=(double __d)
23866: {
23866: _M_value *= __d;
23866: return *this;
23866: }
23866:
23866: complex&
23866: operator/=(double __d)
23866: {
23866: _M_value /= __d;
23866: return *this;
23866: }
23866:
23866:
23866:
23866: constexpr complex& operator=(const complex&) = default;
23866:
23866:
23866: template<typename _Tp>
23866: complex&
23866: operator=(const complex<_Tp>& __z)
23866: {
23866: _M_value = __z.__rep();
23866: return *this;
23866: }
23866:
23866: template<typename _Tp>
23866: complex&
23866: operator+=(const complex<_Tp>& __z)
23866: {
23866: _M_value += __z.__rep();
23866: return *this;
23866: }
23866:
23866: template<typename _Tp>
23866: complex&
23866: operator-=(const complex<_Tp>& __z)
23866: {
23866: _M_value -= __z.__rep();
23866: return *this;
23866: }
23866:
23866: template<typename _Tp>
23866: complex&
23866: operator*=(const complex<_Tp>& __z)
23866: {
23866: const _ComplexT __t = __z.__rep();
23866: _M_value *= __t;
23866: return *this;
23866: }
23866:
23866: template<typename _Tp>
23866: complex&
23866: operator/=(const complex<_Tp>& __z)
23866: {
23866: const _ComplexT __t = __z.__rep();
23866: _M_value /= __t;
23866: return *this;
23866: }
23866:
23866: constexpr _ComplexT __rep() const { return _M_value; }
23866:
23866: private:
23866: _ComplexT _M_value;
23866: };
23866:
23866:
23866:
23866: template<>
23866: struct complex<long double>
23866: {
23866: typedef long double value_type;
23866: typedef __complex__ long double _ComplexT;
23866:
23866: constexpr complex(_ComplexT __z) : _M_value(__z) { }
23866:
23866: constexpr complex(long double __r = 0.0L,
23866: long double __i = 0.0L)
23866:
23866: : _M_value{ __r, __i } { }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: constexpr complex(const complex<float>& __z)
23866: : _M_value(__z.__rep()) { }
23866:
23866: constexpr complex(const complex<double>& __z)
23866: : _M_value(__z.__rep()) { }
23866:
23866:
23866:
23866:
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: constexpr long double
23866: real() const { return __real__ _M_value; }
23866:
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: constexpr long double
23866: imag() const { return __imag__ _M_value; }
23866: # 1422 "/usr/include/c++/10/complex" 3
23866: void
23866: real(long double __val) { __real__ _M_value = __val; }
23866:
23866: void
23866: imag(long double __val) { __imag__ _M_value = __val; }
23866:
23866: complex&
23866: operator=(long double __r)
23866: {
23866: _M_value = __r;
23866: return *this;
23866: }
23866:
23866: complex&
23866: operator+=(long double __r)
23866: {
23866: _M_value += __r;
23866: return *this;
23866: }
23866:
23866: complex&
23866: operator-=(long double __r)
23866: {
23866: _M_value -= __r;
23866: return *this;
23866: }
23866:
23866: complex&
23866: operator*=(long double __r)
23866: {
23866: _M_value *= __r;
23866: return *this;
23866: }
23866:
23866: complex&
23866: operator/=(long double __r)
23866: {
23866: _M_value /= __r;
23866: return *this;
23866: }
23866:
23866:
23866:
23866: constexpr complex& operator=(const complex&) = default;
23866:
23866:
23866: template<typename _Tp>
23866: complex&
23866: operator=(const complex<_Tp>& __z)
23866: {
23866: _M_value = __z.__rep();
23866: return *this;
23866: }
23866:
23866: template<typename _Tp>
23866: complex&
23866: operator+=(const complex<_Tp>& __z)
23866: {
23866: _M_value += __z.__rep();
23866: return *this;
23866: }
23866:
23866: template<typename _Tp>
23866: complex&
23866: operator-=(const complex<_Tp>& __z)
23866: {
23866: _M_value -= __z.__rep();
23866: return *this;
23866: }
23866:
23866: template<typename _Tp>
23866: complex&
23866: operator*=(const complex<_Tp>& __z)
23866: {
23866: const _ComplexT __t = __z.__rep();
23866: _M_value *= __t;
23866: return *this;
23866: }
23866:
23866: template<typename _Tp>
23866: complex&
23866: operator/=(const complex<_Tp>& __z)
23866: {
23866: const _ComplexT __t = __z.__rep();
23866: _M_value /= __t;
23866: return *this;
23866: }
23866:
23866: constexpr _ComplexT __rep() const { return _M_value; }
23866:
23866: private:
23866: _ComplexT _M_value;
23866: };
23866:
23866:
23866:
23866: inline constexpr
23866: complex<float>::complex(const complex<double>& __z)
23866: : _M_value(__z.__rep()) { }
23866:
23866: inline constexpr
23866: complex<float>::complex(const complex<long double>& __z)
23866: : _M_value(__z.__rep()) { }
23866:
23866: inline constexpr
23866: complex<double>::complex(const complex<long double>& __z)
23866: : _M_value(__z.__rep()) { }
23866:
23866:
23866:
23866:
23866:
23866: extern template istream& operator>>(istream&, complex<float>&);
23866: extern template ostream& operator<<(ostream&, const complex<float>&);
23866: extern template istream& operator>>(istream&, complex<double>&);
23866: extern template ostream& operator<<(ostream&, const complex<double>&);
23866: extern template istream& operator>>(istream&, complex<long double>&);
23866: extern template ostream& operator<<(ostream&, const complex<long double>&);
23866:
23866:
23866: extern template wistream& operator>>(wistream&, complex<float>&);
23866: extern template wostream& operator<<(wostream&, const complex<float>&);
23866: extern template wistream& operator>>(wistream&, complex<double>&);
23866: extern template wostream& operator<<(wostream&, const complex<double>&);
23866: extern template wistream& operator>>(wistream&, complex<long double>&);
23866: extern template wostream& operator<<(wostream&, const complex<long double>&);
23866:
23866:
23866:
23866:
23866:
23866:
23866: }
23866:
23866: namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: template<typename _Tp, typename _Up>
23866: struct __promote_2<std::complex<_Tp>, _Up>
23866: {
23866: public:
23866: typedef std::complex<typename __promote_2<_Tp, _Up>::__type> __type;
23866: };
23866:
23866: template<typename _Tp, typename _Up>
23866: struct __promote_2<_Tp, std::complex<_Up> >
23866: {
23866: public:
23866: typedef std::complex<typename __promote_2<_Tp, _Up>::__type> __type;
23866: };
23866:
23866: template<typename _Tp, typename _Up>
23866: struct __promote_2<std::complex<_Tp>, std::complex<_Up> >
23866: {
23866: public:
23866: typedef std::complex<typename __promote_2<_Tp, _Up>::__type> __type;
23866: };
23866:
23866:
23866: }
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: template<typename _Tp> std::complex<_Tp> acos(const std::complex<_Tp>&);
23866: template<typename _Tp> std::complex<_Tp> asin(const std::complex<_Tp>&);
23866: template<typename _Tp> std::complex<_Tp> atan(const std::complex<_Tp>&);
23866:
23866: template<typename _Tp> std::complex<_Tp> acosh(const std::complex<_Tp>&);
23866: template<typename _Tp> std::complex<_Tp> asinh(const std::complex<_Tp>&);
23866: template<typename _Tp> std::complex<_Tp> atanh(const std::complex<_Tp>&);
23866:
23866: template<typename _Tp> _Tp fabs(const std::complex<_Tp>&);
23866:
23866: template<typename _Tp>
23866: inline std::complex<_Tp>
23866: __complex_acos(const std::complex<_Tp>& __z)
23866: {
23866: const std::complex<_Tp> __t = std::asin(__z);
23866: const _Tp __pi_2 = 1.5707963267948966192313216916397514L;
23866: return std::complex<_Tp>(__pi_2 - __t.real(), -__t.imag());
23866: }
23866:
23866:
23866: inline __complex__ float
23866: __complex_acos(__complex__ float __z)
23866: { return __builtin_cacosf(__z); }
23866:
23866: inline __complex__ double
23866: __complex_acos(__complex__ double __z)
23866: { return __builtin_cacos(__z); }
23866:
23866: inline __complex__ long double
23866: __complex_acos(const __complex__ long double& __z)
23866: { return __builtin_cacosl(__z); }
23866:
23866: template<typename _Tp>
23866: inline std::complex<_Tp>
23866: acos(const std::complex<_Tp>& __z)
23866: { return __complex_acos(__z.__rep()); }
23866: # 1638 "/usr/include/c++/10/complex" 3
23866: template<typename _Tp>
23866: inline std::complex<_Tp>
23866: __complex_asin(const std::complex<_Tp>& __z)
23866: {
23866: std::complex<_Tp> __t(-__z.imag(), __z.real());
23866: __t = std::asinh(__t);
23866: return std::complex<_Tp>(__t.imag(), -__t.real());
23866: }
23866:
23866:
23866: inline __complex__ float
23866: __complex_asin(__complex__ float __z)
23866: { return __builtin_casinf(__z); }
23866:
23866: inline __complex__ double
23866: __complex_asin(__complex__ double __z)
23866: { return __builtin_casin(__z); }
23866:
23866: inline __complex__ long double
23866: __complex_asin(const __complex__ long double& __z)
23866: { return __builtin_casinl(__z); }
23866:
23866: template<typename _Tp>
23866: inline std::complex<_Tp>
23866: asin(const std::complex<_Tp>& __z)
23866: { return __complex_asin(__z.__rep()); }
23866: # 1674 "/usr/include/c++/10/complex" 3
23866: template<typename _Tp>
23866: std::complex<_Tp>
23866: __complex_atan(const std::complex<_Tp>& __z)
23866: {
23866: const _Tp __r2 = __z.real() * __z.real();
23866: const _Tp __x = _Tp(1.0) - __r2 - __z.imag() * __z.imag();
23866:
23866: _Tp __num = __z.imag() + _Tp(1.0);
23866: _Tp __den = __z.imag() - _Tp(1.0);
23866:
23866: __num = __r2 + __num * __num;
23866: __den = __r2 + __den * __den;
23866:
23866: return std::complex<_Tp>(_Tp(0.5) * atan2(_Tp(2.0) * __z.real(), __x),
23866: _Tp(0.25) * log(__num / __den));
23866: }
23866:
23866:
23866: inline __complex__ float
23866: __complex_atan(__complex__ float __z)
23866: { return __builtin_catanf(__z); }
23866:
23866: inline __complex__ double
23866: __complex_atan(__complex__ double __z)
23866: { return __builtin_catan(__z); }
23866:
23866: inline __complex__ long double
23866: __complex_atan(const __complex__ long double& __z)
23866: { return __builtin_catanl(__z); }
23866:
23866: template<typename _Tp>
23866: inline std::complex<_Tp>
23866: atan(const std::complex<_Tp>& __z)
23866: { return __complex_atan(__z.__rep()); }
23866: # 1718 "/usr/include/c++/10/complex" 3
23866: template<typename _Tp>
23866: std::complex<_Tp>
23866: __complex_acosh(const std::complex<_Tp>& __z)
23866: {
23866:
23866: return _Tp(2.0) * std::log(std::sqrt(_Tp(0.5) * (__z + _Tp(1.0)))
23866: + std::sqrt(_Tp(0.5) * (__z - _Tp(1.0))));
23866: }
23866:
23866:
23866: inline __complex__ float
23866: __complex_acosh(__complex__ float __z)
23866: { return __builtin_cacoshf(__z); }
23866:
23866: inline __complex__ double
23866: __complex_acosh(__complex__ double __z)
23866: { return __builtin_cacosh(__z); }
23866:
23866: inline __complex__ long double
23866: __complex_acosh(const __complex__ long double& __z)
23866: { return __builtin_cacoshl(__z); }
23866:
23866: template<typename _Tp>
23866: inline std::complex<_Tp>
23866: acosh(const std::complex<_Tp>& __z)
23866: { return __complex_acosh(__z.__rep()); }
23866: # 1754 "/usr/include/c++/10/complex" 3
23866: template<typename _Tp>
23866: std::complex<_Tp>
23866: __complex_asinh(const std::complex<_Tp>& __z)
23866: {
23866: std::complex<_Tp> __t((__z.real() - __z.imag())
23866: * (__z.real() + __z.imag()) + _Tp(1.0),
23866: _Tp(2.0) * __z.real() * __z.imag());
23866: __t = std::sqrt(__t);
23866:
23866: return std::log(__t + __z);
23866: }
23866:
23866:
23866: inline __complex__ float
23866: __complex_asinh(__complex__ float __z)
23866: { return __builtin_casinhf(__z); }
23866:
23866: inline __complex__ double
23866: __complex_asinh(__complex__ double __z)
23866: { return __builtin_casinh(__z); }
23866:
23866: inline __complex__ long double
23866: __complex_asinh(const __complex__ long double& __z)
23866: { return __builtin_casinhl(__z); }
23866:
23866: template<typename _Tp>
23866: inline std::complex<_Tp>
23866: asinh(const std::complex<_Tp>& __z)
23866: { return __complex_asinh(__z.__rep()); }
23866: # 1793 "/usr/include/c++/10/complex" 3
23866: template<typename _Tp>
23866: std::complex<_Tp>
23866: __complex_atanh(const std::complex<_Tp>& __z)
23866: {
23866: const _Tp __i2 = __z.imag() * __z.imag();
23866: const _Tp __x = _Tp(1.0) - __i2 - __z.real() * __z.real();
23866:
23866: _Tp __num = _Tp(1.0) + __z.real();
23866: _Tp __den = _Tp(1.0) - __z.real();
23866:
23866: __num = __i2 + __num * __num;
23866: __den = __i2 + __den * __den;
23866:
23866: return std::complex<_Tp>(_Tp(0.25) * (log(__num) - log(__den)),
23866: _Tp(0.5) * atan2(_Tp(2.0) * __z.imag(), __x));
23866: }
23866:
23866:
23866: inline __complex__ float
23866: __complex_atanh(__complex__ float __z)
23866: { return __builtin_catanhf(__z); }
23866:
23866: inline __complex__ double
23866: __complex_atanh(__complex__ double __z)
23866: { return __builtin_catanh(__z); }
23866:
23866: inline __complex__ long double
23866: __complex_atanh(const __complex__ long double& __z)
23866: { return __builtin_catanhl(__z); }
23866:
23866: template<typename _Tp>
23866: inline std::complex<_Tp>
23866: atanh(const std::complex<_Tp>& __z)
23866: { return __complex_atanh(__z.__rep()); }
23866: # 1837 "/usr/include/c++/10/complex" 3
23866: template<typename _Tp>
23866: inline _Tp
23866:
23866:
23866:
23866: fabs(const std::complex<_Tp>& __z)
23866: { return std::abs(__z); }
23866:
23866:
23866: template<typename _Tp>
23866: inline typename __gnu_cxx::__promote<_Tp>::__type
23866: arg(_Tp __x)
23866: {
23866: typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
23866:
23866: return std::signbit(__x) ? __type(3.1415926535897932384626433832795029L)
23866: : __type();
23866:
23866:
23866:
23866: }
23866:
23866: template<typename _Tp>
23866: constexpr inline typename __gnu_cxx::__promote<_Tp>::__type
23866: imag(_Tp)
23866: { return _Tp(); }
23866:
23866: template<typename _Tp>
23866: inline typename __gnu_cxx::__promote<_Tp>::__type
23866: norm(_Tp __x)
23866: {
23866: typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
23866: return __type(__x) * __type(__x);
23866: }
23866:
23866: template<typename _Tp>
23866: constexpr inline typename __gnu_cxx::__promote<_Tp>::__type
23866: real(_Tp __x)
23866: { return __x; }
23866:
23866: template<typename _Tp, typename _Up>
23866: inline std::complex<typename __gnu_cxx::__promote_2<_Tp, _Up>::__type>
23866: pow(const std::complex<_Tp>& __x, const _Up& __y)
23866: {
23866: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
23866: return std::pow(std::complex<__type>(__x), __type(__y));
23866: }
23866:
23866: template<typename _Tp, typename _Up>
23866: inline std::complex<typename __gnu_cxx::__promote_2<_Tp, _Up>::__type>
23866: pow(const _Tp& __x, const std::complex<_Up>& __y)
23866: {
23866: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
23866: return std::pow(__type(__x), std::complex<__type>(__y));
23866: }
23866:
23866: template<typename _Tp, typename _Up>
23866: inline std::complex<typename __gnu_cxx::__promote_2<_Tp, _Up>::__type>
23866: pow(const std::complex<_Tp>& __x, const std::complex<_Up>& __y)
23866: {
23866: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
23866: return std::pow(std::complex<__type>(__x),
23866: std::complex<__type>(__y));
23866: }
23866:
23866:
23866:
23866: template<typename _Tp>
23866: std::complex<_Tp> proj(const std::complex<_Tp>&);
23866:
23866:
23866: template<typename _Tp>
23866: inline std::complex<_Tp>
23866: __complex_proj(const std::complex<_Tp>& __z)
23866: { return __z; }
23866:
23866:
23866: inline complex<float>
23866: __complex_proj(const complex<float>& __z)
23866: { return __builtin_cprojf(__z.__rep()); }
23866:
23866: inline complex<double>
23866: __complex_proj(const complex<double>& __z)
23866: { return __builtin_cproj(__z.__rep()); }
23866:
23866: inline complex<long double>
23866: __complex_proj(const complex<long double>& __z)
23866: { return __builtin_cprojl(__z.__rep()); }
23866: # 1954 "/usr/include/c++/10/complex" 3
23866: template<typename _Tp>
23866: inline std::complex<_Tp>
23866: proj(const std::complex<_Tp>& __z)
23866: { return __complex_proj(__z); }
23866:
23866:
23866: template<typename _Tp>
23866: inline std::complex<typename __gnu_cxx::__promote<_Tp>::__type>
23866: proj(_Tp __x)
23866: {
23866: typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
23866: return std::proj(std::complex<__type>(__x));
23866: }
23866:
23866: template<typename _Tp>
23866: inline
23866: std::complex<typename __gnu_cxx::__promote<_Tp>::__type>
23866: conj(_Tp __x)
23866: {
23866: typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
23866: return std::complex<__type>(__x, -__type());
23866: }
23866:
23866:
23866:
23866: inline namespace literals {
23866: inline namespace complex_literals {
23866: #pragma GCC diagnostic push
23866: #pragma GCC diagnostic ignored "-Wliteral-suffix"
23866: #define __cpp_lib_complex_udls 201309
23866:
23866: constexpr std::complex<float>
23866: operator""if(long double __num)
23866: { return std::complex<float>{0.0F, static_cast<float>(__num)}; }
23866:
23866: constexpr std::complex<float>
23866: operator""if(unsigned long long __num)
23866: { return std::complex<float>{0.0F, static_cast<float>(__num)}; }
23866:
23866: constexpr std::complex<double>
23866: operator""i(long double __num)
23866: { return std::complex<double>{0.0, static_cast<double>(__num)}; }
23866:
23866: constexpr std::complex<double>
23866: operator""i(unsigned long long __num)
23866: { return std::complex<double>{0.0, static_cast<double>(__num)}; }
23866:
23866: constexpr std::complex<long double>
23866: operator""il(long double __num)
23866: { return std::complex<long double>{0.0L, __num}; }
23866:
23866: constexpr std::complex<long double>
23866: operator""il(unsigned long long __num)
23866: { return std::complex<long double>{0.0L, static_cast<long double>(__num)}; }
23866:
23866: #pragma GCC diagnostic pop
23866: }
23866: }
23866:
23866:
23866:
23866:
23866: }
23866: # 13 "/usr/include/boost/type_traits/is_complex.hpp" 2 3 4
23866:
23866:
23866: namespace boost {
23866:
23866: template <class T> struct is_complex : public false_type {};
23866: template <class T> struct is_complex<const T > : public is_complex<T>{};
23866: template <class T> struct is_complex<volatile const T > : public is_complex<T>{};
23866: template <class T> struct is_complex<volatile T > : public is_complex<T>{};
23866: template <class T> struct is_complex<std::complex<T> > : public true_type{};
23866:
23866: }
23866: # 22 "/usr/include/boost/multiprecision/number.hpp" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/multiprecision/detail/precision.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MP_PRECISION_HPP
23866:
23866: # 1 "/usr/include/boost/multiprecision/traits/is_variable_precision.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MP_IS_VARIABLE_PRECISION_HPP
23866:
23866:
23866: # 1 "/usr/include/boost/multiprecision/detail/number_base.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MATH_BIG_NUM_BASE_HPP
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/core/nvp.hpp" 1 3 4
23866: # 9 "/usr/include/boost/core/nvp.hpp" 3 4
23866: #define BOOST_CORE_NVP_HPP
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace serialization {
23866:
23866: template<class T>
23866: class nvp {
23866: public:
23866: nvp(const char* n, T& v) noexcept
23866: : n_(n)
23866: , v_(boost::addressof(v)) { }
23866:
23866: const char* name() const noexcept {
23866: return n_;
23866: }
23866:
23866: T& value() const noexcept {
23866: return *v_;
23866: }
23866:
23866: const T& const_value() const noexcept {
23866: return *v_;
23866: }
23866:
23866: private:
23866: const char* n_;
23866: T* v_;
23866: };
23866:
23866: template<class T>
23866: inline const nvp<T>
23866: make_nvp(const char* n, T& v) noexcept
23866: {
23866: return nvp<T>(n, v);
23866: }
23866:
23866: }
23866:
23866: using serialization::nvp;
23866: using serialization::make_nvp;
23866:
23866: }
23866:
23866: #define BOOST_NVP(v) boost::make_nvp(BOOST_STRINGIZE(v), v)
23866: # 12 "/usr/include/boost/multiprecision/detail/number_base.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/decay.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/decay.hpp" 3 4
23866: #define BOOST_TT_DECAY_HPP_INCLUDED
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/type_traits/remove_bounds.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/remove_bounds.hpp" 3 4
23866: #define BOOST_TT_REMOVE_BOUNDS_HPP_INCLUDED
23866:
23866: # 1 "/usr/include/boost/type_traits/remove_extent.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/remove_extent.hpp" 3 4
23866: #define BOOST_TT_REMOVE_EXTENT_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866:
23866: template <class T> struct remove_extent{ typedef T type; };
23866:
23866:
23866: template <typename T, std::size_t N> struct remove_extent<T[N]> { typedef T type; };
23866: template <typename T, std::size_t N> struct remove_extent<T const[N]> { typedef T const type; };
23866: template <typename T, std::size_t N> struct remove_extent<T volatile [N]> { typedef T volatile type; };
23866: template <typename T, std::size_t N> struct remove_extent<T const volatile [N]> { typedef T const volatile type; };
23866:
23866: template <typename T> struct remove_extent<T[]> { typedef T type; };
23866: template <typename T> struct remove_extent<T const[]> { typedef T const type; };
23866: template <typename T> struct remove_extent<T volatile[]> { typedef T volatile type; };
23866: template <typename T> struct remove_extent<T const volatile[]> { typedef T const volatile type; };
23866:
23866:
23866:
23866:
23866:
23866: template <class T> using remove_extent_t = typename remove_extent<T>::type;
23866:
23866:
23866:
23866: }
23866: # 13 "/usr/include/boost/type_traits/remove_bounds.hpp" 2 3 4
23866:
23866: namespace boost
23866: {
23866:
23866: template <class T> struct remove_bounds : public remove_extent<T> {};
23866:
23866:
23866:
23866: template <class T> using remove_bounds_t = typename remove_bounds<T>::type;
23866:
23866:
23866:
23866:
23866: }
23866: # 15 "/usr/include/boost/type_traits/decay.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: namespace boost
23866: {
23866:
23866: namespace detail
23866: {
23866:
23866: template <class T, bool Array, bool Function> struct decay_imp { typedef typename remove_cv<T>::type type; };
23866: template <class T> struct decay_imp<T, true, false> { typedef typename remove_bounds<T>::type* type; };
23866: template <class T> struct decay_imp<T, false, true> { typedef T* type; };
23866:
23866: }
23866:
23866: template< class T >
23866: struct decay
23866: {
23866: private:
23866: typedef typename remove_reference<T>::type Ty;
23866: public:
23866: typedef typename boost::detail::decay_imp<Ty, boost::is_array<Ty>::value, boost::is_function<Ty>::value>::type type;
23866: };
23866:
23866:
23866:
23866: template <class T> using decay_t = typename decay<T>::type;
23866:
23866:
23866:
23866: }
23866: # 15 "/usr/include/boost/multiprecision/detail/number_base.hpp" 2 3 4
23866: # 1 "/usr/include/boost/math/tools/complex.hpp" 1 3 4
23866: # 11 "/usr/include/boost/math/tools/complex.hpp" 3 4
23866: #define BOOST_MATH_TOOLS_COMPLEX_HPP
23866:
23866:
23866:
23866: namespace boost {
23866: namespace math {
23866: namespace tools {
23866:
23866:
23866:
23866:
23866: template <class T>
23866: struct is_complex_type : public boost::is_complex<T> {};
23866:
23866:
23866:
23866:
23866: template <class T, bool = is_complex_type<T>::value>
23866: struct integer_scalar_type
23866: {
23866: typedef int type;
23866: };
23866: template <class T>
23866: struct integer_scalar_type<T, true>
23866: {
23866: typedef typename T::value_type type;
23866: };
23866: template <class T, bool = is_complex_type<T>::value>
23866: struct unsigned_scalar_type
23866: {
23866: typedef unsigned type;
23866: };
23866: template <class T>
23866: struct unsigned_scalar_type<T, true>
23866: {
23866: typedef typename T::value_type type;
23866: };
23866: template <class T, bool = is_complex_type<T>::value>
23866: struct scalar_type
23866: {
23866: typedef T type;
23866: };
23866: template <class T>
23866: struct scalar_type<T, true>
23866: {
23866: typedef typename T::value_type type;
23866: };
23866:
23866:
23866: } } }
23866: # 16 "/usr/include/boost/multiprecision/detail/number_base.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/lexical_cast.hpp" 1 3 4
23866: # 19 "/usr/include/boost/lexical_cast.hpp" 3 4
23866: #define BOOST_LEXICAL_CAST_INCLUDED
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/lexical_cast/bad_lexical_cast.hpp" 1 3 4
23866: # 19 "/usr/include/boost/lexical_cast/bad_lexical_cast.hpp" 3 4
23866: #define BOOST_LEXICAL_CAST_BAD_LEXICAL_CAST_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost
23866: {
23866:
23866: class __attribute__((__visibility__("default"))) bad_lexical_cast :
23866:
23866:
23866:
23866:
23866: public std::bad_cast
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: {
23866: public:
23866: bad_lexical_cast() noexcept
23866:
23866: : source(&typeid(void)), target(&typeid(void))
23866:
23866: {}
23866:
23866: const char *what() const noexcept override {
23866: return "bad lexical cast: "
23866: "source type value could not be interpreted as target";
23866: }
23866:
23866: ~bad_lexical_cast() noexcept override
23866: {}
23866:
23866:
23866: private:
23866:
23866:
23866:
23866: typedef ::std::type_info type_info_t;
23866:
23866: public:
23866: bad_lexical_cast(
23866: const type_info_t &source_type_arg,
23866: const type_info_t &target_type_arg) noexcept
23866: : source(&source_type_arg), target(&target_type_arg)
23866: {}
23866:
23866: const type_info_t &source_type() const noexcept {
23866: return *source;
23866: }
23866:
23866: const type_info_t &target_type() const noexcept {
23866: return *target;
23866: }
23866:
23866: private:
23866: const type_info_t *source;
23866: const type_info_t *target;
23866:
23866: };
23866:
23866: namespace conversion { namespace detail {
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class S, class T>
23866: inline void throw_bad_cast() {
23866: boost::throw_exception(bad_lexical_cast(typeid(S), typeid(T)));
23866: }
23866:
23866: }}
23866:
23866: }
23866: # 32 "/usr/include/boost/lexical_cast.hpp" 2 3 4
23866: # 1 "/usr/include/boost/lexical_cast/try_lexical_convert.hpp" 1 3 4
23866: # 19 "/usr/include/boost/lexical_cast/try_lexical_convert.hpp" 3 4
23866: #define BOOST_LEXICAL_CAST_TRY_LEXICAL_CONVERT_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #pragma GCC diagnostic push
23866: #pragma GCC diagnostic ignored "-Wuninitialized"
23866: #pragma GCC diagnostic ignored "-Wsign-conversion"
23866: # 42 "/usr/include/boost/lexical_cast/try_lexical_convert.hpp" 3 4
23866: # 1 "/usr/include/boost/lexical_cast/detail/is_character.hpp" 1 3 4
23866: # 19 "/usr/include/boost/lexical_cast/detail/is_character.hpp" 3 4
23866: #define BOOST_LEXICAL_CAST_DETAIL_IS_CHARACTER_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866:
23866: namespace detail
23866: {
23866:
23866: template < typename T >
23866: struct is_character
23866: {
23866: typedef typename boost::integral_constant<
23866: bool,
23866: boost::is_same< T, char >::value ||
23866:
23866: boost::is_same< T, wchar_t >::value ||
23866:
23866:
23866: boost::is_same< T, char16_t >::value ||
23866:
23866:
23866: boost::is_same< T, char32_t >::value ||
23866:
23866: boost::is_same< T, unsigned char >::value ||
23866: boost::is_same< T, signed char >::value
23866: > type;
23866:
23866: static const bool value = (type::value);
23866: };
23866: }
23866: }
23866: # 43 "/usr/include/boost/lexical_cast/try_lexical_convert.hpp" 2 3 4
23866: # 1 "/usr/include/boost/lexical_cast/detail/converter_numeric.hpp" 1 3 4
23866: # 19 "/usr/include/boost/lexical_cast/detail/converter_numeric.hpp" 3 4
23866: #define BOOST_LEXICAL_CAST_DETAIL_CONVERTER_NUMERIC_HPP
23866:
23866:
23866:
23866:
23866: # 33 "/usr/include/boost/lexical_cast/detail/converter_numeric.hpp" 3 4
23866: # 1 "/usr/include/boost/type_traits/is_base_of.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/is_base_of.hpp" 3 4
23866: #define BOOST_TT_IS_BASE_OF_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866:
23866: namespace detail{
23866: template <class B, class D>
23866: struct is_base_of_imp
23866: {
23866: typedef typename remove_cv<B>::type ncvB;
23866: typedef typename remove_cv<D>::type ncvD;
23866: static const bool value = ( (::boost::detail::is_base_and_derived_impl<ncvB,ncvD>::value) || (::boost::is_same<ncvB,ncvD>::value && ::boost::is_class<ncvB>::value))
23866:
23866: ;
23866: };
23866: }
23866:
23866: template <class Base, class Derived> struct is_base_of
23866: : public integral_constant<bool, (::boost::detail::is_base_of_imp<Base, Derived>::value)> {};
23866:
23866: template <class Base, class Derived> struct is_base_of<Base, Derived&> : false_type{};
23866: template <class Base, class Derived> struct is_base_of<Base&, Derived&> : false_type{};
23866: template <class Base, class Derived> struct is_base_of<Base&, Derived> : false_type{};
23866:
23866: }
23866: # 34 "/usr/include/boost/lexical_cast/detail/converter_numeric.hpp" 2 3 4
23866: # 1 "/usr/include/boost/type_traits/is_float.hpp" 1 3 4
23866: # 9 "/usr/include/boost/type_traits/is_float.hpp" 3 4
23866: #define BOOST_TYPE_TRAITS_IS_FLOAT_HPP_INCLUDED
23866:
23866:
23866:
23866:
23866: namespace boost {
23866:
23866:
23866: template <class T> struct is_float : public is_floating_point<T> {};
23866: }
23866: # 35 "/usr/include/boost/lexical_cast/detail/converter_numeric.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/numeric/conversion/cast.hpp" 1 3 4
23866: # 22 "/usr/include/boost/numeric/conversion/cast.hpp" 3 4
23866: #define BOOST_NUMERIC_CONVERSION_CAST_25OCT2001_HPP
23866: # 32 "/usr/include/boost/numeric/conversion/cast.hpp" 3 4
23866: # 1 "/usr/include/boost/type.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_TYPE_DWA20010120_HPP
23866:
23866: namespace boost {
23866:
23866:
23866:
23866: template <class T>
23866: struct type {};
23866:
23866: }
23866: # 33 "/usr/include/boost/numeric/conversion/cast.hpp" 2 3 4
23866: # 1 "/usr/include/boost/numeric/conversion/converter.hpp" 1 3 4
23866: # 11 "/usr/include/boost/numeric/conversion/converter.hpp" 3 4
23866: #define BOOST_NUMERIC_CONVERSION_CONVERTER_FLC_12NOV2002_HPP
23866:
23866: # 1 "/usr/include/boost/numeric/conversion/conversion_traits.hpp" 1 3 4
23866: # 11 "/usr/include/boost/numeric/conversion/conversion_traits.hpp" 3 4
23866: #define BOOST_NUMERIC_CONVERSION_CONVERSION_TRAITS_FLC_12NOV2002_HPP
23866:
23866: # 1 "/usr/include/boost/numeric/conversion/detail/conversion_traits.hpp" 1 3 4
23866: # 11 "/usr/include/boost/numeric/conversion/detail/conversion_traits.hpp" 3 4
23866: #define BOOST_NUMERIC_CONVERSION_DETAIL_CONVERSION_TRAITS_FLC_12NOV2002_HPP
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/numeric/conversion/detail/meta.hpp" 1 3 4
23866: # 11 "/usr/include/boost/numeric/conversion/detail/meta.hpp" 3 4
23866: #define BOOST_NUMERIC_CONVERSION_DETAIL_META_FLC_12NOV2002_HPP
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/equal_to.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_EQUAL_TO_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/equal_to.hpp" 3 4
23866: #define AUX778076_OP_NAME equal_to
23866: #define AUX778076_OP_TOKEN ==
23866: # 1 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 1 3 4
23866: # 22 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 3 4
23866: #define AUX778076_OP_PREFIX AUX778076_OP_NAME
23866:
23866:
23866: #define AUX778076_OP_ARITY 2
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 1 3 4
23866: # 22 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/apply_wrap.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 2 3 4
23866: # 28 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_PREPROCESSED_HEADER AUX778076_OP_PREFIX.hpp
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename Tag1
23866: , typename Tag2
23866: >
23866: struct equal_to_impl
23866: : if_c<
23866: ( Tag1::value
23866: > Tag2::value
23866: )
23866:
23866: , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
23866: , aux::cast1st_impl< equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
23866: >::type
23866: {
23866: };
23866:
23866:
23866: template<> struct equal_to_impl< na,na >
23866: {
23866: template< typename U1, typename U2 > struct apply
23866: {
23866: typedef apply type;
23866: static const int value = 0;
23866: };
23866: };
23866:
23866: template< typename Tag > struct equal_to_impl< na,Tag >
23866: {
23866: template< typename U1, typename U2 > struct apply
23866: {
23866: typedef apply type;
23866: static const int value = 0;
23866: };
23866: };
23866:
23866: template< typename Tag > struct equal_to_impl< Tag,na >
23866: {
23866: template< typename U1, typename U2 > struct apply
23866: {
23866: typedef apply type;
23866: static const int value = 0;
23866: };
23866: };
23866:
23866: template< typename T > struct equal_to_tag
23866: {
23866: typedef typename T::tag type;
23866: };
23866:
23866: template<
23866: typename N1 = na
23866: , typename N2 = na
23866: >
23866: struct equal_to
23866:
23866: : equal_to_impl<
23866: typename equal_to_tag<N1>::type
23866: , typename equal_to_tag<N2>::type
23866: >::template apply< N1,N2 >::type
23866: {
23866:
23866:
23866: };
23866:
23866: template<> struct equal_to< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : equal_to< T1 , T2 > { }; }; template< typename Tag > struct lambda< equal_to< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef equal_to< na , na > result_; typedef equal_to< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< equal_to< T1 , T2 > > : int_<2> { }; template<> struct template_arity< equal_to< na , na > > : int_<-1> { }; }
23866:
23866: }}
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<>
23866: struct equal_to_impl< integral_c_tag,integral_c_tag >
23866: {
23866: template< typename N1, typename N2 > struct apply
23866:
23866: : bool_< ( N1::value == N2::value ) >
23866: {
23866: };
23866: };
23866:
23866: }}
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 36 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 2 3 4
23866: # 78 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 3 4
23866: #undef AUX778076_OP_TAG_NAME
23866: #undef AUX778076_OP_IMPL_NAME
23866: #undef AUX778076_OP_ARITY
23866: #undef AUX778076_OP_PREFIX
23866: #undef AUX778076_OP_NAME
23866: #undef AUX778076_OP_TOKEN
23866: # 20 "/usr/include/boost/mpl/equal_to.hpp" 2 3 4
23866: # 18 "/usr/include/boost/numeric/conversion/detail/meta.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: namespace boost { namespace numeric { namespace convdetail
23866: {
23866: template< class T1, class T2>
23866: struct equal_to
23866: {
23866:
23866:
23866: enum { x = ( T1::value == T2::value ) };
23866:
23866: static const bool value = x;
23866:
23866: typedef mpl::bool_<value> type;
23866: # 48 "/usr/include/boost/numeric/conversion/detail/meta.hpp" 3 4
23866: };
23866: # 59 "/usr/include/boost/numeric/conversion/detail/meta.hpp" 3 4
23866: template<class Value,
23866: class Case0Val,
23866: class Case1Val,
23866: class Case2Val,
23866: class Case0Type,
23866: class Case1Type,
23866: class Case2Type,
23866: class DefaultType
23866: >
23866: struct ct_switch4
23866: {
23866: typedef mpl::identity<Case0Type> Case0TypeQ ;
23866: typedef mpl::identity<Case1Type> Case1TypeQ ;
23866:
23866: typedef equal_to<Value,Case0Val> is_case0 ;
23866: typedef equal_to<Value,Case1Val> is_case1 ;
23866: typedef equal_to<Value,Case2Val> is_case2 ;
23866:
23866: typedef mpl::if_<is_case2,Case2Type,DefaultType> choose_2_3Q ;
23866: typedef mpl::eval_if<is_case1,Case1TypeQ,choose_2_3Q> choose_1_2_3Q ;
23866:
23866: typedef typename
23866: mpl::eval_if<is_case0,Case0TypeQ,choose_1_2_3Q>::type
23866: type ;
23866: } ;
23866: # 97 "/usr/include/boost/numeric/conversion/detail/meta.hpp" 3 4
23866: template<class expr0, class expr1, class TT, class TF, class FT, class FF>
23866: struct for_both
23866: {
23866: typedef mpl::identity<TF> TF_Q ;
23866: typedef mpl::identity<TT> TT_Q ;
23866:
23866: typedef typename mpl::not_<expr0>::type not_expr0 ;
23866: typedef typename mpl::not_<expr1>::type not_expr1 ;
23866:
23866: typedef typename mpl::and_<expr0,expr1>::type caseTT ;
23866: typedef typename mpl::and_<expr0,not_expr1>::type caseTF ;
23866: typedef typename mpl::and_<not_expr0,expr1>::type caseFT ;
23866:
23866: typedef mpl::if_<caseFT,FT,FF> choose_FT_FF_Q ;
23866: typedef mpl::eval_if<caseTF,TF_Q,choose_FT_FF_Q> choose_TF_FT_FF_Q ;
23866:
23866: typedef typename mpl::eval_if<caseTT,TT_Q,choose_TF_FT_FF_Q>::type type ;
23866: } ;
23866:
23866: } } }
23866: # 18 "/usr/include/boost/numeric/conversion/detail/conversion_traits.hpp" 2 3 4
23866: # 1 "/usr/include/boost/numeric/conversion/detail/int_float_mixture.hpp" 1 3 4
23866: # 11 "/usr/include/boost/numeric/conversion/detail/int_float_mixture.hpp" 3 4
23866: #define BOOST_NUMERIC_CONVERSION_DETAIL_INT_FLOAT_MIXTURE_FLC_12NOV2002_HPP
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/numeric/conversion/int_float_mixture_enum.hpp" 1 3 4
23866: # 11 "/usr/include/boost/numeric/conversion/int_float_mixture_enum.hpp" 3 4
23866: #define BOOST_NUMERIC_CONVERSION_INT_FLOAT_MIXTURE_ENUM_FLC_12NOV2002_HPP
23866:
23866: namespace boost { namespace numeric
23866: {
23866: enum int_float_mixture_enum
23866: {
23866: integral_to_integral
23866: ,integral_to_float
23866: ,float_to_integral
23866: ,float_to_float
23866: } ;
23866:
23866: } }
23866: # 17 "/usr/include/boost/numeric/conversion/detail/int_float_mixture.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: namespace boost { namespace numeric { namespace convdetail
23866: {
23866:
23866: typedef mpl::integral_c<int_float_mixture_enum, integral_to_integral> int2int_c ;
23866: typedef mpl::integral_c<int_float_mixture_enum, integral_to_float> int2float_c ;
23866: typedef mpl::integral_c<int_float_mixture_enum, float_to_integral> float2int_c ;
23866: typedef mpl::integral_c<int_float_mixture_enum, float_to_float> float2float_c ;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<class T,class S>
23866: struct get_int_float_mixture
23866: {
23866: typedef mpl::bool_< ::std::numeric_limits<S>::is_integer > S_int ;
23866: typedef mpl::bool_< ::std::numeric_limits<T>::is_integer > T_int ;
23866:
23866: typedef typename
23866: for_both<S_int, T_int, int2int_c, int2float_c, float2int_c, float2float_c>::type
23866: type ;
23866: } ;
23866: # 55 "/usr/include/boost/numeric/conversion/detail/int_float_mixture.hpp" 3 4
23866: template<class IntFloatMixture, class Int2Int, class Int2Float, class Float2Int, class Float2Float>
23866: struct for_int_float_mixture
23866: {
23866: typedef typename
23866: ct_switch4<IntFloatMixture
23866: ,int2int_c, int2float_c, float2int_c
23866: ,Int2Int , Int2Float , Float2Int , Float2Float
23866: >::type
23866: type ;
23866: } ;
23866:
23866: } } }
23866: # 19 "/usr/include/boost/numeric/conversion/detail/conversion_traits.hpp" 2 3 4
23866: # 1 "/usr/include/boost/numeric/conversion/detail/sign_mixture.hpp" 1 3 4
23866: # 11 "/usr/include/boost/numeric/conversion/detail/sign_mixture.hpp" 3 4
23866: #define BOOST_NUMERIC_CONVERSION_DETAIL_SIGN_MIXTURE_FLC_12NOV2002_HPP
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/numeric/conversion/sign_mixture_enum.hpp" 1 3 4
23866: # 11 "/usr/include/boost/numeric/conversion/sign_mixture_enum.hpp" 3 4
23866: #define BOOST_NUMERIC_CONVERSION_SIGN_MIXTURE_ENUM_FLC_12NOV2002_HPP
23866:
23866: namespace boost { namespace numeric
23866: {
23866: enum sign_mixture_enum
23866: {
23866: unsigned_to_unsigned
23866: ,signed_to_signed
23866: ,signed_to_unsigned
23866: ,unsigned_to_signed
23866: } ;
23866:
23866: } }
23866: # 17 "/usr/include/boost/numeric/conversion/detail/sign_mixture.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: namespace boost { namespace numeric { namespace convdetail
23866: {
23866:
23866: typedef mpl::integral_c<sign_mixture_enum, unsigned_to_unsigned> unsig2unsig_c ;
23866: typedef mpl::integral_c<sign_mixture_enum, signed_to_signed> sig2sig_c ;
23866: typedef mpl::integral_c<sign_mixture_enum, signed_to_unsigned> sig2unsig_c ;
23866: typedef mpl::integral_c<sign_mixture_enum, unsigned_to_signed> unsig2sig_c ;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<class T,class S>
23866: struct get_sign_mixture
23866: {
23866: typedef mpl::bool_< ::std::numeric_limits<S>::is_signed > S_signed ;
23866: typedef mpl::bool_< ::std::numeric_limits<T>::is_signed > T_signed ;
23866:
23866: typedef typename
23866: for_both<S_signed, T_signed, sig2sig_c, sig2unsig_c, unsig2sig_c, unsig2unsig_c>::type
23866: type ;
23866: } ;
23866: # 55 "/usr/include/boost/numeric/conversion/detail/sign_mixture.hpp" 3 4
23866: template<class SignMixture, class Sig2Sig, class Sig2Unsig, class Unsig2Sig, class Unsig2Unsig>
23866: struct for_sign_mixture
23866: {
23866: typedef typename
23866: ct_switch4<SignMixture
23866: , sig2sig_c, sig2unsig_c, unsig2sig_c
23866: , Sig2Sig , Sig2Unsig , Unsig2Sig , Unsig2Unsig
23866: >::type
23866: type ;
23866: } ;
23866:
23866: } } }
23866: # 20 "/usr/include/boost/numeric/conversion/detail/conversion_traits.hpp" 2 3 4
23866: # 1 "/usr/include/boost/numeric/conversion/detail/udt_builtin_mixture.hpp" 1 3 4
23866: # 11 "/usr/include/boost/numeric/conversion/detail/udt_builtin_mixture.hpp" 3 4
23866: #define BOOST_NUMERIC_CONVERSION_DETAIL_UDT_BUILTIN_MIXTURE_FLC_12NOV2002_HPP
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/numeric/conversion/udt_builtin_mixture_enum.hpp" 1 3 4
23866: # 11 "/usr/include/boost/numeric/conversion/udt_builtin_mixture_enum.hpp" 3 4
23866: #define BOOST_NUMERIC_CONVERSION_UDT_BUILTIN_MIXTURE_ENUM_FLC_12NOV2002_HPP
23866:
23866: namespace boost { namespace numeric
23866: {
23866: enum udt_builtin_mixture_enum
23866: {
23866: builtin_to_builtin
23866: ,builtin_to_udt
23866: ,udt_to_builtin
23866: ,udt_to_udt
23866: } ;
23866:
23866: } }
23866: # 16 "/usr/include/boost/numeric/conversion/detail/udt_builtin_mixture.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: namespace boost { namespace numeric { namespace convdetail
23866: {
23866:
23866: typedef mpl::integral_c<udt_builtin_mixture_enum, builtin_to_builtin> builtin2builtin_c ;
23866: typedef mpl::integral_c<udt_builtin_mixture_enum, builtin_to_udt> builtin2udt_c ;
23866: typedef mpl::integral_c<udt_builtin_mixture_enum, udt_to_builtin> udt2builtin_c ;
23866: typedef mpl::integral_c<udt_builtin_mixture_enum, udt_to_udt> udt2udt_c ;
23866: # 37 "/usr/include/boost/numeric/conversion/detail/udt_builtin_mixture.hpp" 3 4
23866: template<class UdtMixture, class BuiltIn2BuiltIn, class BuiltIn2Udt, class Udt2BuiltIn, class Udt2Udt>
23866: struct for_udt_builtin_mixture
23866: {
23866: typedef typename
23866: ct_switch4<UdtMixture
23866: , builtin2builtin_c, builtin2udt_c, udt2builtin_c
23866: , BuiltIn2BuiltIn , BuiltIn2Udt , Udt2BuiltIn , Udt2Udt
23866: >::type
23866: type ;
23866: } ;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<class T,class S>
23866: struct get_udt_builtin_mixture
23866: {
23866: typedef is_arithmetic<S> S_builtin ;
23866: typedef is_arithmetic<T> T_builtin ;
23866:
23866: typedef typename
23866: for_both<S_builtin, T_builtin, builtin2builtin_c, builtin2udt_c, udt2builtin_c, udt2udt_c>::type
23866: type ;
23866: } ;
23866:
23866: } } }
23866: # 21 "/usr/include/boost/numeric/conversion/detail/conversion_traits.hpp" 2 3 4
23866: # 1 "/usr/include/boost/numeric/conversion/detail/is_subranged.hpp" 1 3 4
23866: # 11 "/usr/include/boost/numeric/conversion/detail/is_subranged.hpp" 3 4
23866: #define BOOST_NUMERIC_CONVERSION_DETAIL_IS_SUBRANGED_FLC_12NOV2002_HPP
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/multiplies.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_MULTIPLIES_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/multiplies.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/times.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_TIMES_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/times.hpp" 3 4
23866: #define AUX778076_OP_NAME times
23866: #define AUX778076_OP_TOKEN *
23866: # 1 "/usr/include/boost/mpl/aux_/arithmetic_op.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/arithmetic_op.hpp" 3 4
23866: #define AUX778076_OP_PREFIX AUX778076_OP_NAME
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 1 3 4
23866: # 22 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/apply_wrap.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 2 3 4
23866: # 27 "/usr/include/boost/mpl/aux_/arithmetic_op.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_PREPROCESSED_HEADER AUX778076_OP_PREFIX.hpp
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/times.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/times.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename Tag1
23866: , typename Tag2
23866: >
23866: struct times_impl
23866: : if_c<
23866: ( Tag1::value
23866: > Tag2::value
23866: )
23866:
23866: , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
23866: , aux::cast1st_impl< times_impl< Tag2,Tag2 >,Tag1, Tag2 >
23866: >::type
23866: {
23866: };
23866:
23866:
23866: template<> struct times_impl< na,na >
23866: {
23866: template< typename U1, typename U2 > struct apply
23866: {
23866: typedef apply type;
23866: static const int value = 0;
23866: };
23866: };
23866:
23866: template< typename Tag > struct times_impl< na,Tag >
23866: {
23866: template< typename U1, typename U2 > struct apply
23866: {
23866: typedef apply type;
23866: static const int value = 0;
23866: };
23866: };
23866:
23866: template< typename Tag > struct times_impl< Tag,na >
23866: {
23866: template< typename U1, typename U2 > struct apply
23866: {
23866: typedef apply type;
23866: static const int value = 0;
23866: };
23866: };
23866:
23866: template< typename T > struct times_tag
23866: {
23866: typedef typename T::tag type;
23866: };
23866:
23866: template<
23866: typename N1 = na
23866: , typename N2 = na
23866: , typename N3 = na, typename N4 = na, typename N5 = na
23866: >
23866: struct times
23866: : times< times< times< times< N1,N2 >, N3>, N4>, N5>
23866: {
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866: template<
23866: typename N1, typename N2, typename N3, typename N4
23866: >
23866: struct times< N1,N2,N3,N4,na >
23866:
23866: : times< times< times< N1,N2 >, N3>, N4>
23866: {
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866: template<
23866: typename N1, typename N2, typename N3
23866: >
23866: struct times< N1,N2,N3,na,na >
23866:
23866: : times< times< N1,N2 >, N3>
23866: {
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866: template<
23866: typename N1, typename N2
23866: >
23866: struct times< N1,N2,na,na,na >
23866: : times_impl<
23866: typename times_tag<N1>::type
23866: , typename times_tag<N2>::type
23866: >::template apply< N1,N2 >::type
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866: template<> struct times< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : times< T1 , T2 > { }; }; template< typename Tag > struct lambda< times< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef times< na , na > result_; typedef times< na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > struct template_arity< times< T1 , T2 , T3 , T4 , T5 > > : int_<5> { }; template<> struct template_arity< times< na , na > > : int_<-1> { }; }
23866:
23866: }}
23866:
23866: namespace boost { namespace mpl {
23866: template<>
23866: struct times_impl< integral_c_tag,integral_c_tag >
23866: {
23866: template< typename N1, typename N2 > struct apply
23866:
23866: : integral_c<
23866: typename aux::largest_int<
23866: typename N1::value_type
23866: , typename N2::value_type
23866: >::type
23866: , ( N1::value
23866: * N2::value
23866: )
23866: >
23866: {
23866: };
23866: };
23866:
23866: }}
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 35 "/usr/include/boost/mpl/aux_/arithmetic_op.hpp" 2 3 4
23866: # 87 "/usr/include/boost/mpl/aux_/arithmetic_op.hpp" 3 4
23866: #undef AUX778076_OP_TAG_NAME
23866: #undef AUX778076_OP_IMPL_NAME
23866: #undef AUX778076_OP_ARITY
23866: #undef AUX778076_OP_PREFIX
23866: #undef AUX778076_OP_NAME
23866: #undef AUX778076_OP_TOKEN
23866: # 20 "/usr/include/boost/mpl/times.hpp" 2 3 4
23866: # 18 "/usr/include/boost/mpl/multiplies.hpp" 2 3 4
23866: # 26 "/usr/include/boost/mpl/multiplies.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866:
23866: #define AUX778076_OP_ARITY BOOST_MPL_LIMIT_METAFUNCTION_ARITY
23866:
23866:
23866:
23866:
23866: template<
23866: typename N1 = na , typename N2 = na , typename N3 = na , typename N4 = na , typename N5 = na
23866: >
23866: struct multiplies
23866: : times< N1 , N2 , N3 , N4 , N5 >
23866: {
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866: template<> struct multiplies< na , na , na , na , na > { template< typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > struct apply : multiplies< T1 , T2 , T3 , T4 , T5 > { }; }; template< typename Tag > struct lambda< multiplies< na , na , na , na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef multiplies< na , na , na , na , na > result_; typedef multiplies< na , na , na , na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > struct template_arity< multiplies< T1 , T2 , T3 , T4 , T5 > > : int_<5> { }; template<> struct template_arity< multiplies< na , na , na , na , na > > : int_<-1> { }; }
23866:
23866: #undef AUX778076_OP_ARITY
23866:
23866: }}
23866: # 18 "/usr/include/boost/numeric/conversion/detail/is_subranged.hpp" 2 3 4
23866: # 28 "/usr/include/boost/numeric/conversion/detail/is_subranged.hpp" 3 4
23866: namespace boost { namespace numeric { namespace convdetail
23866: {
23866:
23866:
23866:
23866:
23866:
23866: template<class T,class S>
23866: struct subranged_Sig2Unsig
23866: {
23866:
23866:
23866: typedef mpl::true_ type ;
23866: } ;
23866:
23866:
23866: template<class T,class S>
23866: struct subranged_Unsig2Sig
23866: {
23866: # 62 "/usr/include/boost/numeric/conversion/detail/is_subranged.hpp" 3 4
23866: typedef mpl::int_< ::std::numeric_limits<S>::digits > S_digits ;
23866: typedef mpl::int_< ::std::numeric_limits<T>::digits > T_digits ;
23866:
23866:
23866: typedef typename T_digits::next u_T_digits ;
23866:
23866: typedef mpl::int_<2> Two ;
23866:
23866: typedef typename mpl::multiplies<S_digits,Two>::type S_digits_times_2 ;
23866:
23866: typedef typename mpl::less<u_T_digits,S_digits_times_2>::type type ;
23866: } ;
23866:
23866:
23866: template<class T,class S>
23866: struct subranged_SameSign
23866: {
23866:
23866:
23866: typedef mpl::int_< ::std::numeric_limits<S>::digits > S_digits ;
23866: typedef mpl::int_< ::std::numeric_limits<T>::digits > T_digits ;
23866:
23866: typedef typename mpl::less<T_digits,S_digits>::type type ;
23866: } ;
23866:
23866:
23866: template<class T,class S>
23866: struct subranged_Int2Float
23866: {
23866: typedef mpl::false_ type ;
23866: } ;
23866:
23866:
23866: template<class T,class S>
23866: struct subranged_Float2Int
23866: {
23866: typedef mpl::true_ type ;
23866: } ;
23866:
23866:
23866: template<class T,class S>
23866: struct subranged_Float2Float
23866: {
23866:
23866:
23866:
23866: typedef mpl::int_< ::std::numeric_limits<S>::digits > S_mantisa ;
23866: typedef mpl::int_< ::std::numeric_limits<T>::digits > T_mantisa ;
23866:
23866: typedef mpl::int_< ::std::numeric_limits<S>::max_exponent > S_exponent ;
23866: typedef mpl::int_< ::std::numeric_limits<T>::max_exponent > T_exponent ;
23866:
23866: typedef typename mpl::less<T_exponent,S_exponent>::type T_smaller_exponent ;
23866:
23866: typedef typename mpl::equal_to<T_exponent,S_exponent>::type equal_exponents ;
23866:
23866: typedef mpl::less<T_mantisa,S_mantisa> T_smaller_mantisa ;
23866:
23866: typedef mpl::eval_if<equal_exponents,T_smaller_mantisa,mpl::false_> not_bigger_exponent_case ;
23866:
23866: typedef typename
23866: mpl::eval_if<T_smaller_exponent,mpl::true_,not_bigger_exponent_case>::type
23866: type ;
23866: } ;
23866:
23866:
23866: template<class T,class S>
23866: struct subranged_Udt2BuiltIn
23866: {
23866: typedef mpl::true_ type ;
23866: } ;
23866:
23866:
23866: template<class T,class S>
23866: struct subranged_BuiltIn2Udt
23866: {
23866: typedef mpl::false_ type ;
23866: } ;
23866:
23866:
23866: template<class T,class S>
23866: struct subranged_Udt2Udt
23866: {
23866: typedef mpl::false_ type ;
23866: } ;
23866:
23866:
23866:
23866:
23866:
23866: template<class T,class S>
23866: struct get_subranged_Int2Int
23866: {
23866: typedef subranged_SameSign<T,S> Sig2Sig ;
23866: typedef subranged_Sig2Unsig<T,S> Sig2Unsig ;
23866: typedef subranged_Unsig2Sig<T,S> Unsig2Sig ;
23866: typedef Sig2Sig Unsig2Unsig ;
23866:
23866: typedef typename get_sign_mixture<T,S>::type sign_mixture ;
23866:
23866: typedef typename
23866: for_sign_mixture<sign_mixture, Sig2Sig, Sig2Unsig, Unsig2Sig, Unsig2Unsig>::type
23866: type ;
23866: } ;
23866:
23866: template<class T,class S>
23866: struct get_subranged_BuiltIn2BuiltIn
23866: {
23866: typedef get_subranged_Int2Int<T,S> Int2IntQ ;
23866:
23866: typedef subranged_Int2Float <T,S> Int2Float ;
23866: typedef subranged_Float2Int <T,S> Float2Int ;
23866: typedef subranged_Float2Float<T,S> Float2Float ;
23866:
23866: typedef mpl::identity<Int2Float > Int2FloatQ ;
23866: typedef mpl::identity<Float2Int > Float2IntQ ;
23866: typedef mpl::identity<Float2Float> Float2FloatQ ;
23866:
23866: typedef typename get_int_float_mixture<T,S>::type int_float_mixture ;
23866:
23866: typedef for_int_float_mixture<int_float_mixture, Int2IntQ, Int2FloatQ, Float2IntQ, Float2FloatQ> for_ ;
23866:
23866: typedef typename for_::type selected ;
23866:
23866: typedef typename selected::type type ;
23866: } ;
23866:
23866: template<class T,class S>
23866: struct get_subranged
23866: {
23866: typedef get_subranged_BuiltIn2BuiltIn<T,S> BuiltIn2BuiltInQ ;
23866:
23866: typedef subranged_BuiltIn2Udt<T,S> BuiltIn2Udt ;
23866: typedef subranged_Udt2BuiltIn<T,S> Udt2BuiltIn ;
23866: typedef subranged_Udt2Udt<T,S> Udt2Udt ;
23866:
23866: typedef mpl::identity<BuiltIn2Udt> BuiltIn2UdtQ ;
23866: typedef mpl::identity<Udt2BuiltIn> Udt2BuiltInQ ;
23866: typedef mpl::identity<Udt2Udt > Udt2UdtQ ;
23866:
23866: typedef typename get_udt_builtin_mixture<T,S>::type udt_builtin_mixture ;
23866:
23866: typedef typename
23866: for_udt_builtin_mixture<udt_builtin_mixture, BuiltIn2BuiltInQ, BuiltIn2UdtQ, Udt2BuiltInQ, Udt2UdtQ>::type
23866: selected ;
23866:
23866: typedef typename selected::type selected2 ;
23866:
23866: typedef typename selected2::type type ;
23866: } ;
23866:
23866:
23866:
23866:
23866:
23866: template<class T, class S>
23866: struct get_is_subranged
23866: {
23866: typedef get_subranged<T,S> non_trivial_case ;
23866: typedef mpl::identity<mpl::false_> trivial_case ;
23866:
23866: typedef is_same<T,S> is_trivial ;
23866:
23866: typedef typename mpl::if_<is_trivial,trivial_case,non_trivial_case>::type selected ;
23866:
23866: typedef typename selected::type type ;
23866: } ;
23866:
23866: } } }
23866: # 22 "/usr/include/boost/numeric/conversion/detail/conversion_traits.hpp" 2 3 4
23866:
23866: namespace boost { namespace numeric { namespace convdetail
23866: {
23866:
23866:
23866:
23866:
23866:
23866: template<class T,class S>
23866: struct non_trivial_traits_impl
23866: {
23866: typedef typename get_int_float_mixture <T,S>::type int_float_mixture ;
23866: typedef typename get_sign_mixture <T,S>::type sign_mixture ;
23866: typedef typename get_udt_builtin_mixture <T,S>::type udt_builtin_mixture ;
23866:
23866: typedef typename get_is_subranged<T,S>::type subranged ;
23866:
23866: typedef mpl::false_ trivial ;
23866:
23866: typedef T target_type ;
23866: typedef S source_type ;
23866: typedef T result_type ;
23866:
23866: typedef typename mpl::if_< is_arithmetic<S>, S, S const&>::type argument_type ;
23866:
23866: typedef typename mpl::if_<subranged,S,T>::type supertype ;
23866: typedef typename mpl::if_<subranged,T,S>::type subtype ;
23866: } ;
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<class N>
23866: struct trivial_traits_impl
23866: {
23866: typedef typename get_int_float_mixture <N,N>::type int_float_mixture ;
23866: typedef typename get_sign_mixture <N,N>::type sign_mixture ;
23866: typedef typename get_udt_builtin_mixture<N,N>::type udt_builtin_mixture ;
23866:
23866: typedef mpl::false_ subranged ;
23866: typedef mpl::true_ trivial ;
23866:
23866: typedef N target_type ;
23866: typedef N source_type ;
23866: typedef N const& result_type ;
23866: typedef N const& argument_type ;
23866:
23866: typedef N supertype ;
23866: typedef N subtype ;
23866:
23866: } ;
23866:
23866:
23866:
23866:
23866: template<class T, class S>
23866: struct get_conversion_traits
23866: {
23866: typedef typename remove_cv<T>::type target_type ;
23866: typedef typename remove_cv<S>::type source_type ;
23866:
23866: typedef typename is_same<target_type,source_type>::type is_trivial ;
23866:
23866: typedef trivial_traits_impl <target_type> trivial_imp ;
23866: typedef non_trivial_traits_impl<target_type,source_type> non_trivial_imp ;
23866:
23866: typedef typename mpl::if_<is_trivial,trivial_imp,non_trivial_imp>::type type ;
23866: } ;
23866:
23866: } } }
23866: # 14 "/usr/include/boost/numeric/conversion/conversion_traits.hpp" 2 3 4
23866:
23866:
23866:
23866: namespace boost { namespace numeric
23866: {
23866:
23866: template<class T, class S>
23866: struct conversion_traits
23866: : convdetail::get_conversion_traits<T,S>::type
23866: {
23866: } ;
23866:
23866: } }
23866: # 14 "/usr/include/boost/numeric/conversion/converter.hpp" 2 3 4
23866: # 1 "/usr/include/boost/numeric/conversion/converter_policies.hpp" 1 3 4
23866: # 11 "/usr/include/boost/numeric/conversion/converter_policies.hpp" 3 4
23866: #define BOOST_NUMERIC_CONVERSION_CONVERTER_POLICIES_FLC_12NOV2002_HPP
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/config/no_tr1/cmath.hpp" 1 3 4
23866: # 14 "/usr/include/boost/config/no_tr1/cmath.hpp" 3 4
23866: #define BOOST_CONFIG_CMATH
23866:
23866:
23866: #define BOOST_TR1_NO_RECURSION
23866: #define BOOST_CONFIG_NO_CMATH_RECURSION
23866:
23866:
23866: # 1 "/usr/include/c++/10/cmath" 1 3 4
23866: # 39 "/usr/include/c++/10/cmath" 3 4
23866:
23866: # 40 "/usr/include/c++/10/cmath" 3
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_INCLUDE_NEXT_C_HEADERS
23866:
23866: #undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS
23866: # 22 "/usr/include/boost/config/no_tr1/cmath.hpp" 2 3 4
23866:
23866:
23866: #undef BOOST_TR1_NO_RECURSION
23866: #undef BOOST_CONFIG_NO_CMATH_RECURSION
23866: # 17 "/usr/include/boost/numeric/conversion/converter_policies.hpp" 2 3 4
23866: # 26 "/usr/include/boost/numeric/conversion/converter_policies.hpp" 3 4
23866: namespace boost { namespace numeric
23866: {
23866:
23866: template<class S>
23866: struct Trunc
23866: {
23866: typedef S source_type ;
23866:
23866: typedef typename mpl::if_< is_arithmetic<S>,S,S const&>::type argument_type ;
23866:
23866: static source_type nearbyint ( argument_type s )
23866: {
23866:
23866: using std::floor ;
23866: using std::ceil ;
23866:
23866:
23866: return s < static_cast<S>(0) ? ceil(s) : floor(s) ;
23866: }
23866:
23866: typedef mpl::integral_c< std::float_round_style, std::round_toward_zero> round_style ;
23866: } ;
23866:
23866:
23866:
23866: template<class S>
23866: struct Floor
23866: {
23866: typedef S source_type ;
23866:
23866: typedef typename mpl::if_< is_arithmetic<S>,S,S const&>::type argument_type ;
23866:
23866: static source_type nearbyint ( argument_type s )
23866: {
23866:
23866: using std::floor ;
23866:
23866:
23866: return floor(s) ;
23866: }
23866:
23866: typedef mpl::integral_c< std::float_round_style, std::round_toward_neg_infinity> round_style ;
23866: } ;
23866:
23866: template<class S>
23866: struct Ceil
23866: {
23866: typedef S source_type ;
23866:
23866: typedef typename mpl::if_< is_arithmetic<S>,S,S const&>::type argument_type ;
23866:
23866: static source_type nearbyint ( argument_type s )
23866: {
23866:
23866: using std::ceil ;
23866:
23866:
23866: return ceil(s) ;
23866: }
23866:
23866: typedef mpl::integral_c< std::float_round_style, std::round_toward_infinity> round_style ;
23866: } ;
23866:
23866: template<class S>
23866: struct RoundEven
23866: {
23866: typedef S source_type ;
23866:
23866: typedef typename mpl::if_< is_arithmetic<S>,S,S const&>::type argument_type ;
23866:
23866: static source_type nearbyint ( argument_type s )
23866: {
23866:
23866:
23866:
23866: using std::floor ;
23866: using std::ceil ;
23866:
23866:
23866:
23866: S prev = floor(s);
23866: S next = ceil(s);
23866:
23866: S rt = (s - prev) - (next - s);
23866:
23866: S const zero(0.0);
23866: S const two(2.0);
23866:
23866: if ( rt < zero )
23866: return prev;
23866: else if ( rt > zero )
23866: return next;
23866: else
23866: {
23866: bool is_prev_even = two * floor(prev / two) == prev ;
23866: return ( is_prev_even ? prev : next ) ;
23866: }
23866: }
23866:
23866: typedef mpl::integral_c< std::float_round_style, std::round_to_nearest> round_style ;
23866: } ;
23866:
23866:
23866: enum range_check_result
23866: {
23866: cInRange = 0 ,
23866: cNegOverflow = 1 ,
23866: cPosOverflow = 2
23866: } ;
23866:
23866: class bad_numeric_cast : public std::bad_cast
23866: {
23866: public:
23866:
23866: virtual const char * what() const noexcept
23866: { return "bad numeric conversion: overflow"; }
23866: };
23866:
23866: class negative_overflow : public bad_numeric_cast
23866: {
23866: public:
23866:
23866: virtual const char * what() const noexcept
23866: { return "bad numeric conversion: negative overflow"; }
23866: };
23866: class positive_overflow : public bad_numeric_cast
23866: {
23866: public:
23866:
23866: virtual const char * what() const noexcept
23866: { return "bad numeric conversion: positive overflow"; }
23866: };
23866:
23866: struct def_overflow_handler
23866: {
23866: void operator() ( range_check_result r )
23866: {
23866:
23866: if ( r == cNegOverflow )
23866: throw negative_overflow() ;
23866: else if ( r == cPosOverflow )
23866: throw positive_overflow() ;
23866:
23866:
23866:
23866:
23866:
23866:
23866: }
23866: } ;
23866:
23866: struct silent_overflow_handler
23866: {
23866: void operator() ( range_check_result ) {}
23866: } ;
23866:
23866: template<class Traits>
23866: struct raw_converter
23866: {
23866: typedef typename Traits::result_type result_type ;
23866: typedef typename Traits::argument_type argument_type ;
23866:
23866: static result_type low_level_convert ( argument_type s ) { return static_cast<result_type>(s) ; }
23866: } ;
23866:
23866: struct UseInternalRangeChecker {} ;
23866:
23866: } }
23866: # 15 "/usr/include/boost/numeric/conversion/converter.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/numeric/conversion/detail/converter.hpp" 1 3 4
23866: # 11 "/usr/include/boost/numeric/conversion/detail/converter.hpp" 3 4
23866: #define BOOST_NUMERIC_CONVERSION_DETAIL_CONVERTER_FLC_12NOV2002_HPP
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/numeric/conversion/bounds.hpp" 1 3 4
23866: # 11 "/usr/include/boost/numeric/conversion/bounds.hpp" 3 4
23866: #define BOOST_NUMERIC_CONVERSION_BOUNDS_12NOV2002_HPP
23866:
23866: # 1 "/usr/include/boost/numeric/conversion/detail/bounds.hpp" 1 3 4
23866: # 11 "/usr/include/boost/numeric/conversion/detail/bounds.hpp" 3 4
23866: #define BOOST_NUMERIC_CONVERSION_BOUNDS_DETAIL_FLC_12NOV2002_HPP
23866:
23866:
23866:
23866:
23866:
23866: namespace boost { namespace numeric { namespace boundsdetail
23866: {
23866: template<class N>
23866: class Integral
23866: {
23866: typedef std::numeric_limits<N> limits ;
23866:
23866: public :
23866:
23866: static N lowest () { return limits::min (); }
23866: static N highest () { return limits::max (); }
23866: static N smallest() { return static_cast<N>(1); }
23866: } ;
23866:
23866: template<class N>
23866: class Float
23866: {
23866: typedef std::numeric_limits<N> limits ;
23866:
23866: public :
23866:
23866: static N lowest () { return static_cast<N>(-limits::max ()) ; }
23866: static N highest () { return limits::max (); }
23866: static N smallest() { return limits::min (); }
23866: } ;
23866:
23866: template<class N>
23866: struct get_impl
23866: {
23866: typedef mpl::bool_< ::std::numeric_limits<N>::is_integer > is_int ;
23866:
23866: typedef Integral<N> impl_int ;
23866: typedef Float <N> impl_float ;
23866:
23866: typedef typename mpl::if_<is_int,impl_int,impl_float>::type type ;
23866: } ;
23866:
23866: } } }
23866: # 14 "/usr/include/boost/numeric/conversion/bounds.hpp" 2 3 4
23866:
23866: namespace boost { namespace numeric
23866: {
23866:
23866: template<class N>
23866: struct bounds : boundsdetail::get_impl<N>::type
23866: {} ;
23866:
23866: } }
23866: # 18 "/usr/include/boost/numeric/conversion/detail/converter.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: namespace boost { namespace numeric { namespace convdetail
23866: {
23866:
23866: typedef mpl::integral_c<std::float_round_style, std::round_toward_zero> round2zero_c ;
23866: typedef mpl::integral_c<std::float_round_style, std::round_to_nearest> round2nearest_c ;
23866: typedef mpl::integral_c<std::float_round_style, std::round_toward_infinity> round2inf_c ;
23866: typedef mpl::integral_c<std::float_round_style, std::round_toward_neg_infinity> round2neg_inf_c ;
23866: # 40 "/usr/include/boost/numeric/conversion/detail/converter.hpp" 3 4
23866: template<class RoundStyle,class RoundToZero,class RoundToNearest,class RoundToInf,class RoundToNegInf>
23866: struct for_round_style
23866: {
23866: typedef ct_switch4<RoundStyle
23866: , round2zero_c, round2nearest_c, round2inf_c
23866: , RoundToZero , RoundToNearest , RoundToInf , RoundToNegInf
23866: > selector ;
23866:
23866: typedef typename selector::type type ;
23866: } ;
23866: # 81 "/usr/include/boost/numeric/conversion/detail/converter.hpp" 3 4
23866: struct non_applicable { typedef mpl::false_ do_apply ; } ;
23866: struct applicable { typedef mpl::true_ do_apply ; } ;
23866: # 96 "/usr/include/boost/numeric/conversion/detail/converter.hpp" 3 4
23866: template<class Traits>
23866: struct LT_LoT : applicable
23866: {
23866: typedef typename Traits::target_type T ;
23866: typedef typename Traits::source_type S ;
23866: typedef typename Traits::argument_type argument_type ;
23866:
23866: static range_check_result apply ( argument_type s )
23866: {
23866: return s < static_cast<S>(bounds<T>::lowest()) ? cNegOverflow : cInRange ;
23866: }
23866: } ;
23866:
23866:
23866:
23866: template<class Traits>
23866: struct LT_Zero : applicable
23866: {
23866: typedef typename Traits::source_type S ;
23866: typedef typename Traits::argument_type argument_type ;
23866:
23866: static range_check_result apply ( argument_type s )
23866: {
23866: return s < static_cast<S>(0) ? cNegOverflow : cInRange ;
23866: }
23866: } ;
23866:
23866:
23866:
23866: template<class Traits>
23866: struct LE_PrevLoT : applicable
23866: {
23866: typedef typename Traits::target_type T ;
23866: typedef typename Traits::source_type S ;
23866: typedef typename Traits::argument_type argument_type ;
23866:
23866: static range_check_result apply ( argument_type s )
23866: {
23866: return s <= static_cast<S>(bounds<T>::lowest()) - static_cast<S>(1.0)
23866: ? cNegOverflow : cInRange ;
23866: }
23866: } ;
23866:
23866:
23866:
23866: template<class Traits>
23866: struct LT_HalfPrevLoT : applicable
23866: {
23866: typedef typename Traits::target_type T ;
23866: typedef typename Traits::source_type S ;
23866: typedef typename Traits::argument_type argument_type ;
23866:
23866: static range_check_result apply ( argument_type s )
23866: {
23866: return s < static_cast<S>(bounds<T>::lowest()) - static_cast<S>(0.5)
23866: ? cNegOverflow : cInRange ;
23866: }
23866: } ;
23866:
23866:
23866:
23866: template<class Traits>
23866: struct GT_HiT : applicable
23866: {
23866: typedef typename Traits::target_type T ;
23866: typedef typename Traits::source_type S ;
23866: typedef typename Traits::argument_type argument_type ;
23866:
23866: static range_check_result apply ( argument_type s )
23866: {
23866: return s > static_cast<S>(bounds<T>::highest())
23866: ? cPosOverflow : cInRange ;
23866: }
23866: } ;
23866:
23866:
23866:
23866: template<class Traits>
23866: struct GE_SuccHiT : applicable
23866: {
23866: typedef typename Traits::target_type T ;
23866: typedef typename Traits::source_type S ;
23866: typedef typename Traits::argument_type argument_type ;
23866:
23866: static range_check_result apply ( argument_type s )
23866: {
23866: return s >= static_cast<S>(bounds<T>::highest()) + static_cast<S>(1.0)
23866: ? cPosOverflow : cInRange ;
23866: }
23866: } ;
23866:
23866:
23866:
23866: template<class Traits>
23866: struct GT_HalfSuccHiT : applicable
23866: {
23866: typedef typename Traits::target_type T ;
23866: typedef typename Traits::source_type S ;
23866: typedef typename Traits::argument_type argument_type ;
23866:
23866: static range_check_result apply ( argument_type s )
23866: {
23866: return s >= static_cast<S>(bounds<T>::highest()) + static_cast<S>(0.5)
23866: ? cPosOverflow : cInRange ;
23866: }
23866: } ;
23866: # 215 "/usr/include/boost/numeric/conversion/detail/converter.hpp" 3 4
23866: template<class PredA, class PredB>
23866: struct applyBoth
23866: {
23866: typedef typename PredA::argument_type argument_type ;
23866:
23866: static range_check_result apply ( argument_type s )
23866: {
23866: range_check_result r = PredA::apply(s) ;
23866: if ( r == cInRange )
23866: r = PredB::apply(s);
23866: return r ;
23866: }
23866: } ;
23866:
23866: template<class PredA, class PredB>
23866: struct combine
23866: {
23866: typedef applyBoth<PredA,PredB> Both ;
23866: typedef void NNone ;
23866:
23866: typedef typename PredA::do_apply do_applyA ;
23866: typedef typename PredB::do_apply do_applyB ;
23866:
23866: typedef typename for_both<do_applyA, do_applyB, Both, PredA, PredB, NNone>::type type ;
23866: } ;
23866: # 262 "/usr/include/boost/numeric/conversion/detail/converter.hpp" 3 4
23866: template<class Traits>
23866: struct dummy_range_checker
23866: {
23866: typedef typename Traits::argument_type argument_type ;
23866:
23866: static range_check_result out_of_range ( argument_type ) { return cInRange ; }
23866: static void validate_range ( argument_type ) {}
23866: } ;
23866: # 279 "/usr/include/boost/numeric/conversion/detail/converter.hpp" 3 4
23866: template<class Traits, class IsNegOverflow, class IsPosOverflow, class OverflowHandler>
23866: struct generic_range_checker
23866: {
23866: typedef OverflowHandler overflow_handler ;
23866:
23866: typedef typename Traits::argument_type argument_type ;
23866:
23866: static range_check_result out_of_range ( argument_type s )
23866: {
23866: typedef typename combine<IsNegOverflow,IsPosOverflow>::type Predicate ;
23866:
23866: return Predicate::apply(s);
23866: }
23866:
23866: static void validate_range ( argument_type s )
23866: { OverflowHandler()( out_of_range(s) ) ; }
23866: } ;
23866: # 305 "/usr/include/boost/numeric/conversion/detail/converter.hpp" 3 4
23866: template<class Traits,class OverflowHandler>
23866: struct GetRC_Sig2Sig_or_Unsig2Unsig
23866: {
23866: typedef dummy_range_checker<Traits> Dummy ;
23866:
23866: typedef LT_LoT<Traits> Pred1 ;
23866: typedef GT_HiT<Traits> Pred2 ;
23866:
23866: typedef generic_range_checker<Traits,Pred1,Pred2,OverflowHandler> Normal ;
23866:
23866: typedef typename Traits::subranged subranged ;
23866:
23866: typedef typename mpl::if_<subranged,Normal,Dummy>::type type ;
23866: } ;
23866:
23866: template<class Traits, class OverflowHandler>
23866: struct GetRC_Sig2Unsig
23866: {
23866: typedef LT_Zero<Traits> Pred1 ;
23866: typedef GT_HiT <Traits> Pred2 ;
23866:
23866: typedef generic_range_checker<Traits,Pred1,Pred2,OverflowHandler> ChoiceA ;
23866:
23866: typedef generic_range_checker<Traits,Pred1,non_applicable,OverflowHandler> ChoiceB ;
23866:
23866: typedef typename Traits::target_type T ;
23866: typedef typename Traits::source_type S ;
23866:
23866: typedef typename subranged_Unsig2Sig<S,T>::type oposite_subranged ;
23866:
23866: typedef typename mpl::not_<oposite_subranged>::type positively_subranged ;
23866:
23866: typedef typename mpl::if_<positively_subranged,ChoiceA,ChoiceB>::type type ;
23866: } ;
23866:
23866: template<class Traits, class OverflowHandler>
23866: struct GetRC_Unsig2Sig
23866: {
23866: typedef GT_HiT<Traits> Pred1 ;
23866:
23866: typedef generic_range_checker<Traits,non_applicable,Pred1,OverflowHandler> type ;
23866: } ;
23866:
23866: template<class Traits,class OverflowHandler>
23866: struct GetRC_Int2Int
23866: {
23866: typedef GetRC_Sig2Sig_or_Unsig2Unsig<Traits,OverflowHandler> Sig2SigQ ;
23866: typedef GetRC_Sig2Unsig <Traits,OverflowHandler> Sig2UnsigQ ;
23866: typedef GetRC_Unsig2Sig <Traits,OverflowHandler> Unsig2SigQ ;
23866: typedef Sig2SigQ Unsig2UnsigQ ;
23866:
23866: typedef typename Traits::sign_mixture sign_mixture ;
23866:
23866: typedef typename
23866: for_sign_mixture<sign_mixture,Sig2SigQ,Sig2UnsigQ,Unsig2SigQ,Unsig2UnsigQ>::type
23866: selector ;
23866:
23866: typedef typename selector::type type ;
23866: } ;
23866:
23866: template<class Traits>
23866: struct GetRC_Int2Float
23866: {
23866: typedef dummy_range_checker<Traits> type ;
23866: } ;
23866:
23866: template<class Traits, class OverflowHandler, class Float2IntRounder>
23866: struct GetRC_Float2Int
23866: {
23866: typedef LE_PrevLoT <Traits> Pred1 ;
23866: typedef GE_SuccHiT <Traits> Pred2 ;
23866: typedef LT_HalfPrevLoT<Traits> Pred3 ;
23866: typedef GT_HalfSuccHiT<Traits> Pred4 ;
23866: typedef GT_HiT <Traits> Pred5 ;
23866: typedef LT_LoT <Traits> Pred6 ;
23866:
23866: typedef generic_range_checker<Traits,Pred1,Pred2,OverflowHandler> ToZero ;
23866: typedef generic_range_checker<Traits,Pred3,Pred4,OverflowHandler> ToNearest ;
23866: typedef generic_range_checker<Traits,Pred1,Pred5,OverflowHandler> ToInf ;
23866: typedef generic_range_checker<Traits,Pred6,Pred2,OverflowHandler> ToNegInf ;
23866:
23866: typedef typename Float2IntRounder::round_style round_style ;
23866:
23866: typedef typename for_round_style<round_style,ToZero,ToNearest,ToInf,ToNegInf>::type type ;
23866: } ;
23866:
23866: template<class Traits, class OverflowHandler>
23866: struct GetRC_Float2Float
23866: {
23866: typedef dummy_range_checker<Traits> Dummy ;
23866:
23866: typedef LT_LoT<Traits> Pred1 ;
23866: typedef GT_HiT<Traits> Pred2 ;
23866:
23866: typedef generic_range_checker<Traits,Pred1,Pred2,OverflowHandler> Normal ;
23866:
23866: typedef typename Traits::subranged subranged ;
23866:
23866: typedef typename mpl::if_<subranged,Normal,Dummy>::type type ;
23866: } ;
23866:
23866: template<class Traits, class OverflowHandler, class Float2IntRounder>
23866: struct GetRC_BuiltIn2BuiltIn
23866: {
23866: typedef GetRC_Int2Int<Traits,OverflowHandler> Int2IntQ ;
23866: typedef GetRC_Int2Float<Traits> Int2FloatQ ;
23866: typedef GetRC_Float2Int<Traits,OverflowHandler,Float2IntRounder> Float2IntQ ;
23866: typedef GetRC_Float2Float<Traits,OverflowHandler> Float2FloatQ ;
23866:
23866: typedef typename Traits::int_float_mixture int_float_mixture ;
23866:
23866: typedef typename for_int_float_mixture<int_float_mixture, Int2IntQ, Int2FloatQ, Float2IntQ, Float2FloatQ>::type selector ;
23866:
23866: typedef typename selector::type type ;
23866: } ;
23866:
23866: template<class Traits, class OverflowHandler, class Float2IntRounder>
23866: struct GetRC
23866: {
23866: typedef GetRC_BuiltIn2BuiltIn<Traits,OverflowHandler,Float2IntRounder> BuiltIn2BuiltInQ ;
23866:
23866: typedef dummy_range_checker<Traits> Dummy ;
23866:
23866: typedef mpl::identity<Dummy> DummyQ ;
23866:
23866: typedef typename Traits::udt_builtin_mixture udt_builtin_mixture ;
23866:
23866: typedef typename for_udt_builtin_mixture<udt_builtin_mixture,BuiltIn2BuiltInQ,DummyQ,DummyQ,DummyQ>::type selector ;
23866:
23866: typedef typename selector::type type ;
23866: } ;
23866: # 452 "/usr/include/boost/numeric/conversion/detail/converter.hpp" 3 4
23866: template<class Traits>
23866: struct trivial_converter_impl : public dummy_range_checker<Traits>
23866: {
23866: typedef Traits traits ;
23866:
23866: typedef typename Traits::source_type source_type ;
23866: typedef typename Traits::argument_type argument_type ;
23866: typedef typename Traits::result_type result_type ;
23866:
23866: static result_type low_level_convert ( argument_type s ) { return s ; }
23866: static source_type nearbyint ( argument_type s ) { return s ; }
23866: static result_type convert ( argument_type s ) { return s ; }
23866: } ;
23866:
23866:
23866:
23866:
23866:
23866: template<class Traits,class RangeChecker,class RawConverter,class Float2IntRounder>
23866: struct rounding_converter : public RangeChecker
23866: ,public Float2IntRounder
23866: ,public RawConverter
23866: {
23866: typedef RangeChecker RangeCheckerBase ;
23866: typedef Float2IntRounder Float2IntRounderBase ;
23866: typedef RawConverter RawConverterBase ;
23866:
23866: typedef Traits traits ;
23866:
23866: typedef typename Traits::source_type source_type ;
23866: typedef typename Traits::argument_type argument_type ;
23866: typedef typename Traits::result_type result_type ;
23866:
23866: static result_type convert ( argument_type s )
23866: {
23866: RangeCheckerBase::validate_range(s);
23866: source_type s1 = Float2IntRounderBase::nearbyint(s);
23866: return RawConverterBase::low_level_convert(s1);
23866: }
23866: } ;
23866:
23866:
23866:
23866:
23866:
23866: template<class Traits,class RangeChecker,class RawConverter>
23866: struct non_rounding_converter : public RangeChecker
23866: ,public RawConverter
23866: {
23866: typedef RangeChecker RangeCheckerBase ;
23866: typedef RawConverter RawConverterBase ;
23866:
23866: typedef Traits traits ;
23866:
23866: typedef typename Traits::source_type source_type ;
23866: typedef typename Traits::argument_type argument_type ;
23866: typedef typename Traits::result_type result_type ;
23866:
23866: static source_type nearbyint ( argument_type s ) { return s ; }
23866:
23866: static result_type convert ( argument_type s )
23866: {
23866: RangeCheckerBase::validate_range(s);
23866: return RawConverterBase::low_level_convert(s);
23866: }
23866: } ;
23866: # 528 "/usr/include/boost/numeric/conversion/detail/converter.hpp" 3 4
23866: template<class Traits,class OverflowHandler,class Float2IntRounder,class RawConverter, class UserRangeChecker>
23866: struct get_non_trivial_converter
23866: {
23866: typedef GetRC<Traits,OverflowHandler,Float2IntRounder> InternalRangeCheckerQ ;
23866:
23866: typedef is_same<UserRangeChecker,UseInternalRangeChecker> use_internal_RC ;
23866:
23866: typedef mpl::identity<UserRangeChecker> UserRangeCheckerQ ;
23866:
23866: typedef typename
23866: mpl::eval_if<use_internal_RC,InternalRangeCheckerQ,UserRangeCheckerQ>::type
23866: RangeChecker ;
23866:
23866: typedef non_rounding_converter<Traits,RangeChecker,RawConverter> NonRounding ;
23866: typedef rounding_converter<Traits,RangeChecker,RawConverter,Float2IntRounder> Rounding ;
23866:
23866: typedef mpl::identity<NonRounding> NonRoundingQ ;
23866: typedef mpl::identity<Rounding> RoundingQ ;
23866:
23866: typedef typename Traits::int_float_mixture int_float_mixture ;
23866:
23866: typedef typename
23866: for_int_float_mixture<int_float_mixture, NonRoundingQ, NonRoundingQ, RoundingQ, NonRoundingQ>::type
23866: selector ;
23866:
23866: typedef typename selector::type type ;
23866: } ;
23866:
23866: template< class Traits
23866: ,class OverflowHandler
23866: ,class Float2IntRounder
23866: ,class RawConverter
23866: ,class UserRangeChecker
23866: >
23866: struct get_converter_impl
23866: {
23866: # 574 "/usr/include/boost/numeric/conversion/detail/converter.hpp" 3 4
23866: typedef trivial_converter_impl<Traits> Trivial ;
23866: typedef mpl::identity <Trivial> TrivialQ ;
23866:
23866: typedef get_non_trivial_converter< Traits
23866: ,OverflowHandler
23866: ,Float2IntRounder
23866: ,RawConverter
23866: ,UserRangeChecker
23866: > NonTrivialQ ;
23866:
23866: typedef typename Traits::trivial trivial ;
23866:
23866: typedef typename mpl::eval_if<trivial,TrivialQ,NonTrivialQ>::type type ;
23866: } ;
23866:
23866: } } }
23866: # 17 "/usr/include/boost/numeric/conversion/converter.hpp" 2 3 4
23866:
23866: namespace boost { namespace numeric
23866: {
23866:
23866: template<class T,
23866: class S,
23866: class Traits = conversion_traits<T,S>,
23866: class OverflowHandler = def_overflow_handler,
23866: class Float2IntRounder = Trunc< typename Traits::source_type> ,
23866: class RawConverter = raw_converter<Traits>,
23866: class UserRangeChecker = UseInternalRangeChecker
23866: >
23866: struct converter : convdetail::get_converter_impl<Traits,
23866: OverflowHandler,
23866: Float2IntRounder,
23866: RawConverter,
23866: UserRangeChecker
23866: >::type
23866: {
23866: typedef Traits traits ;
23866:
23866: typedef typename Traits::argument_type argument_type ;
23866: typedef typename Traits::result_type result_type ;
23866:
23866: result_type operator() ( argument_type s ) const { return this->convert(s) ; }
23866: } ;
23866:
23866:
23866:
23866: template<class S,
23866: class OverflowHandler = def_overflow_handler,
23866: class Float2IntRounder = Trunc<S> ,
23866: class UserRangeChecker = UseInternalRangeChecker
23866: >
23866: struct make_converter_from
23866: {
23866: template<class T,
23866: class Traits = conversion_traits<T,S>,
23866: class RawConverter = raw_converter<Traits>
23866: >
23866: struct to
23866: {
23866: typedef converter<T,S,Traits,OverflowHandler,Float2IntRounder,RawConverter,UserRangeChecker> type ;
23866: } ;
23866:
23866: } ;
23866:
23866: } }
23866: # 34 "/usr/include/boost/numeric/conversion/cast.hpp" 2 3 4
23866: # 1 "/usr/include/boost/numeric/conversion/numeric_cast_traits.hpp" 1 3 4
23866: # 10 "/usr/include/boost/numeric/conversion/numeric_cast_traits.hpp" 3 4
23866: #define BOOST_NUMERIC_CAST_TRAITS_HPP
23866:
23866:
23866:
23866: namespace boost { namespace numeric {
23866:
23866: template <typename Target, typename Source, typename EnableIf = void>
23866: struct numeric_cast_traits
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<Source> rounding_policy;
23866: };
23866:
23866: }}
23866:
23866:
23866: # 1 "/usr/include/boost/cstdint.hpp" 1 3 4
23866: # 28 "/usr/include/boost/numeric/conversion/numeric_cast_traits.hpp" 2 3 4
23866: # 1 "/usr/include/boost/numeric/conversion/detail/numeric_cast_traits.hpp" 1 3 4
23866: # 12 "/usr/include/boost/numeric/conversion/detail/numeric_cast_traits.hpp" 3 4
23866: # 1 "/usr/include/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp" 1 3 4
23866: # 12 "/usr/include/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp" 3 4
23866: namespace boost { namespace numeric {
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: char
23866: , char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: char
23866: , signed char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<signed char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: char
23866: , unsigned char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: char
23866: , short
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<short> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: char
23866: , unsigned short
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned short> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: char
23866: , int
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<int> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: char
23866: , unsigned int
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned int> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: char
23866: , long
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<long> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: char
23866: , unsigned long
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned long> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: char
23866: , float
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<float> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: char
23866: , double
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<double> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: char
23866: , long double
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<long double> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: signed char
23866: , char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: signed char
23866: , signed char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<signed char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: signed char
23866: , unsigned char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: signed char
23866: , short
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<short> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: signed char
23866: , unsigned short
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned short> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: signed char
23866: , int
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<int> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: signed char
23866: , unsigned int
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned int> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: signed char
23866: , long
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<long> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: signed char
23866: , unsigned long
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned long> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: signed char
23866: , float
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<float> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: signed char
23866: , double
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<double> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: signed char
23866: , long double
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<long double> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned char
23866: , char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned char
23866: , signed char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<signed char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned char
23866: , unsigned char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned char
23866: , short
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<short> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned char
23866: , unsigned short
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned short> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned char
23866: , int
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<int> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned char
23866: , unsigned int
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned int> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned char
23866: , long
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<long> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned char
23866: , unsigned long
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned long> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned char
23866: , float
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<float> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned char
23866: , double
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<double> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned char
23866: , long double
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<long double> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: short
23866: , char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: short
23866: , signed char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<signed char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: short
23866: , unsigned char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: short
23866: , short
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<short> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: short
23866: , unsigned short
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned short> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: short
23866: , int
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<int> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: short
23866: , unsigned int
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned int> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: short
23866: , long
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<long> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: short
23866: , unsigned long
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned long> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: short
23866: , float
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<float> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: short
23866: , double
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<double> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: short
23866: , long double
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<long double> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned short
23866: , char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned short
23866: , signed char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<signed char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned short
23866: , unsigned char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned short
23866: , short
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<short> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned short
23866: , unsigned short
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned short> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned short
23866: , int
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<int> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned short
23866: , unsigned int
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned int> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned short
23866: , long
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<long> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned short
23866: , unsigned long
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned long> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned short
23866: , float
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<float> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned short
23866: , double
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<double> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned short
23866: , long double
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<long double> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: int
23866: , char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: int
23866: , signed char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<signed char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: int
23866: , unsigned char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: int
23866: , short
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<short> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: int
23866: , unsigned short
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned short> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: int
23866: , int
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<int> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: int
23866: , unsigned int
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned int> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: int
23866: , long
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<long> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: int
23866: , unsigned long
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned long> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: int
23866: , float
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<float> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: int
23866: , double
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<double> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: int
23866: , long double
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<long double> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned int
23866: , char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned int
23866: , signed char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<signed char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned int
23866: , unsigned char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned int
23866: , short
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<short> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned int
23866: , unsigned short
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned short> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned int
23866: , int
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<int> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned int
23866: , unsigned int
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned int> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned int
23866: , long
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<long> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned int
23866: , unsigned long
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned long> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned int
23866: , float
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<float> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned int
23866: , double
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<double> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned int
23866: , long double
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<long double> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: long
23866: , char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: long
23866: , signed char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<signed char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: long
23866: , unsigned char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: long
23866: , short
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<short> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: long
23866: , unsigned short
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned short> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: long
23866: , int
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<int> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: long
23866: , unsigned int
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned int> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: long
23866: , long
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<long> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: long
23866: , unsigned long
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned long> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: long
23866: , float
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<float> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: long
23866: , double
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<double> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: long
23866: , long double
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<long double> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned long
23866: , char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned long
23866: , signed char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<signed char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned long
23866: , unsigned char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned long
23866: , short
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<short> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned long
23866: , unsigned short
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned short> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned long
23866: , int
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<int> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned long
23866: , unsigned int
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned int> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned long
23866: , long
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<long> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned long
23866: , unsigned long
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned long> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned long
23866: , float
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<float> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned long
23866: , double
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<double> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned long
23866: , long double
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<long double> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: float
23866: , char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: float
23866: , signed char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<signed char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: float
23866: , unsigned char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: float
23866: , short
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<short> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: float
23866: , unsigned short
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned short> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: float
23866: , int
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<int> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: float
23866: , unsigned int
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned int> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: float
23866: , long
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<long> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: float
23866: , unsigned long
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned long> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: float
23866: , float
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<float> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: float
23866: , double
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<double> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: float
23866: , long double
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<long double> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: double
23866: , char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: double
23866: , signed char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<signed char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: double
23866: , unsigned char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: double
23866: , short
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<short> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: double
23866: , unsigned short
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned short> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: double
23866: , int
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<int> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: double
23866: , unsigned int
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned int> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: double
23866: , long
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<long> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: double
23866: , unsigned long
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned long> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: double
23866: , float
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<float> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: double
23866: , double
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<double> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: double
23866: , long double
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<long double> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: long double
23866: , char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: long double
23866: , signed char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<signed char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: long double
23866: , unsigned char
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned char> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: long double
23866: , short
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<short> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: long double
23866: , unsigned short
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned short> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: long double
23866: , int
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<int> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: long double
23866: , unsigned int
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned int> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: long double
23866: , long
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<long> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: long double
23866: , unsigned long
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<unsigned long> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: long double
23866: , float
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<float> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: long double
23866: , double
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<double> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: long double
23866: , long double
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<long double> rounding_policy;
23866: };
23866: }}
23866: # 13 "/usr/include/boost/numeric/conversion/detail/numeric_cast_traits.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp" 1 3 4
23866: # 9 "/usr/include/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp" 3 4
23866: namespace boost { namespace numeric {
23866:
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: char
23866: , boost::long_long_type
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<boost::long_long_type> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: char
23866: , boost::ulong_long_type
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<boost::ulong_long_type> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: signed char
23866: , boost::long_long_type
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<boost::long_long_type> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: signed char
23866: , boost::ulong_long_type
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<boost::ulong_long_type> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned char
23866: , boost::long_long_type
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<boost::long_long_type> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned char
23866: , boost::ulong_long_type
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<boost::ulong_long_type> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: short
23866: , boost::long_long_type
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<boost::long_long_type> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: short
23866: , boost::ulong_long_type
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<boost::ulong_long_type> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned short
23866: , boost::long_long_type
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<boost::long_long_type> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned short
23866: , boost::ulong_long_type
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<boost::ulong_long_type> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: int
23866: , boost::long_long_type
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<boost::long_long_type> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: int
23866: , boost::ulong_long_type
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<boost::ulong_long_type> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned int
23866: , boost::long_long_type
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<boost::long_long_type> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned int
23866: , boost::ulong_long_type
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<boost::ulong_long_type> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: long
23866: , boost::long_long_type
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<boost::long_long_type> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: long
23866: , boost::ulong_long_type
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<boost::ulong_long_type> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned long
23866: , boost::long_long_type
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<boost::long_long_type> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: unsigned long
23866: , boost::ulong_long_type
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<boost::ulong_long_type> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: float
23866: , boost::long_long_type
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<boost::long_long_type> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: float
23866: , boost::ulong_long_type
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<boost::ulong_long_type> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: double
23866: , boost::long_long_type
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<boost::long_long_type> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: double
23866: , boost::ulong_long_type
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<boost::ulong_long_type> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: long double
23866: , boost::long_long_type
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<boost::long_long_type> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: long double
23866: , boost::ulong_long_type
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<boost::ulong_long_type> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: boost::long_long_type
23866: , boost::long_long_type
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<boost::long_long_type> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: boost::long_long_type
23866: , boost::ulong_long_type
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<boost::ulong_long_type> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: boost::ulong_long_type
23866: , boost::long_long_type
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<boost::long_long_type> rounding_policy;
23866: };
23866:
23866: template <>
23866: struct numeric_cast_traits
23866: <
23866: boost::ulong_long_type
23866: , boost::ulong_long_type
23866: >
23866: {
23866: typedef def_overflow_handler overflow_policy;
23866: typedef UseInternalRangeChecker range_checking_policy;
23866: typedef Trunc<boost::ulong_long_type> rounding_policy;
23866: };
23866: }}
23866: # 16 "/usr/include/boost/numeric/conversion/detail/numeric_cast_traits.hpp" 2 3 4
23866: # 29 "/usr/include/boost/numeric/conversion/numeric_cast_traits.hpp" 2 3 4
23866: # 35 "/usr/include/boost/numeric/conversion/cast.hpp" 2 3 4
23866:
23866: namespace boost
23866: {
23866: template <typename Target, typename Source>
23866: inline Target numeric_cast( Source arg )
23866: {
23866: typedef numeric::conversion_traits<Target, Source> conv_traits;
23866: typedef numeric::numeric_cast_traits<Target, Source> cast_traits;
23866: typedef boost::numeric::converter
23866: <
23866: Target,
23866: Source,
23866: conv_traits,
23866: typename cast_traits::overflow_policy,
23866: typename cast_traits::rounding_policy,
23866: boost::numeric::raw_converter< conv_traits >,
23866: typename cast_traits::range_checking_policy
23866: > converter;
23866: return converter::convert(arg);
23866: }
23866:
23866: using numeric::bad_numeric_cast;
23866: }
23866: # 37 "/usr/include/boost/lexical_cast/detail/converter_numeric.hpp" 2 3 4
23866:
23866: namespace boost { namespace detail {
23866:
23866: template <class Source >
23866: struct detect_precision_loss
23866: {
23866: typedef Source source_type;
23866: typedef boost::numeric::Trunc<Source> Rounder;
23866: typedef typename conditional<
23866: boost::is_arithmetic<Source>::value, Source, Source const&
23866: >::type argument_type ;
23866:
23866: static inline source_type nearbyint(argument_type s, bool& is_ok) noexcept {
23866: const source_type near_int = Rounder::nearbyint(s);
23866: if (near_int && is_ok) {
23866: const source_type orig_div_round = s / near_int;
23866: const source_type eps = std::numeric_limits<source_type>::epsilon();
23866:
23866: is_ok = !((orig_div_round > 1 ? orig_div_round - 1 : 1 - orig_div_round) > eps);
23866: }
23866:
23866: return s;
23866: }
23866:
23866: typedef typename Rounder::round_style round_style;
23866: };
23866:
23866: template <typename Base, class Source>
23866: struct fake_precision_loss: public Base
23866: {
23866: typedef Source source_type ;
23866: typedef typename conditional<
23866: boost::is_arithmetic<Source>::value, Source, Source const&
23866: >::type argument_type ;
23866:
23866: static inline source_type nearbyint(argument_type s, bool& ) noexcept {
23866: return s;
23866: }
23866: };
23866:
23866: struct nothrow_overflow_handler
23866: {
23866: inline bool operator() ( boost::numeric::range_check_result r ) const noexcept {
23866: return (r == boost::numeric::cInRange);
23866: }
23866: };
23866:
23866: template <typename Target, typename Source>
23866: inline bool noexcept_numeric_convert(const Source& arg, Target& result) noexcept {
23866: typedef boost::numeric::converter<
23866: Target,
23866: Source,
23866: boost::numeric::conversion_traits<Target, Source >,
23866: nothrow_overflow_handler,
23866: detect_precision_loss<Source >
23866: > converter_orig_t;
23866:
23866: typedef typename boost::conditional<
23866: boost::is_base_of< detect_precision_loss<Source >, converter_orig_t >::value,
23866: converter_orig_t,
23866: fake_precision_loss<converter_orig_t, Source>
23866: >::type converter_t;
23866:
23866: bool res = nothrow_overflow_handler()(converter_t::out_of_range(arg));
23866: result = converter_t::low_level_convert(converter_t::nearbyint(arg, res));
23866: return res;
23866: }
23866:
23866: template <typename Target, typename Source>
23866: struct lexical_cast_dynamic_num_not_ignoring_minus
23866: {
23866: static inline bool try_convert(const Source &arg, Target& result) noexcept {
23866: return noexcept_numeric_convert<Target, Source >(arg, result);
23866: }
23866: };
23866:
23866: template <typename Target, typename Source>
23866: struct lexical_cast_dynamic_num_ignoring_minus
23866: {
23866: static inline bool try_convert(const Source &arg, Target& result) noexcept {
23866: typedef typename boost::conditional<
23866: boost::is_float<Source>::value,
23866: boost::type_identity<Source>,
23866: boost::make_unsigned<Source>
23866: >::type usource_lazy_t;
23866: typedef typename usource_lazy_t::type usource_t;
23866:
23866: if (arg < 0) {
23866: const bool res = noexcept_numeric_convert<Target, usource_t>(0u - arg, result);
23866: result = static_cast<Target>(0u - result);
23866: return res;
23866: } else {
23866: return noexcept_numeric_convert<Target, usource_t>(arg, result);
23866: }
23866: }
23866: };
23866: # 152 "/usr/include/boost/lexical_cast/detail/converter_numeric.hpp" 3 4
23866: template <typename Target, typename Source>
23866: struct dynamic_num_converter_impl
23866: {
23866: static inline bool try_convert(const Source &arg, Target& result) noexcept {
23866: typedef typename boost::conditional<
23866: boost::is_unsigned<Target>::value &&
23866: (boost::is_signed<Source>::value || boost::is_float<Source>::value) &&
23866: !(boost::is_same<Source, bool>::value) &&
23866: !(boost::is_same<Target, bool>::value),
23866: lexical_cast_dynamic_num_ignoring_minus<Target, Source>,
23866: lexical_cast_dynamic_num_not_ignoring_minus<Target, Source>
23866: >::type caster_type;
23866:
23866: return caster_type::try_convert(arg, result);
23866: }
23866: };
23866:
23866: }}
23866: # 44 "/usr/include/boost/lexical_cast/try_lexical_convert.hpp" 2 3 4
23866: # 1 "/usr/include/boost/lexical_cast/detail/converter_lexical.hpp" 1 3 4
23866: # 19 "/usr/include/boost/lexical_cast/detail/converter_lexical.hpp" 3 4
23866: #define BOOST_LEXICAL_CAST_DETAIL_CONVERTER_LEXICAL_HPP
23866:
23866:
23866:
23866:
23866: # 38 "/usr/include/boost/lexical_cast/detail/converter_lexical.hpp" 3 4
23866: # 1 "/usr/include/boost/type_traits/has_left_shift.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/has_left_shift.hpp" 3 4
23866: #define BOOST_TT_HAS_LEFT_SHIFT_HPP_INCLUDED
23866:
23866: #define BOOST_TT_TRAIT_NAME has_left_shift
23866: #define BOOST_TT_TRAIT_OP <<
23866: #define BOOST_TT_FORBIDDEN_IF ( ( ::boost::is_fundamental< Lhs_nocv >::value && ::boost::is_fundamental< Rhs_nocv >::value && ( (! ::boost::is_integral< Lhs_noref >::value ) || (! ::boost::is_integral< Rhs_noref >::value ) ) )|| ( ::boost::is_fundamental< Lhs_nocv >::value && ::boost::is_pointer< Rhs_noref >::value )|| ( ::boost::is_fundamental< Rhs_nocv >::value && ::boost::is_pointer< Lhs_noref >::value )|| ( ::boost::is_pointer< Lhs_noref >::value && ::boost::is_pointer< Rhs_noref >::value ) )
23866: # 43 "/usr/include/boost/type_traits/has_left_shift.hpp" 3 4
23866: # 1 "/usr/include/boost/type_traits/detail/has_binary_operator.hpp" 1 3 4
23866: # 25 "/usr/include/boost/type_traits/detail/has_binary_operator.hpp" 3 4
23866:
23866: # 26 "/usr/include/boost/type_traits/detail/has_binary_operator.hpp" 3
23866: # 43 "/usr/include/boost/type_traits/detail/has_binary_operator.hpp" 3
23866: namespace boost
23866: {
23866:
23866: namespace binary_op_detail {
23866:
23866: struct dont_care;
23866:
23866: template <class T, class U, class Ret, class = void>
23866: struct has_left_shift_ret_imp : public boost::false_type {};
23866:
23866: template <class T, class U, class Ret>
23866: struct has_left_shift_ret_imp<T, U, Ret, typename boost::make_void<decltype(std::declval<typename add_reference<T>::type>() << std::declval<typename add_reference<U>::type>())>::type>
23866: : public boost::integral_constant<bool, ::boost::is_convertible<decltype(std::declval<typename add_reference<T>::type>() << std::declval<typename add_reference<U>::type>()), Ret>::value> {};
23866:
23866: template <class T, class U, class = void >
23866: struct has_left_shift_void_imp : public boost::false_type {};
23866:
23866: template <class T, class U>
23866: struct has_left_shift_void_imp<T, U, typename boost::make_void<decltype(std::declval<typename add_reference<T>::type>() << std::declval<typename add_reference<U>::type>())>::type>
23866: : public boost::integral_constant<bool, ::boost::is_void<decltype(std::declval<typename add_reference<T>::type>() << std::declval<typename add_reference<U>::type>())>::value> {};
23866:
23866: template <class T, class U, class = void>
23866: struct has_left_shift_dc_imp : public boost::false_type {};
23866:
23866: template <class T, class U>
23866: struct has_left_shift_dc_imp<T, U, typename boost::make_void<decltype(std::declval<typename add_reference<T>::type>() << std::declval<typename add_reference<U>::type>())>::type>
23866: : public boost::true_type {};
23866:
23866: }
23866:
23866: template <class T, class U = T, class Ret = boost::binary_op_detail::dont_care>
23866: struct has_left_shift : public boost::binary_op_detail:: has_left_shift_ret_imp <T, U, Ret> {};
23866: template <class T, class U>
23866: struct has_left_shift<T, U, void> : public boost::binary_op_detail:: has_left_shift_void_imp <T, U> {};
23866: template <class T, class U>
23866: struct has_left_shift<T, U, boost::binary_op_detail::dont_care> : public boost::binary_op_detail:: has_left_shift_dc_imp <T, U> {};
23866:
23866:
23866: }
23866: # 44 "/usr/include/boost/type_traits/has_left_shift.hpp" 2 3 4
23866:
23866: #undef BOOST_TT_TRAIT_NAME
23866: #undef BOOST_TT_TRAIT_OP
23866: #undef BOOST_TT_FORBIDDEN_IF
23866: # 39 "/usr/include/boost/lexical_cast/detail/converter_lexical.hpp" 2 3 4
23866: # 1 "/usr/include/boost/type_traits/has_right_shift.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/has_right_shift.hpp" 3 4
23866: #define BOOST_TT_HAS_RIGHT_SHIFT_HPP_INCLUDED
23866:
23866: #define BOOST_TT_TRAIT_NAME has_right_shift
23866: #define BOOST_TT_TRAIT_OP >>
23866: #define BOOST_TT_FORBIDDEN_IF ( ( ::boost::is_fundamental< Lhs_nocv >::value && ::boost::is_fundamental< Rhs_nocv >::value && ( (! ::boost::is_integral< Lhs_noref >::value ) || (! ::boost::is_integral< Rhs_noref >::value ) ) )|| ( ::boost::is_fundamental< Lhs_nocv >::value && ::boost::is_pointer< Rhs_noref >::value )|| ( ::boost::is_fundamental< Rhs_nocv >::value && ::boost::is_pointer< Lhs_noref >::value )|| ( ::boost::is_pointer< Lhs_noref >::value && ::boost::is_pointer< Rhs_noref >::value ) )
23866: # 43 "/usr/include/boost/type_traits/has_right_shift.hpp" 3 4
23866: # 1 "/usr/include/boost/type_traits/detail/has_binary_operator.hpp" 1 3 4
23866: # 25 "/usr/include/boost/type_traits/detail/has_binary_operator.hpp" 3 4
23866:
23866: # 26 "/usr/include/boost/type_traits/detail/has_binary_operator.hpp" 3
23866: # 43 "/usr/include/boost/type_traits/detail/has_binary_operator.hpp" 3
23866: namespace boost
23866: {
23866:
23866: namespace binary_op_detail {
23866:
23866: struct dont_care;
23866:
23866: template <class T, class U, class Ret, class = void>
23866: struct has_right_shift_ret_imp : public boost::false_type {};
23866:
23866: template <class T, class U, class Ret>
23866: struct has_right_shift_ret_imp<T, U, Ret, typename boost::make_void<decltype(std::declval<typename add_reference<T>::type>() >> std::declval<typename add_reference<U>::type>())>::type>
23866: : public boost::integral_constant<bool, ::boost::is_convertible<decltype(std::declval<typename add_reference<T>::type>() >> std::declval<typename add_reference<U>::type>()), Ret>::value> {};
23866:
23866: template <class T, class U, class = void >
23866: struct has_right_shift_void_imp : public boost::false_type {};
23866:
23866: template <class T, class U>
23866: struct has_right_shift_void_imp<T, U, typename boost::make_void<decltype(std::declval<typename add_reference<T>::type>() >> std::declval<typename add_reference<U>::type>())>::type>
23866: : public boost::integral_constant<bool, ::boost::is_void<decltype(std::declval<typename add_reference<T>::type>() >> std::declval<typename add_reference<U>::type>())>::value> {};
23866:
23866: template <class T, class U, class = void>
23866: struct has_right_shift_dc_imp : public boost::false_type {};
23866:
23866: template <class T, class U>
23866: struct has_right_shift_dc_imp<T, U, typename boost::make_void<decltype(std::declval<typename add_reference<T>::type>() >> std::declval<typename add_reference<U>::type>())>::type>
23866: : public boost::true_type {};
23866:
23866: }
23866:
23866: template <class T, class U = T, class Ret = boost::binary_op_detail::dont_care>
23866: struct has_right_shift : public boost::binary_op_detail:: has_right_shift_ret_imp <T, U, Ret> {};
23866: template <class T, class U>
23866: struct has_right_shift<T, U, void> : public boost::binary_op_detail:: has_right_shift_void_imp <T, U> {};
23866: template <class T, class U>
23866: struct has_right_shift<T, U, boost::binary_op_detail::dont_care> : public boost::binary_op_detail:: has_right_shift_dc_imp <T, U> {};
23866:
23866:
23866: }
23866: # 44 "/usr/include/boost/type_traits/has_right_shift.hpp" 2 3 4
23866:
23866: #undef BOOST_TT_TRAIT_NAME
23866: #undef BOOST_TT_TRAIT_OP
23866: #undef BOOST_TT_FORBIDDEN_IF
23866: # 40 "/usr/include/boost/lexical_cast/detail/converter_lexical.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/detail/lcast_precision.hpp" 1 3 4
23866: # 9 "/usr/include/boost/detail/lcast_precision.hpp" 3 4
23866: #define BOOST_DETAIL_LCAST_PRECISION_HPP_INCLUDED
23866:
23866: # 1 "/usr/include/c++/10/climits" 1 3 4
23866: # 39 "/usr/include/c++/10/climits" 3 4
23866:
23866: # 40 "/usr/include/c++/10/climits" 3
23866:
23866:
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/limits.h" 1 3 4
23866: # 43 "/usr/include/c++/10/climits" 2 3
23866: # 12 "/usr/include/boost/detail/lcast_precision.hpp" 2 3 4
23866: # 36 "/usr/include/boost/detail/lcast_precision.hpp" 3 4
23866: namespace boost { namespace detail {
23866:
23866: class lcast_abstract_stub {};
23866:
23866:
23866:
23866:
23866:
23866: template<class T>
23866: struct lcast_precision
23866: {
23866:
23866:
23866:
23866: typedef typename boost::conditional<
23866: boost::is_abstract<T>::value
23866: , std::numeric_limits<lcast_abstract_stub>
23866: , std::numeric_limits<T>
23866: >::type limits;
23866:
23866:
23866: static const bool use_default_precision = !limits::is_specialized || limits::is_exact
23866:
23866: ;
23866:
23866: static const bool is_specialized_bin = !use_default_precision && limits::radix == 2 && limits::digits > 0
23866:
23866:
23866: ;
23866:
23866: static const bool is_specialized_dec = !use_default_precision && limits::radix == 10 && limits::digits10 > 0
23866:
23866:
23866: ;
23866:
23866: static const std::streamsize streamsize_max = boost::integer_traits<std::streamsize>::const_max
23866:
23866: ;
23866:
23866: static const unsigned int precision_dec = limits::digits10 + 1U;
23866:
23866: static_assert(!is_specialized_dec || precision_dec <= streamsize_max + 0UL, "!is_specialized_dec || precision_dec <= streamsize_max + 0UL")
23866:
23866: ;
23866:
23866: static const unsigned long precision_bin = 2UL + limits::digits * 30103UL / 100000UL
23866:
23866: ;
23866:
23866: static_assert(!is_specialized_bin || (limits::digits + 0UL < (0x7fffffffL * 2UL + 1UL) / 30103UL && precision_bin > limits::digits10 + 0UL && precision_bin <= streamsize_max + 0UL), "!is_specialized_bin || (limits::digits + 0UL < ULONG_MAX / 30103UL && precision_bin > limits::digits10 + 0UL && precision_bin <= streamsize_max + 0UL)")
23866:
23866:
23866:
23866: ;
23866:
23866: static const std::streamsize value = is_specialized_bin ? precision_bin : is_specialized_dec ? precision_dec : 6
23866:
23866:
23866: ;
23866: };
23866:
23866:
23866: template<class T>
23866: inline std::streamsize lcast_get_precision(T* = 0)
23866: {
23866:
23866: return lcast_precision<T>::value;
23866: # 166 "/usr/include/boost/detail/lcast_precision.hpp" 3 4
23866: }
23866:
23866: template<class T>
23866: inline void lcast_set_precision(std::ios_base& stream, T*)
23866: {
23866: stream.precision(lcast_get_precision<T>());
23866: }
23866:
23866: template<class Source, class Target>
23866: inline void lcast_set_precision(std::ios_base& stream, Source*, Target*)
23866: {
23866: std::streamsize const s = lcast_get_precision(static_cast<Source*>(0));
23866: std::streamsize const t = lcast_get_precision(static_cast<Target*>(0));
23866: stream.precision(s > t ? s : t);
23866: }
23866:
23866: }}
23866: # 42 "/usr/include/boost/lexical_cast/detail/converter_lexical.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/lexical_cast/detail/widest_char.hpp" 1 3 4
23866: # 19 "/usr/include/boost/lexical_cast/detail/widest_char.hpp" 3 4
23866: #define BOOST_LEXICAL_CAST_DETAIL_WIDEST_CHAR_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost { namespace detail {
23866:
23866: template <typename TargetChar, typename SourceChar>
23866: struct widest_char {
23866: typedef typename boost::conditional<
23866: (sizeof(TargetChar) > sizeof(SourceChar))
23866: , TargetChar
23866: , SourceChar
23866: >::type type;
23866: };
23866:
23866: }}
23866: # 44 "/usr/include/boost/lexical_cast/detail/converter_lexical.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/array.hpp" 1 3 4
23866: # 32 "/usr/include/boost/array.hpp" 3 4
23866: #define BOOST_ARRAY_HPP
23866: # 46 "/usr/include/boost/array.hpp" 3 4
23866: # 1 "/usr/include/boost/assert.hpp" 1 3 4
23866: # 32 "/usr/include/boost/assert.hpp" 3 4
23866: #undef BOOST_ASSERT
23866: #undef BOOST_ASSERT_MSG
23866: #undef BOOST_ASSERT_IS_VOID
23866: # 58 "/usr/include/boost/assert.hpp" 3 4
23866: # 1 "/usr/include/assert.h" 1 3 4
23866: # 24 "/usr/include/assert.h" 3 4
23866: #undef _ASSERT_H
23866: #undef assert
23866: #undef __ASSERT_VOID_CAST
23866:
23866:
23866: #undef assert_perror
23866:
23866:
23866:
23866:
23866: #define _ASSERT_H 1
23866:
23866:
23866:
23866: #define __ASSERT_VOID_CAST static_cast<void>
23866: # 92 "/usr/include/assert.h" 3 4
23866: #define assert(expr) (static_cast <bool> (expr) ? void (0) : __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 117 "/usr/include/assert.h" 3 4
23866: #define assert_perror(errnum) (!(errnum) ? __ASSERT_VOID_CAST (0) : __assert_perror_fail ((errnum), __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 129 "/usr/include/assert.h" 3 4
23866: #define __ASSERT_FUNCTION __extension__ __PRETTY_FUNCTION__
23866: # 59 "/usr/include/boost/assert.hpp" 2 3 4
23866:
23866: #define BOOST_ASSERT(expr) assert(expr)
23866: #define BOOST_ASSERT_MSG(expr,msg) assert((expr)&&(msg))
23866: # 72 "/usr/include/boost/assert.hpp" 3 4
23866: #undef BOOST_VERIFY
23866: #undef BOOST_VERIFY_MSG
23866: # 82 "/usr/include/boost/assert.hpp" 3 4
23866: #define BOOST_VERIFY(expr) BOOST_ASSERT(expr)
23866: #define BOOST_VERIFY_MSG(expr,msg) BOOST_ASSERT_MSG(expr,msg)
23866: # 47 "/usr/include/boost/array.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/swap.hpp" 1 3 4
23866: # 10 "/usr/include/boost/swap.hpp" 3 4
23866: #define BOOST_SWAP_HPP
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/core/swap.hpp" 1 3 4
23866: # 10 "/usr/include/boost/core/swap.hpp" 3 4
23866: #define BOOST_CORE_SWAP_HPP
23866: # 33 "/usr/include/boost/core/swap.hpp" 3 4
23866: namespace boost_swap_impl
23866: {
23866:
23866:
23866: template<class T> struct is_const { enum _vt { value = 0 }; };
23866: template<class T> struct is_const<T const> { enum _vt { value = 1 }; };
23866:
23866: template<class T>
23866:
23866: void swap_impl(T& left, T& right)
23866: {
23866: using namespace std;
23866: swap(left,right);
23866: }
23866:
23866: template<class T, std::size_t N>
23866:
23866: void swap_impl(T (& left)[N], T (& right)[N])
23866: {
23866: for (std::size_t i = 0; i < N; ++i)
23866: {
23866: ::boost_swap_impl::swap_impl(left[i], right[i]);
23866: }
23866: }
23866: }
23866:
23866: namespace boost
23866: {
23866: template<class T1, class T2>
23866:
23866: typename enable_if_c< !boost_swap_impl::is_const<T1>::value && !boost_swap_impl::is_const<T2>::value >::type
23866: swap(T1& left, T2& right)
23866: {
23866: ::boost_swap_impl::swap_impl(left, right);
23866: }
23866: }
23866: # 16 "/usr/include/boost/swap.hpp" 2 3 4
23866: # 49 "/usr/include/boost/array.hpp" 2 3 4
23866: # 57 "/usr/include/boost/array.hpp" 3 4
23866: namespace boost {
23866:
23866: template<class T, std::size_t N>
23866: class array {
23866: public:
23866: T elems[N];
23866:
23866: public:
23866:
23866: typedef T value_type;
23866: typedef T* iterator;
23866: typedef const T* const_iterator;
23866: typedef T& reference;
23866: typedef const T& const_reference;
23866: typedef std::size_t size_type;
23866: typedef std::ptrdiff_t difference_type;
23866:
23866:
23866: iterator begin() { return elems; }
23866: const_iterator begin() const { return elems; }
23866: const_iterator cbegin() const { return elems; }
23866:
23866: iterator end() { return elems+N; }
23866: const_iterator end() const { return elems+N; }
23866: const_iterator cend() const { return elems+N; }
23866:
23866:
23866:
23866: typedef std::reverse_iterator<iterator> reverse_iterator;
23866: typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
23866: # 98 "/usr/include/boost/array.hpp" 3 4
23866: reverse_iterator rbegin() { return reverse_iterator(end()); }
23866: const_reverse_iterator rbegin() const {
23866: return const_reverse_iterator(end());
23866: }
23866: const_reverse_iterator crbegin() const {
23866: return const_reverse_iterator(end());
23866: }
23866:
23866: reverse_iterator rend() { return reverse_iterator(begin()); }
23866: const_reverse_iterator rend() const {
23866: return const_reverse_iterator(begin());
23866: }
23866: const_reverse_iterator crend() const {
23866: return const_reverse_iterator(begin());
23866: }
23866:
23866:
23866: reference operator[](size_type i)
23866: {
23866: return (static_cast <bool> ((i < N)&&("out of range")) ? void (0) : __assert_fail ("(i < N)&&(\"out of range\")", "/usr/include/boost/array.hpp", 117, __extension__ __PRETTY_FUNCTION__)), elems[i];
23866: }
23866:
23866: const_reference operator[](size_type i) const
23866: {
23866: return (static_cast <bool> ((i < N)&&("out of range")) ? void (0) : __assert_fail ("(i < N)&&(\"out of range\")", "/usr/include/boost/array.hpp", 122, __extension__ __PRETTY_FUNCTION__)), elems[i];
23866: }
23866:
23866:
23866: reference at(size_type i) { return rangecheck(i), elems[i]; }
23866: const_reference at(size_type i) const { return rangecheck(i), elems[i]; }
23866:
23866:
23866: reference front()
23866: {
23866: return elems[0];
23866: }
23866:
23866: constexpr const_reference front() const
23866: {
23866: return elems[0];
23866: }
23866:
23866: reference back()
23866: {
23866: return elems[N-1];
23866: }
23866:
23866: constexpr const_reference back() const
23866: {
23866: return elems[N-1];
23866: }
23866:
23866:
23866: static constexpr size_type size() { return N; }
23866: static constexpr bool empty() { return false; }
23866: static constexpr size_type max_size() { return N; }
23866: enum { static_size = N };
23866:
23866:
23866: void swap (array<T,N>& y) {
23866: for (size_type i = 0; i < N; ++i)
23866: boost::swap(elems[i],y.elems[i]);
23866: }
23866:
23866:
23866: const T* data() const { return elems; }
23866: T* data() { return elems; }
23866:
23866:
23866: T* c_array() { return elems; }
23866:
23866:
23866: template <typename T2>
23866: array<T,N>& operator= (const array<T2,N>& rhs) {
23866: std::copy(rhs.begin(),rhs.end(), begin());
23866: return *this;
23866: }
23866:
23866:
23866: void assign (const T& value) { fill ( value ); }
23866: void fill (const T& value)
23866: {
23866: std::fill_n(begin(),size(),value);
23866: }
23866:
23866:
23866: static constexpr bool rangecheck (size_type i) {
23866: return i >= size() ? boost::throw_exception(std::out_of_range ("array<>: index out of range")), true : true;
23866: }
23866:
23866: };
23866:
23866: template< class T >
23866: class array< T, 0 > {
23866:
23866: public:
23866:
23866: typedef T value_type;
23866: typedef T* iterator;
23866: typedef const T* const_iterator;
23866: typedef T& reference;
23866: typedef const T& const_reference;
23866: typedef std::size_t size_type;
23866: typedef std::ptrdiff_t difference_type;
23866:
23866:
23866: iterator begin() { return iterator( reinterpret_cast< T * >( this ) ); }
23866: const_iterator begin() const { return const_iterator( reinterpret_cast< const T * >( this ) ); }
23866: const_iterator cbegin() const { return const_iterator( reinterpret_cast< const T * >( this ) ); }
23866:
23866: iterator end() { return begin(); }
23866: const_iterator end() const { return begin(); }
23866: const_iterator cend() const { return cbegin(); }
23866:
23866:
23866:
23866: typedef std::reverse_iterator<iterator> reverse_iterator;
23866: typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
23866: # 227 "/usr/include/boost/array.hpp" 3 4
23866: reverse_iterator rbegin() { return reverse_iterator(end()); }
23866: const_reverse_iterator rbegin() const {
23866: return const_reverse_iterator(end());
23866: }
23866: const_reverse_iterator crbegin() const {
23866: return const_reverse_iterator(end());
23866: }
23866:
23866: reverse_iterator rend() { return reverse_iterator(begin()); }
23866: const_reverse_iterator rend() const {
23866: return const_reverse_iterator(begin());
23866: }
23866: const_reverse_iterator crend() const {
23866: return const_reverse_iterator(begin());
23866: }
23866:
23866:
23866: reference operator[](size_type )
23866: {
23866: return failed_rangecheck();
23866: }
23866:
23866: const_reference operator[](size_type ) const
23866: {
23866: return failed_rangecheck();
23866: }
23866:
23866:
23866: reference at(size_type ) { return failed_rangecheck(); }
23866: const_reference at(size_type ) const { return failed_rangecheck(); }
23866:
23866:
23866: reference front()
23866: {
23866: return failed_rangecheck();
23866: }
23866:
23866: constexpr const_reference front() const
23866: {
23866: return failed_rangecheck();
23866: }
23866:
23866: reference back()
23866: {
23866: return failed_rangecheck();
23866: }
23866:
23866: constexpr const_reference back() const
23866: {
23866: return failed_rangecheck();
23866: }
23866:
23866:
23866: static constexpr size_type size() { return 0; }
23866: static constexpr bool empty() { return true; }
23866: static constexpr size_type max_size() { return 0; }
23866: enum { static_size = 0 };
23866:
23866: void swap (array<T,0>& ) {
23866: }
23866:
23866:
23866: const T* data() const { return 0; }
23866: T* data() { return 0; }
23866:
23866:
23866: T* c_array() { return 0; }
23866:
23866:
23866: template <typename T2>
23866: array<T,0>& operator= (const array<T2,0>& ) {
23866: return *this;
23866: }
23866:
23866:
23866: void assign (const T& value) { fill ( value ); }
23866: void fill (const T& ) {}
23866:
23866:
23866: static reference failed_rangecheck () {
23866: std::out_of_range e("attempt to access element of an empty array");
23866: boost::throw_exception(e);
23866:
23866:
23866:
23866:
23866:
23866:
23866: static T placeholder;
23866: return placeholder;
23866:
23866: }
23866: };
23866:
23866:
23866: template<class T, std::size_t N>
23866: bool operator== (const array<T,N>& x, const array<T,N>& y) {
23866: return std::equal(x.begin(), x.end(), y.begin());
23866: }
23866: template<class T, std::size_t N>
23866: bool operator< (const array<T,N>& x, const array<T,N>& y) {
23866: return std::lexicographical_compare(x.begin(),x.end(),y.begin(),y.end());
23866: }
23866: template<class T, std::size_t N>
23866: bool operator!= (const array<T,N>& x, const array<T,N>& y) {
23866: return !(x==y);
23866: }
23866: template<class T, std::size_t N>
23866: bool operator> (const array<T,N>& x, const array<T,N>& y) {
23866: return y<x;
23866: }
23866: template<class T, std::size_t N>
23866: bool operator<= (const array<T,N>& x, const array<T,N>& y) {
23866: return !(y<x);
23866: }
23866: template<class T, std::size_t N>
23866: bool operator>= (const array<T,N>& x, const array<T,N>& y) {
23866: return !(x<y);
23866: }
23866:
23866:
23866: template<class T, std::size_t N>
23866: inline void swap (array<T,N>& x, array<T,N>& y) {
23866: x.swap(y);
23866: }
23866: # 381 "/usr/include/boost/array.hpp" 3 4
23866: template <typename T, std::size_t N>
23866: T(&get_c_array(boost::array<T,N>& arg))[N]
23866: {
23866: return arg.elems;
23866: }
23866:
23866:
23866: template <typename T, std::size_t N>
23866: const T(&get_c_array(const boost::array<T,N>& arg))[N]
23866: {
23866: return arg.elems;
23866: }
23866: # 413 "/usr/include/boost/array.hpp" 3 4
23866: template <class It> std::size_t hash_range(It, It);
23866:
23866: template<class T, std::size_t N>
23866: std::size_t hash_value(const array<T,N>& arr)
23866: {
23866: return boost::hash_range(arr.begin(), arr.end());
23866: }
23866:
23866: template <size_t Idx, typename T, size_t N>
23866: T &get(boost::array<T,N> &arr) noexcept {
23866: static_assert(Idx < N, "boost::get<>(boost::array &) index out of range");
23866: return arr[Idx];
23866: }
23866:
23866: template <size_t Idx, typename T, size_t N>
23866: const T &get(const boost::array<T,N> &arr) noexcept {
23866: static_assert(Idx < N, "boost::get<>(const boost::array &) index out of range");
23866: return arr[Idx];
23866: }
23866:
23866: }
23866:
23866:
23866:
23866: namespace std {
23866: template <size_t Idx, typename T, size_t N>
23866: T &get(boost::array<T,N> &arr) noexcept {
23866: static_assert(Idx < N, "std::get<>(boost::array &) index out of range");
23866: return arr[Idx];
23866: }
23866:
23866: template <size_t Idx, typename T, size_t N>
23866: const T &get(const boost::array<T,N> &arr) noexcept {
23866: static_assert(Idx < N, "std::get<>(const boost::array &) index out of range");
23866: return arr[Idx];
23866: }
23866: }
23866: # 51 "/usr/include/boost/lexical_cast/detail/converter_lexical.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/container/container_fwd.hpp" 1 3 4
23866: # 12 "/usr/include/boost/container/container_fwd.hpp" 3 4
23866: #define BOOST_CONTAINER_CONTAINER_FWD_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 62 "/usr/include/boost/container/container_fwd.hpp" 3 4
23866: # 1 "/usr/include/boost/container/detail/std_fwd.hpp" 1 3 4
23866: # 12 "/usr/include/boost/container/detail/std_fwd.hpp" 3 4
23866: #define BOOST_CONTAINER_DETAIL_STD_FWD_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/move/detail/std_ns_begin.hpp" 1 3 4
23866: # 21 "/usr/include/boost/move/detail/std_ns_begin.hpp" 3 4
23866: #define BOOST_MOVE_STD_NS_BEG namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION
23866: #define BOOST_MOVE_STD_NS_END _GLIBCXX_END_NAMESPACE_VERSION }
23866: # 27 "/usr/include/boost/container/detail/std_fwd.hpp" 2 3 4
23866: namespace std __attribute__ ((__visibility__ ("default"))) {
23866:
23866: template<class T>
23866: class allocator;
23866:
23866: template<class T>
23866: struct less;
23866:
23866: template<class T>
23866: struct equal_to;
23866:
23866: template<class T1, class T2>
23866: struct pair;
23866:
23866: template<class T>
23866: struct char_traits;
23866:
23866: struct input_iterator_tag;
23866: struct forward_iterator_tag;
23866: struct bidirectional_iterator_tag;
23866: struct random_access_iterator_tag;
23866:
23866: template<class Container>
23866: class insert_iterator;
23866:
23866: struct allocator_arg_t;
23866:
23866: struct piecewise_construct_t;
23866:
23866: }
23866: # 1 "/usr/include/boost/move/detail/std_ns_end.hpp" 1 3 4
23866: # 58 "/usr/include/boost/container/detail/std_fwd.hpp" 2 3 4
23866: # 63 "/usr/include/boost/container/container_fwd.hpp" 2 3 4
23866:
23866:
23866: namespace boost{
23866: namespace intrusive{
23866: namespace detail{
23866:
23866: }}}
23866:
23866: namespace boost{ namespace container{ namespace dtl{
23866: namespace bi = boost::intrusive;
23866: namespace bid = boost::intrusive::detail;
23866: }}}
23866:
23866: namespace boost{ namespace container{ namespace pmr{
23866: namespace bi = boost::intrusive;
23866: namespace bid = boost::intrusive::detail;
23866: }}}
23866: # 89 "/usr/include/boost/container/container_fwd.hpp" 3 4
23866: namespace boost {
23866: namespace container {
23866:
23866:
23866:
23866: template<class T1, class T2>
23866: struct pair;
23866:
23866: template<class T>
23866: class new_allocator;
23866:
23866: template <class T
23866: ,class Allocator = void
23866: ,class Options = void>
23866: class vector;
23866:
23866: template <class T
23866: ,class Allocator = void >
23866: class stable_vector;
23866:
23866: template < class T
23866: , std::size_t Capacity
23866: , class Options = void>
23866: class static_vector;
23866:
23866: template < class T
23866: , class Allocator = void
23866: , class Options = void >
23866: class small_vector_base;
23866:
23866: template < class T
23866: , std::size_t N
23866: , class Allocator = void
23866: , class Options = void >
23866: class small_vector;
23866:
23866: template <class T
23866: ,class Allocator = void
23866: ,class Options = void>
23866: class deque;
23866:
23866: template <class T
23866: ,class Allocator = void >
23866: class list;
23866:
23866: template <class T
23866: ,class Allocator = void >
23866: class slist;
23866:
23866: template <class Key
23866: ,class Compare = std::less<Key>
23866: ,class Allocator = void
23866: ,class Options = void>
23866: class set;
23866:
23866: template <class Key
23866: ,class Compare = std::less<Key>
23866: ,class Allocator = void
23866: ,class Options = void >
23866: class multiset;
23866:
23866: template <class Key
23866: ,class T
23866: ,class Compare = std::less<Key>
23866: ,class Allocator = void
23866: ,class Options = void >
23866: class map;
23866:
23866: template <class Key
23866: ,class T
23866: ,class Compare = std::less<Key>
23866: ,class Allocator = void
23866: ,class Options = void >
23866: class multimap;
23866:
23866: template <class Key
23866: ,class Compare = std::less<Key>
23866: ,class Allocator = void >
23866: class flat_set;
23866:
23866: template <class Key
23866: ,class Compare = std::less<Key>
23866: ,class Allocator = void >
23866: class flat_multiset;
23866:
23866: template <class Key
23866: ,class T
23866: ,class Compare = std::less<Key>
23866: ,class Allocator = void >
23866: class flat_map;
23866:
23866: template <class Key
23866: ,class T
23866: ,class Compare = std::less<Key>
23866: ,class Allocator = void >
23866: class flat_multimap;
23866:
23866:
23866:
23866:
23866:
23866: template < class Key
23866: , std::size_t N
23866: , class Compare = std::less<Key>
23866: , class SmallVectorAllocator = void
23866: , class SmallVectorOptions = void >
23866: using small_flat_set = flat_set<Key, Compare, small_vector<Key, N, SmallVectorAllocator, SmallVectorOptions>>;
23866:
23866: template < class Key
23866: , std::size_t N
23866: , class Compare = std::less<Key>
23866: , class SmallVectorAllocator = void
23866: , class SmallVectorOptions = void >
23866: using small_flat_multiset = flat_multiset<Key, Compare, small_vector<Key, N, SmallVectorAllocator, SmallVectorOptions>>;
23866:
23866: template < class Key
23866: , class T
23866: , std::size_t N
23866: , class Compare = std::less<Key>
23866: , class SmallVectorAllocator = void
23866: , class SmallVectorOptions = void >
23866: using small_flat_map = flat_map<Key, T, Compare, small_vector<std::pair<Key, T>, N, SmallVectorAllocator, SmallVectorOptions>>;
23866:
23866: template < class Key
23866: , class T
23866: , std::size_t N
23866: , class Compare = std::less<Key>
23866: , class SmallVectorAllocator = void
23866: , class SmallVectorOptions = void >
23866: using small_flat_multimap = flat_multimap<Key, T, Compare, small_vector<std::pair<Key, T>, N, SmallVectorAllocator, SmallVectorOptions>>;
23866:
23866:
23866:
23866:
23866:
23866: template < class Key
23866: , std::size_t N
23866: , class Compare = std::less<Key>
23866: , class SmallVectorAllocator = void
23866: , class SmallVectorOptions = void >
23866: struct small_flat_set_of
23866: {
23866: typedef flat_set<Key, Compare, small_vector<Key, N, SmallVectorAllocator, SmallVectorOptions> > type;
23866: };
23866:
23866:
23866: template < class Key
23866: , std::size_t N
23866: , class Compare = std::less<Key>
23866: , class SmallVectorAllocator = void
23866: , class SmallVectorOptions = void >
23866: struct small_flat_multiset_of
23866: {
23866: typedef flat_multiset<Key, Compare, small_vector<Key, N, SmallVectorAllocator, SmallVectorOptions> > type;
23866: };
23866:
23866:
23866: template < class Key
23866: , class T
23866: , std::size_t N
23866: , class Compare = std::less<Key>
23866: , class SmallVectorAllocator = void
23866: , class SmallVectorOptions = void >
23866: struct small_flat_map_of
23866: {
23866: typedef flat_map<Key, T, Compare, small_vector<std::pair<Key, T>, N, SmallVectorAllocator, SmallVectorOptions> > type;
23866: };
23866:
23866:
23866: template < class Key
23866: , class T
23866: , std::size_t N
23866: , class Compare = std::less<Key>
23866: , class SmallVectorAllocator = void
23866: , class SmallVectorOptions = void >
23866: struct small_flat_multimap_of
23866: {
23866: typedef flat_multimap<Key, T, Compare, small_vector<std::pair<Key, T>, N, SmallVectorAllocator, SmallVectorOptions> > type;
23866: };
23866:
23866: template <class CharT
23866: ,class Traits = std::char_traits<CharT>
23866: ,class Allocator = void >
23866: class basic_string;
23866:
23866: typedef basic_string <char> string;
23866: typedef basic_string<wchar_t> wstring;
23866:
23866: static const std::size_t ADP_nodes_per_block = 256u;
23866: static const std::size_t ADP_max_free_blocks = 2u;
23866: static const std::size_t ADP_overhead_percent = 1u;
23866: static const std::size_t ADP_only_alignment = 0u;
23866:
23866: template < class T
23866: , std::size_t NodesPerBlock = ADP_nodes_per_block
23866: , std::size_t MaxFreeBlocks = ADP_max_free_blocks
23866: , std::size_t OverheadPercent = ADP_overhead_percent
23866: , unsigned Version = 2
23866: >
23866: class adaptive_pool;
23866:
23866: template < class T
23866: , unsigned Version = 2
23866: , unsigned int AllocationDisableMask = 0>
23866: class allocator;
23866:
23866: static const std::size_t NodeAlloc_nodes_per_block = 256u;
23866:
23866: template
23866: < class T
23866: , std::size_t NodesPerBlock = NodeAlloc_nodes_per_block
23866: , std::size_t Version = 2>
23866: class node_allocator;
23866:
23866: namespace pmr {
23866:
23866: class memory_resource;
23866:
23866: template<class T>
23866: class polymorphic_allocator;
23866:
23866: class monotonic_buffer_resource;
23866:
23866: struct pool_options;
23866:
23866: template <class Allocator>
23866: class resource_adaptor_imp;
23866:
23866: class unsynchronized_pool_resource;
23866:
23866: class synchronized_pool_resource;
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866: struct ordered_range_t
23866: {};
23866:
23866:
23866:
23866: static const ordered_range_t ordered_range = ordered_range_t();
23866:
23866:
23866:
23866: struct ordered_unique_range_t
23866: : public ordered_range_t
23866: {};
23866:
23866:
23866:
23866: static const ordered_unique_range_t ordered_unique_range = ordered_unique_range_t();
23866:
23866:
23866:
23866: struct default_init_t
23866: {};
23866:
23866:
23866:
23866: static const default_init_t default_init = default_init_t();
23866:
23866:
23866:
23866:
23866: struct value_init_t
23866: {};
23866:
23866:
23866:
23866: static const value_init_t value_init = value_init_t();
23866:
23866: namespace container_detail_really_deep_namespace {
23866:
23866:
23866:
23866: struct dummy
23866: {
23866: dummy()
23866: {
23866: (void)ordered_range;
23866: (void)ordered_unique_range;
23866: (void)default_init;
23866: }
23866: };
23866:
23866: }
23866:
23866:
23866:
23866:
23866: }}
23866: # 53 "/usr/include/boost/lexical_cast/detail/converter_lexical.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/lexical_cast/detail/converter_lexical_streams.hpp" 1 3 4
23866: # 19 "/usr/include/boost/lexical_cast/detail/converter_lexical_streams.hpp" 3 4
23866: #define BOOST_LEXICAL_CAST_DETAIL_CONVERTER_LEXICAL_STREAMS_HPP
23866:
23866:
23866:
23866:
23866: # 33 "/usr/include/boost/lexical_cast/detail/converter_lexical_streams.hpp" 3 4
23866: # 1 "/usr/include/c++/10/cstring" 1 3 4
23866: # 39 "/usr/include/c++/10/cstring" 3 4
23866:
23866: # 40 "/usr/include/c++/10/cstring" 3
23866: # 34 "/usr/include/boost/lexical_cast/detail/converter_lexical_streams.hpp" 2 3 4
23866: # 1 "/usr/include/c++/10/cstdio" 1 3 4
23866: # 39 "/usr/include/c++/10/cstdio" 3 4
23866:
23866: # 40 "/usr/include/c++/10/cstdio" 3
23866: # 35 "/usr/include/boost/lexical_cast/detail/converter_lexical_streams.hpp" 2 3 4
23866: # 61 "/usr/include/boost/lexical_cast/detail/converter_lexical_streams.hpp" 3 4
23866: # 1 "/usr/include/boost/lexical_cast/detail/lcast_char_constants.hpp" 1 3 4
23866: # 19 "/usr/include/boost/lexical_cast/detail/lcast_char_constants.hpp" 3 4
23866: #define BOOST_LEXICAL_CAST_DETAIL_LCAST_CHAR_CONSTANTS_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost
23866: {
23866: namespace detail
23866: {
23866: template < typename Char >
23866: struct lcast_char_constants {
23866:
23866:
23866: static const Char zero = static_cast<Char>('0');
23866: static const Char minus = static_cast<Char>('-');
23866: static const Char plus = static_cast<Char>('+');
23866: static const Char lowercase_e = static_cast<Char>('e');
23866: static const Char capital_e = static_cast<Char>('E');
23866: static const Char c_decimal_separator = static_cast<Char>('.');
23866: };
23866: }
23866: }
23866: # 62 "/usr/include/boost/lexical_cast/detail/converter_lexical_streams.hpp" 2 3 4
23866: # 1 "/usr/include/boost/lexical_cast/detail/lcast_unsigned_converters.hpp" 1 3 4
23866: # 19 "/usr/include/boost/lexical_cast/detail/lcast_unsigned_converters.hpp" 3 4
23866: #define BOOST_LEXICAL_CAST_DETAIL_LCAST_UNSIGNED_CONVERTERS_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/climits" 1 3 4
23866: # 39 "/usr/include/c++/10/climits" 3 4
23866:
23866: # 40 "/usr/include/c++/10/climits" 3
23866:
23866:
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/limits.h" 1 3 4
23866: # 43 "/usr/include/c++/10/climits" 2 3
23866: # 27 "/usr/include/boost/lexical_cast/detail/lcast_unsigned_converters.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/c++/10/cstring" 1 3 4
23866: # 39 "/usr/include/c++/10/cstring" 3 4
23866:
23866: # 40 "/usr/include/c++/10/cstring" 3
23866: # 30 "/usr/include/boost/lexical_cast/detail/lcast_unsigned_converters.hpp" 2 3 4
23866: # 1 "/usr/include/c++/10/cstdio" 1 3 4
23866: # 39 "/usr/include/c++/10/cstdio" 3 4
23866:
23866: # 40 "/usr/include/c++/10/cstdio" 3
23866: # 31 "/usr/include/boost/lexical_cast/detail/lcast_unsigned_converters.hpp" 2 3 4
23866: # 53 "/usr/include/boost/lexical_cast/detail/lcast_unsigned_converters.hpp" 3 4
23866: # 1 "/usr/include/boost/noncopyable.hpp" 1 3 4
23866: # 10 "/usr/include/boost/noncopyable.hpp" 3 4
23866: #define BOOST_NONCOPYABLE_HPP
23866: # 54 "/usr/include/boost/lexical_cast/detail/lcast_unsigned_converters.hpp" 2 3 4
23866:
23866: namespace boost
23866: {
23866: namespace detail
23866: {
23866: template<class T>
23866: inline
23866: typename boost::make_unsigned<T>::type lcast_to_unsigned(const T value) noexcept {
23866: typedef typename boost::make_unsigned<T>::type result_type;
23866: return value < 0
23866: ? static_cast<result_type>(0u - static_cast<result_type>(value))
23866: : static_cast<result_type>(value);
23866: }
23866: }
23866:
23866: namespace detail
23866: {
23866: template <class Traits, class T, class CharT>
23866: class lcast_put_unsigned: boost::noncopyable {
23866: typedef typename Traits::int_type int_type;
23866: typename boost::conditional<
23866: (sizeof(unsigned) > sizeof(T))
23866: , unsigned
23866: , T
23866: >::type m_value;
23866: CharT* m_finish;
23866: CharT const m_czero;
23866: int_type const m_zero;
23866:
23866: public:
23866: lcast_put_unsigned(const T n_param, CharT* finish) noexcept
23866: : m_value(n_param), m_finish(finish)
23866: , m_czero(lcast_char_constants<CharT>::zero), m_zero(Traits::to_int_type(m_czero))
23866: {
23866:
23866: static_assert(!std::numeric_limits<T>::is_signed, "!std::numeric_limits<T>::is_signed");
23866:
23866: }
23866:
23866: CharT* convert() {
23866:
23866: std::locale loc;
23866: if (loc == std::locale::classic()) {
23866: return main_convert_loop();
23866: }
23866:
23866: typedef std::numpunct<CharT> numpunct;
23866: numpunct const& np = std::use_facet< numpunct >(loc);
23866: std::string const grouping = np.grouping();
23866: std::string::size_type const grouping_size = grouping.size();
23866:
23866: if (!grouping_size || grouping[0] <= 0) {
23866: return main_convert_loop();
23866: }
23866:
23866:
23866:
23866: static_assert(std::numeric_limits<T>::digits10 < (0x7f * 2 + 1), "std::numeric_limits<T>::digits10 < CHAR_MAX");
23866:
23866: CharT const thousands_sep = np.thousands_sep();
23866: std::string::size_type group = 0;
23866: char last_grp_size = grouping[0];
23866: char left = last_grp_size;
23866:
23866: do {
23866: if (left == 0) {
23866: ++group;
23866: if (group < grouping_size) {
23866: char const grp_size = grouping[group];
23866: last_grp_size = (grp_size <= 0 ? static_cast<char>((0x7f * 2 + 1)) : grp_size);
23866: }
23866:
23866: left = last_grp_size;
23866: --m_finish;
23866: Traits::assign(*m_finish, thousands_sep);
23866: }
23866:
23866: --left;
23866: } while (main_convert_iteration());
23866:
23866: return m_finish;
23866:
23866:
23866:
23866: }
23866:
23866: private:
23866: inline bool main_convert_iteration() noexcept {
23866: --m_finish;
23866: int_type const digit = static_cast<int_type>(m_value % 10U);
23866: Traits::assign(*m_finish, Traits::to_char_type(m_zero + digit));
23866: m_value /= 10;
23866: return !!m_value;
23866: }
23866:
23866: inline CharT* main_convert_loop() noexcept {
23866: while (main_convert_iteration());
23866: return m_finish;
23866: }
23866: };
23866: }
23866:
23866: namespace detail
23866: {
23866: template <class Traits, class T, class CharT>
23866: class lcast_ret_unsigned: boost::noncopyable {
23866: bool m_multiplier_overflowed;
23866: T m_multiplier;
23866: T& m_value;
23866: const CharT* const m_begin;
23866: const CharT* m_end;
23866:
23866: public:
23866: lcast_ret_unsigned(T& value, const CharT* const begin, const CharT* end) noexcept
23866: : m_multiplier_overflowed(false), m_multiplier(1), m_value(value), m_begin(begin), m_end(end)
23866: {
23866:
23866: static_assert(!std::numeric_limits<T>::is_signed, "!std::numeric_limits<T>::is_signed");
23866:
23866:
23866:
23866:
23866:
23866:
23866: static_assert(std::numeric_limits<T>::is_specialized, "std::numeric_limits are not specialized for integral type passed to boost::lexical_cast")
23866:
23866: ;
23866:
23866: }
23866:
23866: inline bool convert() {
23866: CharT const czero = lcast_char_constants<CharT>::zero;
23866: --m_end;
23866: m_value = static_cast<T>(0);
23866:
23866: if (m_begin > m_end || *m_end < czero || *m_end >= czero + 10)
23866: return false;
23866: m_value = static_cast<T>(*m_end - czero);
23866: --m_end;
23866:
23866:
23866:
23866:
23866: std::locale loc;
23866: if (loc == std::locale::classic()) {
23866: return main_convert_loop();
23866: }
23866:
23866: typedef std::numpunct<CharT> numpunct;
23866: numpunct const& np = std::use_facet< numpunct >(loc);
23866: std::string const& grouping = np.grouping();
23866: std::string::size_type const grouping_size = grouping.size();
23866:
23866:
23866:
23866:
23866: if (!grouping_size || grouping[0] <= 0) {
23866: return main_convert_loop();
23866: }
23866:
23866: unsigned char current_grouping = 0;
23866: CharT const thousands_sep = np.thousands_sep();
23866: char remained = static_cast<char>(grouping[current_grouping] - 1);
23866:
23866: for (;m_end >= m_begin; --m_end)
23866: {
23866: if (remained) {
23866: if (!main_convert_iteration()) {
23866: return false;
23866: }
23866: --remained;
23866: } else {
23866: if ( !Traits::eq(*m_end, thousands_sep) )
23866: {
23866: # 239 "/usr/include/boost/lexical_cast/detail/lcast_unsigned_converters.hpp" 3 4
23866: return main_convert_loop();
23866: } else {
23866: if (m_begin == m_end) return false;
23866: if (current_grouping < grouping_size - 1) ++current_grouping;
23866: remained = grouping[current_grouping];
23866: }
23866: }
23866: }
23866:
23866: return true;
23866:
23866: }
23866:
23866: private:
23866:
23866:
23866: inline bool main_convert_iteration() noexcept {
23866: CharT const czero = lcast_char_constants<CharT>::zero;
23866: T const maxv = (std::numeric_limits<T>::max)();
23866:
23866: m_multiplier_overflowed = m_multiplier_overflowed || (maxv/10 < m_multiplier);
23866: m_multiplier = static_cast<T>(m_multiplier * 10);
23866:
23866: T const dig_value = static_cast<T>(*m_end - czero);
23866: T const new_sub_value = static_cast<T>(m_multiplier * dig_value);
23866:
23866:
23866:
23866: if (*m_end < czero || *m_end >= czero + 10
23866: || (dig_value && (
23866: m_multiplier_overflowed
23866: || static_cast<T>(maxv / dig_value) < m_multiplier
23866: || static_cast<T>(maxv - new_sub_value) < m_value
23866: ))
23866: ) return false;
23866:
23866: m_value = static_cast<T>(m_value + new_sub_value);
23866:
23866: return true;
23866: }
23866:
23866: bool main_convert_loop() noexcept {
23866: for ( ; m_end >= m_begin; --m_end) {
23866: if (!main_convert_iteration()) {
23866: return false;
23866: }
23866: }
23866:
23866: return true;
23866: }
23866: };
23866: }
23866: }
23866: # 63 "/usr/include/boost/lexical_cast/detail/converter_lexical_streams.hpp" 2 3 4
23866: # 1 "/usr/include/boost/lexical_cast/detail/inf_nan.hpp" 1 3 4
23866: # 19 "/usr/include/boost/lexical_cast/detail/inf_nan.hpp" 3 4
23866: #define BOOST_LEXICAL_CAST_DETAIL_INF_NAN_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/cstring" 1 3 4
23866: # 39 "/usr/include/c++/10/cstring" 3 4
23866:
23866: # 40 "/usr/include/c++/10/cstring" 3
23866: # 32 "/usr/include/boost/lexical_cast/detail/inf_nan.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/math/special_functions/sign.hpp" 1 3 4
23866: # 10 "/usr/include/boost/math/special_functions/sign.hpp" 3 4
23866: #define BOOST_MATH_TOOLS_SIGN_HPP
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/math/tools/config.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MATH_TOOLS_CONFIG_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/predef/architecture/x86.h" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/predef/architecture/x86/32.h" 1 3 4
23866: # 9 "/usr/include/boost/predef/architecture/x86/32.h" 3 4
23866: #define BOOST_PREDEF_ARCHITECTURE_X86_32_H
23866:
23866: # 1 "/usr/include/boost/predef/version_number.h" 1 3 4
23866: # 9 "/usr/include/boost/predef/version_number.h" 3 4
23866: #define BOOST_PREDEF_VERSION_NUMBER_H
23866: # 36 "/usr/include/boost/predef/version_number.h" 3 4
23866: #define BOOST_VERSION_NUMBER(major,minor,patch) ( (((major)%100)*10000000) + (((minor)%100)*100000) + ((patch)%100000) )
23866:
23866:
23866: #define BOOST_VERSION_NUMBER_MAX BOOST_VERSION_NUMBER(99,99,99999)
23866:
23866:
23866: #define BOOST_VERSION_NUMBER_ZERO BOOST_VERSION_NUMBER(0,0,0)
23866:
23866:
23866: #define BOOST_VERSION_NUMBER_MIN BOOST_VERSION_NUMBER(0,0,1)
23866:
23866:
23866: #define BOOST_VERSION_NUMBER_AVAILABLE BOOST_VERSION_NUMBER_MIN
23866:
23866:
23866: #define BOOST_VERSION_NUMBER_NOT_AVAILABLE BOOST_VERSION_NUMBER_ZERO
23866: # 65 "/usr/include/boost/predef/version_number.h" 3 4
23866: #define BOOST_VERSION_NUMBER_MAJOR(N) ( ((N)/10000000)%100 )
23866:
23866:
23866: #define BOOST_VERSION_NUMBER_MINOR(N) ( ((N)/100000)%100 )
23866:
23866:
23866: #define BOOST_VERSION_NUMBER_PATCH(N) ( (N)%100000 )
23866: # 12 "/usr/include/boost/predef/architecture/x86/32.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/make.h" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/predef/detail/test.h" 1 3 4
23866: # 9 "/usr/include/boost/predef/detail/test.h" 3 4
23866: #define BOOST_PREDEF_DETAIL_TEST_H
23866:
23866:
23866:
23866: #define BOOST_PREDEF_DECLARE_TEST(x,s)
23866: # 8 "/usr/include/boost/predef/make.h" 2 3 4
23866:
23866:
23866: #define BOOST_PREDEF_MAKE_H
23866: # 35 "/usr/include/boost/predef/make.h" 3 4
23866: #define BOOST_PREDEF_MAKE_0X_VRP(V) BOOST_VERSION_NUMBER((V&0xF00)>>8,(V&0xF0)>>4,(V&0xF))
23866:
23866:
23866:
23866: #define BOOST_PREDEF_MAKE_0X_VVRP(V) BOOST_VERSION_NUMBER((V&0xFF00)>>8,(V&0xF0)>>4,(V&0xF))
23866:
23866:
23866:
23866: #define BOOST_PREDEF_MAKE_0X_VRPP(V) BOOST_VERSION_NUMBER((V&0xF000)>>12,(V&0xF00)>>8,(V&0xFF))
23866:
23866:
23866:
23866: #define BOOST_PREDEF_MAKE_0X_VVRR(V) BOOST_VERSION_NUMBER((V&0xFF00)>>8,(V&0xFF),0)
23866:
23866:
23866:
23866: #define BOOST_PREDEF_MAKE_0X_VRRPPPP(V) BOOST_VERSION_NUMBER((V&0xF000000)>>24,(V&0xFF0000)>>16,(V&0xFFFF))
23866:
23866:
23866:
23866: #define BOOST_PREDEF_MAKE_0X_VVRRP(V) BOOST_VERSION_NUMBER((V&0xFF000)>>12,(V&0xFF0)>>4,(V&0xF))
23866:
23866:
23866:
23866: #define BOOST_PREDEF_MAKE_0X_VRRPP000(V) BOOST_VERSION_NUMBER((V&0xF0000000)>>28,(V&0xFF00000)>>20,(V&0xFF000)>>12)
23866:
23866:
23866:
23866: #define BOOST_PREDEF_MAKE_0X_VVRRPP(V) BOOST_VERSION_NUMBER((V&0xFF0000)>>16,(V&0xFF00)>>8,(V&0xFF))
23866:
23866:
23866:
23866: #define BOOST_PREDEF_MAKE_10_VPPP(V) BOOST_VERSION_NUMBER(((V)/1000)%10,0,(V)%1000)
23866:
23866:
23866:
23866: #define BOOST_PREDEF_MAKE_10_VR0(V) BOOST_VERSION_NUMBER(((V)/100)%10,((V)/10)%10,0)
23866:
23866:
23866:
23866: #define BOOST_PREDEF_MAKE_10_VRP(V) BOOST_VERSION_NUMBER(((V)/100)%10,((V)/10)%10,(V)%10)
23866:
23866:
23866:
23866: #define BOOST_PREDEF_MAKE_10_VRP000(V) BOOST_VERSION_NUMBER(((V)/100000)%10,((V)/10000)%10,((V)/1000)%10)
23866:
23866:
23866:
23866: #define BOOST_PREDEF_MAKE_10_VRPPPP(V) BOOST_VERSION_NUMBER(((V)/100000)%10,((V)/10000)%10,(V)%10000)
23866:
23866:
23866:
23866: #define BOOST_PREDEF_MAKE_10_VRPP(V) BOOST_VERSION_NUMBER(((V)/1000)%10,((V)/100)%10,(V)%100)
23866:
23866:
23866:
23866: #define BOOST_PREDEF_MAKE_10_VRR(V) BOOST_VERSION_NUMBER(((V)/100)%10,(V)%100,0)
23866:
23866:
23866:
23866: #define BOOST_PREDEF_MAKE_10_VRRPP(V) BOOST_VERSION_NUMBER(((V)/10000)%10,((V)/100)%100,(V)%100)
23866:
23866:
23866:
23866: #define BOOST_PREDEF_MAKE_10_VRR000(V) BOOST_VERSION_NUMBER(((V)/100000)%10,((V)/1000)%100,0)
23866:
23866:
23866:
23866: #define BOOST_PREDEF_MAKE_10_VV00(V) BOOST_VERSION_NUMBER(((V)/100)%100,0,0)
23866:
23866:
23866:
23866: #define BOOST_PREDEF_MAKE_10_VVRR(V) BOOST_VERSION_NUMBER(((V)/100)%100,(V)%100,0)
23866:
23866:
23866:
23866: #define BOOST_PREDEF_MAKE_10_VVRRP(V) BOOST_VERSION_NUMBER(((V)/1000)%100,((V)/10)%100,(V)%10)
23866:
23866:
23866:
23866: #define BOOST_PREDEF_MAKE_10_VVRRPP(V) BOOST_VERSION_NUMBER(((V)/10000)%100,((V)/100)%100,(V)%100)
23866:
23866:
23866:
23866: #define BOOST_PREDEF_MAKE_10_VVRRPPP(V) BOOST_VERSION_NUMBER(((V)/100000)%100,((V)/1000)%100,(V)%1000)
23866:
23866:
23866:
23866: #define BOOST_PREDEF_MAKE_10_VVRR0PP00(V) BOOST_VERSION_NUMBER(((V)/10000000)%100,((V)/100000)%100,((V)/100)%100)
23866:
23866:
23866:
23866: #define BOOST_PREDEF_MAKE_10_VVRR0PPPP(V) BOOST_VERSION_NUMBER(((V)/10000000)%100,((V)/100000)%100,(V)%10000)
23866:
23866:
23866:
23866: #define BOOST_PREDEF_MAKE_10_VVRR00PP00(V) BOOST_VERSION_NUMBER(((V)/100000000)%100,((V)/1000000)%100,((V)/100)%100)
23866: # 145 "/usr/include/boost/predef/make.h" 3 4
23866: #define BOOST_PREDEF_MAKE_DATE(Y,M,D) BOOST_VERSION_NUMBER((Y)%10000-1970,(M)%100,(D)%100)
23866:
23866:
23866:
23866: #define BOOST_PREDEF_MAKE_YYYYMMDD(V) BOOST_PREDEF_MAKE_DATE(((V)/10000)%10000,((V)/100)%100,(V)%100)
23866:
23866:
23866:
23866: #define BOOST_PREDEF_MAKE_YYYY(V) BOOST_PREDEF_MAKE_DATE(V,1,1)
23866:
23866:
23866:
23866: #define BOOST_PREDEF_MAKE_YYYYMM(V) BOOST_PREDEF_MAKE_DATE((V)/100,(V)%100,1)
23866: # 13 "/usr/include/boost/predef/architecture/x86/32.h" 2 3 4
23866: # 45 "/usr/include/boost/predef/architecture/x86/32.h" 3 4
23866: #define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER_NOT_AVAILABLE
23866: # 81 "/usr/include/boost/predef/architecture/x86/32.h" 3 4
23866: #define BOOST_ARCH_X86_32_NAME "Intel x86-32"
23866:
23866: # 1 "/usr/include/boost/predef/architecture/x86.h" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/predef/architecture/x86/32.h" 1 3 4
23866: # 88 "/usr/include/boost/predef/architecture/x86/32.h" 3 4
23866:
23866: # 9 "/usr/include/boost/predef/architecture/x86.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/architecture/x86/64.h" 1 3 4
23866: # 9 "/usr/include/boost/predef/architecture/x86/64.h" 3 4
23866: #define BOOST_PREDEF_ARCHITECTURE_X86_64_H
23866:
23866:
23866: # 1 "/usr/include/boost/predef/make.h" 1 3 4
23866: # 13 "/usr/include/boost/predef/architecture/x86/64.h" 2 3 4
23866: # 31 "/usr/include/boost/predef/architecture/x86/64.h" 3 4
23866: #define BOOST_ARCH_X86_64 BOOST_VERSION_NUMBER_NOT_AVAILABLE
23866: # 44 "/usr/include/boost/predef/architecture/x86/64.h" 3 4
23866: #define BOOST_ARCH_X86_64_NAME "Intel x86-64"
23866:
23866: # 1 "/usr/include/boost/predef/architecture/x86.h" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/predef/architecture/x86/32.h" 1 3 4
23866: # 88 "/usr/include/boost/predef/architecture/x86/32.h" 3 4
23866:
23866: # 9 "/usr/include/boost/predef/architecture/x86.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/architecture/x86/64.h" 1 3 4
23866: # 51 "/usr/include/boost/predef/architecture/x86/64.h" 3 4
23866:
23866: # 10 "/usr/include/boost/predef/architecture/x86.h" 2 3 4
23866:
23866:
23866: #define BOOST_PREDEF_ARCHITECTURE_X86_H
23866: # 22 "/usr/include/boost/predef/architecture/x86.h" 3 4
23866: #define BOOST_ARCH_X86 BOOST_VERSION_NUMBER_NOT_AVAILABLE
23866: # 33 "/usr/include/boost/predef/architecture/x86.h" 3 4
23866: #define BOOST_ARCH_X86_NAME "Intel x86"
23866:
23866:
23866:
23866:
23866:
23866: # 47 "/usr/include/boost/predef/architecture/x86/64.h" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: # 10 "/usr/include/boost/predef/architecture/x86.h" 2 3 4
23866: # 38 "/usr/include/boost/predef/architecture/x86.h" 3 4
23866:
23866: # 84 "/usr/include/boost/predef/architecture/x86/32.h" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: # 9 "/usr/include/boost/predef/architecture/x86.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/architecture/x86/64.h" 1 3 4
23866: # 51 "/usr/include/boost/predef/architecture/x86/64.h" 3 4
23866:
23866: # 10 "/usr/include/boost/predef/architecture/x86.h" 2 3 4
23866: # 38 "/usr/include/boost/predef/architecture/x86.h" 3 4
23866:
23866: # 15 "/usr/include/boost/math/tools/config.hpp" 2 3 4
23866: # 1 "/usr/include/boost/cstdint.hpp" 1 3 4
23866: # 16 "/usr/include/boost/math/tools/config.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/climits" 1 3 4
23866: # 39 "/usr/include/c++/10/climits" 3 4
23866:
23866: # 40 "/usr/include/c++/10/climits" 3
23866:
23866:
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/limits.h" 1 3 4
23866: # 43 "/usr/include/c++/10/climits" 2 3
23866: # 21 "/usr/include/boost/math/tools/config.hpp" 2 3 4
23866: # 1 "/usr/include/c++/10/cfloat" 1 3 4
23866: # 39 "/usr/include/c++/10/cfloat" 3 4
23866:
23866: # 40 "/usr/include/c++/10/cfloat" 3
23866:
23866:
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/float.h" 1 3 4
23866: # 29 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/float.h" 3 4
23866: #define _FLOAT_H___
23866:
23866:
23866: #undef FLT_RADIX
23866: #define FLT_RADIX __FLT_RADIX__
23866:
23866:
23866: #undef FLT_MANT_DIG
23866: #undef DBL_MANT_DIG
23866: #undef LDBL_MANT_DIG
23866: #define FLT_MANT_DIG __FLT_MANT_DIG__
23866: #define DBL_MANT_DIG __DBL_MANT_DIG__
23866: #define LDBL_MANT_DIG __LDBL_MANT_DIG__
23866: # 50 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/float.h" 3 4
23866: #undef FLT_DIG
23866: #undef DBL_DIG
23866: #undef LDBL_DIG
23866: #define FLT_DIG __FLT_DIG__
23866: #define DBL_DIG __DBL_DIG__
23866: #define LDBL_DIG __LDBL_DIG__
23866:
23866:
23866: #undef FLT_MIN_EXP
23866: #undef DBL_MIN_EXP
23866: #undef LDBL_MIN_EXP
23866: #define FLT_MIN_EXP __FLT_MIN_EXP__
23866: #define DBL_MIN_EXP __DBL_MIN_EXP__
23866: #define LDBL_MIN_EXP __LDBL_MIN_EXP__
23866:
23866:
23866:
23866:
23866:
23866:
23866: #undef FLT_MIN_10_EXP
23866: #undef DBL_MIN_10_EXP
23866: #undef LDBL_MIN_10_EXP
23866: #define FLT_MIN_10_EXP __FLT_MIN_10_EXP__
23866: #define DBL_MIN_10_EXP __DBL_MIN_10_EXP__
23866: #define LDBL_MIN_10_EXP __LDBL_MIN_10_EXP__
23866:
23866:
23866: #undef FLT_MAX_EXP
23866: #undef DBL_MAX_EXP
23866: #undef LDBL_MAX_EXP
23866: #define FLT_MAX_EXP __FLT_MAX_EXP__
23866: #define DBL_MAX_EXP __DBL_MAX_EXP__
23866: #define LDBL_MAX_EXP __LDBL_MAX_EXP__
23866:
23866:
23866:
23866:
23866:
23866:
23866: #undef FLT_MAX_10_EXP
23866: #undef DBL_MAX_10_EXP
23866: #undef LDBL_MAX_10_EXP
23866: #define FLT_MAX_10_EXP __FLT_MAX_10_EXP__
23866: #define DBL_MAX_10_EXP __DBL_MAX_10_EXP__
23866: #define LDBL_MAX_10_EXP __LDBL_MAX_10_EXP__
23866:
23866:
23866:
23866:
23866:
23866: #undef FLT_MAX
23866: #undef DBL_MAX
23866: #undef LDBL_MAX
23866: #define FLT_MAX __FLT_MAX__
23866: #define DBL_MAX __DBL_MAX__
23866: #define LDBL_MAX __LDBL_MAX__
23866:
23866:
23866:
23866: #undef FLT_EPSILON
23866: #undef DBL_EPSILON
23866: #undef LDBL_EPSILON
23866: #define FLT_EPSILON __FLT_EPSILON__
23866: #define DBL_EPSILON __DBL_EPSILON__
23866: #define LDBL_EPSILON __LDBL_EPSILON__
23866:
23866:
23866: #undef FLT_MIN
23866: #undef DBL_MIN
23866: #undef LDBL_MIN
23866: #define FLT_MIN __FLT_MIN__
23866: #define DBL_MIN __DBL_MIN__
23866: #define LDBL_MIN __LDBL_MIN__
23866:
23866:
23866:
23866: #undef FLT_ROUNDS
23866: #define FLT_ROUNDS 1
23866: # 193 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/float.h" 3 4
23866: #undef FLT_EVAL_METHOD
23866:
23866:
23866:
23866: #define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
23866: # 208 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/float.h" 3 4
23866: #undef DECIMAL_DIG
23866: #define DECIMAL_DIG __DECIMAL_DIG__
23866:
23866:
23866:
23866:
23866:
23866:
23866: #undef FLT_DECIMAL_DIG
23866: #undef DBL_DECIMAL_DIG
23866: #undef LDBL_DECIMAL_DIG
23866: #define FLT_DECIMAL_DIG __FLT_DECIMAL_DIG__
23866: #define DBL_DECIMAL_DIG __DBL_DECIMAL_DIG__
23866: #define LDBL_DECIMAL_DIG __LDBL_DECIMAL_DIG__
23866:
23866:
23866: #undef FLT_HAS_SUBNORM
23866: #undef DBL_HAS_SUBNORM
23866: #undef LDBL_HAS_SUBNORM
23866: #define FLT_HAS_SUBNORM __FLT_HAS_DENORM__
23866: #define DBL_HAS_SUBNORM __DBL_HAS_DENORM__
23866: #define LDBL_HAS_SUBNORM __LDBL_HAS_DENORM__
23866:
23866:
23866: #undef FLT_TRUE_MIN
23866: #undef DBL_TRUE_MIN
23866: #undef LDBL_TRUE_MIN
23866: #define FLT_TRUE_MIN __FLT_DENORM_MIN__
23866: #define DBL_TRUE_MIN __DBL_DENORM_MIN__
23866: #define LDBL_TRUE_MIN __LDBL_DENORM_MIN__
23866: # 43 "/usr/include/c++/10/cfloat" 2 3
23866:
23866:
23866: #define _GLIBCXX_CFLOAT 1
23866: # 22 "/usr/include/boost/math/tools/config.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/math/tools/user.hpp" 1 3 4
23866: # 10 "/usr/include/boost/math/tools/user.hpp" 3 4
23866: #define BOOST_MATH_TOOLS_USER_HPP
23866: # 30 "/usr/include/boost/math/tools/config.hpp" 2 3 4
23866: # 116 "/usr/include/boost/math/tools/config.hpp" 3 4
23866: #define BOOST_MATH_USE_C99
23866: # 153 "/usr/include/boost/math/tools/config.hpp" 3 4
23866: #define BOOST_MATH_EXPLICIT_TEMPLATE_TYPE(t)
23866: #define BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(t)
23866: #define BOOST_MATH_EXPLICIT_TEMPLATE_NON_TYPE(t,v)
23866: #define BOOST_MATH_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t,v)
23866:
23866: #define BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE(t)
23866: #define BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC(t)
23866: #define BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t,v)
23866: #define BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t,v)
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MATH_SMALL_CONSTANT(x) 0.0
23866: # 209 "/usr/include/boost/math/tools/config.hpp" 3 4
23866: #define BOOST_MATH_POLY_METHOD 3
23866: #define BOOST_MATH_RATIONAL_METHOD 3
23866: # 242 "/usr/include/boost/math/tools/config.hpp" 3 4
23866: #define BOOST_MATH_CONSTEXPR BOOST_CONSTEXPR
23866: # 251 "/usr/include/boost/math/tools/config.hpp" 3 4
23866: #define BOOST_MATH_NOEXCEPT(T) noexcept(std::is_floating_point<T>::value)
23866: #define BOOST_MATH_IS_FLOAT(T) (std::is_floating_point<T>::value)
23866: # 268 "/usr/include/boost/math/tools/config.hpp" 3 4
23866: #define BOOST_MATH_MAX_POLY_ORDER 20
23866: # 283 "/usr/include/boost/math/tools/config.hpp" 3 4
23866: #define BOOST_MATH_INT_TABLE_TYPE(RT,IT) IT
23866:
23866:
23866: #define BOOST_MATH_INT_VALUE_SUFFIX(RV,SUF) RV ##SUF
23866: # 324 "/usr/include/boost/math/tools/config.hpp" 3 4
23866: #define BOOST_MATH_CONTROL_FP
23866:
23866:
23866:
23866:
23866: #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;
23866: # 354 "/usr/include/boost/math/tools/config.hpp" 3 4
23866: #define BOOST_MATH_STD_USING BOOST_MATH_STD_USING_CORE
23866:
23866: namespace boost{ namespace math{
23866: namespace tools
23866: {
23866:
23866: template <class T>
23866: inline T max (T a, T b, T c) noexcept(std::is_floating_point<T>::value)
23866: {
23866: return (std::max)((std::max)(a, b), c);
23866: }
23866:
23866: template <class T>
23866: inline T max (T a, T b, T c, T d) noexcept(std::is_floating_point<T>::value)
23866: {
23866: return (std::max)((std::max)(a, b), (std::max)(c, d));
23866: }
23866:
23866: }
23866:
23866: template <class T>
23866: void suppress_unused_variable_warning(const T&) noexcept(std::is_floating_point<T>::value)
23866: {
23866: }
23866:
23866: namespace detail{
23866:
23866: template <class T>
23866: struct is_integer_for_rounding
23866: {
23866: static const bool value = boost::is_integral<T>::value
23866:
23866: || (std::numeric_limits<T>::is_specialized && std::numeric_limits<T>::is_integer)
23866:
23866: ;
23866: };
23866:
23866: }
23866:
23866: }}
23866:
23866:
23866:
23866: #define BOOST_MATH_HAVE_FIXED_GLIBC
23866: # 445 "/usr/include/boost/math/tools/config.hpp" 3 4
23866: #define BOOST_FPU_EXCEPTION_GUARD
23866: #define BOOST_MATH_INSTRUMENT_FPU
23866: # 461 "/usr/include/boost/math/tools/config.hpp" 3 4
23866: #define BOOST_MATH_INSTRUMENT_CODE(x)
23866: #define BOOST_MATH_INSTRUMENT_VARIABLE(name)
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MATH_THREAD_LOCAL thread_local
23866: # 479 "/usr/include/boost/math/tools/config.hpp" 3 4
23866: #define BOOST_MATH_HAVE_CONSTEXPR_TABLES
23866: #define BOOST_MATH_CONSTEXPR_TABLE_FUNCTION constexpr
23866: # 17 "/usr/include/boost/math/special_functions/sign.hpp" 2 3 4
23866: # 1 "/usr/include/boost/math/special_functions/math_fwd.hpp" 1 3 4
23866: # 20 "/usr/include/boost/math/special_functions/math_fwd.hpp" 3 4
23866: #define BOOST_MATH_SPECIAL_MATH_FWD_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/math/special_functions/detail/round_fwd.hpp" 1 3 4
23866: # 9 "/usr/include/boost/math/special_functions/detail/round_fwd.hpp" 3 4
23866: #define BOOST_MATH_SPECIAL_ROUND_FWD_HPP
23866:
23866:
23866: # 1 "/usr/include/boost/math/tools/promotion.hpp" 1 3 4
23866: # 19 "/usr/include/boost/math/tools/promotion.hpp" 3 4
23866: #define BOOST_MATH_PROMOTION_HPP
23866: # 42 "/usr/include/boost/math/tools/promotion.hpp" 3 4
23866: namespace boost
23866: {
23866: namespace math
23866: {
23866: namespace tools
23866: {
23866: # 68 "/usr/include/boost/math/tools/promotion.hpp" 3 4
23866: template <class T>
23866: struct promote_arg
23866: {
23866: typedef typename mpl::if_<is_integral<T>, double, T>::type type;
23866: };
23866:
23866:
23866: template <> struct promote_arg<float> { typedef float type; };
23866: template <> struct promote_arg<double>{ typedef double type; };
23866: template <> struct promote_arg<long double> { typedef long double type; };
23866: template <> struct promote_arg<int> { typedef double type; };
23866:
23866: template <class T1, class T2>
23866: struct promote_args_2
23866: {
23866:
23866: typedef typename promote_arg<T1>::type T1P;
23866: typedef typename promote_arg<T2>::type T2P;
23866:
23866: typedef typename mpl::if_c<
23866: is_floating_point<T1P>::value && is_floating_point<T2P>::value,
23866:
23866:
23866:
23866:
23866: typename mpl::if_c<is_same<long double, T1P>::value || is_same<long double, T2P>::value,
23866: long double,
23866: typename mpl::if_c<is_same<double, T1P>::value || is_same<double, T2P>::value,
23866: double,
23866: float
23866: >::type
23866:
23866:
23866:
23866: >::type,
23866:
23866: typename mpl::if_c<!is_floating_point<T2P>::value && ::boost::is_convertible<T1P, T2P>::value, T2P, T1P>::type>::type type;
23866: };
23866:
23866:
23866: template <> struct promote_args_2<float, float> { typedef float type; };
23866: template <> struct promote_args_2<double, double>{ typedef double type; };
23866: template <> struct promote_args_2<long double, long double> { typedef long double type; };
23866: template <> struct promote_args_2<int, int> { typedef double type; };
23866: template <> struct promote_args_2<int, float> { typedef double type; };
23866: template <> struct promote_args_2<float, int> { typedef double type; };
23866: template <> struct promote_args_2<int, double> { typedef double type; };
23866: template <> struct promote_args_2<double, int> { typedef double type; };
23866: template <> struct promote_args_2<int, long double> { typedef long double type; };
23866: template <> struct promote_args_2<long double, int> { typedef long double type; };
23866: template <> struct promote_args_2<float, double> { typedef double type; };
23866: template <> struct promote_args_2<double, float> { typedef double type; };
23866: template <> struct promote_args_2<float, long double> { typedef long double type; };
23866: template <> struct promote_args_2<long double, float> { typedef long double type; };
23866: template <> struct promote_args_2<double, long double> { typedef long double type; };
23866: template <> struct promote_args_2<long double, double> { typedef long double type; };
23866:
23866: template <class T1, class T2=float, class T3=float, class T4=float, class T5=float, class T6=float>
23866: struct promote_args
23866: {
23866: typedef typename promote_args_2<
23866: typename remove_cv<T1>::type,
23866: typename promote_args_2<
23866: typename remove_cv<T2>::type,
23866: typename promote_args_2<
23866: typename remove_cv<T3>::type,
23866: typename promote_args_2<
23866: typename remove_cv<T4>::type,
23866: typename promote_args_2<
23866: typename remove_cv<T5>::type, typename remove_cv<T6>::type
23866: >::type
23866: >::type
23866: >::type
23866: >::type
23866: >::type type;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class T1, class T2=float, class T3=float, class T4=float, class T5=float, class T6=float>
23866: struct promote_args_permissive
23866: {
23866: typedef typename promote_args_2<
23866: typename remove_cv<T1>::type,
23866: typename promote_args_2<
23866: typename remove_cv<T2>::type,
23866: typename promote_args_2<
23866: typename remove_cv<T3>::type,
23866: typename promote_args_2<
23866: typename remove_cv<T4>::type,
23866: typename promote_args_2<
23866: typename remove_cv<T5>::type, typename remove_cv<T6>::type
23866: >::type
23866: >::type
23866: >::type
23866: >::type
23866: >::type type;
23866: };
23866:
23866: }
23866: }
23866: }
23866: # 13 "/usr/include/boost/math/special_functions/detail/round_fwd.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: namespace boost
23866: {
23866: namespace math
23866: {
23866:
23866: template <class T, class Policy>
23866: typename tools::promote_args<T>::type trunc(const T& v, const Policy& pol);
23866: template <class T>
23866: typename tools::promote_args<T>::type trunc(const T& v);
23866: template <class T, class Policy>
23866: int itrunc(const T& v, const Policy& pol);
23866: template <class T>
23866: int itrunc(const T& v);
23866: template <class T, class Policy>
23866: long ltrunc(const T& v, const Policy& pol);
23866: template <class T>
23866: long ltrunc(const T& v);
23866:
23866: template <class T, class Policy>
23866: boost::long_long_type lltrunc(const T& v, const Policy& pol);
23866: template <class T>
23866: boost::long_long_type lltrunc(const T& v);
23866:
23866: template <class T, class Policy>
23866: typename tools::promote_args<T>::type round(const T& v, const Policy& pol);
23866: template <class T>
23866: typename tools::promote_args<T>::type round(const T& v);
23866: template <class T, class Policy>
23866: int iround(const T& v, const Policy& pol);
23866: template <class T>
23866: int iround(const T& v);
23866: template <class T, class Policy>
23866: long lround(const T& v, const Policy& pol);
23866: template <class T>
23866: long lround(const T& v);
23866:
23866: template <class T, class Policy>
23866: boost::long_long_type llround(const T& v, const Policy& pol);
23866: template <class T>
23866: boost::long_long_type llround(const T& v);
23866:
23866: template <class T, class Policy>
23866: T modf(const T& v, T* ipart, const Policy& pol);
23866: template <class T>
23866: T modf(const T& v, T* ipart);
23866: template <class T, class Policy>
23866: T modf(const T& v, int* ipart, const Policy& pol);
23866: template <class T>
23866: T modf(const T& v, int* ipart);
23866: template <class T, class Policy>
23866: T modf(const T& v, long* ipart, const Policy& pol);
23866: template <class T>
23866: T modf(const T& v, long* ipart);
23866:
23866: template <class T, class Policy>
23866: T modf(const T& v, boost::long_long_type* ipart, const Policy& pol);
23866: template <class T>
23866: T modf(const T& v, boost::long_long_type* ipart);
23866:
23866:
23866: }
23866: }
23866:
23866: #undef BOOST_MATH_STD_USING
23866: #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;
23866: # 28 "/usr/include/boost/math/special_functions/math_fwd.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/math/policies/policy.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MATH_POLICY_HPP
23866:
23866: # 1 "/usr/include/boost/mpl/list.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_LIST_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/list.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/limits/list.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_LIMITS_LIST_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/limits/list.hpp" 3 4
23866: #define BOOST_MPL_LIMIT_LIST_SIZE 20
23866: # 19 "/usr/include/boost/mpl/list.hpp" 2 3 4
23866: # 27 "/usr/include/boost/mpl/list.hpp" 3 4
23866: #define AUX778076_LIST_HEADER BOOST_PP_CAT(list,BOOST_MPL_LIMIT_LIST_SIZE).hpp
23866: # 36 "/usr/include/boost/mpl/list.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/list/list20.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_LIST_LIST20_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/list/list20.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/list/list10.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_LIST_LIST10_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/list/list10.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/list/list0.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_LIST_LIST0_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/list/list0.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/long.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_LONG_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/long.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/long_fwd.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_LONG_FWD_HPP_INCLUDED
23866: # 20 "/usr/include/boost/mpl/long_fwd.hpp" 3 4
23866: namespace mpl_ {
23866:
23866: template< long N > struct long_;
23866:
23866: }
23866: namespace boost { namespace mpl { using ::mpl_::long_; } }
23866: # 18 "/usr/include/boost/mpl/long.hpp" 2 3 4
23866:
23866: #define AUX_WRAPPER_VALUE_TYPE long
23866: # 1 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 1 3 4
23866: # 25 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 3 4
23866: #define AUX_WRAPPER_NAME BOOST_PP_CAT(AUX_WRAPPER_VALUE_TYPE,_)
23866:
23866:
23866:
23866: #define AUX_WRAPPER_PARAMS(N) BOOST_MPL_AUX_NTTP_DECL(AUX_WRAPPER_VALUE_TYPE, N)
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define AUX_WRAPPER_INST(value) BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::AUX_WRAPPER_NAME< value >
23866:
23866:
23866:
23866: namespace mpl_ {
23866:
23866: template< long N >
23866: struct long_
23866: {
23866: static const long value = N;
23866:
23866:
23866:
23866:
23866:
23866: typedef long_ type;
23866:
23866: typedef long value_type;
23866: typedef integral_c_tag tag;
23866: # 72 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 3 4
23866: typedef mpl_::long_< static_cast<long>((value + 1)) > next;
23866: typedef mpl_::long_< static_cast<long>((value - 1)) > prior;
23866:
23866:
23866:
23866:
23866:
23866:
23866: constexpr operator long() const { return static_cast<long>(this->value); }
23866: };
23866:
23866:
23866: template< long N >
23866: long const mpl_::long_< N >::value;
23866:
23866:
23866: }
23866:
23866: #undef AUX_WRAPPER_NAME
23866: #undef AUX_WRAPPER_PARAMS
23866: #undef AUX_WRAPPER_INST
23866: #undef AUX_WRAPPER_VALUE_TYPE
23866: # 21 "/usr/include/boost/mpl/long.hpp" 2 3 4
23866: # 18 "/usr/include/boost/mpl/list/list0.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/mpl/list/aux_/push_front.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_LIST_AUX_PUSH_FRONT_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/list/aux_/push_front.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/push_front_fwd.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_PUSH_FRONT_FWD_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/push_front_fwd.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template< typename Tag > struct push_front_impl;
23866: template< typename Sequence, typename T > struct push_front;
23866:
23866: }}
23866: # 18 "/usr/include/boost/mpl/list/aux_/push_front.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/mpl/list/aux_/item.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_LIST_AUX_NODE_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/list/aux_/item.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/list/aux_/tag.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_LIST_AUX_TAG_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/list/aux_/tag.hpp" 3 4
23866: namespace boost { namespace mpl { namespace aux {
23866:
23866: struct list_tag;
23866: struct l_iter_tag;
23866:
23866: }}}
23866: # 19 "/usr/include/boost/mpl/list/aux_/item.hpp" 2 3 4
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename Size
23866: , typename T
23866: , typename Next
23866: >
23866: struct l_item
23866: {
23866:
23866:
23866:
23866:
23866: typedef aux::list_tag tag;
23866: typedef l_item type;
23866:
23866: typedef Size size;
23866: typedef T item;
23866: typedef Next next;
23866: };
23866:
23866: struct l_end
23866: {
23866:
23866:
23866:
23866: typedef aux::list_tag tag;
23866: typedef l_end type;
23866: typedef long_<0> size;
23866: };
23866:
23866: }}
23866: # 20 "/usr/include/boost/mpl/list/aux_/push_front.hpp" 2 3 4
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<>
23866: struct push_front_impl< aux::list_tag >
23866: {
23866: template< typename List, typename T > struct apply
23866: {
23866: typedef l_item<
23866: typename next<typename List::size>::type
23866: , T
23866: , typename List::type
23866: > type;
23866: };
23866: };
23866:
23866: }}
23866: # 20 "/usr/include/boost/mpl/list/list0.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/list/aux_/pop_front.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_LIST_AUX_POP_FRONT_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/list/aux_/pop_front.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/pop_front_fwd.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_POP_FRONT_FWD_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/pop_front_fwd.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template< typename Tag > struct pop_front_impl;
23866: template< typename Sequence > struct pop_front;
23866:
23866: }}
23866: # 18 "/usr/include/boost/mpl/list/aux_/pop_front.hpp" 2 3 4
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<>
23866: struct pop_front_impl< aux::list_tag >
23866: {
23866: template< typename List > struct apply
23866: {
23866: typedef typename mpl::next<List>::type type;
23866: };
23866: };
23866:
23866: }}
23866: # 21 "/usr/include/boost/mpl/list/list0.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/list/aux_/push_back.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_LIST_AUX_PUSH_BACK_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/list/aux_/push_back.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/push_back_fwd.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_PUSH_BACK_FWD_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/push_back_fwd.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template< typename Tag > struct push_back_impl;
23866: template< typename Sequence, typename T > struct push_back;
23866:
23866: }}
23866: # 18 "/usr/include/boost/mpl/list/aux_/push_back.hpp" 2 3 4
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template< typename Tag > struct has_push_back_impl;
23866:
23866: template<>
23866: struct has_push_back_impl< aux::list_tag >
23866: {
23866: template< typename Seq > struct apply
23866: : false_
23866: {
23866: };
23866: };
23866:
23866: }}
23866: # 22 "/usr/include/boost/mpl/list/list0.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/list/aux_/front.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_LIST_AUX_FRONT_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/list/aux_/front.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/front_fwd.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_FRONT_FWD_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/front_fwd.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template< typename Tag > struct front_impl;
23866: template< typename Sequence > struct front;
23866:
23866: }}
23866: # 18 "/usr/include/boost/mpl/list/aux_/front.hpp" 2 3 4
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<>
23866: struct front_impl< aux::list_tag >
23866: {
23866: template< typename List > struct apply
23866: {
23866: typedef typename List::item type;
23866: };
23866: };
23866:
23866: }}
23866: # 23 "/usr/include/boost/mpl/list/list0.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/list/aux_/clear.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_LIST_AUX_CLEAR_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/list/aux_/clear.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/clear_fwd.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_CLEAR_FWD_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/clear_fwd.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template< typename Tag > struct clear_impl;
23866: template< typename Sequence > struct clear;
23866:
23866: }}
23866: # 18 "/usr/include/boost/mpl/list/aux_/clear.hpp" 2 3 4
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<>
23866: struct clear_impl< aux::list_tag >
23866: {
23866: template< typename List > struct apply
23866: {
23866: typedef l_end type;
23866: };
23866: };
23866:
23866: }}
23866: # 24 "/usr/include/boost/mpl/list/list0.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/list/aux_/O1_size.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_LIST_AUX_O1_SIZE_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/list/aux_/O1_size.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/O1_size_fwd.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_O1_SIZE_FWD_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/O1_size_fwd.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template< typename Tag > struct O1_size_impl;
23866: template< typename Sequence > struct O1_size;
23866:
23866: }}
23866: # 18 "/usr/include/boost/mpl/list/aux_/O1_size.hpp" 2 3 4
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<>
23866: struct O1_size_impl< aux::list_tag >
23866: {
23866: template< typename List > struct apply
23866: : List::size
23866: {
23866: };
23866: };
23866:
23866: }}
23866: # 25 "/usr/include/boost/mpl/list/list0.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/list/aux_/size.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_LIST_AUX_SIZE_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/list/aux_/size.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/size_fwd.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_SIZE_FWD_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/size_fwd.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template< typename Tag > struct size_impl;
23866: template< typename Sequence > struct size;
23866:
23866: }}
23866: # 18 "/usr/include/boost/mpl/list/aux_/size.hpp" 2 3 4
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<>
23866: struct size_impl< aux::list_tag >
23866: {
23866: template< typename List > struct apply
23866: : List::size
23866: {
23866: };
23866: };
23866:
23866: }}
23866: # 26 "/usr/include/boost/mpl/list/list0.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/list/aux_/empty.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_LIST_AUX_EMPTY_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/list/aux_/empty.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/empty_fwd.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_EMPTY_FWD_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/empty_fwd.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template< typename Tag > struct empty_impl;
23866: template< typename Sequence > struct empty;
23866:
23866: }}
23866: # 18 "/usr/include/boost/mpl/list/aux_/empty.hpp" 2 3 4
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<>
23866: struct empty_impl< aux::list_tag >
23866: {
23866: template< typename List > struct apply
23866: : not_<typename List::size>
23866: {
23866: };
23866: };
23866:
23866: }}
23866: # 27 "/usr/include/boost/mpl/list/list0.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/list/aux_/begin_end.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_LIST_AUX_BEGIN_END_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/list/aux_/begin_end.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/list/aux_/iterator.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_LIST_AUX_ITERATOR_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/list/aux_/iterator.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/iterator_tags.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_ITERATOR_TAG_HPP_INCLUDED
23866: # 19 "/usr/include/boost/mpl/iterator_tags.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: struct forward_iterator_tag : int_<0> { typedef forward_iterator_tag type; };
23866: struct bidirectional_iterator_tag : int_<1> { typedef bidirectional_iterator_tag type; };
23866: struct random_access_iterator_tag : int_<2> { typedef random_access_iterator_tag type; };
23866:
23866: }}
23866: # 18 "/usr/include/boost/mpl/list/aux_/iterator.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/lambda_spec.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_LAMBDA_SPEC_HPP_INCLUDED
23866: # 26 "/usr/include/boost/mpl/aux_/lambda_spec.hpp" 3 4
23866: #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_<i>) > { typedef false_ is_le; typedef name< BOOST_MPL_PP_PARAMS(i, T) > result_; typedef result_ type; };
23866: # 23 "/usr/include/boost/mpl/list/aux_/iterator.hpp" 2 3 4
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866:
23866:
23866: template< typename Node >
23866: struct l_iter
23866: {
23866: typedef aux::l_iter_tag tag;
23866: typedef forward_iterator_tag category;
23866: };
23866:
23866: template< typename Node >
23866: struct deref< l_iter<Node> >
23866: {
23866: typedef typename Node::item type;
23866: };
23866:
23866: template< typename Node >
23866: struct next< l_iter<Node> >
23866: {
23866: typedef l_iter< typename Node::next > type;
23866: };
23866: # 62 "/usr/include/boost/mpl/list/aux_/iterator.hpp" 3 4
23866: template<> struct l_iter<l_end>
23866: {
23866: typedef aux::l_iter_tag tag;
23866: typedef forward_iterator_tag category;
23866:
23866:
23866:
23866:
23866: };
23866:
23866: template< typename T1 , typename Tag > struct lambda< l_iter< T1 > , Tag , int_<1> > { typedef false_ is_le; typedef l_iter< T1 > result_; typedef result_ type; };
23866:
23866: }}
23866: # 19 "/usr/include/boost/mpl/list/aux_/begin_end.hpp" 2 3 4
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<>
23866: struct begin_impl< aux::list_tag >
23866: {
23866: template< typename List > struct apply
23866: {
23866: typedef l_iter<typename List::type> type;
23866: };
23866: };
23866:
23866: template<>
23866: struct end_impl< aux::list_tag >
23866: {
23866: template< typename > struct apply
23866: {
23866: typedef l_iter<l_end> type;
23866: };
23866: };
23866:
23866: }}
23866: # 28 "/usr/include/boost/mpl/list/list0.hpp" 2 3 4
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template< typename Dummy = na > struct list0;
23866:
23866: template<> struct list0<na>
23866: : l_end
23866: {
23866: typedef l_end type;
23866: };
23866:
23866: }}
23866: # 19 "/usr/include/boost/mpl/list/list10.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_PREPROCESSED_HEADER list10.hpp
23866: # 1 "/usr/include/boost/mpl/list/aux_/include_preprocessed.hpp" 1 3 4
23866: # 21 "/usr/include/boost/mpl/list/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_HEADER aux_/preprocessed/plain/BOOST_MPL_PREPROCESSED_HEADER
23866: # 30 "/usr/include/boost/mpl/list/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/list/aux_/preprocessed/plain/list10.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/list/aux_/preprocessed/plain/list10.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename T0
23866: >
23866: struct list1
23866: : l_item<
23866: long_<1>
23866: , T0
23866: , l_end
23866: >
23866: {
23866: typedef list1 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1
23866: >
23866: struct list2
23866: : l_item<
23866: long_<2>
23866: , T0
23866: , list1<T1>
23866: >
23866: {
23866: typedef list2 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2
23866: >
23866: struct list3
23866: : l_item<
23866: long_<3>
23866: , T0
23866: , list2< T1,T2 >
23866: >
23866: {
23866: typedef list3 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3
23866: >
23866: struct list4
23866: : l_item<
23866: long_<4>
23866: , T0
23866: , list3< T1,T2,T3 >
23866: >
23866: {
23866: typedef list4 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: >
23866: struct list5
23866: : l_item<
23866: long_<5>
23866: , T0
23866: , list4< T1,T2,T3,T4 >
23866: >
23866: {
23866: typedef list5 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5
23866: >
23866: struct list6
23866: : l_item<
23866: long_<6>
23866: , T0
23866: , list5< T1,T2,T3,T4,T5 >
23866: >
23866: {
23866: typedef list6 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6
23866: >
23866: struct list7
23866: : l_item<
23866: long_<7>
23866: , T0
23866: , list6< T1,T2,T3,T4,T5,T6 >
23866: >
23866: {
23866: typedef list7 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7
23866: >
23866: struct list8
23866: : l_item<
23866: long_<8>
23866: , T0
23866: , list7< T1,T2,T3,T4,T5,T6,T7 >
23866: >
23866: {
23866: typedef list8 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8
23866: >
23866: struct list9
23866: : l_item<
23866: long_<9>
23866: , T0
23866: , list8< T1,T2,T3,T4,T5,T6,T7,T8 >
23866: >
23866: {
23866: typedef list9 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: >
23866: struct list10
23866: : l_item<
23866: long_<10>
23866: , T0
23866: , list9< T1,T2,T3,T4,T5,T6,T7,T8,T9 >
23866: >
23866: {
23866: typedef list10 type;
23866: };
23866:
23866: }}
23866: # 31 "/usr/include/boost/mpl/list/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 28 "/usr/include/boost/mpl/list/list10.hpp" 2 3 4
23866: # 19 "/usr/include/boost/mpl/list/list20.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_PREPROCESSED_HEADER list20.hpp
23866: # 1 "/usr/include/boost/mpl/list/aux_/include_preprocessed.hpp" 1 3 4
23866: # 21 "/usr/include/boost/mpl/list/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_HEADER aux_/preprocessed/plain/BOOST_MPL_PREPROCESSED_HEADER
23866: # 30 "/usr/include/boost/mpl/list/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/list/aux_/preprocessed/plain/list20.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/list/aux_/preprocessed/plain/list20.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10
23866: >
23866: struct list11
23866: : l_item<
23866: long_<11>
23866: , T0
23866: , list10< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
23866: >
23866: {
23866: typedef list11 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11
23866: >
23866: struct list12
23866: : l_item<
23866: long_<12>
23866: , T0
23866: , list11< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
23866: >
23866: {
23866: typedef list12 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12
23866: >
23866: struct list13
23866: : l_item<
23866: long_<13>
23866: , T0
23866: , list12< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
23866: >
23866: {
23866: typedef list13 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12, typename T13
23866: >
23866: struct list14
23866: : l_item<
23866: long_<14>
23866: , T0
23866: , list13< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
23866: >
23866: {
23866: typedef list14 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12, typename T13, typename T14
23866: >
23866: struct list15
23866: : l_item<
23866: long_<15>
23866: , T0
23866: , list14< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >
23866: >
23866: {
23866: typedef list15 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12, typename T13, typename T14
23866: , typename T15
23866: >
23866: struct list16
23866: : l_item<
23866: long_<16>
23866: , T0
23866: , list15< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >
23866: >
23866: {
23866: typedef list16 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12, typename T13, typename T14
23866: , typename T15, typename T16
23866: >
23866: struct list17
23866: : l_item<
23866: long_<17>
23866: , T0
23866: , list16< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >
23866: >
23866: {
23866: typedef list17 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12, typename T13, typename T14
23866: , typename T15, typename T16, typename T17
23866: >
23866: struct list18
23866: : l_item<
23866: long_<18>
23866: , T0
23866: , list17< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >
23866: >
23866: {
23866: typedef list18 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12, typename T13, typename T14
23866: , typename T15, typename T16, typename T17, typename T18
23866: >
23866: struct list19
23866: : l_item<
23866: long_<19>
23866: , T0
23866: , list18< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >
23866: >
23866: {
23866: typedef list19 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12, typename T13, typename T14
23866: , typename T15, typename T16, typename T17, typename T18, typename T19
23866: >
23866: struct list20
23866: : l_item<
23866: long_<20>
23866: , T0
23866: , list19< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >
23866: >
23866: {
23866: typedef list20 type;
23866: };
23866:
23866: }}
23866: # 31 "/usr/include/boost/mpl/list/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 28 "/usr/include/boost/mpl/list/list20.hpp" 2 3 4
23866: # 37 "/usr/include/boost/mpl/list.hpp" 2 3 4
23866: #undef AUX778076_LIST_HEADER
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_PREPROCESSED_HEADER list.hpp
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/list.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/list.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
23866: , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
23866: , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
23866: , typename T12 = na, typename T13 = na, typename T14 = na
23866: , typename T15 = na, typename T16 = na, typename T17 = na
23866: , typename T18 = na, typename T19 = na
23866: >
23866: struct list;
23866:
23866: template<
23866:
23866: >
23866: struct list<
23866: na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
23866: , na, na, na
23866: >
23866: : list0< >
23866: {
23866: typedef list0< >::type type;
23866: };
23866:
23866: template<
23866: typename T0
23866: >
23866: struct list<
23866: T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
23866: , na, na, na
23866: >
23866: : list1<T0>
23866: {
23866: typedef typename list1<T0>::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1
23866: >
23866: struct list<
23866: T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
23866: , na, na, na
23866: >
23866: : list2< T0,T1 >
23866: {
23866: typedef typename list2< T0,T1 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2
23866: >
23866: struct list<
23866: T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
23866: , na, na, na
23866: >
23866: : list3< T0,T1,T2 >
23866: {
23866: typedef typename list3< T0,T1,T2 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3
23866: >
23866: struct list<
23866: T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
23866: , na, na, na
23866: >
23866: : list4< T0,T1,T2,T3 >
23866: {
23866: typedef typename list4< T0,T1,T2,T3 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: >
23866: struct list<
23866: T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
23866: , na, na, na
23866: >
23866: : list5< T0,T1,T2,T3,T4 >
23866: {
23866: typedef typename list5< T0,T1,T2,T3,T4 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5
23866: >
23866: struct list<
23866: T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
23866: , na, na, na
23866: >
23866: : list6< T0,T1,T2,T3,T4,T5 >
23866: {
23866: typedef typename list6< T0,T1,T2,T3,T4,T5 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6
23866: >
23866: struct list<
23866: T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
23866: , na, na, na
23866: >
23866: : list7< T0,T1,T2,T3,T4,T5,T6 >
23866: {
23866: typedef typename list7< T0,T1,T2,T3,T4,T5,T6 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7
23866: >
23866: struct list<
23866: T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
23866: , na, na, na
23866: >
23866: : list8< T0,T1,T2,T3,T4,T5,T6,T7 >
23866: {
23866: typedef typename list8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8
23866: >
23866: struct list<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
23866: , na, na, na
23866: >
23866: : list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
23866: {
23866: typedef typename list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: >
23866: struct list<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
23866: , na, na, na
23866: >
23866: : list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
23866: {
23866: typedef typename list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10
23866: >
23866: struct list<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
23866: , na, na, na
23866: >
23866: : list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
23866: {
23866: typedef typename list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11
23866: >
23866: struct list<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
23866: , na, na, na, na
23866: >
23866: : list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
23866: {
23866: typedef typename list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12
23866: >
23866: struct list<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
23866: , na, na, na, na
23866: >
23866: : list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
23866: {
23866: typedef typename list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12, typename T13
23866: >
23866: struct list<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
23866: , na, na, na, na
23866: >
23866: : list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
23866: {
23866: typedef typename list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12, typename T13, typename T14
23866: >
23866: struct list<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
23866: , na, na, na, na
23866: >
23866: : list15<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
23866: >
23866: {
23866: typedef typename list15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12, typename T13, typename T14
23866: , typename T15
23866: >
23866: struct list<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
23866: , T15, na, na, na, na
23866: >
23866: : list16<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
23866: , T15
23866: >
23866: {
23866: typedef typename list16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12, typename T13, typename T14
23866: , typename T15, typename T16
23866: >
23866: struct list<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
23866: , T15, T16, na, na, na
23866: >
23866: : list17<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
23866: , T15, T16
23866: >
23866: {
23866: typedef typename list17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12, typename T13, typename T14
23866: , typename T15, typename T16, typename T17
23866: >
23866: struct list<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
23866: , T15, T16, T17, na, na
23866: >
23866: : list18<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
23866: , T15, T16, T17
23866: >
23866: {
23866: typedef typename list18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12, typename T13, typename T14
23866: , typename T15, typename T16, typename T17, typename T18
23866: >
23866: struct list<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
23866: , T15, T16, T17, T18, na
23866: >
23866: : list19<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
23866: , T15, T16, T17, T18
23866: >
23866: {
23866: typedef typename list19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
23866: };
23866:
23866:
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12, typename T13, typename T14
23866: , typename T15, typename T16, typename T17, typename T18, typename T19
23866: >
23866: struct list
23866: : list20<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
23866: , T15, T16, T17, T18, T19
23866: >
23866: {
23866: typedef typename list20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
23866: };
23866:
23866: }}
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 47 "/usr/include/boost/mpl/list.hpp" 2 3 4
23866: # 10 "/usr/include/boost/math/policies/policy.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/contains.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_CONTAINS_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/contains.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/contains_fwd.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_CONTAINS_FWD_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/contains_fwd.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template< typename Tag > struct contains_impl;
23866: template< typename Sequence, typename T > struct contains;
23866:
23866: }}
23866: # 19 "/usr/include/boost/mpl/contains.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/contains_impl.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CONTAINS_IMPL_HPP_INCLUDED
23866: # 20 "/usr/include/boost/mpl/aux_/contains_impl.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/find.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_FIND_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/find.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/same_as.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_SAME_AS_HPP_INCLUDED
23866: # 23 "/usr/include/boost/mpl/same_as.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template< typename T1 >
23866: struct same_as
23866: {
23866: template< typename T2 > struct apply
23866:
23866: : is_same<T1,T2>
23866: {
23866:
23866:
23866:
23866:
23866: };
23866: };
23866:
23866: template< typename T1 >
23866: struct not_same_as
23866: {
23866: template< typename T2 > struct apply
23866:
23866: : not_< is_same<T1,T2> >
23866: {
23866:
23866:
23866:
23866:
23866: };
23866: };
23866:
23866: }}
23866: # 19 "/usr/include/boost/mpl/find.hpp" 2 3 4
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename Sequence = na
23866: , typename T = na
23866: >
23866: struct find
23866: : find_if< Sequence,same_as<T> >
23866: {
23866:
23866: };
23866:
23866: template<> struct find< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : find< T1 , T2 > { }; }; template< typename Tag > struct lambda< find< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef find< na , na > result_; typedef find< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< find< T1 , T2 > > : int_<2> { }; template<> struct template_arity< find< na , na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 21 "/usr/include/boost/mpl/aux_/contains_impl.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template< typename Tag >
23866: struct contains_impl
23866: {
23866: template< typename Sequence, typename T > struct apply
23866:
23866: : not_< is_same<
23866: typename find<Sequence,T>::type
23866: , typename end<Sequence>::type
23866: > >
23866: {
23866: # 54 "/usr/include/boost/mpl/aux_/contains_impl.hpp" 3 4
23866: };
23866: };
23866:
23866: template<> struct contains_impl<non_sequence_tag> {};
23866:
23866: }}
23866: # 21 "/usr/include/boost/mpl/contains.hpp" 2 3 4
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename Sequence = na
23866: , typename T = na
23866: >
23866: struct contains
23866: : contains_impl< typename sequence_tag<Sequence>::type >
23866: ::template apply< Sequence,T >
23866: {
23866:
23866: };
23866:
23866: template<> struct contains< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : contains< T1 , T2 > { }; }; template< typename Tag > struct lambda< contains< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef contains< na , na > result_; typedef contains< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< contains< T1 , T2 > > : int_<2> { }; template<> struct template_arity< contains< na , na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 11 "/usr/include/boost/math/policies/policy.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/remove_if.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_REMOVE_IF_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/remove_if.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/fold.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_FOLD_HPP_INCLUDED
23866: # 19 "/usr/include/boost/mpl/fold.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/O1_size.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_O1_SIZE_HPP_INCLUDED
23866: # 19 "/usr/include/boost/mpl/O1_size.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/O1_size_impl.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_O1_SIZE_IMPL_HPP_INCLUDED
23866: # 20 "/usr/include/boost/mpl/aux_/O1_size_impl.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/has_size.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_HAS_SIZE_HPP_INCLUDED
23866: # 19 "/usr/include/boost/mpl/aux_/has_size.hpp" 3 4
23866: namespace boost { namespace mpl { namespace aux {
23866: template< typename T, typename fallback_ = boost::mpl::bool_<false> > struct has_size { struct gcc_3_2_wknd { template< typename U > static boost::mpl::aux::yes_tag test( boost::mpl::aux::type_wrapper<U> const volatile* , boost::mpl::aux::type_wrapper<typename U::size>* = 0 ); static boost::mpl::aux::no_tag test(...); }; typedef boost::mpl::aux::type_wrapper<T> t_; static const bool value = sizeof(gcc_3_2_wknd::test(static_cast<t_*>(0))) == sizeof(boost::mpl::aux::yes_tag); typedef boost::mpl::bool_<value> type; };
23866: }}}
23866: # 21 "/usr/include/boost/mpl/aux_/O1_size_impl.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866: # 35 "/usr/include/boost/mpl/aux_/O1_size_impl.hpp" 3 4
23866: namespace aux {
23866: template< typename Sequence > struct O1_size_impl
23866: : Sequence::size
23866: {
23866: };
23866: }
23866:
23866: template< typename Tag >
23866: struct O1_size_impl
23866: {
23866: template< typename Sequence > struct apply
23866:
23866: : if_<
23866: aux::has_size<Sequence>
23866: , aux::O1_size_impl<Sequence>
23866: , long_<-1>
23866: >::type
23866: {
23866: # 69 "/usr/include/boost/mpl/aux_/O1_size_impl.hpp" 3 4
23866: };
23866: };
23866: # 85 "/usr/include/boost/mpl/aux_/O1_size_impl.hpp" 3 4
23866: }}
23866: # 20 "/usr/include/boost/mpl/O1_size.hpp" 2 3 4
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866:
23866: template<
23866: typename Sequence = na
23866: >
23866: struct O1_size
23866: : O1_size_impl< typename sequence_tag<Sequence>::type >
23866: ::template apply< Sequence >
23866: {
23866:
23866: };
23866:
23866: template<> struct O1_size< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : O1_size< T1 > { }; }; template< typename Tag > struct lambda< O1_size< na > , Tag , int_<-1> > { typedef false_ is_le; typedef O1_size< na > result_; typedef O1_size< na > type; }; namespace aux { template< typename T1 > struct template_arity< O1_size< T1 > > : int_<1> { }; template<> struct template_arity< O1_size< na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 20 "/usr/include/boost/mpl/fold.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/fold_impl.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_FOLD_IMPL_HPP_INCLUDED
23866: # 19 "/usr/include/boost/mpl/aux_/fold_impl.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/apply.hpp" 1 3 4
23866: # 20 "/usr/include/boost/mpl/aux_/fold_impl.hpp" 2 3 4
23866: # 33 "/usr/include/boost/mpl/aux_/fold_impl.hpp" 3 4
23866: #define BOOST_MPL_PREPROCESSED_HEADER fold_impl.hpp
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp" 3 4
23866: namespace boost { namespace mpl { namespace aux {
23866:
23866:
23866:
23866: template<
23866: int N
23866: , typename First
23866: , typename Last
23866: , typename State
23866: , typename ForwardOp
23866: >
23866: struct fold_impl;
23866:
23866: template<
23866: typename First
23866: , typename Last
23866: , typename State
23866: , typename ForwardOp
23866: >
23866: struct fold_impl< 0,First,Last,State,ForwardOp >
23866: {
23866: typedef First iter0;
23866: typedef State state0;
23866: typedef state0 state;
23866: typedef iter0 iterator;
23866: };
23866:
23866: template<
23866: typename First
23866: , typename Last
23866: , typename State
23866: , typename ForwardOp
23866: >
23866: struct fold_impl< 1,First,Last,State,ForwardOp >
23866: {
23866: typedef First iter0;
23866: typedef State state0;
23866: typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
23866: typedef typename mpl::next<iter0>::type iter1;
23866:
23866:
23866: typedef state1 state;
23866: typedef iter1 iterator;
23866: };
23866:
23866: template<
23866: typename First
23866: , typename Last
23866: , typename State
23866: , typename ForwardOp
23866: >
23866: struct fold_impl< 2,First,Last,State,ForwardOp >
23866: {
23866: typedef First iter0;
23866: typedef State state0;
23866: typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
23866: typedef typename mpl::next<iter0>::type iter1;
23866: typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
23866: typedef typename mpl::next<iter1>::type iter2;
23866:
23866:
23866: typedef state2 state;
23866: typedef iter2 iterator;
23866: };
23866:
23866: template<
23866: typename First
23866: , typename Last
23866: , typename State
23866: , typename ForwardOp
23866: >
23866: struct fold_impl< 3,First,Last,State,ForwardOp >
23866: {
23866: typedef First iter0;
23866: typedef State state0;
23866: typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
23866: typedef typename mpl::next<iter0>::type iter1;
23866: typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
23866: typedef typename mpl::next<iter1>::type iter2;
23866: typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
23866: typedef typename mpl::next<iter2>::type iter3;
23866:
23866:
23866: typedef state3 state;
23866: typedef iter3 iterator;
23866: };
23866:
23866: template<
23866: typename First
23866: , typename Last
23866: , typename State
23866: , typename ForwardOp
23866: >
23866: struct fold_impl< 4,First,Last,State,ForwardOp >
23866: {
23866: typedef First iter0;
23866: typedef State state0;
23866: typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
23866: typedef typename mpl::next<iter0>::type iter1;
23866: typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
23866: typedef typename mpl::next<iter1>::type iter2;
23866: typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
23866: typedef typename mpl::next<iter2>::type iter3;
23866: typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
23866: typedef typename mpl::next<iter3>::type iter4;
23866:
23866:
23866: typedef state4 state;
23866: typedef iter4 iterator;
23866: };
23866:
23866: template<
23866: int N
23866: , typename First
23866: , typename Last
23866: , typename State
23866: , typename ForwardOp
23866: >
23866: struct fold_impl
23866: {
23866: typedef fold_impl<
23866: 4
23866: , First
23866: , Last
23866: , State
23866: , ForwardOp
23866: > chunk_;
23866:
23866: typedef fold_impl<
23866: ( (N - 4) < 0 ? 0 : N - 4 )
23866: , typename chunk_::iterator
23866: , Last
23866: , typename chunk_::state
23866: , ForwardOp
23866: > res_;
23866:
23866: typedef typename res_::state state;
23866: typedef typename res_::iterator iterator;
23866: };
23866:
23866: template<
23866: typename First
23866: , typename Last
23866: , typename State
23866: , typename ForwardOp
23866: >
23866: struct fold_impl< -1,First,Last,State,ForwardOp >
23866: : fold_impl<
23866: -1
23866: , typename mpl::next<First>::type
23866: , Last
23866: , typename apply2<ForwardOp,State, typename deref<First>::type>::type
23866: , ForwardOp
23866: >
23866: {
23866: };
23866:
23866: template<
23866: typename Last
23866: , typename State
23866: , typename ForwardOp
23866: >
23866: struct fold_impl< -1,Last,Last,State,ForwardOp >
23866: {
23866: typedef State state;
23866: typedef Last iterator;
23866: };
23866:
23866: }}}
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 35 "/usr/include/boost/mpl/aux_/fold_impl.hpp" 2 3 4
23866: # 21 "/usr/include/boost/mpl/fold.hpp" 2 3 4
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename Sequence = na
23866: , typename State = na
23866: , typename ForwardOp = na
23866: >
23866: struct fold
23866: {
23866: typedef typename aux::fold_impl<
23866: ::boost::mpl::O1_size<Sequence>::value
23866: , typename begin<Sequence>::type
23866: , typename end<Sequence>::type
23866: , State
23866: , ForwardOp
23866: >::state type;
23866:
23866:
23866: };
23866:
23866: template<> struct fold< na , na , na > { template< typename T1 , typename T2 , typename T3 , typename T4 =na , typename T5 =na > struct apply : fold< T1 , T2 , T3 > { }; }; template< typename Tag > struct lambda< fold< na , na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef fold< na , na , na > result_; typedef fold< na , na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 > struct template_arity< fold< T1 , T2 , T3 > > : int_<3> { }; template<> struct template_arity< fold< na , na , na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 19 "/usr/include/boost/mpl/remove_if.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/reverse_fold.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_REVERSE_FOLD_HPP_INCLUDED
23866: # 20 "/usr/include/boost/mpl/reverse_fold.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/arg.hpp" 1 3 4
23866: # 21 "/usr/include/boost/mpl/reverse_fold.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/reverse_fold_impl.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_REVERSE_FOLD_IMPL_HPP_INCLUDED
23866: # 20 "/usr/include/boost/mpl/aux_/reverse_fold_impl.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/apply.hpp" 1 3 4
23866: # 21 "/usr/include/boost/mpl/aux_/reverse_fold_impl.hpp" 2 3 4
23866: # 34 "/usr/include/boost/mpl/aux_/reverse_fold_impl.hpp" 3 4
23866: #define BOOST_MPL_PREPROCESSED_HEADER reverse_fold_impl.hpp
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp" 3 4
23866: namespace boost { namespace mpl { namespace aux {
23866:
23866:
23866:
23866: template<
23866: long N
23866: , typename First
23866: , typename Last
23866: , typename State
23866: , typename BackwardOp
23866: , typename ForwardOp
23866: >
23866: struct reverse_fold_impl;
23866:
23866: template<
23866: typename First
23866: , typename Last
23866: , typename State
23866: , typename BackwardOp
23866: , typename ForwardOp
23866: >
23866: struct reverse_fold_impl< 0,First,Last,State,BackwardOp,ForwardOp >
23866: {
23866: typedef First iter0;
23866: typedef State fwd_state0;
23866: typedef fwd_state0 bkwd_state0;
23866: typedef bkwd_state0 state;
23866: typedef iter0 iterator;
23866: };
23866:
23866: template<
23866: typename First
23866: , typename Last
23866: , typename State
23866: , typename BackwardOp
23866: , typename ForwardOp
23866: >
23866: struct reverse_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
23866: {
23866: typedef First iter0;
23866: typedef State fwd_state0;
23866: typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
23866: typedef typename mpl::next<iter0>::type iter1;
23866:
23866:
23866: typedef fwd_state1 bkwd_state1;
23866: typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
23866: typedef bkwd_state0 state;
23866: typedef iter1 iterator;
23866: };
23866:
23866: template<
23866: typename First
23866: , typename Last
23866: , typename State
23866: , typename BackwardOp
23866: , typename ForwardOp
23866: >
23866: struct reverse_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
23866: {
23866: typedef First iter0;
23866: typedef State fwd_state0;
23866: typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
23866: typedef typename mpl::next<iter0>::type iter1;
23866: typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
23866: typedef typename mpl::next<iter1>::type iter2;
23866:
23866:
23866: typedef fwd_state2 bkwd_state2;
23866: typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
23866: typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
23866:
23866:
23866: typedef bkwd_state0 state;
23866: typedef iter2 iterator;
23866: };
23866:
23866: template<
23866: typename First
23866: , typename Last
23866: , typename State
23866: , typename BackwardOp
23866: , typename ForwardOp
23866: >
23866: struct reverse_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
23866: {
23866: typedef First iter0;
23866: typedef State fwd_state0;
23866: typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
23866: typedef typename mpl::next<iter0>::type iter1;
23866: typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
23866: typedef typename mpl::next<iter1>::type iter2;
23866: typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
23866: typedef typename mpl::next<iter2>::type iter3;
23866:
23866:
23866: typedef fwd_state3 bkwd_state3;
23866: typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
23866: typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
23866: typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
23866:
23866:
23866: typedef bkwd_state0 state;
23866: typedef iter3 iterator;
23866: };
23866:
23866: template<
23866: typename First
23866: , typename Last
23866: , typename State
23866: , typename BackwardOp
23866: , typename ForwardOp
23866: >
23866: struct reverse_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
23866: {
23866: typedef First iter0;
23866: typedef State fwd_state0;
23866: typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
23866: typedef typename mpl::next<iter0>::type iter1;
23866: typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
23866: typedef typename mpl::next<iter1>::type iter2;
23866: typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
23866: typedef typename mpl::next<iter2>::type iter3;
23866: typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
23866: typedef typename mpl::next<iter3>::type iter4;
23866:
23866:
23866: typedef fwd_state4 bkwd_state4;
23866: typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
23866: typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
23866: typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
23866: typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
23866:
23866:
23866: typedef bkwd_state0 state;
23866: typedef iter4 iterator;
23866: };
23866:
23866: template<
23866: long N
23866: , typename First
23866: , typename Last
23866: , typename State
23866: , typename BackwardOp
23866: , typename ForwardOp
23866: >
23866: struct reverse_fold_impl
23866: {
23866: typedef First iter0;
23866: typedef State fwd_state0;
23866: typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
23866: typedef typename mpl::next<iter0>::type iter1;
23866: typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
23866: typedef typename mpl::next<iter1>::type iter2;
23866: typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
23866: typedef typename mpl::next<iter2>::type iter3;
23866: typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
23866: typedef typename mpl::next<iter3>::type iter4;
23866:
23866:
23866: typedef reverse_fold_impl<
23866: ( (N - 4) < 0 ? 0 : N - 4 )
23866: , iter4
23866: , Last
23866: , fwd_state4
23866: , BackwardOp
23866: , ForwardOp
23866: > nested_chunk;
23866:
23866: typedef typename nested_chunk::state bkwd_state4;
23866: typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
23866: typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
23866: typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
23866: typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
23866:
23866:
23866: typedef bkwd_state0 state;
23866: typedef typename nested_chunk::iterator iterator;
23866: };
23866:
23866: template<
23866: typename First
23866: , typename Last
23866: , typename State
23866: , typename BackwardOp
23866: , typename ForwardOp
23866: >
23866: struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
23866: {
23866: typedef reverse_fold_impl<
23866: -1
23866: , typename mpl::next<First>::type
23866: , Last
23866: , typename apply2<ForwardOp,State, typename deref<First>::type>::type
23866: , BackwardOp
23866: , ForwardOp
23866: > nested_step;
23866:
23866: typedef typename apply2<
23866: BackwardOp
23866: , typename nested_step::state
23866: , typename deref<First>::type
23866: >::type state;
23866:
23866: typedef typename nested_step::iterator iterator;
23866: };
23866:
23866: template<
23866: typename Last
23866: , typename State
23866: , typename BackwardOp
23866: , typename ForwardOp
23866: >
23866: struct reverse_fold_impl< -1,Last,Last,State,BackwardOp,ForwardOp >
23866: {
23866: typedef State state;
23866: typedef Last iterator;
23866: };
23866:
23866: }}}
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 36 "/usr/include/boost/mpl/aux_/reverse_fold_impl.hpp" 2 3 4
23866: # 22 "/usr/include/boost/mpl/reverse_fold.hpp" 2 3 4
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename Sequence = na
23866: , typename State = na
23866: , typename BackwardOp = na
23866: , typename ForwardOp = arg<1>
23866: >
23866: struct reverse_fold
23866: {
23866: typedef typename aux::reverse_fold_impl<
23866: ::boost::mpl::O1_size<Sequence>::value
23866: , typename begin<Sequence>::type
23866: , typename end<Sequence>::type
23866: , State
23866: , BackwardOp
23866: , ForwardOp
23866: >::state type;
23866:
23866:
23866: };
23866:
23866: template<> struct reverse_fold< na , na , na > { template< typename T1 , typename T2 , typename T3 , typename T4 =na , typename T5 =na > struct apply : reverse_fold< T1 , T2 , T3 > { }; }; template< typename Tag > struct lambda< reverse_fold< na , na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef reverse_fold< na , na , na > result_; typedef reverse_fold< na , na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 > struct template_arity< reverse_fold< T1 , T2 , T3 > > : int_<3> { }; template<> struct template_arity< reverse_fold< na , na , na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 20 "/usr/include/boost/mpl/remove_if.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/apply.hpp" 1 3 4
23866: # 25 "/usr/include/boost/mpl/remove_if.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/inserter_algorithm.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_INSERTER_ALGORITHM_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/aux_/inserter_algorithm.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/back_inserter.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_BACK_INSERTER_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/back_inserter.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/push_back.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_PUSH_BACK_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/push_back.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/push_back_impl.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_PUSH_BACK_IMPL_HPP_INCLUDED
23866: # 26 "/usr/include/boost/mpl/aux_/push_back_impl.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: struct has_push_back_arg {};
23866:
23866:
23866:
23866: template< typename Tag >
23866: struct push_back_impl
23866: {
23866: template< typename Sequence, typename T > struct apply
23866: {
23866:
23866:
23866:
23866: struct REQUESTED_PUSH_BACK_SPECIALIZATION_FOR_SEQUENCE_DOES_NOT_EXIST; typedef struct REQUESTED_PUSH_BACK_SPECIALIZATION_FOR_SEQUENCE_DOES_NOT_EXIST40 : boost::mpl::assert_ { static boost::mpl::failed ************ (REQUESTED_PUSH_BACK_SPECIALIZATION_FOR_SEQUENCE_DOES_NOT_EXIST::************ assert_arg()) ( Sequence ) { return 0; } } mpl_assert_arg40; enum { mpl_assertion_in_line_40 = sizeof( boost::mpl::assertion_failed<(( boost::is_same< T, has_push_back_arg >::value ))>( mpl_assert_arg40::assert_arg() ) ) }
23866:
23866:
23866:
23866: ;
23866: };
23866: };
23866:
23866: template< typename Tag >
23866: struct has_push_back_impl
23866: {
23866: template< typename Seq > struct apply
23866:
23866: : aux::has_type< push_back< Seq, has_push_back_arg > >
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: };
23866: };
23866:
23866: template<> struct push_back_impl<non_sequence_tag> {};
23866: template<> struct has_push_back_impl<non_sequence_tag> {};
23866:
23866: }}
23866: # 19 "/usr/include/boost/mpl/push_back.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename Sequence = na
23866: , typename T = na
23866: >
23866: struct push_back
23866: : push_back_impl< typename sequence_tag<Sequence>::type >
23866: ::template apply< Sequence,T >
23866: {
23866:
23866: };
23866:
23866:
23866: template<
23866: typename Sequence = na
23866: >
23866: struct has_push_back
23866: : has_push_back_impl< typename sequence_tag<Sequence>::type >
23866: ::template apply< Sequence >
23866: {
23866:
23866: };
23866:
23866:
23866: template<> struct push_back< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : push_back< T1 , T2 > { }; }; template< typename Tag > struct lambda< push_back< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef push_back< na , na > result_; typedef push_back< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< push_back< T1 , T2 > > : int_<2> { }; template<> struct template_arity< push_back< na , na > > : int_<-1> { }; }
23866: template<> struct has_push_back< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : has_push_back< T1 > { }; }; template< typename Tag > struct lambda< has_push_back< na > , Tag , int_<-1> > { typedef false_ is_le; typedef has_push_back< na > result_; typedef has_push_back< na > type; }; namespace aux { template< typename T1 > struct template_arity< has_push_back< T1 > > : int_<1> { }; template<> struct template_arity< has_push_back< na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 19 "/usr/include/boost/mpl/back_inserter.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/inserter.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_INSERTER_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/inserter.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename Sequence
23866: , typename Operation
23866: >
23866: struct inserter
23866: {
23866: typedef Sequence state;
23866: typedef Operation operation;
23866: };
23866:
23866: }}
23866: # 20 "/usr/include/boost/mpl/back_inserter.hpp" 2 3 4
23866:
23866: namespace boost {
23866: namespace mpl {
23866:
23866: template<
23866: typename Sequence
23866: >
23866: struct back_inserter
23866: : inserter< Sequence,push_back<> >
23866: {
23866: };
23866:
23866: }}
23866: # 19 "/usr/include/boost/mpl/aux_/inserter_algorithm.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/front_inserter.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_FRONT_INSERTER_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/front_inserter.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/push_front.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_PUSH_FRONT_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/push_front.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/push_front_impl.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_PUSH_FRONT_IMPL_HPP_INCLUDED
23866: # 26 "/usr/include/boost/mpl/aux_/push_front_impl.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: struct has_push_front_arg {};
23866:
23866:
23866:
23866:
23866: template< typename Tag >
23866: struct push_front_impl
23866: {
23866: template< typename Sequence, typename T > struct apply
23866: {
23866:
23866:
23866:
23866: struct REQUESTED_PUSH_FRONT_SPECIALIZATION_FOR_SEQUENCE_DOES_NOT_EXIST; typedef struct REQUESTED_PUSH_FRONT_SPECIALIZATION_FOR_SEQUENCE_DOES_NOT_EXIST41 : boost::mpl::assert_ { static boost::mpl::failed ************ (REQUESTED_PUSH_FRONT_SPECIALIZATION_FOR_SEQUENCE_DOES_NOT_EXIST::************ assert_arg()) ( Sequence ) { return 0; } } mpl_assert_arg41; enum { mpl_assertion_in_line_41 = sizeof( boost::mpl::assertion_failed<(( boost::is_same< T, has_push_front_arg >::value ))>( mpl_assert_arg41::assert_arg() ) ) }
23866:
23866:
23866:
23866: ;
23866: };
23866: };
23866:
23866: template< typename Tag >
23866: struct has_push_front_impl
23866: {
23866: template< typename Seq > struct apply
23866:
23866: : aux::has_type< push_front< Seq, has_push_front_arg > >
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: };
23866: };
23866:
23866: template<> struct push_front_impl<non_sequence_tag> {};
23866: template<> struct has_push_front_impl<non_sequence_tag> {};
23866:
23866: }}
23866: # 19 "/usr/include/boost/mpl/push_front.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename Sequence = na
23866: , typename T = na
23866: >
23866: struct push_front
23866: : push_front_impl< typename sequence_tag<Sequence>::type >
23866: ::template apply< Sequence,T >
23866: {
23866:
23866: };
23866:
23866:
23866: template<
23866: typename Sequence = na
23866: >
23866: struct has_push_front
23866: : has_push_front_impl< typename sequence_tag<Sequence>::type >
23866: ::template apply< Sequence >
23866: {
23866:
23866: };
23866:
23866: template<> struct push_front< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : push_front< T1 , T2 > { }; }; template< typename Tag > struct lambda< push_front< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef push_front< na , na > result_; typedef push_front< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< push_front< T1 , T2 > > : int_<2> { }; template<> struct template_arity< push_front< na , na > > : int_<-1> { }; }
23866: template<> struct has_push_front< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : has_push_front< T1 > { }; }; template< typename Tag > struct lambda< has_push_front< na > , Tag , int_<-1> > { typedef false_ is_le; typedef has_push_front< na > result_; typedef has_push_front< na > type; }; namespace aux { template< typename T1 > struct template_arity< has_push_front< T1 > > : int_<1> { }; template<> struct template_arity< has_push_front< na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 19 "/usr/include/boost/mpl/front_inserter.hpp" 2 3 4
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename Sequence
23866: >
23866: struct front_inserter
23866: : inserter< Sequence,push_front<> >
23866: {
23866: };
23866:
23866: }}
23866: # 20 "/usr/include/boost/mpl/aux_/inserter_algorithm.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/clear.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_CLEAR_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/clear.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/clear_impl.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CLEAR_IMPL_HPP_INCLUDED
23866: # 21 "/usr/include/boost/mpl/aux_/clear_impl.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866:
23866:
23866: template< typename Tag >
23866: struct clear_impl
23866: {
23866: template< typename Sequence > struct apply;
23866: };
23866:
23866: template<> struct clear_impl<non_sequence_tag> {};
23866:
23866: }}
23866: # 19 "/usr/include/boost/mpl/clear.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename Sequence = na
23866: >
23866: struct clear
23866: : clear_impl< typename sequence_tag<Sequence>::type >
23866: ::template apply< Sequence >
23866: {
23866:
23866: };
23866:
23866: template<> struct clear< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : clear< T1 > { }; }; template< typename Tag > struct lambda< clear< na > , Tag , int_<-1> > { typedef false_ is_le; typedef clear< na > result_; typedef clear< na > type; }; namespace aux { template< typename T1 > struct template_arity< clear< T1 > > : int_<1> { }; template<> struct template_arity< clear< na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 25 "/usr/include/boost/mpl/aux_/inserter_algorithm.hpp" 2 3 4
23866: # 38 "/usr/include/boost/mpl/aux_/inserter_algorithm.hpp" 3 4
23866: #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<BOOST_MPL_PP_PARAMS(arity, P)> { }; 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<P1>::type> , aux::name ##_impl< BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) , back_inserter< typename clear<P1>::type > > , aux::reverse_ ##name ##_impl< BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) , front_inserter< typename clear<P1>::type > > >::type { }; template< BOOST_MPL_PP_DEFAULT_PARAMS(arity, typename P, na) > struct reverse_ ##name : aux::reverse_ ##name ##_impl<BOOST_MPL_PP_PARAMS(arity, P)> { }; 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<P1> , aux::reverse_ ##name ##_impl< BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) , back_inserter< typename clear<P1>::type > > , aux::name ##_impl< BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) , front_inserter< typename clear<P1>::type > > >::type { }; BOOST_MPL_AUX_NA_SPEC(arity, name) BOOST_MPL_AUX_NA_SPEC(arity, reverse_ ##name)
23866: # 26 "/usr/include/boost/mpl/remove_if.hpp" 2 3 4
23866:
23866: namespace boost { namespace mpl {
23866:
23866: namespace aux {
23866:
23866: template< typename Pred, typename InsertOp > struct remove_if_helper
23866: {
23866: template< typename Sequence, typename U > struct apply
23866: {
23866: typedef typename eval_if<
23866: typename apply1<Pred,U>::type
23866: , identity<Sequence>
23866: , apply2<InsertOp,Sequence,U>
23866: >::type type;
23866: };
23866: };
23866:
23866: template<
23866: typename Sequence
23866: , typename Predicate
23866: , typename Inserter
23866: >
23866: struct remove_if_impl
23866: : fold<
23866: Sequence
23866: , typename Inserter::state
23866: , protect< aux::remove_if_helper<
23866: typename lambda<Predicate>::type
23866: , typename Inserter::operation
23866: > >
23866: >
23866: {
23866: };
23866:
23866: template<
23866: typename Sequence
23866: , typename Predicate
23866: , typename Inserter
23866: >
23866: struct reverse_remove_if_impl
23866: : reverse_fold<
23866: Sequence
23866: , typename Inserter::state
23866: , protect< aux::remove_if_helper<
23866: typename lambda<Predicate>::type
23866: , typename Inserter::operation
23866: > >
23866: >
23866: {
23866: };
23866:
23866: }
23866:
23866: template< typename P1 = na , typename P2 = na , typename P3 = na > struct remove_if : aux::remove_if_impl< P1 , P2 , P3> { }; template< typename P1 , typename P2 > struct remove_if< P1 , P2,na > : if_< has_push_back< typename clear<P1>::type> , aux::remove_if_impl< P1 , P2 , back_inserter< typename clear<P1>::type > > , aux::reverse_remove_if_impl< P1 , P2 , front_inserter< typename clear<P1>::type > > >::type { }; template< typename P1 = na , typename P2 = na , typename P3 = na > struct reverse_remove_if : aux::reverse_remove_if_impl< P1 , P2 , P3> { }; template< typename P1 , typename P2 > struct reverse_remove_if< P1 , P2,na > : if_< has_push_back<P1> , aux::reverse_remove_if_impl< P1 , P2 , back_inserter< typename clear<P1>::type > > , aux::remove_if_impl< P1 , P2 , front_inserter< typename clear<P1>::type > > >::type { }; template<> struct remove_if< na , na , na > { template< typename T1 , typename T2 , typename T3 , typename T4 =na , typename T5 =na > struct apply : remove_if< T1 , T2 , T3 > { }; }; template< typename Tag > struct lambda< remove_if< na , na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef remove_if< na , na , na > result_; typedef remove_if< na , na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 > struct template_arity< remove_if< T1 , T2 , T3 > > : int_<3> { }; template<> struct template_arity< remove_if< na , na , na > > : int_<-1> { }; } template<> struct reverse_remove_if< na , na , na > { template< typename T1 , typename T2 , typename T3 , typename T4 =na , typename T5 =na > struct apply : reverse_remove_if< T1 , T2 , T3 > { }; }; template< typename Tag > struct lambda< reverse_remove_if< na , na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef reverse_remove_if< na , na , na > result_; typedef reverse_remove_if< na , na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 > struct template_arity< reverse_remove_if< T1 , T2 , T3 > > : int_<3> { }; template<> struct template_arity< reverse_remove_if< na , na , na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 14 "/usr/include/boost/math/policies/policy.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/vector.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_VECTOR_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/vector.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/limits/vector.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_LIMITS_VECTOR_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/limits/vector.hpp" 3 4
23866: #define BOOST_MPL_LIMIT_VECTOR_SIZE 20
23866: # 19 "/usr/include/boost/mpl/vector.hpp" 2 3 4
23866: # 27 "/usr/include/boost/mpl/vector.hpp" 3 4
23866: #define AUX778076_VECTOR_HEADER BOOST_PP_CAT(vector, BOOST_MPL_LIMIT_VECTOR_SIZE).hpp
23866: # 36 "/usr/include/boost/mpl/vector.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/vector/vector20.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_VECTOR_VECTOR20_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/vector/vector20.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/vector/vector10.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_VECTOR_VECTOR10_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/vector/vector10.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/vector/vector0.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_VECTOR_VECTOR0_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/vector/vector0.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/vector/aux_/at.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_VECTOR_AUX_AT_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/vector/aux_/at.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/at_fwd.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AT_FWD_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/at_fwd.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template< typename Tag > struct at_impl;
23866: template< typename Sequence, typename N > struct at;
23866:
23866: }}
23866: # 18 "/usr/include/boost/mpl/vector/aux_/at.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/vector/aux_/tag.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_VECTOR_AUX_TAG_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/vector/aux_/tag.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/config/typeof.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_CONFIG_TYPEOF_HPP_INCLUDED
23866: # 25 "/usr/include/boost/mpl/aux_/config/typeof.hpp" 3 4
23866: #define BOOST_MPL_CFG_HAS_TYPEOF
23866: # 34 "/usr/include/boost/mpl/aux_/config/typeof.hpp" 3 4
23866: #define BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
23866: # 18 "/usr/include/boost/mpl/vector/aux_/tag.hpp" 2 3 4
23866:
23866:
23866: namespace boost { namespace mpl { namespace aux {
23866:
23866: struct v_iter_tag;
23866:
23866:
23866: struct vector_tag;
23866:
23866:
23866:
23866:
23866: }}}
23866: # 19 "/usr/include/boost/mpl/vector/aux_/at.hpp" 2 3 4
23866: # 27 "/usr/include/boost/mpl/vector/aux_/at.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866:
23866:
23866: template< typename Vector, long n_ >
23866: struct v_at_impl
23866: {
23866: typedef long_< (Vector::lower_bound_::value + n_) > index_;
23866: typedef __typeof__( Vector::item_(index_()) ) type;
23866: };
23866:
23866:
23866: template< typename Vector, long n_ >
23866: struct v_at
23866: : aux::wrapped_type< typename v_at_impl<Vector,n_>::type >
23866: {
23866: };
23866:
23866: template<>
23866: struct at_impl< aux::vector_tag >
23866: {
23866: template< typename Vector, typename N > struct apply
23866: : v_at<
23866: Vector
23866: , N::value
23866: >
23866: {
23866: };
23866: };
23866: # 114 "/usr/include/boost/mpl/vector/aux_/at.hpp" 3 4
23866: }}
23866: # 18 "/usr/include/boost/mpl/vector/vector0.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/vector/aux_/front.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_VECTOR_AUX_FRONT_HPP_INCLUDED
23866: # 24 "/usr/include/boost/mpl/vector/aux_/front.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866:
23866:
23866: template<>
23866: struct front_impl< aux::vector_tag >
23866: {
23866: template< typename Vector > struct apply
23866: : v_at<Vector,0>
23866: {
23866: };
23866: };
23866: # 54 "/usr/include/boost/mpl/vector/aux_/front.hpp" 3 4
23866: }}
23866: # 19 "/usr/include/boost/mpl/vector/vector0.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/vector/aux_/push_front.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_VECTOR_AUX_PUSH_FRONT_HPP_INCLUDED
23866: # 22 "/usr/include/boost/mpl/vector/aux_/push_front.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/vector/aux_/item.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_VECTOR_AUX_ITEM_HPP_INCLUDED
23866: # 24 "/usr/include/boost/mpl/vector/aux_/item.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866:
23866:
23866: template<
23866: typename T
23866: , typename Base
23866: , int at_front = 0
23866: >
23866: struct v_item
23866: : Base
23866: {
23866: typedef typename Base::upper_bound_ index_;
23866: typedef typename next<index_>::type upper_bound_;
23866: typedef typename next<typename Base::size>::type size;
23866: typedef Base base;
23866: typedef v_item type;
23866:
23866:
23866:
23866: static aux::type_wrapper<T> item_(index_);
23866: using Base::item_;
23866: };
23866:
23866: template<
23866: typename T
23866: , typename Base
23866: >
23866: struct v_item<T,Base,1>
23866: : Base
23866: {
23866: typedef typename prior<typename Base::lower_bound_>::type index_;
23866: typedef index_ lower_bound_;
23866: typedef typename next<typename Base::size>::type size;
23866: typedef Base base;
23866: typedef v_item type;
23866:
23866: static aux::type_wrapper<T> item_(index_);
23866: using Base::item_;
23866: };
23866:
23866:
23866: template<
23866: typename Base
23866: , int at_front
23866: >
23866: struct v_mask
23866: : Base
23866: {
23866: typedef typename prior<typename Base::upper_bound_>::type index_;
23866: typedef index_ upper_bound_;
23866: typedef typename prior<typename Base::size>::type size;
23866: typedef Base base;
23866: typedef v_mask type;
23866:
23866: static aux::type_wrapper<void_> item_(index_);
23866: using Base::item_;
23866: };
23866:
23866: template<
23866: typename Base
23866: >
23866: struct v_mask<Base,1>
23866: : Base
23866: {
23866: typedef typename Base::lower_bound_ index_;
23866: typedef typename next<index_>::type lower_bound_;
23866: typedef typename prior<typename Base::size>::type size;
23866: typedef Base base;
23866: typedef v_mask type;
23866:
23866: static aux::type_wrapper<void_> item_(index_);
23866: using Base::item_;
23866: };
23866:
23866:
23866:
23866: }}
23866: # 23 "/usr/include/boost/mpl/vector/aux_/push_front.hpp" 2 3 4
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<>
23866: struct push_front_impl< aux::vector_tag >
23866: {
23866: template< typename Vector, typename T > struct apply
23866: {
23866: typedef v_item<T,Vector,1> type;
23866: };
23866: };
23866:
23866: }}
23866: # 20 "/usr/include/boost/mpl/vector/vector0.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/vector/aux_/pop_front.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_VECTOR_AUX_POP_FRONT_HPP_INCLUDED
23866: # 25 "/usr/include/boost/mpl/vector/aux_/pop_front.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template<>
23866: struct pop_front_impl< aux::vector_tag >
23866: {
23866: template< typename Vector > struct apply
23866: {
23866: typedef v_mask<Vector,1> type;
23866: };
23866: };
23866:
23866: }}
23866: # 21 "/usr/include/boost/mpl/vector/vector0.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/vector/aux_/push_back.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_VECTOR_AUX_PUSH_BACK_HPP_INCLUDED
23866: # 25 "/usr/include/boost/mpl/vector/aux_/push_back.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template<>
23866: struct push_back_impl< aux::vector_tag >
23866: {
23866: template< typename Vector, typename T > struct apply
23866: {
23866: typedef v_item<T,Vector,0> type;
23866: };
23866: };
23866:
23866: }}
23866: # 22 "/usr/include/boost/mpl/vector/vector0.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/vector/aux_/pop_back.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_VECTOR_AUX_POP_BACK_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/vector/aux_/pop_back.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/pop_back_fwd.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_POP_BACK_FWD_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/pop_back_fwd.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template< typename Tag > struct pop_back_impl;
23866: template< typename Sequence > struct pop_back;
23866:
23866: }}
23866: # 18 "/usr/include/boost/mpl/vector/aux_/pop_back.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<>
23866: struct pop_back_impl< aux::vector_tag >
23866: {
23866: template< typename Vector > struct apply
23866: {
23866: typedef v_mask<Vector,0> type;
23866: };
23866: };
23866:
23866: }}
23866: # 23 "/usr/include/boost/mpl/vector/vector0.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/vector/aux_/back.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_VECTOR_AUX_BACK_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/vector/aux_/back.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/back_fwd.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_BACK_FWD_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/back_fwd.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template< typename Tag > struct back_impl;
23866: template< typename Sequence > struct back;
23866:
23866: }}
23866: # 18 "/usr/include/boost/mpl/vector/aux_/back.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866:
23866:
23866: template<>
23866: struct back_impl< aux::vector_tag >
23866: {
23866: template< typename Vector > struct apply
23866: : v_at<
23866: Vector
23866: , prior<typename Vector::size>::type::value
23866: >
23866: {
23866: };
23866: };
23866: # 57 "/usr/include/boost/mpl/vector/aux_/back.hpp" 3 4
23866: }}
23866: # 24 "/usr/include/boost/mpl/vector/vector0.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/vector/aux_/clear.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_VECTOR_AUX_CLEAR_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/vector/aux_/clear.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/vector/aux_/vector0.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_VECTOR_AUX_VECTOR0_HPP_INCLUDED
23866: # 22 "/usr/include/boost/mpl/vector/aux_/vector0.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/vector/aux_/iterator.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_VECTOR_ITERATOR_HPP_INCLUDED
23866: # 20 "/usr/include/boost/mpl/vector/aux_/iterator.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/minus.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_MINUS_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/minus.hpp" 3 4
23866: #define AUX778076_OP_NAME minus
23866: #define AUX778076_OP_TOKEN -
23866: # 1 "/usr/include/boost/mpl/aux_/arithmetic_op.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/arithmetic_op.hpp" 3 4
23866: #define AUX778076_OP_PREFIX AUX778076_OP_NAME
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 1 3 4
23866: # 22 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/apply_wrap.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 2 3 4
23866: # 27 "/usr/include/boost/mpl/aux_/arithmetic_op.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_PREPROCESSED_HEADER AUX778076_OP_PREFIX.hpp
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/minus.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/minus.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename Tag1
23866: , typename Tag2
23866: >
23866: struct minus_impl
23866: : if_c<
23866: ( Tag1::value
23866: > Tag2::value
23866: )
23866:
23866: , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
23866: , aux::cast1st_impl< minus_impl< Tag2,Tag2 >,Tag1, Tag2 >
23866: >::type
23866: {
23866: };
23866:
23866:
23866: template<> struct minus_impl< na,na >
23866: {
23866: template< typename U1, typename U2 > struct apply
23866: {
23866: typedef apply type;
23866: static const int value = 0;
23866: };
23866: };
23866:
23866: template< typename Tag > struct minus_impl< na,Tag >
23866: {
23866: template< typename U1, typename U2 > struct apply
23866: {
23866: typedef apply type;
23866: static const int value = 0;
23866: };
23866: };
23866:
23866: template< typename Tag > struct minus_impl< Tag,na >
23866: {
23866: template< typename U1, typename U2 > struct apply
23866: {
23866: typedef apply type;
23866: static const int value = 0;
23866: };
23866: };
23866:
23866: template< typename T > struct minus_tag
23866: {
23866: typedef typename T::tag type;
23866: };
23866:
23866: template<
23866: typename N1 = na
23866: , typename N2 = na
23866: , typename N3 = na, typename N4 = na, typename N5 = na
23866: >
23866: struct minus
23866: : minus< minus< minus< minus< N1,N2 >, N3>, N4>, N5>
23866: {
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866: template<
23866: typename N1, typename N2, typename N3, typename N4
23866: >
23866: struct minus< N1,N2,N3,N4,na >
23866:
23866: : minus< minus< minus< N1,N2 >, N3>, N4>
23866: {
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866: template<
23866: typename N1, typename N2, typename N3
23866: >
23866: struct minus< N1,N2,N3,na,na >
23866:
23866: : minus< minus< N1,N2 >, N3>
23866: {
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866: template<
23866: typename N1, typename N2
23866: >
23866: struct minus< N1,N2,na,na,na >
23866: : minus_impl<
23866: typename minus_tag<N1>::type
23866: , typename minus_tag<N2>::type
23866: >::template apply< N1,N2 >::type
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866: template<> struct minus< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : minus< T1 , T2 > { }; }; template< typename Tag > struct lambda< minus< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef minus< na , na > result_; typedef minus< na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > struct template_arity< minus< T1 , T2 , T3 , T4 , T5 > > : int_<5> { }; template<> struct template_arity< minus< na , na > > : int_<-1> { }; }
23866:
23866: }}
23866:
23866: namespace boost { namespace mpl {
23866: template<>
23866: struct minus_impl< integral_c_tag,integral_c_tag >
23866: {
23866: template< typename N1, typename N2 > struct apply
23866:
23866: : integral_c<
23866: typename aux::largest_int<
23866: typename N1::value_type
23866: , typename N2::value_type
23866: >::type
23866: , ( N1::value
23866: - N2::value
23866: )
23866: >
23866: {
23866: };
23866: };
23866:
23866: }}
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 35 "/usr/include/boost/mpl/aux_/arithmetic_op.hpp" 2 3 4
23866: # 87 "/usr/include/boost/mpl/aux_/arithmetic_op.hpp" 3 4
23866: #undef AUX778076_OP_TAG_NAME
23866: #undef AUX778076_OP_IMPL_NAME
23866: #undef AUX778076_OP_ARITY
23866: #undef AUX778076_OP_PREFIX
23866: #undef AUX778076_OP_NAME
23866: #undef AUX778076_OP_TOKEN
23866: # 20 "/usr/include/boost/mpl/minus.hpp" 2 3 4
23866: # 21 "/usr/include/boost/mpl/vector/aux_/iterator.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/advance_fwd.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_ADVANCE_FWD_HPP_INCLUDED
23866: # 19 "/usr/include/boost/mpl/advance_fwd.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866:
23866:
23866: template< typename Tag > struct advance_impl;
23866: template< typename Iterator, typename N > struct advance;
23866:
23866: }}
23866: # 22 "/usr/include/boost/mpl/vector/aux_/iterator.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/distance_fwd.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_DISTANCE_FWD_HPP_INCLUDED
23866: # 19 "/usr/include/boost/mpl/distance_fwd.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866:
23866:
23866: template< typename Tag > struct distance_impl;
23866: template< typename First, typename Last > struct distance;
23866:
23866: }}
23866: # 23 "/usr/include/boost/mpl/vector/aux_/iterator.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/mpl/prior.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_PRIOR_HPP_INCLUDED
23866: # 25 "/usr/include/boost/mpl/vector/aux_/iterator.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename Vector
23866: , long n_
23866: >
23866: struct v_iter
23866: {
23866: typedef aux::v_iter_tag tag;
23866: typedef random_access_iterator_tag category;
23866: typedef typename v_at<Vector,n_>::type type;
23866:
23866: typedef Vector vector_;
23866: typedef mpl::long_<n_> pos;
23866: # 56 "/usr/include/boost/mpl/vector/aux_/iterator.hpp" 3 4
23866: };
23866:
23866:
23866:
23866:
23866: template<
23866: typename Vector
23866: , long n_
23866: >
23866: struct next< v_iter<Vector,n_> >
23866: {
23866: typedef v_iter<Vector,(n_ + 1)> type;
23866: };
23866:
23866: template<
23866: typename Vector
23866: , long n_
23866: >
23866: struct prior< v_iter<Vector,n_> >
23866: {
23866: typedef v_iter<Vector,(n_ - 1)> type;
23866: };
23866:
23866: template<
23866: typename Vector
23866: , long n_
23866: , typename Distance
23866: >
23866: struct advance< v_iter<Vector,n_>,Distance>
23866: {
23866: typedef v_iter<
23866: Vector
23866: , (n_ + Distance::value)
23866: > type;
23866: };
23866:
23866: template<
23866: typename Vector
23866: , long n_
23866: , long m_
23866: >
23866: struct distance< v_iter<Vector,n_>, v_iter<Vector,m_> >
23866: : mpl::long_<(m_ - n_)>
23866: {
23866: };
23866: # 128 "/usr/include/boost/mpl/vector/aux_/iterator.hpp" 3 4
23866: }}
23866: # 23 "/usr/include/boost/mpl/vector/aux_/vector0.hpp" 2 3 4
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template< typename Dummy = na > struct vector0;
23866:
23866: template<> struct vector0<na>
23866: {
23866:
23866: typedef aux::vector_tag tag;
23866: typedef vector0 type;
23866: typedef long_<32768> lower_bound_;
23866: typedef lower_bound_ upper_bound_;
23866: typedef long_<0> size;
23866:
23866: static aux::type_wrapper<void_> item_(...);
23866: # 48 "/usr/include/boost/mpl/vector/aux_/vector0.hpp" 3 4
23866: };
23866:
23866: }}
23866: # 19 "/usr/include/boost/mpl/vector/aux_/clear.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866:
23866:
23866: template<>
23866: struct clear_impl< aux::vector_tag >
23866: {
23866: template< typename Vector > struct apply
23866: {
23866: typedef vector0<> type;
23866: };
23866: };
23866: # 53 "/usr/include/boost/mpl/vector/aux_/clear.hpp" 3 4
23866: }}
23866: # 25 "/usr/include/boost/mpl/vector/vector0.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/vector/aux_/O1_size.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_VECTOR_AUX_O1_SIZE_HPP_INCLUDED
23866: # 24 "/usr/include/boost/mpl/vector/aux_/O1_size.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866:
23866:
23866: template<>
23866: struct O1_size_impl< aux::vector_tag >
23866: {
23866: template< typename Vector > struct apply
23866: : Vector::size
23866: {
23866: };
23866: };
23866: # 54 "/usr/include/boost/mpl/vector/aux_/O1_size.hpp" 3 4
23866: }}
23866: # 26 "/usr/include/boost/mpl/vector/vector0.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/vector/aux_/size.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_VECTOR_AUX_SIZE_HPP_INCLUDED
23866: # 23 "/usr/include/boost/mpl/vector/aux_/size.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866:
23866:
23866: template<>
23866: struct size_impl< aux::vector_tag >
23866: : O1_size_impl< aux::vector_tag >
23866: {
23866: };
23866: # 47 "/usr/include/boost/mpl/vector/aux_/size.hpp" 3 4
23866: }}
23866: # 27 "/usr/include/boost/mpl/vector/vector0.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/vector/aux_/empty.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_VECTOR_AUX_EMPTY_HPP_INCLUDED
23866: # 24 "/usr/include/boost/mpl/vector/aux_/empty.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866:
23866:
23866: template<>
23866: struct empty_impl< aux::vector_tag >
23866: {
23866: template< typename Vector > struct apply
23866: : is_same<
23866: typename Vector::lower_bound_
23866: , typename Vector::upper_bound_
23866: >
23866: {
23866: };
23866: };
23866: # 66 "/usr/include/boost/mpl/vector/aux_/empty.hpp" 3 4
23866: }}
23866: # 28 "/usr/include/boost/mpl/vector/vector0.hpp" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/vector/aux_/begin_end.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_VECTOR_AUX_BEGIN_END_HPP_INCLUDED
23866: # 25 "/usr/include/boost/mpl/vector/aux_/begin_end.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template<>
23866: struct begin_impl< aux::vector_tag >
23866: {
23866: template< typename Vector > struct apply
23866: {
23866: typedef v_iter<Vector,0> type;
23866: };
23866: };
23866:
23866: template<>
23866: struct end_impl< aux::vector_tag >
23866: {
23866: template< typename Vector > struct apply
23866: {
23866: typedef v_iter<Vector,Vector::size::value> type;
23866: };
23866: };
23866:
23866: }}
23866: # 32 "/usr/include/boost/mpl/vector/vector0.hpp" 2 3 4
23866: # 19 "/usr/include/boost/mpl/vector/vector10.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_PREPROCESSED_HEADER vector10.hpp
23866: # 1 "/usr/include/boost/mpl/vector/aux_/include_preprocessed.hpp" 1 3 4
23866: # 25 "/usr/include/boost/mpl/vector/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_INCLUDE_DIR typeof_based
23866: # 34 "/usr/include/boost/mpl/vector/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_HEADER AUX778076_INCLUDE_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 49 "/usr/include/boost/mpl/vector/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename T0
23866: >
23866: struct vector1
23866: : v_item<
23866: T0
23866: , vector0< >
23866: >
23866: {
23866: typedef vector1 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1
23866: >
23866: struct vector2
23866: : v_item<
23866: T1
23866: , vector1<T0>
23866: >
23866: {
23866: typedef vector2 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2
23866: >
23866: struct vector3
23866: : v_item<
23866: T2
23866: , vector2< T0,T1 >
23866: >
23866: {
23866: typedef vector3 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3
23866: >
23866: struct vector4
23866: : v_item<
23866: T3
23866: , vector3< T0,T1,T2 >
23866: >
23866: {
23866: typedef vector4 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: >
23866: struct vector5
23866: : v_item<
23866: T4
23866: , vector4< T0,T1,T2,T3 >
23866: >
23866: {
23866: typedef vector5 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5
23866: >
23866: struct vector6
23866: : v_item<
23866: T5
23866: , vector5< T0,T1,T2,T3,T4 >
23866: >
23866: {
23866: typedef vector6 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6
23866: >
23866: struct vector7
23866: : v_item<
23866: T6
23866: , vector6< T0,T1,T2,T3,T4,T5 >
23866: >
23866: {
23866: typedef vector7 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7
23866: >
23866: struct vector8
23866: : v_item<
23866: T7
23866: , vector7< T0,T1,T2,T3,T4,T5,T6 >
23866: >
23866: {
23866: typedef vector8 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8
23866: >
23866: struct vector9
23866: : v_item<
23866: T8
23866: , vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
23866: >
23866: {
23866: typedef vector9 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: >
23866: struct vector10
23866: : v_item<
23866: T9
23866: , vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
23866: >
23866: {
23866: typedef vector10 type;
23866: };
23866:
23866: }}
23866: # 50 "/usr/include/boost/mpl/vector/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_HEADER
23866: #undef AUX778076_INCLUDE_DIR
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 28 "/usr/include/boost/mpl/vector/vector10.hpp" 2 3 4
23866: # 19 "/usr/include/boost/mpl/vector/vector20.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_PREPROCESSED_HEADER vector20.hpp
23866: # 1 "/usr/include/boost/mpl/vector/aux_/include_preprocessed.hpp" 1 3 4
23866: # 25 "/usr/include/boost/mpl/vector/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_INCLUDE_DIR typeof_based
23866: # 34 "/usr/include/boost/mpl/vector/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_HEADER AUX778076_INCLUDE_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 49 "/usr/include/boost/mpl/vector/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10
23866: >
23866: struct vector11
23866: : v_item<
23866: T10
23866: , vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
23866: >
23866: {
23866: typedef vector11 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11
23866: >
23866: struct vector12
23866: : v_item<
23866: T11
23866: , vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
23866: >
23866: {
23866: typedef vector12 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12
23866: >
23866: struct vector13
23866: : v_item<
23866: T12
23866: , vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
23866: >
23866: {
23866: typedef vector13 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12, typename T13
23866: >
23866: struct vector14
23866: : v_item<
23866: T13
23866: , vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
23866: >
23866: {
23866: typedef vector14 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12, typename T13, typename T14
23866: >
23866: struct vector15
23866: : v_item<
23866: T14
23866: , vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
23866: >
23866: {
23866: typedef vector15 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12, typename T13, typename T14
23866: , typename T15
23866: >
23866: struct vector16
23866: : v_item<
23866: T15
23866: , vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >
23866: >
23866: {
23866: typedef vector16 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12, typename T13, typename T14
23866: , typename T15, typename T16
23866: >
23866: struct vector17
23866: : v_item<
23866: T16
23866: , vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >
23866: >
23866: {
23866: typedef vector17 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12, typename T13, typename T14
23866: , typename T15, typename T16, typename T17
23866: >
23866: struct vector18
23866: : v_item<
23866: T17
23866: , vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >
23866: >
23866: {
23866: typedef vector18 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12, typename T13, typename T14
23866: , typename T15, typename T16, typename T17, typename T18
23866: >
23866: struct vector19
23866: : v_item<
23866: T18
23866: , vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >
23866: >
23866: {
23866: typedef vector19 type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12, typename T13, typename T14
23866: , typename T15, typename T16, typename T17, typename T18, typename T19
23866: >
23866: struct vector20
23866: : v_item<
23866: T19
23866: , vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >
23866: >
23866: {
23866: typedef vector20 type;
23866: };
23866:
23866: }}
23866: # 50 "/usr/include/boost/mpl/vector/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_HEADER
23866: #undef AUX778076_INCLUDE_DIR
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 28 "/usr/include/boost/mpl/vector/vector20.hpp" 2 3 4
23866: # 37 "/usr/include/boost/mpl/vector.hpp" 2 3 4
23866: #undef AUX778076_VECTOR_HEADER
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_PREPROCESSED_HEADER vector.hpp
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/vector.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/vector.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
23866: , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
23866: , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
23866: , typename T12 = na, typename T13 = na, typename T14 = na
23866: , typename T15 = na, typename T16 = na, typename T17 = na
23866: , typename T18 = na, typename T19 = na
23866: >
23866: struct vector;
23866:
23866: template<
23866:
23866: >
23866: struct vector<
23866: na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
23866: , na, na, na
23866: >
23866: : vector0< >
23866: {
23866: typedef vector0< >::type type;
23866: };
23866:
23866: template<
23866: typename T0
23866: >
23866: struct vector<
23866: T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
23866: , na, na, na
23866: >
23866: : vector1<T0>
23866: {
23866: typedef typename vector1<T0>::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1
23866: >
23866: struct vector<
23866: T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
23866: , na, na, na
23866: >
23866: : vector2< T0,T1 >
23866: {
23866: typedef typename vector2< T0,T1 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2
23866: >
23866: struct vector<
23866: T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
23866: , na, na, na
23866: >
23866: : vector3< T0,T1,T2 >
23866: {
23866: typedef typename vector3< T0,T1,T2 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3
23866: >
23866: struct vector<
23866: T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
23866: , na, na, na
23866: >
23866: : vector4< T0,T1,T2,T3 >
23866: {
23866: typedef typename vector4< T0,T1,T2,T3 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: >
23866: struct vector<
23866: T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
23866: , na, na, na
23866: >
23866: : vector5< T0,T1,T2,T3,T4 >
23866: {
23866: typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5
23866: >
23866: struct vector<
23866: T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
23866: , na, na, na
23866: >
23866: : vector6< T0,T1,T2,T3,T4,T5 >
23866: {
23866: typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6
23866: >
23866: struct vector<
23866: T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
23866: , na, na, na
23866: >
23866: : vector7< T0,T1,T2,T3,T4,T5,T6 >
23866: {
23866: typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7
23866: >
23866: struct vector<
23866: T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
23866: , na, na, na
23866: >
23866: : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
23866: {
23866: typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8
23866: >
23866: struct vector<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
23866: , na, na, na
23866: >
23866: : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
23866: {
23866: typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: >
23866: struct vector<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
23866: , na, na, na
23866: >
23866: : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
23866: {
23866: typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10
23866: >
23866: struct vector<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
23866: , na, na, na
23866: >
23866: : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
23866: {
23866: typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11
23866: >
23866: struct vector<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
23866: , na, na, na, na
23866: >
23866: : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
23866: {
23866: typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12
23866: >
23866: struct vector<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
23866: , na, na, na, na
23866: >
23866: : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
23866: {
23866: typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12, typename T13
23866: >
23866: struct vector<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
23866: , na, na, na, na
23866: >
23866: : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
23866: {
23866: typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12, typename T13, typename T14
23866: >
23866: struct vector<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
23866: , na, na, na, na
23866: >
23866: : vector15<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
23866: >
23866: {
23866: typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12, typename T13, typename T14
23866: , typename T15
23866: >
23866: struct vector<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
23866: , T15, na, na, na, na
23866: >
23866: : vector16<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
23866: , T15
23866: >
23866: {
23866: typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12, typename T13, typename T14
23866: , typename T15, typename T16
23866: >
23866: struct vector<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
23866: , T15, T16, na, na, na
23866: >
23866: : vector17<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
23866: , T15, T16
23866: >
23866: {
23866: typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12, typename T13, typename T14
23866: , typename T15, typename T16, typename T17
23866: >
23866: struct vector<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
23866: , T15, T16, T17, na, na
23866: >
23866: : vector18<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
23866: , T15, T16, T17
23866: >
23866: {
23866: typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
23866: };
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12, typename T13, typename T14
23866: , typename T15, typename T16, typename T17, typename T18
23866: >
23866: struct vector<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
23866: , T15, T16, T17, T18, na
23866: >
23866: : vector19<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
23866: , T15, T16, T17, T18
23866: >
23866: {
23866: typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
23866: };
23866:
23866:
23866:
23866: template<
23866: typename T0, typename T1, typename T2, typename T3, typename T4
23866: , typename T5, typename T6, typename T7, typename T8, typename T9
23866: , typename T10, typename T11, typename T12, typename T13, typename T14
23866: , typename T15, typename T16, typename T17, typename T18, typename T19
23866: >
23866: struct vector
23866: : vector20<
23866: T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
23866: , T15, T16, T17, T18, T19
23866: >
23866: {
23866: typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
23866: };
23866:
23866: }}
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 47 "/usr/include/boost/mpl/vector.hpp" 2 3 4
23866: # 15 "/usr/include/boost/math/policies/policy.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/mpl/at.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AT_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/at.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/at_impl.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_AT_IMPL_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/aux_/at_impl.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/advance.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_ADVANCE_HPP_INCLUDED
23866: # 19 "/usr/include/boost/mpl/advance.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/negate.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_NEGATE_HPP_INCLUDED
23866: # 25 "/usr/include/boost/mpl/negate.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template< typename Tag > struct negate_impl;
23866:
23866: template< typename T > struct negate_tag
23866: {
23866: typedef typename T::tag type;
23866: };
23866:
23866: template<
23866: typename N = na
23866: >
23866: struct negate
23866:
23866: : negate_impl<
23866: typename negate_tag<N>::type
23866: >::template apply<N>::type
23866:
23866:
23866:
23866:
23866:
23866:
23866: {
23866:
23866: };
23866:
23866: template<> struct negate< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : negate< T1 > { }; }; template< typename Tag > struct lambda< negate< na > , Tag , int_<-1> > { typedef false_ is_le; typedef negate< na > result_; typedef negate< na > type; }; namespace aux { template< typename T1 > struct template_arity< negate< T1 > > : int_<1> { }; template<> struct template_arity< negate< na > > : int_<-1> { }; }
23866: # 65 "/usr/include/boost/mpl/negate.hpp" 3 4
23866: template<>
23866: struct negate_impl<integral_c_tag>
23866: {
23866:
23866:
23866:
23866:
23866: template< typename N > struct apply
23866: : integral_c< typename N::value_type, (-N::value) >
23866:
23866: {
23866: };
23866: };
23866:
23866: }}
23866: # 20 "/usr/include/boost/mpl/advance.hpp" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/apply_wrap.hpp" 1 3 4
23866: # 24 "/usr/include/boost/mpl/advance.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/advance_forward.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_AUX_ADVANCE_FORWARD_HPP_INCLUDED
23866: # 23 "/usr/include/boost/mpl/aux_/advance_forward.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/apply_wrap.hpp" 1 3 4
23866: # 24 "/usr/include/boost/mpl/aux_/advance_forward.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_PREPROCESSED_HEADER advance_forward.hpp
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/advance_forward.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/advance_forward.hpp" 3 4
23866: namespace boost { namespace mpl { namespace aux {
23866:
23866: template< long N > struct advance_forward;
23866: template<>
23866: struct advance_forward<0>
23866: {
23866: template< typename Iterator > struct apply
23866: {
23866: typedef Iterator iter0;
23866: typedef iter0 type;
23866: };
23866: };
23866:
23866: template<>
23866: struct advance_forward<1>
23866: {
23866: template< typename Iterator > struct apply
23866: {
23866: typedef Iterator iter0;
23866: typedef typename next<iter0>::type iter1;
23866: typedef iter1 type;
23866: };
23866: };
23866:
23866: template<>
23866: struct advance_forward<2>
23866: {
23866: template< typename Iterator > struct apply
23866: {
23866: typedef Iterator iter0;
23866: typedef typename next<iter0>::type iter1;
23866: typedef typename next<iter1>::type iter2;
23866: typedef iter2 type;
23866: };
23866: };
23866:
23866: template<>
23866: struct advance_forward<3>
23866: {
23866: template< typename Iterator > struct apply
23866: {
23866: typedef Iterator iter0;
23866: typedef typename next<iter0>::type iter1;
23866: typedef typename next<iter1>::type iter2;
23866: typedef typename next<iter2>::type iter3;
23866: typedef iter3 type;
23866: };
23866: };
23866:
23866: template<>
23866: struct advance_forward<4>
23866: {
23866: template< typename Iterator > struct apply
23866: {
23866: typedef Iterator iter0;
23866: typedef typename next<iter0>::type iter1;
23866: typedef typename next<iter1>::type iter2;
23866: typedef typename next<iter2>::type iter3;
23866: typedef typename next<iter3>::type iter4;
23866: typedef iter4 type;
23866: };
23866: };
23866:
23866: template< long N >
23866: struct advance_forward
23866: {
23866: template< typename Iterator > struct apply
23866: {
23866: typedef typename apply_wrap1<
23866: advance_forward<4>
23866: , Iterator
23866: >::type chunk_result_;
23866:
23866: typedef typename apply_wrap1<
23866: advance_forward<(
23866: (N - 4) < 0
23866: ? 0
23866: : N - 4
23866: )>
23866: , chunk_result_
23866: >::type type;
23866: };
23866: };
23866:
23866: }}}
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 33 "/usr/include/boost/mpl/aux_/advance_forward.hpp" 2 3 4
23866: # 25 "/usr/include/boost/mpl/advance.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/advance_backward.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_AUX778076_ADVANCE_BACKWARD_HPP_INCLUDED
23866: # 23 "/usr/include/boost/mpl/aux_/advance_backward.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/apply_wrap.hpp" 1 3 4
23866: # 24 "/usr/include/boost/mpl/aux_/advance_backward.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_PREPROCESSED_HEADER advance_backward.hpp
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/advance_backward.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/advance_backward.hpp" 3 4
23866: namespace boost { namespace mpl { namespace aux {
23866:
23866: template< long N > struct advance_backward;
23866: template<>
23866: struct advance_backward<0>
23866: {
23866: template< typename Iterator > struct apply
23866: {
23866: typedef Iterator iter0;
23866: typedef iter0 type;
23866: };
23866: };
23866:
23866: template<>
23866: struct advance_backward<1>
23866: {
23866: template< typename Iterator > struct apply
23866: {
23866: typedef Iterator iter0;
23866: typedef typename prior<iter0>::type iter1;
23866: typedef iter1 type;
23866: };
23866: };
23866:
23866: template<>
23866: struct advance_backward<2>
23866: {
23866: template< typename Iterator > struct apply
23866: {
23866: typedef Iterator iter0;
23866: typedef typename prior<iter0>::type iter1;
23866: typedef typename prior<iter1>::type iter2;
23866: typedef iter2 type;
23866: };
23866: };
23866:
23866: template<>
23866: struct advance_backward<3>
23866: {
23866: template< typename Iterator > struct apply
23866: {
23866: typedef Iterator iter0;
23866: typedef typename prior<iter0>::type iter1;
23866: typedef typename prior<iter1>::type iter2;
23866: typedef typename prior<iter2>::type iter3;
23866: typedef iter3 type;
23866: };
23866: };
23866:
23866: template<>
23866: struct advance_backward<4>
23866: {
23866: template< typename Iterator > struct apply
23866: {
23866: typedef Iterator iter0;
23866: typedef typename prior<iter0>::type iter1;
23866: typedef typename prior<iter1>::type iter2;
23866: typedef typename prior<iter2>::type iter3;
23866: typedef typename prior<iter3>::type iter4;
23866: typedef iter4 type;
23866: };
23866: };
23866:
23866: template< long N >
23866: struct advance_backward
23866: {
23866: template< typename Iterator > struct apply
23866: {
23866: typedef typename apply_wrap1<
23866: advance_backward<4>
23866: , Iterator
23866: >::type chunk_result_;
23866:
23866: typedef typename apply_wrap1<
23866: advance_backward<(
23866: (N - 4) < 0
23866: ? 0
23866: : N - 4
23866: )>
23866: , chunk_result_
23866: >::type type;
23866: };
23866: };
23866:
23866: }}}
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 33 "/usr/include/boost/mpl/aux_/advance_backward.hpp" 2 3 4
23866: # 26 "/usr/include/boost/mpl/advance.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866:
23866: template< typename Tag >
23866: struct advance_impl
23866: {
23866: template< typename Iterator, typename N > struct apply
23866: {
23866: typedef typename less< N,long_<0> >::type backward_;
23866: typedef typename if_< backward_, negate<N>, N >::type offset_;
23866:
23866: typedef typename if_<
23866: backward_
23866: , aux::advance_backward< offset_::value >
23866: , aux::advance_forward< offset_::value >
23866: >::type f_;
23866:
23866: typedef typename apply_wrap1<f_,Iterator>::type type;
23866: };
23866: };
23866:
23866:
23866: template<
23866: typename Iterator = na
23866: , typename N = na
23866: >
23866: struct advance
23866: : advance_impl< typename tag<Iterator>::type >
23866: ::template apply<Iterator,N>
23866: {
23866: };
23866:
23866: template<
23866: typename Iterator
23866: , long N
23866: >
23866: struct advance_c
23866: : advance_impl< typename tag<Iterator>::type >
23866: ::template apply<Iterator,long_<N> >
23866: {
23866: };
23866:
23866: template<> struct advance< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : advance< T1 , T2 > { }; }; template< typename Tag > struct lambda< advance< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef advance< na , na > result_; typedef advance< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< advance< T1 , T2 > > : int_<2> { }; template<> struct template_arity< advance< na , na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 19 "/usr/include/boost/mpl/aux_/at_impl.hpp" 2 3 4
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866:
23866:
23866:
23866: template< typename Tag >
23866: struct at_impl
23866: {
23866: template< typename Sequence, typename N > struct apply
23866: {
23866: typedef typename advance<
23866: typename begin<Sequence>::type
23866: , N
23866: >::type iter_;
23866:
23866: typedef typename deref<iter_>::type type;
23866: };
23866: };
23866:
23866: template<> struct at_impl<non_sequence_tag> {};
23866:
23866: }}
23866: # 19 "/usr/include/boost/mpl/at.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename Sequence = na
23866: , typename N = na
23866: >
23866: struct at
23866: : at_impl< typename sequence_tag<Sequence>::type >
23866: ::template apply< Sequence,N >
23866: {
23866:
23866: };
23866:
23866: template<
23866: typename Sequence
23866: , long N
23866: >
23866: struct at_c
23866: : at_impl< typename sequence_tag<Sequence>::type >
23866: ::template apply< Sequence,mpl::long_<N> >
23866: {
23866: };
23866:
23866: template<> struct at< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : at< T1 , T2 > { }; }; template< typename Tag > struct lambda< at< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef at< na , na > result_; typedef at< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< at< T1 , T2 > > : int_<2> { }; template<> struct template_arity< at< na , na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 17 "/usr/include/boost/math/policies/policy.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/size.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_SIZE_HPP_INCLUDED
23866: # 19 "/usr/include/boost/mpl/size.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/size_impl.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_SIZE_IMPL_HPP_INCLUDED
23866: # 19 "/usr/include/boost/mpl/aux_/size_impl.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/distance.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_DISTANCE_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/distance.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/iter_fold.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_ITER_FOLD_HPP_INCLUDED
23866: # 21 "/usr/include/boost/mpl/iter_fold.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/iter_fold_impl.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_ITER_FOLD_IMPL_HPP_INCLUDED
23866: # 19 "/usr/include/boost/mpl/aux_/iter_fold_impl.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/apply.hpp" 1 3 4
23866: # 20 "/usr/include/boost/mpl/aux_/iter_fold_impl.hpp" 2 3 4
23866: # 32 "/usr/include/boost/mpl/aux_/iter_fold_impl.hpp" 3 4
23866: #define BOOST_MPL_PREPROCESSED_HEADER iter_fold_impl.hpp
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp" 3 4
23866: namespace boost { namespace mpl { namespace aux {
23866:
23866:
23866:
23866: template<
23866: int N
23866: , typename First
23866: , typename Last
23866: , typename State
23866: , typename ForwardOp
23866: >
23866: struct iter_fold_impl;
23866:
23866: template<
23866: typename First
23866: , typename Last
23866: , typename State
23866: , typename ForwardOp
23866: >
23866: struct iter_fold_impl< 0,First,Last,State,ForwardOp >
23866: {
23866: typedef First iter0;
23866: typedef State state0;
23866: typedef state0 state;
23866: typedef iter0 iterator;
23866: };
23866:
23866: template<
23866: typename First
23866: , typename Last
23866: , typename State
23866: , typename ForwardOp
23866: >
23866: struct iter_fold_impl< 1,First,Last,State,ForwardOp >
23866: {
23866: typedef First iter0;
23866: typedef State state0;
23866: typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
23866: typedef typename mpl::next<iter0>::type iter1;
23866:
23866:
23866: typedef state1 state;
23866: typedef iter1 iterator;
23866: };
23866:
23866: template<
23866: typename First
23866: , typename Last
23866: , typename State
23866: , typename ForwardOp
23866: >
23866: struct iter_fold_impl< 2,First,Last,State,ForwardOp >
23866: {
23866: typedef First iter0;
23866: typedef State state0;
23866: typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
23866: typedef typename mpl::next<iter0>::type iter1;
23866: typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
23866: typedef typename mpl::next<iter1>::type iter2;
23866:
23866:
23866: typedef state2 state;
23866: typedef iter2 iterator;
23866: };
23866:
23866: template<
23866: typename First
23866: , typename Last
23866: , typename State
23866: , typename ForwardOp
23866: >
23866: struct iter_fold_impl< 3,First,Last,State,ForwardOp >
23866: {
23866: typedef First iter0;
23866: typedef State state0;
23866: typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
23866: typedef typename mpl::next<iter0>::type iter1;
23866: typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
23866: typedef typename mpl::next<iter1>::type iter2;
23866: typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
23866: typedef typename mpl::next<iter2>::type iter3;
23866:
23866:
23866: typedef state3 state;
23866: typedef iter3 iterator;
23866: };
23866:
23866: template<
23866: typename First
23866: , typename Last
23866: , typename State
23866: , typename ForwardOp
23866: >
23866: struct iter_fold_impl< 4,First,Last,State,ForwardOp >
23866: {
23866: typedef First iter0;
23866: typedef State state0;
23866: typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
23866: typedef typename mpl::next<iter0>::type iter1;
23866: typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
23866: typedef typename mpl::next<iter1>::type iter2;
23866: typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
23866: typedef typename mpl::next<iter2>::type iter3;
23866: typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
23866: typedef typename mpl::next<iter3>::type iter4;
23866:
23866:
23866: typedef state4 state;
23866: typedef iter4 iterator;
23866: };
23866:
23866: template<
23866: int N
23866: , typename First
23866: , typename Last
23866: , typename State
23866: , typename ForwardOp
23866: >
23866: struct iter_fold_impl
23866: {
23866: typedef iter_fold_impl<
23866: 4
23866: , First
23866: , Last
23866: , State
23866: , ForwardOp
23866: > chunk_;
23866:
23866: typedef iter_fold_impl<
23866: ( (N - 4) < 0 ? 0 : N - 4 )
23866: , typename chunk_::iterator
23866: , Last
23866: , typename chunk_::state
23866: , ForwardOp
23866: > res_;
23866:
23866: typedef typename res_::state state;
23866: typedef typename res_::iterator iterator;
23866: };
23866:
23866: template<
23866: typename First
23866: , typename Last
23866: , typename State
23866: , typename ForwardOp
23866: >
23866: struct iter_fold_impl< -1,First,Last,State,ForwardOp >
23866: : iter_fold_impl<
23866: -1
23866: , typename mpl::next<First>::type
23866: , Last
23866: , typename apply2< ForwardOp,State,First >::type
23866: , ForwardOp
23866: >
23866: {
23866: };
23866:
23866: template<
23866: typename Last
23866: , typename State
23866: , typename ForwardOp
23866: >
23866: struct iter_fold_impl< -1,Last,Last,State,ForwardOp >
23866: {
23866: typedef State state;
23866: typedef Last iterator;
23866: };
23866:
23866: }}}
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 34 "/usr/include/boost/mpl/aux_/iter_fold_impl.hpp" 2 3 4
23866: # 22 "/usr/include/boost/mpl/iter_fold.hpp" 2 3 4
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename Sequence = na
23866: , typename State = na
23866: , typename ForwardOp = na
23866: >
23866: struct iter_fold
23866: {
23866: typedef typename aux::iter_fold_impl<
23866: ::boost::mpl::O1_size<Sequence>::value
23866: , typename begin<Sequence>::type
23866: , typename end<Sequence>::type
23866: , State
23866: , typename lambda<ForwardOp>::type
23866: >::state type;
23866:
23866:
23866: };
23866:
23866: template<> struct iter_fold< na , na , na > { template< typename T1 , typename T2 , typename T3 , typename T4 =na , typename T5 =na > struct apply : iter_fold< T1 , T2 , T3 > { }; }; template< typename Tag > struct lambda< iter_fold< na , na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef iter_fold< na , na , na > result_; typedef iter_fold< na , na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 > struct template_arity< iter_fold< T1 , T2 , T3 > > : int_<3> { }; template<> struct template_arity< iter_fold< na , na , na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 19 "/usr/include/boost/mpl/distance.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/iterator_range.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_ITERATOR_RANGE_HPP_INCLUDED
23866: # 20 "/usr/include/boost/mpl/iterator_range.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: struct iterator_range_tag;
23866:
23866: template<
23866: typename First = na
23866: , typename Last = na
23866: >
23866: struct iterator_range
23866: {
23866: typedef iterator_range_tag tag;
23866: typedef iterator_range type;
23866: typedef First begin;
23866: typedef Last end;
23866:
23866:
23866: };
23866:
23866: template<> struct iterator_range< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : iterator_range< T1 , T2 > { }; }; template< typename Tag > struct lambda< iterator_range< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef iterator_range< na , na > result_; typedef iterator_range< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< iterator_range< T1 , T2 > > : int_<2> { }; template<> struct template_arity< iterator_range< na , na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 20 "/usr/include/boost/mpl/distance.hpp" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/mpl/apply_wrap.hpp" 1 3 4
23866: # 24 "/usr/include/boost/mpl/distance.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866:
23866: template< typename Tag > struct distance_impl
23866: {
23866: template< typename First, typename Last > struct apply
23866:
23866: : aux::msvc_eti_base< typename iter_fold<
23866: iterator_range<First,Last>
23866: , mpl::long_<0>
23866: , next<>
23866: >::type >
23866: {
23866: # 60 "/usr/include/boost/mpl/distance.hpp" 3 4
23866: };
23866: };
23866:
23866: template<
23866: typename First = na
23866: , typename Last = na
23866: >
23866: struct distance
23866: : distance_impl< typename tag<First>::type >
23866: ::template apply<First, Last>
23866: {
23866:
23866: };
23866:
23866: template<> struct distance< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : distance< T1 , T2 > { }; }; template< typename Tag > struct lambda< distance< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef distance< na , na > result_; typedef distance< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< distance< T1 , T2 > > : int_<2> { }; template<> struct template_arity< distance< na , na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 20 "/usr/include/boost/mpl/aux_/size_impl.hpp" 2 3 4
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866:
23866:
23866:
23866: template< typename Tag >
23866: struct size_impl
23866: {
23866: template< typename Sequence > struct apply
23866:
23866: : distance<
23866: typename begin<Sequence>::type
23866: , typename end<Sequence>::type
23866: >
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: };
23866: };
23866:
23866: template<> struct size_impl<non_sequence_tag> {};
23866:
23866: }}
23866: # 20 "/usr/include/boost/mpl/size.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename Sequence = na
23866: >
23866: struct size
23866: : aux::msvc_eti_base<
23866: typename size_impl< typename sequence_tag<Sequence>::type >
23866: ::template apply< Sequence >::type
23866: >::type
23866: {
23866:
23866: };
23866:
23866: template<> struct size< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : size< T1 > { }; }; template< typename Tag > struct lambda< size< na > , Tag , int_<-1> > { typedef false_ is_le; typedef size< na > result_; typedef size< na > type; }; namespace aux { template< typename T1 > struct template_arity< size< T1 > > : int_<1> { }; template<> struct template_arity< size< na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 18 "/usr/include/boost/math/policies/policy.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/comparison.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_COMPARISON_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/comparison.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/not_equal_to.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_NOT_EQUAL_TO_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/not_equal_to.hpp" 3 4
23866: #define AUX778076_OP_NAME not_equal_to
23866: #define AUX778076_OP_TOKEN !=
23866: # 1 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 1 3 4
23866: # 22 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 3 4
23866: #define AUX778076_OP_PREFIX AUX778076_OP_NAME
23866:
23866:
23866: #define AUX778076_OP_ARITY 2
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 1 3 4
23866: # 22 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/apply_wrap.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 2 3 4
23866: # 28 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_PREPROCESSED_HEADER AUX778076_OP_PREFIX.hpp
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename Tag1
23866: , typename Tag2
23866: >
23866: struct not_equal_to_impl
23866: : if_c<
23866: ( Tag1::value
23866: > Tag2::value
23866: )
23866:
23866: , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
23866: , aux::cast1st_impl< not_equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
23866: >::type
23866: {
23866: };
23866:
23866:
23866: template<> struct not_equal_to_impl< na,na >
23866: {
23866: template< typename U1, typename U2 > struct apply
23866: {
23866: typedef apply type;
23866: static const int value = 0;
23866: };
23866: };
23866:
23866: template< typename Tag > struct not_equal_to_impl< na,Tag >
23866: {
23866: template< typename U1, typename U2 > struct apply
23866: {
23866: typedef apply type;
23866: static const int value = 0;
23866: };
23866: };
23866:
23866: template< typename Tag > struct not_equal_to_impl< Tag,na >
23866: {
23866: template< typename U1, typename U2 > struct apply
23866: {
23866: typedef apply type;
23866: static const int value = 0;
23866: };
23866: };
23866:
23866: template< typename T > struct not_equal_to_tag
23866: {
23866: typedef typename T::tag type;
23866: };
23866:
23866: template<
23866: typename N1 = na
23866: , typename N2 = na
23866: >
23866: struct not_equal_to
23866:
23866: : not_equal_to_impl<
23866: typename not_equal_to_tag<N1>::type
23866: , typename not_equal_to_tag<N2>::type
23866: >::template apply< N1,N2 >::type
23866: {
23866:
23866:
23866: };
23866:
23866: template<> struct not_equal_to< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : not_equal_to< T1 , T2 > { }; }; template< typename Tag > struct lambda< not_equal_to< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef not_equal_to< na , na > result_; typedef not_equal_to< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< not_equal_to< T1 , T2 > > : int_<2> { }; template<> struct template_arity< not_equal_to< na , na > > : int_<-1> { }; }
23866:
23866: }}
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<>
23866: struct not_equal_to_impl< integral_c_tag,integral_c_tag >
23866: {
23866: template< typename N1, typename N2 > struct apply
23866:
23866: : bool_< ( N1::value != N2::value ) >
23866: {
23866: };
23866: };
23866:
23866: }}
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 36 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 2 3 4
23866: # 78 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 3 4
23866: #undef AUX778076_OP_TAG_NAME
23866: #undef AUX778076_OP_IMPL_NAME
23866: #undef AUX778076_OP_ARITY
23866: #undef AUX778076_OP_PREFIX
23866: #undef AUX778076_OP_NAME
23866: #undef AUX778076_OP_TOKEN
23866: # 20 "/usr/include/boost/mpl/not_equal_to.hpp" 2 3 4
23866: # 19 "/usr/include/boost/mpl/comparison.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/mpl/greater.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_GREATER_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/greater.hpp" 3 4
23866: #define AUX778076_OP_NAME greater
23866: #define AUX778076_OP_TOKEN >
23866: # 1 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 1 3 4
23866: # 22 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 3 4
23866: #define AUX778076_OP_PREFIX AUX778076_OP_NAME
23866:
23866:
23866: #define AUX778076_OP_ARITY 2
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 1 3 4
23866: # 22 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/apply_wrap.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 2 3 4
23866: # 28 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_PREPROCESSED_HEADER AUX778076_OP_PREFIX.hpp
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/greater.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/greater.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename Tag1
23866: , typename Tag2
23866: >
23866: struct greater_impl
23866: : if_c<
23866: ( Tag1::value
23866: > Tag2::value
23866: )
23866:
23866: , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
23866: , aux::cast1st_impl< greater_im CXX src/input/wav_ac3acm_demuxer.cpp
pl< Tag2,Tag2 >,Tag1, Tag2 >
23866: >::type
23866: {
23866: };
23866:
23866:
23866: template<> struct greater_impl< na,na >
23866: {
23866: template< typename U1, typename U2 > struct apply
23866: {
23866: typedef apply type;
23866: static const int value = 0;
23866: };
23866: };
23866:
23866: template< typename Tag > struct greater_impl< na,Tag >
23866: {
23866: template< typename U1, typename U2 > struct apply
23866: {
23866: typedef apply type;
23866: static const int value = 0;
23866: };
23866: };
23866:
23866: template< typename Tag > struct greater_impl< Tag,na >
23866: {
23866: template< typename U1, typename U2 > struct apply
23866: {
23866: typedef apply type;
23866: static const int value = 0;
23866: };
23866: };
23866:
23866: template< typename T > struct greater_tag
23866: {
23866: typedef typename T::tag type;
23866: };
23866:
23866: template<
23866: typename N1 = na
23866: , typename N2 = na
23866: >
23866: struct greater
23866:
23866: : greater_impl<
23866: typename greater_tag<N1>::type
23866: , typename greater_tag<N2>::type
23866: >::template apply< N1,N2 >::type
23866: {
23866:
23866:
23866: };
23866:
23866: template<> struct greater< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : greater< T1 , T2 > { }; }; template< typename Tag > struct lambda< greater< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef greater< na , na > result_; typedef greater< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< greater< T1 , T2 > > : int_<2> { }; template<> struct template_arity< greater< na , na > > : int_<-1> { }; }
23866:
23866: }}
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<>
23866: struct greater_impl< integral_c_tag,integral_c_tag >
23866: {
23866: template< typename N1, typename N2 > struct apply
23866:
23866: : bool_< ( N1::value > N2::value ) >
23866: {
23866: };
23866: };
23866:
23866: }}
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 36 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 2 3 4
23866: # 78 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 3 4
23866: #undef AUX778076_OP_TAG_NAME
23866: #undef AUX778076_OP_IMPL_NAME
23866: #undef AUX778076_OP_ARITY
23866: #undef AUX778076_OP_PREFIX
23866: #undef AUX778076_OP_NAME
23866: #undef AUX778076_OP_TOKEN
23866: # 20 "/usr/include/boost/mpl/greater.hpp" 2 3 4
23866: # 21 "/usr/include/boost/mpl/comparison.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/less_equal.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_LESS_EQUAL_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/less_equal.hpp" 3 4
23866: #define AUX778076_OP_NAME less_equal
23866: #define AUX778076_OP_TOKEN <=
23866: # 1 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 1 3 4
23866: # 22 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 3 4
23866: #define AUX778076_OP_PREFIX AUX778076_OP_NAME
23866:
23866:
23866: #define AUX778076_OP_ARITY 2
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 1 3 4
23866: # 22 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/apply_wrap.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 2 3 4
23866: # 28 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_PREPROCESSED_HEADER AUX778076_OP_PREFIX.hpp
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/less_equal.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/less_equal.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename Tag1
23866: , typename Tag2
23866: >
23866: struct less_equal_impl
23866: : if_c<
23866: ( Tag1::value
23866: > Tag2::value
23866: )
23866:
23866: , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
23866: , aux::cast1st_impl< less_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
23866: >::type
23866: {
23866: };
23866:
23866:
23866: template<> struct less_equal_impl< na,na >
23866: {
23866: template< typename U1, typename U2 > struct apply
23866: {
23866: typedef apply type;
23866: static const int value = 0;
23866: };
23866: };
23866:
23866: template< typename Tag > struct less_equal_impl< na,Tag >
23866: {
23866: template< typename U1, typename U2 > struct apply
23866: {
23866: typedef apply type;
23866: static const int value = 0;
23866: };
23866: };
23866:
23866: template< typename Tag > struct less_equal_impl< Tag,na >
23866: {
23866: template< typename U1, typename U2 > struct apply
23866: {
23866: typedef apply type;
23866: static const int value = 0;
23866: };
23866: };
23866:
23866: template< typename T > struct less_equal_tag
23866: {
23866: typedef typename T::tag type;
23866: };
23866:
23866: template<
23866: typename N1 = na
23866: , typename N2 = na
23866: >
23866: struct less_equal
23866:
23866: : less_equal_impl<
23866: typename less_equal_tag<N1>::type
23866: , typename less_equal_tag<N2>::type
23866: >::template apply< N1,N2 >::type
23866: {
23866:
23866:
23866: };
23866:
23866: template<> struct less_equal< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : less_equal< T1 , T2 > { }; }; template< typename Tag > struct lambda< less_equal< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef less_equal< na , na > result_; typedef less_equal< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< less_equal< T1 , T2 > > : int_<2> { }; template<> struct template_arity< less_equal< na , na > > : int_<-1> { }; }
23866:
23866: }}
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<>
23866: struct less_equal_impl< integral_c_tag,integral_c_tag >
23866: {
23866: template< typename N1, typename N2 > struct apply
23866:
23866: : bool_< ( N1::value <= N2::value ) >
23866: {
23866: };
23866: };
23866:
23866: }}
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 36 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 2 3 4
23866: # 78 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 3 4
23866: #undef AUX778076_OP_TAG_NAME
23866: #undef AUX778076_OP_IMPL_NAME
23866: #undef AUX778076_OP_ARITY
23866: #undef AUX778076_OP_PREFIX
23866: #undef AUX778076_OP_NAME
23866: #undef AUX778076_OP_TOKEN
23866: # 20 "/usr/include/boost/mpl/less_equal.hpp" 2 3 4
23866: # 22 "/usr/include/boost/mpl/comparison.hpp" 2 3 4
23866: # 1 "/usr/include/boost/mpl/greater_equal.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_GREATER_EQUAL_HPP_INCLUDED
23866: # 17 "/usr/include/boost/mpl/greater_equal.hpp" 3 4
23866: #define AUX778076_OP_NAME greater_equal
23866: #define AUX778076_OP_TOKEN >=
23866: # 1 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 1 3 4
23866: # 22 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 3 4
23866: #define AUX778076_OP_PREFIX AUX778076_OP_NAME
23866:
23866:
23866: #define AUX778076_OP_ARITY 2
23866:
23866: # 1 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 1 3 4
23866: # 22 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/apply_wrap.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/numeric_op.hpp" 2 3 4
23866: # 28 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MPL_PREPROCESSED_HEADER AUX778076_OP_PREFIX.hpp
23866: # 1 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 1 3 4
23866: # 23 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: #define AUX778076_PREPROCESSED_HEADER BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER
23866: # 37 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/preprocessed/gcc/greater_equal.hpp" 1 3 4
23866: # 12 "/usr/include/boost/mpl/aux_/preprocessed/gcc/greater_equal.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename Tag1
23866: , typename Tag2
23866: >
23866: struct greater_equal_impl
23866: : if_c<
23866: ( Tag1::value
23866: > Tag2::value
23866: )
23866:
23866: , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
23866: , aux::cast1st_impl< greater_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
23866: >::type
23866: {
23866: };
23866:
23866:
23866: template<> struct greater_equal_impl< na,na >
23866: {
23866: template< typename U1, typename U2 > struct apply
23866: {
23866: typedef apply type;
23866: static const int value = 0;
23866: };
23866: };
23866:
23866: template< typename Tag > struct greater_equal_impl< na,Tag >
23866: {
23866: template< typename U1, typename U2 > struct apply
23866: {
23866: typedef apply type;
23866: static const int value = 0;
23866: };
23866: };
23866:
23866: template< typename Tag > struct greater_equal_impl< Tag,na >
23866: {
23866: template< typename U1, typename U2 > struct apply
23866: {
23866: typedef apply type;
23866: static const int value = 0;
23866: };
23866: };
23866:
23866: template< typename T > struct greater_equal_tag
23866: {
23866: typedef typename T::tag type;
23866: };
23866:
23866: template<
23866: typename N1 = na
23866: , typename N2 = na
23866: >
23866: struct greater_equal
23866:
23866: : greater_equal_impl<
23866: typename greater_equal_tag<N1>::type
23866: , typename greater_equal_tag<N2>::type
23866: >::template apply< N1,N2 >::type
23866: {
23866:
23866:
23866: };
23866:
23866: template<> struct greater_equal< na , na > { template< typename T1 , typename T2 , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : greater_equal< T1 , T2 > { }; }; template< typename Tag > struct lambda< greater_equal< na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef greater_equal< na , na > result_; typedef greater_equal< na , na > type; }; namespace aux { template< typename T1 , typename T2 > struct template_arity< greater_equal< T1 , T2 > > : int_<2> { }; template<> struct template_arity< greater_equal< na , na > > : int_<-1> { }; }
23866:
23866: }}
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<>
23866: struct greater_equal_impl< integral_c_tag,integral_c_tag >
23866: {
23866: template< typename N1, typename N2 > struct apply
23866:
23866: : bool_< ( N1::value >= N2::value ) >
23866: {
23866: };
23866: };
23866:
23866: }}
23866: # 38 "/usr/include/boost/mpl/aux_/include_preprocessed.hpp" 2 3 4
23866:
23866:
23866: #undef AUX778076_PREPROCESSED_HEADER
23866:
23866: #undef BOOST_MPL_PREPROCESSED_HEADER
23866: # 36 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 2 3 4
23866: # 78 "/usr/include/boost/mpl/aux_/comparison_op.hpp" 3 4
23866: #undef AUX778076_OP_TAG_NAME
23866: #undef AUX778076_OP_IMPL_NAME
23866: #undef AUX778076_OP_ARITY
23866: #undef AUX778076_OP_PREFIX
23866: #undef AUX778076_OP_NAME
23866: #undef AUX778076_OP_TOKEN
23866: # 20 "/usr/include/boost/mpl/greater_equal.hpp" 2 3 4
23866: # 23 "/usr/include/boost/mpl/comparison.hpp" 2 3 4
23866: # 19 "/usr/include/boost/math/policies/policy.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/assert.hpp" 1 3 4
23866: # 32 "/usr/include/boost/assert.hpp" 3 4
23866: #undef BOOST_ASSERT
23866: #undef BOOST_ASSERT_MSG
23866: #undef BOOST_ASSERT_IS_VOID
23866: # 58 "/usr/include/boost/assert.hpp" 3 4
23866: # 1 "/usr/include/assert.h" 1 3 4
23866: # 24 "/usr/include/assert.h" 3 4
23866: #undef _ASSERT_H
23866: #undef assert
23866: #undef __ASSERT_VOID_CAST
23866:
23866:
23866: #undef assert_perror
23866:
23866:
23866:
23866:
23866: #define _ASSERT_H 1
23866:
23866:
23866:
23866: #define __ASSERT_VOID_CAST static_cast<void>
23866: # 92 "/usr/include/assert.h" 3 4
23866: #define assert(expr) (static_cast <bool> (expr) ? void (0) : __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 117 "/usr/include/assert.h" 3 4
23866: #define assert_perror(errnum) (!(errnum) ? __ASSERT_VOID_CAST (0) : __assert_perror_fail ((errnum), __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 129 "/usr/include/assert.h" 3 4
23866: #define __ASSERT_FUNCTION __extension__ __PRETTY_FUNCTION__
23866: # 59 "/usr/include/boost/assert.hpp" 2 3 4
23866:
23866: #define BOOST_ASSERT(expr) assert(expr)
23866: #define BOOST_ASSERT_MSG(expr,msg) assert((expr)&&(msg))
23866: # 72 "/usr/include/boost/assert.hpp" 3 4
23866: #undef BOOST_VERIFY
23866: #undef BOOST_VERIFY_MSG
23866: # 82 "/usr/include/boost/assert.hpp" 3 4
23866: #define BOOST_VERIFY(expr) BOOST_ASSERT(expr)
23866: #define BOOST_VERIFY_MSG(expr,msg) BOOST_ASSERT_MSG(expr,msg)
23866: # 22 "/usr/include/boost/math/policies/policy.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/limits.h" 1 3 4
23866: # 27 "/usr/include/boost/math/policies/policy.hpp" 2 3 4
23866: # 1 "/usr/include/c++/10/stdlib.h" 1 3 4
23866: # 34 "/usr/include/c++/10/stdlib.h" 3 4
23866: #define _GLIBCXX_STDLIB_H 1
23866:
23866: # 1 "/usr/include/c++/10/cstdlib" 1 3 4
23866: # 39 "/usr/include/c++/10/cstdlib" 3 4
23866:
23866: # 40 "/usr/include/c++/10/cstdlib" 3
23866: # 37 "/usr/include/c++/10/stdlib.h" 2 3 4
23866:
23866: using std::abort;
23866: using std::atexit;
23866: using std::exit;
23866:
23866:
23866: using std::at_quick_exit;
23866:
23866:
23866: using std::quick_exit;
23866:
23866:
23866:
23866:
23866: using std::div_t;
23866: using std::ldiv_t;
23866:
23866: using std::abs;
23866: using std::atof;
23866: using std::atoi;
23866: using std::atol;
23866: using std::bsearch;
23866: using std::calloc;
23866: using std::div;
23866: using std::free;
23866: using std::getenv;
23866: using std::labs;
23866: using std::ldiv;
23866: using std::malloc;
23866:
23866: using std::mblen;
23866: using std::mbstowcs;
23866: using std::mbtowc;
23866:
23866: using std::qsort;
23866: using std::rand;
23866: using std::realloc;
23866: using std::srand;
23866: using std::strtod;
23866: using std::strtol;
23866: using std::strtoul;
23866: using std::system;
23866:
23866: using std::wcstombs;
23866: using std::wctomb;
23866: # 28 "/usr/include/boost/math/policies/policy.hpp" 2 3 4
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 1 3 4
23866: # 29 "/usr/include/boost/math/policies/policy.hpp" 2 3 4
23866: # 1 "/usr/include/c++/10/math.h" 1 3 4
23866: # 34 "/usr/include/c++/10/math.h" 3 4
23866: #define _GLIBCXX_MATH_H 1
23866:
23866: # 1 "/usr/include/c++/10/cmath" 1 3 4
23866: # 39 "/usr/include/c++/10/cmath" 3 4
23866:
23866: # 40 "/usr/include/c++/10/cmath" 3
23866:
23866:
23866:
23866:
23866: #define _GLIBCXX_INCLUDE_NEXT_C_HEADERS
23866:
23866: #undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS
23866: # 37 "/usr/include/c++/10/math.h" 2 3 4
23866:
23866: using std::abs;
23866: using std::acos;
23866: using std::asin;
23866: using std::atan;
23866: using std::atan2;
23866: using std::cos;
23866: using std::sin;
23866: using std::tan;
23866: using std::cosh;
23866: using std::sinh;
23866: using std::tanh;
23866: using std::exp;
23866: using std::frexp;
23866: using std::ldexp;
23866: using std::log;
23866: using std::log10;
23866: using std::modf;
23866: using std::pow;
23866: using std::sqrt;
23866: using std::ceil;
23866: using std::fabs;
23866: using std::floor;
23866: using std::fmod;
23866:
23866:
23866: using std::fpclassify;
23866: using std::isfinite;
23866: using std::isinf;
23866: using std::isnan;
23866: using std::isnormal;
23866: using std::signbit;
23866: using std::isgreater;
23866: using std::isgreaterequal;
23866: using std::isless;
23866: using std::islessequal;
23866: using std::islessgreater;
23866: using std::isunordered;
23866:
23866:
23866:
23866: using std::acosh;
23866: using std::asinh;
23866: using std::atanh;
23866: using std::cbrt;
23866: using std::copysign;
23866: using std::erf;
23866: using std::erfc;
23866: using std::exp2;
23866: using std::expm1;
23866: using std::fdim;
23866: using std::fma;
23866: using std::fmax;
23866: using std::fmin;
23866: using std::hypot;
23866: using std::ilogb;
23866: using std::lgamma;
23866: using std::llrint;
23866: using std::llround;
23866: using std::log1p;
23866: using std::log2;
23866: using std::logb;
23866: using std::lrint;
23866: using std::lround;
23866: using std::nearbyint;
23866: using std::nextafter;
23866: using std::nexttoward;
23866: using std::remainder;
23866: using std::remquo;
23866: using std::rint;
23866: using std::round;
23866: using std::scalbln;
23866: using std::scalbn;
23866: using std::tgamma;
23866: using std::trunc;
23866: # 30 "/usr/include/boost/math/policies/policy.hpp" 2 3 4
23866:
23866: namespace boost{ namespace math{
23866:
23866: namespace tools{
23866:
23866: template <class T>
23866: constexpr int digits() noexcept;
23866: template <class T>
23866: constexpr T epsilon() noexcept(std::is_floating_point<T>::value);
23866:
23866: }
23866:
23866: namespace policies{
23866: # 70 "/usr/include/boost/math/policies/policy.hpp" 3 4
23866: #define BOOST_MATH_DOMAIN_ERROR_POLICY throw_on_error
23866:
23866:
23866: #define BOOST_MATH_POLE_ERROR_POLICY throw_on_error
23866:
23866:
23866: #define BOOST_MATH_OVERFLOW_ERROR_POLICY throw_on_error
23866:
23866:
23866: #define BOOST_MATH_EVALUATION_ERROR_POLICY throw_on_error
23866:
23866:
23866: #define BOOST_MATH_ROUNDING_ERROR_POLICY throw_on_error
23866:
23866:
23866: #define BOOST_MATH_UNDERFLOW_ERROR_POLICY ignore_error
23866:
23866:
23866: #define BOOST_MATH_DENORM_ERROR_POLICY ignore_error
23866:
23866:
23866: #define BOOST_MATH_INDETERMINATE_RESULT_ERROR_POLICY ignore_error
23866:
23866:
23866: #define BOOST_MATH_DIGITS10_POLICY 0
23866:
23866:
23866: #define BOOST_MATH_PROMOTE_FLOAT_POLICY true
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MATH_PROMOTE_DOUBLE_POLICY true
23866:
23866:
23866:
23866: #define BOOST_MATH_DISCRETE_QUANTILE_POLICY integer_round_outwards
23866:
23866:
23866: #define BOOST_MATH_ASSERT_UNDEFINED_POLICY true
23866:
23866:
23866: #define BOOST_MATH_MAX_SERIES_ITERATION_POLICY 1000000
23866:
23866:
23866: #define BOOST_MATH_MAX_ROOT_ITERATION_POLICY 200
23866:
23866:
23866:
23866: #define BOOST_MATH_META_INT(type,name,Default) template <type N = Default> struct name : public boost::integral_constant<int, N>{}; namespace detail{ template <type N> char test_is_valid_arg(const name<N>*); char test_is_default_arg(const name<Default>*); template <class T> struct is_ ##name ##_imp { template <type N> static char test(const name<N>*); static double test(...); BOOST_STATIC_CONSTANT(bool, value = sizeof(test(static_cast<T*>(0))) == 1); }; } template <class T> struct is_ ##name : public boost::integral_constant<bool, ::boost::math::policies::detail::is_ ##name ##_imp<T>::value>{};
23866: # 135 "/usr/include/boost/math/policies/policy.hpp" 3 4
23866: #define BOOST_MATH_META_BOOL(name,Default) template <bool N = Default> struct name : public boost::integral_constant<bool, N>{}; namespace detail{ template <bool N> char test_is_valid_arg(const name<N>*); char test_is_default_arg(const name<Default>*); template <class T> struct is_ ##name ##_imp { template <bool N> static char test(const name<N>*); static double test(...); BOOST_STATIC_CONSTANT(bool, value = sizeof(test(static_cast<T*>(0))) == 1); }; } template <class T> struct is_ ##name : public boost::integral_constant<bool, ::boost::math::policies::detail::is_ ##name ##_imp<T>::value>{};
23866: # 197 "/usr/include/boost/math/policies/policy.hpp" 3 4
23866: enum error_policy_type
23866: {
23866: throw_on_error = 0,
23866: errno_on_error = 1,
23866: ignore_error = 2,
23866: user_error = 3
23866: };
23866:
23866: template <error_policy_type N = throw_on_error> struct domain_error : public boost::integral_constant<int, N>{}; namespace detail{ template <error_policy_type N> char test_is_valid_arg(const domain_error<N>*); char test_is_default_arg(const domain_error<throw_on_error>*); template <class T> struct is_domain_error_imp { template <error_policy_type N> static char test(const domain_error<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_domain_error : public boost::integral_constant<bool, ::boost::math::policies::detail::is_domain_error_imp<T>::value>{};
23866: template <error_policy_type N = throw_on_error> struct pole_error : public boost::integral_constant<int, N>{}; namespace detail{ template <error_policy_type N> char test_is_valid_arg(const pole_error<N>*); char test_is_default_arg(const pole_error<throw_on_error>*); template <class T> struct is_pole_error_imp { template <error_policy_type N> static char test(const pole_error<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_pole_error : public boost::integral_constant<bool, ::boost::math::policies::detail::is_pole_error_imp<T>::value>{};
23866: template <error_policy_type N = throw_on_error> struct overflow_error : public boost::integral_constant<int, N>{}; namespace detail{ template <error_policy_type N> char test_is_valid_arg(const overflow_error<N>*); char test_is_default_arg(const overflow_error<throw_on_error>*); template <class T> struct is_overflow_error_imp { template <error_policy_type N> static char test(const overflow_error<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_overflow_error : public boost::integral_constant<bool, ::boost::math::policies::detail::is_overflow_error_imp<T>::value>{};
23866: template <error_policy_type N = ignore_error> struct underflow_error : public boost::integral_constant<int, N>{}; namespace detail{ template <error_policy_type N> char test_is_valid_arg(const underflow_error<N>*); char test_is_default_arg(const underflow_error<ignore_error>*); template <class T> struct is_underflow_error_imp { template <error_policy_type N> static char test(const underflow_error<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_underflow_error : public boost::integral_constant<bool, ::boost::math::policies::detail::is_underflow_error_imp<T>::value>{};
23866: template <error_policy_type N = ignore_error> struct denorm_error : public boost::integral_constant<int, N>{}; namespace detail{ template <error_policy_type N> char test_is_valid_arg(const denorm_error<N>*); char test_is_default_arg(const denorm_error<ignore_error>*); template <class T> struct is_denorm_error_imp { template <error_policy_type N> static char test(const denorm_error<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_denorm_error : public boost::integral_constant<bool, ::boost::math::policies::detail::is_denorm_error_imp<T>::value>{};
23866: template <error_policy_type N = throw_on_error> struct evaluation_error : public boost::integral_constant<int, N>{}; namespace detail{ template <error_policy_type N> char test_is_valid_arg(const evaluation_error<N>*); char test_is_default_arg(const evaluation_error<throw_on_error>*); template <class T> struct is_evaluation_error_imp { template <error_policy_type N> static char test(const evaluation_error<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_evaluation_error : public boost::integral_constant<bool, ::boost::math::policies::detail::is_evaluation_error_imp<T>::value>{};
23866: template <error_policy_type N = throw_on_error> struct rounding_error : public boost::integral_constant<int, N>{}; namespace detail{ template <error_policy_type N> char test_is_valid_arg(const rounding_error<N>*); char test_is_default_arg(const rounding_error<throw_on_error>*); template <class T> struct is_rounding_error_imp { template <error_policy_type N> static char test(const rounding_error<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_rounding_error : public boost::integral_constant<bool, ::boost::math::policies::detail::is_rounding_error_imp<T>::value>{};
23866: template <error_policy_type N = ignore_error> struct indeterminate_result_error : public boost::integral_constant<int, N>{}; namespace detail{ template <error_policy_type N> char test_is_valid_arg(const indeterminate_result_error<N>*); char test_is_default_arg(const indeterminate_result_error<ignore_error>*); template <class T> struct is_indeterminate_result_error_imp { template <error_policy_type N> static char test(const indeterminate_result_error<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_indeterminate_result_error : public boost::integral_constant<bool, ::boost::math::policies::detail::is_indeterminate_result_error_imp<T>::value>{};
23866:
23866:
23866:
23866:
23866: template <bool N = true> struct promote_float : public boost::integral_constant<bool, N>{}; namespace detail{ template <bool N> char test_is_valid_arg(const promote_float<N>*); char test_is_default_arg(const promote_float<true>*); template <class T> struct is_promote_float_imp { template <bool N> static char test(const promote_float<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_promote_float : public boost::integral_constant<bool, ::boost::math::policies::detail::is_promote_float_imp<T>::value>{};
23866: template <bool N = true> struct promote_double : public boost::integral_constant<bool, N>{}; namespace detail{ template <bool N> char test_is_valid_arg(const promote_double<N>*); char test_is_default_arg(const promote_double<true>*); template <class T> struct is_promote_double_imp { template <bool N> static char test(const promote_double<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_promote_double : public boost::integral_constant<bool, ::boost::math::policies::detail::is_promote_double_imp<T>::value>{};
23866: template <bool N = true> struct assert_undefined : public boost::integral_constant<bool, N>{}; namespace detail{ template <bool N> char test_is_valid_arg(const assert_undefined<N>*); char test_is_default_arg(const assert_undefined<true>*); template <class T> struct is_assert_undefined_imp { template <bool N> static char test(const assert_undefined<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_assert_undefined : public boost::integral_constant<bool, ::boost::math::policies::detail::is_assert_undefined_imp<T>::value>{};
23866:
23866:
23866:
23866: enum discrete_quantile_policy_type
23866: {
23866: real,
23866: integer_round_outwards,
23866: integer_round_inwards,
23866: integer_round_down,
23866: integer_round_up,
23866: integer_round_nearest
23866: };
23866:
23866: template <discrete_quantile_policy_type N = integer_round_outwards> struct discrete_quantile : public boost::integral_constant<int, N>{}; namespace detail{ template <discrete_quantile_policy_type N> char test_is_valid_arg(const discrete_quantile<N>*); char test_is_default_arg(const discrete_quantile<integer_round_outwards>*); template <class T> struct is_discrete_quantile_imp { template <discrete_quantile_policy_type N> static char test(const discrete_quantile<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_discrete_quantile : public boost::integral_constant<bool, ::boost::math::policies::detail::is_discrete_quantile_imp<T>::value>{};
23866:
23866:
23866:
23866: template <int N = 0> struct digits10 : public boost::integral_constant<int, N>{}; namespace detail{ template <int N> char test_is_valid_arg(const digits10<N>*); char test_is_default_arg(const digits10<0>*); template <class T> struct is_digits10_imp { template <int N> static char test(const digits10<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_digits10 : public boost::integral_constant<bool, ::boost::math::policies::detail::is_digits10_imp<T>::value>{};
23866: template <int N = 0> struct digits2 : public boost::integral_constant<int, N>{}; namespace detail{ template <int N> char test_is_valid_arg(const digits2<N>*); char test_is_default_arg(const digits2<0>*); template <class T> struct is_digits2_imp { template <int N> static char test(const digits2<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_digits2 : public boost::integral_constant<bool, ::boost::math::policies::detail::is_digits2_imp<T>::value>{};
23866:
23866:
23866:
23866: template <unsigned long N = 1000000> struct max_series_iterations : public boost::integral_constant<int, N>{}; namespace detail{ template <unsigned long N> char test_is_valid_arg(const max_series_iterations<N>*); char test_is_default_arg(const max_series_iterations<1000000>*); template <class T> struct is_max_series_iterations_imp { template <unsigned long N> static char test(const max_series_iterations<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_max_series_iterations : public boost::integral_constant<bool, ::boost::math::policies::detail::is_max_series_iterations_imp<T>::value>{};
23866: template <unsigned long N = 200> struct max_root_iterations : public boost::integral_constant<int, N>{}; namespace detail{ template <unsigned long N> char test_is_valid_arg(const max_root_iterations<N>*); char test_is_default_arg(const max_root_iterations<200>*); template <class T> struct is_max_root_iterations_imp { template <unsigned long N> static char test(const max_root_iterations<N>*); static double test(...); static const bool value = sizeof(test(static_cast<T*>(0))) == 1; }; } template <class T> struct is_max_root_iterations : public boost::integral_constant<bool, ::boost::math::policies::detail::is_max_root_iterations_imp<T>::value>{};
23866:
23866:
23866:
23866: #define BOOST_MATH_PARAMETER(name) BOOST_PARAMETER_TEMPLATE_KEYWORD(name ##_name) BOOST_PARAMETER_NAME(name ##_name)
23866:
23866:
23866:
23866: struct default_policy{};
23866:
23866: namespace detail{
23866:
23866:
23866:
23866: template <class Digits10, class Digits2>
23866: struct precision
23866: {
23866:
23866:
23866:
23866: typedef typename mpl::if_c<
23866: (Digits10::value == 0),
23866: digits2<0>,
23866: digits2<((Digits10::value + 1) * 1000L) / 301L>
23866: >::type digits2_type;
23866: public:
23866:
23866:
23866:
23866:
23866:
23866: typedef typename mpl::if_c<
23866: (Digits2::value > digits2_type::value),
23866: Digits2, digits2_type>::type type;
23866:
23866: };
23866:
23866: template <class A, class B, bool b>
23866: struct select_result
23866: {
23866: typedef A type;
23866: };
23866: template <class A, class B>
23866: struct select_result<A, B, false>
23866: {
23866: typedef typename mpl::deref<B>::type type;
23866: };
23866:
23866: template <class Seq, class Pred, class DefaultType>
23866: struct find_arg
23866: {
23866: private:
23866: typedef typename mpl::find_if<Seq, Pred>::type iter;
23866: typedef typename mpl::end<Seq>::type end_type;
23866: public:
23866: typedef typename select_result<
23866: DefaultType, iter,
23866: ::boost::is_same<iter, end_type>::value>::type type;
23866: };
23866:
23866: double test_is_valid_arg(...);
23866: double test_is_default_arg(...);
23866: char test_is_valid_arg(const default_policy*);
23866: char test_is_default_arg(const default_policy*);
23866:
23866: template <class T>
23866: struct is_valid_policy_imp
23866: {
23866: static const bool value = sizeof(::boost::math::policies::detail::test_is_valid_arg(static_cast<T*>(0))) == 1;
23866: };
23866:
23866: template <class T>
23866: struct is_default_policy_imp
23866: {
23866: static const bool value = sizeof(::boost::math::policies::detail::test_is_default_arg(static_cast<T*>(0))) == 1;
23866: };
23866:
23866: template <class T> struct is_valid_policy
23866: : public boost::integral_constant<bool, ::boost::math::policies::detail::is_valid_policy_imp<T>::value>
23866: {};
23866:
23866: template <class T> struct is_default_policy
23866: : public boost::integral_constant<bool, ::boost::math::policies::detail::is_default_policy_imp<T>::value>
23866: {
23866: template <class U>
23866: struct apply
23866: {
23866: typedef is_default_policy<U> type;
23866: };
23866: };
23866:
23866: template <class Seq, class T, int N>
23866: struct append_N
23866: {
23866: typedef typename mpl::push_back<Seq, T>::type new_seq;
23866: typedef typename append_N<new_seq, T, N-1>::type type;
23866: };
23866:
23866: template <class Seq, class T>
23866: struct append_N<Seq, T, 0>
23866: {
23866: typedef Seq type;
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template <bool f, bool d>
23866: struct default_args
23866: {
23866: typedef promote_float<false> arg1;
23866: typedef promote_double<false> arg2;
23866: };
23866:
23866: template <>
23866: struct default_args<false, false>
23866: {
23866: typedef default_policy arg1;
23866: typedef default_policy arg2;
23866: };
23866:
23866: template <>
23866: struct default_args<true, false>
23866: {
23866: typedef promote_float<false> arg1;
23866: typedef default_policy arg2;
23866: };
23866:
23866: template <>
23866: struct default_args<false, true>
23866: {
23866: typedef promote_double<false> arg1;
23866: typedef default_policy arg2;
23866: };
23866:
23866: typedef default_args<true, true>::arg1 forwarding_arg1;
23866: typedef default_args<true, true>::arg2 forwarding_arg2;
23866:
23866: }
23866:
23866:
23866:
23866:
23866: template <class A1 = default_policy,
23866: class A2 = default_policy,
23866: class A3 = default_policy,
23866: class A4 = default_policy,
23866: class A5 = default_policy,
23866: class A6 = default_policy,
23866: class A7 = default_policy,
23866: class A8 = default_policy,
23866: class A9 = default_policy,
23866: class A10 = default_policy,
23866: class A11 = default_policy,
23866: class A12 = default_policy,
23866: class A13 = default_policy>
23866: struct policy
23866: {
23866: private:
23866:
23866:
23866:
23866: static_assert(::boost::math::policies::detail::is_valid_policy<A1>::value, "::boost::math::policies::detail::is_valid_policy<A1>::value");
23866: static_assert(::boost::math::policies::detail::is_valid_policy<A2>::value, "::boost::math::policies::detail::is_valid_policy<A2>::value");
23866: static_assert(::boost::math::policies::detail::is_valid_policy<A3>::value, "::boost::math::policies::detail::is_valid_policy<A3>::value");
23866: static_assert(::boost::math::policies::detail::is_valid_policy<A4>::value, "::boost::math::policies::detail::is_valid_policy<A4>::value");
23866: static_assert(::boost::math::policies::detail::is_valid_policy<A5>::value, "::boost::math::policies::detail::is_valid_policy<A5>::value");
23866: static_assert(::boost::math::policies::detail::is_valid_policy<A6>::value, "::boost::math::policies::detail::is_valid_policy<A6>::value");
23866: static_assert(::boost::math::policies::detail::is_valid_policy<A7>::value, "::boost::math::policies::detail::is_valid_policy<A7>::value");
23866: static_assert(::boost::math::policies::detail::is_valid_policy<A8>::value, "::boost::math::policies::detail::is_valid_policy<A8>::value");
23866: static_assert(::boost::math::policies::detail::is_valid_policy<A9>::value, "::boost::math::policies::detail::is_valid_policy<A9>::value");
23866: static_assert(::boost::math::policies::detail::is_valid_policy<A10>::value, "::boost::math::policies::detail::is_valid_policy<A10>::value");
23866: static_assert(::boost::math::policies::detail::is_valid_policy<A11>::value, "::boost::math::policies::detail::is_valid_policy<A11>::value");
23866: static_assert(::boost::math::policies::detail::is_valid_policy<A12>::value, "::boost::math::policies::detail::is_valid_policy<A12>::value");
23866: static_assert(::boost::math::policies::detail::is_valid_policy<A13>::value, "::boost::math::policies::detail::is_valid_policy<A13>::value");
23866:
23866:
23866:
23866: typedef mpl::list<A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13> arg_list;
23866:
23866: public:
23866: typedef typename detail::find_arg<arg_list, is_domain_error<mpl::_1>, domain_error<> >::type domain_error_type;
23866: typedef typename detail::find_arg<arg_list, is_pole_error<mpl::_1>, pole_error<> >::type pole_error_type;
23866: typedef typename detail::find_arg<arg_list, is_overflow_error<mpl::_1>, overflow_error<> >::type overflow_error_type;
23866: typedef typename detail::find_arg<arg_list, is_underflow_error<mpl::_1>, underflow_error<> >::type underflow_error_type;
23866: typedef typename detail::find_arg<arg_list, is_denorm_error<mpl::_1>, denorm_error<> >::type denorm_error_type;
23866: typedef typename detail::find_arg<arg_list, is_evaluation_error<mpl::_1>, evaluation_error<> >::type evaluation_error_type;
23866: typedef typename detail::find_arg<arg_list, is_rounding_error<mpl::_1>, rounding_error<> >::type rounding_error_type;
23866: typedef typename detail::find_arg<arg_list, is_indeterminate_result_error<mpl::_1>, indeterminate_result_error<> >::type indeterminate_result_error_type;
23866: private:
23866:
23866:
23866:
23866: typedef typename detail::find_arg<arg_list, is_digits10<mpl::_1>, digits10<> >::type digits10_type;
23866: typedef typename detail::find_arg<arg_list, is_digits2<mpl::_1>, digits2<> >::type bits_precision_type;
23866: public:
23866: typedef typename detail::precision<digits10_type, bits_precision_type>::type precision_type;
23866:
23866:
23866:
23866: typedef typename detail::find_arg<arg_list, is_promote_float<mpl::_1>, promote_float<> >::type promote_float_type;
23866: typedef typename detail::find_arg<arg_list, is_promote_double<mpl::_1>, promote_double<> >::type promote_double_type;
23866:
23866:
23866:
23866: typedef typename detail::find_arg<arg_list, is_discrete_quantile<mpl::_1>, discrete_quantile<> >::type discrete_quantile_type;
23866:
23866:
23866:
23866: typedef typename detail::find_arg<arg_list, is_assert_undefined<mpl::_1>, assert_undefined<> >::type assert_undefined_type;
23866:
23866:
23866:
23866: typedef typename detail::find_arg<arg_list, is_max_series_iterations<mpl::_1>, max_series_iterations<> >::type max_series_iterations_type;
23866: typedef typename detail::find_arg<arg_list, is_max_root_iterations<mpl::_1>, max_root_iterations<> >::type max_root_iterations_type;
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template <>
23866: struct policy<default_policy, default_policy, default_policy, default_policy, default_policy, default_policy, default_policy, default_policy, default_policy, default_policy, default_policy>
23866: {
23866: public:
23866: typedef domain_error<> domain_error_type;
23866: typedef pole_error<> pole_error_type;
23866: typedef overflow_error<> overflow_error_type;
23866: typedef underflow_error<> underflow_error_type;
23866: typedef denorm_error<> denorm_error_type;
23866: typedef evaluation_error<> evaluation_error_type;
23866: typedef rounding_error<> rounding_error_type;
23866: typedef indeterminate_result_error<> indeterminate_result_error_type;
23866:
23866: typedef digits2<> precision_type;
23866:
23866:
23866:
23866: typedef promote_float<> promote_float_type;
23866: typedef promote_double<> promote_double_type;
23866: typedef discrete_quantile<> discrete_quantile_type;
23866: typedef assert_undefined<> assert_undefined_type;
23866: typedef max_series_iterations<> max_series_iterations_type;
23866: typedef max_root_iterations<> max_root_iterations_type;
23866: };
23866:
23866: template <>
23866: struct policy<detail::forwarding_arg1, detail::forwarding_arg2, default_policy, default_policy, default_policy, default_policy, default_policy, default_policy, default_policy, default_policy, default_policy>
23866: {
23866: public:
23866: typedef domain_error<> domain_error_type;
23866: typedef pole_error<> pole_error_type;
23866: typedef overflow_error<> overflow_error_type;
23866: typedef underflow_error<> underflow_error_type;
23866: typedef denorm_error<> denorm_error_type;
23866: typedef evaluation_error<> evaluation_error_type;
23866: typedef rounding_error<> rounding_error_type;
23866: typedef indeterminate_result_error<> indeterminate_result_error_type;
23866:
23866: typedef digits2<> precision_type;
23866:
23866:
23866:
23866: typedef promote_float<false> promote_float_type;
23866: typedef promote_double<false> promote_double_type;
23866: typedef discrete_quantile<> discrete_quantile_type;
23866: typedef assert_undefined<> assert_undefined_type;
23866: typedef max_series_iterations<> max_series_iterations_type;
23866: typedef max_root_iterations<> max_root_iterations_type;
23866: };
23866:
23866: template <class Policy,
23866: class A1 = default_policy,
23866: class A2 = default_policy,
23866: class A3 = default_policy,
23866: class A4 = default_policy,
23866: class A5 = default_policy,
23866: class A6 = default_policy,
23866: class A7 = default_policy,
23866: class A8 = default_policy,
23866: class A9 = default_policy,
23866: class A10 = default_policy,
23866: class A11 = default_policy,
23866: class A12 = default_policy,
23866: class A13 = default_policy>
23866: struct normalise
23866: {
23866: private:
23866: typedef mpl::list<A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13> arg_list;
23866: typedef typename detail::find_arg<arg_list, is_domain_error<mpl::_1>, typename Policy::domain_error_type >::type domain_error_type;
23866: typedef typename detail::find_arg<arg_list, is_pole_error<mpl::_1>, typename Policy::pole_error_type >::type pole_error_type;
23866: typedef typename detail::find_arg<arg_list, is_overflow_error<mpl::_1>, typename Policy::overflow_error_type >::type overflow_error_type;
23866: typedef typename detail::find_arg<arg_list, is_underflow_error<mpl::_1>, typename Policy::underflow_error_type >::type underflow_error_type;
23866: typedef typename detail::find_arg<arg_list, is_denorm_error<mpl::_1>, typename Policy::denorm_error_type >::type denorm_error_type;
23866: typedef typename detail::find_arg<arg_list, is_evaluation_error<mpl::_1>, typename Policy::evaluation_error_type >::type evaluation_error_type;
23866: typedef typename detail::find_arg<arg_list, is_rounding_error<mpl::_1>, typename Policy::rounding_error_type >::type rounding_error_type;
23866: typedef typename detail::find_arg<arg_list, is_indeterminate_result_error<mpl::_1>, typename Policy::indeterminate_result_error_type >::type indeterminate_result_error_type;
23866:
23866:
23866:
23866: typedef typename detail::find_arg<arg_list, is_digits10<mpl::_1>, digits10<> >::type digits10_type;
23866: typedef typename detail::find_arg<arg_list, is_digits2<mpl::_1>, typename Policy::precision_type >::type bits_precision_type;
23866: typedef typename detail::precision<digits10_type, bits_precision_type>::type precision_type;
23866:
23866:
23866:
23866: typedef typename detail::find_arg<arg_list, is_promote_float<mpl::_1>, typename Policy::promote_float_type >::type promote_float_type;
23866: typedef typename detail::find_arg<arg_list, is_promote_double<mpl::_1>, typename Policy::promote_double_type >::type promote_double_type;
23866:
23866:
23866:
23866: typedef typename detail::find_arg<arg_list, is_discrete_quantile<mpl::_1>, typename Policy::discrete_quantile_type >::type discrete_quantile_type;
23866:
23866:
23866:
23866: typedef typename detail::find_arg<arg_list, is_assert_undefined<mpl::_1>, typename Policy::assert_undefined_type >::type assert_undefined_type;
23866:
23866:
23866:
23866: typedef typename detail::find_arg<arg_list, is_max_series_iterations<mpl::_1>, typename Policy::max_series_iterations_type>::type max_series_iterations_type;
23866: typedef typename detail::find_arg<arg_list, is_max_root_iterations<mpl::_1>, typename Policy::max_root_iterations_type>::type max_root_iterations_type;
23866:
23866:
23866:
23866: typedef mpl::vector<
23866: domain_error_type,
23866: pole_error_type,
23866: overflow_error_type,
23866: underflow_error_type,
23866: denorm_error_type,
23866: evaluation_error_type,
23866: rounding_error_type,
23866: indeterminate_result_error_type,
23866: precision_type,
23866: promote_float_type,
23866: promote_double_type,
23866: discrete_quantile_type,
23866: assert_undefined_type,
23866: max_series_iterations_type,
23866: max_root_iterations_type> result_list;
23866:
23866:
23866:
23866: typedef typename mpl::remove_if<result_list, detail::is_default_policy<mpl::_> >::type reduced_list;
23866:
23866:
23866:
23866: typedef typename detail::append_N<reduced_list, default_policy, (14 - ::boost::mpl::size<reduced_list>::value)>::type result_type;
23866: public:
23866: typedef policy<
23866: typename mpl::at<result_type, boost::integral_constant<int, 0> >::type,
23866: typename mpl::at<result_type, boost::integral_constant<int, 1> >::type,
23866: typename mpl::at<result_type, boost::integral_constant<int, 2> >::type,
23866: typename mpl::at<result_type, boost::integral_constant<int, 3> >::type,
23866: typename mpl::at<result_type, boost::integral_constant<int, 4> >::type,
23866: typename mpl::at<result_type, boost::integral_constant<int, 5> >::type,
23866: typename mpl::at<result_type, boost::integral_constant<int, 6> >::type,
23866: typename mpl::at<result_type, boost::integral_constant<int, 7> >::type,
23866: typename mpl::at<result_type, boost::integral_constant<int, 8> >::type,
23866: typename mpl::at<result_type, boost::integral_constant<int, 9> >::type,
23866: typename mpl::at<result_type, boost::integral_constant<int, 10> >::type,
23866: typename mpl::at<result_type, boost::integral_constant<int, 11> >::type,
23866: typename mpl::at<result_type, boost::integral_constant<int, 12> >::type > type;
23866: };
23866:
23866:
23866:
23866: template <>
23866: struct normalise<policy<>,
23866: promote_float<false>,
23866: promote_double<false>,
23866: discrete_quantile<>,
23866: assert_undefined<>,
23866: default_policy,
23866: default_policy,
23866: default_policy,
23866: default_policy,
23866: default_policy,
23866: default_policy,
23866: default_policy>
23866: {
23866: typedef policy<detail::forwarding_arg1, detail::forwarding_arg2> type;
23866: };
23866:
23866: template <>
23866: struct normalise<policy<detail::forwarding_arg1, detail::forwarding_arg2>,
23866: promote_float<false>,
23866: promote_double<false>,
23866: discrete_quantile<>,
23866: assert_undefined<>,
23866: default_policy,
23866: default_policy,
23866: default_policy,
23866: default_policy,
23866: default_policy,
23866: default_policy,
23866: default_policy>
23866: {
23866: typedef policy<detail::forwarding_arg1, detail::forwarding_arg2> type;
23866: };
23866:
23866: inline constexpr policy<> make_policy() noexcept
23866: { return policy<>(); }
23866:
23866: template <class A1>
23866: inline constexpr typename normalise<policy<>, A1>::type make_policy(const A1&) noexcept
23866: {
23866: typedef typename normalise<policy<>, A1>::type result_type;
23866: return result_type();
23866: }
23866:
23866: template <class A1, class A2>
23866: inline constexpr typename normalise<policy<>, A1, A2>::type make_policy(const A1&, const A2&) noexcept
23866: {
23866: typedef typename normalise<policy<>, A1, A2>::type result_type;
23866: return result_type();
23866: }
23866:
23866: template <class A1, class A2, class A3>
23866: inline constexpr typename normalise<policy<>, A1, A2, A3>::type make_policy(const A1&, const A2&, const A3&) noexcept
23866: {
23866: typedef typename normalise<policy<>, A1, A2, A3>::type result_type;
23866: return result_type();
23866: }
23866:
23866: template <class A1, class A2, class A3, class A4>
23866: inline constexpr typename normalise<policy<>, A1, A2, A3, A4>::type make_policy(const A1&, const A2&, const A3&, const A4&) noexcept
23866: {
23866: typedef typename normalise<policy<>, A1, A2, A3, A4>::type result_type;
23866: return result_type();
23866: }
23866:
23866: template <class A1, class A2, class A3, class A4, class A5>
23866: inline constexpr typename normalise<policy<>, A1, A2, A3, A4, A5>::type make_policy(const A1&, const A2&, const A3&, const A4&, const A5&) noexcept
23866: {
23866: typedef typename normalise<policy<>, A1, A2, A3, A4, A5>::type result_type;
23866: return result_type();
23866: }
23866:
23866: template <class A1, class A2, class A3, class A4, class A5, class A6>
23866: inline constexpr typename normalise<policy<>, A1, A2, A3, A4, A5, A6>::type make_policy(const A1&, const A2&, const A3&, const A4&, const A5&, const A6&) noexcept
23866: {
23866: typedef typename normalise<policy<>, A1, A2, A3, A4, A5, A6>::type result_type;
23866: return result_type();
23866: }
23866:
23866: template <class A1, class A2, class A3, class A4, class A5, class A6, class A7>
23866: inline constexpr typename normalise<policy<>, A1, A2, A3, A4, A5, A6, A7>::type make_policy(const A1&, const A2&, const A3&, const A4&, const A5&, const A6&, const A7&) noexcept
23866: {
23866: typedef typename normalise<policy<>, A1, A2, A3, A4, A5, A6, A7>::type result_type;
23866: return result_type();
23866: }
23866:
23866: template <class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
23866: inline constexpr typename normalise<policy<>, 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&) noexcept
23866: {
23866: typedef typename normalise<policy<>, A1, A2, A3, A4, A5, A6, A7, A8>::type result_type;
23866: return result_type();
23866: }
23866:
23866: template <class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
23866: inline constexpr typename normalise<policy<>, 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&) noexcept
23866: {
23866: typedef typename normalise<policy<>, A1, A2, A3, A4, A5, A6, A7, A8, A9>::type result_type;
23866: return result_type();
23866: }
23866:
23866: template <class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10>
23866: inline constexpr typename normalise<policy<>, 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&) noexcept
23866: {
23866: typedef typename normalise<policy<>, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>::type result_type;
23866: return result_type();
23866: }
23866:
23866: template <class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11>
23866: inline constexpr typename normalise<policy<>, 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&) noexcept
23866: {
23866: typedef typename normalise<policy<>, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::type result_type;
23866: return result_type();
23866: }
23866:
23866:
23866:
23866:
23866: template <class Real, class Policy>
23866: struct evaluation
23866: {
23866: typedef Real type;
23866: };
23866:
23866: template <class Policy>
23866: struct evaluation<float, Policy>
23866: {
23866: typedef typename mpl::if_<typename Policy::promote_float_type, double, float>::type type;
23866: };
23866:
23866: template <class Policy>
23866: struct evaluation<double, Policy>
23866: {
23866: typedef typename mpl::if_<typename Policy::promote_double_type, long double, double>::type type;
23866: };
23866: # 795 "/usr/include/boost/math/policies/policy.hpp" 3 4
23866: template <class Real, class Policy>
23866: struct precision
23866: {
23866: static_assert((::std::numeric_limits<Real>::radix == 2) || ((::std::numeric_limits<Real>::is_specialized == 0) || (::std::numeric_limits<Real>::digits == 0)), "(::std::numeric_limits<Real>::radix == 2) || ((::std::numeric_limits<Real>::is_specialized == 0) || (::std::numeric_limits<Real>::digits == 0))");
23866:
23866: typedef typename Policy::precision_type precision_type;
23866: typedef typename mpl::if_c<
23866: ((::std::numeric_limits<Real>::is_specialized == 0) || (::std::numeric_limits<Real>::digits == 0)),
23866:
23866: precision_type,
23866: typename mpl::if_c<
23866: ((::std::numeric_limits<Real>::digits <= precision_type::value)
23866: || (Policy::precision_type::value <= 0)),
23866:
23866: digits2< ::std::numeric_limits<Real>::digits>,
23866:
23866: precision_type
23866: >::type
23866: >::type type;
23866: # 831 "/usr/include/boost/math/policies/policy.hpp" 3 4
23866: };
23866: # 845 "/usr/include/boost/math/policies/policy.hpp" 3 4
23866: namespace detail{
23866:
23866: template <class T, class Policy>
23866: inline constexpr int digits_imp(boost::true_type const&) noexcept
23866: {
23866:
23866: static_assert(::std::numeric_limits<T>::is_specialized, "::std::numeric_limits<T>::is_specialized");
23866:
23866:
23866:
23866: typedef typename boost::math::policies::precision<T, Policy>::type p_t;
23866: return p_t::value;
23866: }
23866:
23866: template <class T, class Policy>
23866: inline constexpr int digits_imp(boost::false_type const&) noexcept
23866: {
23866: return tools::digits<T>();
23866: }
23866:
23866: }
23866:
23866: template <class T, class Policy>
23866: inline constexpr int digits() noexcept
23866: {
23866: typedef boost::integral_constant<bool, std::numeric_limits<T>::is_specialized > tag_type;
23866: return detail::digits_imp<T, Policy>(tag_type());
23866: }
23866: template <class T, class Policy>
23866: inline constexpr int digits_base10() noexcept
23866: {
23866: return boost::math::policies::digits<T, Policy>() * 301 / 1000L;
23866: }
23866:
23866: template <class Policy>
23866: inline constexpr unsigned long get_max_series_iterations() noexcept
23866: {
23866: typedef typename Policy::max_series_iterations_type iter_type;
23866: return iter_type::value;
23866: }
23866:
23866: template <class Policy>
23866: inline constexpr unsigned long get_max_root_iterations() noexcept
23866: {
23866: typedef typename Policy::max_root_iterations_type iter_type;
23866: return iter_type::value;
23866: }
23866:
23866: namespace detail{
23866:
23866: template <class T, class Digits, class Small, class Default>
23866: struct series_factor_calc
23866: {
23866: static T get() noexcept(std::is_floating_point<T>::value)
23866: {
23866: return ldexp(T(1.0), 1 - Digits::value);
23866: }
23866: };
23866:
23866: template <class T, class Digits>
23866: struct series_factor_calc<T, Digits, boost::true_type, boost::true_type>
23866: {
23866: static constexpr T get() noexcept(std::is_floating_point<T>::value)
23866: {
23866: return boost::math::tools::epsilon<T>();
23866: }
23866: };
23866: template <class T, class Digits>
23866: struct series_factor_calc<T, Digits, boost::true_type, boost::false_type>
23866: {
23866: static constexpr T get() noexcept(std::is_floating_point<T>::value)
23866: {
23866: return 1 / static_cast<T>(static_cast<boost::uintmax_t>(1u) << (Digits::value - 1));
23866: }
23866: };
23866: template <class T, class Digits>
23866: struct series_factor_calc<T, Digits, boost::false_type, boost::true_type>
23866: {
23866: static constexpr T get() noexcept(std::is_floating_point<T>::value)
23866: {
23866: return boost::math::tools::epsilon<T>();
23866: }
23866: };
23866:
23866: template <class T, class Policy>
23866: inline constexpr T get_epsilon_imp(boost::true_type const&) noexcept(std::is_floating_point<T>::value)
23866: {
23866:
23866: static_assert(::std::numeric_limits<T>::is_specialized, "::std::numeric_limits<T>::is_specialized");
23866: static_assert(::std::numeric_limits<T>::radix == 2, "::std::numeric_limits<T>::radix == 2");
23866:
23866:
23866:
23866:
23866: typedef typename boost::math::policies::precision<T, Policy>::type p_t;
23866: typedef boost::integral_constant<bool, p_t::value <= std::numeric_limits<boost::uintmax_t>::digits> is_small_int;
23866: typedef boost::integral_constant<bool, p_t::value >= std::numeric_limits<T>::digits> is_default_value;
23866: return series_factor_calc<T, p_t, is_small_int, is_default_value>::get();
23866: }
23866:
23866: template <class T, class Policy>
23866: inline constexpr T get_epsilon_imp(boost::false_type const&) noexcept(std::is_floating_point<T>::value)
23866: {
23866: return tools::epsilon<T>();
23866: }
23866:
23866: }
23866:
23866: template <class T, class Policy>
23866: inline constexpr T get_epsilon() noexcept(std::is_floating_point<T>::value)
23866: {
23866: typedef boost::integral_constant<bool, (std::numeric_limits<T>::is_specialized && (std::numeric_limits<T>::radix == 2)) > tag_type;
23866: return detail::get_epsilon_imp<T, Policy>(tag_type());
23866: }
23866:
23866: namespace detail{
23866:
23866: template <class A1,
23866: class A2,
23866: class A3,
23866: class A4,
23866: class A5,
23866: class A6,
23866: class A7,
23866: class A8,
23866: class A9,
23866: class A10,
23866: class A11>
23866: char test_is_policy(const policy<A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11>*);
23866: double test_is_policy(...);
23866:
23866: template <class P>
23866: struct is_policy_imp
23866: {
23866: static const bool value = (sizeof(::boost::math::policies::detail::test_is_policy(static_cast<P*>(0))) == 1);
23866: };
23866:
23866: }
23866:
23866: template <class P>
23866: struct is_policy : public boost::integral_constant<bool, ::boost::math::policies::detail::is_policy_imp<P>::value> {};
23866:
23866:
23866:
23866:
23866: template <class Policy>
23866: struct constructor_error_check
23866: {
23866: typedef typename Policy::domain_error_type domain_error_type;
23866: typedef typename mpl::if_c<
23866: (domain_error_type::value == throw_on_error) || (domain_error_type::value == user_error) || (domain_error_type::value == errno_on_error),
23866: boost::true_type,
23866: boost::false_type>::type type;
23866: };
23866:
23866: template <class Policy>
23866: struct method_error_check
23866: {
23866: typedef typename Policy::domain_error_type domain_error_type;
23866: typedef typename mpl::if_c<
23866: (domain_error_type::value == throw_on_error) && (domain_error_type::value != user_error),
23866: boost::false_type,
23866: boost::true_type>::type type;
23866: };
23866:
23866:
23866:
23866: template <class Policy>
23866: struct is_noexcept_error_policy
23866: {
23866: typedef typename Policy::domain_error_type t1;
23866: typedef typename Policy::pole_error_type t2;
23866: typedef typename Policy::overflow_error_type t3;
23866: typedef typename Policy::underflow_error_type t4;
23866: typedef typename Policy::denorm_error_type t5;
23866: typedef typename Policy::evaluation_error_type t6;
23866: typedef typename Policy::rounding_error_type t7;
23866: typedef typename Policy::indeterminate_result_error_type t8;
23866:
23866: static const 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))
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: };
23866:
23866: }}}
23866: # 30 "/usr/include/boost/math/special_functions/math_fwd.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/config/no_tr1/complex.hpp" 1 3 4
23866: # 14 "/usr/include/boost/config/no_tr1/complex.hpp" 3 4
23866: #define BOOST_CONFIG_COMPLEX
23866:
23866:
23866: #define BOOST_TR1_NO_RECURSION
23866: #define BOOST_CONFIG_NO_COMPLEX_RECURSION
23866:
23866:
23866:
23866:
23866:
23866: #undef BOOST_TR1_NO_RECURSION
23866: #undef BOOST_CONFIG_NO_COMPLEX_RECURSION
23866: # 33 "/usr/include/boost/math/special_functions/math_fwd.hpp" 2 3 4
23866:
23866: #define BOOST_NO_MACRO_EXPAND
23866:
23866: namespace boost
23866: {
23866: namespace math
23866: {
23866:
23866:
23866: template <class RT1, class RT2>
23866: typename tools::promote_args<RT1, RT2>::type
23866: beta(RT1 a, RT2 b);
23866:
23866: template <class RT1, class RT2, class A>
23866: typename tools::promote_args<RT1, RT2, A>::type
23866: beta(RT1 a, RT2 b, A x);
23866:
23866: template <class RT1, class RT2, class RT3, class Policy>
23866: typename tools::promote_args<RT1, RT2, RT3>::type
23866: beta(RT1 a, RT2 b, RT3 x, const Policy& pol);
23866:
23866: template <class RT1, class RT2, class RT3>
23866: typename tools::promote_args<RT1, RT2, RT3>::type
23866: betac(RT1 a, RT2 b, RT3 x);
23866:
23866: template <class RT1, class RT2, class RT3, class Policy>
23866: typename tools::promote_args<RT1, RT2, RT3>::type
23866: betac(RT1 a, RT2 b, RT3 x, const Policy& pol);
23866:
23866: template <class RT1, class RT2, class RT3>
23866: typename tools::promote_args<RT1, RT2, RT3>::type
23866: ibeta(RT1 a, RT2 b, RT3 x);
23866:
23866: template <class RT1, class RT2, class RT3, class Policy>
23866: typename tools::promote_args<RT1, RT2, RT3>::type
23866: ibeta(RT1 a, RT2 b, RT3 x, const Policy& pol);
23866:
23866: template <class RT1, class RT2, class RT3>
23866: typename tools::promote_args<RT1, RT2, RT3>::type
23866: ibetac(RT1 a, RT2 b, RT3 x);
23866:
23866: template <class RT1, class RT2, class RT3, class Policy>
23866: typename tools::promote_args<RT1, RT2, RT3>::type
23866: ibetac(RT1 a, RT2 b, RT3 x, const Policy& pol);
23866:
23866: template <class T1, class T2, class T3, class T4>
23866: typename tools::promote_args<T1, T2, T3, T4>::type
23866: ibeta_inv(T1 a, T2 b, T3 p, T4* py);
23866:
23866: template <class T1, class T2, class T3, class T4, class Policy>
23866: typename tools::promote_args<T1, T2, T3, T4>::type
23866: ibeta_inv(T1 a, T2 b, T3 p, T4* py, const Policy& pol);
23866:
23866: template <class RT1, class RT2, class RT3>
23866: typename tools::promote_args<RT1, RT2, RT3>::type
23866: ibeta_inv(RT1 a, RT2 b, RT3 p);
23866:
23866: template <class RT1, class RT2, class RT3, class Policy>
23866: typename tools::promote_args<RT1, RT2, RT3>::type
23866: ibeta_inv(RT1 a, RT2 b, RT3 p, const Policy&);
23866:
23866: template <class RT1, class RT2, class RT3>
23866: typename tools::promote_args<RT1, RT2, RT3>::type
23866: ibeta_inva(RT1 a, RT2 b, RT3 p);
23866:
23866: template <class RT1, class RT2, class RT3, class Policy>
23866: typename tools::promote_args<RT1, RT2, RT3>::type
23866: ibeta_inva(RT1 a, RT2 b, RT3 p, const Policy&);
23866:
23866: template <class RT1, class RT2, class RT3>
23866: typename tools::promote_args<RT1, RT2, RT3>::type
23866: ibeta_invb(RT1 a, RT2 b, RT3 p);
23866:
23866: template <class RT1, class RT2, class RT3, class Policy>
23866: typename tools::promote_args<RT1, RT2, RT3>::type
23866: ibeta_invb(RT1 a, RT2 b, RT3 p, const Policy&);
23866:
23866: template <class T1, class T2, class T3, class T4>
23866: typename tools::promote_args<T1, T2, T3, T4>::type
23866: ibetac_inv(T1 a, T2 b, T3 q, T4* py);
23866:
23866: template <class T1, class T2, class T3, class T4, class Policy>
23866: typename tools::promote_args<T1, T2, T3, T4>::type
23866: ibetac_inv(T1 a, T2 b, T3 q, T4* py, const Policy& pol);
23866:
23866: template <class RT1, class RT2, class RT3>
23866: typename tools::promote_args<RT1, RT2, RT3>::type
23866: ibetac_inv(RT1 a, RT2 b, RT3 q);
23866:
23866: template <class RT1, class RT2, class RT3, class Policy>
23866: typename tools::promote_args<RT1, RT2, RT3>::type
23866: ibetac_inv(RT1 a, RT2 b, RT3 q, const Policy&);
23866:
23866: template <class RT1, class RT2, class RT3>
23866: typename tools::promote_args<RT1, RT2, RT3>::type
23866: ibetac_inva(RT1 a, RT2 b, RT3 q);
23866:
23866: template <class RT1, class RT2, class RT3, class Policy>
23866: typename tools::promote_args<RT1, RT2, RT3>::type
23866: ibetac_inva(RT1 a, RT2 b, RT3 q, const Policy&);
23866:
23866: template <class RT1, class RT2, class RT3>
23866: typename tools::promote_args<RT1, RT2, RT3>::type
23866: ibetac_invb(RT1 a, RT2 b, RT3 q);
23866:
23866: template <class RT1, class RT2, class RT3, class Policy>
23866: typename tools::promote_args<RT1, RT2, RT3>::type
23866: ibetac_invb(RT1 a, RT2 b, RT3 q, const Policy&);
23866:
23866: template <class RT1, class RT2, class RT3>
23866: typename tools::promote_args<RT1, RT2, RT3>::type
23866: ibeta_derivative(RT1 a, RT2 b, RT3 x);
23866:
23866: template <class RT1, class RT2, class RT3, class Policy>
23866: typename tools::promote_args<RT1, RT2, RT3>::type
23866: ibeta_derivative(RT1 a, RT2 b, RT3 x, const Policy& pol);
23866:
23866:
23866: template <class T, class Policy>
23866: T binomial_coefficient(unsigned n, unsigned k, const Policy& pol);
23866: template <class T>
23866: T binomial_coefficient(unsigned n, unsigned k);
23866:
23866:
23866: template <class RT>
23866: typename tools::promote_args<RT>::type erf(RT z);
23866: template <class RT, class Policy>
23866: typename tools::promote_args<RT>::type erf(RT z, const Policy&);
23866:
23866: template <class RT>
23866: typename tools::promote_args<RT>::type erfc(RT z);
23866: template <class RT, class Policy>
23866: typename tools::promote_args<RT>::type erfc(RT z, const Policy&);
23866:
23866: template <class RT>
23866: typename tools::promote_args<RT>::type erf_inv(RT z);
23866: template <class RT, class Policy>
23866: typename tools::promote_args<RT>::type erf_inv(RT z, const Policy& pol);
23866:
23866: template <class RT>
23866: typename tools::promote_args<RT>::type erfc_inv(RT z);
23866: template <class RT, class Policy>
23866: typename tools::promote_args<RT>::type erfc_inv(RT z, const Policy& pol);
23866:
23866:
23866: template <class T1, class T2, class T3>
23866: typename tools::promote_args<T1, T2, T3>::type
23866: legendre_next(unsigned l, T1 x, T2 Pl, T3 Plm1);
23866:
23866: template <class T>
23866: typename tools::promote_args<T>::type
23866: legendre_p(int l, T x);
23866: template <class T>
23866: typename tools::promote_args<T>::type
23866: legendre_p_prime(int l, T x);
23866:
23866:
23866: template <class T, class Policy>
23866: inline std::vector<T> legendre_p_zeros(int l, const Policy& pol);
23866:
23866: template <class T>
23866: inline std::vector<T> legendre_p_zeros(int l);
23866:
23866:
23866: template <class T, class Policy>
23866: typename boost::enable_if_c<policies::is_policy<Policy>::value, typename tools::promote_args<T>::type>::type
23866: legendre_p(int l, T x, const Policy& pol);
23866: template <class T, class Policy>
23866: inline typename boost::enable_if_c<policies::is_policy<Policy>::value, typename tools::promote_args<T>::type>::type
23866: legendre_p_prime(int l, T x, const Policy& pol);
23866:
23866: template <class T>
23866: typename tools::promote_args<T>::type
23866: legendre_q(unsigned l, T x);
23866:
23866: template <class T, class Policy>
23866: typename boost::enable_if_c<policies::is_policy<Policy>::value, typename tools::promote_args<T>::type>::type
23866: legendre_q(unsigned l, T x, const Policy& pol);
23866:
23866: template <class T1, class T2, class T3>
23866: typename tools::promote_args<T1, T2, T3>::type
23866: legendre_next(unsigned l, unsigned m, T1 x, T2 Pl, T3 Plm1);
23866:
23866: template <class T>
23866: typename tools::promote_args<T>::type
23866: legendre_p(int l, int m, T x);
23866:
23866: template <class T, class Policy>
23866: typename tools::promote_args<T>::type
23866: legendre_p(int l, int m, T x, const Policy& pol);
23866:
23866: template <class T1, class T2, class T3>
23866: typename tools::promote_args<T1, T2, T3>::type
23866: laguerre_next(unsigned n, T1 x, T2 Ln, T3 Lnm1);
23866:
23866: template <class T1, class T2, class T3>
23866: typename tools::promote_args<T1, T2, T3>::type
23866: laguerre_next(unsigned n, unsigned l, T1 x, T2 Pl, T3 Plm1);
23866:
23866: template <class T>
23866: typename tools::promote_args<T>::type
23866: laguerre(unsigned n, T x);
23866:
23866: template <class T, class Policy>
23866: typename tools::promote_args<T>::type
23866: laguerre(unsigned n, unsigned m, T x, const Policy& pol);
23866:
23866: template <class T1, class T2>
23866: struct laguerre_result
23866: {
23866: typedef typename mpl::if_<
23866: policies::is_policy<T2>,
23866: typename tools::promote_args<T1>::type,
23866: typename tools::promote_args<T2>::type
23866: >::type type;
23866: };
23866:
23866: template <class T1, class T2>
23866: typename laguerre_result<T1, T2>::type
23866: laguerre(unsigned n, T1 m, T2 x);
23866:
23866: template <class T>
23866: typename tools::promote_args<T>::type
23866: hermite(unsigned n, T x);
23866:
23866: template <class T, class Policy>
23866: typename tools::promote_args<T>::type
23866: hermite(unsigned n, T x, const Policy& pol);
23866:
23866: template <class T1, class T2, class T3>
23866: typename tools::promote_args<T1, T2, T3>::type
23866: hermite_next(unsigned n, T1 x, T2 Hn, T3 Hnm1);
23866:
23866: template<class T1, class T2, class T3>
23866: typename tools::promote_args<T1, T2, T3>::type chebyshev_next(T1 const & x, T2 const & Tn, T3 const & Tn_1);
23866:
23866: template <class Real, class Policy>
23866: typename tools::promote_args<Real>::type
23866: chebyshev_t(unsigned n, Real const & x, const Policy&);
23866: template<class Real>
23866: typename tools::promote_args<Real>::type chebyshev_t(unsigned n, Real const & x);
23866:
23866: template <class Real, class Policy>
23866: typename tools::promote_args<Real>::type
23866: chebyshev_u(unsigned n, Real const & x, const Policy&);
23866: template<class Real>
23866: typename tools::promote_args<Real>::type chebyshev_u(unsigned n, Real const & x);
23866:
23866: template <class Real, class Policy>
23866: typename tools::promote_args<Real>::type
23866: chebyshev_t_prime(unsigned n, Real const & x, const Policy&);
23866: template<class Real>
23866: typename tools::promote_args<Real>::type chebyshev_t_prime(unsigned n, Real const & x);
23866:
23866: template<class Real, class T2>
23866: Real chebyshev_clenshaw_recurrence(const Real* const c, size_t length, const T2& x);
23866:
23866: template <class T1, class T2>
23866: std::complex<typename tools::promote_args<T1, T2>::type>
23866: spherical_harmonic(unsigned n, int m, T1 theta, T2 phi);
23866:
23866: template <class T1, class T2, class Policy>
23866: std::complex<typename tools::promote_args<T1, T2>::type>
23866: spherical_harmonic(unsigned n, int m, T1 theta, T2 phi, const Policy& pol);
23866:
23866: template <class T1, class T2>
23866: typename tools::promote_args<T1, T2>::type
23866: spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi);
23866:
23866: template <class T1, class T2, class Policy>
23866: typename tools::promote_args<T1, T2>::type
23866: spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi, const Policy& pol);
23866:
23866: template <class T1, class T2>
23866: typename tools::promote_args<T1, T2>::type
23866: spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi);
23866:
23866: template <class T1, class T2, class Policy>
23866: typename tools::promote_args<T1, T2>::type
23866: spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi, const Policy& pol);
23866:
23866:
23866: template <class T1, class T2, class T3>
23866: typename tools::promote_args<T1, T2, T3>::type
23866: ellint_rf(T1 x, T2 y, T3 z);
23866:
23866: template <class T1, class T2, class T3, class Policy>
23866: typename tools::promote_args<T1, T2, T3>::type
23866: ellint_rf(T1 x, T2 y, T3 z, const Policy& pol);
23866:
23866: template <class T1, class T2, class T3>
23866: typename tools::promote_args<T1, T2, T3>::type
23866: ellint_rd(T1 x, T2 y, T3 z);
23866:
23866: template <class T1, class T2, class T3, class Policy>
23866: typename tools::promote_args<T1, T2, T3>::type
23866: ellint_rd(T1 x, T2 y, T3 z, const Policy& pol);
23866:
23866: template <class T1, class T2>
23866: typename tools::promote_args<T1, T2>::type
23866: ellint_rc(T1 x, T2 y);
23866:
23866: template <class T1, class T2, class Policy>
23866: typename tools::promote_args<T1, T2>::type
23866: ellint_rc(T1 x, T2 y, const Policy& pol);
23866:
23866: template <class T1, class T2, class T3, class T4>
23866: typename tools::promote_args<T1, T2, T3, T4>::type
23866: ellint_rj(T1 x, T2 y, T3 z, T4 p);
23866:
23866: template <class T1, class T2, class T3, class T4, class Policy>
23866: typename tools::promote_args<T1, T2, T3, T4>::type
23866: ellint_rj(T1 x, T2 y, T3 z, T4 p, const Policy& pol);
23866:
23866: template <class T1, class T2, class T3>
23866: typename tools::promote_args<T1, T2, T3>::type
23866: ellint_rg(T1 x, T2 y, T3 z);
23866:
23866: template <class T1, class T2, class T3, class Policy>
23866: typename tools::promote_args<T1, T2, T3>::type
23866: ellint_rg(T1 x, T2 y, T3 z, const Policy& pol);
23866:
23866: template <typename T>
23866: typename tools::promote_args<T>::type ellint_2(T k);
23866:
23866: template <class T1, class T2>
23866: typename tools::promote_args<T1, T2>::type ellint_2(T1 k, T2 phi);
23866:
23866: template <class T1, class T2, class Policy>
23866: typename tools::promote_args<T1, T2>::type ellint_2(T1 k, T2 phi, const Policy& pol);
23866:
23866: template <typename T>
23866: typename tools::promote_args<T>::type ellint_1(T k);
23866:
23866: template <class T1, class T2>
23866: typename tools::promote_args<T1, T2>::type ellint_1(T1 k, T2 phi);
23866:
23866: template <class T1, class T2, class Policy>
23866: typename tools::promote_args<T1, T2>::type ellint_1(T1 k, T2 phi, const Policy& pol);
23866:
23866: template <typename T>
23866: typename tools::promote_args<T>::type ellint_d(T k);
23866:
23866: template <class T1, class T2>
23866: typename tools::promote_args<T1, T2>::type ellint_d(T1 k, T2 phi);
23866:
23866: template <class T1, class T2, class Policy>
23866: typename tools::promote_args<T1, T2>::type ellint_d(T1 k, T2 phi, const Policy& pol);
23866:
23866: template <class T1, class T2>
23866: typename tools::promote_args<T1, T2>::type jacobi_zeta(T1 k, T2 phi);
23866:
23866: template <class T1, class T2, class Policy>
23866: typename tools::promote_args<T1, T2>::type jacobi_zeta(T1 k, T2 phi, const Policy& pol);
23866:
23866: template <class T1, class T2>
23866: typename tools::promote_args<T1, T2>::type heuman_lambda(T1 k, T2 phi);
23866:
23866: template <class T1, class T2, class Policy>
23866: typename tools::promote_args<T1, T2>::type heuman_lambda(T1 k, T2 phi, const Policy& pol);
23866:
23866: namespace detail{
23866:
23866: template <class T, class U, class V>
23866: struct ellint_3_result
23866: {
23866: typedef typename mpl::if_<
23866: policies::is_policy<V>,
23866: typename tools::promote_args<T, U>::type,
23866: typename tools::promote_args<T, U, V>::type
23866: >::type type;
23866: };
23866:
23866: }
23866:
23866:
23866: template <class T1, class T2, class T3>
23866: typename detail::ellint_3_result<T1, T2, T3>::type ellint_3(T1 k, T2 v, T3 phi);
23866:
23866: template <class T1, class T2, class T3, class Policy>
23866: typename tools::promote_args<T1, T2, T3>::type ellint_3(T1 k, T2 v, T3 phi, const Policy& pol);
23866:
23866: template <class T1, class T2>
23866: typename tools::promote_args<T1, T2>::type ellint_3(T1 k, T2 v);
23866:
23866:
23866:
23866: template <class RT>
23866: struct max_factorial;
23866: template <class RT>
23866: RT factorial(unsigned int);
23866: template <class RT, class Policy>
23866: RT factorial(unsigned int, const Policy& pol);
23866: template <class RT>
23866: RT unchecked_factorial(unsigned int );
23866: template <class RT>
23866: RT double_factorial(unsigned i);
23866: template <class RT, class Policy>
23866: RT double_factorial(unsigned i, const Policy& pol);
23866:
23866: template <class RT>
23866: typename tools::promote_args<RT>::type falling_factorial(RT x, unsigned n);
23866:
23866: template <class RT, class Policy>
23866: typename tools::promote_args<RT>::type falling_factorial(RT x, unsigned n, const Policy& pol);
23866:
23866: template <class RT>
23866: typename tools::promote_args<RT>::type rising_factorial(RT x, int n);
23866:
23866: template <class RT, class Policy>
23866: typename tools::promote_args<RT>::type rising_factorial(RT x, int n, const Policy& pol);
23866:
23866:
23866: template <class RT>
23866: typename tools::promote_args<RT>::type tgamma(RT z);
23866:
23866: template <class RT>
23866: typename tools::promote_args<RT>::type tgamma1pm1(RT z);
23866:
23866: template <class RT, class Policy>
23866: typename tools::promote_args<RT>::type tgamma1pm1(RT z, const Policy& pol);
23866:
23866: template <class RT1, class RT2>
23866: typename tools::promote_args<RT1, RT2>::type tgamma(RT1 a, RT2 z);
23866:
23866: template <class RT1, class RT2, class Policy>
23866: typename tools::promote_args<RT1, RT2>::type tgamma(RT1 a, RT2 z, const Policy& pol);
23866:
23866: template <class RT>
23866: typename tools::promote_args<RT>::type lgamma(RT z, int* sign);
23866:
23866: template <class RT, class Policy>
23866: typename tools::promote_args<RT>::type lgamma(RT z, int* sign, const Policy& pol);
23866:
23866: template <class RT>
23866: typename tools::promote_args<RT>::type lgamma(RT x);
23866:
23866: template <class RT, class Policy>
23866: typename tools::promote_args<RT>::type lgamma(RT x, const Policy& pol);
23866:
23866: template <class RT1, class RT2>
23866: typename tools::promote_args<RT1, RT2>::type tgamma_lower(RT1 a, RT2 z);
23866:
23866: template <class RT1, class RT2, class Policy>
23866: typename tools::promote_args<RT1, RT2>::type tgamma_lower(RT1 a, RT2 z, const Policy&);
23866:
23866: template <class RT1, class RT2>
23866: typename tools::promote_args<RT1, RT2>::type gamma_q(RT1 a, RT2 z);
23866:
23866: template <class RT1, class RT2, class Policy>
23866: typename tools::promote_args<RT1, RT2>::type gamma_q(RT1 a, RT2 z, const Policy&);
23866:
23866: template <class RT1, class RT2>
23866: typename tools::promote_args<RT1, RT2>::type gamma_p(RT1 a, RT2 z);
23866:
23866: template <class RT1, class RT2, class Policy>
23866: typename tools::promote_args<RT1, RT2>::type gamma_p(RT1 a, RT2 z, const Policy&);
23866:
23866: template <class T1, class T2>
23866: typename tools::promote_args<T1, T2>::type tgamma_delta_ratio(T1 z, T2 delta);
23866:
23866: template <class T1, class T2, class Policy>
23866: typename tools::promote_args<T1, T2>::type tgamma_delta_ratio(T1 z, T2 delta, const Policy&);
23866:
23866: template <class T1, class T2>
23866: typename tools::promote_args<T1, T2>::type tgamma_ratio(T1 a, T2 b);
23866:
23866: template <class T1, class T2, class Policy>
23866: typename tools::promote_args<T1, T2>::type tgamma_ratio(T1 a, T2 b, const Policy&);
23866:
23866: template <class T1, class T2>
23866: typename tools::promote_args<T1, T2>::type gamma_p_derivative(T1 a, T2 x);
23866:
23866: template <class T1, class T2, class Policy>
23866: typename tools::promote_args<T1, T2>::type gamma_p_derivative(T1 a, T2 x, const Policy&);
23866:
23866:
23866: template <class T1, class T2>
23866: typename tools::promote_args<T1, T2>::type gamma_p_inv(T1 a, T2 p);
23866:
23866: template <class T1, class T2, class Policy>
23866: typename tools::promote_args<T1, T2>::type gamma_p_inva(T1 a, T2 p, const Policy&);
23866:
23866: template <class T1, class T2>
23866: typename tools::promote_args<T1, T2>::type gamma_p_inva(T1 a, T2 p);
23866:
23866: template <class T1, class T2, class Policy>
23866: typename tools::promote_args<T1, T2>::type gamma_p_inv(T1 a, T2 p, const Policy&);
23866:
23866: template <class T1, class T2>
23866: typename tools::promote_args<T1, T2>::type gamma_q_inv(T1 a, T2 q);
23866:
23866: template <class T1, class T2, class Policy>
23866: typename tools::promote_args<T1, T2>::type gamma_q_inv(T1 a, T2 q, const Policy&);
23866:
23866: template <class T1, class T2>
23866: typename tools::promote_args<T1, T2>::type gamma_q_inva(T1 a, T2 q);
23866:
23866: template <class T1, class T2, class Policy>
23866: typename tools::promote_args<T1, T2>::type gamma_q_inva(T1 a, T2 q, const Policy&);
23866:
23866:
23866: template <class T>
23866: typename tools::promote_args<T>::type digamma(T x);
23866:
23866: template <class T, class Policy>
23866: typename tools::promote_args<T>::type digamma(T x, const Policy&);
23866:
23866:
23866: template <class T>
23866: typename tools::promote_args<T>::type trigamma(T x);
23866:
23866: template <class T, class Policy>
23866: typename tools::promote_args<T>::type trigamma(T x, const Policy&);
23866:
23866:
23866: template <class T>
23866: typename tools::promote_args<T>::type polygamma(int n, T x);
23866:
23866: template <class T, class Policy>
23866: typename tools::promote_args<T>::type polygamma(int n, T x, const Policy&);
23866:
23866:
23866: template <class T1, class T2>
23866: typename tools::promote_args<T1, T2>::type
23866: hypot(T1 x, T2 y);
23866:
23866: template <class T1, class T2, class Policy>
23866: typename tools::promote_args<T1, T2>::type
23866: hypot(T1 x, T2 y, const Policy&);
23866:
23866:
23866: template <class RT>
23866: typename tools::promote_args<RT>::type cbrt(RT z);
23866:
23866: template <class RT, class Policy>
23866: typename tools::promote_args<RT>::type cbrt(RT z, const Policy&);
23866:
23866:
23866: template <class T>
23866: typename tools::promote_args<T>::type log1p(T);
23866:
23866: template <class T, class Policy>
23866: typename tools::promote_args<T>::type log1p(T, const Policy&);
23866:
23866:
23866: template <class T>
23866: typename tools::promote_args<T>::type log1pmx(T);
23866:
23866: template <class T, class Policy>
23866: typename tools::promote_args<T>::type log1pmx(T, const Policy&);
23866:
23866:
23866: template <class T>
23866: typename tools::promote_args<T>::type expm1(T);
23866:
23866: template <class T, class Policy>
23866: typename tools::promote_args<T>::type expm1(T, const Policy&);
23866:
23866:
23866: template <class T1, class T2>
23866: typename tools::promote_args<T1, T2>::type
23866: powm1(const T1 a, const T2 z);
23866:
23866: template <class T1, class T2, class Policy>
23866: typename tools::promote_args<T1, T2>::type
23866: powm1(const T1 a, const T2 z, const Policy&);
23866:
23866:
23866: template <class T>
23866: typename tools::promote_args<T>::type sqrt1pm1(const T& val);
23866:
23866: template <class T, class Policy>
23866: typename tools::promote_args<T>::type sqrt1pm1(const T& val, const Policy&);
23866:
23866:
23866: template <class T>
23866: typename tools::promote_args<T>::type sinc_pi(T x);
23866:
23866: template <class T, class Policy>
23866: typename tools::promote_args<T>::type sinc_pi(T x, const Policy&);
23866:
23866: template <class T>
23866: typename tools::promote_args<T>::type sinhc_pi(T x);
23866:
23866: template <class T, class Policy>
23866: typename tools::promote_args<T>::type sinhc_pi(T x, const Policy&);
23866:
23866:
23866: template<typename T>
23866: typename tools::promote_args<T>::type asinh(T x);
23866:
23866: template<typename T, class Policy>
23866: typename tools::promote_args<T>::type asinh(T x, const Policy&);
23866:
23866: template<typename T>
23866: typename tools::promote_args<T>::type acosh(T x);
23866:
23866: template<typename T, class Policy>
23866: typename tools::promote_args<T>::type acosh(T x, const Policy&);
23866:
23866: template<typename T>
23866: typename tools::promote_args<T>::type atanh(T x);
23866:
23866: template<typename T, class Policy>
23866: typename tools::promote_args<T>::type atanh(T x, const Policy&);
23866:
23866: namespace detail{
23866:
23866: typedef boost::integral_constant<int, 0> bessel_no_int_tag;
23866: typedef boost::integral_constant<int, 1> bessel_maybe_int_tag;
23866: typedef boost::integral_constant<int, 2> bessel_int_tag;
23866:
23866: template <class T1, class T2, class Policy>
23866: struct bessel_traits
23866: {
23866: typedef typename mpl::if_<
23866: is_integral<T1>,
23866: typename tools::promote_args<T2>::type,
23866: typename tools::promote_args<T1, T2>::type
23866: >::type result_type;
23866:
23866: typedef typename policies::precision<result_type, Policy>::type precision_type;
23866:
23866: typedef typename mpl::if_<
23866: mpl::or_<
23866: mpl::less_equal<precision_type, boost::integral_constant<int, 0> >,
23866: mpl::greater<precision_type, boost::integral_constant<int, 64> > >,
23866: bessel_no_int_tag,
23866: typename mpl::if_<
23866: is_integral<T1>,
23866: bessel_int_tag,
23866: bessel_maybe_int_tag
23866: >::type
23866: >::type optimisation_tag;
23866: typedef typename mpl::if_<
23866: mpl::or_<
23866: mpl::less_equal<precision_type, boost::integral_constant<int, 0> >,
23866: mpl::greater<precision_type, boost::integral_constant<int, 113> > >,
23866: bessel_no_int_tag,
23866: typename mpl::if_<
23866: is_integral<T1>,
23866: bessel_int_tag,
23866: bessel_maybe_int_tag
23866: >::type
23866: >::type optimisation_tag128;
23866: };
23866: }
23866:
23866:
23866: template <class T1, class T2, class Policy>
23866: typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_bessel_j(T1 v, T2 x, const Policy& pol);
23866: template <class T1, class T2, class Policy>
23866: typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_bessel_j_prime(T1 v, T2 x, const Policy& pol);
23866:
23866: template <class T1, class T2>
23866: typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_bessel_j(T1 v, T2 x);
23866: template <class T1, class T2>
23866: typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_bessel_j_prime(T1 v, T2 x);
23866:
23866: template <class T, class Policy>
23866: typename detail::bessel_traits<T, T, Policy>::result_type sph_bessel(unsigned v, T x, const Policy& pol);
23866: template <class T, class Policy>
23866: typename detail::bessel_traits<T, T, Policy>::result_type sph_bessel_prime(unsigned v, T x, const Policy& pol);
23866:
23866: template <class T>
23866: typename detail::bessel_traits<T, T, policies::policy<> >::result_type sph_bessel(unsigned v, T x);
23866: template <class T>
23866: typename detail::bessel_traits<T, T, policies::policy<> >::result_type sph_bessel_prime(unsigned v, T x);
23866:
23866: template <class T1, class T2, class Policy>
23866: typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_bessel_i(T1 v, T2 x, const Policy& pol);
23866: template <class T1, class T2, class Policy>
23866: typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_bessel_i_prime(T1 v, T2 x, const Policy& pol);
23866:
23866: template <class T1, class T2>
23866: typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_bessel_i(T1 v, T2 x);
23866: template <class T1, class T2>
23866: typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_bessel_i_prime(T1 v, T2 x);
23866:
23866: template <class T1, class T2, class Policy>
23866: typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_bessel_k(T1 v, T2 x, const Policy& pol);
23866: template <class T1, class T2, class Policy>
23866: typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_bessel_k_prime(T1 v, T2 x, const Policy& pol);
23866:
23866: template <class T1, class T2>
23866: typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_bessel_k(T1 v, T2 x);
23866: template <class T1, class T2>
23866: typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_bessel_k_prime(T1 v, T2 x);
23866:
23866: template <class T1, class T2, class Policy>
23866: typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_neumann(T1 v, T2 x, const Policy& pol);
23866: template <class T1, class T2, class Policy>
23866: typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_neumann_prime(T1 v, T2 x, const Policy& pol);
23866:
23866: template <class T1, class T2>
23866: typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_neumann(T1 v, T2 x);
23866: template <class T1, class T2>
23866: typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_neumann_prime(T1 v, T2 x);
23866:
23866: template <class T, class Policy>
23866: typename detail::bessel_traits<T, T, Policy>::result_type sph_neumann(unsigned v, T x, const Policy& pol);
23866: template <class T, class Policy>
23866: typename detail::bessel_traits<T, T, Policy>::result_type sph_neumann_prime(unsigned v, T x, const Policy& pol);
23866:
23866: template <class T>
23866: typename detail::bessel_traits<T, T, policies::policy<> >::result_type sph_neumann(unsigned v, T x);
23866: template <class T>
23866: typename detail::bessel_traits<T, T, policies::policy<> >::result_type sph_neumann_prime(unsigned v, T x);
23866:
23866: template <class T, class Policy>
23866: typename detail::bessel_traits<T, T, Policy>::result_type cyl_bessel_j_zero(T v, int m, const Policy& pol);
23866:
23866: template <class T>
23866: typename detail::bessel_traits<T, T, policies::policy<> >::result_type cyl_bessel_j_zero(T v, int m);
23866:
23866: template <class T, class OutputIterator>
23866: OutputIterator cyl_bessel_j_zero(T v,
23866: int start_index,
23866: unsigned number_of_zeros,
23866: OutputIterator out_it);
23866:
23866: template <class T, class OutputIterator, class Policy>
23866: OutputIterator cyl_bessel_j_zero(T v,
23866: int start_index,
23866: unsigned number_of_zeros,
23866: OutputIterator out_it,
23866: const Policy&);
23866:
23866: template <class T, class Policy>
23866: typename detail::bessel_traits<T, T, Policy>::result_type cyl_neumann_zero(T v, int m, const Policy& pol);
23866:
23866: template <class T>
23866: typename detail::bessel_traits<T, T, policies::policy<> >::result_type cyl_neumann_zero(T v, int m);
23866:
23866: template <class T, class OutputIterator>
23866: OutputIterator cyl_neumann_zero(T v,
23866: int start_index,
23866: unsigned number_of_zeros,
23866: OutputIterator out_it);
23866:
23866: template <class T, class OutputIterator, class Policy>
23866: OutputIterator cyl_neumann_zero(T v,
23866: int start_index,
23866: unsigned number_of_zeros,
23866: OutputIterator out_it,
23866: const Policy&);
23866:
23866: template <class T1, class T2>
23866: std::complex<typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type> cyl_hankel_1(T1 v, T2 x);
23866:
23866: template <class T1, class T2, class Policy>
23866: std::complex<typename detail::bessel_traits<T1, T2, Policy>::result_type> cyl_hankel_1(T1 v, T2 x, const Policy& pol);
23866:
23866: template <class T1, class T2, class Policy>
23866: std::complex<typename detail::bessel_traits<T1, T2, Policy>::result_type> cyl_hankel_2(T1 v, T2 x, const Policy& pol);
23866:
23866: template <class T1, class T2>
23866: std::complex<typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type> cyl_hankel_2(T1 v, T2 x);
23866:
23866: template <class T1, class T2, class Policy>
23866: std::complex<typename detail::bessel_traits<T1, T2, Policy>::result_type> sph_hankel_1(T1 v, T2 x, const Policy& pol);
23866:
23866: template <class T1, class T2>
23866: std::complex<typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type> sph_hankel_1(T1 v, T2 x);
23866:
23866: template <class T1, class T2, class Policy>
23866: std::complex<typename detail::bessel_traits<T1, T2, Policy>::result_type> sph_hankel_2(T1 v, T2 x, const Policy& pol);
23866:
23866: template <class T1, class T2>
23866: std::complex<typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type> sph_hankel_2(T1 v, T2 x);
23866:
23866: template <class T, class Policy>
23866: typename tools::promote_args<T>::type airy_ai(T x, const Policy&);
23866:
23866: template <class T>
23866: typename tools::promote_args<T>::type airy_ai(T x);
23866:
23866: template <class T, class Policy>
23866: typename tools::promote_args<T>::type airy_bi(T x, const Policy&);
23866:
23866: template <class T>
23866: typename tools::promote_args<T>::type airy_bi(T x);
23866:
23866: template <class T, class Policy>
23866: typename tools::promote_args<T>::type airy_ai_prime(T x, const Policy&);
23866:
23866: template <class T>
23866: typename tools::promote_args<T>::type airy_ai_prime(T x);
23866:
23866: template <class T, class Policy>
23866: typename tools::promote_args<T>::type airy_bi_prime(T x, const Policy&);
23866:
23866: template <class T>
23866: typename tools::promote_args<T>::type airy_bi_prime(T x);
23866:
23866: template <class T>
23866: T airy_ai_zero(int m);
23866: template <class T, class Policy>
23866: T airy_ai_zero(int m, const Policy&);
23866:
23866: template <class OutputIterator>
23866: OutputIterator airy_ai_zero(
23866: int start_index,
23866: unsigned number_of_zeros,
23866: OutputIterator out_it);
23866: template <class OutputIterator, class Policy>
23866: OutputIterator airy_ai_zero(
23866: int start_index,
23866: unsigned number_of_zeros,
23866: OutputIterator out_it,
23866: const Policy&);
23866:
23866: template <class T>
23866: T airy_bi_zero(int m);
23866: template <class T, class Policy>
23866: T airy_bi_zero(int m, const Policy&);
23866:
23866: template <class OutputIterator>
23866: OutputIterator airy_bi_zero(
23866: int start_index,
23866: unsigned number_of_zeros,
23866: OutputIterator out_it);
23866: template <class OutputIterator, class Policy>
23866: OutputIterator airy_bi_zero(
23866: int start_index,
23866: unsigned number_of_zeros,
23866: OutputIterator out_it,
23866: const Policy&);
23866:
23866: template <class T, class Policy>
23866: typename tools::promote_args<T>::type sin_pi(T x, const Policy&);
23866:
23866: template <class T>
23866: typename tools::promote_args<T>::type sin_pi(T x);
23866:
23866: template <class T, class Policy>
23866: typename tools::promote_args<T>::type cos_pi(T x, const Policy&);
23866:
23866: template <class T>
23866: typename tools::promote_args<T>::type cos_pi(T x);
23866:
23866: template <class T>
23866: int fpclassify (T t);
23866:
23866: template <class T>
23866: bool isfinite (T z);
23866:
23866: template <class T>
23866: bool isinf (T t);
23866:
23866: template <class T>
23866: bool isnan (T t);
23866:
23866: template <class T>
23866: bool isnormal (T t);
23866:
23866: template<class T>
23866: int signbit (T x);
23866:
23866: template <class T>
23866: int sign (const T& z);
23866:
23866: template <class T, class U>
23866: typename tools::promote_args_permissive<T, U>::type copysign (const T& x, const U& y);
23866:
23866: template <class T>
23866: typename tools::promote_args_permissive<T>::type changesign (const T& z);
23866:
23866:
23866: namespace detail{
23866:
23866: template <class T, class U>
23866: struct expint_result
23866: {
23866: typedef typename mpl::if_<
23866: policies::is_policy<U>,
23866: typename tools::promote_args<T>::type,
23866: typename tools::promote_args<U>::type
23866: >::type type;
23866: };
23866:
23866: }
23866:
23866: template <class T, class Policy>
23866: typename tools::promote_args<T>::type expint(unsigned n, T z, const Policy&);
23866:
23866: template <class T, class U>
23866: typename detail::expint_result<T, U>::type expint(T const z, U const u);
23866:
23866: template <class T>
23866: typename tools::promote_args<T>::type expint(T z);
23866:
23866:
23866: template <class T, class Policy>
23866: typename tools::promote_args<T>::type zeta(T s, const Policy&);
23866:
23866:
23866: template <class T1, class T2, class Policy>
23866: typename tools::promote_args<T1, T2>::type owens_t(T1 h, T2 a, const Policy& pol);
23866:
23866: template <class T1, class T2>
23866: typename tools::promote_args<T1, T2>::type owens_t(T1 h, T2 a);
23866:
23866:
23866: template <class T, class U, class V, class Policy>
23866: typename tools::promote_args<T, U, V>::type jacobi_elliptic(T k, U theta, V* pcn, V* pdn, const Policy&);
23866:
23866: template <class T, class U, class V>
23866: typename tools::promote_args<T, U, V>::type jacobi_elliptic(T k, U theta, V* pcn = 0, V* pdn = 0);
23866:
23866: template <class U, class T, class Policy>
23866: typename tools::promote_args<T, U>::type jacobi_sn(U k, T theta, const Policy& pol);
23866:
23866: template <class U, class T>
23866: typename tools::promote_args<T, U>::type jacobi_sn(U k, T theta);
23866:
23866: template <class T, class U, class Policy>
23866: typename tools::promote_args<T, U>::type jacobi_cn(T k, U theta, const Policy& pol);
23866:
23866: template <class T, class U>
23866: typename tools::promote_args<T, U>::type jacobi_cn(T k, U theta);
23866:
23866: template <class T, class U, class Policy>
23866: typename tools::promote_args<T, U>::type jacobi_dn(T k, U theta, const Policy& pol);
23866:
23866: template <class T, class U>
23866: typename tools::promote_args<T, U>::type jacobi_dn(T k, U theta);
23866:
23866: template <class T, class U, class Policy>
23866: typename tools::promote_args<T, U>::type jacobi_cd(T k, U theta, const Policy& pol);
23866:
23866: template <class T, class U>
23866: typename tools::promote_args<T, U>::type jacobi_cd(T k, U theta);
23866:
23866: template <class T, class U, class Policy>
23866: typename tools::promote_args<T, U>::type jacobi_dc(T k, U theta, const Policy& pol);
23866:
23866: template <class T, class U>
23866: typename tools::promote_args<T, U>::type jacobi_dc(T k, U theta);
23866:
23866: template <class T, class U, class Policy>
23866: typename tools::promote_args<T, U>::type jacobi_ns(T k, U theta, const Policy& pol);
23866:
23866: template <class T, class U>
23866: typename tools::promote_args<T, U>::type jacobi_ns(T k, U theta);
23866:
23866: template <class T, class U, class Policy>
23866: typename tools::promote_args<T, U>::type jacobi_sd(T k, U theta, const Policy& pol);
23866:
23866: template <class T, class U>
23866: typename tools::promote_args<T, U>::type jacobi_sd(T k, U theta);
23866:
23866: template <class T, class U, class Policy>
23866: typename tools::promote_args<T, U>::type jacobi_ds(T k, U theta, const Policy& pol);
23866:
23866: template <class T, class U>
23866: typename tools::promote_args<T, U>::type jacobi_ds(T k, U theta);
23866:
23866: template <class T, class U, class Policy>
23866: typename tools::promote_args<T, U>::type jacobi_nc(T k, U theta, const Policy& pol);
23866:
23866: template <class T, class U>
23866: typename tools::promote_args<T, U>::type jacobi_nc(T k, U theta);
23866:
23866: template <class T, class U, class Policy>
23866: typename tools::promote_args<T, U>::type jacobi_nd(T k, U theta, const Policy& pol);
23866:
23866: template <class T, class U>
23866: typename tools::promote_args<T, U>::type jacobi_nd(T k, U theta);
23866:
23866: template <class T, class U, class Policy>
23866: typename tools::promote_args<T, U>::type jacobi_sc(T k, U theta, const Policy& pol);
23866:
23866: template <class T, class U>
23866: typename tools::promote_args<T, U>::type jacobi_sc(T k, U theta);
23866:
23866: template <class T, class U, class Policy>
23866: typename tools::promote_args<T, U>::type jacobi_cs(T k, U theta, const Policy& pol);
23866:
23866: template <class T, class U>
23866: typename tools::promote_args<T, U>::type jacobi_cs(T k, U theta);
23866:
23866:
23866: template <class T>
23866: typename tools::promote_args<T>::type zeta(T s);
23866:
23866:
23866: template <int N, typename T, class Policy>
23866: typename tools::promote_args<T>::type pow(T base, const Policy& policy);
23866:
23866: template <int N, typename T>
23866: typename tools::promote_args<T>::type pow(T base);
23866:
23866:
23866: template <class T, class U, class Policy>
23866: typename tools::promote_args<T, U>::type nextafter(const T&, const U&, const Policy&);
23866: template <class T, class U>
23866: typename tools::promote_args<T, U>::type nextafter(const T&, const U&);
23866: template <class T, class Policy>
23866: typename tools::promote_args<T>::type float_next(const T&, const Policy&);
23866: template <class T>
23866: typename tools::promote_args<T>::type float_next(const T&);
23866: template <class T, class Policy>
23866: typename tools::promote_args<T>::type float_prior(const T&, const Policy&);
23866: template <class T>
23866: typename tools::promote_args<T>::type float_prior(const T&);
23866: template <class T, class U, class Policy>
23866: typename tools::promote_args<T, U>::type float_distance(const T&, const U&, const Policy&);
23866: template <class T, class U>
23866: typename tools::promote_args<T, U>::type float_distance(const T&, const U&);
23866: template <class T, class Policy>
23866: typename tools::promote_args<T>::type float_advance(T val, int distance, const Policy& pol);
23866: template <class T>
23866: typename tools::promote_args<T>::type float_advance(const T& val, int distance);
23866:
23866: template <class T, class Policy>
23866: typename tools::promote_args<T>::type ulp(const T& val, const Policy& pol);
23866: template <class T>
23866: typename tools::promote_args<T>::type ulp(const T& val);
23866:
23866: template <class T, class U>
23866: typename tools::promote_args<T, U>::type relative_difference(const T&, const U&);
23866: template <class T, class U>
23866: typename tools::promote_args<T, U>::type epsilon_difference(const T&, const U&);
23866:
23866: template<class T>
23866: constexpr T unchecked_bernoulli_b2n(const std::size_t n);
23866: template <class T, class Policy>
23866: T bernoulli_b2n(const int i, const Policy &pol);
23866: template <class T>
23866: T bernoulli_b2n(const int i);
23866: template <class T, class OutputIterator, class Policy>
23866: OutputIterator bernoulli_b2n(const int start_index,
23866: const unsigned number_of_bernoullis_b2n,
23866: OutputIterator out_it,
23866: const Policy& pol);
23866: template <class T, class OutputIterator>
23866: OutputIterator bernoulli_b2n(const int start_index,
23866: const unsigned number_of_bernoullis_b2n,
23866: OutputIterator out_it);
23866: template <class T, class Policy>
23866: T tangent_t2n(const int i, const Policy &pol);
23866: template <class T>
23866: T tangent_t2n(const int i);
23866: template <class T, class OutputIterator, class Policy>
23866: OutputIterator tangent_t2n(const int start_index,
23866: const unsigned number_of_bernoullis_b2n,
23866: OutputIterator out_it,
23866: const Policy& pol);
23866: template <class T, class OutputIterator>
23866: OutputIterator tangent_t2n(const int start_index,
23866: const unsigned number_of_bernoullis_b2n,
23866: OutputIterator out_it);
23866:
23866:
23866: template <class T, class Policy>
23866: typename boost::math::tools::promote_args<T>::type lambert_w0(T z, const Policy& pol);
23866: template <class T>
23866: typename boost::math::tools::promote_args<T>::type lambert_w0(T z);
23866: template <class T, class Policy>
23866: typename boost::math::tools::promote_args<T>::type lambert_wm1(T z, const Policy& pol);
23866: template <class T>
23866: typename boost::math::tools::promote_args<T>::type lambert_wm1(T z);
23866: template <class T, class Policy>
23866: typename boost::math::tools::promote_args<T>::type lambert_w0_prime(T z, const Policy& pol);
23866: template <class T>
23866: typename boost::math::tools::promote_args<T>::type lambert_w0_prime(T z);
23866: template <class T, class Policy>
23866: typename boost::math::tools::promote_args<T>::type lambert_wm1_prime(T z, const Policy& pol);
23866: template <class T>
23866: typename boost::math::tools::promote_args<T>::type lambert_wm1_prime(T z);
23866:
23866:
23866: template <class T1, class T2> typename tools::promote_args<T1, T2>::type hypergeometric_1F0(T1 a, T2 z);
23866: template <class T1, class T2, class Policy> typename tools::promote_args<T1, T2>::type hypergeometric_1F0(T1 a, T2 z, const Policy&);
23866:
23866: template <class T1, class T2> typename tools::promote_args<T1, T2>::type hypergeometric_0F1(T1 b, T2 z);
23866: template <class T1, class T2, class Policy> typename tools::promote_args<T1, T2>::type hypergeometric_0F1(T1 b, T2 z, const Policy&);
23866:
23866: template <class T1, class T2, class T3> typename tools::promote_args<T1, T2, T3>::type hypergeometric_2F0(T1 a1, T2 a2, T3 z);
23866: template <class T1, class T2, class T3, class Policy> typename tools::promote_args<T1, T2, T3>::type hypergeometric_2F0(T1 a1, T2 a2, T3 z, const Policy&);
23866:
23866: template <class T1, class T2, class T3> typename tools::promote_args<T1, T2, T3>::type hypergeometric_1F1(T1 a, T2 b, T3 z);
23866: template <class T1, class T2, class T3, class Policy> typename tools::promote_args<T1, T2, T3>::type hypergeometric_1F1(T1 a, T2 b, T3 z, const Policy&);
23866:
23866:
23866: }
23866: }
23866:
23866:
23866: #define BOOST_MATH_DETAIL_LL_FUNC(Policy) template <class T> inline T modf(const T& v, boost::long_long_type* ipart){ using boost::math::modf; return modf(v, ipart, Policy()); } template <class T> inline boost::long_long_type lltrunc(const T& v){ using boost::math::lltrunc; return lltrunc(v, Policy()); } template <class T> inline boost::long_long_type llround(const T& v){ using boost::math::llround; return llround(v, Policy()); }
23866: # 1140 "/usr/include/boost/math/special_functions/math_fwd.hpp" 3 4
23866: #define BOOST_MATH_DETAIL_11_FUNC(Policy) template <class T, class U, class V> inline typename boost::math::tools::promote_args<T, U>::type hypergeometric_1F1(const T& a, const U& b, const V& z) { return boost::math::hypergeometric_1F1(a, b, z, Policy()); }
23866: # 1149 "/usr/include/boost/math/special_functions/math_fwd.hpp" 3 4
23866: #define BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS(Policy) BOOST_MATH_DETAIL_LL_FUNC(Policy) BOOST_MATH_DETAIL_11_FUNC(Policy) template <class RT1, class RT2> inline typename boost::math::tools::promote_args<RT1, RT2>::type beta(RT1 a, RT2 b) { return ::boost::math::beta(a, b, Policy()); } template <class RT1, class RT2, class A> inline typename boost::math::tools::promote_args<RT1, RT2, A>::type beta(RT1 a, RT2 b, A x){ return ::boost::math::beta(a, b, x, Policy()); } template <class RT1, class RT2, class RT3> inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type betac(RT1 a, RT2 b, RT3 x) { return ::boost::math::betac(a, b, x, Policy()); } template <class RT1, class RT2, class RT3> inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type ibeta(RT1 a, RT2 b, RT3 x){ return ::boost::math::ibeta(a, b, x, Policy()); } template <class RT1, class RT2, class RT3> inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type ibetac(RT1 a, RT2 b, RT3 x){ return ::boost::math::ibetac(a, b, x, Policy()); } template <class T1, class T2, class T3, class T4> inline typename boost::math::tools::promote_args<T1, T2, T3, T4>::type ibeta_inv(T1 a, T2 b, T3 p, T4* py){ return ::boost::math::ibeta_inv(a, b, p, py, Policy()); } template <class RT1, class RT2, class RT3> inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type ibeta_inv(RT1 a, RT2 b, RT3 p){ return ::boost::math::ibeta_inv(a, b, p, Policy()); } template <class T1, class T2, class T3, class T4> inline typename boost::math::tools::promote_args<T1, T2, T3, T4>::type ibetac_inv(T1 a, T2 b, T3 q, T4* py){ return ::boost::math::ibetac_inv(a, b, q, py, Policy()); } template <class RT1, class RT2, class RT3> inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type ibeta_inva(RT1 a, RT2 b, RT3 p){ return ::boost::math::ibeta_inva(a, b, p, Policy()); } template <class T1, class T2, class T3> inline typename boost::math::tools::promote_args<T1, T2, T3>::type ibetac_inva(T1 a, T2 b, T3 q){ return ::boost::math::ibetac_inva(a, b, q, Policy()); } template <class RT1, class RT2, class RT3> inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type ibeta_invb(RT1 a, RT2 b, RT3 p){ return ::boost::math::ibeta_invb(a, b, p, Policy()); } template <class T1, class T2, class T3> inline typename boost::math::tools::promote_args<T1, T2, T3>::type ibetac_invb(T1 a, T2 b, T3 q){ return ::boost::math::ibetac_invb(a, b, q, Policy()); } template <class RT1, class RT2, class RT3> inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type ibetac_inv(RT1 a, RT2 b, RT3 q){ return ::boost::math::ibetac_inv(a, b, q, Policy()); } template <class RT1, class RT2, class RT3> inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type ibeta_derivative(RT1 a, RT2 b, RT3 x){ return ::boost::math::ibeta_derivative(a, b, x, Policy()); } template <class T> T binomial_coefficient(unsigned n, unsigned k){ return ::boost::math::binomial_coefficient<T, Policy>(n, k, Policy()); } template <class RT> inline typename boost::math::tools::promote_args<RT>::type erf(RT z) { return ::boost::math::erf(z, Policy()); } template <class RT> inline typename boost::math::tools::promote_args<RT>::type erfc(RT z){ return ::boost::math::erfc(z, Policy()); } template <class RT> inline typename boost::math::tools::promote_args<RT>::type erf_inv(RT z) { return ::boost::math::erf_inv(z, Policy()); } template <class RT> inline typename boost::math::tools::promote_args<RT>::type erfc_inv(RT z){ return ::boost::math::erfc_inv(z, Policy()); } using boost::math::legendre_next; template <class T> inline typename boost::math::tools::promote_args<T>::type legendre_p(int l, T x){ return ::boost::math::legendre_p(l, x, Policy()); } template <class T> inline typename boost::math::tools::promote_args<T>::type legendre_p_prime(int l, T x){ return ::boost::math::legendre_p(l, x, Policy()); } template <class T> inline typename boost::math::tools::promote_args<T>::type legendre_q(unsigned l, T x){ return ::boost::math::legendre_q(l, x, Policy()); } using ::boost::math::legendre_next; template <class T> inline typename boost::math::tools::promote_args<T>::type legendre_p(int l, int m, T x){ return ::boost::math::legendre_p(l, m, x, Policy()); } using ::boost::math::laguerre_next; template <class T> inline typename boost::math::tools::promote_args<T>::type laguerre(unsigned n, T x){ return ::boost::math::laguerre(n, x, Policy()); } template <class T1, class T2> inline typename boost::math::laguerre_result<T1, T2>::type laguerre(unsigned n, T1 m, T2 x) { return ::boost::math::laguerre(n, m, x, Policy()); } template <class T> inline typename boost::math::tools::promote_args<T>::type hermite(unsigned n, T x){ return ::boost::math::hermite(n, x, Policy()); } using boost::math::hermite_next; using boost::math::chebyshev_next; template<class Real> Real chebyshev_t(unsigned n, Real const & x){ return ::boost::math::chebyshev_t(n, x, Policy()); } template<class Real> Real chebyshev_u(unsigned n, Real const & x){ return ::boost::math::chebyshev_u(n, x, Policy()); } template<class Real> 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 <class T1, class T2> inline std::complex<typename boost::math::tools::promote_args<T1, T2>::type> spherical_harmonic(unsigned n, int m, T1 theta, T2 phi){ return boost::math::spherical_harmonic(n, m, theta, phi, Policy()); } template <class T1, class T2> inline typename boost::math::tools::promote_args<T1, T2>::type spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi){ return ::boost::math::spherical_harmonic_r(n, m, theta, phi, Policy()); } template <class T1, class T2> inline typename boost::math::tools::promote_args<T1, T2>::type spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi){ return boost::math::spherical_harmonic_i(n, m, theta, phi, Policy()); } template <class T1, class T2, class Policy> inline typename boost::math::tools::promote_args<T1, T2>::type spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi, const Policy& pol); template <class T1, class T2, class T3> inline typename boost::math::tools::promote_args<T1, T2, T3>::type ellint_rf(T1 x, T2 y, T3 z){ return ::boost::math::ellint_rf(x, y, z, Policy()); } template <class T1, class T2, class T3> inline typename boost::math::tools::promote_args<T1, T2, T3>::type ellint_rd(T1 x, T2 y, T3 z){ return ::boost::math::ellint_rd(x, y, z, Policy()); } template <class T1, class T2> inline typename boost::math::tools::promote_args<T1, T2>::type ellint_rc(T1 x, T2 y){ return ::boost::math::ellint_rc(x, y, Policy()); } template <class T1, class T2, class T3, class T4> inline typename boost::math::tools::promote_args<T1, T2, T3, T4>::type ellint_rj(T1 x, T2 y, T3 z, T4 p){ return boost::math::ellint_rj(x, y, z, p, Policy()); } template <class T1, class T2, class T3> inline typename boost::math::tools::promote_args<T1, T2, T3>::type ellint_rg(T1 x, T2 y, T3 z){ return ::boost::math::ellint_rg(x, y, z, Policy()); } template <typename T> inline typename boost::math::tools::promote_args<T>::type ellint_2(T k){ return boost::math::ellint_2(k, Policy()); } template <class T1, class T2> inline typename boost::math::tools::promote_args<T1, T2>::type ellint_2(T1 k, T2 phi){ return boost::math::ellint_2(k, phi, Policy()); } template <typename T> inline typename boost::math::tools::promote_args<T>::type ellint_d(T k){ return boost::math::ellint_d(k, Policy()); } template <class T1, class T2> inline typename boost::math::tools::promote_args<T1, T2>::type ellint_d(T1 k, T2 phi){ return boost::math::ellint_d(k, phi, Policy()); } template <class T1, class T2> inline typename boost::math::tools::promote_args<T1, T2>::type jacobi_zeta(T1 k, T2 phi){ return boost::math::jacobi_zeta(k, phi, Policy()); } template <class T1, class T2> inline typename boost::math::tools::promote_args<T1, T2>::type heuman_lambda(T1 k, T2 phi){ return boost::math::heuman_lambda(k, phi, Policy()); } template <typename T> inline typename boost::math::tools::promote_args<T>::type ellint_1(T k){ return boost::math::ellint_1(k, Policy()); } template <class T1, class T2> inline typename boost::math::tools::promote_args<T1, T2>::type ellint_1(T1 k, T2 phi){ return boost::math::ellint_1(k, phi, Policy()); } template <class T1, class T2, class T3> inline typename boost::math::tools::promote_args<T1, T2, T3>::type ellint_3(T1 k, T2 v, T3 phi){ return boost::math::ellint_3(k, v, phi, Policy()); } template <class T1, class T2> inline typename boost::math::tools::promote_args<T1, T2>::type ellint_3(T1 k, T2 v){ return boost::math::ellint_3(k, v, Policy()); } using boost::math::max_factorial; template <class RT> inline RT factorial(unsigned int i) { return boost::math::factorial<RT>(i, Policy()); } using boost::math::unchecked_factorial; template <class RT> inline RT double_factorial(unsigned i){ return boost::math::double_factorial<RT>(i, Policy()); } template <class RT> inline typename boost::math::tools::promote_args<RT>::type falling_factorial(RT x, unsigned n){ return boost::math::falling_factorial(x, n, Policy()); } template <class RT> inline typename boost::math::tools::promote_args<RT>::type rising_factorial(RT x, unsigned n){ return boost::math::rising_factorial(x, n, Policy()); } template <class RT> inline typename boost::math::tools::promote_args<RT>::type tgamma(RT z){ return boost::math::tgamma(z, Policy()); } template <class RT> inline typename boost::math::tools::promote_args<RT>::type tgamma1pm1(RT z){ return boost::math::tgamma1pm1(z, Policy()); } template <class RT1, class RT2> inline typename boost::math::tools::promote_args<RT1, RT2>::type tgamma(RT1 a, RT2 z){ return boost::math::tgamma(a, z, Policy()); } template <class RT> inline typename boost::math::tools::promote_args<RT>::type lgamma(RT z, int* sign){ return boost::math::lgamma(z, sign, Policy()); } template <class RT> inline typename boost::math::tools::promote_args<RT>::type lgamma(RT x){ return boost::math::lgamma(x, Policy()); } template <class RT1, class RT2> inline typename boost::math::tools::promote_args<RT1, RT2>::type tgamma_lower(RT1 a, RT2 z){ return boost::math::tgamma_lower(a, z, Policy()); } template <class RT1, class RT2> inline typename boost::math::tools::promote_args<RT1, RT2>::type gamma_q(RT1 a, RT2 z){ return boost::math::gamma_q(a, z, Policy()); } template <class RT1, class RT2> inline typename boost::math::tools::promote_args<RT1, RT2>::type gamma_p(RT1 a, RT2 z){ return boost::math::gamma_p(a, z, Policy()); } template <class T1, class T2> inline typename boost::math::tools::promote_args<T1, T2>::type tgamma_delta_ratio(T1 z, T2 delta){ return boost::math::tgamma_delta_ratio(z, delta, Policy()); } template <class T1, class T2> inline typename boost::math::tools::promote_args<T1, T2>::type tgamma_ratio(T1 a, T2 b) { return boost::math::tgamma_ratio(a, b, Policy()); } template <class T1, class T2> inline typename boost::math::tools::promote_args<T1, T2>::type gamma_p_derivative(T1 a, T2 x){ return boost::math::gamma_p_derivative(a, x, Policy()); } template <class T1, class T2> inline typename boost::math::tools::promote_args<T1, T2>::type gamma_p_inv(T1 a, T2 p){ return boost::math::gamma_p_inv(a, p, Policy()); } template <class T1, class T2> inline typename boost::math::tools::promote_args<T1, T2>::type gamma_p_inva(T1 a, T2 p){ return boost::math::gamma_p_inva(a, p, Policy()); } template <class T1, class T2> inline typename boost::math::tools::promote_args<T1, T2>::type gamma_q_inv(T1 a, T2 q){ return boost::math::gamma_q_inv(a, q, Policy()); } template <class T1, class T2> inline typename boost::math::tools::promote_args<T1, T2>::type gamma_q_inva(T1 a, T2 q){ return boost::math::gamma_q_inva(a, q, Policy()); } template <class T> inline typename boost::math::tools::promote_args<T>::type digamma(T x){ return boost::math::digamma(x, Policy()); } template <class T> inline typename boost::math::tools::promote_args<T>::type trigamma(T x){ return boost::math::trigamma(x, Policy()); } template <class T> inline typename boost::math::tools::promote_args<T>::type polygamma(int n, T x){ return boost::math::polygamma(n, x, Policy()); } template <class T1, class T2> inline typename boost::math::tools::promote_args<T1, T2>::type hypot(T1 x, T2 y){ return boost::math::hypot(x, y, Policy()); } template <class RT> inline typename boost::math::tools::promote_args<RT>::type cbrt(RT z){ return boost::math::cbrt(z, Policy()); } template <class T> inline typename boost::math::tools::promote_args<T>::type log1p(T x){ return boost::math::log1p(x, Policy()); } template <class T> inline typename boost::math::tools::promote_args<T>::type log1pmx(T x){ return boost::math::log1pmx(x, Policy()); } template <class T> inline typename boost::math::tools::promote_args<T>::type expm1(T x){ return boost::math::expm1(x, Policy()); } template <class T1, class T2> inline typename boost::math::tools::promote_args<T1, T2>::type powm1(const T1 a, const T2 z){ return boost::math::powm1(a, z, Policy()); } template <class T> inline typename boost::math::tools::promote_args<T>::type sqrt1pm1(const T& val){ return boost::math::sqrt1pm1(val, Policy()); } template <class T> inline typename boost::math::tools::promote_args<T>::type sinc_pi(T x){ return boost::math::sinc_pi(x, Policy()); } template <class T> inline typename boost::math::tools::promote_args<T>::type sinhc_pi(T x){ return boost::math::sinhc_pi(x, Policy()); } template<typename T> inline typename boost::math::tools::promote_args<T>::type asinh(const T x){ return boost::math::asinh(x, Policy()); } template<typename T> inline typename boost::math::tools::promote_args<T>::type acosh(const T x){ return boost::math::acosh(x, Policy()); } template<typename T> inline typename boost::math::tools::promote_args<T>::type atanh(const T x){ return boost::math::atanh(x, Policy()); } template <class T1, class T2> inline typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type cyl_bessel_j(T1 v, T2 x) { return boost::math::cyl_bessel_j(v, x, Policy()); } template <class T1, class T2> inline typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type cyl_bessel_j_prime(T1 v, T2 x) { return boost::math::cyl_bessel_j_prime(v, x, Policy()); } template <class T> inline typename boost::math::detail::bessel_traits<T, T, Policy >::result_type sph_bessel(unsigned v, T x) { return boost::math::sph_bessel(v, x, Policy()); } template <class T> inline typename boost::math::detail::bessel_traits<T, T, Policy >::result_type sph_bessel_prime(unsigned v, T x) { return boost::math::sph_bessel_prime(v, x, Policy()); } template <class T1, class T2> inline typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type cyl_bessel_i(T1 v, T2 x) { return boost::math::cyl_bessel_i(v, x, Policy()); } template <class T1, class T2> inline typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type cyl_bessel_i_prime(T1 v, T2 x) { return boost::math::cyl_bessel_i_prime(v, x, Policy()); } template <class T1, class T2> inline typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type cyl_bessel_k(T1 v, T2 x) { return boost::math::cyl_bessel_k(v, x, Policy()); } template <class T1, class T2> inline typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type cyl_bessel_k_prime(T1 v, T2 x) { return boost::math::cyl_bessel_k_prime(v, x, Policy()); } template <class T1, class T2> inline typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type cyl_neumann(T1 v, T2 x){ return boost::math::cyl_neumann(v, x, Policy()); } template <class T1, class T2> inline typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type cyl_neumann_prime(T1 v, T2 x){ return boost::math::cyl_neumann_prime(v, x, Policy()); } template <class T> inline typename boost::math::detail::bessel_traits<T, T, Policy >::result_type sph_neumann(unsigned v, T x){ return boost::math::sph_neumann(v, x, Policy()); } template <class T> inline typename boost::math::detail::bessel_traits<T, T, Policy >::result_type sph_neumann_prime(unsigned v, T x){ return boost::math::sph_neumann_prime(v, x, Policy()); } template <class T> inline typename boost::math::detail::bessel_traits<T, T, Policy >::result_type cyl_bessel_j_zero(T v, int m) { return boost::math::cyl_bessel_j_zero(v, m, Policy()); }template <class OutputIterator, class T> 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 <class T> inline typename boost::math::detail::bessel_traits<T, T, Policy >::result_type cyl_neumann_zero(T v, int m) { return boost::math::cyl_neumann_zero(v, m, Policy()); }template <class OutputIterator, class T> 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 <class T> inline typename boost::math::tools::promote_args<T>::type sin_pi(T x){ return boost::math::sin_pi(x); } template <class T> inline typename boost::math::tools::promote_args<T>::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 <class T, class U> inline typename boost::math::tools::promote_args<T,U>::type expint(T const& z, U const& u) { return boost::math::expint(z, u, Policy()); } template <class T> inline typename boost::math::tools::promote_args<T>::type expint(T z){ return boost::math::expint(z, Policy()); } template <class T> inline typename boost::math::tools::promote_args<T>::type zeta(T s){ return boost::math::zeta(s, Policy()); } template <class T> inline T round(const T& v){ using boost::math::round; return round(v, Policy()); } template <class T> inline int iround(const T& v){ using boost::math::iround; return iround(v, Policy()); } template <class T> inline long lround(const T& v){ using boost::math::lround; return lround(v, Policy()); } template <class T> inline T trunc(const T& v){ using boost::math::trunc; return trunc(v, Policy()); } template <class T> inline int itrunc(const T& v){ using boost::math::itrunc; return itrunc(v, Policy()); } template <class T> inline long ltrunc(const T& v){ using boost::math::ltrunc; return ltrunc(v, Policy()); } template <class T> inline T modf(const T& v, T* ipart){ using boost::math::modf; return modf(v, ipart, Policy()); } template <class T> inline T modf(const T& v, int* ipart){ using boost::math::modf; return modf(v, ipart, Policy()); } template <class T> inline T modf(const T& v, long* ipart){ using boost::math::modf; return modf(v, ipart, Policy()); } template <int N, class T> inline typename boost::math::tools::promote_args<T>::type pow(T v){ return boost::math::pow<N>(v, Policy()); } template <class T> T nextafter(const T& a, const T& b){ return boost::math::nextafter(a, b, Policy()); } template <class T> T float_next(const T& a){ return boost::math::float_next(a, Policy()); } template <class T> T float_prior(const T& a){ return boost::math::float_prior(a, Policy()); } template <class T> T float_distance(const T& a, const T& b){ return boost::math::float_distance(a, b, Policy()); } template <class T> T ulp(const T& a){ return boost::math::ulp(a, Policy()); } template <class RT1, class RT2> inline typename boost::math::tools::promote_args<RT1, RT2>::type owens_t(RT1 a, RT2 z){ return boost::math::owens_t(a, z, Policy()); } template <class T1, class T2> inline std::complex<typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type> cyl_hankel_1(T1 v, T2 x) { return boost::math::cyl_hankel_1(v, x, Policy()); } template <class T1, class T2> inline std::complex<typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type> cyl_hankel_2(T1 v, T2 x) { return boost::math::cyl_hankel_2(v, x, Policy()); } template <class T1, class T2> inline std::complex<typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type> sph_hankel_1(T1 v, T2 x) { return boost::math::sph_hankel_1(v, x, Policy()); } template <class T1, class T2> inline std::complex<typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type> sph_hankel_2(T1 v, T2 x) { return boost::math::sph_hankel_2(v, x, Policy()); } template <class T> inline typename boost::math::tools::promote_args<T>::type jacobi_elliptic(T k, T theta, T* pcn, T* pdn) { return boost::math::jacobi_elliptic(k, theta, pcn, pdn, Policy()); } template <class U, class T> inline typename boost::math::tools::promote_args<T, U>::type jacobi_sn(U k, T theta) { return boost::math::jacobi_sn(k, theta, Policy()); } template <class T, class U> inline typename boost::math::tools::promote_args<T, U>::type jacobi_cn(T k, U theta) { return boost::math::jacobi_cn(k, theta, Policy()); } template <class T, class U> inline typename boost::math::tools::promote_args<T, U>::type jacobi_dn(T k, U theta) { return boost::math::jacobi_dn(k, theta, Policy()); } template <class T, class U> inline typename boost::math::tools::promote_args<T, U>::type jacobi_cd(T k, U theta) { return boost::math::jacobi_cd(k, theta, Policy()); } template <class T, class U> inline typename boost::math::tools::promote_args<T, U>::type jacobi_dc(T k, U theta) { return boost::math::jacobi_dc(k, theta, Policy()); } template <class T, class U> inline typename boost::math::tools::promote_args<T, U>::type jacobi_ns(T k, U theta) { return boost::math::jacobi_ns(k, theta, Policy()); } template <class T, class U> inline typename boost::math::tools::promote_args<T, U>::type jacobi_sd(T k, U theta) { return boost::math::jacobi_sd(k, theta, Policy()); } template <class T, class U> inline typename boost::math::tools::promote_args<T, U>::type jacobi_ds(T k, U theta) { return boost::math::jacobi_ds(k, theta, Policy()); } template <class T, class U> inline typename boost::math::tools::promote_args<T, U>::type jacobi_nc(T k, U theta) { return boost::math::jacobi_nc(k, theta, Policy()); } template <class T, class U> inline typename boost::math::tools::promote_args<T, U>::type jacobi_nd(T k, U theta) { return boost::math::jacobi_nd(k, theta, Policy()); } template <class T, class U> inline typename boost::math::tools::promote_args<T, U>::type jacobi_sc(T k, U theta) { return boost::math::jacobi_sc(k, theta, Policy()); } template <class T, class U> inline typename boost::math::tools::promote_args<T, U>::type jacobi_cs(T k, U theta) { return boost::math::jacobi_cs(k, theta, Policy()); } template <class T> inline typename boost::math::tools::promote_args<T>::type airy_ai(T x) { return boost::math::airy_ai(x, Policy()); } template <class T> inline typename boost::math::tools::promote_args<T>::type airy_bi(T x) { return boost::math::airy_bi(x, Policy()); } template <class T> inline typename boost::math::tools::promote_args<T>::type airy_ai_prime(T x) { return boost::math::airy_ai_prime(x, Policy()); } template <class T> inline typename boost::math::tools::promote_args<T>::type airy_bi_prime(T x) { return boost::math::airy_bi_prime(x, Policy()); } template <class T> inline T airy_ai_zero(int m) { return boost::math::airy_ai_zero<T>(m, Policy()); } template <class T, class OutputIterator> OutputIterator airy_ai_zero(int start_index, unsigned number_of_zeros, OutputIterator out_it) { return boost::math::airy_ai_zero<T>(start_index, number_of_zeros, out_it, Policy()); } template <class T> inline T airy_bi_zero(int m) { return boost::math::airy_bi_zero<T>(m, Policy()); } template <class T, class OutputIterator> OutputIterator airy_bi_zero(int start_index, unsigned number_of_zeros, OutputIterator out_it) { return boost::math::airy_bi_zero<T>(start_index, number_of_zeros, out_it, Policy()); } template <class T> T bernoulli_b2n(const int i) { return boost::math::bernoulli_b2n<T>(i, Policy()); } template <class T, class OutputIterator> OutputIterator bernoulli_b2n(int start_index, unsigned number_of_bernoullis_b2n, OutputIterator out_it) { return boost::math::bernoulli_b2n<T>(start_index, number_of_bernoullis_b2n, out_it, Policy()); } template <class T> T tangent_t2n(const int i) { return boost::math::tangent_t2n<T>(i, Policy()); } template <class T, class OutputIterator> OutputIterator tangent_t2n(int start_index, unsigned number_of_bernoullis_b2n, OutputIterator out_it) { return boost::math::tangent_t2n<T>(start_index, number_of_bernoullis_b2n, out_it, Policy()); } template <class T> inline typename boost::math::tools::promote_args<T>::type lambert_w0(T z) { return boost::math::lambert_w0(z, Policy()); } template <class T> inline typename boost::math::tools::promote_args<T>::type lambert_wm1(T z) { return boost::math::lambert_w0(z, Policy()); } template <class T> inline typename boost::math::tools::promote_args<T>::type lambert_w0_prime(T z) { return boost::math::lambert_w0(z, Policy()); } template <class T> inline typename boost::math::tools::promote_args<T>::type lambert_wm1_prime(T z) { return boost::math::lambert_w0(z, Policy()); } template <class T, class U> inline typename boost::math::tools::promote_args<T, U>::type hypergeometric_1F0(const T& a, const U& z) { return boost::math::hypergeometric_1F0(a, z, Policy()); } template <class T, class U> inline typename boost::math::tools::promote_args<T, U>::type hypergeometric_0F1(const T& a, const U& z) { return boost::math::hypergeometric_0F1(a, z, Policy()); } template <class T, class U, class V> inline typename boost::math::tools::promote_args<T, U>::type hypergeometric_2F0(const T& a1, const U& a2, const V& z) { return boost::math::hypergeometric_2F0(a1, a2, z, Policy()); }
23866: # 18 "/usr/include/boost/math/special_functions/sign.hpp" 2 3 4
23866: # 1 "/usr/include/boost/math/special_functions/detail/fp_traits.hpp" 1 3 4
23866:
23866:
23866:
23866: #define BOOST_MATH_FP_TRAITS_HPP
23866: # 23 "/usr/include/boost/math/special_functions/detail/fp_traits.hpp" 3 4
23866: # 1 "/usr/include/c++/10/cstring" 1 3 4
23866: # 39 "/usr/include/c++/10/cstring" 3 4
23866:
23866: # 40 "/usr/include/c++/10/cstring" 3
23866: # 24 "/usr/include/boost/math/special_functions/detail/fp_traits.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/assert.hpp" 1 3 4
23866: # 32 "/usr/include/boost/assert.hpp" 3 4
23866: #undef BOOST_ASSERT
23866: #undef BOOST_ASSERT_MSG
23866: #undef BOOST_ASSERT_IS_VOID
23866: # 58 "/usr/include/boost/assert.hpp" 3 4
23866: # 1 "/usr/include/assert.h" 1 3 4
23866: # 24 "/usr/include/assert.h" 3 4
23866: #undef _ASSERT_H
23866: #undef assert
23866: #undef __ASSERT_VOID_CAST
23866:
23866:
23866: #undef assert_perror
23866:
23866:
23866:
23866:
23866: #define _ASSERT_H 1
23866:
23866:
23866:
23866: #define __ASSERT_VOID_CAST static_cast<void>
23866: # 92 "/usr/include/assert.h" 3 4
23866: #define assert(expr) (static_cast <bool> (expr) ? void (0) : __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 117 "/usr/include/assert.h" 3 4
23866: #define assert_perror(errnum) (!(errnum) ? __ASSERT_VOID_CAST (0) : __assert_perror_fail ((errnum), __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 129 "/usr/include/assert.h" 3 4
23866: #define __ASSERT_FUNCTION __extension__ __PRETTY_FUNCTION__
23866: # 59 "/usr/include/boost/assert.hpp" 2 3 4
23866:
23866: #define BOOST_ASSERT(expr) assert(expr)
23866: #define BOOST_ASSERT_MSG(expr,msg) assert((expr)&&(msg))
23866: # 72 "/usr/include/boost/assert.hpp" 3 4
23866: #undef BOOST_VERIFY
23866: #undef BOOST_VERIFY_MSG
23866: # 82 "/usr/include/boost/assert.hpp" 3 4
23866: #define BOOST_VERIFY(expr) BOOST_ASSERT(expr)
23866: #define BOOST_VERIFY_MSG(expr,msg) BOOST_ASSERT_MSG(expr,msg)
23866: # 26 "/usr/include/boost/math/special_functions/detail/fp_traits.hpp" 2 3 4
23866: # 1 "/usr/include/boost/cstdint.hpp" 1 3 4
23866: # 27 "/usr/include/boost/math/special_functions/detail/fp_traits.hpp" 2 3 4
23866: # 1 "/usr/include/boost/predef/other/endian.h" 1 3 4
23866: # 9 "/usr/include/boost/predef/other/endian.h" 3 4
23866: #define BOOST_PREDEF_ENDIAN_H
23866:
23866:
23866: # 1 "/usr/include/boost/predef/make.h" 1 3 4
23866: # 13 "/usr/include/boost/predef/other/endian.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/library/c/gnu.h" 1 3 4
23866: # 9 "/usr/include/boost/predef/library/c/gnu.h" 3 4
23866: #define BOOST_PREDEF_LIBRARY_C_GNU_H
23866:
23866:
23866: # 1 "/usr/include/boost/predef/make.h" 1 3 4
23866: # 13 "/usr/include/boost/predef/library/c/gnu.h" 2 3 4
23866:
23866: # 1 "/usr/include/boost/predef/library/c/_prefix.h" 1 3 4
23866: # 9 "/usr/include/boost/predef/library/c/_prefix.h" 3 4
23866: #define BOOST_PREDEF_LIBRARY_C__PREFIX_H
23866:
23866: # 1 "/usr/include/boost/predef/detail/_cassert.h" 1 3 4
23866: # 9 "/usr/include/boost/predef/detail/_cassert.h" 3 4
23866: #define BOOST_PREDEF_DETAIL__CASSERT_H
23866:
23866:
23866: # 1 "/usr/include/c++/10/cassert" 1 3 4
23866: # 41 "/usr/include/c++/10/cassert" 3 4
23866:
23866: # 42 "/usr/include/c++/10/cassert" 3
23866:
23866:
23866: # 1 "/usr/include/assert.h" 1 3 4
23866: # 24 "/usr/include/assert.h" 3 4
23866: #undef _ASSERT_H
23866: #undef assert
23866: #undef __ASSERT_VOID_CAST
23866:
23866:
23866: #undef assert_perror
23866:
23866:
23866:
23866:
23866: #define _ASSERT_H 1
23866:
23866:
23866:
23866: #define __ASSERT_VOID_CAST static_cast<void>
23866: # 92 "/usr/include/assert.h" 3 4
23866: #define assert(expr) (static_cast <bool> (expr) ? void (0) : __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 117 "/usr/include/assert.h" 3 4
23866: #define assert_perror(errnum) (!(errnum) ? __ASSERT_VOID_CAST (0) : __assert_perror_fail ((errnum), __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 129 "/usr/include/assert.h" 3 4
23866: #define __ASSERT_FUNCTION __extension__ __PRETTY_FUNCTION__
23866: # 45 "/usr/include/c++/10/cassert" 2 3
23866: # 13 "/usr/include/boost/predef/detail/_cassert.h" 2 3 4
23866: # 12 "/usr/include/boost/predef/library/c/_prefix.h" 2 3 4
23866: # 15 "/usr/include/boost/predef/library/c/gnu.h" 2 3 4
23866:
23866:
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/stddef.h" 1 3 4
23866: # 18 "/usr/include/boost/predef/library/c/gnu.h" 2 3 4
23866: # 40 "/usr/include/boost/predef/library/c/gnu.h" 3 4
23866: #define BOOST_LIB_C_GNU BOOST_VERSION_NUMBER_NOT_AVAILABLE
23866:
23866:
23866: #undef BOOST_LIB_C_GNU
23866:
23866: #define BOOST_LIB_C_GNU BOOST_VERSION_NUMBER(__GLIBC__,__GLIBC_MINOR__,0)
23866: # 54 "/usr/include/boost/predef/library/c/gnu.h" 3 4
23866: #define BOOST_LIB_C_GNU_AVAILABLE
23866:
23866:
23866: #define BOOST_LIB_C_GNU_NAME "GNU"
23866:
23866:
23866:
23866:
23866:
23866: # 14 "/usr/include/boost/predef/other/endian.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/macos.h" 1 3 4
23866: # 10 "/usr/include/boost/predef/os/macos.h" 3 4
23866: #define BOOST_PREDEF_OS_MACOS_H
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/predef/os/ios.h" 1 3 4
23866: # 10 "/usr/include/boost/predef/os/ios.h" 3 4
23866: #define BOOST_PREDEF_OS_IOS_H
23866:
23866:
23866: # 1 "/usr/include/boost/predef/make.h" 1 3 4
23866: # 14 "/usr/include/boost/predef/os/ios.h" 2 3 4
23866: # 32 "/usr/include/boost/predef/os/ios.h" 3 4
23866: #define BOOST_OS_IOS BOOST_VERSION_NUMBER_NOT_AVAILABLE
23866: # 47 "/usr/include/boost/predef/os/ios.h" 3 4
23866: #define BOOST_OS_IOS_NAME "iOS"
23866:
23866:
23866:
23866:
23866:
23866: # 18 "/usr/include/boost/predef/os/macos.h" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/predef/make.h" 1 3 4
23866: # 21 "/usr/include/boost/predef/os/macos.h" 2 3 4
23866: # 41 "/usr/include/boost/predef/os/macos.h" 3 4
23866: #define BOOST_OS_MACOS BOOST_VERSION_NUMBER_NOT_AVAILABLE
23866: # 61 "/usr/include/boost/predef/os/macos.h" 3 4
23866: #define BOOST_OS_MACOS_NAME "Mac OS"
23866:
23866:
23866:
23866:
23866:
23866: # 15 "/usr/include/boost/predef/other/endian.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd.h" 1 3 4
23866: # 9 "/usr/include/boost/predef/os/bsd.h" 3 4
23866: #define BOOST_PREDEF_OS_BSD_H
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/predef/os/macos.h" 1 3 4
23866: # 66 "/usr/include/boost/predef/os/macos.h" 3 4
23866:
23866: # 17 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/predef/make.h" 1 3 4
23866: # 20 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 53 "/usr/include/boost/predef/os/bsd.h" 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/bsdi.h" 1 3 4
23866: # 9 "/usr/include/boost/predef/os/bsd/bsdi.h" 3 4
23866: #define BOOST_PREDEF_OS_BSD_BSDI_H
23866:
23866: # 1 "/usr/include/boost/predef/os/bsd.h" 1 3 4
23866: # 95 "/usr/include/boost/predef/os/bsd.h" 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/bsdi.h" 1 3 4
23866: # 49 "/usr/include/boost/predef/os/bsd/bsdi.h" 3 4
23866:
23866: # 96 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/dragonfly.h" 1 3 4
23866: # 9 "/usr/include/boost/predef/os/bsd/dragonfly.h" 3 4
23866: #define BOOST_PREDEF_OS_BSD_DRAGONFLY_H
23866:
23866: # 1 "/usr/include/boost/predef/os/bsd.h" 1 3 4
23866: # 95 "/usr/include/boost/predef/os/bsd.h" 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/bsdi.h" 1 3 4
23866: # 49 "/usr/include/boost/predef/os/bsd/bsdi.h" 3 4
23866:
23866: # 96 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/dragonfly.h" 1 3 4
23866: # 51 "/usr/include/boost/predef/os/bsd/dragonfly.h" 3 4
23866:
23866: # 97 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/free.h" 1 3 4
23866: # 9 "/usr/include/boost/predef/os/bsd/free.h" 3 4
23866: #define BOOST_PREDEF_OS_BSD_FREE_H
23866:
23866: # 1 "/usr/include/boost/predef/os/bsd.h" 1 3 4
23866: # 95 "/usr/include/boost/predef/os/bsd.h" 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/bsdi.h" 1 3 4
23866: # 49 "/usr/include/boost/predef/os/bsd/bsdi.h" 3 4
23866:
23866: # 96 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/dragonfly.h" 1 3 4
23866: # 51 "/usr/include/boost/predef/os/bsd/dragonfly.h" 3 4
23866:
23866: # 97 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/free.h" 1 3 4
23866: # 68 "/usr/include/boost/predef/os/bsd/free.h" 3 4
23866:
23866: # 98 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/open.h" 1 3 4
23866: # 9 "/usr/include/boost/predef/os/bsd/open.h" 3 4
23866: #define BOOST_PREDEF_OS_BSD_OPEN_H
23866:
23866: # 1 "/usr/include/boost/predef/os/bsd.h" 1 3 4
23866: # 95 "/usr/include/boost/predef/os/bsd.h" 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/bsdi.h" 1 3 4
23866: # 49 "/usr/include/boost/predef/os/bsd/bsdi.h" 3 4
23866:
23866: # 96 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/dragonfly.h" 1 3 4
23866: # 51 "/usr/include/boost/predef/os/bsd/dragonfly.h" 3 4
23866:
23866: # 97 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/free.h" 1 3 4
23866: # 68 "/usr/include/boost/predef/os/bsd/free.h" 3 4
23866:
23866: # 98 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/open.h" 1 3 4
23866: # 252 "/usr/include/boost/predef/os/bsd/open.h" 3 4
23866:
23866: # 99 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/net.h" 1 3 4
23866: # 9 "/usr/include/boost/predef/os/bsd/net.h" 3 4
23866: #define BOOST_PREDEF_OS_BSD_NET_H
23866:
23866: # 1 "/usr/include/boost/predef/os/bsd.h" 1 3 4
23866: # 95 "/usr/include/boost/predef/os/bsd.h" 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/bsdi.h" 1 3 4
23866: # 49 "/usr/include/boost/predef/os/bsd/bsdi.h" 3 4
23866:
23866: # 96 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/dragonfly.h" 1 3 4
23866: # 51 "/usr/include/boost/predef/os/bsd/dragonfly.h" 3 4
23866:
23866: # 97 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/free.h" 1 3 4
23866: # 68 "/usr/include/boost/predef/os/bsd/free.h" 3 4
23866:
23866: # 98 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/open.h" 1 3 4
23866: # 252 "/usr/include/boost/predef/os/bsd/open.h" 3 4
23866:
23866: # 99 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/net.h" 1 3 4
23866: # 85 "/usr/include/boost/predef/os/bsd/net.h" 3 4
23866:
23866: # 100 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866:
23866:
23866:
23866: # 12 "/usr/include/boost/predef/os/bsd/net.h" 2 3 4
23866: # 33 "/usr/include/boost/predef/os/bsd/net.h" 3 4
23866: #define BOOST_OS_BSD_NET BOOST_VERSION_NUMBER_NOT_AVAILABLE
23866: # 80 "/usr/include/boost/predef/os/bsd/net.h" 3 4
23866: #define BOOST_OS_BSD_NET_NAME "NetBSD"
23866:
23866:
23866:
23866:
23866:
23866: # 100 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866:
23866:
23866:
23866: # 12 "/usr/include/boost/predef/os/bsd/open.h" 2 3 4
23866: # 77 "/usr/include/boost/predef/os/bsd/open.h" 3 4
23866: #define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER_NOT_AVAILABLE
23866: # 247 "/usr/include/boost/predef/os/bsd/open.h" 3 4
23866: #define BOOST_OS_BSD_OPEN_NAME "OpenBSD"
23866:
23866:
23866:
23866:
23866:
23866: # 99 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/net.h" 1 3 4
23866: # 85 "/usr/include/boost/predef/os/bsd/net.h" 3 4
23866:
23866: # 100 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866:
23866:
23866:
23866: # 12 "/usr/include/boost/predef/os/bsd/free.h" 2 3 4
23866: # 28 "/usr/include/boost/predef/os/bsd/free.h" 3 4
23866: #define BOOST_OS_BSD_FREE BOOST_VERSION_NUMBER_NOT_AVAILABLE
23866: # 63 "/usr/include/boost/predef/os/bsd/free.h" 3 4
23866: #define BOOST_OS_BSD_FREE_NAME "Free BSD"
23866:
23866:
23866:
23866:
23866:
23866: # 98 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/open.h" 1 3 4
23866: # 252 "/usr/include/boost/predef/os/bsd/open.h" 3 4
23866:
23866: # 99 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/net.h" 1 3 4
23866: # 85 "/usr/include/boost/predef/os/bsd/net.h" 3 4
23866:
23866: # 100 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866:
23866:
23866:
23866: # 12 "/usr/include/boost/predef/os/bsd/dragonfly.h" 2 3 4
23866: # 26 "/usr/include/boost/predef/os/bsd/dragonfly.h" 3 4
23866: #define BOOST_OS_BSD_DRAGONFLY BOOST_VERSION_NUMBER_NOT_AVAILABLE
23866: # 46 "/usr/include/boost/predef/os/bsd/dragonfly.h" 3 4
23866: #define BOOST_OS_BSD_DRAGONFLY_NAME "DragonFly BSD"
23866:
23866:
23866:
23866:
23866:
23866: # 97 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/free.h" 1 3 4
23866: # 68 "/usr/include/boost/predef/os/bsd/free.h" 3 4
23866:
23866: # 98 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/open.h" 1 3 4
23866: # 252 "/usr/include/boost/predef/os/bsd/open.h" 3 4
23866:
23866: # 99 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/net.h" 1 3 4
23866: # 85 "/usr/include/boost/predef/os/bsd/net.h" 3 4
23866:
23866: # 100 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866:
23866:
23866:
23866: # 12 "/usr/include/boost/predef/os/bsd/bsdi.h" 2 3 4
23866: # 26 "/usr/include/boost/predef/os/bsd/bsdi.h" 3 4
23866: #define BOOST_OS_BSD_BSDI BOOST_VERSION_NUMBER_NOT_AVAILABLE
23866: # 44 "/usr/include/boost/predef/os/bsd/bsdi.h" 3 4
23866: #define BOOST_OS_BSD_BSDI_NAME "BSDi BSD/OS"
23866:
23866:
23866:
23866:
23866:
23866: # 54 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/dragonfly.h" 1 3 4
23866: # 51 "/usr/include/boost/predef/os/bsd/dragonfly.h" 3 4
23866:
23866: # 55 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/free.h" 1 3 4
23866: # 68 "/usr/include/boost/predef/os/bsd/free.h" 3 4
23866:
23866: # 56 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/open.h" 1 3 4
23866: # 252 "/usr/include/boost/predef/os/bsd/open.h" 3 4
23866:
23866: # 57 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/net.h" 1 3 4
23866: # 85 "/usr/include/boost/predef/os/bsd/net.h" 3 4
23866:
23866: # 58 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866:
23866:
23866: #define BOOST_OS_BSD BOOST_VERSION_NUMBER_NOT_AVAILABLE
23866: # 91 "/usr/include/boost/predef/os/bsd.h" 3 4
23866: #define BOOST_OS_BSD_NAME "BSD"
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/predef/os/bsd/bsdi.h" 1 3 4
23866: # 49 "/usr/include/boost/predef/os/bsd/bsdi.h" 3 4
23866:
23866: # 96 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/dragonfly.h" 1 3 4
23866: # 51 "/usr/include/boost/predef/os/bsd/dragonfly.h" 3 4
23866:
23866: # 97 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/free.h" 1 3 4
23866: # 68 "/usr/include/boost/predef/os/bsd/free.h" 3 4
23866:
23866: # 98 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/open.h" 1 3 4
23866: # 252 "/usr/include/boost/predef/os/bsd/open.h" 3 4
23866:
23866: # 99 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/os/bsd/net.h" 1 3 4
23866: # 85 "/usr/include/boost/predef/os/bsd/net.h" 3 4
23866:
23866: # 100 "/usr/include/boost/predef/os/bsd.h" 2 3 4
23866:
23866:
23866:
23866: # 16 "/usr/include/boost/predef/other/endian.h" 2 3 4
23866: # 1 "/usr/include/boost/predef/platform/android.h" 1 3 4
23866: # 9 "/usr/include/boost/predef/platform/android.h" 3 4
23866: #define BOOST_PREDEF_PLAT_ANDROID_H
23866:
23866:
23866: # 1 "/usr/include/boost/predef/make.h" 1 3 4
23866: # 13 "/usr/include/boost/predef/platform/android.h" 2 3 4
23866: # 27 "/usr/include/boost/predef/platform/android.h" 3 4
23866: #define BOOST_PLAT_ANDROID BOOST_VERSION_NUMBER_NOT_AVAILABLE
23866: # 39 "/usr/include/boost/predef/platform/android.h" 3 4
23866: #define BOOST_PLAT_ANDROID_NAME "Android"
23866:
23866:
23866:
23866:
23866:
23866: # 17 "/usr/include/boost/predef/other/endian.h" 2 3 4
23866: # 47 "/usr/include/boost/predef/other/endian.h" 3 4
23866: #define BOOST_ENDIAN_BIG_BYTE BOOST_VERSION_NUMBER_NOT_AVAILABLE
23866: #define BOOST_ENDIAN_BIG_WORD BOOST_VERSION_NUMBER_NOT_AVAILABLE
23866: #define BOOST_ENDIAN_LITTLE_BYTE BOOST_VERSION_NUMBER_NOT_AVAILABLE
23866: #define BOOST_ENDIAN_LITTLE_WORD BOOST_VERSION_NUMBER_NOT_AVAILABLE
23866: # 78 "/usr/include/boost/predef/other/endian.h" 3 4
23866: #undef BOOST_ENDIAN_LITTLE_BYTE
23866: #define BOOST_ENDIAN_LITTLE_BYTE BOOST_VERSION_NUMBER_AVAILABLE
23866: # 181 "/usr/include/boost/predef/other/endian.h" 3 4
23866: #define BOOST_ENDIAN_LITTLE_BYTE_AVAILABLE
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_ENDIAN_BIG_BYTE_NAME "Byte-Swapped Big-Endian"
23866: #define BOOST_ENDIAN_BIG_WORD_NAME "Word-Swapped Big-Endian"
23866: #define BOOST_ENDIAN_LITTLE_BYTE_NAME "Byte-Swapped Little-Endian"
23866: #define BOOST_ENDIAN_LITTLE_WORD_NAME "Word-Swapped Little-Endian"
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 28 "/usr/include/boost/math/special_functions/detail/fp_traits.hpp" 2 3 4
23866: # 45 "/usr/include/boost/math/special_functions/detail/fp_traits.hpp" 3 4
23866: #define BOOST_HAS_FPCLASSIFY
23866: # 59 "/usr/include/boost/math/special_functions/detail/fp_traits.hpp" 3 4
23866: #define BOOST_FPCLASSIFY_PREFIX ::std::
23866: # 81 "/usr/include/boost/math/special_functions/detail/fp_traits.hpp" 3 4
23866: namespace boost {
23866: namespace math {
23866: namespace detail {
23866: # 92 "/usr/include/boost/math/special_functions/detail/fp_traits.hpp" 3 4
23866: struct native_tag {};
23866: template <bool has_limits>
23866: struct generic_tag {};
23866: struct ieee_tag {};
23866: struct ieee_copy_all_bits_tag : public ieee_tag {};
23866: struct ieee_copy_leading_bits_tag : public ieee_tag {};
23866: # 125 "/usr/include/boost/math/special_functions/detail/fp_traits.hpp" 3 4
23866: struct unknown_precision{};
23866: struct single_precision {};
23866: struct double_precision {};
23866: struct extended_double_precision {};
23866:
23866:
23866:
23866: template<class T> struct fp_traits_native
23866: {
23866: typedef native_tag method;
23866: };
23866:
23866:
23866:
23866: template<class T, class U> struct fp_traits_non_native
23866: {
23866:
23866: typedef generic_tag<std::numeric_limits<T>::is_specialized> method;
23866:
23866:
23866:
23866: };
23866: # 177 "/usr/include/boost/math/special_functions/detail/fp_traits.hpp" 3 4
23866: template<> struct fp_traits_non_native<float, single_precision>
23866: {
23866: typedef ieee_copy_all_bits_tag method;
23866:
23866: static const uint32_t sign = 0x80000000u;
23866: static const uint32_t exponent = 0x7f800000;
23866: static const uint32_t flag = 0x00000000;
23866: static const uint32_t significand = 0x007fffff;
23866:
23866: typedef uint32_t bits;
23866: static void get_bits(float x, uint32_t& a) { std::memcpy(&a, &x, 4); }
23866: static void set_bits(float& x, uint32_t a) { std::memcpy(&x, &a, 4); }
23866: };
23866: # 232 "/usr/include/boost/math/special_functions/detail/fp_traits.hpp" 3 4
23866: template<> struct fp_traits_non_native<double, double_precision>
23866: {
23866: typedef ieee_copy_all_bits_tag method;
23866:
23866: static const uint64_t sign = ((uint64_t)0x80000000u) << 32;
23866: static const uint64_t exponent = ((uint64_t)0x7ff00000) << 32;
23866: static const uint64_t flag = 0;
23866: static const uint64_t significand
23866: = (((uint64_t)0x000fffff) << 32) + ((uint64_t)0xffffffffu);
23866:
23866: typedef uint64_t bits;
23866: static void get_bits(double x, uint64_t& a) { std::memcpy(&a, &x, 8); }
23866: static void set_bits(double& x, uint64_t a) { std::memcpy(&x, &a, 8); }
23866: };
23866: # 292 "/usr/include/boost/math/special_functions/detail/fp_traits.hpp" 3 4
23866: template<> struct fp_traits_non_native<long double, double_precision>
23866: {
23866: typedef ieee_copy_all_bits_tag method;
23866:
23866: static const uint64_t sign = (uint64_t)0x80000000u << 32;
23866: static const uint64_t exponent = (uint64_t)0x7ff00000 << 32;
23866: static const uint64_t flag = 0;
23866: static const uint64_t significand
23866: = ((uint64_t)0x000fffff << 32) + (uint64_t)0xffffffffu;
23866:
23866: typedef uint64_t bits;
23866: static void get_bits(long double x, uint64_t& a) { std::memcpy(&a, &x, 8); }
23866: static void set_bits(long double& x, uint64_t a) { std::memcpy(&x, &a, 8); }
23866: };
23866: # 457 "/usr/include/boost/math/special_functions/detail/fp_traits.hpp" 3 4
23866: template<>
23866: struct fp_traits_non_native<long double, extended_double_precision>
23866: {
23866: typedef ieee_copy_leading_bits_tag method;
23866:
23866: static const uint32_t sign = 0x80000000u;
23866: static const uint32_t exponent = 0x7fff0000;
23866: static const uint32_t flag = 0x00000000;
23866: static const uint32_t significand = 0x0000ffff;
23866:
23866: typedef uint32_t bits;
23866:
23866: static void get_bits(long double x, uint32_t& a)
23866: {
23866: std::memcpy(&a, reinterpret_cast<const unsigned char*>(&x) + offset_, 4);
23866: }
23866:
23866: static void set_bits(long double& x, uint32_t a)
23866: {
23866: std::memcpy(reinterpret_cast<unsigned char*>(&x) + offset_, &a, 4);
23866: }
23866:
23866: private:
23866:
23866:
23866:
23866:
23866: static const int offset_ = 12;
23866:
23866:
23866:
23866: };
23866: # 497 "/usr/include/boost/math/special_functions/detail/fp_traits.hpp" 3 4
23866: template<int n, bool fp> struct size_to_precision
23866: {
23866: typedef unknown_precision type;
23866: };
23866:
23866: template<> struct size_to_precision<4, true>
23866: {
23866: typedef single_precision type;
23866: };
23866:
23866: template<> struct size_to_precision<8, true>
23866: {
23866: typedef double_precision type;
23866: };
23866:
23866: template<> struct size_to_precision<10, true>
23866: {
23866: typedef extended_double_precision type;
23866: };
23866:
23866: template<> struct size_to_precision<12, true>
23866: {
23866: typedef extended_double_precision type;
23866: };
23866:
23866: template<> struct size_to_precision<16, true>
23866: {
23866: typedef extended_double_precision type;
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class T>
23866: struct select_native
23866: {
23866: typedef typename size_to_precision<sizeof(T), ::boost::is_floating_point<T>::value>::type precision;
23866: typedef fp_traits_non_native<T, precision> type;
23866: };
23866: template<>
23866: struct select_native<float>
23866: {
23866: typedef fp_traits_native<float> type;
23866: };
23866: template<>
23866: struct select_native<double>
23866: {
23866: typedef fp_traits_native<double> type;
23866: };
23866: template<>
23866: struct select_native<long double>
23866: {
23866: typedef fp_traits_native<long double> type;
23866: };
23866: # 568 "/usr/include/boost/math/special_functions/detail/fp_traits.hpp" 3 4
23866: #define BOOST_MATH_USE_STD_FPCLASSIFY
23866:
23866:
23866: template<class T> struct fp_traits
23866: {
23866: typedef typename size_to_precision<sizeof(T), ::boost::is_floating_point<T>::value>::type precision;
23866:
23866: typedef typename select_native<T>::type type;
23866:
23866:
23866:
23866: typedef fp_traits_non_native<T, precision> sign_change_type;
23866: };
23866:
23866:
23866:
23866: }
23866: }
23866: }
23866: # 19 "/usr/include/boost/math/special_functions/sign.hpp" 2 3 4
23866:
23866: namespace boost{ namespace math{
23866:
23866: namespace detail {
23866:
23866:
23866:
23866:
23866: template<class T>
23866: inline int signbit_impl(T x, native_tag const&)
23866: {
23866: return (std::signbit)(x) ? 1 : 0;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template<class T>
23866: inline int signbit_impl(T x, generic_tag<true> const&)
23866: {
23866: return x < 0;
23866: }
23866:
23866: template<class T>
23866: inline int signbit_impl(T x, generic_tag<false> const&)
23866: {
23866: return x < 0;
23866: }
23866: # 67 "/usr/include/boost/math/special_functions/sign.hpp" 3 4
23866: template<class T>
23866: inline int signbit_impl(T x, ieee_copy_all_bits_tag const&)
23866: {
23866: typedef typename fp_traits<T>::type traits;
23866:
23866: typename traits::bits a;
23866: traits::get_bits(x,a);
23866: return a & traits::sign ? 1 : 0;
23866: }
23866:
23866: template<class T>
23866: inline int signbit_impl(T x, ieee_copy_leading_bits_tag const&)
23866: {
23866: typedef typename fp_traits<T>::type traits;
23866:
23866: typename traits::bits a;
23866: traits::get_bits(x,a);
23866:
23866: return a & traits::sign ? 1 : 0;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<class T>
23866: inline T (changesign_impl)(T x, generic_tag<true> const&)
23866: {
23866: return -x;
23866: }
23866:
23866: template<class T>
23866: inline T (changesign_impl)(T x, generic_tag<false> const&)
23866: {
23866: return -x;
23866: }
23866: # 126 "/usr/include/boost/math/special_functions/sign.hpp" 3 4
23866: template<class T>
23866: inline T changesign_impl(T x, ieee_copy_all_bits_tag const&)
23866: {
23866: typedef typename fp_traits<T>::sign_change_type traits;
23866:
23866: typename traits::bits a;
23866: traits::get_bits(x,a);
23866: a ^= traits::sign;
23866: traits::set_bits(x,a);
23866: return x;
23866: }
23866:
23866: template<class T>
23866: inline T (changesign_impl)(T x, ieee_copy_leading_bits_tag const&)
23866: {
23866: typedef typename fp_traits<T>::sign_change_type traits;
23866:
23866: typename traits::bits a;
23866: traits::get_bits(x,a);
23866: a ^= traits::sign;
23866: traits::set_bits(x,a);
23866: return x;
23866: }
23866:
23866:
23866: }
23866:
23866: template<class T> int (signbit)(T x)
23866: {
23866: typedef typename detail::fp_traits<T>::type traits;
23866: typedef typename traits::method method;
23866:
23866: typedef typename tools::promote_args_permissive<T>::type result_type;
23866: return detail::signbit_impl(static_cast<result_type>(x), method());
23866: }
23866:
23866: template <class T>
23866: inline int sign (const T& z)
23866: {
23866: return (z == 0) ? 0 : (boost::math::signbit)(z) ? -1 : 1;
23866: }
23866:
23866: template <class T> typename tools::promote_args_permissive<T>::type (changesign)(const T& x)
23866: {
23866: typedef typename detail::fp_traits<T>::sign_change_type traits;
23866: typedef typename traits::method method;
23866:
23866: typedef typename tools::promote_args_permissive<T>::type result_type;
23866:
23866: return detail::changesign_impl(static_cast<result_type>(x), method());
23866: }
23866:
23866: template <class T, class U>
23866: inline typename tools::promote_args_permissive<T, U>::type
23866: copysign (const T& x, const U& y)
23866: {
23866: 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; 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;
23866: typedef typename tools::promote_args_permissive<T, U>::type result_type;
23866: return (boost::math::signbit)(static_cast<result_type>(x)) != (boost::math::signbit)(static_cast<result_type>(y))
23866: ? (boost::math::changesign)(static_cast<result_type>(x)) : static_cast<result_type>(x);
23866: }
23866:
23866: }
23866: }
23866: # 35 "/usr/include/boost/lexical_cast/detail/inf_nan.hpp" 2 3 4
23866: # 1 "/usr/include/boost/math/special_functions/fpclassify.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MATH_FPCLASSIFY_HPP
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/math.h" 1 3 4
23866: # 15 "/usr/include/boost/math/special_functions/fpclassify.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/math/tools/real_cast.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MATH_TOOLS_REAL_CAST_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost{ namespace math
23866: {
23866: namespace tools
23866: {
23866: template <class To, class T>
23866: inline constexpr To real_cast(T t) noexcept(((std::is_floating_point<T>::value) && (std::is_floating_point<To>::value)))
23866: {
23866: return static_cast<To>(t);
23866: }
23866: }
23866: }
23866: }
23866: # 18 "/usr/include/boost/math/special_functions/fpclassify.hpp" 2 3 4
23866: # 96 "/usr/include/boost/math/special_functions/fpclassify.hpp" 3 4
23866: namespace boost{
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace math_detail{
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class T>
23866: inline bool is_nan_helper(T t, const boost::true_type&)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: return (::std:: fpclassify(t) == (int)0);
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template <class T>
23866: inline bool is_nan_helper(T, const boost::false_type&)
23866: {
23866: return false;
23866: }
23866: # 145 "/usr/include/boost/math/special_functions/fpclassify.hpp" 3 4
23866: }
23866:
23866: namespace math{
23866:
23866: namespace detail{
23866:
23866:
23866: template <class T>
23866: inline int fpclassify_imp (T t, const native_tag&)
23866: {
23866: return (std::fpclassify)(t);
23866: }
23866:
23866:
23866: template <class T>
23866: inline int fpclassify_imp (T t, const generic_tag<true>&)
23866: {
23866: ;
23866:
23866:
23866:
23866: if(::boost::math_detail::is_nan_helper(t, ::boost::is_floating_point<T>()))
23866: return 0;
23866: # 176 "/usr/include/boost/math/special_functions/fpclassify.hpp" 3 4
23866: T at = (t < T(0)) ? -t : t;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: if(at <= (std::numeric_limits<T>::max)())
23866: {
23866: if(at >= (std::numeric_limits<T>::min)())
23866: return 4;
23866: return (at != 0) ? 3 : 2;
23866: }
23866: else if(at > (std::numeric_limits<T>::max)())
23866: return 1;
23866: return 0;
23866: }
23866:
23866: template <class T>
23866: inline int fpclassify_imp (T t, const generic_tag<false>&)
23866: {
23866: # 206 "/usr/include/boost/math/special_functions/fpclassify.hpp" 3 4
23866: ;
23866:
23866: return t == 0 ? 2 : 4;
23866: }
23866:
23866: template<class T>
23866: int fpclassify_imp (T x, ieee_copy_all_bits_tag)
23866: {
23866: typedef typename fp_traits<T>::type traits;
23866:
23866: ;
23866:
23866: typename traits::bits a;
23866: traits::get_bits(x,a);
23866: ;
23866: a &= traits::exponent | traits::flag | traits::significand;
23866: ;
23866: ;
23866:
23866: if(a <= traits::significand) {
23866: if(a == 0)
23866: return 2;
23866: else
23866: return 3;
23866: }
23866:
23866: if(a < traits::exponent) return 4;
23866:
23866: a &= traits::significand;
23866: if(a == 0) return 1;
23866:
23866: return 0;
23866: }
23866:
23866: template<class T>
23866: int fpclassify_imp (T x, ieee_copy_leading_bits_tag)
23866: {
23866: typedef typename fp_traits<T>::type traits;
23866:
23866: ;
23866:
23866: typename traits::bits a;
23866: traits::get_bits(x,a);
23866: a &= traits::exponent | traits::flag | traits::significand;
23866:
23866: if(a <= traits::significand) {
23866: if(x == 0)
23866: return 2;
23866: else
23866: return 3;
23866: }
23866:
23866: if(a < traits::exponent) return 4;
23866:
23866: a &= traits::significand;
23866: traits::set_bits(x,a);
23866: if(x == 0) return 1;
23866:
23866: return 0;
23866: }
23866: # 274 "/usr/include/boost/math/special_functions/fpclassify.hpp" 3 4
23866: }
23866:
23866: template <class T>
23866: inline int fpclassify (T t)
23866: {
23866: typedef typename detail::fp_traits<T>::type traits;
23866: typedef typename traits::method method;
23866: typedef typename tools::promote_args_permissive<T>::type value_type;
23866:
23866:
23866:
23866:
23866:
23866: return detail::fpclassify_imp(static_cast<value_type>(t), method());
23866:
23866: }
23866: # 308 "/usr/include/boost/math/special_functions/fpclassify.hpp" 3 4
23866: namespace detail {
23866:
23866:
23866: template<class T>
23866: inline bool isfinite_impl(T x, native_tag const&)
23866: {
23866: return (std::isfinite)(x);
23866: }
23866:
23866:
23866: template<class T>
23866: inline bool isfinite_impl(T x, generic_tag<true> const&)
23866: {
23866: return x >= -(std::numeric_limits<T>::max)()
23866: && x <= (std::numeric_limits<T>::max)();
23866: }
23866:
23866: template<class T>
23866: inline bool isfinite_impl(T x, generic_tag<false> const&)
23866: {
23866:
23866:
23866:
23866:
23866: (void)x;
23866: return true;
23866: }
23866:
23866: template<class T>
23866: inline bool isfinite_impl(T x, ieee_tag const&)
23866: {
23866: typedef typename detail::fp_traits<T>::type traits;
23866: typename traits::bits a;
23866: traits::get_bits(x,a);
23866: a &= traits::exponent;
23866: return a != traits::exponent;
23866: }
23866: # 353 "/usr/include/boost/math/special_functions/fpclassify.hpp" 3 4
23866: }
23866:
23866: template<class T>
23866: inline bool (isfinite)(T x)
23866: {
23866: typedef typename detail::fp_traits<T>::type traits;
23866: typedef typename traits::method method;
23866:
23866: typedef typename tools::promote_args_permissive<T>::type value_type;
23866: return detail::isfinite_impl(static_cast<value_type>(x), method());
23866: }
23866: # 379 "/usr/include/boost/math/special_functions/fpclassify.hpp" 3 4
23866: namespace detail {
23866:
23866:
23866: template<class T>
23866: inline bool isnormal_impl(T x, native_tag const&)
23866: {
23866: return (std::isnormal)(x);
23866: }
23866:
23866:
23866: template<class T>
23866: inline bool isnormal_impl(T x, generic_tag<true> const&)
23866: {
23866: if(x < 0) x = -x;
23866: return x >= (std::numeric_limits<T>::min)()
23866: && x <= (std::numeric_limits<T>::max)();
23866: }
23866:
23866: template<class T>
23866: inline bool isnormal_impl(T x, generic_tag<false> const&)
23866: {
23866:
23866:
23866:
23866:
23866: return !(x == 0);
23866: }
23866:
23866: template<class T>
23866: inline bool isnormal_impl(T x, ieee_tag const&)
23866: {
23866: typedef typename detail::fp_traits<T>::type traits;
23866: typename traits::bits a;
23866: traits::get_bits(x,a);
23866: a &= traits::exponent | traits::flag;
23866: return (a != 0) && (a < traits::exponent);
23866: }
23866: # 424 "/usr/include/boost/math/special_functions/fpclassify.hpp" 3 4
23866: }
23866:
23866: template<class T>
23866: inline bool (isnormal)(T x)
23866: {
23866: typedef typename detail::fp_traits<T>::type traits;
23866: typedef typename traits::method method;
23866:
23866: typedef typename tools::promote_args_permissive<T>::type value_type;
23866: return detail::isnormal_impl(static_cast<value_type>(x), method());
23866: }
23866: # 450 "/usr/include/boost/math/special_functions/fpclassify.hpp" 3 4
23866: namespace detail {
23866:
23866:
23866: template<class T>
23866: inline bool isinf_impl(T x, native_tag const&)
23866: {
23866: return (std::isinf)(x);
23866: }
23866:
23866:
23866: template<class T>
23866: inline bool isinf_impl(T x, generic_tag<true> const&)
23866: {
23866: (void)x;
23866: return std::numeric_limits<T>::has_infinity
23866: && ( x == std::numeric_limits<T>::infinity()
23866: || x == -std::numeric_limits<T>::infinity());
23866: }
23866:
23866: template<class T>
23866: inline bool isinf_impl(T x, generic_tag<false> const&)
23866: {
23866:
23866:
23866:
23866:
23866: (void)x;
23866: return false;
23866: }
23866:
23866: template<class T>
23866: inline bool isinf_impl(T x, ieee_copy_all_bits_tag const&)
23866: {
23866: typedef typename fp_traits<T>::type traits;
23866:
23866: typename traits::bits a;
23866: traits::get_bits(x,a);
23866: a &= traits::exponent | traits::significand;
23866: return a == traits::exponent;
23866: }
23866:
23866: template<class T>
23866: inline bool isinf_impl(T x, ieee_copy_leading_bits_tag const&)
23866: {
23866: typedef typename fp_traits<T>::type traits;
23866:
23866: typename traits::bits a;
23866: traits::get_bits(x,a);
23866: a &= traits::exponent | traits::significand;
23866: if(a != traits::exponent)
23866: return false;
23866:
23866: traits::set_bits(x,0);
23866: return x == 0;
23866: }
23866: # 513 "/usr/include/boost/math/special_functions/fpclassify.hpp" 3 4
23866: }
23866:
23866: template<class T>
23866: inline bool (isinf)(T x)
23866: {
23866: typedef typename detail::fp_traits<T>::type traits;
23866: typedef typename traits::method method;
23866:
23866: typedef typename tools::promote_args_permissive<T>::type value_type;
23866: return detail::isinf_impl(static_cast<value_type>(x), method());
23866: }
23866: # 546 "/usr/include/boost/math/special_functions/fpclassify.hpp" 3 4
23866: namespace detail {
23866:
23866:
23866: template<class T>
23866: inline bool isnan_impl(T x, native_tag const&)
23866: {
23866: return (std::isnan)(x);
23866: }
23866:
23866:
23866: template<class T>
23866: inline bool isnan_impl(T x, generic_tag<true> const&)
23866: {
23866: return std::numeric_limits<T>::has_infinity
23866: ? !(x <= std::numeric_limits<T>::infinity())
23866: : x != x;
23866: }
23866:
23866: template<class T>
23866: inline bool isnan_impl(T x, generic_tag<false> const&)
23866: {
23866:
23866:
23866:
23866:
23866: (void)x;
23866: return false;
23866: }
23866:
23866: template<class T>
23866: inline bool isnan_impl(T x, ieee_copy_all_bits_tag const&)
23866: {
23866: typedef typename fp_traits<T>::type traits;
23866:
23866: typename traits::bits a;
23866: traits::get_bits(x,a);
23866: a &= traits::exponent | traits::significand;
23866: return a > traits::exponent;
23866: }
23866:
23866: template<class T>
23866: inline bool isnan_impl(T x, ieee_copy_leading_bits_tag const&)
23866: {
23866: typedef typename fp_traits<T>::type traits;
23866:
23866: typename traits::bits a;
23866: traits::get_bits(x,a);
23866:
23866: a &= traits::exponent | traits::significand;
23866: if(a < traits::exponent)
23866: return false;
23866:
23866: a &= traits::significand;
23866: traits::set_bits(x,a);
23866: return x != 0;
23866: }
23866:
23866: }
23866:
23866: template<class T>
23866: inline bool (isnan)(T x)
23866: {
23866: typedef typename detail::fp_traits<T>::type traits;
23866: typedef typename traits::method method;
23866:
23866: return detail::isnan_impl(x, method());
23866: }
23866: # 636 "/usr/include/boost/math/special_functions/fpclassify.hpp" 3 4
23866: }
23866: }
23866: # 36 "/usr/include/boost/lexical_cast/detail/inf_nan.hpp" 2 3 4
23866:
23866:
23866:
23866: namespace boost {
23866: namespace detail
23866: {
23866: template <class CharT>
23866: bool lc_iequal(const CharT* val, const CharT* lcase, const CharT* ucase, unsigned int len) noexcept {
23866: for( unsigned int i=0; i < len; ++i ) {
23866: if ( val[i] != lcase[i] && val[i] != ucase[i] ) return false;
23866: }
23866:
23866: return true;
23866: }
23866:
23866:
23866: template <class CharT, class T>
23866: inline bool parse_inf_nan_impl(const CharT* begin, const CharT* end, T& value
23866: , const CharT* lc_NAN, const CharT* lc_nan
23866: , const CharT* lc_INFINITY, const CharT* lc_infinity
23866: , const CharT opening_brace, const CharT closing_brace) noexcept
23866: {
23866: using namespace std;
23866: if (begin == end) return false;
23866: const CharT minus = lcast_char_constants<CharT>::minus;
23866: const CharT plus = lcast_char_constants<CharT>::plus;
23866: const int inifinity_size = 8;
23866:
23866:
23866: bool const has_minus = (*begin == minus);
23866: if (has_minus || *begin == plus) {
23866: ++ begin;
23866: }
23866:
23866: if (end - begin < 3) return false;
23866: if (lc_iequal(begin, lc_nan, lc_NAN, 3)) {
23866: begin += 3;
23866: if (end != begin) {
23866:
23866:
23866: if (end - begin < 2) return false;
23866: -- end;
23866: if (*begin != opening_brace || *end != closing_brace) return false;
23866: }
23866:
23866: if( !has_minus ) value = std::numeric_limits<T>::quiet_NaN();
23866: else value = (boost::math::changesign) (std::numeric_limits<T>::quiet_NaN());
23866: return true;
23866: } else if (
23866: (
23866: end - begin == 3
23866: && lc_iequal(begin, lc_infinity, lc_INFINITY, 3)
23866: )
23866: ||
23866: (
23866: end - begin == inifinity_size
23866: && lc_iequal(begin, lc_infinity, lc_INFINITY, inifinity_size)
23866: )
23866: )
23866: {
23866: if( !has_minus ) value = std::numeric_limits<T>::infinity();
23866: else value = (boost::math::changesign) (std::numeric_limits<T>::infinity());
23866: return true;
23866: }
23866:
23866: return false;
23866: }
23866:
23866: template <class CharT, class T>
23866: bool put_inf_nan_impl(CharT* begin, CharT*& end, const T& value
23866: , const CharT* lc_nan
23866: , const CharT* lc_infinity) noexcept
23866: {
23866: using namespace std;
23866: const CharT minus = lcast_char_constants<CharT>::minus;
23866: if ((boost::math::isnan)(value)) {
23866: if ((boost::math::signbit)(value)) {
23866: *begin = minus;
23866: ++ begin;
23866: }
23866:
23866: memcpy(begin, lc_nan, 3 * sizeof(CharT));
23866: end = begin + 3;
23866: return true;
23866: } else if ((boost::math::isinf)(value)) {
23866: if ((boost::math::signbit)(value)) {
23866: *begin = minus;
23866: ++ begin;
23866: }
23866:
23866: memcpy(begin, lc_infinity, 3 * sizeof(CharT));
23866: end = begin + 3;
23866: return true;
23866: }
23866:
23866: return false;
23866: }
23866:
23866:
23866:
23866: template <class T>
23866: bool parse_inf_nan(const wchar_t* begin, const wchar_t* end, T& value) noexcept {
23866: return parse_inf_nan_impl(begin, end, value
23866: , L"NAN", L"nan"
23866: , L"INFINITY", L"infinity"
23866: , L'(', L')');
23866: }
23866:
23866: template <class T>
23866: bool put_inf_nan(wchar_t* begin, wchar_t*& end, const T& value) noexcept {
23866: return put_inf_nan_impl(begin, end, value, L"nan", L"infinity");
23866: }
23866:
23866:
23866:
23866: template <class T>
23866: bool parse_inf_nan(const char16_t* begin, const char16_t* end, T& value) noexcept {
23866: return parse_inf_nan_impl(begin, end, value
23866: , u"NAN", u"nan"
23866: , u"INFINITY", u"infinity"
23866: , u'(', u')');
23866: }
23866:
23866: template <class T>
23866: bool put_inf_nan(char16_t* begin, char16_t*& end, const T& value) noexcept {
23866: return put_inf_nan_impl(begin, end, value, u"nan", u"infinity");
23866: }
23866:
23866:
23866: template <class T>
23866: bool parse_inf_nan(const char32_t* begin, const char32_t* end, T& value) noexcept {
23866: return parse_inf_nan_impl(begin, end, value
23866: , U"NAN", U"nan"
23866: , U"INFINITY", U"infinity"
23866: , U'(', U')');
23866: }
23866:
23866: template <class T>
23866: bool put_inf_nan(char32_t* begin, char32_t*& end, const T& value) noexcept {
23866: return put_inf_nan_impl(begin, end, value, U"nan", U"infinity");
23866: }
23866:
23866:
23866: template <class CharT, class T>
23866: bool parse_inf_nan(const CharT* begin, const CharT* end, T& value) noexcept {
23866: return parse_inf_nan_impl(begin, end, value
23866: , "NAN", "nan"
23866: , "INFINITY", "infinity"
23866: , '(', ')');
23866: }
23866:
23866: template <class CharT, class T>
23866: bool put_inf_nan(CharT* begin, CharT*& end, const T& value) noexcept {
23866: return put_inf_nan_impl(begin, end, value, "nan", "infinity");
23866: }
23866: }
23866: }
23866:
23866: #undef BOOST_LCAST_NO_WCHAR_T
23866: # 64 "/usr/include/boost/lexical_cast/detail/converter_lexical_streams.hpp" 2 3 4
23866: # 78 "/usr/include/boost/lexical_cast/detail/converter_lexical_streams.hpp" 3 4
23866: # 1 "/usr/include/boost/detail/basic_pointerbuf.hpp" 1 3 4
23866: # 14 "/usr/include/boost/detail/basic_pointerbuf.hpp" 3 4
23866: #define BOOST_DETAIL_BASIC_POINTERBUF_HPP
23866: # 24 "/usr/include/boost/detail/basic_pointerbuf.hpp" 3 4
23866: namespace boost { namespace detail {
23866:
23866:
23866:
23866:
23866:
23866: template <class charT, class BufferT >
23866: class basic_pointerbuf : public BufferT {
23866: protected:
23866: typedef BufferT base_type;
23866: typedef basic_pointerbuf<charT, BufferT> this_type;
23866: typedef typename base_type::int_type int_type;
23866: typedef typename base_type::char_type char_type;
23866: typedef typename base_type::pos_type pos_type;
23866: typedef ::std::streamsize streamsize;
23866: typedef typename base_type::off_type off_type;
23866:
23866: public:
23866: basic_pointerbuf() : base_type() { this_type::setbuf(0, 0); }
23866: const charT* getnext() { return this->gptr(); }
23866:
23866:
23866: using base_type::pptr;
23866: using base_type::pbase;
23866:
23866:
23866:
23866:
23866:
23866: protected:
23866:
23866:
23866:
23866:
23866: inline base_type* setbuf(char_type* s, streamsize n) override;
23866: inline typename this_type::pos_type seekpos(pos_type sp, ::std::ios_base::openmode which) override;
23866: inline typename this_type::pos_type seekoff(off_type off, ::std::ios_base::seekdir way, ::std::ios_base::openmode which) override;
23866:
23866: private:
23866: basic_pointerbuf& operator=(const basic_pointerbuf&);
23866: basic_pointerbuf(const basic_pointerbuf&);
23866: };
23866:
23866: template<class charT, class BufferT>
23866: BufferT*
23866: basic_pointerbuf<charT, BufferT>::setbuf(char_type* s, streamsize n)
23866: {
23866: this->setg(s, s, s + n);
23866: return this;
23866: }
23866:
23866: template<class charT, class BufferT>
23866: typename basic_pointerbuf<charT, BufferT>::pos_type
23866: basic_pointerbuf<charT, BufferT>::seekoff(off_type off, ::std::ios_base::seekdir way, ::std::ios_base::openmode which)
23866: {
23866: typedef typename boost::int_t<sizeof(way) * 8>::least cast_type;
23866:
23866: if(which & ::std::ios_base::out)
23866: return pos_type(off_type(-1));
23866: std::ptrdiff_t size = this->egptr() - this->eback();
23866: std::ptrdiff_t pos = this->gptr() - this->eback();
23866: charT* g = this->eback();
23866: switch(static_cast<cast_type>(way))
23866: {
23866: case ::std::ios_base::beg:
23866: if((off < 0) || (off > size))
23866: return pos_type(off_type(-1));
23866: else
23866: this->setg(g, g + off, g + size);
23866: break;
23866: case ::std::ios_base::end:
23866: if((off < 0) || (off > size))
23866: return pos_type(off_type(-1));
23866: else
23866: this->setg(g, g + size - off, g + size);
23866: break;
23866: case ::std::ios_base::cur:
23866: {
23866: std::ptrdiff_t newpos = static_cast<std::ptrdiff_t>(pos + off);
23866: if((newpos < 0) || (newpos > size))
23866: return pos_type(off_type(-1));
23866: else
23866: this->setg(g, g + newpos, g + size);
23866: break;
23866: }
23866: default: ;
23866: }
23866:
23866:
23866:
23866:
23866: return static_cast<pos_type>(this->gptr() - this->eback());
23866:
23866:
23866:
23866: }
23866:
23866: template<class charT, class BufferT>
23866: typename basic_pointerbuf<charT, BufferT>::pos_type
23866: basic_pointerbuf<charT, BufferT>::seekpos(pos_type sp, ::std::ios_base::openmode which)
23866: {
23866: if(which & ::std::ios_base::out)
23866: return pos_type(off_type(-1));
23866: off_type size = static_cast<off_type>(this->egptr() - this->eback());
23866: charT* g = this->eback();
23866: if(off_type(sp) <= size)
23866: {
23866: this->setg(g, g + off_type(sp), g + size);
23866: }
23866: return pos_type(off_type(-1));
23866: }
23866:
23866: }}
23866: # 79 "/usr/include/boost/lexical_cast/detail/converter_lexical_streams.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/c++/10/cwchar" 1 3 4
23866: # 39 "/usr/include/c++/10/cwchar" 3 4
23866:
23866: # 40 "/usr/include/c++/10/cwchar" 3
23866: # 82 "/usr/include/boost/lexical_cast/detail/converter_lexical_streams.hpp" 2 3 4
23866:
23866:
23866: namespace boost {
23866:
23866: namespace detail
23866: {
23866:
23866:
23866: template <class BufferType, class CharT>
23866: class basic_unlockedbuf : public basic_pointerbuf<CharT, BufferType> {
23866: public:
23866: typedef basic_pointerbuf<CharT, BufferType> base_type;
23866: typedef typename base_type::streamsize streamsize;
23866:
23866:
23866: using base_type::pptr;
23866: using base_type::pbase;
23866: using base_type::setbuf;
23866:
23866:
23866:
23866:
23866:
23866: };
23866: }
23866:
23866: namespace detail
23866: {
23866: struct do_not_construct_out_buffer_t{};
23866: struct do_not_construct_out_stream_t{
23866: do_not_construct_out_stream_t(do_not_construct_out_buffer_t*){}
23866: };
23866:
23866: template <class CharT, class Traits>
23866: struct out_stream_helper_trait {
23866: # 125 "/usr/include/boost/lexical_cast/detail/converter_lexical_streams.hpp" 3 4
23866: typedef std::basic_ostream<CharT, Traits> out_stream_t;
23866: typedef basic_unlockedbuf<std::basic_stringbuf<CharT, Traits>, CharT> stringbuffer_t;
23866: typedef basic_unlockedbuf<std::basic_streambuf<CharT, Traits>, CharT> buffer_t;
23866:
23866: };
23866: }
23866:
23866: namespace detail
23866: {
23866: template< class CharT
23866: , class Traits
23866: , bool RequiresStringbuffer
23866: , std::size_t CharacterBufferSize
23866: >
23866: class lexical_istream_limited_src: boost::noncopyable {
23866: typedef typename boost::conditional<
23866: RequiresStringbuffer,
23866: typename out_stream_helper_trait<CharT, Traits>::out_stream_t,
23866: do_not_construct_out_stream_t
23866: >::type deduced_out_stream_t;
23866:
23866: typedef typename boost::conditional<
23866: RequiresStringbuffer,
23866: typename out_stream_helper_trait<CharT, Traits>::stringbuffer_t,
23866: do_not_construct_out_buffer_t
23866: >::type deduced_out_buffer_t;
23866:
23866: deduced_out_buffer_t out_buffer;
23866: deduced_out_stream_t out_stream;
23866: CharT buffer[CharacterBufferSize];
23866:
23866:
23866:
23866: const CharT* start;
23866: const CharT* finish;
23866:
23866: public:
23866: lexical_istream_limited_src() noexcept
23866: : out_buffer()
23866: , out_stream(&out_buffer)
23866: , start(buffer)
23866: , finish(buffer + CharacterBufferSize)
23866: {}
23866:
23866: const CharT* cbegin() const noexcept {
23866: return start;
23866: }
23866:
23866: const CharT* cend() const noexcept {
23866: return finish;
23866: }
23866:
23866: private:
23866:
23866: bool shl_char(CharT ch) noexcept {
23866: Traits::assign(buffer[0], ch);
23866: finish = start + 1;
23866: return true;
23866: }
23866:
23866:
23866: template <class T>
23866: bool shl_char(T ch) {
23866: static_assert(( sizeof(T) <= sizeof(CharT)) , "boost::lexical_cast does not support narrowing of char types." "Use boost::locale instead")
23866:
23866: ;
23866:
23866: std::locale loc;
23866: CharT const w = std::use_facet< std::ctype<CharT> >(loc).widen(ch);
23866:
23866:
23866:
23866: Traits::assign(buffer[0], w);
23866: finish = start + 1;
23866: return true;
23866: }
23866:
23866:
23866: bool shl_char_array(CharT const* str_value) noexcept {
23866: start = str_value;
23866: finish = start + Traits::length(str_value);
23866: return true;
23866: }
23866:
23866: template <class T>
23866: bool shl_char_array(T const* str_value) {
23866: static_assert(( sizeof(T) <= sizeof(CharT)), "boost::lexical_cast does not support narrowing of char types." "Use boost::locale instead")
23866:
23866: ;
23866: return shl_input_streamable(str_value);
23866: }
23866:
23866: bool shl_char_array_limited(CharT const* str, std::size_t max_size) noexcept {
23866: start = str;
23866: finish = std::find(start, start + max_size, Traits::to_char_type(0));
23866: return true;
23866: }
23866:
23866: template<typename InputStreamable>
23866: bool shl_input_streamable(InputStreamable& input) {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: out_stream.exceptions(std::ios::badbit);
23866: try {
23866:
23866: bool const result = !(out_stream << input).fail();
23866: const deduced_out_buffer_t* const p = static_cast<deduced_out_buffer_t*>(
23866: out_stream.rdbuf()
23866: );
23866: start = p->pbase();
23866: finish = p->pptr();
23866: return result;
23866:
23866: } catch (const ::std::ios_base::failure& ) {
23866: return false;
23866: }
23866:
23866: }
23866:
23866: template <class T>
23866: inline bool shl_unsigned(const T n) {
23866: CharT* tmp_finish = buffer + CharacterBufferSize;
23866: start = lcast_put_unsigned<Traits, T, CharT>(n, tmp_finish).convert();
23866: finish = tmp_finish;
23866: return true;
23866: }
23866:
23866: template <class T>
23866: inline bool shl_signed(const T n) {
23866: CharT* tmp_finish = buffer + CharacterBufferSize;
23866: typedef typename boost::make_unsigned<T>::type utype;
23866: CharT* tmp_start = lcast_put_unsigned<Traits, utype, CharT>(lcast_to_unsigned(n), tmp_finish).convert();
23866: if (n < 0) {
23866: --tmp_start;
23866: CharT const minus = lcast_char_constants<CharT>::minus;
23866: Traits::assign(*tmp_start, minus);
23866: }
23866: start = tmp_start;
23866: finish = tmp_finish;
23866: return true;
23866: }
23866:
23866: template <class T, class SomeCharT>
23866: bool shl_real_type(const T& val, SomeCharT* ) {
23866: lcast_set_precision(out_stream, &val);
23866: return shl_input_streamable(val);
23866: }
23866:
23866: bool shl_real_type(float val, char* begin) {
23866: using namespace std;
23866: const double val_as_double = val;
23866: finish = start +
23866:
23866:
23866:
23866: sprintf(begin,
23866:
23866: "%.*g", static_cast<int>(boost::detail::lcast_get_precision<float>()), val_as_double);
23866: return finish > start;
23866: }
23866:
23866: bool shl_real_type(double val, char* begin) {
23866: using namespace std;
23866: finish = start +
23866:
23866:
23866:
23866: sprintf(begin,
23866:
23866: "%.*g", static_cast<int>(boost::detail::lcast_get_precision<double>()), val);
23866: return finish > start;
23866: }
23866:
23866:
23866: bool shl_real_type(long double val, char* begin) {
23866: using namespace std;
23866: finish = start +
23866:
23866:
23866:
23866: sprintf(begin,
23866:
23866: "%.*Lg", static_cast<int>(boost::detail::lcast_get_precision<long double>()), val );
23866: return finish > start;
23866: }
23866:
23866:
23866:
23866:
23866: bool shl_real_type(float val, wchar_t* begin) {
23866: using namespace std;
23866: const double val_as_double = val;
23866: finish = start + swprintf(begin, CharacterBufferSize,
23866: L"%.*g",
23866: static_cast<int>(boost::detail::lcast_get_precision<float >()),
23866: val_as_double );
23866: return finish > start;
23866: }
23866:
23866: bool shl_real_type(double val, wchar_t* begin) {
23866: using namespace std;
23866: finish = start + swprintf(begin, CharacterBufferSize,
23866: L"%.*g", static_cast<int>(boost::detail::lcast_get_precision<double >()), val );
23866: return finish > start;
23866: }
23866:
23866: bool shl_real_type(long double val, wchar_t* begin) {
23866: using namespace std;
23866: finish = start + swprintf(begin, CharacterBufferSize,
23866: L"%.*Lg", static_cast<int>(boost::detail::lcast_get_precision<long double >()), val );
23866: return finish > start;
23866: }
23866:
23866: template <class T>
23866: bool shl_real(T val) {
23866: CharT* tmp_finish = buffer + CharacterBufferSize;
23866: if (put_inf_nan(buffer, tmp_finish, val)) {
23866: finish = tmp_finish;
23866: return true;
23866: }
23866:
23866: return shl_real_type(val, static_cast<CharT*>(buffer));
23866: }
23866:
23866:
23866: public:
23866: template<class Alloc>
23866: bool operator<<(std::basic_string<CharT,Traits,Alloc> const& str) noexcept {
23866: start = str.data();
23866: finish = start + str.length();
23866: return true;
23866: }
23866:
23866: template<class Alloc>
23866: bool operator<<(boost::container::basic_string<CharT,Traits,Alloc> const& str) noexcept {
23866: start = str.data();
23866: finish = start + str.length();
23866: return true;
23866: }
23866:
23866: bool operator<<(bool value) noexcept {
23866: CharT const czero = lcast_char_constants<CharT>::zero;
23866: Traits::assign(buffer[0], Traits::to_char_type(czero + value));
23866: finish = start + 1;
23866: return true;
23866: }
23866:
23866: template <class C>
23866: typename boost::disable_if<boost::is_const<C>, bool>::type
23866: operator<<(const iterator_range<C*>& rng) noexcept {
23866: return (*this) << iterator_range<const C*>(rng.begin(), rng.end());
23866: }
23866:
23866: bool operator<<(const iterator_range<const CharT*>& rng) noexcept {
23866: start = rng.begin();
23866: finish = rng.end();
23866: return true;
23866: }
23866:
23866: bool operator<<(const iterator_range<const signed char*>& rng) noexcept {
23866: return (*this) << iterator_range<const char*>(
23866: reinterpret_cast<const char*>(rng.begin()),
23866: reinterpret_cast<const char*>(rng.end())
23866: );
23866: }
23866:
23866: bool operator<<(const iterator_range<const unsigned char*>& rng) noexcept {
23866: return (*this) << iterator_range<const char*>(
23866: reinterpret_cast<const char*>(rng.begin()),
23866: reinterpret_cast<const char*>(rng.end())
23866: );
23866: }
23866:
23866: bool operator<<(char ch) { return shl_char(ch); }
23866: bool operator<<(unsigned char ch) { return ((*this) << static_cast<char>(ch)); }
23866: bool operator<<(signed char ch) { return ((*this) << static_cast<char>(ch)); }
23866:
23866: bool operator<<(wchar_t const* str) { return shl_char_array(str); }
23866: bool operator<<(wchar_t * str) { return shl_char_array(str); }
23866:
23866: bool operator<<(wchar_t ch) { return shl_char(ch); }
23866:
23866:
23866:
23866: bool operator<<(char16_t ch) { return shl_char(ch); }
23866: bool operator<<(char16_t * str) { return shl_char_array(str); }
23866: bool operator<<(char16_t const * str) { return shl_char_array(str); }
23866:
23866:
23866: bool operator<<(char32_t ch) { return shl_char(ch); }
23866: bool operator<<(char32_t * str) { return shl_char_array(str); }
23866: bool operator<<(char32_t const * str) { return shl_char_array(str); }
23866:
23866: bool operator<<(unsigned char const* ch) { return ((*this) << reinterpret_cast<char const*>(ch)); }
23866: bool operator<<(unsigned char * ch) { return ((*this) << reinterpret_cast<char *>(ch)); }
23866: bool operator<<(signed char const* ch) { return ((*this) << reinterpret_cast<char const*>(ch)); }
23866: bool operator<<(signed char * ch) { return ((*this) << reinterpret_cast<char *>(ch)); }
23866: bool operator<<(char const* str_value) { return shl_char_array(str_value); }
23866: bool operator<<(char* str_value) { return shl_char_array(str_value); }
23866: bool operator<<(short n) { return shl_signed(n); }
23866: bool operator<<(int n) { return shl_signed(n); }
23866: bool operator<<(long n) { return shl_signed(n); }
23866: bool operator<<(unsigned short n) { return shl_unsigned(n); }
23866: bool operator<<(unsigned int n) { return shl_unsigned(n); }
23866: bool operator<<(unsigned long n) { return shl_unsigned(n); }
23866:
23866:
23866: bool operator<<(boost::ulong_long_type n) { return shl_unsigned(n); }
23866: bool operator<<(boost::long_long_type n) { return shl_signed(n); }
23866: # 448 "/usr/include/boost/lexical_cast/detail/converter_lexical_streams.hpp" 3 4
23866: bool operator<<(float val) { return shl_real(val); }
23866: bool operator<<(double val) { return shl_real(val); }
23866: bool operator<<(long double val) {
23866:
23866: return shl_real(val);
23866:
23866:
23866:
23866: }
23866:
23866:
23866: template <class C, std::size_t N>
23866: typename boost::disable_if<boost::is_const<C>, bool>::type
23866: operator<<(boost::array<C, N> const& input) noexcept {
23866: static_assert((sizeof(boost::array<const C, N>) == sizeof(boost::array<C, N>)), "boost::array<C, N> and boost::array<const C, N> must have exactly the same layout.")
23866:
23866:
23866: ;
23866: return ((*this) << reinterpret_cast<boost::array<const C, N> const& >(input));
23866: }
23866:
23866: template <std::size_t N>
23866: bool operator<<(boost::array<const CharT, N> const& input) noexcept {
23866: return shl_char_array_limited(input.data(), N);
23866: }
23866:
23866: template <std::size_t N>
23866: bool operator<<(boost::array<const unsigned char, N> const& input) noexcept {
23866: return ((*this) << reinterpret_cast<boost::array<const char, N> const& >(input));
23866: }
23866:
23866: template <std::size_t N>
23866: bool operator<<(boost::array<const signed char, N> const& input) noexcept {
23866: return ((*this) << reinterpret_cast<boost::array<const char, N> const& >(input));
23866: }
23866:
23866:
23866:
23866: template <class C, std::size_t N>
23866: bool operator<<(std::array<C, N> const& input) noexcept {
23866: static_assert((sizeof(std::array<C, N>) == sizeof(boost::array<C, N>)), "std::array and boost::array must have exactly the same layout. " "Bug in implementation of std::array or boost::array.")
23866:
23866:
23866:
23866: ;
23866: return ((*this) << reinterpret_cast<boost::array<C, N> const& >(input));
23866: }
23866:
23866: template <class InStreamable>
23866: bool operator<<(const InStreamable& input) { return shl_input_streamable(input); }
23866: };
23866:
23866:
23866: template <class CharT, class Traits>
23866: class lexical_ostream_limited_src: boost::noncopyable {
23866:
23866: const CharT* start;
23866: const CharT* const finish;
23866:
23866: public:
23866: lexical_ostream_limited_src(const CharT* begin, const CharT* end) noexcept
23866: : start(begin)
23866: , finish(end)
23866: {}
23866:
23866:
23866: private:
23866: template <typename Type>
23866: bool shr_unsigned(Type& output) {
23866: if (start == finish) return false;
23866: CharT const minus = lcast_char_constants<CharT>::minus;
23866: CharT const plus = lcast_char_constants<CharT>::plus;
23866: bool const has_minus = Traits::eq(minus, *start);
23866:
23866:
23866: if (has_minus || Traits::eq(plus, *start)) {
23866: ++start;
23866: }
23866:
23866: bool const succeed = lcast_ret_unsigned<Traits, Type, CharT>(output, start, finish).convert();
23866:
23866: if (has_minus) {
23866: output = static_cast<Type>(0u - output);
23866: }
23866:
23866: return succeed;
23866: }
23866:
23866: template <typename Type>
23866: bool shr_signed(Type& output) {
23866: if (start == finish) return false;
23866: CharT const minus = lcast_char_constants<CharT>::minus;
23866: CharT const plus = lcast_char_constants<CharT>::plus;
23866: typedef typename make_unsigned<Type>::type utype;
23866: utype out_tmp = 0;
23866: bool const has_minus = Traits::eq(minus, *start);
23866:
23866:
23866: if (has_minus || Traits::eq(plus, *start)) {
23866: ++start;
23866: }
23866:
23866: bool succeed = lcast_ret_unsigned<Traits, utype, CharT>(out_tmp, start, finish).convert();
23866: if (has_minus) {
23866: utype const comp_val = (static_cast<utype>(1) << std::numeric_limits<Type>::digits);
23866: succeed = succeed && out_tmp<=comp_val;
23866: output = static_cast<Type>(0u - out_tmp);
23866: } else {
23866: utype const comp_val = static_cast<utype>((std::numeric_limits<Type>::max)());
23866: succeed = succeed && out_tmp<=comp_val;
23866: output = static_cast<Type>(out_tmp);
23866: }
23866: return succeed;
23866: }
23866:
23866: template<typename InputStreamable>
23866: bool shr_using_base_class(InputStreamable& output)
23866: {
23866: static_assert((!boost::is_pointer<InputStreamable>::value), "boost::lexical_cast can not convert to pointers")
23866:
23866:
23866: ;
23866: # 581 "/usr/include/boost/lexical_cast/detail/converter_lexical_streams.hpp" 3 4
23866: typedef typename out_stream_helper_trait<CharT, Traits>::buffer_t buffer_t;
23866: buffer_t buf;
23866:
23866:
23866: buf.setbuf(const_cast<CharT*>(start), static_cast<typename buffer_t::streamsize>(finish - start));
23866:
23866:
23866:
23866: std::basic_istream<CharT, Traits> stream(&buf);
23866:
23866:
23866:
23866:
23866: stream.exceptions(std::ios::badbit);
23866: try {
23866:
23866: stream.unsetf(std::ios::skipws);
23866: lcast_set_precision(stream, static_cast<InputStreamable*>(0));
23866:
23866: return (stream >> output)
23866: && (stream.get() == Traits::eof());
23866:
23866:
23866: } catch (const ::std::ios_base::failure& ) {
23866: return false;
23866: }
23866:
23866: }
23866:
23866: template<class T>
23866: inline bool shr_xchar(T& output) noexcept {
23866: static_assert(( sizeof(CharT) == sizeof(T) ), "boost::lexical_cast does not support narrowing of character types." "Use boost::locale instead")
23866:
23866: ;
23866: bool const ok = (finish - start == 1);
23866: if (ok) {
23866: CharT out;
23866: Traits::assign(out, *start);
23866: output = static_cast<T>(out);
23866: }
23866: return ok;
23866: }
23866:
23866: template <std::size_t N, class ArrayT>
23866: bool shr_std_array(ArrayT& output) noexcept {
23866: using namespace std;
23866: const std::size_t size = static_cast<std::size_t>(finish - start);
23866: if (size > N - 1) {
23866: return false;
23866: }
23866:
23866: memcpy(&output[0], start, size * sizeof(CharT));
23866: output[size] = Traits::to_char_type(0);
23866: return true;
23866: }
23866:
23866:
23866: public:
23866: bool operator>>(unsigned short& output) { return shr_unsigned(output); }
23866: bool operator>>(unsigned int& output) { return shr_unsigned(output); }
23866: bool operator>>(unsigned long int& output) { return shr_unsigned(output); }
23866: bool operator>>(short& output) { return shr_signed(output); }
23866: bool operator>>(int& output) { return shr_signed(output); }
23866: bool operator>>(long int& output) { return shr_signed(output); }
23866:
23866: bool operator>>(boost::ulong_long_type& output) { return shr_unsigned(output); }
23866: bool operator>>(boost::long_long_type& output) { return shr_signed(output); }
23866: # 658 "/usr/include/boost/lexical_cast/detail/converter_lexical_streams.hpp" 3 4
23866: bool operator>>(char& output) { return shr_xchar(output); }
23866: bool operator>>(unsigned char& output) { return shr_xchar(output); }
23866: bool operator>>(signed char& output) { return shr_xchar(output); }
23866:
23866: bool operator>>(wchar_t& output) { return shr_xchar(output); }
23866:
23866:
23866: bool operator>>(char16_t& output) { return shr_xchar(output); }
23866:
23866:
23866: bool operator>>(char32_t& output) { return shr_xchar(output); }
23866:
23866: template<class Alloc>
23866: bool operator>>(std::basic_string<CharT,Traits,Alloc>& str) {
23866: str.assign(start, finish); return true;
23866: }
23866:
23866: template<class Alloc>
23866: bool operator>>(boost::container::basic_string<CharT,Traits,Alloc>& str) {
23866: str.assign(start, finish); return true;
23866: }
23866:
23866: template <std::size_t N>
23866: bool operator>>(boost::array<CharT, N>& output) noexcept {
23866: return shr_std_array<N>(output);
23866: }
23866:
23866: template <std::size_t N>
23866: bool operator>>(boost::array<unsigned char, N>& output) noexcept {
23866: return ((*this) >> reinterpret_cast<boost::array<char, N>& >(output));
23866: }
23866:
23866: template <std::size_t N>
23866: bool operator>>(boost::array<signed char, N>& output) noexcept {
23866: return ((*this) >> reinterpret_cast<boost::array<char, N>& >(output));
23866: }
23866:
23866:
23866: template <class C, std::size_t N>
23866: bool operator>>(std::array<C, N>& output) noexcept {
23866: static_assert((sizeof(std::array<C, N>) == sizeof(boost::array<C, N>)), "std::array<C, N> and boost::array<C, N> must have exactly the same layout.")
23866:
23866:
23866: ;
23866: return ((*this) >> reinterpret_cast<boost::array<C, N>& >(output));
23866: }
23866:
23866:
23866: bool operator>>(bool& output) noexcept {
23866: output = false;
23866:
23866: if (start == finish) return false;
23866: CharT const zero = lcast_char_constants<CharT>::zero;
23866: CharT const plus = lcast_char_constants<CharT>::plus;
23866: CharT const minus = lcast_char_constants<CharT>::minus;
23866:
23866: const CharT* const dec_finish = finish - 1;
23866: output = Traits::eq(*dec_finish, zero + 1);
23866: if (!output && !Traits::eq(*dec_finish, zero)) {
23866: return false;
23866: }
23866:
23866: if (start == dec_finish) return true;
23866:
23866:
23866: if (Traits::eq(plus, *start) || (Traits::eq(minus, *start) && !output)) {
23866: ++ start;
23866: }
23866:
23866:
23866: while (start != dec_finish) {
23866: if (!Traits::eq(zero, *start)) {
23866: return false;
23866: }
23866:
23866: ++ start;
23866: }
23866:
23866: return true;
23866: }
23866:
23866: private:
23866:
23866: template <class T>
23866: bool float_types_converter_internal(T& output) {
23866: if (parse_inf_nan(start, finish, output)) return true;
23866: bool const return_value = shr_using_base_class(output);
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: CharT const minus = lcast_char_constants<CharT>::minus;
23866: CharT const plus = lcast_char_constants<CharT>::plus;
23866: CharT const capital_e = lcast_char_constants<CharT>::capital_e;
23866: CharT const lowercase_e = lcast_char_constants<CharT>::lowercase_e;
23866: if ( return_value &&
23866: (
23866: Traits::eq(*(finish-1), lowercase_e)
23866: || Traits::eq(*(finish-1), capital_e)
23866: || Traits::eq(*(finish-1), minus)
23866: || Traits::eq(*(finish-1), plus)
23866: )
23866: ) return false;
23866:
23866: return return_value;
23866: }
23866:
23866: public:
23866: bool operator>>(float& output) { return float_types_converter_internal(output); }
23866: bool operator>>(double& output) { return float_types_converter_internal(output); }
23866: bool operator>>(long double& output) { return float_types_converter_internal(output); }
23866:
23866:
23866:
23866: template <typename InputStreamable>
23866: bool operator>>(InputStreamable& output) {
23866: return shr_using_base_class(output);
23866: }
23866: };
23866: }
23866: }
23866:
23866: #undef BOOST_LCAST_NO_WCHAR_T
23866: # 55 "/usr/include/boost/lexical_cast/detail/converter_lexical.hpp" 2 3 4
23866:
23866: namespace boost {
23866:
23866: namespace detail
23866: {
23866:
23866: template < class Char >
23866: struct normalize_single_byte_char
23866: {
23866: typedef Char type;
23866: };
23866:
23866: template <>
23866: struct normalize_single_byte_char< signed char >
23866: {
23866: typedef char type;
23866: };
23866:
23866: template <>
23866: struct normalize_single_byte_char< unsigned char >
23866: {
23866: typedef char type;
23866: };
23866: }
23866:
23866: namespace detail
23866: {
23866:
23866:
23866: template < class T > struct deduce_character_type_later {};
23866: }
23866:
23866: namespace detail
23866: {
23866:
23866:
23866:
23866: template < typename Type >
23866: struct stream_char_common: public boost::conditional<
23866: boost::detail::is_character< Type >::value,
23866: Type,
23866: boost::detail::deduce_character_type_later< Type >
23866: > {};
23866:
23866: template < typename Char >
23866: struct stream_char_common< Char* >: public boost::conditional<
23866: boost::detail::is_character< Char >::value,
23866: Char,
23866: boost::detail::deduce_character_type_later< Char* >
23866: > {};
23866:
23866: template < typename Char >
23866: struct stream_char_common< const Char* >: public boost::conditional<
23866: boost::detail::is_character< Char >::value,
23866: Char,
23866: boost::detail::deduce_character_type_later< const Char* >
23866: > {};
23866:
23866: template < typename Char >
23866: struct stream_char_common< boost::iterator_range< Char* > >: public boost::conditional<
23866: boost::detail::is_character< Char >::value,
23866: Char,
23866: boost::detail::deduce_character_type_later< boost::iterator_range< Char* > >
23866: > {};
23866:
23866: template < typename Char >
23866: struct stream_char_common< boost::iterator_range< const Char* > >: public boost::conditional<
23866: boost::detail::is_character< Char >::value,
23866: Char,
23866: boost::detail::deduce_character_type_later< boost::iterator_range< const Char* > >
23866: > {};
23866:
23866: template < class Char, class Traits, class Alloc >
23866: struct stream_char_common< std::basic_string< Char, Traits, Alloc > >
23866: {
23866: typedef Char type;
23866: };
23866:
23866: template < class Char, class Traits, class Alloc >
23866: struct stream_char_common< boost::container::basic_string< Char, Traits, Alloc > >
23866: {
23866: typedef Char type;
23866: };
23866:
23866: template < typename Char, std::size_t N >
23866: struct stream_char_common< boost::array< Char, N > >: public boost::conditional<
23866: boost::detail::is_character< Char >::value,
23866: Char,
23866: boost::detail::deduce_character_type_later< boost::array< Char, N > >
23866: > {};
23866:
23866: template < typename Char, std::size_t N >
23866: struct stream_char_common< boost::array< const Char, N > >: public boost::conditional<
23866: boost::detail::is_character< Char >::value,
23866: Char,
23866: boost::detail::deduce_character_type_later< boost::array< const Char, N > >
23866: > {};
23866:
23866:
23866: template < typename Char, std::size_t N >
23866: struct stream_char_common< std::array<Char, N > >: public boost::conditional<
23866: boost::detail::is_character< Char >::value,
23866: Char,
23866: boost::detail::deduce_character_type_later< std::array< Char, N > >
23866: > {};
23866:
23866: template < typename Char, std::size_t N >
23866: struct stream_char_common< std::array< const Char, N > >: public boost::conditional<
23866: boost::detail::is_character< Char >::value,
23866: Char,
23866: boost::detail::deduce_character_type_later< std::array< const Char, N > >
23866: > {};
23866: # 181 "/usr/include/boost/lexical_cast/detail/converter_lexical.hpp" 3 4
23866: }
23866:
23866: namespace detail
23866: {
23866:
23866:
23866:
23866:
23866:
23866: template < class Char >
23866: struct deduce_source_char_impl
23866: {
23866: typedef typename boost::detail::normalize_single_byte_char< Char >::type type;
23866: };
23866:
23866: template < class T >
23866: struct deduce_source_char_impl< deduce_character_type_later< T > >
23866: {
23866: typedef boost::has_left_shift< std::basic_ostream< char >, T > result_t;
23866:
23866:
23866:
23866:
23866:
23866:
23866: typedef typename boost::conditional<
23866: result_t::value, char, wchar_t
23866: >::type type;
23866:
23866: static_assert((result_t::value || boost::has_left_shift< std::basic_ostream< type >, T >::value), "Source type is neither std::ostream`able nor std::wostream`able")
23866: ;
23866:
23866: };
23866: }
23866:
23866: namespace detail
23866: {
23866:
23866:
23866:
23866:
23866:
23866: template < class Char >
23866: struct deduce_target_char_impl
23866: {
23866: typedef typename normalize_single_byte_char< Char >::type type;
23866: };
23866:
23866: template < class T >
23866: struct deduce_target_char_impl< deduce_character_type_later<T> >
23866: {
23866: typedef boost::has_right_shift<std::basic_istream<char>, T > result_t;
23866:
23866:
23866:
23866:
23866:
23866:
23866: typedef typename boost::conditional<
23866: result_t::value, char, wchar_t
23866: >::type type;
23866:
23866: static_assert((result_t::value || boost::has_right_shift<std::basic_istream<wchar_t>, T >::value), "Target type is neither std::istream`able nor std::wistream`able")
23866: ;
23866:
23866: };
23866: }
23866:
23866: namespace detail
23866: {
23866: # 266 "/usr/include/boost/lexical_cast/detail/converter_lexical.hpp" 3 4
23866: template < class T >
23866: struct deduce_target_char
23866: {
23866: typedef typename stream_char_common< T >::type stage1_type;
23866: typedef typename deduce_target_char_impl< stage1_type >::type stage2_type;
23866:
23866: typedef stage2_type type;
23866: };
23866:
23866: template < class T >
23866: struct deduce_source_char
23866: {
23866: typedef typename stream_char_common< T >::type stage1_type;
23866: typedef typename deduce_source_char_impl< stage1_type >::type stage2_type;
23866:
23866: typedef stage2_type type;
23866: };
23866: }
23866:
23866: namespace detail
23866: {
23866:
23866:
23866: template < class Char, class T >
23866: struct extract_char_traits
23866: : boost::false_type
23866: {
23866: typedef std::char_traits< Char > trait_t;
23866: };
23866:
23866: template < class Char, class Traits, class Alloc >
23866: struct extract_char_traits< Char, std::basic_string< Char, Traits, Alloc > >
23866: : boost::true_type
23866: {
23866: typedef Traits trait_t;
23866: };
23866:
23866: template < class Char, class Traits, class Alloc>
23866: struct extract_char_traits< Char, boost::container::basic_string< Char, Traits, Alloc > >
23866: : boost::true_type
23866: {
23866: typedef Traits trait_t;
23866: };
23866: }
23866:
23866: namespace detail
23866: {
23866: template<class T>
23866: struct array_to_pointer_decay
23866: {
23866: typedef T type;
23866: };
23866:
23866: template<class T, std::size_t N>
23866: struct array_to_pointer_decay<T[N]>
23866: {
23866: typedef const T * type;
23866: };
23866: }
23866:
23866: namespace detail
23866: {
23866:
23866: template< class Source,
23866: class Enable = void
23866: >
23866: struct lcast_src_length
23866: {
23866: static const std::size_t value = 1;
23866: };
23866: # 350 "/usr/include/boost/lexical_cast/detail/converter_lexical.hpp" 3 4
23866: template <class Source>
23866: struct lcast_src_length<
23866: Source, typename boost::enable_if<boost::is_integral<Source> >::type
23866: >
23866: {
23866:
23866: static const std::size_t value = std::numeric_limits<Source>::is_signed + std::numeric_limits<Source>::is_specialized + std::numeric_limits<Source>::digits10 * 2
23866:
23866:
23866:
23866: ;
23866:
23866:
23866:
23866:
23866: };
23866: # 377 "/usr/include/boost/lexical_cast/detail/converter_lexical.hpp" 3 4
23866: template<class Source>
23866: struct lcast_src_length<
23866: Source, typename boost::enable_if<boost::is_float<Source> >::type
23866: >
23866: {
23866:
23866:
23866: static_assert(std::numeric_limits<Source>::max_exponent10 <= 999999L && std::numeric_limits<Source>::min_exponent10 >= -999999L, "std::numeric_limits<Source>::max_exponent10 <= 999999L && std::numeric_limits<Source>::min_exponent10 >= -999999L")
23866:
23866:
23866: ;
23866:
23866: static const std::size_t value = 5 + lcast_precision<Source>::value + 6
23866:
23866: ;
23866:
23866:
23866:
23866: };
23866: }
23866:
23866: namespace detail
23866: {
23866: template <class Source, class Target>
23866: struct lexical_cast_stream_traits {
23866: typedef typename boost::detail::array_to_pointer_decay<Source>::type src;
23866: typedef typename boost::remove_cv<src>::type no_cv_src;
23866:
23866: typedef boost::detail::deduce_source_char<no_cv_src> deduce_src_char_metafunc;
23866: typedef typename deduce_src_char_metafunc::type src_char_t;
23866: typedef typename boost::detail::deduce_target_char<Target>::type target_char_t;
23866:
23866: typedef typename boost::detail::widest_char<
23866: target_char_t, src_char_t
23866: >::type char_type;
23866: # 424 "/usr/include/boost/lexical_cast/detail/converter_lexical.hpp" 3 4
23866: typedef typename boost::conditional<
23866: boost::detail::extract_char_traits<char_type, Target>::value,
23866: typename boost::detail::extract_char_traits<char_type, Target>,
23866: typename boost::detail::extract_char_traits<char_type, no_cv_src>
23866: >::type::trait_t traits;
23866:
23866: typedef boost::integral_constant<
23866: bool,
23866: boost::is_same<char, src_char_t>::value &&
23866: (sizeof(char) != sizeof(target_char_t)) &&
23866: (!(boost::detail::is_character<no_cv_src>::value))
23866: > is_string_widening_required_t;
23866:
23866: typedef boost::integral_constant<
23866: bool,
23866: !(boost::is_integral<no_cv_src>::value ||
23866: boost::detail::is_character<
23866: typename deduce_src_char_metafunc::stage1_type
23866: >::value
23866: )
23866: > is_source_input_not_optimized_t;
23866:
23866:
23866:
23866: static const bool requires_stringbuf = (is_string_widening_required_t::value || is_source_input_not_optimized_t::value)
23866:
23866: ;
23866:
23866: typedef boost::detail::lcast_src_length<no_cv_src> len_t;
23866: };
23866: }
23866:
23866: namespace detail
23866: {
23866: template<typename Target, typename Source>
23866: struct lexical_converter_impl
23866: {
23866: typedef lexical_cast_stream_traits<Source, Target> stream_trait;
23866:
23866: typedef detail::lexical_istream_limited_src<
23866: typename stream_trait::char_type,
23866: typename stream_trait::traits,
23866: stream_trait::requires_stringbuf,
23866: stream_trait::len_t::value + 1
23866: > i_interpreter_type;
23866:
23866: typedef detail::lexical_ostream_limited_src<
23866: typename stream_trait::char_type,
23866: typename stream_trait::traits
23866: > o_interpreter_type;
23866:
23866: static inline bool try_convert(const Source& arg, Target& result) {
23866: i_interpreter_type i_interpreter;
23866:
23866:
23866: if (!(i_interpreter.operator <<(arg)))
23866: return false;
23866:
23866: o_interpreter_type out(i_interpreter.cbegin(), i_interpreter.cend());
23866:
23866:
23866: if(!(out.operator >>(result)))
23866: return false;
23866:
23866: return true;
23866: }
23866: };
23866: }
23866:
23866: }
23866:
23866: #undef BOOST_LCAST_NO_WCHAR_T
23866: # 45 "/usr/include/boost/lexical_cast/try_lexical_convert.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace detail
23866: {
23866: template<typename T>
23866: struct is_stdstring
23866: : boost::false_type
23866: {};
23866:
23866: template<typename CharT, typename Traits, typename Alloc>
23866: struct is_stdstring< std::basic_string<CharT, Traits, Alloc> >
23866: : boost::true_type
23866: {};
23866:
23866:
23866:
23866: template<typename T>
23866: struct is_booststring
23866: : boost::false_type
23866: {};
23866:
23866: template<typename CharT, typename Traits, typename Alloc>
23866: struct is_booststring< boost::container::basic_string<CharT, Traits, Alloc> >
23866: : boost::true_type
23866: {};
23866:
23866: template<typename Target, typename Source>
23866: struct is_arithmetic_and_not_xchars
23866: {
23866: typedef boost::integral_constant<
23866: bool,
23866: !(boost::detail::is_character<Target>::value) &&
23866: !(boost::detail::is_character<Source>::value) &&
23866: boost::is_arithmetic<Source>::value &&
23866: boost::is_arithmetic<Target>::value
23866: > type;
23866:
23866: static const bool value = ( type::value )
23866:
23866: ;
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template<typename Target, typename Source>
23866: struct is_xchar_to_xchar
23866: {
23866: typedef boost::integral_constant<
23866: bool,
23866: sizeof(Source) == sizeof(Target) &&
23866: sizeof(Source) == sizeof(char) &&
23866: boost::detail::is_character<Target>::value &&
23866: boost::detail::is_character<Source>::value
23866: > type;
23866:
23866: static const bool value = ( type::value )
23866:
23866: ;
23866: };
23866:
23866: template<typename Target, typename Source>
23866: struct is_char_array_to_stdstring
23866: : boost::false_type
23866: {};
23866:
23866: template<typename CharT, typename Traits, typename Alloc>
23866: struct is_char_array_to_stdstring< std::basic_string<CharT, Traits, Alloc>, CharT* >
23866: : boost::true_type
23866: {};
23866:
23866: template<typename CharT, typename Traits, typename Alloc>
23866: struct is_char_array_to_stdstring< std::basic_string<CharT, Traits, Alloc>, const CharT* >
23866: : boost::true_type
23866: {};
23866:
23866:
23866:
23866: template<typename Target, typename Source>
23866: struct is_char_array_to_booststring
23866: : boost::false_type
23866: {};
23866:
23866: template<typename CharT, typename Traits, typename Alloc>
23866: struct is_char_array_to_booststring< boost::container::basic_string<CharT, Traits, Alloc>, CharT* >
23866: : boost::true_type
23866: {};
23866:
23866: template<typename CharT, typename Traits, typename Alloc>
23866: struct is_char_array_to_booststring< boost::container::basic_string<CharT, Traits, Alloc>, const CharT* >
23866: : boost::true_type
23866: {};
23866:
23866: template <typename Target, typename Source>
23866: struct copy_converter_impl
23866: {
23866:
23866:
23866:
23866: template <class T>
23866: static inline bool try_convert(T&& arg, Target& result) {
23866: result = static_cast<T&&>(arg);
23866: return true;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: };
23866: }
23866:
23866: namespace conversion { namespace detail {
23866:
23866: template <typename Target, typename Source>
23866: inline bool try_lexical_convert(const Source& arg, Target& result)
23866: {
23866: typedef typename boost::detail::array_to_pointer_decay<Source>::type src;
23866:
23866: typedef boost::integral_constant<
23866: bool,
23866: boost::detail::is_xchar_to_xchar<Target, src >::value ||
23866: boost::detail::is_char_array_to_stdstring<Target, src >::value ||
23866: boost::detail::is_char_array_to_booststring<Target, src >::value ||
23866: (
23866: boost::is_same<Target, src >::value &&
23866: (boost::detail::is_stdstring<Target >::value || boost::detail::is_booststring<Target >::value)
23866: ) ||
23866: (
23866: boost::is_same<Target, src >::value &&
23866: boost::detail::is_character<Target >::value
23866: )
23866: > shall_we_copy_t;
23866:
23866: typedef boost::detail::is_arithmetic_and_not_xchars<Target, src >
23866: shall_we_copy_with_dynamic_check_t;
23866:
23866:
23866:
23866: typedef typename boost::conditional<
23866: shall_we_copy_t::value,
23866: boost::type_identity<boost::detail::copy_converter_impl<Target, src > >,
23866: boost::conditional<
23866: shall_we_copy_with_dynamic_check_t::value,
23866: boost::detail::dynamic_num_converter_impl<Target, src >,
23866: boost::detail::lexical_converter_impl<Target, src >
23866: >
23866: >::type caster_type_lazy;
23866:
23866: typedef typename caster_type_lazy::type caster_type;
23866:
23866: return caster_type::try_convert(arg, result);
23866: }
23866:
23866: template <typename Target, typename CharacterT>
23866: inline bool try_lexical_convert(const CharacterT* chars, std::size_t count, Target& result)
23866: {
23866: static_assert(boost::detail::is_character<CharacterT>::value, "This overload of try_lexical_convert is meant to be used only with arrays of characters.")
23866:
23866:
23866: ;
23866: return ::boost::conversion::detail::try_lexical_convert(
23866: ::boost::iterator_range<const CharacterT*>(chars, chars + count), result
23866: );
23866: }
23866:
23866: }}
23866:
23866: namespace conversion {
23866:
23866: using ::boost::conversion::detail::try_lexical_convert;
23866: }
23866:
23866: }
23866:
23866:
23866:
23866:
23866: #pragma GCC diagnostic pop
23866: # 33 "/usr/include/boost/lexical_cast.hpp" 2 3 4
23866:
23866: namespace boost
23866: {
23866: template <typename Target, typename Source>
23866: inline Target lexical_cast(const Source &arg)
23866: {
23866: Target result = Target();
23866:
23866: if (!boost::conversion::detail::try_lexical_convert(arg, result)) {
23866: boost::conversion::detail::throw_bad_cast<Source, Target>();
23866: }
23866:
23866: return result;
23866: }
23866:
23866: template <typename Target>
23866: inline Target lexical_cast(const char* chars, std::size_t count)
23866: {
23866: return ::boost::lexical_cast<Target>(
23866: ::boost::iterator_range<const char*>(chars, chars + count)
23866: );
23866: }
23866:
23866: template <typename Target>
23866: inline Target lexical_cast(const unsigned char* chars, std::size_t count)
23866: {
23866: return ::boost::lexical_cast<Target>(
23866: ::boost::iterator_range<const unsigned char*>(chars, chars + count)
23866: );
23866: }
23866:
23866: template <typename Target>
23866: inline Target lexical_cast(const signed char* chars, std::size_t count)
23866: {
23866: return ::boost::lexical_cast<Target>(
23866: ::boost::iterator_range<const signed char*>(chars, chars + count)
23866: );
23866: }
23866:
23866:
23866: template <typename Target>
23866: inline Target lexical_cast(const wchar_t* chars, std::size_t count)
23866: {
23866: return ::boost::lexical_cast<Target>(
23866: ::boost::iterator_range<const wchar_t*>(chars, chars + count)
23866: );
23866: }
23866:
23866:
23866: template <typename Target>
23866: inline Target lexical_cast(const char16_t* chars, std::size_t count)
23866: {
23866: return ::boost::lexical_cast<Target>(
23866: ::boost::iterator_range<const char16_t*>(chars, chars + count)
23866: );
23866: }
23866:
23866:
23866: template <typename Target>
23866: inline Target lexical_cast(const char32_t* chars, std::size_t count)
23866: {
23866: return ::boost::lexical_cast<Target>(
23866: ::boost::iterator_range<const char32_t*>(chars, chars + count)
23866: );
23866: }
23866:
23866:
23866: }
23866:
23866: #undef BOOST_LCAST_NO_WCHAR_T
23866: # 21 "/usr/include/boost/multiprecision/detail/number_base.hpp" 2 3 4
23866: # 46 "/usr/include/boost/multiprecision/detail/number_base.hpp" 3 4
23866: #define BOOST_MP_FORCEINLINE inline
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MP_NOEXCEPT_IF(x) BOOST_NOEXCEPT_IF(x)
23866: # 64 "/usr/include/boost/multiprecision/detail/number_base.hpp" 3 4
23866: #define BOOST_MP_THREAD_LOCAL thread_local
23866: #define BOOST_MP_USING_THREAD_LOCAL
23866: # 82 "/usr/include/boost/multiprecision/detail/number_base.hpp" 3 4
23866: #define BOOST_MP_HAS_BUILTIN_IS_CONSTANT_EVALUATED
23866: # 101 "/usr/include/boost/multiprecision/detail/number_base.hpp" 3 4
23866: #define BOOST_MP_IS_CONST_EVALUATED(x) __builtin_is_constant_evaluated()
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MP_CXX14_CONSTEXPR BOOST_CXX14_CONSTEXPR
23866: # 133 "/usr/include/boost/multiprecision/detail/number_base.hpp" 3 4
23866: #define BOOST_CXX14_CONSTEXPR_IF_DETECTION constexpr
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace multiprecision {
23866:
23866: enum expression_template_option
23866: {
23866: et_off = 0,
23866: et_on = 1
23866: };
23866:
23866: template <class Backend>
23866: struct expression_template_default
23866: {
23866: static const expression_template_option value = et_on;
23866: };
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates = expression_template_default<Backend>::value>
23866: class number;
23866:
23866: template <class T>
23866: struct is_number : public mpl::false_
23866: {};
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates>
23866: struct is_number<number<Backend, ExpressionTemplates> > : public mpl::true_
23866: {};
23866:
23866: template <class T>
23866: struct is_et_number : public mpl::false_
23866: {};
23866:
23866: template <class Backend>
23866: struct is_et_number<number<Backend, et_on> > : public mpl::true_
23866: {};
23866:
23866: template <class T>
23866: struct is_no_et_number : public mpl::false_
23866: {};
23866:
23866: template <class Backend>
23866: struct is_no_et_number<number<Backend, et_off> > : public mpl::true_
23866: {};
23866:
23866: namespace detail {
23866:
23866:
23866: template <class tag, class Arg1 = void, class Arg2 = void, class Arg3 = void, class Arg4 = void>
23866: struct expression;
23866:
23866: }
23866:
23866: template <class T>
23866: struct is_number_expression : public mpl::false_
23866: {};
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: struct is_number_expression<detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > : public mpl::true_
23866: {};
23866:
23866: template <class T, class Num>
23866: struct is_compatible_arithmetic_type
23866: : public mpl::bool_<
23866: is_convertible<T, Num>::value && !is_same<T, Num>::value && !is_number_expression<T>::value>
23866: {};
23866:
23866: namespace detail {
23866:
23866:
23866:
23866: template <class T>
23866: constexpr typename enable_if_c<(is_signed<T>::value || is_floating_point<T>::value), T>::type abs(T t) noexcept
23866: {
23866:
23866:
23866:
23866: return t < 0 ? T(1u) + T(-(t + 1)) : t;
23866: }
23866: template <class T>
23866: constexpr typename enable_if_c<(is_unsigned<T>::value), T>::type abs(T t) noexcept
23866: {
23866: return t;
23866: }
23866:
23866: #define BOOST_MP_USING_ABS using boost::multiprecision::detail::abs;
23866:
23866: template <class T>
23866: constexpr typename enable_if_c<(is_signed<T>::value || is_floating_point<T>::value), typename make_unsigned<T>::type>::type unsigned_abs(T t) noexcept
23866: {
23866:
23866:
23866:
23866: return t < 0 ? static_cast<typename make_unsigned<T>::type>(1u) + static_cast<typename make_unsigned<T>::type>(-(t + 1)) : static_cast<typename make_unsigned<T>::type>(t);
23866: }
23866: template <class T>
23866: constexpr typename enable_if_c<(is_unsigned<T>::value), T>::type unsigned_abs(T t) noexcept
23866: {
23866: return t;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MP_MOVE(x) std::move(x)
23866:
23866:
23866:
23866:
23866: template <class T>
23866: struct bits_of
23866: {
23866: static_assert(is_integral<T>::value || is_enum<T>::value || std::numeric_limits<T>::is_specialized, "is_integral<T>::value || is_enum<T>::value || std::numeric_limits<T>::is_specialized");
23866: static const unsigned value =
23866: std::numeric_limits<T>::is_specialized ? std::numeric_limits<T>::digits
23866: : sizeof(T) * 8 - (is_signed<T>::value ? 1 : 0);
23866: };
23866: # 266 "/usr/include/boost/multiprecision/detail/number_base.hpp" 3 4
23866: template <int b>
23866: struct has_enough_bits
23866: {
23866: template <class T>
23866: struct type : public mpl::bool_<bits_of<T>::value >= b>
23866: {};
23866: };
23866:
23866: template <class Val, class Backend, class Tag>
23866: struct canonical_imp
23866: {
23866: typedef typename remove_cv<typename decay<const Val>::type>::type type;
23866: };
23866: template <class B, class Backend, class Tag>
23866: struct canonical_imp<number<B, et_on>, Backend, Tag>
23866: {
23866: typedef B type;
23866: };
23866: template <class B, class Backend, class Tag>
23866: struct canonical_imp<number<B, et_off>, Backend, Tag>
23866: {
23866: typedef B type;
23866: };
23866: # 301 "/usr/include/boost/multiprecision/detail/number_base.hpp" 3 4
23866: template <class Val, class Backend>
23866: struct canonical_imp<Val, Backend, mpl::int_<0> >
23866: {
23866: typedef typename has_enough_bits<bits_of<Val>::value>::template type<mpl::_> pred_type;
23866: typedef typename mpl::find_if<
23866: typename Backend::signed_types,
23866: pred_type>::type iter_type;
23866: typedef typename mpl::end<typename Backend::signed_types>::type end_type;
23866: typedef typename mpl::eval_if<boost::is_same<iter_type, end_type>, mpl::identity<Val>, mpl::deref<iter_type> >::type type;
23866: };
23866: template <class Val, class Backend>
23866: struct canonical_imp<Val, Backend, mpl::int_<1> >
23866: {
23866: typedef typename has_enough_bits<bits_of<Val>::value>::template type<mpl::_> pred_type;
23866: typedef typename mpl::find_if<
23866: typename Backend::unsigned_types,
23866: pred_type>::type iter_type;
23866: typedef typename mpl::end<typename Backend::unsigned_types>::type end_type;
23866: typedef typename mpl::eval_if<boost::is_same<iter_type, end_type>, mpl::identity<Val>, mpl::deref<iter_type> >::type type;
23866: };
23866: template <class Val, class Backend>
23866: struct canonical_imp<Val, Backend, mpl::int_<2> >
23866: {
23866: typedef typename has_enough_bits<bits_of<Val>::value>::template type<mpl::_> pred_type;
23866: typedef typename mpl::find_if<
23866: typename Backend::float_types,
23866: pred_type>::type iter_type;
23866: typedef typename mpl::end<typename Backend::float_types>::type end_type;
23866: typedef typename mpl::eval_if<boost::is_same<iter_type, end_type>, mpl::identity<Val>, mpl::deref<iter_type> >::type type;
23866: };
23866: template <class Val, class Backend>
23866: struct canonical_imp<Val, Backend, mpl::int_<3> >
23866: {
23866: typedef const char* type;
23866: };
23866:
23866: template <class Val, class Backend>
23866: struct canonical
23866: {
23866: typedef typename mpl::if_<
23866: is_signed<Val>,
23866: mpl::int_<0>,
23866: typename mpl::if_<
23866: is_unsigned<Val>,
23866: mpl::int_<1>,
23866: typename mpl::if_<
23866: is_floating_point<Val>,
23866: mpl::int_<2>,
23866: typename mpl::if_<
23866: mpl::or_<
23866: is_convertible<Val, const char*>,
23866: is_same<Val, std::string> >,
23866: mpl::int_<3>,
23866: mpl::int_<4> >::type>::type>::type>::type tag_type;
23866:
23866: typedef typename canonical_imp<Val, Backend, tag_type>::type type;
23866: };
23866:
23866: struct terminal
23866: {};
23866: struct negate
23866: {};
23866: struct plus
23866: {};
23866: struct minus
23866: {};
23866: struct multiplies
23866: {};
23866: struct divides
23866: {};
23866: struct modulus
23866: {};
23866: struct shift_left
23866: {};
23866: struct shift_right
23866: {};
23866: struct bitwise_and
23866: {};
23866: struct bitwise_or
23866: {};
23866: struct bitwise_xor
23866: {};
23866: struct bitwise_complement
23866: {};
23866: struct add_immediates
23866: {};
23866: struct subtract_immediates
23866: {};
23866: struct multiply_immediates
23866: {};
23866: struct divide_immediates
23866: {};
23866: struct modulus_immediates
23866: {};
23866: struct bitwise_and_immediates
23866: {};
23866: struct bitwise_or_immediates
23866: {};
23866: struct bitwise_xor_immediates
23866: {};
23866: struct complement_immediates
23866: {};
23866: struct function
23866: {};
23866: struct multiply_add
23866: {};
23866: struct multiply_subtract
23866: {};
23866:
23866: template <class T>
23866: struct backend_type;
23866:
23866: template <class T, expression_template_option ExpressionTemplates>
23866: struct backend_type<number<T, ExpressionTemplates> >
23866: {
23866: typedef T type;
23866: };
23866:
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: struct backend_type<expression<tag, A1, A2, A3, A4> >
23866: {
23866: typedef typename backend_type<typename expression<tag, A1, A2, A3, A4>::result_type>::type type;
23866: };
23866:
23866: template <class T1, class T2>
23866: struct combine_expression
23866: {
23866:
23866:
23866:
23866: typedef decltype(T1() + T2()) type;
23866:
23866: };
23866:
23866: template <class T1, expression_template_option ExpressionTemplates, class T2>
23866: struct combine_expression<number<T1, ExpressionTemplates>, T2>
23866: {
23866: typedef number<T1, ExpressionTemplates> type;
23866: };
23866:
23866: template <class T1, class T2, expression_template_option ExpressionTemplates>
23866: struct combine_expression<T1, number<T2, ExpressionTemplates> >
23866: {
23866: typedef number<T2, ExpressionTemplates> type;
23866: };
23866:
23866: template <class T, expression_template_option ExpressionTemplates>
23866: struct combine_expression<number<T, ExpressionTemplates>, number<T, ExpressionTemplates> >
23866: {
23866: typedef number<T, ExpressionTemplates> type;
23866: };
23866:
23866: template <class T1, expression_template_option ExpressionTemplates1, class T2, expression_template_option ExpressionTemplates2>
23866: struct combine_expression<number<T1, ExpressionTemplates1>, number<T2, ExpressionTemplates2> >
23866: {
23866: typedef typename mpl::if_c<
23866: is_convertible<number<T2, ExpressionTemplates2>, number<T1, ExpressionTemplates2> >::value,
23866: number<T1, ExpressionTemplates1>,
23866: number<T2, ExpressionTemplates2> >::type type;
23866: };
23866:
23866: template <class T>
23866: struct arg_type
23866: {
23866: typedef expression<terminal, T> type;
23866: };
23866:
23866: template <class Tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: struct arg_type<expression<Tag, Arg1, Arg2, Arg3, Arg4> >
23866: {
23866: typedef expression<Tag, Arg1, Arg2, Arg3, Arg4> type;
23866: };
23866:
23866: struct unmentionable
23866: {
23866: unmentionable* proc() { return 0; }
23866: };
23866:
23866: typedef unmentionable* (unmentionable::*unmentionable_type)();
23866:
23866: template <class T, bool b>
23866: struct expression_storage_base
23866: {
23866: typedef const T& type;
23866: };
23866:
23866: template <class T>
23866: struct expression_storage_base<T, true>
23866: {
23866: typedef T type;
23866: };
23866:
23866: template <class T>
23866: struct expression_storage : public expression_storage_base<T, boost::is_arithmetic<T>::value>
23866: {};
23866:
23866: template <class T>
23866: struct expression_storage<T*>
23866: {
23866: typedef T* type;
23866: };
23866:
23866: template <class T>
23866: struct expression_storage<const T*>
23866: {
23866: typedef const T* type;
23866: };
23866:
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: struct expression_storage<expression<tag, A1, A2, A3, A4> >
23866: {
23866: typedef expression<tag, A1, A2, A3, A4> type;
23866: };
23866:
23866: template <class tag, class Arg1>
23866: struct expression<tag, Arg1, void, void, void>
23866: {
23866: typedef mpl::int_<1> arity;
23866: typedef typename arg_type<Arg1>::type left_type;
23866: typedef typename left_type::result_type left_result_type;
23866: typedef typename left_type::result_type result_type;
23866: typedef tag tag_type;
23866:
23866: explicit constexpr expression(const Arg1& a) : arg(a) {}
23866: constexpr expression(const expression& e) : arg(e.arg) {}
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class Other>
23866: constexpr expression& operator=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not assign to a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: constexpr expression& operator++()
23866: {
23866:
23866: static_assert(sizeof(*this) == 0x7fffffff, "You can not increment a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: constexpr expression& operator++(int)
23866: {
23866:
23866: static_assert(sizeof(*this) == 0x7fffffff, "You can not increment a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: constexpr expression& operator--()
23866: {
23866:
23866: static_assert(sizeof(*this) == 0x7fffffff, "You can not decrement a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: constexpr expression& operator--(int)
23866: {
23866:
23866: static_assert(sizeof(*this) == 0x7fffffff, "You can not decrement a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator+=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator+= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator-=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator-= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator*=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator*= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator/=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator/= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator%=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator%= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator|=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator|= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator&=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator&= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator^=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator^= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator<<=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator<<= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator>>=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator>>= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866:
23866:
23866: constexpr left_type left() const
23866: {
23866: return left_type(arg);
23866: }
23866:
23866: constexpr const Arg1& left_ref() const noexcept { return arg; }
23866:
23866: static const unsigned depth = left_type::depth + 1;
23866: # 662 "/usr/include/boost/multiprecision/detail/number_base.hpp" 3 4
23866: template <class T
23866:
23866: ,
23866: typename boost::disable_if_c<is_number<T>::value || is_constructible<T const&, result_type>::value || !is_constructible<T, result_type>::value, int>::type = 0
23866:
23866: >
23866: explicit constexpr operator T() const
23866: {
23866: return static_cast<T>(static_cast<result_type>(*this));
23866: }
23866: inline explicit constexpr operator bool() const
23866: {
23866: result_type r(*this);
23866: return static_cast<bool>(r);
23866: }
23866: # 690 "/usr/include/boost/multiprecision/detail/number_base.hpp" 3 4
23866: template <class T>
23866: constexpr T convert_to()
23866: {
23866: result_type r(*this);
23866: return r.template convert_to<T>();
23866: }
23866:
23866: private:
23866: typename expression_storage<Arg1>::type arg;
23866: expression& operator=(const expression&);
23866: };
23866:
23866: template <class Arg1>
23866: struct expression<terminal, Arg1, void, void, void>
23866: {
23866: typedef mpl::int_<0> arity;
23866: typedef Arg1 result_type;
23866: typedef terminal tag_type;
23866:
23866: explicit constexpr expression(const Arg1& a) : arg(a) {}
23866: constexpr expression(const expression& e) : arg(e.arg) {}
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class Other>
23866: constexpr expression& operator=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not assign to a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: constexpr expression& operator++()
23866: {
23866:
23866: static_assert(sizeof(*this) == 0x7fffffff, "You can not increment a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: constexpr expression& operator++(int)
23866: {
23866:
23866: static_assert(sizeof(*this) == 0x7fffffff, "You can not increment a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: constexpr expression& operator--()
23866: {
23866:
23866: static_assert(sizeof(*this) == 0x7fffffff, "You can not decrement a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: constexpr expression& operator--(int)
23866: {
23866:
23866: static_assert(sizeof(*this) == 0x7fffffff, "You can not decrement a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator+=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator+= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator-=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator-= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator*=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator*= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator/=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator/= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator%=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator%= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator|=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator|= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator&=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator&= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator^=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator^= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator<<=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator<<= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator>>=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator>>= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866:
23866:
23866: constexpr const Arg1& value() const noexcept
23866: {
23866: return arg;
23866: }
23866:
23866: static const unsigned depth = 0;
23866: # 846 "/usr/include/boost/multiprecision/detail/number_base.hpp" 3 4
23866: template <class T
23866:
23866: ,
23866: typename boost::disable_if_c<is_number<T>::value || is_constructible<T const&, result_type>::value || !is_constructible<T, result_type>::value, int>::type = 0
23866:
23866: >
23866: explicit constexpr operator T() const
23866: {
23866: return static_cast<T>(static_cast<result_type>(*this));
23866: }
23866: inline explicit constexpr operator bool() const
23866: {
23866: result_type r(*this);
23866: return static_cast<bool>(r);
23866: }
23866: # 873 "/usr/include/boost/multiprecision/detail/number_base.hpp" 3 4
23866: template <class T>
23866: constexpr T convert_to()
23866: {
23866: result_type r(*this);
23866: return r.template convert_to<T>();
23866: }
23866:
23866: private:
23866: typename expression_storage<Arg1>::type arg;
23866: expression& operator=(const expression&);
23866: };
23866:
23866: template <class tag, class Arg1, class Arg2>
23866: struct expression<tag, Arg1, Arg2, void, void>
23866: {
23866: typedef mpl::int_<2> arity;
23866: typedef typename arg_type<Arg1>::type left_type;
23866: typedef typename arg_type<Arg2>::type right_type;
23866: typedef typename left_type::result_type left_result_type;
23866: typedef typename right_type::result_type right_result_type;
23866: typedef typename combine_expression<left_result_type, right_result_type>::type result_type;
23866: typedef tag tag_type;
23866:
23866: constexpr expression(const Arg1& a1, const Arg2& a2) : arg1(a1), arg2(a2) {}
23866: constexpr expression(const expression& e) : arg1(e.arg1), arg2(e.arg2) {}
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class Other>
23866: constexpr expression& operator=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not assign to a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: constexpr expression& operator++()
23866: {
23866:
23866: static_assert(sizeof(*this) == 0x7fffffff, "You can not increment a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: constexpr expression& operator++(int)
23866: {
23866:
23866: static_assert(sizeof(*this) == 0x7fffffff, "You can not increment a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: constexpr expression& operator--()
23866: {
23866:
23866: static_assert(sizeof(*this) == 0x7fffffff, "You can not decrement a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: constexpr expression& operator--(int)
23866: {
23866:
23866: static_assert(sizeof(*this) == 0x7fffffff, "You can not decrement a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator+=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator+= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator-=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator-= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator*=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator*= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator/=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator/= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator%=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator%= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator|=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator|= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator&=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator&= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator^=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator^= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator<<=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator<<= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator>>=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator>>= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866:
23866:
23866: constexpr left_type left() const
23866: {
23866: return left_type(arg1);
23866: }
23866: constexpr right_type right() const { return right_type(arg2); }
23866: constexpr const Arg1& left_ref() const noexcept { return arg1; }
23866: constexpr const Arg2& right_ref() const noexcept { return arg2; }
23866: # 1034 "/usr/include/boost/multiprecision/detail/number_base.hpp" 3 4
23866: template <class T
23866:
23866: ,
23866: typename boost::disable_if_c<is_number<T>::value || is_constructible<T const&, result_type>::value || !is_constructible<T, result_type>::value, int>::type = 0
23866:
23866: >
23866: explicit constexpr operator T() const
23866: {
23866: return static_cast<T>(static_cast<result_type>(*this));
23866: }
23866: inline explicit constexpr operator bool() const
23866: {
23866: result_type r(*this);
23866: return static_cast<bool>(r);
23866: }
23866: # 1061 "/usr/include/boost/multiprecision/detail/number_base.hpp" 3 4
23866: template <class T>
23866: constexpr T convert_to()
23866: {
23866: result_type r(*this);
23866: return r.template convert_to<T>();
23866: }
23866:
23866: static const constexpr unsigned left_depth = left_type::depth + 1;
23866: static const constexpr unsigned right_depth = right_type::depth + 1;
23866: static const constexpr unsigned depth = left_depth > right_depth ? left_depth : right_depth;
23866:
23866: private:
23866: typename expression_storage<Arg1>::type arg1;
23866: typename expression_storage<Arg2>::type arg2;
23866: expression& operator=(const expression&);
23866: };
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3>
23866: struct expression<tag, Arg1, Arg2, Arg3, void>
23866: {
23866: typedef mpl::int_<3> arity;
23866: typedef typename arg_type<Arg1>::type left_type;
23866: typedef typename arg_type<Arg2>::type middle_type;
23866: typedef typename arg_type<Arg3>::type right_type;
23866: typedef typename left_type::result_type left_result_type;
23866: typedef typename middle_type::result_type middle_result_type;
23866: typedef typename right_type::result_type right_result_type;
23866: typedef typename combine_expression<
23866: left_result_type,
23866: typename combine_expression<right_result_type, middle_result_type>::type>::type result_type;
23866: typedef tag tag_type;
23866:
23866: constexpr expression(const Arg1& a1, const Arg2& a2, const Arg3& a3) : arg1(a1), arg2(a2), arg3(a3) {}
23866: constexpr expression(const expression& e) : arg1(e.arg1), arg2(e.arg2), arg3(e.arg3) {}
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class Other>
23866: constexpr expression& operator=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not assign to a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: constexpr expression& operator++()
23866: {
23866:
23866: static_assert(sizeof(*this) == 0x7fffffff, "You can not increment a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: constexpr expression& operator++(int)
23866: {
23866:
23866: static_assert(sizeof(*this) == 0x7fffffff, "You can not increment a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: constexpr expression& operator--()
23866: {
23866:
23866: static_assert(sizeof(*this) == 0x7fffffff, "You can not decrement a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: constexpr expression& operator--(int)
23866: {
23866:
23866: static_assert(sizeof(*this) == 0x7fffffff, "You can not decrement a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator+=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator+= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator-=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator-= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator*=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator*= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator/=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator/= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator%=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator%= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator|=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator|= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator&=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator&= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator^=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator^= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator<<=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator<<= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator>>=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator>>= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866:
23866:
23866: constexpr left_type left() const
23866: {
23866: return left_type(arg1);
23866: }
23866: constexpr middle_type middle() const { return middle_type(arg2); }
23866: constexpr right_type right() const { return right_type(arg3); }
23866: constexpr const Arg1& left_ref() const noexcept { return arg1; }
23866: constexpr const Arg2& middle_ref() const noexcept { return arg2; }
23866: constexpr const Arg3& right_ref() const noexcept { return arg3; }
23866: # 1233 "/usr/include/boost/multiprecision/detail/number_base.hpp" 3 4
23866: template <class T
23866:
23866: ,
23866: typename boost::disable_if_c<is_number<T>::value || is_constructible<T const&, result_type>::value || !is_constructible<T, result_type>::value, int>::type = 0
23866:
23866: >
23866: explicit constexpr operator T() const
23866: {
23866: return static_cast<T>(static_cast<result_type>(*this));
23866: }
23866: inline explicit constexpr operator bool() const
23866: {
23866: result_type r(*this);
23866: return static_cast<bool>(r);
23866: }
23866: # 1260 "/usr/include/boost/multiprecision/detail/number_base.hpp" 3 4
23866: template <class T>
23866: constexpr T convert_to()
23866: {
23866: result_type r(*this);
23866: return r.template convert_to<T>();
23866: }
23866:
23866: static const unsigned left_depth = left_type::depth + 1;
23866: static const unsigned middle_depth = middle_type::depth + 1;
23866: static const unsigned right_depth = right_type::depth + 1;
23866: static const unsigned depth = left_depth > right_depth ? (left_depth > middle_depth ? left_depth : middle_depth) : (right_depth > middle_depth ? right_depth : middle_depth);
23866:
23866: private:
23866: typename expression_storage<Arg1>::type arg1;
23866: typename expression_storage<Arg2>::type arg2;
23866: typename expression_storage<Arg3>::type arg3;
23866: expression& operator=(const expression&);
23866: };
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: struct expression
23866: {
23866: typedef mpl::int_<4> arity;
23866: typedef typename arg_type<Arg1>::type left_type;
23866: typedef typename arg_type<Arg2>::type left_middle_type;
23866: typedef typename arg_type<Arg3>::type right_middle_type;
23866: typedef typename arg_type<Arg4>::type right_type;
23866: typedef typename left_type::result_type left_result_type;
23866: typedef typename left_middle_type::result_type left_middle_result_type;
23866: typedef typename right_middle_type::result_type right_middle_result_type;
23866: typedef typename right_type::result_type right_result_type;
23866: typedef typename combine_expression<
23866: left_result_type,
23866: typename combine_expression<
23866: left_middle_result_type,
23866: typename combine_expression<right_middle_result_type, right_result_type>::type>::type>::type result_type;
23866: typedef tag tag_type;
23866:
23866: constexpr expression(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4) : arg1(a1), arg2(a2), arg3(a3), arg4(a4) {}
23866: constexpr expression(const expression& e) : arg1(e.arg1), arg2(e.arg2), arg3(e.arg3), arg4(e.arg4) {}
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class Other>
23866: constexpr expression& operator=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not assign to a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: constexpr expression& operator++()
23866: {
23866:
23866: static_assert(sizeof(*this) == 0x7fffffff, "You can not increment a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: constexpr expression& operator++(int)
23866: {
23866:
23866: static_assert(sizeof(*this) == 0x7fffffff, "You can not increment a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: constexpr expression& operator--()
23866: {
23866:
23866: static_assert(sizeof(*this) == 0x7fffffff, "You can not decrement a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: constexpr expression& operator--(int)
23866: {
23866:
23866: static_assert(sizeof(*this) == 0x7fffffff, "You can not decrement a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator+=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator+= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator-=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator-= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator*=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator*= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator/=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator/= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator%=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator%= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator|=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator|= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator&=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator&= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator^=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator^= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator<<=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator<<= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866: template <class Other>
23866: constexpr expression& operator>>=(const Other&)
23866: {
23866:
23866: static_assert(sizeof(Other) == 0x7fffffff, "You can not use operator>>= on a Boost.Multiprecision expression template: did you inadvertantly store an expression template in a \"auto\" variable? Or pass an expression to a template function with deduced temnplate arguments?");
23866: return *this;
23866: }
23866:
23866:
23866: constexpr left_type left() const
23866: {
23866: return left_type(arg1);
23866: }
23866: constexpr left_middle_type left_middle() const { return left_middle_type(arg2); }
23866: constexpr right_middle_type right_middle() const { return right_middle_type(arg3); }
23866: constexpr right_type right() const { return right_type(arg4); }
23866: constexpr const Arg1& left_ref() const noexcept { return arg1; }
23866: constexpr const Arg2& left_middle_ref() const noexcept { return arg2; }
23866: constexpr const Arg3& right_middle_ref() const noexcept { return arg3; }
23866: constexpr const Arg4& right_ref() const noexcept { return arg4; }
23866: # 1440 "/usr/include/boost/multiprecision/detail/number_base.hpp" 3 4
23866: template <class T
23866:
23866: ,
23866: typename boost::disable_if_c<is_number<T>::value || is_constructible<T const&, result_type>::value || !is_constructible<T, result_type>::value, int>::type = 0
23866:
23866: >
23866: explicit constexpr operator T() const
23866: {
23866: return static_cast<T>(static_cast<result_type>(*this));
23866: }
23866: inline explicit constexpr operator bool() const
23866: {
23866: result_type r(*this);
23866: return static_cast<bool>(r);
23866: }
23866: # 1467 "/usr/include/boost/multiprecision/detail/number_base.hpp" 3 4
23866: template <class T>
23866: constexpr T convert_to()
23866: {
23866: result_type r(*this);
23866: return r.template convert_to<T>();
23866: }
23866:
23866: static const unsigned left_depth = left_type::depth + 1;
23866: static const unsigned left_middle_depth = left_middle_type::depth + 1;
23866: static const unsigned right_middle_depth = right_middle_type::depth + 1;
23866: static const unsigned right_depth = right_type::depth + 1;
23866:
23866: static const unsigned left_max_depth = left_depth > left_middle_depth ? left_depth : left_middle_depth;
23866: static const unsigned right_max_depth = right_depth > right_middle_depth ? right_depth : right_middle_depth;
23866:
23866: static const unsigned depth = left_max_depth > right_max_depth ? left_max_depth : right_max_depth;
23866:
23866: private:
23866: typename expression_storage<Arg1>::type arg1;
23866: typename expression_storage<Arg2>::type arg2;
23866: typename expression_storage<Arg3>::type arg3;
23866: typename expression_storage<Arg4>::type arg4;
23866: expression& operator=(const expression&);
23866: };
23866:
23866: template <class T>
23866: struct digits2
23866: {
23866: static_assert(std::numeric_limits<T>::is_specialized, "std::numeric_limits<T>::is_specialized");
23866: static_assert((std::numeric_limits<T>::radix == 2) || (std::numeric_limits<T>::radix == 10), "(std::numeric_limits<T>::radix == 2) || (std::numeric_limits<T>::radix == 10)");
23866:
23866: static_assert(0x7fffffffL / 1000 > (std::numeric_limits<T>::digits + 1), "LONG_MAX / 1000 > (std::numeric_limits<T>::digits + 1)");
23866: static const long m_value = std::numeric_limits<T>::radix == 10 ? (((std::numeric_limits<T>::digits + 1) * 1000L) / 301L) : std::numeric_limits<T>::digits;
23866: static inline constexpr long value() noexcept { return m_value; }
23866: };
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MP_MIN_EXPONENT_DIGITS 2
23866:
23866:
23866:
23866: template <class S>
23866: void format_float_string(S& str, boost::intmax_t my_exp, boost::intmax_t digits, std::ios_base::fmtflags f, bool iszero)
23866: {
23866: typedef typename S::size_type size_type;
23866: bool scientific = (f & std::ios_base::scientific) == std::ios_base::scientific;
23866: bool fixed = (f & std::ios_base::fixed) == std::ios_base::fixed;
23866: bool showpoint = (f & std::ios_base::showpoint) == std::ios_base::showpoint;
23866: bool showpos = (f & std::ios_base::showpos) == std::ios_base::showpos;
23866:
23866: bool neg = str.size() && (str[0] == '-');
23866:
23866: if (neg)
23866: str.erase(0, 1);
23866:
23866: if (digits == 0)
23866: {
23866: digits = (std::max)(str.size(), size_type(16));
23866: }
23866:
23866: if (iszero || str.empty() || (str.find_first_not_of('0') == S::npos))
23866: {
23866:
23866:
23866: str = "0";
23866: if (scientific || fixed)
23866: {
23866: str.append(1, '.');
23866: str.append(size_type(digits), '0');
23866: if (scientific)
23866: str.append("e+00");
23866: }
23866: else
23866: {
23866: if (showpoint)
23866: {
23866: str.append(1, '.');
23866: if (digits > 1)
23866: str.append(size_type(digits - 1), '0');
23866: }
23866: }
23866: if (neg)
23866: str.insert(static_cast<std::string::size_type>(0), 1, '-');
23866: else if (showpos)
23866: str.insert(static_cast<std::string::size_type>(0), 1, '+');
23866: return;
23866: }
23866:
23866: if (!fixed && !scientific && !showpoint)
23866: {
23866:
23866:
23866:
23866: std::string::iterator pos = str.end();
23866: while (pos != str.begin() && *--pos == '0')
23866: {
23866: }
23866: if (pos != str.end())
23866: ++pos;
23866: str.erase(pos, str.end());
23866: if (str.empty())
23866: str = '0';
23866: }
23866: else if (!fixed || (my_exp >= 0))
23866: {
23866:
23866:
23866:
23866: boost::intmax_t chars = str.size();
23866: chars = digits - chars;
23866: if (scientific)
23866: ++chars;
23866: if (chars > 0)
23866: {
23866: str.append(static_cast<std::string::size_type>(chars), '0');
23866: }
23866: }
23866:
23866: if (fixed || (!scientific && (my_exp >= -4) && (my_exp < digits)))
23866: {
23866: if (1 + my_exp > static_cast<boost::intmax_t>(str.size()))
23866: {
23866:
23866: str.append(static_cast<std::string::size_type>(1 + my_exp - str.size()), '0');
23866: if (showpoint || fixed)
23866: str.append(".");
23866: }
23866: else if (my_exp + 1 < static_cast<boost::intmax_t>(str.size()))
23866: {
23866: if (my_exp < 0)
23866: {
23866: str.insert(static_cast<std::string::size_type>(0), static_cast<std::string::size_type>(-1 - my_exp), '0');
23866: str.insert(static_cast<std::string::size_type>(0), "0.");
23866: }
23866: else
23866: {
23866:
23866: str.insert(static_cast<std::string::size_type>(my_exp + 1), 1, '.');
23866: }
23866: }
23866: else if (showpoint || fixed)
23866: str += ".";
23866:
23866: if (fixed)
23866: {
23866:
23866: boost::intmax_t l = str.find('.') + 1;
23866: l = digits - (str.size() - l);
23866: if (l > 0)
23866: str.append(size_type(l), '0');
23866: }
23866: }
23866: else
23866: {
23866: using boost::multiprecision::detail::abs;
23866:
23866: if (showpoint || (str.size() > 1))
23866: str.insert(static_cast<std::string::size_type>(1u), 1, '.');
23866: str.append(static_cast<std::string::size_type>(1u), 'e');
23866: S e = boost::lexical_cast<S>(abs(my_exp));
23866: if (e.size() < 2)
23866: e.insert(static_cast<std::string::size_type>(0), 2 - e.size(), '0');
23866: if (my_exp < 0)
23866: e.insert(static_cast<std::string::size_type>(0), 1, '-');
23866: else
23866: e.insert(static_cast<std::string::size_type>(0), 1, '+');
23866: str.append(e);
23866: }
23866: if (neg)
23866: str.insert(static_cast<std::string::size_type>(0), 1, '-');
23866: else if (showpos)
23866: str.insert(static_cast<std::string::size_type>(0), 1, '+');
23866: }
23866:
23866: template <class V>
23866: constexpr void check_shift_range(V val, const mpl::true_&, const mpl::true_&)
23866: {
23866: if (val > (std::numeric_limits<std::size_t>::max)())
23866: ::boost::throw_exception(std::out_of_range("Can not shift by a value greater than std::numeric_limits<std::size_t>::max()."), ::boost::source_location("/usr/include/boost/multiprecision/detail/number_base.hpp", 1648, __PRETTY_FUNCTION__));
23866: if (val < 0)
23866: ::boost::throw_exception(std::out_of_range("Can not shift by a negative value."), ::boost::source_location("/usr/include/boost/multiprecision/detail/number_base.hpp", 1650, __PRETTY_FUNCTION__));
23866: }
23866: template <class V>
23866: constexpr void check_shift_range(V val, const mpl::false_&, const mpl::true_&)
23866: {
23866: if (val < 0)
23866: ::boost::throw_exception(std::out_of_range("Can not shift by a negative value."), ::boost::source_location("/usr/include/boost/multiprecision/detail/number_base.hpp", 1656, __PRETTY_FUNCTION__));
23866: }
23866: template <class V>
23866: constexpr void check_shift_range(V val, const mpl::true_&, const mpl::false_&)
23866: {
23866: if (val > (std::numeric_limits<std::size_t>::max)())
23866: ::boost::throw_exception(std::out_of_range("Can not shift by a value greater than std::numeric_limits<std::size_t>::max()."), ::boost::source_location("/usr/include/boost/multiprecision/detail/number_base.hpp", 1662, __PRETTY_FUNCTION__));
23866: }
23866: template <class V>
23866: constexpr void check_shift_range(V, const mpl::false_&, const mpl::false_&) noexcept {}
23866:
23866: template <class T>
23866: constexpr const T& evaluate_if_expression(const T& val) { return val; }
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: constexpr typename expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type evaluate_if_expression(const expression<tag, Arg1, Arg2, Arg3, Arg4>& val) { return val; }
23866:
23866: }
23866:
23866:
23866:
23866:
23866: enum number_category_type
23866: {
23866: number_kind_unknown = -1,
23866: number_kind_integer = 0,
23866: number_kind_floating_point = 1,
23866: number_kind_rational = 2,
23866: number_kind_fixed_point = 3,
23866: number_kind_complex = 4
23866: };
23866:
23866: template <class Num, bool, bool>
23866: struct number_category_base : public mpl::int_<number_kind_unknown>
23866: {};
23866: template <class Num>
23866: struct number_category_base<Num, true, false> : public mpl::int_<std::numeric_limits<Num>::is_integer ? number_kind_integer : (std::numeric_limits<Num>::max_exponent ? number_kind_floating_point : number_kind_unknown)>
23866: {};
23866: template <class Num>
23866: struct number_category : public number_category_base<Num, boost::is_class<Num>::value || boost::is_arithmetic<Num>::value, boost::is_abstract<Num>::value>
23866: {};
23866: template <class Backend, expression_template_option ExpressionTemplates>
23866: struct number_category<number<Backend, ExpressionTemplates> > : public number_category<Backend>
23866: {};
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: struct number_category<detail::expression<tag, A1, A2, A3, A4> > : public number_category<typename detail::expression<tag, A1, A2, A3, A4>::result_type>
23866: {};
23866: # 1719 "/usr/include/boost/multiprecision/detail/number_base.hpp" 3 4
23866: template <class T>
23866: struct component_type
23866: {
23866: typedef T type;
23866: };
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: struct component_type<detail::expression<tag, A1, A2, A3, A4> > : public component_type<typename detail::expression<tag, A1, A2, A3, A4>::result_type>
23866: {};
23866:
23866: template <class T>
23866: struct scalar_result_from_possible_complex
23866: {
23866: typedef typename mpl::if_c<number_category<T>::value == number_kind_complex,
23866: typename component_type<T>::type, T>::type type;
23866: };
23866:
23866: template <class T>
23866: struct complex_result_from_scalar;
23866:
23866: template <class T>
23866: struct is_unsigned_number : public mpl::false_
23866: {};
23866: template <class Backend, expression_template_option ExpressionTemplates>
23866: struct is_unsigned_number<number<Backend, ExpressionTemplates> > : public is_unsigned_number<Backend>
23866: {};
23866: template <class T>
23866: struct is_signed_number : public mpl::bool_<!is_unsigned_number<T>::value>
23866: {};
23866: template <class T>
23866: struct is_interval_number : public mpl::false_
23866: {};
23866: template <class Backend, expression_template_option ExpressionTemplates>
23866: struct is_interval_number<number<Backend, ExpressionTemplates> > : public is_interval_number<Backend>
23866: {};
23866:
23866: }
23866: }
23866:
23866: namespace boost { namespace math {
23866: namespace tools {
23866:
23866: template <class T>
23866: struct promote_arg;
23866:
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: struct promote_arg<boost::multiprecision::detail::expression<tag, A1, A2, A3, A4> >
23866: {
23866: typedef typename boost::multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type type;
23866: };
23866:
23866: template <class R, class B, boost::multiprecision::expression_template_option ET>
23866: inline R real_cast(const boost::multiprecision::number<B, ET>& val)
23866: {
23866: return val.template convert_to<R>();
23866: }
23866:
23866: template <class R, class tag, class A1, class A2, class A3, class A4>
23866: inline R real_cast(const boost::multiprecision::detail::expression<tag, A1, A2, A3, A4>& val)
23866: {
23866: typedef typename boost::multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type val_type;
23866: return val_type(val).template convert_to<R>();
23866: }
23866:
23866: template <class B, boost::multiprecision::expression_template_option ET>
23866: struct is_complex_type<boost::multiprecision::number<B, ET> > : public boost::mpl::bool_<boost::multiprecision::number_category<B>::value == boost::multiprecision::number_kind_complex> {};
23866:
23866: }
23866:
23866: namespace constants {
23866:
23866: template <class T>
23866: struct is_explicitly_convertible_from_string;
23866:
23866: template <class B, boost::multiprecision::expression_template_option ET>
23866: struct is_explicitly_convertible_from_string<boost::multiprecision::number<B, ET> >
23866: {
23866: static const bool value = true;
23866: };
23866:
23866: }
23866:
23866: }}
23866: # 11 "/usr/include/boost/multiprecision/traits/is_variable_precision.hpp" 2 3 4
23866:
23866: namespace boost { namespace multiprecision { namespace detail {
23866:
23866: template <class Backend>
23866: struct is_variable_precision : public false_type
23866: {};
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates>
23866: struct is_variable_precision<number<Backend, ExpressionTemplates> > : public is_variable_precision<Backend>
23866: {};
23866:
23866: }
23866: }
23866: }
23866: # 10 "/usr/include/boost/multiprecision/detail/precision.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/multiprecision/detail/digits.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MP_DIGITS_HPP
23866:
23866: namespace boost { namespace multiprecision { namespace detail {
23866:
23866: inline unsigned long digits10_2_2(unsigned long d10)
23866: {
23866: return (d10 * 1000uL) / 301uL + ((d10 * 1000uL) % 301 ? 2u : 1u);
23866: }
23866:
23866: inline unsigned long digits2_2_10(unsigned long d2)
23866: {
23866: return (d2 * 301uL) / 1000uL;
23866: }
23866:
23866: }}}
23866: # 12 "/usr/include/boost/multiprecision/detail/precision.hpp" 2 3 4
23866:
23866: namespace boost { namespace multiprecision { namespace detail {
23866:
23866: template <class B, boost::multiprecision::expression_template_option ET>
23866: inline constexpr unsigned current_precision_of_last_chance_imp(const boost::multiprecision::number<B, ET>&, const mpl::false_&)
23866: {
23866: return std::numeric_limits<boost::multiprecision::number<B, ET> >::digits10;
23866: }
23866: template <class B, boost::multiprecision::expression_template_option ET>
23866: inline constexpr unsigned current_precision_of_last_chance_imp(const boost::multiprecision::number<B, ET>& val, const mpl::true_&)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: return val.is_zero() ? 1 : digits2_2_10(msb(abs(val)) - lsb(abs(val)) + 1);
23866: }
23866:
23866: template <class B, boost::multiprecision::expression_template_option ET>
23866: inline constexpr unsigned current_precision_of_imp(const boost::multiprecision::number<B, ET>& n, const mpl::true_&)
23866: {
23866: return n.precision();
23866: }
23866: template <class B, boost::multiprecision::expression_template_option ET>
23866: inline constexpr unsigned current_precision_of_imp(const boost::multiprecision::number<B, ET>& val, const mpl::false_&)
23866: {
23866: return current_precision_of_last_chance_imp(val,
23866: mpl::bool_ <
23866: std::numeric_limits<boost::multiprecision::number<B, ET> >::is_specialized &&
23866: std::numeric_limits<boost::multiprecision::number<B, ET> >::is_integer && std::numeric_limits<boost::multiprecision::number<B, ET> >::is_exact && !std::numeric_limits<boost::multiprecision::number<B, ET> >::is_modulo > ());
23866: }
23866:
23866: template <class Terminal>
23866: inline constexpr unsigned current_precision_of(const Terminal&)
23866: {
23866: return std::numeric_limits<Terminal>::digits10;
23866: }
23866:
23866: template <class Terminal, std::size_t N>
23866: inline constexpr unsigned current_precision_of(const Terminal (&)[N])
23866: {
23866: return 0;
23866: }
23866:
23866: template <class B, boost::multiprecision::expression_template_option ET>
23866: inline constexpr unsigned current_precision_of(const boost::multiprecision::number<B, ET>& n)
23866: {
23866: return current_precision_of_imp(n, boost::multiprecision::detail::is_variable_precision<boost::multiprecision::number<B, ET> >());
23866: }
23866:
23866: template <class tag, class Arg1>
23866: inline constexpr unsigned current_precision_of(const expression<tag, Arg1, void, void, void>& expr)
23866: {
23866: return current_precision_of(expr.left_ref());
23866: }
23866:
23866: template <class Arg1>
23866: inline constexpr unsigned current_precision_of(const expression<terminal, Arg1, void, void, void>& expr)
23866: {
23866: return current_precision_of(expr.value());
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2>
23866: inline constexpr unsigned current_precision_of(const expression<tag, Arg1, Arg2, void, void>& expr)
23866: {
23866: return (std::max)(current_precision_of(expr.left_ref()), current_precision_of(expr.right_ref()));
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3>
23866: inline constexpr unsigned current_precision_of(const expression<tag, Arg1, Arg2, Arg3, void>& expr)
23866: {
23866: return (std::max)((std::max)(current_precision_of(expr.left_ref()), current_precision_of(expr.right_ref())), current_precision_of(expr.middle_ref()));
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class R, bool = boost::multiprecision::detail::is_variable_precision<R>::value>
23866: struct scoped_default_precision
23866: {
23866: template <class T>
23866: constexpr scoped_default_precision(const T&) {}
23866: template <class T, class U>
23866: constexpr scoped_default_precision(const T&, const U&) {}
23866: template <class T, class U, class V>
23866: constexpr scoped_default_precision(const T&, const U&, const V&) {}
23866:
23866:
23866:
23866:
23866: unsigned precision() const
23866: {
23866: (static_cast <bool> ("This function should never be called!!" == 0) ? void (0) : __assert_fail ("\"This function should never be called!!\" == 0", "/usr/include/boost/multiprecision/detail/precision.hpp", 108, __extension__ __PRETTY_FUNCTION__));
23866: return 0;
23866: }
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template <class R>
23866: struct scoped_default_precision<R, true>
23866: {
23866: template <class T>
23866: constexpr scoped_default_precision(const T& a)
23866: {
23866: init(current_precision_of(a));
23866: }
23866: template <class T, class U>
23866: constexpr scoped_default_precision(const T& a, const U& b)
23866: {
23866: init((std::max)(current_precision_of(a), current_precision_of(b)));
23866: }
23866: template <class T, class U, class V>
23866: constexpr scoped_default_precision(const T& a, const U& b, const V& c)
23866: {
23866: init((std::max)((std::max)(current_precision_of(a), current_precision_of(b)), current_precision_of(c)));
23866: }
23866: ~scoped_default_precision()
23866: {
23866: if(m_new_prec != m_old_prec)
23866: R::default_precision(m_old_prec);
23866: }
23866: constexpr unsigned precision() const
23866: {
23866: return m_new_prec;
23866: }
23866:
23866: private:
23866: constexpr void init(unsigned p)
23866: {
23866: m_old_prec = R::default_precision();
23866: if (p && (p != m_old_prec))
23866: {
23866: R::default_precision(p);
23866: m_new_prec = p;
23866: }
23866: else
23866: m_new_prec = m_old_prec;
23866: }
23866: unsigned m_old_prec, m_new_prec;
23866: };
23866:
23866: template <class T>
23866: inline constexpr void maybe_promote_precision(T*, const mpl::false_&) {}
23866:
23866: template <class T>
23866: inline constexpr void maybe_promote_precision(T* obj, const mpl::true_&)
23866: {
23866: if (obj->precision() != T::default_precision())
23866: {
23866: obj->precision(T::default_precision());
23866: }
23866: }
23866:
23866: template <class T>
23866: inline constexpr void maybe_promote_precision(T* obj)
23866: {
23866: maybe_promote_precision(obj, mpl::bool_<boost::multiprecision::detail::is_variable_precision<T>::value>());
23866: }
23866:
23866:
23866: #define BOOST_MP_CONSTEXPR_IF_VARIABLE_PRECISION(T) if constexpr(boost::multiprecision::detail::is_variable_precision<T>::value)
23866:
23866:
23866:
23866:
23866:
23866:
23866: }
23866: }
23866: }
23866: # 26 "/usr/include/boost/multiprecision/number.hpp" 2 3 4
23866: # 1 "/usr/include/boost/multiprecision/detail/generic_interconvert.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MP_GENERIC_INTERCONVERT_HPP
23866:
23866: # 1 "/usr/include/boost/multiprecision/detail/default_ops.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MATH_BIG_NUM_DEF_OPS
23866:
23866: # 1 "/usr/include/boost/math/policies/error_handling.hpp" 1 3 4
23866: # 9 "/usr/include/boost/math/policies/error_handling.hpp" 3 4
23866: #define BOOST_MATH_POLICY_ERROR_HANDLING_HPP
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/cstring" 1 3 4
23866: # 39 "/usr/include/c++/10/cstring" 3 4
23866:
23866: # 40 "/usr/include/c++/10/cstring" 3
23866: # 15 "/usr/include/boost/math/policies/error_handling.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/c++/10/cerrno" 1 3 4
23866: # 39 "/usr/include/c++/10/cerrno" 3 4
23866:
23866: # 40 "/usr/include/c++/10/cerrno" 3
23866: # 17 "/usr/include/boost/math/policies/error_handling.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/math/tools/precision.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MATH_TOOLS_PRECISION_INCLUDED
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/assert.hpp" 1 3 4
23866: # 32 "/usr/include/boost/assert.hpp" 3 4
23866: #undef BOOST_ASSERT
23866: #undef BOOST_ASSERT_MSG
23866: #undef BOOST_ASSERT_IS_VOID
23866: # 58 "/usr/include/boost/assert.hpp" 3 4
23866: # 1 "/usr/include/assert.h" 1 3 4
23866: # 24 "/usr/include/assert.h" 3 4
23866: #undef _ASSERT_H
23866: #undef assert
23866: #undef __ASSERT_VOID_CAST
23866:
23866:
23866: #undef assert_perror
23866:
23866:
23866:
23866:
23866: #define _ASSERT_H 1
23866:
23866:
23866:
23866: #define __ASSERT_VOID_CAST static_cast<void>
23866: # 92 "/usr/include/assert.h" 3 4
23866: #define assert(expr) (static_cast <bool> (expr) ? void (0) : __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 117 "/usr/include/assert.h" 3 4
23866: #define assert_perror(errnum) (!(errnum) ? __ASSERT_VOID_CAST (0) : __assert_perror_fail ((errnum), __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 129 "/usr/include/assert.h" 3 4
23866: #define __ASSERT_FUNCTION __extension__ __PRETTY_FUNCTION__
23866: # 59 "/usr/include/boost/assert.hpp" 2 3 4
23866:
23866: #define BOOST_ASSERT(expr) assert(expr)
23866: #define BOOST_ASSERT_MSG(expr,msg) assert((expr)&&(msg))
23866: # 72 "/usr/include/boost/assert.hpp" 3 4
23866: #undef BOOST_VERIFY
23866: #undef BOOST_VERIFY_MSG
23866: # 82 "/usr/include/boost/assert.hpp" 3 4
23866: #define BOOST_VERIFY(expr) BOOST_ASSERT(expr)
23866: #define BOOST_VERIFY_MSG(expr,msg) BOOST_ASSERT_MSG(expr,msg)
23866: # 15 "/usr/include/boost/math/tools/precision.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/limits.h" 1 3 4
23866: # 23 "/usr/include/boost/math/tools/precision.hpp" 2 3 4
23866: # 1 "/usr/include/c++/10/math.h" 1 3 4
23866: # 24 "/usr/include/boost/math/tools/precision.hpp" 2 3 4
23866:
23866: namespace boost{ namespace math
23866: {
23866: namespace tools
23866: {
23866: # 41 "/usr/include/boost/math/tools/precision.hpp" 3 4
23866: template <class T>
23866: inline constexpr int digits() noexcept
23866: {
23866:
23866: static_assert(::std::numeric_limits<T>::is_specialized, "::std::numeric_limits<T>::is_specialized");
23866: static_assert(::std::numeric_limits<T>::radix == 2 || ::std::numeric_limits<T>::radix == 10, "::std::numeric_limits<T>::radix == 2 || ::std::numeric_limits<T>::radix == 10");
23866:
23866:
23866:
23866:
23866: return std::numeric_limits<T>::radix == 2
23866: ? std::numeric_limits<T>::digits
23866: : ((std::numeric_limits<T>::digits + 1) * 1000L) / 301L;
23866: }
23866:
23866: template <class T>
23866: inline constexpr T max_value() noexcept(std::is_floating_point<T>::value)
23866: {
23866:
23866: static_assert(::std::numeric_limits<T>::is_specialized, "::std::numeric_limits<T>::is_specialized");
23866:
23866:
23866:
23866: return (std::numeric_limits<T>::max)();
23866: }
23866:
23866:
23866: template <class T>
23866: inline constexpr T min_value() noexcept(std::is_floating_point<T>::value)
23866: {
23866:
23866: static_assert(::std::numeric_limits<T>::is_specialized, "::std::numeric_limits<T>::is_specialized");
23866:
23866:
23866:
23866: return (std::numeric_limits<T>::min)();
23866: }
23866:
23866: namespace detail{
23866: # 88 "/usr/include/boost/math/tools/precision.hpp" 3 4
23866: template <class T>
23866: inline constexpr T log_max_value(const boost::integral_constant<int, 128>& ) noexcept(std::is_floating_point<T>::value)
23866: {
23866: return 88.0f;
23866: }
23866:
23866: template <class T>
23866: inline constexpr T log_min_value(const boost::integral_constant<int, 128>& ) noexcept(std::is_floating_point<T>::value)
23866: {
23866: return -87.0f;
23866: }
23866:
23866:
23866:
23866: template <class T>
23866: inline constexpr T log_max_value(const boost::integral_constant<int, 1024>& ) noexcept(std::is_floating_point<T>::value)
23866: {
23866: return 709.0;
23866: }
23866:
23866: template <class T>
23866: inline constexpr T log_min_value(const boost::integral_constant<int, 1024>& ) noexcept(std::is_floating_point<T>::value)
23866: {
23866: return -708.0;
23866: }
23866:
23866:
23866:
23866: template <class T>
23866: inline constexpr T log_max_value(const boost::integral_constant<int, 16384>& ) noexcept(std::is_floating_point<T>::value)
23866: {
23866: return 11356.0L;
23866: }
23866:
23866: template <class T>
23866: inline constexpr T log_min_value(const boost::integral_constant<int, 16384>& ) noexcept(std::is_floating_point<T>::value)
23866: {
23866: return -11355.0L;
23866: }
23866:
23866: template <class T>
23866: inline T log_max_value(const boost::integral_constant<int, 0>& )
23866: {
23866: 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; 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;
23866:
23866:
23866:
23866:
23866: static const T val = log(boost::math::tools::max_value<T>());
23866:
23866: return val;
23866: }
23866:
23866: template <class T>
23866: inline T log_min_value(const boost::integral_constant<int, 0>& )
23866: {
23866: 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; 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;
23866:
23866:
23866:
23866:
23866: static const T val = log(boost::math::tools::min_value<T>());
23866:
23866: return val;
23866: }
23866:
23866: template <class T>
23866: inline constexpr T epsilon(const boost::true_type& ) noexcept(std::is_floating_point<T>::value)
23866: {
23866: return std::numeric_limits<T>::epsilon();
23866: }
23866: # 180 "/usr/include/boost/math/tools/precision.hpp" 3 4
23866: template <class T>
23866: inline T epsilon(const boost::false_type& )
23866: {
23866:
23866: 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; 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;
23866: return ldexp(static_cast<T>(1), 1-policies::digits<T, policies::policy<> >());
23866: }
23866:
23866: template <class T>
23866: struct log_limit_traits
23866: {
23866: typedef typename mpl::if_c<
23866: (std::numeric_limits<T>::radix == 2) &&
23866: (std::numeric_limits<T>::max_exponent == 128
23866: || std::numeric_limits<T>::max_exponent == 1024
23866: || std::numeric_limits<T>::max_exponent == 16384),
23866: boost::integral_constant<int, (std::numeric_limits<T>::max_exponent > 0x7fffffff ? 0x7fffffff : static_cast<int>(std::numeric_limits<T>::max_exponent))>,
23866: boost::integral_constant<int, 0>
23866: >::type tag_type;
23866: static const bool value = tag_type::value ? true : false;
23866: static_assert(::std::numeric_limits<T>::is_specialized || (value == 0), "::std::numeric_limits<T>::is_specialized || (value == 0)");
23866: };
23866:
23866: template <class T, bool b> struct log_limit_noexcept_traits_imp : public log_limit_traits<T> {};
23866: template <class T> struct log_limit_noexcept_traits_imp<T, false> : public boost::integral_constant<bool, false> {};
23866:
23866: template <class T>
23866: struct log_limit_noexcept_traits : public log_limit_noexcept_traits_imp<T, (std::is_floating_point<T>::value)> {};
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class T>
23866: inline constexpr T log_max_value() noexcept((detail::log_limit_noexcept_traits<T>::value))
23866: {
23866:
23866: return detail::log_max_value<T>(typename detail::log_limit_traits<T>::tag_type());
23866:
23866:
23866:
23866:
23866:
23866:
23866: }
23866:
23866: template <class T>
23866: inline constexpr T log_min_value() noexcept((detail::log_limit_noexcept_traits<T>::value))
23866: {
23866:
23866: return detail::log_min_value<T>(typename detail::log_limit_traits<T>::tag_type());
23866:
23866:
23866:
23866:
23866:
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template <class T>
23866: inline constexpr T epsilon() noexcept(std::is_floating_point<T>::value)
23866: {
23866:
23866: return detail::epsilon<T>(boost::integral_constant<bool, ::std::numeric_limits<T>::is_specialized>());
23866:
23866:
23866:
23866:
23866:
23866: }
23866:
23866: namespace detail{
23866:
23866: template <class T>
23866: inline constexpr T root_epsilon_imp(const boost::integral_constant<int, 24>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866: return static_cast<T>(0.00034526698300124390839884978618400831996329879769945L);
23866: }
23866:
23866: template <class T>
23866: inline constexpr T root_epsilon_imp(const T*, const boost::integral_constant<int, 53>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866: return static_cast<T>(0.1490116119384765625e-7L);
23866: }
23866:
23866: template <class T>
23866: inline constexpr T root_epsilon_imp(const T*, const boost::integral_constant<int, 64>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866: return static_cast<T>(0.32927225399135962333569506281281311031656150598474e-9L);
23866: }
23866:
23866: template <class T>
23866: inline constexpr T root_epsilon_imp(const T*, const boost::integral_constant<int, 113>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866: return static_cast<T>(0.1387778780781445675529539585113525390625e-16L);
23866: }
23866:
23866: template <class T, class Tag>
23866: inline T root_epsilon_imp(const T*, const Tag&)
23866: {
23866: 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; 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;
23866: static const T r_eps = sqrt(tools::epsilon<T>());
23866: return r_eps;
23866: }
23866:
23866: template <class T>
23866: inline T root_epsilon_imp(const T*, const boost::integral_constant<int, 0>&)
23866: {
23866: 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; 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;
23866: return sqrt(tools::epsilon<T>());
23866: }
23866:
23866: template <class T>
23866: inline constexpr T cbrt_epsilon_imp(const boost::integral_constant<int, 24>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866: return static_cast<T>(0.0049215666011518482998719164346805794944150447839903L);
23866: }
23866:
23866: template <class T>
23866: inline constexpr T cbrt_epsilon_imp(const T*, const boost::integral_constant<int, 53>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866: return static_cast<T>(6.05545445239333906078989272793696693569753008995e-6L);
23866: }
23866:
23866: template <class T>
23866: inline constexpr T cbrt_epsilon_imp(const T*, const boost::integral_constant<int, 64>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866: return static_cast<T>(4.76837158203125e-7L);
23866: }
23866:
23866: template <class T>
23866: inline constexpr T cbrt_epsilon_imp(const T*, const boost::integral_constant<int, 113>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866: return static_cast<T>(5.7749313854154005630396773604745549542403508090496e-12L);
23866: }
23866:
23866: template <class T, class Tag>
23866: inline T cbrt_epsilon_imp(const T*, const Tag&)
23866: {
23866: 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; 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;;
23866: static const T cbrt_eps = pow(tools::epsilon<T>(), T(1) / 3);
23866: return cbrt_eps;
23866: }
23866:
23866: template <class T>
23866: inline T cbrt_epsilon_imp(const T*, const boost::integral_constant<int, 0>&)
23866: {
23866: 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; 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;;
23866: return pow(tools::epsilon<T>(), T(1) / 3);
23866: }
23866:
23866: template <class T>
23866: inline constexpr T forth_root_epsilon_imp(const T*, const boost::integral_constant<int, 24>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866: return static_cast<T>(0.018581361171917516667460937040007436176452688944747L);
23866: }
23866:
23866: template <class T>
23866: inline constexpr T forth_root_epsilon_imp(const T*, const boost::integral_constant<int, 53>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866: return static_cast<T>(0.0001220703125L);
23866: }
23866:
23866: template <class T>
23866: inline constexpr T forth_root_epsilon_imp(const T*, const boost::integral_constant<int, 64>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866: return static_cast<T>(0.18145860519450699870567321328132261891067079047605e-4L);
23866: }
23866:
23866: template <class T>
23866: inline constexpr T forth_root_epsilon_imp(const T*, const boost::integral_constant<int, 113>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866: return static_cast<T>(0.37252902984619140625e-8L);
23866: }
23866:
23866: template <class T, class Tag>
23866: inline T forth_root_epsilon_imp(const T*, const Tag&)
23866: {
23866: 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; 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;
23866: static const T r_eps = sqrt(sqrt(tools::epsilon<T>()));
23866: return r_eps;
23866: }
23866:
23866: template <class T>
23866: inline T forth_root_epsilon_imp(const T*, const boost::integral_constant<int, 0>&)
23866: {
23866: 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; 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;
23866: return sqrt(sqrt(tools::epsilon<T>()));
23866: }
23866:
23866: template <class T>
23866: struct root_epsilon_traits
23866: {
23866: typedef boost::integral_constant<int, (::std::numeric_limits<T>::radix == 2) && (::std::numeric_limits<T>::digits != 0x7fffffff) ? std::numeric_limits<T>::digits : 0> tag_type;
23866: static const bool has_noexcept = (tag_type::value == 113) || (tag_type::value == 64) || (tag_type::value == 53) || (tag_type::value == 24);
23866: };
23866:
23866: }
23866:
23866: template <class T>
23866: inline constexpr T root_epsilon() noexcept(((std::is_floating_point<T>::value) && detail::root_epsilon_traits<T>::has_noexcept))
23866: {
23866: return detail::root_epsilon_imp(static_cast<T const*>(0), typename detail::root_epsilon_traits<T>::tag_type());
23866: }
23866:
23866: template <class T>
23866: inline constexpr T cbrt_epsilon() noexcept(((std::is_floating_point<T>::value) && detail::root_epsilon_traits<T>::has_noexcept))
23866: {
23866: return detail::cbrt_epsilon_imp(static_cast<T const*>(0), typename detail::root_epsilon_traits<T>::tag_type());
23866: }
23866:
23866: template <class T>
23866: inline constexpr T forth_root_epsilon() noexcept(((std::is_floating_point<T>::value) && detail::root_epsilon_traits<T>::has_noexcept))
23866: {
23866: return detail::forth_root_epsilon_imp(static_cast<T const*>(0), typename detail::root_epsilon_traits<T>::tag_type());
23866: }
23866:
23866: }
23866: }
23866: }
23866: # 23 "/usr/include/boost/math/policies/error_handling.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/cstdint.hpp" 1 3 4
23866: # 25 "/usr/include/boost/math/policies/error_handling.hpp" 2 3 4
23866: # 37 "/usr/include/boost/math/policies/error_handling.hpp" 3 4
23866: namespace boost{ namespace math{
23866:
23866: class evaluation_error : public std::runtime_error
23866: {
23866: public:
23866: evaluation_error(const std::string& s) : std::runtime_error(s){}
23866: };
23866:
23866: class rounding_error : public std::runtime_error
23866: {
23866: public:
23866: rounding_error(const std::string& s) : std::runtime_error(s){}
23866: };
23866:
23866: namespace policies{
23866:
23866:
23866:
23866:
23866: template <class T>
23866: T user_domain_error(const char* function, const char* message, const T& val);
23866: template <class T>
23866: T user_pole_error(const char* function, const char* message, const T& val);
23866: template <class T>
23866: T user_overflow_error(const char* function, const char* message, const T& val);
23866: template <class T>
23866: T user_underflow_error(const char* function, const char* message, const T& val);
23866: template <class T>
23866: T user_denorm_error(const char* function, const char* message, const T& val);
23866: template <class T>
23866: T user_evaluation_error(const char* function, const char* message, const T& val);
23866: template <class T, class TargetType>
23866: T user_rounding_error(const char* function, const char* message, const T& val, const TargetType& t);
23866: template <class T>
23866: T user_indeterminate_result_error(const char* function, const char* message, const T& val);
23866:
23866: namespace detail
23866: {
23866:
23866: template <class T>
23866: std::string prec_format(const T& val)
23866: {
23866: typedef typename boost::math::policies::precision<T, boost::math::policies::policy<> >::type prec_type;
23866: std::stringstream ss;
23866: if(prec_type::value)
23866: {
23866: int prec = 2 + (prec_type::value * 30103UL) / 100000UL;
23866: ss << std::setprecision(prec);
23866: }
23866: ss << val;
23866: return ss.str();
23866: }
23866:
23866: inline void replace_all_in_string(std::string& result, const char* what, const char* with)
23866: {
23866: std::string::size_type pos = 0;
23866: std::string::size_type slen = std::strlen(what);
23866: std::string::size_type rlen = std::strlen(with);
23866: while((pos = result.find(what, pos)) != std::string::npos)
23866: {
23866: result.replace(pos, slen, with);
23866: pos += rlen;
23866: }
23866: }
23866:
23866: template <class T>
23866: inline const char* name_of()
23866: {
23866:
23866: return typeid(T).name();
23866:
23866:
23866:
23866: }
23866: template <> inline const char* name_of<float>(){ return "float"; }
23866: template <> inline const char* name_of<double>(){ return "double"; }
23866: template <> inline const char* name_of<long double>(){ return "long double"; }
23866: # 123 "/usr/include/boost/math/policies/error_handling.hpp" 3 4
23866: template <class E, class T>
23866: void raise_error(const char* pfunction, const char* message)
23866: {
23866: if(pfunction == 0)
23866: pfunction = "Unknown function operating on type %1%";
23866: if(message == 0)
23866: message = "Cause unknown";
23866:
23866: std::string function(pfunction);
23866: std::string msg("Error in function ");
23866:
23866: replace_all_in_string(function, "%1%", boost::math::policies::detail::name_of<T>());
23866:
23866:
23866:
23866: msg += function;
23866: msg += ": ";
23866: msg += message;
23866:
23866: E e(msg);
23866: boost::throw_exception(e);
23866: }
23866:
23866: template <class E, class T>
23866: void raise_error(const char* pfunction, const char* pmessage, const T& val)
23866: {
23866: if(pfunction == 0)
23866: pfunction = "Unknown function operating on type %1%";
23866: if(pmessage == 0)
23866: pmessage = "Cause unknown: error caused by bad argument with value %1%";
23866:
23866: std::string function(pfunction);
23866: std::string message(pmessage);
23866: std::string msg("Error in function ");
23866:
23866: replace_all_in_string(function, "%1%", boost::math::policies::detail::name_of<T>());
23866:
23866:
23866:
23866: msg += function;
23866: msg += ": ";
23866:
23866: std::string sval = prec_format(val);
23866: replace_all_in_string(message, "%1%", sval.c_str());
23866: msg += message;
23866:
23866: E e(msg);
23866: boost::throw_exception(e);
23866: }
23866:
23866: template <class T>
23866: inline T raise_domain_error(
23866: const char* function,
23866: const char* message,
23866: const T& val,
23866: const ::boost::math::policies::domain_error< ::boost::math::policies::throw_on_error>&)
23866: {
23866: raise_error<std::domain_error, T>(function, message, val);
23866:
23866: return std::numeric_limits<T>::quiet_NaN();
23866: }
23866:
23866: template <class T>
23866: inline constexpr T raise_domain_error(
23866: const char* ,
23866: const char* ,
23866: const T& ,
23866: const ::boost::math::policies::domain_error< ::boost::math::policies::ignore_error>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866:
23866:
23866: return std::numeric_limits<T>::quiet_NaN();
23866: }
23866:
23866: template <class T>
23866: inline T raise_domain_error(
23866: const char* ,
23866: const char* ,
23866: const T& ,
23866: const ::boost::math::policies::domain_error< ::boost::math::policies::errno_on_error>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866: (*__errno_location ()) = 33;
23866:
23866:
23866: return std::numeric_limits<T>::quiet_NaN();
23866: }
23866:
23866: template <class T>
23866: inline T raise_domain_error(
23866: const char* function,
23866: const char* message,
23866: const T& val,
23866: const ::boost::math::policies::domain_error< ::boost::math::policies::user_error>&)
23866: {
23866: return user_domain_error(function, message, val);
23866: }
23866:
23866: template <class T>
23866: inline T raise_pole_error(
23866: const char* function,
23866: const char* message,
23866: const T& val,
23866: const ::boost::math::policies::pole_error< ::boost::math::policies::throw_on_error>&)
23866: {
23866: return boost::math::policies::detail::raise_domain_error(function, message, val, ::boost::math::policies::domain_error< ::boost::math::policies::throw_on_error>());
23866: }
23866:
23866: template <class T>
23866: inline constexpr T raise_pole_error(
23866: const char* function,
23866: const char* message,
23866: const T& val,
23866: const ::boost::math::policies::pole_error< ::boost::math::policies::ignore_error>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866: return ::boost::math::policies::detail::raise_domain_error(function, message, val, ::boost::math::policies::domain_error< ::boost::math::policies::ignore_error>());
23866: }
23866:
23866: template <class T>
23866: inline constexpr T raise_pole_error(
23866: const char* function,
23866: const char* message,
23866: const T& val,
23866: const ::boost::math::policies::pole_error< ::boost::math::policies::errno_on_error>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866: return ::boost::math::policies::detail::raise_domain_error(function, message, val, ::boost::math::policies::domain_error< ::boost::math::policies::errno_on_error>());
23866: }
23866:
23866: template <class T>
23866: inline T raise_pole_error(
23866: const char* function,
23866: const char* message,
23866: const T& val,
23866: const ::boost::math::policies::pole_error< ::boost::math::policies::user_error>&)
23866: {
23866: return user_pole_error(function, message, val);
23866: }
23866:
23866:
23866: template <class T>
23866: inline T raise_overflow_error(
23866: const char* function,
23866: const char* message,
23866: const ::boost::math::policies::overflow_error< ::boost::math::policies::throw_on_error>&)
23866: {
23866: raise_error<std::overflow_error, T>(function, message ? message : "numeric overflow");
23866:
23866: return std::numeric_limits<T>::has_infinity ? std::numeric_limits<T>::infinity() : boost::math::tools::max_value<T>();
23866: }
23866:
23866: template <class T>
23866: inline T raise_overflow_error(
23866: const char* function,
23866: const char* message,
23866: const T& val,
23866: const ::boost::math::policies::overflow_error< ::boost::math::policies::throw_on_error>&)
23866: {
23866: raise_error<std::overflow_error, T>(function, message ? message : "numeric overflow", val);
23866:
23866: return std::numeric_limits<T>::has_infinity ? std::numeric_limits<T>::infinity() : boost::math::tools::max_value<T>();
23866: }
23866:
23866: template <class T>
23866: inline constexpr T raise_overflow_error(
23866: const char* ,
23866: const char* ,
23866: const ::boost::math::policies::overflow_error< ::boost::math::policies::ignore_error>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866:
23866:
23866: return std::numeric_limits<T>::has_infinity ? std::numeric_limits<T>::infinity() : boost::math::tools::max_value<T>();
23866: }
23866:
23866: template <class T>
23866: inline constexpr T raise_overflow_error(
23866: const char* ,
23866: const char* ,
23866: const T&,
23866: const ::boost::math::policies::overflow_error< ::boost::math::policies::ignore_error>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866:
23866:
23866: return std::numeric_limits<T>::has_infinity ? std::numeric_limits<T>::infinity() : boost::math::tools::max_value<T>();
23866: }
23866:
23866: template <class T>
23866: inline T raise_overflow_error(
23866: const char* ,
23866: const char* ,
23866: const ::boost::math::policies::overflow_error< ::boost::math::policies::errno_on_error>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866: (*__errno_location ()) = 34;
23866:
23866:
23866: return std::numeric_limits<T>::has_infinity ? std::numeric_limits<T>::infinity() : boost::math::tools::max_value<T>();
23866: }
23866:
23866: template <class T>
23866: inline T raise_overflow_error(
23866: const char* ,
23866: const char* ,
23866: const T&,
23866: const ::boost::math::policies::overflow_error< ::boost::math::policies::errno_on_error>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866: (*__errno_location ()) = 34;
23866:
23866:
23866: return std::numeric_limits<T>::has_infinity ? std::numeric_limits<T>::infinity() : boost::math::tools::max_value<T>();
23866: }
23866:
23866: template <class T>
23866: inline T raise_overflow_error(
23866: const char* function,
23866: const char* message,
23866: const ::boost::math::policies::overflow_error< ::boost::math::policies::user_error>&)
23866: {
23866: return user_overflow_error(function, message, std::numeric_limits<T>::infinity());
23866: }
23866:
23866: template <class T>
23866: inline T raise_overflow_error(
23866: const char* function,
23866: const char* message,
23866: const T& val,
23866: const ::boost::math::policies::overflow_error< ::boost::math::policies::user_error>&)
23866: {
23866: std::string m(message ? message : "");
23866: std::string sval = prec_format(val);
23866: replace_all_in_string(m, "%1%", sval.c_str());
23866:
23866: return user_overflow_error(function, m.c_str(), std::numeric_limits<T>::infinity());
23866: }
23866:
23866: template <class T>
23866: inline T raise_underflow_error(
23866: const char* function,
23866: const char* message,
23866: const ::boost::math::policies::underflow_error< ::boost::math::policies::throw_on_error>&)
23866: {
23866: raise_error<std::underflow_error, T>(function, message ? message : "numeric underflow");
23866:
23866: return 0;
23866: }
23866:
23866: template <class T>
23866: inline constexpr T raise_underflow_error(
23866: const char* ,
23866: const char* ,
23866: const ::boost::math::policies::underflow_error< ::boost::math::policies::ignore_error>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866:
23866:
23866: return T(0);
23866: }
23866:
23866: template <class T>
23866: inline T raise_underflow_error(
23866: const char* ,
23866: const char* ,
23866: const ::boost::math::policies::underflow_error< ::boost::math::policies::errno_on_error>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866: (*__errno_location ()) = 34;
23866:
23866:
23866: return T(0);
23866: }
23866:
23866: template <class T>
23866: inline T raise_underflow_error(
23866: const char* function,
23866: const char* message,
23866: const ::boost::math::policies::underflow_error< ::boost::math::policies::user_error>&)
23866: {
23866: return user_underflow_error(function, message, T(0));
23866: }
23866:
23866: template <class T>
23866: inline T raise_denorm_error(
23866: const char* function,
23866: const char* message,
23866: const T& ,
23866: const ::boost::math::policies::denorm_error< ::boost::math::policies::throw_on_error>&)
23866: {
23866: raise_error<std::underflow_error, T>(function, message ? message : "denormalised result");
23866:
23866: return T(0);
23866: }
23866:
23866: template <class T>
23866: inline constexpr T raise_denorm_error(
23866: const char* ,
23866: const char* ,
23866: const T& val,
23866: const ::boost::math::policies::denorm_error< ::boost::math::policies::ignore_error>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866:
23866:
23866: return val;
23866: }
23866:
23866: template <class T>
23866: inline T raise_denorm_error(
23866: const char* ,
23866: const char* ,
23866: const T& val,
23866: const ::boost::math::policies::denorm_error< ::boost::math::policies::errno_on_error>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866: (*__errno_location ()) = 34;
23866:
23866:
23866: return val;
23866: }
23866:
23866: template <class T>
23866: inline T raise_denorm_error(
23866: const char* function,
23866: const char* message,
23866: const T& val,
23866: const ::boost::math::policies::denorm_error< ::boost::math::policies::user_error>&)
23866: {
23866: return user_denorm_error(function, message, val);
23866: }
23866:
23866: template <class T>
23866: inline T raise_evaluation_error(
23866: const char* function,
23866: const char* message,
23866: const T& val,
23866: const ::boost::math::policies::evaluation_error< ::boost::math::policies::throw_on_error>&)
23866: {
23866: raise_error<boost::math::evaluation_error, T>(function, message, val);
23866:
23866: return T(0);
23866: }
23866:
23866: template <class T>
23866: inline constexpr T raise_evaluation_error(
23866: const char* ,
23866: const char* ,
23866: const T& val,
23866: const ::boost::math::policies::evaluation_error< ::boost::math::policies::ignore_error>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866:
23866:
23866: return val;
23866: }
23866:
23866: template <class T>
23866: inline T raise_evaluation_error(
23866: const char* ,
23866: const char* ,
23866: const T& val,
23866: const ::boost::math::policies::evaluation_error< ::boost::math::policies::errno_on_error>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866: (*__errno_location ()) = 33;
23866:
23866:
23866: return val;
23866: }
23866:
23866: template <class T>
23866: inline T raise_evaluation_error(
23866: const char* function,
23866: const char* message,
23866: const T& val,
23866: const ::boost::math::policies::evaluation_error< ::boost::math::policies::user_error>&)
23866: {
23866: return user_evaluation_error(function, message, val);
23866: }
23866:
23866: template <class T, class TargetType>
23866: inline TargetType raise_rounding_error(
23866: const char* function,
23866: const char* message,
23866: const T& val,
23866: const TargetType&,
23866: const ::boost::math::policies::rounding_error< ::boost::math::policies::throw_on_error>&)
23866: {
23866: raise_error<boost::math::rounding_error, T>(function, message, val);
23866:
23866: return TargetType(0);
23866: }
23866:
23866: template <class T, class TargetType>
23866: inline constexpr TargetType raise_rounding_error(
23866: const char* ,
23866: const char* ,
23866: const T& val,
23866: const TargetType&,
23866: const ::boost::math::policies::rounding_error< ::boost::math::policies::ignore_error>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866:
23866:
23866: static_assert(std::numeric_limits<TargetType>::is_specialized, "std::numeric_limits<TargetType>::is_specialized");
23866: return val > 0 ? (std::numeric_limits<TargetType>::max)() : (std::numeric_limits<TargetType>::is_integer ? (std::numeric_limits<TargetType>::min)() : -(std::numeric_limits<TargetType>::max)());
23866: }
23866:
23866: template <class T, class TargetType>
23866: inline TargetType raise_rounding_error(
23866: const char* ,
23866: const char* ,
23866: const T& val,
23866: const TargetType&,
23866: const ::boost::math::policies::rounding_error< ::boost::math::policies::errno_on_error>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866: (*__errno_location ()) = 34;
23866:
23866:
23866: static_assert(std::numeric_limits<TargetType>::is_specialized, "std::numeric_limits<TargetType>::is_specialized");
23866: return val > 0 ? (std::numeric_limits<TargetType>::max)() : (std::numeric_limits<TargetType>::is_integer ? (std::numeric_limits<TargetType>::min)() : -(std::numeric_limits<TargetType>::max)());
23866: }
23866:
23866: template <class T>
23866: inline T raise_rounding_error(
23866: const char* ,
23866: const char* ,
23866: const T& val,
23866: const T&,
23866: const ::boost::math::policies::rounding_error< ::boost::math::policies::errno_on_error>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866: (*__errno_location ()) = 34;
23866:
23866:
23866: return val > 0 ? boost::math::tools::max_value<T>() : -boost::math::tools::max_value<T>();
23866: }
23866:
23866: template <class T, class TargetType>
23866: inline TargetType raise_rounding_error(
23866: const char* function,
23866: const char* message,
23866: const T& val,
23866: const TargetType& t,
23866: const ::boost::math::policies::rounding_error< ::boost::math::policies::user_error>&)
23866: {
23866: return user_rounding_error(function, message, val, t);
23866: }
23866:
23866: template <class T, class R>
23866: inline T raise_indeterminate_result_error(
23866: const char* function,
23866: const char* message,
23866: const T& val,
23866: const R& ,
23866: const ::boost::math::policies::indeterminate_result_error< ::boost::math::policies::throw_on_error>&)
23866: {
23866: raise_error<std::domain_error, T>(function, message, val);
23866:
23866: return std::numeric_limits<T>::quiet_NaN();
23866: }
23866:
23866: template <class T, class R>
23866: inline constexpr T raise_indeterminate_result_error(
23866: const char* ,
23866: const char* ,
23866: const T& ,
23866: const R& result,
23866: const ::boost::math::policies::indeterminate_result_error< ::boost::math::policies::ignore_error>&) noexcept(std::is_floating_point<T>::value)
23866: {
23866:
23866:
23866: return result;
23866: }
23866:
23866: template <class T, class R>
23866: inline T raise_indeterminate_result_error(
23866: const char* ,
23866: const char* ,
23866: const T& ,
23866: const R& result,
23866: const ::boost::math::policies::indeterminate_result_error< ::boost::math::policies::errno_on_error>&)
23866: {
23866: (*__errno_location ()) = 33;
23866:
23866:
23866: return result;
23866: }
23866:
23866: template <class T, class R>
23866: inline T raise_indeterminate_result_error(
23866: const char* function,
23866: const char* message,
23866: const T& val,
23866: const R& ,
23866: const ::boost::math::policies::indeterminate_result_error< ::boost::math::policies::user_error>&)
23866: {
23866: return user_indeterminate_result_error(function, message, val);
23866: }
23866:
23866: }
23866:
23866: template <class T, class Policy>
23866: inline constexpr T raise_domain_error(const char* function, const char* message, const T& val, const Policy&) noexcept((is_noexcept_error_policy<Policy>::value && (std::is_floating_point<T>::value)))
23866: {
23866: typedef typename Policy::domain_error_type policy_type;
23866: return detail::raise_domain_error(
23866: function, message ? message : "Domain Error evaluating function at %1%",
23866: val, policy_type());
23866: }
23866:
23866: template <class T, class Policy>
23866: inline constexpr T raise_pole_error(const char* function, const char* message, const T& val, const Policy&) noexcept((is_noexcept_error_policy<Policy>::value && (std::is_floating_point<T>::value)))
23866: {
23866: typedef typename Policy::pole_error_type policy_type;
23866: return detail::raise_pole_error(
23866: function, message ? message : "Evaluation of function at pole %1%",
23866: val, policy_type());
23866: }
23866:
23866: template <class T, class Policy>
23866: inline constexpr T raise_overflow_error(const char* function, const char* message, const Policy&) noexcept((is_noexcept_error_policy<Policy>::value && (std::is_floating_point<T>::value)))
23866: {
23866: typedef typename Policy::overflow_error_type policy_type;
23866: return detail::raise_overflow_error<T>(
23866: function, message ? message : "Overflow Error",
23866: policy_type());
23866: }
23866:
23866: template <class T, class Policy>
23866: inline constexpr T raise_overflow_error(const char* function, const char* message, const T& val, const Policy&) noexcept((is_noexcept_error_policy<Policy>::value && (std::is_floating_point<T>::value)))
23866: {
23866: typedef typename Policy::overflow_error_type policy_type;
23866: return detail::raise_overflow_error(
23866: function, message ? message : "Overflow evaluating function at %1%",
23866: val, policy_type());
23866: }
23866:
23866: template <class T, class Policy>
23866: inline constexpr T raise_underflow_error(const char* function, const char* message, const Policy&) noexcept((is_noexcept_error_policy<Policy>::value && (std::is_floating_point<T>::value)))
23866: {
23866: typedef typename Policy::underflow_error_type policy_type;
23866: return detail::raise_underflow_error<T>(
23866: function, message ? message : "Underflow Error",
23866: policy_type());
23866: }
23866:
23866: template <class T, class Policy>
23866: inline constexpr T raise_denorm_error(const char* function, const char* message, const T& val, const Policy&) noexcept((is_noexcept_error_policy<Policy>::value && (std::is_floating_point<T>::value)))
23866: {
23866: typedef typename Policy::denorm_error_type policy_type;
23866: return detail::raise_denorm_error<T>(
23866: function, message ? message : "Denorm Error",
23866: val,
23866: policy_type());
23866: }
23866:
23866: template <class T, class Policy>
23866: inline constexpr T raise_evaluation_error(const char* function, const char* message, const T& val, const Policy&) noexcept((is_noexcept_error_policy<Policy>::value && (std::is_floating_point<T>::value)))
23866: {
23866: typedef typename Policy::evaluation_error_type policy_type;
23866: return detail::raise_evaluation_error(
23866: function, message ? message : "Internal Evaluation Error, best value so far was %1%",
23866: val, policy_type());
23866: }
23866:
23866: template <class T, class TargetType, class Policy>
23866: inline constexpr TargetType raise_rounding_error(const char* function, const char* message, const T& val, const TargetType& t, const Policy&) noexcept((is_noexcept_error_policy<Policy>::value && (std::is_floating_point<T>::value)))
23866: {
23866: typedef typename Policy::rounding_error_type policy_type;
23866: return detail::raise_rounding_error(
23866: function, message ? message : "Value %1% can not be represented in the target integer type.",
23866: val, t, policy_type());
23866: }
23866:
23866: template <class T, class R, class Policy>
23866: inline constexpr T raise_indeterminate_result_error(const char* function, const char* message, const T& val, const R& result, const Policy&) noexcept((is_noexcept_error_policy<Policy>::value && (std::is_floating_point<T>::value)))
23866: {
23866: typedef typename Policy::indeterminate_result_error_type policy_type;
23866: return detail::raise_indeterminate_result_error(
23866: function, message ? message : "Indeterminate result with value %1%",
23866: val, result, policy_type());
23866: }
23866:
23866:
23866:
23866:
23866: namespace detail
23866: {
23866:
23866: template <class R, class T, class Policy>
23866: inline bool check_overflow(T val, R* result, const char* function, const Policy& pol) noexcept(((std::is_floating_point<R>::value) && (std::is_floating_point<T>::value) && (Policy::value != throw_on_error) && (Policy::value != user_error)))
23866: {
23866: 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; 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;
23866: if(fabs(val) > tools::max_value<R>())
23866: {
23866: boost::math::policies::detail::raise_overflow_error<R>(function, 0, pol);
23866: *result = static_cast<R>(val);
23866: return true;
23866: }
23866: return false;
23866: }
23866: template <class R, class T, class Policy>
23866: inline bool check_overflow(std::complex<T> val, R* result, const char* function, const Policy& pol) noexcept(((std::is_floating_point<R>::value) && (std::is_floating_point<T>::value) && (Policy::value != throw_on_error) && (Policy::value != user_error)))
23866: {
23866: typedef typename R::value_type r_type;
23866: r_type re, im;
23866: bool r = check_overflow<r_type>(val.real(), &re, function, pol);
23866: r = check_overflow<r_type>(val.imag(), &im, function, pol) || r;
23866: *result = R(re, im);
23866: return r;
23866: }
23866: template <class R, class T, class Policy>
23866: inline bool check_underflow(T val, R* result, const char* function, const Policy& pol) noexcept(((std::is_floating_point<R>::value) && (std::is_floating_point<T>::value) && (Policy::value != throw_on_error) && (Policy::value != user_error)))
23866: {
23866: if((val != 0) && (static_cast<R>(val) == 0))
23866: {
23866: *result = static_cast<R>(boost::math::policies::detail::raise_underflow_error<R>(function, 0, pol));
23866: return true;
23866: }
23866: return false;
23866: }
23866: template <class R, class T, class Policy>
23866: inline bool check_underflow(std::complex<T> val, R* result, const char* function, const Policy& pol) noexcept(((std::is_floating_point<R>::value) && (std::is_floating_point<T>::value) && (Policy::value != throw_on_error) && (Policy::value != user_error)))
23866: {
23866: typedef typename R::value_type r_type;
23866: r_type re, im;
23866: bool r = check_underflow<r_type>(val.real(), &re, function, pol);
23866: r = check_underflow<r_type>(val.imag(), &im, function, pol) || r;
23866: *result = R(re, im);
23866: return r;
23866: }
23866: template <class R, class T, class Policy>
23866: inline bool check_denorm(T val, R* result, const char* function, const Policy& pol) noexcept(((std::is_floating_point<R>::value) && (std::is_floating_point<T>::value) && (Policy::value != throw_on_error) && (Policy::value != user_error)))
23866: {
23866: 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; 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;
23866: if((fabs(val) < static_cast<T>(tools::min_value<R>())) && (static_cast<R>(val) != 0))
23866: {
23866: *result = static_cast<R>(boost::math::policies::detail::raise_denorm_error<R>(function, 0, static_cast<R>(val), pol));
23866: return true;
23866: }
23866: return false;
23866: }
23866: template <class R, class T, class Policy>
23866: inline bool check_denorm(std::complex<T> val, R* result, const char* function, const Policy& pol) noexcept(((std::is_floating_point<R>::value) && (std::is_floating_point<T>::value) && (Policy::value != throw_on_error) && (Policy::value != user_error)))
23866: {
23866: typedef typename R::value_type r_type;
23866: r_type re, im;
23866: bool r = check_denorm<r_type>(val.real(), &re, function, pol);
23866: r = check_denorm<r_type>(val.imag(), &im, function, pol) || r;
23866: *result = R(re, im);
23866: return r;
23866: }
23866:
23866:
23866: template <class R, class T>
23866: inline constexpr bool check_overflow(T , R* , const char* , const overflow_error<ignore_error>&) noexcept(((std::is_floating_point<R>::value) && (std::is_floating_point<T>::value)))
23866: { return false; }
23866: template <class R, class T>
23866: inline constexpr bool check_overflow(std::complex<T> , R* , const char* , const overflow_error<ignore_error>&) noexcept(((std::is_floating_point<R>::value) && (std::is_floating_point<T>::value)))
23866: { return false; }
23866: template <class R, class T>
23866: inline constexpr bool check_underflow(T , R* , const char* , const underflow_error<ignore_error>&) noexcept(((std::is_floating_point<R>::value) && (std::is_floating_point<T>::value)))
23866: { return false; }
23866: template <class R, class T>
23866: inline constexpr bool check_underflow(std::complex<T> , R* , const char* , const underflow_error<ignore_error>&) noexcept(((std::is_floating_point<R>::value) && (std::is_floating_point<T>::value)))
23866: { return false; }
23866: template <class R, class T>
23866: inline constexpr bool check_denorm(T , R* , const char* , const denorm_error<ignore_error>&) noexcept(((std::is_floating_point<R>::value) && (std::is_floating_point<T>::value)))
23866: { return false; }
23866: template <class R, class T>
23866: inline constexpr bool check_denorm(std::complex<T> , R* , const char* , const denorm_error<ignore_error>&) noexcept(((std::is_floating_point<R>::value) && (std::is_floating_point<T>::value)))
23866: { return false; }
23866:
23866: }
23866:
23866: template <class R, class Policy, class T>
23866: inline R checked_narrowing_cast(T val, const char* function) noexcept(((std::is_floating_point<R>::value) && (std::is_floating_point<T>::value) && is_noexcept_error_policy<Policy>::value))
23866: {
23866: typedef typename Policy::overflow_error_type overflow_type;
23866: typedef typename Policy::underflow_error_type underflow_type;
23866: typedef typename Policy::denorm_error_type denorm_type;
23866:
23866:
23866:
23866: R result = 0;
23866: if(detail::check_overflow<R>(val, &result, function, overflow_type()))
23866: return result;
23866: if(detail::check_underflow<R>(val, &result, function, underflow_type()))
23866: return result;
23866: if(detail::check_denorm<R>(val, &result, function, denorm_type()))
23866: return result;
23866:
23866: return static_cast<R>(val);
23866: }
23866:
23866: template <class T, class Policy>
23866: inline void check_series_iterations(const char* function, boost::uintmax_t max_iter, const Policy& pol) noexcept(((std::is_floating_point<T>::value) && is_noexcept_error_policy<Policy>::value))
23866: {
23866: if(max_iter >= policies::get_max_series_iterations<Policy>())
23866: raise_evaluation_error<T>(
23866: function,
23866: "Series evaluation exceeded %1% iterations, giving up now.", static_cast<T>(static_cast<double>(max_iter)), pol);
23866: }
23866:
23866: template <class T, class Policy>
23866: inline void check_root_iterations(const char* function, boost::uintmax_t max_iter, const Policy& pol) noexcept(((std::is_floating_point<T>::value) && is_noexcept_error_policy<Policy>::value))
23866: {
23866: if(max_iter >= policies::get_max_root_iterations<Policy>())
23866: raise_evaluation_error<T>(
23866: function,
23866: "Root finding evaluation exceeded %1% iterations, giving up now.", static_cast<T>(static_cast<double>(max_iter)), pol);
23866: }
23866:
23866: }
23866:
23866: namespace detail{
23866:
23866:
23866:
23866:
23866:
23866: template <class T>
23866: std::pair<T, T> pair_from_single(const T& val) noexcept(std::is_floating_point<T>::value)
23866: {
23866: return std::make_pair(val, val);
23866: }
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866: }}
23866: # 10 "/usr/include/boost/multiprecision/detail/default_ops.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/math/special_functions/next.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MATH_SPECIAL_NEXT_HPP
23866: # 17 "/usr/include/boost/math/special_functions/next.hpp" 3 4
23866: # 1 "/usr/include/boost/math/special_functions/trunc.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MATH_TRUNC_HPP
23866: # 20 "/usr/include/boost/math/special_functions/trunc.hpp" 3 4
23866: namespace boost{ namespace math{ namespace detail{
23866:
23866: template <class T, class Policy>
23866: inline typename tools::promote_args<T>::type trunc(const T& v, const Policy& pol, const boost::false_type&)
23866: {
23866: 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; 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;
23866: typedef typename tools::promote_args<T>::type result_type;
23866: if(!(boost::math::isfinite)(v))
23866: return policies::raise_rounding_error("boost::math::trunc<%1%>(%1%)", 0, static_cast<result_type>(v), static_cast<result_type>(v), pol);
23866: return (v >= 0) ? static_cast<result_type>(floor(v)) : static_cast<result_type>(ceil(v));
23866: }
23866:
23866: template <class T, class Policy>
23866: inline typename tools::promote_args<T>::type trunc(const T& v, const Policy&, const boost::true_type&)
23866: {
23866: return v;
23866: }
23866:
23866: }
23866:
23866: template <class T, class Policy>
23866: inline typename tools::promote_args<T>::type trunc(const T& v, const Policy& pol)
23866: {
23866: return detail::trunc(v, pol, boost::integral_constant<bool, detail::is_integer_for_rounding<T>::value>());
23866: }
23866: template <class T>
23866: inline typename tools::promote_args<T>::type trunc(const T& v)
23866: {
23866: return trunc(v, policies::policy<>());
23866: }
23866: # 59 "/usr/include/boost/math/special_functions/trunc.hpp" 3 4
23866: template <class T, class Policy>
23866: inline int itrunc(const T& v, const Policy& pol)
23866: {
23866: 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; 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;
23866: typedef typename tools::promote_args<T>::type result_type;
23866: result_type r = boost::math::trunc(v, pol);
23866: if((r > (std::numeric_limits<int>::max)()) || (r < (std::numeric_limits<int>::min)()))
23866: return static_cast<int>(policies::raise_rounding_error("boost::math::itrunc<%1%>(%1%)", 0, static_cast<result_type>(v), 0, pol));
23866: return static_cast<int>(r);
23866: }
23866: template <class T>
23866: inline int itrunc(const T& v)
23866: {
23866: return itrunc(v, policies::policy<>());
23866: }
23866:
23866: template <class T, class Policy>
23866: inline long ltrunc(const T& v, const Policy& pol)
23866: {
23866: 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; 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;
23866: typedef typename tools::promote_args<T>::type result_type;
23866: result_type r = boost::math::trunc(v, pol);
23866: if((r > (std::numeric_limits<long>::max)()) || (r < (std::numeric_limits<long>::min)()))
23866: return static_cast<long>(policies::raise_rounding_error("boost::math::ltrunc<%1%>(%1%)", 0, static_cast<result_type>(v), 0L, pol));
23866: return static_cast<long>(r);
23866: }
23866: template <class T>
23866: inline long ltrunc(const T& v)
23866: {
23866: return ltrunc(v, policies::policy<>());
23866: }
23866:
23866:
23866:
23866: template <class T, class Policy>
23866: inline boost::long_long_type lltrunc(const T& v, const Policy& pol)
23866: {
23866: 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; 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;
23866: typedef typename tools::promote_args<T>::type result_type;
23866: result_type r = boost::math::trunc(v, pol);
23866: if((r > (std::numeric_limits<boost::long_long_type>::max)()) || (r < (std::numeric_limits<boost::long_long_type>::min)()))
23866: return static_cast<boost::long_long_type>(policies::raise_rounding_error("boost::math::lltrunc<%1%>(%1%)", 0, v, static_cast<boost::long_long_type>(0), pol));
23866: return static_cast<boost::long_long_type>(r);
23866: }
23866: template <class T>
23866: inline boost::long_long_type lltrunc(const T& v)
23866: {
23866: return lltrunc(v, policies::policy<>());
23866: }
23866:
23866:
23866:
23866: template <class T, class Policy>
23866: inline typename boost::enable_if_c<boost::is_constructible<int, T>::value, int>::type
23866: iconvert(const T& v, const Policy&)
23866: {
23866: return static_cast<int>(v);
23866: }
23866:
23866: template <class T, class Policy>
23866: inline typename boost::disable_if_c<boost::is_constructible<int, T>::value, int>::type
23866: iconvert(const T& v, const Policy& pol)
23866: {
23866: using boost::math::itrunc;
23866: return itrunc(v, pol);
23866: }
23866:
23866: template <class T, class Policy>
23866: inline typename boost::enable_if_c<boost::is_constructible<long, T>::value, long>::type
23866: lconvert(const T& v, const Policy&)
23866: {
23866: return static_cast<long>(v);
23866: }
23866:
23866: template <class T, class Policy>
23866: inline typename boost::disable_if_c<boost::is_constructible<long, T>::value, long>::type
23866: lconvert(const T& v, const Policy& pol)
23866: {
23866: using boost::math::ltrunc;
23866: return ltrunc(v, pol);
23866: }
23866:
23866:
23866:
23866: template <class T, class Policy>
23866: inline typename boost::enable_if_c<boost::is_constructible<boost::long_long_type, T>::value, boost::long_long_type>::type
23866: llconvertert(const T& v, const Policy&)
23866: {
23866: return static_cast<boost::long_long_type>(v);
23866: }
23866:
23866: template <class T, class Policy>
23866: inline typename boost::disable_if_c<boost::is_constructible<boost::long_long_type, T>::value, boost::long_long_type>::type
23866: llconvertert(const T& v, const Policy& pol)
23866: {
23866: using boost::math::lltrunc;
23866: return lltrunc(v, pol);
23866: }
23866:
23866:
23866:
23866: }}
23866: # 18 "/usr/include/boost/math/special_functions/next.hpp" 2 3 4
23866: # 28 "/usr/include/boost/math/special_functions/next.hpp" 3 4
23866: namespace boost{ namespace math{
23866:
23866: namespace concepts {
23866:
23866: class real_concept;
23866: class std_real_concept;
23866:
23866: }
23866:
23866: namespace detail{
23866:
23866: template <class T>
23866: struct has_hidden_guard_digits;
23866: template <>
23866: struct has_hidden_guard_digits<float> : public boost::false_type {};
23866: template <>
23866: struct has_hidden_guard_digits<double> : public boost::false_type {};
23866: template <>
23866: struct has_hidden_guard_digits<long double> : public boost::false_type {};
23866:
23866:
23866:
23866:
23866: template <>
23866: struct has_hidden_guard_digits<boost::math::concepts::real_concept> : public boost::false_type {};
23866: template <>
23866: struct has_hidden_guard_digits<boost::math::concepts::std_real_concept> : public boost::false_type {};
23866:
23866: template <class T, bool b>
23866: struct has_hidden_guard_digits_10 : public boost::false_type {};
23866: template <class T>
23866: struct has_hidden_guard_digits_10<T, true> : public boost::integral_constant<bool, (std::numeric_limits<T>::digits10 != std::numeric_limits<T>::max_digits10)> {};
23866:
23866: template <class T>
23866: struct has_hidden_guard_digits
23866: : public has_hidden_guard_digits_10<T,
23866: std::numeric_limits<T>::is_specialized
23866: && (std::numeric_limits<T>::radix == 10) >
23866: {};
23866:
23866: template <class T>
23866: inline const T& normalize_value(const T& val, const boost::false_type&) { return val; }
23866: template <class T>
23866: inline T normalize_value(const T& val, const boost::true_type&)
23866: {
23866: static_assert(std::numeric_limits<T>::is_specialized, "std::numeric_limits<T>::is_specialized");
23866: static_assert(std::numeric_limits<T>::radix != 2, "std::numeric_limits<T>::radix != 2");
23866:
23866: boost::intmax_t shift = (boost::intmax_t)std::numeric_limits<T>::digits - (boost::intmax_t)ilogb(val) - 1;
23866: T result = scalbn(val, shift);
23866: result = round(result);
23866: return scalbn(result, -shift);
23866: }
23866:
23866: template <class T>
23866: inline T get_smallest_value(boost::true_type const&)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: static const T m = std::numeric_limits<T>::denorm_min();
23866:
23866:
23866:
23866: return ((tools::min_value<T>() / 2) == 0) ? tools::min_value<T>() : m;
23866:
23866: }
23866:
23866: template <class T>
23866: inline T get_smallest_value(boost::false_type const&)
23866: {
23866: return tools::min_value<T>();
23866: }
23866:
23866: template <class T>
23866: inline T get_smallest_value()
23866: {
23866:
23866:
23866:
23866: return get_smallest_value<T>(boost::integral_constant<bool, std::numeric_limits<T>::is_specialized && (std::numeric_limits<T>::has_denorm == std::denorm_present)>());
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template <class T>
23866: T get_min_shift_value();
23866:
23866: template <class T>
23866: struct min_shift_initializer
23866: {
23866: struct init
23866: {
23866: init()
23866: {
23866: do_init();
23866: }
23866: static void do_init()
23866: {
23866: get_min_shift_value<T>();
23866: }
23866: void force_instantiate()const{}
23866: };
23866: static const init initializer;
23866: static void force_instantiate()
23866: {
23866: initializer.force_instantiate();
23866: }
23866: };
23866:
23866: template <class T>
23866: const typename min_shift_initializer<T>::init min_shift_initializer<T>::initializer;
23866:
23866: template <class T>
23866: inline T calc_min_shifted(const boost::true_type&)
23866: {
23866: 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; 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;
23866: return ldexp(tools::min_value<T>(), tools::digits<T>() + 1);
23866: }
23866: template <class T>
23866: inline T calc_min_shifted(const boost::false_type&)
23866: {
23866: static_assert(std::numeric_limits<T>::is_specialized, "std::numeric_limits<T>::is_specialized");
23866: static_assert(std::numeric_limits<T>::radix != 2, "std::numeric_limits<T>::radix != 2");
23866:
23866: return scalbn(tools::min_value<T>(), std::numeric_limits<T>::digits + 1);
23866: }
23866:
23866:
23866: template <class T>
23866: inline T get_min_shift_value()
23866: {
23866: static const T val = calc_min_shifted<T>(boost::integral_constant<bool, !std::numeric_limits<T>::is_specialized || std::numeric_limits<T>::radix == 2>());
23866: min_shift_initializer<T>::force_instantiate();
23866:
23866: return val;
23866: }
23866:
23866: template <class T, class Policy>
23866: T float_next_imp(const T& val, const boost::true_type&, const Policy& pol)
23866: {
23866: 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; 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;
23866: int expon;
23866: static const char* function = "float_next<%1%>(%1%)";
23866:
23866: int fpclass = (boost::math::fpclassify)(val);
23866:
23866: if((fpclass == (int)0) || (fpclass == (int)1))
23866: {
23866: if(val < 0)
23866: return -tools::max_value<T>();
23866: return policies::raise_domain_error<T>(
23866: function,
23866: "Argument must be finite, but got %1%", val, pol);
23866: }
23866:
23866: if(val >= tools::max_value<T>())
23866: return policies::raise_overflow_error<T>(function, 0, pol);
23866:
23866: if(val == 0)
23866: return detail::get_smallest_value<T>();
23866:
23866: if((fpclass != (int)3) && (fpclass != (int)2) && (fabs(val) < detail::get_min_shift_value<T>()) && (val != -tools::min_value<T>()))
23866: {
23866:
23866:
23866:
23866:
23866:
23866: return ldexp(float_next(T(ldexp(val, 2 * tools::digits<T>())), pol), -2 * tools::digits<T>());
23866: }
23866:
23866: if(-0.5f == frexp(val, &expon))
23866: --expon;
23866: T diff = ldexp(T(1), expon - tools::digits<T>());
23866: if(diff == 0)
23866: diff = detail::get_smallest_value<T>();
23866: return val + diff;
23866: }
23866:
23866:
23866:
23866: template <class T, class Policy>
23866: T float_next_imp(const T& val, const boost::false_type&, const Policy& pol)
23866: {
23866: static_assert(std::numeric_limits<T>::is_specialized, "std::numeric_limits<T>::is_specialized");
23866: static_assert(std::numeric_limits<T>::radix != 2, "std::numeric_limits<T>::radix != 2");
23866:
23866: 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; 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;
23866: boost::intmax_t expon;
23866: static const char* function = "float_next<%1%>(%1%)";
23866:
23866: int fpclass = (boost::math::fpclassify)(val);
23866:
23866: if((fpclass == (int)0) || (fpclass == (int)1))
23866: {
23866: if(val < 0)
23866: return -tools::max_value<T>();
23866: return policies::raise_domain_error<T>(
23866: function,
23866: "Argument must be finite, but got %1%", val, pol);
23866: }
23866:
23866: if(val >= tools::max_value<T>())
23866: return policies::raise_overflow_error<T>(function, 0, pol);
23866:
23866: if(val == 0)
23866: return detail::get_smallest_value<T>();
23866:
23866: if((fpclass != (int)3) && (fpclass != (int)2) && (fabs(val) < detail::get_min_shift_value<T>()) && (val != -tools::min_value<T>()))
23866: {
23866:
23866:
23866:
23866:
23866:
23866: return scalbn(float_next(T(scalbn(val, 2 * std::numeric_limits<T>::digits)), pol), -2 * std::numeric_limits<T>::digits);
23866: }
23866:
23866: expon = 1 + ilogb(val);
23866: if(-1 == scalbn(val, -expon) * std::numeric_limits<T>::radix)
23866: --expon;
23866: T diff = scalbn(T(1), expon - std::numeric_limits<T>::digits);
23866: if(diff == 0)
23866: diff = detail::get_smallest_value<T>();
23866: return val + diff;
23866: }
23866:
23866: }
23866:
23866: template <class T, class Policy>
23866: inline typename tools::promote_args<T>::type float_next(const T& val, const Policy& pol)
23866: {
23866: typedef typename tools::promote_args<T>::type result_type;
23866: return detail::float_next_imp(detail::normalize_value(static_cast<result_type>(val), typename detail::has_hidden_guard_digits<result_type>::type()), boost::integral_constant<bool, !std::numeric_limits<result_type>::is_specialized || (std::numeric_limits<result_type>::radix == 2)>(), pol);
23866: }
23866: # 293 "/usr/include/boost/math/special_functions/next.hpp" 3 4
23866: template <class T>
23866: inline typename tools::promote_args<T>::type float_next(const T& val)
23866: {
23866: return float_next(val, policies::policy<>());
23866: }
23866:
23866: namespace detail{
23866:
23866: template <class T, class Policy>
23866: T float_prior_imp(const T& val, const boost::true_type&, const Policy& pol)
23866: {
23866: 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; 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;
23866: int expon;
23866: static const char* function = "float_prior<%1%>(%1%)";
23866:
23866: int fpclass = (boost::math::fpclassify)(val);
23866:
23866: if((fpclass == (int)0) || (fpclass == (int)1))
23866: {
23866: if(val > 0)
23866: return tools::max_value<T>();
23866: return policies::raise_domain_error<T>(
23866: function,
23866: "Argument must be finite, but got %1%", val, pol);
23866: }
23866:
23866: if(val <= -tools::max_value<T>())
23866: return -policies::raise_overflow_error<T>(function, 0, pol);
23866:
23866: if(val == 0)
23866: return -detail::get_smallest_value<T>();
23866:
23866: if((fpclass != (int)3) && (fpclass != (int)2) && (fabs(val) < detail::get_min_shift_value<T>()) && (val != tools::min_value<T>()))
23866: {
23866:
23866:
23866:
23866:
23866:
23866: return ldexp(float_prior(T(ldexp(val, 2 * tools::digits<T>())), pol), -2 * tools::digits<T>());
23866: }
23866:
23866: T remain = frexp(val, &expon);
23866: if(remain == 0.5f)
23866: --expon;
23866: T diff = ldexp(T(1), expon - tools::digits<T>());
23866: if(diff == 0)
23866: diff = detail::get_smallest_value<T>();
23866: return val - diff;
23866: }
23866:
23866:
23866:
23866: template <class T, class Policy>
23866: T float_prior_imp(const T& val, const boost::false_type&, const Policy& pol)
23866: {
23866: static_assert(std::numeric_limits<T>::is_specialized, "std::numeric_limits<T>::is_specialized");
23866: static_assert(std::numeric_limits<T>::radix != 2, "std::numeric_limits<T>::radix != 2");
23866:
23866: 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; 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;
23866: boost::intmax_t expon;
23866: static const char* function = "float_prior<%1%>(%1%)";
23866:
23866: int fpclass = (boost::math::fpclassify)(val);
23866:
23866: if((fpclass == (int)0) || (fpclass == (int)1))
23866: {
23866: if(val > 0)
23866: return tools::max_value<T>();
23866: return policies::raise_domain_error<T>(
23866: function,
23866: "Argument must be finite, but got %1%", val, pol);
23866: }
23866:
23866: if(val <= -tools::max_value<T>())
23866: return -policies::raise_overflow_error<T>(function, 0, pol);
23866:
23866: if(val == 0)
23866: return -detail::get_smallest_value<T>();
23866:
23866: if((fpclass != (int)3) && (fpclass != (int)2) && (fabs(val) < detail::get_min_shift_value<T>()) && (val != tools::min_value<T>()))
23866: {
23866:
23866:
23866:
23866:
23866:
23866: return scalbn(float_prior(T(scalbn(val, 2 * std::numeric_limits<T>::digits)), pol), -2 * std::numeric_limits<T>::digits);
23866: }
23866:
23866: expon = 1 + ilogb(val);
23866: T remain = scalbn(val, -expon);
23866: if(remain * std::numeric_limits<T>::radix == 1)
23866: --expon;
23866: T diff = scalbn(T(1), expon - std::numeric_limits<T>::digits);
23866: if(diff == 0)
23866: diff = detail::get_smallest_value<T>();
23866: return val - diff;
23866: }
23866:
23866: }
23866:
23866: template <class T, class Policy>
23866: inline typename tools::promote_args<T>::type float_prior(const T& val, const Policy& pol)
23866: {
23866: typedef typename tools::promote_args<T>::type result_type;
23866: return detail::float_prior_imp(detail::normalize_value(static_cast<result_type>(val), typename detail::has_hidden_guard_digits<result_type>::type()), boost::integral_constant<bool, !std::numeric_limits<result_type>::is_specialized || (std::numeric_limits<result_type>::radix == 2)>(), pol);
23866: }
23866: # 425 "/usr/include/boost/math/special_functions/next.hpp" 3 4
23866: template <class T>
23866: inline typename tools::promote_args<T>::type float_prior(const T& val)
23866: {
23866: return float_prior(val, policies::policy<>());
23866: }
23866:
23866: template <class T, class U, class Policy>
23866: inline typename tools::promote_args<T, U>::type nextafter(const T& val, const U& direction, const Policy& pol)
23866: {
23866: typedef typename tools::promote_args<T, U>::type result_type;
23866: return val < direction ? boost::math::float_next<result_type>(val, pol) : val == direction ? val : boost::math::float_prior<result_type>(val, pol);
23866: }
23866:
23866: template <class T, class U>
23866: inline typename tools::promote_args<T, U>::type nextafter(const T& val, const U& direction)
23866: {
23866: return nextafter(val, direction, policies::policy<>());
23866: }
23866:
23866: namespace detail{
23866:
23866: template <class T, class Policy>
23866: T float_distance_imp(const T& a, const T& b, const boost::true_type&, const Policy& pol)
23866: {
23866: 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; 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;
23866:
23866:
23866:
23866: static const char* function = "float_distance<%1%>(%1%, %1%)";
23866: if(!(boost::math::isfinite)(a))
23866: return policies::raise_domain_error<T>(
23866: function,
23866: "Argument a must be finite, but got %1%", a, pol);
23866: if(!(boost::math::isfinite)(b))
23866: return policies::raise_domain_error<T>(
23866: function,
23866: "Argument b must be finite, but got %1%", b, pol);
23866:
23866:
23866:
23866: if(a > b)
23866: return -float_distance(b, a, pol);
23866: if(a == b)
23866: return T(0);
23866: if(a == 0)
23866: return 1 + fabs(float_distance(static_cast<T>((b < 0) ? T(-detail::get_smallest_value<T>()) : detail::get_smallest_value<T>()), b, pol));
23866: if(b == 0)
23866: return 1 + fabs(float_distance(static_cast<T>((a < 0) ? T(-detail::get_smallest_value<T>()) : detail::get_smallest_value<T>()), a, pol));
23866: if(boost::math::sign(a) != boost::math::sign(b))
23866: return 2 + fabs(float_distance(static_cast<T>((b < 0) ? T(-detail::get_smallest_value<T>()) : detail::get_smallest_value<T>()), b, pol))
23866: + fabs(float_distance(static_cast<T>((a < 0) ? T(-detail::get_smallest_value<T>()) : detail::get_smallest_value<T>()), a, pol));
23866:
23866:
23866:
23866:
23866: if(a < 0)
23866: return float_distance(static_cast<T>(-b), static_cast<T>(-a), pol);
23866:
23866: (static_cast <bool> (a >= 0) ? void (0) : __assert_fail ("a >= 0", "/usr/include/boost/math/special_functions/next.hpp", 483, __extension__ __PRETTY_FUNCTION__));
23866: (static_cast <bool> (b >= a) ? void (0) : __assert_fail ("b >= a", "/usr/include/boost/math/special_functions/next.hpp", 484, __extension__ __PRETTY_FUNCTION__));
23866:
23866: int expon;
23866:
23866:
23866:
23866:
23866:
23866: (void)frexp(((boost::math::fpclassify)(a) == (int)3) ? tools::min_value<T>() : a, &expon);
23866: T upper = ldexp(T(1), expon);
23866: T result = T(0);
23866:
23866:
23866:
23866:
23866: if(b > upper)
23866: {
23866: int expon2;
23866: (void)frexp(b, &expon2);
23866: T upper2 = ldexp(T(0.5), expon2);
23866: result = float_distance(upper2, b);
23866: result += (expon2 - expon - 1) * ldexp(T(1), tools::digits<T>() - 1);
23866: }
23866:
23866:
23866:
23866:
23866: expon = tools::digits<T>() - expon;
23866: T mb, x, y, z;
23866: if(((boost::math::fpclassify)(a) == (int)3) || (b - a < tools::min_value<T>()))
23866: {
23866:
23866:
23866:
23866:
23866:
23866: T a2 = ldexp(a, tools::digits<T>());
23866: T b2 = ldexp(b, tools::digits<T>());
23866: mb = -(std::min)(T(ldexp(upper, tools::digits<T>())), b2);
23866: x = a2 + mb;
23866: z = x - a2;
23866: y = (a2 - (x - z)) + (mb - z);
23866:
23866: expon -= tools::digits<T>();
23866: }
23866: else
23866: {
23866: mb = -(std::min)(upper, b);
23866: x = a + mb;
23866: z = x - a;
23866: y = (a - (x - z)) + (mb - z);
23866: }
23866: if(x < 0)
23866: {
23866: x = -x;
23866: y = -y;
23866: }
23866: result += ldexp(x, expon) + ldexp(y, expon);
23866:
23866:
23866:
23866: (static_cast <bool> (result == floor(result)) ? void (0) : __assert_fail ("result == floor(result)", "/usr/include/boost/math/special_functions/next.hpp", 545, __extension__ __PRETTY_FUNCTION__));
23866: return result;
23866: }
23866:
23866:
23866:
23866: template <class T, class Policy>
23866: T float_distance_imp(const T& a, const T& b, const boost::false_type&, const Policy& pol)
23866: {
23866: static_assert(std::numeric_limits<T>::is_specialized, "std::numeric_limits<T>::is_specialized");
23866: static_assert(std::numeric_limits<T>::radix != 2, "std::numeric_limits<T>::radix != 2");
23866:
23866: 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; 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;
23866:
23866:
23866:
23866: static const char* function = "float_distance<%1%>(%1%, %1%)";
23866: if(!(boost::math::isfinite)(a))
23866: return policies::raise_domain_error<T>(
23866: function,
23866: "Argument a must be finite, but got %1%", a, pol);
23866: if(!(boost::math::isfinite)(b))
23866: return policies::raise_domain_error<T>(
23866: function,
23866: "Argument b must be finite, but got %1%", b, pol);
23866:
23866:
23866:
23866: if(a > b)
23866: return -float_distance(b, a, pol);
23866: if(a == b)
23866: return T(0);
23866: if(a == 0)
23866: return 1 + fabs(float_distance(static_cast<T>((b < 0) ? T(-detail::get_smallest_value<T>()) : detail::get_smallest_value<T>()), b, pol));
23866: if(b == 0)
23866: return 1 + fabs(float_distance(static_cast<T>((a < 0) ? T(-detail::get_smallest_value<T>()) : detail::get_smallest_value<T>()), a, pol));
23866: if(boost::math::sign(a) != boost::math::sign(b))
23866: return 2 + fabs(float_distance(static_cast<T>((b < 0) ? T(-detail::get_smallest_value<T>()) : detail::get_smallest_value<T>()), b, pol))
23866: + fabs(float_distance(static_cast<T>((a < 0) ? T(-detail::get_smallest_value<T>()) : detail::get_smallest_value<T>()), a, pol));
23866:
23866:
23866:
23866:
23866: if(a < 0)
23866: return float_distance(static_cast<T>(-b), static_cast<T>(-a), pol);
23866:
23866: (static_cast <bool> (a >= 0) ? void (0) : __assert_fail ("a >= 0", "/usr/include/boost/math/special_functions/next.hpp", 591, __extension__ __PRETTY_FUNCTION__));
23866: (static_cast <bool> (b >= a) ? void (0) : __assert_fail ("b >= a", "/usr/include/boost/math/special_functions/next.hpp", 592, __extension__ __PRETTY_FUNCTION__));
23866:
23866: boost::intmax_t expon;
23866:
23866:
23866:
23866:
23866:
23866: expon = 1 + ilogb(((boost::math::fpclassify)(a) == (int)3) ? tools::min_value<T>() : a);
23866: T upper = scalbn(T(1), expon);
23866: T result = T(0);
23866:
23866:
23866:
23866:
23866: if(b > upper)
23866: {
23866: boost::intmax_t expon2 = 1 + ilogb(b);
23866: T upper2 = scalbn(T(1), expon2 - 1);
23866: result = float_distance(upper2, b);
23866: result += (expon2 - expon - 1) * scalbn(T(1), std::numeric_limits<T>::digits - 1);
23866: }
23866:
23866:
23866:
23866:
23866: expon = std::numeric_limits<T>::digits - expon;
23866: T mb, x, y, z;
23866: if(((boost::math::fpclassify)(a) == (int)3) || (b - a < tools::min_value<T>()))
23866: {
23866:
23866:
23866:
23866:
23866:
23866: T a2 = scalbn(a, std::numeric_limits<T>::digits);
23866: T b2 = scalbn(b, std::numeric_limits<T>::digits);
23866: mb = -(std::min)(T(scalbn(upper, std::numeric_limits<T>::digits)), b2);
23866: x = a2 + mb;
23866: z = x - a2;
23866: y = (a2 - (x - z)) + (mb - z);
23866:
23866: expon -= std::numeric_limits<T>::digits;
23866: }
23866: else
23866: {
23866: mb = -(std::min)(upper, b);
23866: x = a + mb;
23866: z = x - a;
23866: y = (a - (x - z)) + (mb - z);
23866: }
23866: if(x < 0)
23866: {
23866: x = -x;
23866: y = -y;
23866: }
23866: result += scalbn(x, expon) + scalbn(y, expon);
23866:
23866:
23866:
23866: (static_cast <bool> (result == floor(result)) ? void (0) : __assert_fail ("result == floor(result)", "/usr/include/boost/math/special_functions/next.hpp", 652, __extension__ __PRETTY_FUNCTION__));
23866: return result;
23866: }
23866:
23866: }
23866:
23866: template <class T, class U, class Policy>
23866: inline typename tools::promote_args<T, U>::type float_distance(const T& a, const U& b, const Policy& pol)
23866: {
23866: typedef typename tools::promote_args<T, U>::type result_type;
23866: return detail::float_distance_imp(detail::normalize_value(static_cast<result_type>(a), typename detail::has_hidden_guard_digits<result_type>::type()), detail::normalize_value(static_cast<result_type>(b), typename detail::has_hidden_guard_digits<result_type>::type()), boost::integral_constant<bool, !std::numeric_limits<result_type>::is_specialized || (std::numeric_limits<result_type>::radix == 2)>(), pol);
23866: }
23866:
23866: template <class T, class U>
23866: typename tools::promote_args<T, U>::type float_distance(const T& a, const U& b)
23866: {
23866: return boost::math::float_distance(a, b, policies::policy<>());
23866: }
23866:
23866: namespace detail{
23866:
23866: template <class T, class Policy>
23866: T float_advance_imp(T val, int distance, const boost::true_type&, const Policy& pol)
23866: {
23866: 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; 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;
23866:
23866:
23866:
23866: static const char* function = "float_advance<%1%>(%1%, int)";
23866:
23866: int fpclass = (boost::math::fpclassify)(val);
23866:
23866: if((fpclass == (int)0) || (fpclass == (int)1))
23866: return policies::raise_domain_error<T>(
23866: function,
23866: "Argument val must be finite, but got %1%", val, pol);
23866:
23866: if(val < 0)
23866: return -float_advance(-val, -distance, pol);
23866: if(distance == 0)
23866: return val;
23866: if(distance == 1)
23866: return float_next(val, pol);
23866: if(distance == -1)
23866: return float_prior(val, pol);
23866:
23866: if(fabs(val) < detail::get_min_shift_value<T>())
23866: {
23866:
23866:
23866:
23866:
23866:
23866: if(distance > 0)
23866: {
23866: do{ val = float_next(val, pol); } while(--distance);
23866: }
23866: else
23866: {
23866: do{ val = float_prior(val, pol); } while(++distance);
23866: }
23866: return val;
23866: }
23866:
23866: int expon;
23866: (void)frexp(val, &expon);
23866: T limit = ldexp((distance < 0 ? T(0.5f) : T(1)), expon);
23866: if(val <= tools::min_value<T>())
23866: {
23866: limit = sign(T(distance)) * tools::min_value<T>();
23866: }
23866: T limit_distance = float_distance(val, limit);
23866: while(fabs(limit_distance) < abs(distance))
23866: {
23866: distance -= itrunc(limit_distance);
23866: val = limit;
23866: if(distance < 0)
23866: {
23866: limit /= 2;
23866: expon--;
23866: }
23866: else
23866: {
23866: limit *= 2;
23866: expon++;
23866: }
23866: limit_distance = float_distance(val, limit);
23866: if(distance && (limit_distance == 0))
23866: {
23866: return policies::raise_evaluation_error<T>(function, "Internal logic failed while trying to increment floating point value %1%: most likely your FPU is in non-IEEE conforming mode.", val, pol);
23866: }
23866: }
23866: if((0.5f == frexp(val, &expon)) && (distance < 0))
23866: --expon;
23866: T diff = 0;
23866: if(val != 0)
23866: diff = distance * ldexp(T(1), expon - tools::digits<T>());
23866: if(diff == 0)
23866: diff = distance * detail::get_smallest_value<T>();
23866: return val += diff;
23866: }
23866:
23866:
23866:
23866: template <class T, class Policy>
23866: T float_advance_imp(T val, int distance, const boost::false_type&, const Policy& pol)
23866: {
23866: static_assert(std::numeric_limits<T>::is_specialized, "std::numeric_limits<T>::is_specialized");
23866: static_assert(std::numeric_limits<T>::radix != 2, "std::numeric_limits<T>::radix != 2");
23866:
23866: 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; 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;
23866:
23866:
23866:
23866: static const char* function = "float_advance<%1%>(%1%, int)";
23866:
23866: int fpclass = (boost::math::fpclassify)(val);
23866:
23866: if((fpclass == (int)0) || (fpclass == (int)1))
23866: return policies::raise_domain_error<T>(
23866: function,
23866: "Argument val must be finite, but got %1%", val, pol);
23866:
23866: if(val < 0)
23866: return -float_advance(-val, -distance, pol);
23866: if(distance == 0)
23866: return val;
23866: if(distance == 1)
23866: return float_next(val, pol);
23866: if(distance == -1)
23866: return float_prior(val, pol);
23866:
23866: if(fabs(val) < detail::get_min_shift_value<T>())
23866: {
23866:
23866:
23866:
23866:
23866:
23866: if(distance > 0)
23866: {
23866: do{ val = float_next(val, pol); } while(--distance);
23866: }
23866: else
23866: {
23866: do{ val = float_prior(val, pol); } while(++distance);
23866: }
23866: return val;
23866: }
23866:
23866: boost::intmax_t expon = 1 + ilogb(val);
23866: T limit = scalbn(T(1), distance < 0 ? expon - 1 : expon);
23866: if(val <= tools::min_value<T>())
23866: {
23866: limit = sign(T(distance)) * tools::min_value<T>();
23866: }
23866: T limit_distance = float_distance(val, limit);
23866: while(fabs(limit_distance) < abs(distance))
23866: {
23866: distance -= itrunc(limit_distance);
23866: val = limit;
23866: if(distance < 0)
23866: {
23866: limit /= std::numeric_limits<T>::radix;
23866: expon--;
23866: }
23866: else
23866: {
23866: limit *= std::numeric_limits<T>::radix;
23866: expon++;
23866: }
23866: limit_distance = float_distance(val, limit);
23866: if(distance && (limit_distance == 0))
23866: {
23866: return policies::raise_evaluation_error<T>(function, "Internal logic failed while trying to increment floating point value %1%: most likely your FPU is in non-IEEE conforming mode.", val, pol);
23866: }
23866: }
23866:
23866:
23866:
23866: T diff = 0;
23866: if(val != 0)
23866: diff = distance * scalbn(T(1), expon - std::numeric_limits<T>::digits);
23866: if(diff == 0)
23866: diff = distance * detail::get_smallest_value<T>();
23866: return val += diff;
23866: }
23866:
23866: }
23866:
23866: template <class T, class Policy>
23866: inline typename tools::promote_args<T>::type float_advance(T val, int distance, const Policy& pol)
23866: {
23866: typedef typename tools::promote_args<T>::type result_type;
23866: return detail::float_advance_imp(detail::normalize_value(static_cast<result_type>(val), typename detail::has_hidden_guard_digits<result_type>::type()), distance, boost::integral_constant<bool, !std::numeric_limits<result_type>::is_specialized || (std::numeric_limits<result_type>::radix == 2)>(), pol);
23866: }
23866:
23866: template <class T>
23866: inline typename tools::promote_args<T>::type float_advance(const T& val, int distance)
23866: {
23866: return boost::math::float_advance(val, distance, policies::policy<>());
23866: }
23866:
23866: }}
23866: # 13 "/usr/include/boost/multiprecision/detail/default_ops.hpp" 2 3 4
23866: # 1 "/usr/include/boost/math/special_functions/hypot.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MATH_HYPOT_INCLUDED
23866: # 24 "/usr/include/boost/math/special_functions/hypot.hpp" 3 4
23866: namespace boost{ namespace math{ namespace detail{
23866:
23866: template <class T, class Policy>
23866: T hypot_imp(T x, T y, const Policy& pol)
23866: {
23866:
23866:
23866:
23866: using std::fabs; using std::sqrt;
23866:
23866: x = fabs(x);
23866: y = fabs(y);
23866:
23866:
23866:
23866:
23866:
23866:
23866: if(std::numeric_limits<T>::has_infinity
23866: && ((x == std::numeric_limits<T>::infinity())
23866: || (y == std::numeric_limits<T>::infinity())))
23866: return policies::raise_overflow_error<T>("boost::math::hypot<%1%>(%1%,%1%)", 0, pol);
23866:
23866:
23866:
23866:
23866: if(y > x)
23866: (std::swap)(x, y);
23866:
23866: if(x * tools::epsilon<T>() >= y)
23866: return x;
23866:
23866: T rat = y / x;
23866: return x * sqrt(1 + rat*rat);
23866: }
23866:
23866: }
23866:
23866: template <class T1, class T2>
23866: inline typename tools::promote_args<T1, T2>::type
23866: hypot(T1 x, T2 y)
23866: {
23866: typedef typename tools::promote_args<T1, T2>::type result_type;
23866: return detail::hypot_imp(
23866: static_cast<result_type>(x), static_cast<result_type>(y), policies::policy<>());
23866: }
23866:
23866: template <class T1, class T2, class Policy>
23866: inline typename tools::promote_args<T1, T2>::type
23866: hypot(T1 x, T2 y, const Policy& pol)
23866: {
23866: typedef typename tools::promote_args<T1, T2>::type result_type;
23866: return detail::hypot_imp(
23866: static_cast<result_type>(x), static_cast<result_type>(y), pol);
23866: }
23866:
23866: }
23866: }
23866: # 14 "/usr/include/boost/multiprecision/detail/default_ops.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/mpl/front.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_FRONT_HPP_INCLUDED
23866: # 18 "/usr/include/boost/mpl/front.hpp" 3 4
23866: # 1 "/usr/include/boost/mpl/aux_/front_impl.hpp" 1 3 4
23866:
23866:
23866: #define BOOST_MPL_AUX_FRONT_IMPL_HPP_INCLUDED
23866: # 22 "/usr/include/boost/mpl/aux_/front_impl.hpp" 3 4
23866: namespace boost { namespace mpl {
23866:
23866:
23866:
23866:
23866: template< typename Tag >
23866: struct front_impl
23866: {
23866: template< typename Sequence > struct apply
23866: {
23866: typedef typename begin<Sequence>::type iter_;
23866: typedef typename deref<iter_>::type type;
23866: };
23866: };
23866:
23866: template<> struct front_impl<non_sequence_tag> {};
23866:
23866: }}
23866: # 19 "/usr/include/boost/mpl/front.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: namespace boost { namespace mpl {
23866:
23866: template<
23866: typename Sequence = na
23866: >
23866: struct front
23866: : front_impl< typename sequence_tag<Sequence>::type >
23866: ::template apply< Sequence >
23866: {
23866:
23866: };
23866:
23866: template<> struct front< na > { template< typename T1 , typename T2 =na , typename T3 =na , typename T4 =na , typename T5 =na > struct apply : front< T1 > { }; }; template< typename Tag > struct lambda< front< na > , Tag , int_<-1> > { typedef false_ is_le; typedef front< na > result_; typedef front< na > type; }; namespace aux { template< typename T1 > struct template_arity< front< T1 > > : int_<1> { }; template<> struct template_arity< front< na > > : int_<-1> { }; }
23866:
23866: }}
23866: # 16 "/usr/include/boost/multiprecision/detail/default_ops.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/cstdint.hpp" 1 3 4
23866: # 18 "/usr/include/boost/multiprecision/detail/default_ops.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define INSTRUMENT_BACKEND(x)
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace multiprecision {
23866:
23866: namespace detail {
23866:
23866: template <class T>
23866: struct is_backend;
23866:
23866: template <class To, class From>
23866: void generic_interconvert(To& to, const From& from, const mpl::int_<number_kind_floating_point>& , const mpl::int_<number_kind_integer>& );
23866: template <class To, class From>
23866: void generic_interconvert(To& to, const From& from, const mpl::int_<number_kind_integer>& , const mpl::int_<number_kind_integer>& );
23866: template <class To, class From>
23866: void generic_interconvert(To& to, const From& from, const mpl::int_<number_kind_floating_point>& , const mpl::int_<number_kind_floating_point>& );
23866: template <class To, class From>
23866: void generic_interconvert(To& to, const From& from, const mpl::int_<number_kind_rational>& , const mpl::int_<number_kind_rational>& );
23866: template <class To, class From>
23866: void generic_interconvert(To& to, const From& from, const mpl::int_<number_kind_rational>& , const mpl::int_<number_kind_integer>& );
23866:
23866: }
23866:
23866: namespace default_ops {
23866: # 72 "/usr/include/boost/multiprecision/detail/default_ops.hpp" 3 4
23866: template <class T, class V>
23866: inline constexpr typename disable_if_c<is_convertible<V, T>::value>::type
23866: eval_add(T& result, V const& v)
23866: {
23866: T t;
23866: t = v;
23866: eval_add(result, t);
23866: }
23866: template <class T, class V>
23866: inline constexpr typename enable_if_c<is_convertible<V, T>::value>::type
23866: eval_add(T& result, V const& v)
23866: {
23866: T t(v);
23866: eval_add(result, t);
23866: }
23866: template <class T, class V>
23866: inline constexpr typename disable_if_c<is_convertible<V, T>::value>::type
23866: eval_subtract(T& result, V const& v)
23866: {
23866: T t;
23866: t = v;
23866: eval_subtract(result, t);
23866: }
23866: template <class T, class V>
23866: inline constexpr typename enable_if_c<is_convertible<V, T>::value>::type
23866: eval_subtract(T& result, V const& v)
23866: {
23866: T t(v);
23866: eval_subtract(result, t);
23866: }
23866: template <class T, class V>
23866: inline constexpr typename disable_if_c<is_convertible<V, T>::value>::type
23866: eval_multiply(T& result, V const& v)
23866: {
23866: T t;
23866: t = v;
23866: eval_multiply(result, t);
23866: }
23866: template <class T, class V>
23866: inline constexpr typename enable_if_c<is_convertible<V, T>::value>::type
23866: eval_multiply(T& result, V const& v)
23866: {
23866: T t(v);
23866: eval_multiply(result, t);
23866: }
23866:
23866: template <class T, class U, class V>
23866: constexpr void eval_multiply(T& t, const U& u, const V& v);
23866:
23866: template <class T, class U, class V>
23866: inline constexpr typename disable_if_c<!is_same<T, U>::value && is_same<T, V>::value>::type eval_multiply_add(T& t, const U& u, const V& v)
23866: {
23866: T z;
23866: eval_multiply(z, u, v);
23866: eval_add(t, z);
23866: }
23866: template <class T, class U, class V>
23866: inline constexpr typename enable_if_c<!is_same<T, U>::value && is_same<T, V>::value>::type eval_multiply_add(T& t, const U& u, const V& v)
23866: {
23866: eval_multiply_add(t, v, u);
23866: }
23866: template <class T, class U, class V>
23866: inline constexpr typename disable_if_c<!is_same<T, U>::value && is_same<T, V>::value>::type eval_multiply_subtract(T& t, const U& u, const V& v)
23866: {
23866: T z;
23866: eval_multiply(z, u, v);
23866: eval_subtract(t, z);
23866: }
23866: template <class T, class U, class V>
23866: inline constexpr typename enable_if_c<!is_same<T, U>::value && is_same<T, V>::value>::type eval_multiply_subtract(T& t, const U& u, const V& v)
23866: {
23866: eval_multiply_subtract(t, v, u);
23866: }
23866: template <class T, class V>
23866: inline constexpr typename enable_if_c<is_convertible<V, number<T, et_on> >::value && !is_convertible<V, T>::value>::type
23866: eval_divide(T& result, V const& v)
23866: {
23866: T t;
23866: t = v;
23866: eval_divide(result, t);
23866: }
23866: template <class T, class V>
23866: inline constexpr typename enable_if_c<is_convertible<V, number<T, et_on> >::value && is_convertible<V, T>::value>::type
23866: eval_divide(T& result, V const& v)
23866: {
23866: T t(v);
23866: eval_divide(result, t);
23866: }
23866: template <class T, class V>
23866: inline constexpr typename enable_if_c<is_convertible<V, number<T, et_on> >::value && !is_convertible<V, T>::value>::type
23866: eval_modulus(T& result, V const& v)
23866: {
23866: T t;
23866: t = v;
23866: eval_modulus(result, t);
23866: }
23866: template <class T, class V>
23866: inline constexpr typename enable_if_c<is_convertible<V, number<T, et_on> >::value && is_convertible<V, T>::value>::type
23866: eval_modulus(T& result, V const& v)
23866: {
23866: T t(v);
23866: eval_modulus(result, t);
23866: }
23866: template <class T, class V>
23866: inline constexpr typename enable_if_c<is_convertible<V, number<T, et_on> >::value && !is_convertible<V, T>::value>::type
23866: eval_bitwise_and(T& result, V const& v)
23866: {
23866: T t;
23866: t = v;
23866: eval_bitwise_and(result, t);
23866: }
23866: template <class T, class V>
23866: inline constexpr typename enable_if_c<is_convertible<V, number<T, et_on> >::value && is_convertible<V, T>::value>::type
23866: eval_bitwise_and(T& result, V const& v)
23866: {
23866: T t(v);
23866: eval_bitwise_and(result, t);
23866: }
23866: template <class T, class V>
23866: inline constexpr typename enable_if_c<is_convertible<V, number<T, et_on> >::value && !is_convertible<V, T>::value>::type
23866: eval_bitwise_or(T& result, V const& v)
23866: {
23866: T t;
23866: t = v;
23866: eval_bitwise_or(result, t);
23866: }
23866: template <class T, class V>
23866: inline constexpr typename enable_if_c<is_convertible<V, number<T, et_on> >::value && is_convertible<V, T>::value>::type
23866: eval_bitwise_or(T& result, V const& v)
23866: {
23866: T t(v);
23866: eval_bitwise_or(result, t);
23866: }
23866: template <class T, class V>
23866: inline constexpr typename enable_if_c<is_convertible<V, number<T, et_on> >::value && !is_convertible<V, T>::value>::type
23866: eval_bitwise_xor(T& result, V const& v)
23866: {
23866: T t;
23866: t = v;
23866: eval_bitwise_xor(result, t);
23866: }
23866: template <class T, class V>
23866: inline constexpr typename enable_if_c<is_convertible<V, number<T, et_on> >::value && is_convertible<V, T>::value>::type
23866: eval_bitwise_xor(T& result, V const& v)
23866: {
23866: T t(v);
23866: eval_bitwise_xor(result, t);
23866: }
23866:
23866: template <class T, class V>
23866: inline constexpr typename enable_if_c<is_convertible<V, number<T, et_on> >::value && !is_convertible<V, T>::value>::type
23866: eval_complement(T& result, V const& v)
23866: {
23866: T t;
23866: t = v;
23866: eval_complement(result, t);
23866: }
23866: template <class T, class V>
23866: inline constexpr typename enable_if_c<is_convertible<V, number<T, et_on> >::value && is_convertible<V, T>::value>::type
23866: eval_complement(T& result, V const& v)
23866: {
23866: T t(v);
23866: eval_complement(result, t);
23866: }
23866:
23866:
23866:
23866:
23866: template <class T, class U, class V>
23866: constexpr void eval_add(T& t, const U& u, const V& v);
23866:
23866: template <class T>
23866: inline constexpr void eval_add_default(T& t, const T& u, const T& v)
23866: {
23866: if (&t == &v)
23866: {
23866: eval_add(t, u);
23866: }
23866: else if (&t == &u)
23866: {
23866: eval_add(t, v);
23866: }
23866: else
23866: {
23866: t = u;
23866: eval_add(t, v);
23866: }
23866: }
23866: template <class T, class U>
23866: inline constexpr typename enable_if_c<is_convertible<U, number<T, et_on> >::value && !is_convertible<U, T>::value>::type eval_add_default(T& t, const T& u, const U& v)
23866: {
23866: T vv;
23866: vv = v;
23866: eval_add(t, u, vv);
23866: }
23866: template <class T, class U>
23866: inline constexpr typename enable_if_c<is_convertible<U, number<T, et_on> >::value && is_convertible<U, T>::value>::type eval_add_default(T& t, const T& u, const U& v)
23866: {
23866: T vv(v);
23866: eval_add(t, u, vv);
23866: }
23866: template <class T, class U>
23866: inline constexpr typename enable_if_c<is_convertible<U, number<T, et_on> >::value>::type eval_add_default(T& t, const U& u, const T& v)
23866: {
23866: eval_add(t, v, u);
23866: }
23866: template <class T, class U, class V>
23866: inline constexpr void eval_add_default(T& t, const U& u, const V& v)
23866: {
23866: if (is_same<T, V>::value && ((void*)&t == (void*)&v))
23866: {
23866: eval_add(t, u);
23866: }
23866: else
23866: {
23866: t = u;
23866: eval_add(t, v);
23866: }
23866: }
23866: template <class T, class U, class V>
23866: inline constexpr void eval_add(T& t, const U& u, const V& v)
23866: {
23866: eval_add_default(t, u, v);
23866: }
23866:
23866: template <class T, class U, class V>
23866: void constexpr eval_subtract(T& t, const U& u, const V& v);
23866:
23866: template <class T>
23866: inline constexpr void eval_subtract_default(T& t, const T& u, const T& v)
23866: {
23866: if ((&t == &v) && is_signed_number<T>::value)
23866: {
23866: eval_subtract(t, u);
23866: t.negate();
23866: }
23866: else if (&t == &u)
23866: {
23866: eval_subtract(t, v);
23866: }
23866: else
23866: {
23866: t = u;
23866: eval_subtract(t, v);
23866: }
23866: }
23866: template <class T, class U>
23866: inline constexpr typename enable_if_c<is_convertible<U, number<T, et_on> >::value && !is_convertible<U, T>::value>::type eval_subtract_default(T& t, const T& u, const U& v)
23866: {
23866: T vv;
23866: vv = v;
23866: eval_subtract(t, u, vv);
23866: }
23866: template <class T, class U>
23866: inline constexpr typename enable_if_c<is_convertible<U, number<T, et_on> >::value && is_convertible<U, T>::value>::type eval_subtract_default(T& t, const T& u, const U& v)
23866: {
23866: T vv(v);
23866: eval_subtract(t, u, vv);
23866: }
23866: template <class T, class U>
23866: inline constexpr typename enable_if_c<is_convertible<U, number<T, et_on> >::value && is_signed_number<T>::value>::type eval_subtract_default(T& t, const U& u, const T& v)
23866: {
23866: eval_subtract(t, v, u);
23866: t.negate();
23866: }
23866: template <class T, class U>
23866: inline constexpr typename enable_if_c<is_convertible<U, number<T, et_on> >::value && !is_convertible<U, T>::value && is_unsigned_number<T>::value>::type eval_subtract_default(T& t, const U& u, const T& v)
23866: {
23866: T temp;
23866: temp = u;
23866: eval_subtract(t, temp, v);
23866: }
23866: template <class T, class U>
23866: inline constexpr typename enable_if_c<is_convertible<U, number<T, et_on> >::value && is_convertible<U, T>::value && is_unsigned_number<T>::value>::type eval_subtract_default(T& t, const U& u, const T& v)
23866: {
23866: T temp(u);
23866: eval_subtract(t, temp, v);
23866: }
23866: template <class T, class U, class V>
23866: inline constexpr void eval_subtract_default(T& t, const U& u, const V& v)
23866: {
23866: if (is_same<T, V>::value && ((void*)&t == (void*)&v))
23866: {
23866: eval_subtract(t, u);
23866: t.negate();
23866: }
23866: else
23866: {
23866: t = u;
23866: eval_subtract(t, v);
23866: }
23866: }
23866: template <class T, class U, class V>
23866: inline constexpr void eval_subtract(T& t, const U& u, const V& v)
23866: {
23866: eval_subtract_default(t, u, v);
23866: }
23866:
23866: template <class T>
23866: inline constexpr void eval_multiply_default(T& t, const T& u, const T& v)
23866: {
23866: if (&t == &v)
23866: {
23866: eval_multiply(t, u);
23866: }
23866: else if (&t == &u)
23866: {
23866: eval_multiply(t, v);
23866: }
23866: else
23866: {
23866: t = u;
23866: eval_multiply(t, v);
23866: }
23866: }
23866:
23866: template <class T, class U>
23866: inline constexpr typename enable_if_c<is_convertible<U, number<T, et_on> >::value && !is_convertible<U, T>::value>::type eval_multiply_default(T& t, const T& u, const U& v)
23866: {
23866: T vv;
23866: vv = v;
23866: eval_multiply(t, u, vv);
23866: }
23866: template <class T, class U>
23866: inline constexpr typename enable_if_c<is_convertible<U, number<T, et_on> >::value && is_convertible<U, T>::value>::type eval_multiply_default(T& t, const T& u, const U& v)
23866: {
23866: T vv(v);
23866: eval_multiply(t, u, vv);
23866: }
23866: template <class T, class U>
23866: inline constexpr typename enable_if_c<is_convertible<U, number<T, et_on> >::value>::type eval_multiply_default(T& t, const U& u, const T& v)
23866: {
23866: eval_multiply(t, v, u);
23866: }
23866:
23866: template <class T, class U, class V>
23866: inline constexpr void eval_multiply_default(T& t, const U& u, const V& v)
23866: {
23866: if (is_same<T, V>::value && ((void*)&t == (void*)&v))
23866: {
23866: eval_multiply(t, u);
23866: }
23866: else
23866: {
23866: t = number<T>::canonical_value(u);
23866: eval_multiply(t, v);
23866: }
23866: }
23866: template <class T, class U, class V>
23866: inline constexpr void eval_multiply(T& t, const U& u, const V& v)
23866: {
23866: eval_multiply_default(t, u, v);
23866: }
23866:
23866: template <class T>
23866: inline constexpr void eval_multiply_add(T& t, const T& u, const T& v, const T& x)
23866: {
23866: if ((void*)&x == (void*)&t)
23866: {
23866: T z;
23866: z = number<T>::canonical_value(x);
23866: eval_multiply_add(t, u, v, z);
23866: }
23866: else
23866: {
23866: eval_multiply(t, u, v);
23866: eval_add(t, x);
23866: }
23866: }
23866:
23866: template <class T, class U>
23866: inline constexpr typename boost::disable_if_c<boost::is_same<T, U>::value, T>::type make_T(const U& u)
23866: {
23866: T t;
23866: t = number<T>::canonical_value(u);
23866: return t;
23866: }
23866: template <class T>
23866: inline constexpr const T& make_T(const T& t)
23866: {
23866: return t;
23866: }
23866:
23866: template <class T, class U, class V, class X>
23866: inline constexpr typename disable_if_c<!is_same<T, U>::value && is_same<T, V>::value>::type eval_multiply_add(T& t, const U& u, const V& v, const X& x)
23866: {
23866: eval_multiply_add(t, make_T<T>(u), make_T<T>(v), make_T<T>(x));
23866: }
23866: template <class T, class U, class V, class X>
23866: inline constexpr typename enable_if_c<!is_same<T, U>::value && is_same<T, V>::value>::type eval_multiply_add(T& t, const U& u, const V& v, const X& x)
23866: {
23866: eval_multiply_add(t, v, u, x);
23866: }
23866: template <class T, class U, class V, class X>
23866: inline constexpr typename disable_if_c<!is_same<T, U>::value && is_same<T, V>::value>::type eval_multiply_subtract(T& t, const U& u, const V& v, const X& x)
23866: {
23866: if ((void*)&x == (void*)&t)
23866: {
23866: T z;
23866: z = x;
23866: eval_multiply_subtract(t, u, v, z);
23866: }
23866: else
23866: {
23866: eval_multiply(t, u, v);
23866: eval_subtract(t, x);
23866: }
23866: }
23866: template <class T, class U, class V, class X>
23866: inline constexpr typename enable_if_c<!is_same<T, U>::value && is_same<T, V>::value>::type eval_multiply_subtract(T& t, const U& u, const V& v, const X& x)
23866: {
23866: eval_multiply_subtract(t, v, u, x);
23866: }
23866:
23866: template <class T, class U, class V>
23866: constexpr void eval_divide(T& t, const U& u, const V& v);
23866:
23866: template <class T>
23866: inline constexpr void eval_divide_default(T& t, const T& u, const T& v)
23866: {
23866: if (&t == &u)
23866: eval_divide(t, v);
23866: else if (&t == &v)
23866: {
23866: T temp;
23866: eval_divide(temp, u, v);
23866: temp.swap(t);
23866: }
23866: else
23866: {
23866: t = u;
23866: eval_divide(t, v);
23866: }
23866: }
23866:
23866: template <class T, class U>
23866: inline constexpr typename enable_if_c<is_convertible<U, number<T, et_on> >::value && !is_convertible<U, T>::value>::type eval_divide_default(T& t, const T& u, const U& v)
23866: {
23866: T vv;
23866: vv = v;
23866: eval_divide(t, u, vv);
23866: }
23866: template <class T, class U>
23866: inline constexpr typename enable_if_c<is_convertible<U, number<T, et_on> >::value && is_convertible<U, T>::value>::type eval_divide_default(T& t, const T& u, const U& v)
23866: {
23866: T vv(v);
23866: eval_divide(t, u, vv);
23866: }
23866: template <class T, class U>
23866: inline constexpr typename enable_if_c<is_convertible<U, number<T, et_on> >::value && !is_convertible<U, T>::value>::type eval_divide_default(T& t, const U& u, const T& v)
23866: {
23866: T uu;
23866: uu = u;
23866: eval_divide(t, uu, v);
23866: }
23866: template <class T, class U>
23866: inline constexpr typename enable_if_c<is_convertible<U, number<T, et_on> >::value && is_convertible<U, T>::value>::type eval_divide_default(T& t, const U& u, const T& v)
23866: {
23866: T uu(u);
23866: eval_divide(t, uu, v);
23866: }
23866:
23866: template <class T, class U, class V>
23866: inline constexpr void eval_divide_default(T& t, const U& u, const V& v)
23866: {
23866: if (is_same<T, V>::value && ((void*)&t == (void*)&v))
23866: {
23866: T temp;
23866: temp = u;
23866: eval_divide(temp, v);
23866: t = temp;
23866: }
23866: else
23866: {
23866: t = u;
23866: eval_divide(t, v);
23866: }
23866: }
23866: template <class T, class U, class V>
23866: inline constexpr void eval_divide(T& t, const U& u, const V& v)
23866: {
23866: eval_divide_default(t, u, v);
23866: }
23866:
23866: template <class T, class U, class V>
23866: constexpr void eval_modulus(T& t, const U& u, const V& v);
23866:
23866: template <class T>
23866: inline constexpr void eval_modulus_default(T& t, const T& u, const T& v)
23866: {
23866: if (&t == &u)
23866: eval_modulus(t, v);
23866: else if (&t == &v)
23866: {
23866: T temp;
23866: eval_modulus(temp, u, v);
23866: temp.swap(t);
23866: }
23866: else
23866: {
23866: t = u;
23866: eval_modulus(t, v);
23866: }
23866: }
23866: template <class T, class U>
23866: inline constexpr typename enable_if_c<is_convertible<U, number<T, et_on> >::value && !is_convertible<U, T>::value>::type eval_modulus_default(T& t, const T& u, const U& v)
23866: {
23866: T vv;
23866: vv = v;
23866: eval_modulus(t, u, vv);
23866: }
23866: template <class T, class U>
23866: inline constexpr typename enable_if_c<is_convertible<U, number<T, et_on> >::value && is_convertible<U, T>::value>::type eval_modulus_default(T& t, const T& u, const U& v)
23866: {
23866: T vv(v);
23866: eval_modulus(t, u, vv);
23866: }
23866: template <class T, class U>
23866: inline constexpr typename enable_if_c<is_convertible<U, number<T, et_on> >::value && !is_convertible<U, T>::value>::type eval_modulus_default(T& t, const U& u, const T& v)
23866: {
23866: T uu;
23866: uu = u;
23866: eval_modulus(t, uu, v);
23866: }
23866: template <class T, class U>
23866: inline constexpr typename enable_if_c<is_convertible<U, number<T, et_on> >::value && is_convertible<U, T>::value>::type eval_modulus_default(T& t, const U& u, const T& v)
23866: {
23866: T uu(u);
23866: eval_modulus(t, uu, v);
23866: }
23866: template <class T, class U, class V>
23866: inline constexpr void eval_modulus_default(T& t, const U& u, const V& v)
23866: {
23866: if (is_same<T, V>::value && ((void*)&t == (void*)&v))
23866: {
23866: T temp(u);
23866: eval_modulus(temp, v);
23866: t = temp;
23866: }
23866: else
23866: {
23866: t = u;
23866: eval_modulus(t, v);
23866: }
23866: }
23866: template <class T, class U, class V>
23866: inline constexpr void eval_modulus(T& t, const U& u, const V& v)
23866: {
23866: eval_modulus_default(t, u, v);
23866: }
23866:
23866: template <class T, class U, class V>
23866: constexpr void eval_bitwise_and(T& t, const U& u, const V& v);
23866:
23866: template <class T>
23866: inline constexpr void eval_bitwise_and_default(T& t, const T& u, const T& v)
23866: {
23866: if (&t == &v)
23866: {
23866: eval_bitwise_and(t, u);
23866: }
23866: else if (&t == &u)
23866: {
23866: eval_bitwise_and(t, v);
23866: }
23866: else
23866: {
23866: t = u;
23866: eval_bitwise_and(t, v);
23866: }
23866: }
23866: template <class T, class U>
23866: inline constexpr typename disable_if_c<is_convertible<U, T>::value>::type eval_bitwise_and_default(T& t, const T& u, const U& v)
23866: {
23866: T vv;
23866: vv = v;
23866: eval_bitwise_and(t, u, vv);
23866: }
23866: template <class T, class U>
23866: inline constexpr typename enable_if_c<is_convertible<U, T>::value>::type eval_bitwise_and_default(T& t, const T& u, const U& v)
23866: {
23866: T vv(v);
23866: eval_bitwise_and(t, u, vv);
23866: }
23866: template <class T, class U>
23866: inline constexpr typename enable_if_c<is_convertible<U, number<T, et_on> >::value>::type eval_bitwise_and_default(T& t, const U& u, const T& v)
23866: {
23866: eval_bitwise_and(t, v, u);
23866: }
23866: template <class T, class U, class V>
23866: inline constexpr typename disable_if_c<is_same<T, U>::value || is_same<T, V>::value>::type eval_bitwise_and_default(T& t, const U& u, const V& v)
23866: {
23866: t = u;
23866: eval_bitwise_and(t, v);
23866: }
23866: template <class T, class U, class V>
23866: inline constexpr void eval_bitwise_and(T& t, const U& u, const V& v)
23866: {
23866: eval_bitwise_and_default(t, u, v);
23866: }
23866:
23866: template <class T, class U, class V>
23866: constexpr void eval_bitwise_or(T& t, const U& u, const V& v);
23866:
23866: template <class T>
23866: inline constexpr void eval_bitwise_or_default(T& t, const T& u, const T& v)
23866: {
23866: if (&t == &v)
23866: {
23866: eval_bitwise_or(t, u);
23866: }
23866: else if (&t == &u)
23866: {
23866: eval_bitwise_or(t, v);
23866: }
23866: else
23866: {
23866: t = u;
23866: eval_bitwise_or(t, v);
23866: }
23866: }
23866: template <class T, class U>
23866: inline constexpr typename enable_if_c<is_convertible<U, number<T, et_on> >::value && !is_convertible<U, T>::value>::type eval_bitwise_or_default(T& t, const T& u, const U& v)
23866: {
23866: T vv;
23866: vv = v;
23866: eval_bitwise_or(t, u, vv);
23866: }
23866: template <class T, class U>
23866: inline constexpr typename enable_if_c<is_convertible<U, number<T, et_on> >::value && is_convertible<U, T>::value>::type eval_bitwise_or_default(T& t, const T& u, const U& v)
23866: {
23866: T vv(v);
23866: eval_bitwise_or(t, u, vv);
23866: }
23866: template <class T, class U>
23866: inline constexpr typename enable_if_c<is_convertible<U, number<T, et_on> >::value>::type eval_bitwise_or_default(T& t, const U& u, const T& v)
23866: {
23866: eval_bitwise_or(t, v, u);
23866: }
23866: template <class T, class U, class V>
23866: inline constexpr void eval_bitwise_or_default(T& t, const U& u, const V& v)
23866: {
23866: if (is_same<T, V>::value && ((void*)&t == (void*)&v))
23866: {
23866: eval_bitwise_or(t, u);
23866: }
23866: else
23866: {
23866: t = u;
23866: eval_bitwise_or(t, v);
23866: }
23866: }
23866: template <class T, class U, class V>
23866: inline constexpr void eval_bitwise_or(T& t, const U& u, const V& v)
23866: {
23866: eval_bitwise_or_default(t, u, v);
23866: }
23866:
23866: template <class T, class U, class V>
23866: constexpr void eval_bitwise_xor(T& t, const U& u, const V& v);
23866:
23866: template <class T>
23866: inline constexpr void eval_bitwise_xor_default(T& t, const T& u, const T& v)
23866: {
23866: if (&t == &v)
23866: {
23866: eval_bitwise_xor(t, u);
23866: }
23866: else if (&t == &u)
23866: {
23866: eval_bitwise_xor(t, v);
23866: }
23866: else
23866: {
23866: t = u;
23866: eval_bitwise_xor(t, v);
23866: }
23866: }
23866: template <class T, class U>
23866: inline constexpr typename enable_if_c<is_convertible<U, number<T, et_on> >::value && !is_convertible<U, T>::value>::type eval_bitwise_xor_default(T& t, const T& u, const U& v)
23866: {
23866: T vv;
23866: vv = v;
23866: eval_bitwise_xor(t, u, vv);
23866: }
23866: template <class T, class U>
23866: inline constexpr typename enable_if_c<is_convertible<U, number<T, et_on> >::value && is_convertible<U, T>::value>::type eval_bitwise_xor_default(T& t, const T& u, const U& v)
23866: {
23866: T vv(v);
23866: eval_bitwise_xor(t, u, vv);
23866: }
23866: template <class T, class U>
23866: inline constexpr typename enable_if_c<is_convertible<U, number<T, et_on> >::value>::type eval_bitwise_xor_default(T& t, const U& u, const T& v)
23866: {
23866: eval_bitwise_xor(t, v, u);
23866: }
23866: template <class T, class U, class V>
23866: inline constexpr void eval_bitwise_xor_default(T& t, const U& u, const V& v)
23866: {
23866: if (is_same<T, V>::value && ((void*)&t == (void*)&v))
23866: {
23866: eval_bitwise_xor(t, u);
23866: }
23866: else
23866: {
23866: t = u;
23866: eval_bitwise_xor(t, v);
23866: }
23866: }
23866: template <class T, class U, class V>
23866: inline constexpr void eval_bitwise_xor(T& t, const U& u, const V& v)
23866: {
23866: eval_bitwise_xor_default(t, u, v);
23866: }
23866:
23866: template <class T>
23866: inline constexpr void eval_increment(T& val)
23866: {
23866: typedef typename mpl::front<typename T::unsigned_types>::type ui_type;
23866: eval_add(val, static_cast<ui_type>(1u));
23866: }
23866: template <class T>
23866: inline constexpr void eval_decrement(T& val)
23866: {
23866: typedef typename mpl::front<typename T::unsigned_types>::type ui_type;
23866: eval_subtract(val, static_cast<ui_type>(1u));
23866: }
23866:
23866: template <class T, class V>
23866: inline constexpr void eval_left_shift(T& result, const T& arg, const V val)
23866: {
23866: result = arg;
23866: eval_left_shift(result, val);
23866: }
23866:
23866: template <class T, class V>
23866: inline constexpr void eval_right_shift(T& result, const T& arg, const V val)
23866: {
23866: result = arg;
23866: eval_right_shift(result, val);
23866: }
23866:
23866: template <class T>
23866: inline constexpr bool eval_is_zero(const T& val)
23866: {
23866: typedef typename mpl::front<typename T::unsigned_types>::type ui_type;
23866: return val.compare(static_cast<ui_type>(0)) == 0;
23866: }
23866: template <class T>
23866: inline constexpr int eval_get_sign(const T& val)
23866: {
23866: typedef typename mpl::front<typename T::unsigned_types>::type ui_type;
23866: return val.compare(static_cast<ui_type>(0));
23866: }
23866:
23866: template <class T, class V, class U>
23866: inline constexpr void assign_components_imp(T& result, const V& v1, const U& v2, const mpl::int_<number_kind_rational>&)
23866: {
23866: result = v1;
23866: T t;
23866: t = v2;
23866: eval_divide(result, t);
23866: }
23866:
23866: template <class T, class V, class U, int N>
23866: inline constexpr void assign_components_imp(T& result, const V& v1, const U& v2, const mpl::int_<N>&)
23866: {
23866: typedef typename component_type<number<T> >::type component_number_type;
23866:
23866: component_number_type x(v1), y(v2);
23866: assign_components(result, x.backend(), y.backend());
23866: }
23866:
23866: template <class T, class V, class U>
23866: inline constexpr void assign_components(T& result, const V& v1, const U& v2)
23866: {
23866: return assign_components_imp(result, v1, v2, typename number_category<T>::type());
23866: }
23866:
23866: template <class Result, class Traits>
23866: inline void assign_from_string_view(Result& result, const std::basic_string_view<char, Traits>& view)
23866: {
23866:
23866:
23866: std::string s(view);
23866: result = s.c_str();
23866: }
23866: template <class Result, class Traits>
23866: inline void assign_from_string_view(Result& result, const std::basic_string_view<char, Traits>& view_x, const std::basic_string_view<char, Traits>& view_y)
23866: {
23866:
23866:
23866: std::string x(view_x), y(view_y);
23866: assign_components(result, x.c_str(), y.c_str());
23866: }
23866:
23866: template <class R, int b>
23866: struct has_enough_bits
23866: {
23866: template <class T>
23866: struct type : public mpl::and_<mpl::not_<is_same<R, T> >, mpl::bool_<std::numeric_limits<T>::digits >= b> >
23866: {};
23866: };
23866:
23866: template <class R>
23866: struct terminal
23866: {
23866: constexpr terminal(const R& v) : value(v) {}
23866: constexpr terminal() {}
23866: constexpr terminal& operator=(R val)
23866: {
23866: value = val;
23866: return *this;
23866: }
23866: R value;
23866: constexpr operator R() const { return value; }
23866: };
23866:
23866: template <class R, class B>
23866: struct calculate_next_larger_type
23866: {
23866:
23866: typedef typename mpl::if_<
23866: is_signed<R>,
23866: typename B::signed_types,
23866: typename mpl::if_<
23866: is_unsigned<R>,
23866: typename B::unsigned_types,
23866: typename B::float_types>::type>::type list_type;
23866:
23866: typedef typename has_enough_bits<R, std::numeric_limits<R>::digits>::template type<mpl::_> pred_type;
23866:
23866: typedef typename mpl::find_if<
23866: list_type,
23866: is_same<R, mpl::_> >::type start_last;
23866:
23866: typedef typename mpl::if_<is_same<start_last, typename mpl::end<list_type>::type>, typename mpl::begin<list_type>::type, start_last>::type start_seq;
23866:
23866: typedef mpl::iterator_range<start_seq, typename mpl::end<list_type>::type> range;
23866:
23866: typedef typename mpl::find_if<
23866: range,
23866: pred_type>::type iter_type;
23866:
23866: typedef typename mpl::eval_if<
23866: is_same<typename mpl::end<list_type>::type, iter_type>,
23866: mpl::identity<terminal<R> >,
23866: mpl::deref<iter_type> >::type type;
23866: };
23866:
23866: template <class R, class T>
23866: inline constexpr typename boost::enable_if_c<boost::is_integral<R>::value, bool>::type check_in_range(const T& t)
23866: {
23866:
23866: if ((t > 0) && std::numeric_limits<R>::is_specialized && std::numeric_limits<R>::is_bounded && (t > (std::numeric_limits<R>::max)()))
23866: return true;
23866: else
23866: return false;
23866: }
23866:
23866: template <class R, class B>
23866: inline constexpr typename boost::enable_if_c<boost::is_integral<R>::value>::type eval_convert_to(R* result, const B& backend)
23866: {
23866: typedef typename calculate_next_larger_type<R, B>::type next_type;
23866: next_type n = next_type();
23866: eval_convert_to(&n, backend);
23866: if (!boost::is_unsigned<R>::value && std::numeric_limits<R>::is_specialized && std::numeric_limits<R>::is_bounded && (n > (next_type)(std::numeric_limits<R>::max)()))
23866: {
23866: *result = (std::numeric_limits<R>::max)();
23866: }
23866: else if (std::numeric_limits<R>::is_specialized && std::numeric_limits<R>::is_bounded && (n < (next_type)(std::numeric_limits<R>::min)()))
23866: {
23866: *result = (std::numeric_limits<R>::min)();
23866: }
23866: else
23866: *result = static_cast<R>(n);
23866: }
23866:
23866: template <class R, class B>
23866: inline constexpr typename boost::disable_if_c<boost::is_integral<R>::value>::type eval_convert_to(R* result, const B& backend)
23866: {
23866: typedef typename calculate_next_larger_type<R, B>::type next_type;
23866: next_type n = next_type();
23866: eval_convert_to(&n, backend);
23866: if (std::numeric_limits<R>::is_specialized && std::numeric_limits<R>::is_bounded && ((n > (next_type)(std::numeric_limits<R>::max)() || (n < (next_type) - (std::numeric_limits<R>::max)()))))
23866: {
23866: *result = n > 0 ? (std::numeric_limits<R>::max)() : -(std::numeric_limits<R>::max)();
23866: }
23866: else
23866: *result = static_cast<R>(n);
23866: }
23866:
23866: template <class R, class B>
23866: inline void last_chance_eval_convert_to(terminal<R>* result, const B& backend, const mpl::false_&)
23866: {
23866:
23866:
23866:
23866:
23866: if (std::numeric_limits<R>::is_integer && !std::numeric_limits<R>::is_signed && (eval_get_sign(backend) < 0))
23866: ::boost::throw_exception(std::range_error("Attempt to convert negative value to an unsigned integer results in undefined behaviour"), ::boost::source_location("/usr/include/boost/multiprecision/detail/default_ops.hpp", 972, __PRETTY_FUNCTION__));
23866: try
23866: {
23866: result->value = boost::lexical_cast<R>(backend.str(0, std::ios_base::fmtflags(0)));
23866: }
23866: catch (const bad_lexical_cast&)
23866: {
23866: if (eval_get_sign(backend) < 0)
23866: {
23866: *result = std::numeric_limits<R>::is_integer && std::numeric_limits<R>::is_signed ? (std::numeric_limits<R>::min)() : -(std::numeric_limits<R>::max)();
23866: }
23866: else
23866: *result = (std::numeric_limits<R>::max)();
23866: }
23866: }
23866:
23866: template <class R, class B>
23866: inline void last_chance_eval_convert_to(terminal<R>* result, const B& backend, const mpl::true_&)
23866: {
23866:
23866:
23866:
23866:
23866: if (std::numeric_limits<R>::is_integer && !std::numeric_limits<R>::is_signed && (eval_get_sign(backend) < 0))
23866: ::boost::throw_exception(std::range_error("Attempt to convert negative value to an unsigned integer results in undefined behaviour"), ::boost::source_location("/usr/include/boost/multiprecision/detail/default_ops.hpp", 996, __PRETTY_FUNCTION__));
23866: try
23866: {
23866: B t(backend);
23866: R mask = ~static_cast<R>(0u);
23866: eval_bitwise_and(t, mask);
23866: result->value = boost::lexical_cast<R>(t.str(0, std::ios_base::fmtflags(0)));
23866: }
23866: catch (const bad_lexical_cast&)
23866: {
23866: if (eval_get_sign(backend) < 0)
23866: {
23866: *result = std::numeric_limits<R>::is_integer && std::numeric_limits<R>::is_signed ? (std::numeric_limits<R>::min)() : -(std::numeric_limits<R>::max)();
23866: }
23866: else
23866: *result = (std::numeric_limits<R>::max)();
23866: }
23866: }
23866:
23866: template <class R, class B>
23866: inline constexpr void eval_convert_to(terminal<R>* result, const B& backend)
23866: {
23866: typedef mpl::bool_<boost::is_unsigned<R>::value && number_category<B>::value == number_kind_integer> tag_type;
23866: last_chance_eval_convert_to(result, backend, tag_type());
23866: }
23866:
23866: template <class B1, class B2, expression_template_option et>
23866: inline constexpr void eval_convert_to(terminal<number<B1, et> >* result, const B2& backend)
23866: {
23866:
23866:
23866:
23866:
23866: boost::multiprecision::detail::generic_interconvert(result->value.backend(), backend, number_category<B1>(), number_category<B2>());
23866: }
23866:
23866: template <class B>
23866: inline constexpr void eval_convert_to(std::string* result, const B& backend)
23866: {
23866: *result = backend.str(0, std::ios_base::fmtflags(0));
23866: }
23866:
23866: template <class B>
23866: inline constexpr void eval_convert_to(std::complex<float>* result, const B& backend)
23866: {
23866: typedef typename scalar_result_from_possible_complex<multiprecision::number<B> >::type scalar_type;
23866: scalar_type re, im;
23866: eval_real(re.backend(), backend);
23866: eval_imag(im.backend(), backend);
23866:
23866: *result = std::complex<float>(re.template convert_to<float>(), im.template convert_to<float>());
23866: }
23866:
23866: template <class B>
23866: inline constexpr void eval_convert_to(std::complex<double>* result, const B& backend)
23866: {
23866: typedef typename scalar_result_from_possible_complex<multiprecision::number<B> >::type scalar_type;
23866: scalar_type re, im;
23866: eval_real(re.backend(), backend);
23866: eval_imag(im.backend(), backend);
23866:
23866: *result = std::complex<double>(re.template convert_to<double>(), im.template convert_to<double>());
23866: }
23866:
23866: template <class B>
23866: inline constexpr void eval_convert_to(std::complex<long double>* result, const B& backend)
23866: {
23866: typedef typename scalar_result_from_possible_complex<multiprecision::number<B> >::type scalar_type;
23866: scalar_type re, im;
23866: eval_real(re.backend(), backend);
23866: eval_imag(im.backend(), backend);
23866:
23866: *result = std::complex<long double>(re.template convert_to<long double>(), im.template convert_to<long double>());
23866: }
23866:
23866:
23866:
23866:
23866: template <class T>
23866: inline constexpr void eval_abs(T& result, const T& arg)
23866: {
23866: typedef typename T::signed_types type_list;
23866: typedef typename mpl::front<type_list>::type front;
23866: result = arg;
23866: if (arg.compare(front(0)) < 0)
23866: result.negate();
23866: }
23866: template <class T>
23866: inline constexpr void eval_fabs(T& result, const T& arg)
23866: {
23866: static_assert(number_category<T>::value == number_kind_floating_point, "The fabs function is only valid for floating point types.");
23866: typedef typename T::signed_types type_list;
23866: typedef typename mpl::front<type_list>::type front;
23866: result = arg;
23866: if (arg.compare(front(0)) < 0)
23866: result.negate();
23866: }
23866:
23866: template <class Backend>
23866: inline constexpr int eval_fpclassify(const Backend& arg)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_floating_point, "The fpclassify function is only valid for floating point types.");
23866: return eval_is_zero(arg) ? 2 : 4;
23866: }
23866:
23866: template <class T>
23866: inline constexpr void eval_fmod(T& result, const T& a, const T& b)
23866: {
23866: static_assert(number_category<T>::value == number_kind_floating_point, "The fmod function is only valid for floating point types.");
23866: if ((&result == &a) || (&result == &b))
23866: {
23866: T temp;
23866: eval_fmod(temp, a, b);
23866: result = temp;
23866: return;
23866: }
23866: switch (eval_fpclassify(a))
23866: {
23866: case 2:
23866: result = a;
23866: return;
23866: case 1:
23866: case 0:
23866: result = std::numeric_limits<number<T> >::quiet_NaN().backend();
23866: (*__errno_location ()) = 33;
23866: return;
23866: }
23866: switch (eval_fpclassify(b))
23866: {
23866: case 2:
23866: case 0:
23866: result = std::numeric_limits<number<T> >::quiet_NaN().backend();
23866: (*__errno_location ()) = 33;
23866: return;
23866: }
23866: T n;
23866: eval_divide(result, a, b);
23866: if (eval_get_sign(result) < 0)
23866: eval_ceil(n, result);
23866: else
23866: eval_floor(n, result);
23866: eval_multiply(n, b);
23866: eval_subtract(result, a, n);
23866: }
23866: template <class T, class A>
23866: inline constexpr typename enable_if<is_arithmetic<A>, void>::type eval_fmod(T& result, const T& x, const A& a)
23866: {
23866: typedef typename boost::multiprecision::detail::canonical<A, T>::type canonical_type;
23866: typedef typename mpl::if_<is_same<A, canonical_type>, T, canonical_type>::type cast_type;
23866: cast_type c;
23866: c = a;
23866: eval_fmod(result, x, c);
23866: }
23866:
23866: template <class T, class A>
23866: inline constexpr typename enable_if<is_arithmetic<A>, void>::type eval_fmod(T& result, const A& x, const T& a)
23866: {
23866: typedef typename boost::multiprecision::detail::canonical<A, T>::type canonical_type;
23866: typedef typename mpl::if_<is_same<A, canonical_type>, T, canonical_type>::type cast_type;
23866: cast_type c;
23866: c = x;
23866: eval_fmod(result, c, a);
23866: }
23866:
23866: template <class T>
23866: constexpr void eval_round(T& result, const T& a);
23866:
23866: template <class T>
23866: inline constexpr void eval_remquo(T& result, const T& a, const T& b, int* pi)
23866: {
23866: static_assert(number_category<T>::value == number_kind_floating_point, "The remquo function is only valid for floating point types.");
23866: if ((&result == &a) || (&result == &b))
23866: {
23866: T temp;
23866: eval_remquo(temp, a, b, pi);
23866: result = temp;
23866: return;
23866: }
23866: T n;
23866: eval_divide(result, a, b);
23866: eval_round(n, result);
23866: eval_convert_to(pi, n);
23866: eval_multiply(n, b);
23866: eval_subtract(result, a, n);
23866: }
23866: template <class T, class A>
23866: inline constexpr typename enable_if<is_arithmetic<A>, void>::type eval_remquo(T& result, const T& x, const A& a, int* pi)
23866: {
23866: typedef typename boost::multiprecision::detail::canonical<A, T>::type canonical_type;
23866: typedef typename mpl::if_<is_same<A, canonical_type>, T, canonical_type>::type cast_type;
23866: cast_type c = cast_type();
23866: c = a;
23866: eval_remquo(result, x, c, pi);
23866: }
23866: template <class T, class A>
23866: inline constexpr typename enable_if<is_arithmetic<A>, void>::type eval_remquo(T& result, const A& x, const T& a, int* pi)
23866: {
23866: typedef typename boost::multiprecision::detail::canonical<A, T>::type canonical_type;
23866: typedef typename mpl::if_<is_same<A, canonical_type>, T, canonical_type>::type cast_type;
23866: cast_type c = cast_type();
23866: c = x;
23866: eval_remquo(result, c, a, pi);
23866: }
23866: template <class T, class U, class V>
23866: inline constexpr void eval_remainder(T& result, const U& a, const V& b)
23866: {
23866: int i(0);
23866: eval_remquo(result, a, b, &i);
23866: }
23866:
23866: template <class B>
23866: constexpr bool eval_gt(const B& a, const B& b);
23866: template <class T, class U>
23866: constexpr bool eval_gt(const T& a, const U& b);
23866: template <class B>
23866: constexpr bool eval_lt(const B& a, const B& b);
23866: template <class T, class U>
23866: constexpr bool eval_lt(const T& a, const U& b);
23866:
23866: template <class T>
23866: inline constexpr void eval_fdim(T& result, const T& a, const T& b)
23866: {
23866: typedef typename boost::multiprecision::detail::canonical<unsigned, T>::type ui_type;
23866: const ui_type zero = 0u;
23866: switch (eval_fpclassify(b))
23866: {
23866: case 0:
23866: case 1:
23866: result = zero;
23866: return;
23866: }
23866: switch (eval_fpclassify(a))
23866: {
23866: case 0:
23866: result = zero;
23866: return;
23866: case 1:
23866: result = a;
23866: return;
23866: }
23866: if (eval_gt(a, b))
23866: {
23866: eval_subtract(result, a, b);
23866: }
23866: else
23866: result = zero;
23866: }
23866:
23866: template <class T, class A>
23866: inline constexpr typename boost::enable_if_c<boost::is_arithmetic<A>::value>::type eval_fdim(T& result, const T& a, const A& b)
23866: {
23866: typedef typename boost::multiprecision::detail::canonical<unsigned, T>::type ui_type;
23866: typedef typename boost::multiprecision::detail::canonical<A, T>::type arithmetic_type;
23866: const ui_type zero = 0u;
23866: arithmetic_type canonical_b = b;
23866: switch ((::boost::math::fpclassify)(b))
23866: {
23866: case 0:
23866: case 1:
23866: result = zero;
23866: return;
23866: }
23866: switch (eval_fpclassify(a))
23866: {
23866: case 0:
23866: result = zero;
23866: return;
23866: case 1:
23866: result = a;
23866: return;
23866: }
23866: if (eval_gt(a, canonical_b))
23866: {
23866: eval_subtract(result, a, canonical_b);
23866: }
23866: else
23866: result = zero;
23866: }
23866:
23866: template <class T, class A>
23866: inline constexpr typename boost::enable_if_c<boost::is_arithmetic<A>::value>::type eval_fdim(T& result, const A& a, const T& b)
23866: {
23866: typedef typename boost::multiprecision::detail::canonical<unsigned, T>::type ui_type;
23866: typedef typename boost::multiprecision::detail::canonical<A, T>::type arithmetic_type;
23866: const ui_type zero = 0u;
23866: arithmetic_type canonical_a = a;
23866: switch (eval_fpclassify(b))
23866: {
23866: case 0:
23866: case 1:
23866: result = zero;
23866: return;
23866: }
23866: switch ((::boost::math::fpclassify)(a))
23866: {
23866: case 0:
23866: result = zero;
23866: return;
23866: case 1:
23866: result = std::numeric_limits<number<T> >::infinity().backend();
23866: return;
23866: }
23866: if (eval_gt(canonical_a, b))
23866: {
23866: eval_subtract(result, canonical_a, b);
23866: }
23866: else
23866: result = zero;
23866: }
23866:
23866: template <class T>
23866: inline constexpr void eval_trunc(T& result, const T& a)
23866: {
23866: static_assert(number_category<T>::value == number_kind_floating_point, "The trunc function is only valid for floating point types.");
23866: switch (eval_fpclassify(a))
23866: {
23866: case 0:
23866: (*__errno_location ()) = 33;
23866:
23866: case 2:
23866: case 1:
23866: result = a;
23866: return;
23866: }
23866: if (eval_get_sign(a) < 0)
23866: eval_ceil(result, a);
23866: else
23866: eval_floor(result, a);
23866: }
23866:
23866: template <class T>
23866: inline constexpr void eval_modf(T& result, T const& arg, T* pipart)
23866: {
23866: typedef typename boost::multiprecision::detail::canonical<unsigned, T>::type ui_type;
23866: int c = eval_fpclassify(arg);
23866: if (c == (int)0)
23866: {
23866: if (pipart)
23866: *pipart = arg;
23866: result = arg;
23866: return;
23866: }
23866: else if (c == (int)1)
23866: {
23866: if (pipart)
23866: *pipart = arg;
23866: result = ui_type(0u);
23866: return;
23866: }
23866: if (pipart)
23866: {
23866: eval_trunc(*pipart, arg);
23866: eval_subtract(result, arg, *pipart);
23866: }
23866: else
23866: {
23866: T ipart;
23866: eval_trunc(ipart, arg);
23866: eval_subtract(result, arg, ipart);
23866: }
23866: }
23866:
23866: template <class T>
23866: inline constexpr void eval_round(T& result, const T& a)
23866: {
23866: static_assert(number_category<T>::value == number_kind_floating_point, "The round function is only valid for floating point types.");
23866: typedef typename boost::multiprecision::detail::canonical<float, T>::type fp_type;
23866: int c = eval_fpclassify(a);
23866: if (c == (int)0)
23866: {
23866: result = a;
23866: (*__errno_location ()) = 33;
23866: return;
23866: }
23866: if ((c == 2) || (c == (int)1))
23866: {
23866: result = a;
23866: }
23866: else if (eval_get_sign(a) < 0)
23866: {
23866: eval_subtract(result, a, fp_type(0.5f));
23866: eval_ceil(result, result);
23866: }
23866: else
23866: {
23866: eval_add(result, a, fp_type(0.5f));
23866: eval_floor(result, result);
23866: }
23866: }
23866:
23866: template <class B>
23866: constexpr void eval_lcm(B& result, const B& a, const B& b);
23866: template <class B>
23866: constexpr void eval_gcd(B& result, const B& a, const B& b);
23866:
23866: template <class T, class Arithmetic>
23866: inline constexpr typename enable_if<is_integral<Arithmetic> >::type eval_gcd(T& result, const T& a, const Arithmetic& b)
23866: {
23866: typedef typename boost::multiprecision::detail::canonical<Arithmetic, T>::type si_type;
23866: using default_ops::eval_gcd;
23866: T t;
23866: t = static_cast<si_type>(b);
23866: eval_gcd(result, a, t);
23866: }
23866: template <class T, class Arithmetic>
23866: inline constexpr typename enable_if<is_integral<Arithmetic> >::type eval_gcd(T& result, const Arithmetic& a, const T& b)
23866: {
23866: eval_gcd(result, b, a);
23866: }
23866: template <class T, class Arithmetic>
23866: inline constexpr typename enable_if<is_integral<Arithmetic> >::type eval_lcm(T& result, const T& a, const Arithmetic& b)
23866: {
23866: typedef typename boost::multiprecision::detail::canonical<Arithmetic, T>::type si_type;
23866: using default_ops::eval_lcm;
23866: T t;
23866: t = static_cast<si_type>(b);
23866: eval_lcm(result, a, t);
23866: }
23866: template <class T, class Arithmetic>
23866: inline constexpr typename enable_if<is_integral<Arithmetic> >::type eval_lcm(T& result, const Arithmetic& a, const T& b)
23866: {
23866: eval_lcm(result, b, a);
23866: }
23866:
23866: template <class T>
23866: inline constexpr unsigned eval_lsb(const T& val)
23866: {
23866: typedef typename boost::multiprecision::detail::canonical<unsigned, T>::type ui_type;
23866: int c = eval_get_sign(val);
23866: if (c == 0)
23866: {
23866: ::boost::throw_exception(std::range_error("No bits were set in the operand."), ::boost::source_location("/usr/include/boost/multiprecision/detail/default_ops.hpp", 1427, __PRETTY_FUNCTION__));
23866: }
23866: if (c < 0)
23866: {
23866: ::boost::throw_exception(std::range_error("Testing individual bits in negative values is not supported - results are undefined."), ::boost::source_location("/usr/include/boost/multiprecision/detail/default_ops.hpp", 1431, __PRETTY_FUNCTION__));
23866: }
23866: unsigned result = 0;
23866: T mask, t;
23866: mask = ui_type(1);
23866: do
23866: {
23866: eval_bitwise_and(t, mask, val);
23866: ++result;
23866: eval_left_shift(mask, 1);
23866: } while (eval_is_zero(t));
23866:
23866: return --result;
23866: }
23866:
23866: template <class T>
23866: inline constexpr int eval_msb(const T& val)
23866: {
23866: int c = eval_get_sign(val);
23866: if (c == 0)
23866: {
23866: ::boost::throw_exception(std::range_error("No bits were set in the operand."), ::boost::source_location("/usr/include/boost/multiprecision/detail/default_ops.hpp", 1452, __PRETTY_FUNCTION__));
23866: }
23866: if (c < 0)
23866: {
23866: ::boost::throw_exception(std::range_error("Testing individual bits in negative values is not supported - results are undefined."), ::boost::source_location("/usr/include/boost/multiprecision/detail/default_ops.hpp", 1456, __PRETTY_FUNCTION__));
23866: }
23866: # 1466 "/usr/include/boost/multiprecision/detail/default_ops.hpp" 3 4
23866: unsigned result = 0;
23866: T t(val);
23866: while (!eval_is_zero(t))
23866: {
23866: eval_right_shift(t, 1);
23866: ++result;
23866: }
23866: return --result;
23866: }
23866:
23866: template <class T>
23866: inline constexpr bool eval_bit_test(const T& val, unsigned index)
23866: {
23866: typedef typename boost::multiprecision::detail::canonical<unsigned, T>::type ui_type;
23866: T mask, t;
23866: mask = ui_type(1);
23866: eval_left_shift(mask, index);
23866: eval_bitwise_and(t, mask, val);
23866: return !eval_is_zero(t);
23866: }
23866:
23866: template <class T>
23866: inline constexpr void eval_bit_set(T& val, unsigned index)
23866: {
23866: typedef typename boost::multiprecision::detail::canonical<unsigned, T>::type ui_type;
23866: T mask;
23866: mask = ui_type(1);
23866: eval_left_shift(mask, index);
23866: eval_bitwise_or(val, mask);
23866: }
23866:
23866: template <class T>
23866: inline constexpr void eval_bit_flip(T& val, unsigned index)
23866: {
23866: typedef typename boost::multiprecision::detail::canonical<unsigned, T>::type ui_type;
23866: T mask;
23866: mask = ui_type(1);
23866: eval_left_shift(mask, index);
23866: eval_bitwise_xor(val, mask);
23866: }
23866:
23866: template <class T>
23866: inline constexpr void eval_bit_unset(T& val, unsigned index)
23866: {
23866: typedef typename boost::multiprecision::detail::canonical<unsigned, T>::type ui_type;
23866: T mask, t;
23866: mask = ui_type(1);
23866: eval_left_shift(mask, index);
23866: eval_bitwise_and(t, mask, val);
23866: if (!eval_is_zero(t))
23866: eval_bitwise_xor(val, mask);
23866: }
23866:
23866: template <class B>
23866: void constexpr eval_integer_sqrt(B& s, B& r, const B& x)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: typedef typename boost::multiprecision::detail::canonical<unsigned char, B>::type ui_type;
23866:
23866: s = ui_type(0u);
23866: if (eval_get_sign(x) == 0)
23866: {
23866: r = ui_type(0u);
23866: return;
23866: }
23866: int g = eval_msb(x);
23866: if (g <= 1)
23866: {
23866: s = ui_type(1);
23866: eval_subtract(r, x, s);
23866: return;
23866: }
23866:
23866: B t;
23866: r = x;
23866: g /= 2;
23866: int org_g = g;
23866: eval_bit_set(s, g);
23866: eval_bit_set(t, 2 * g);
23866: eval_subtract(r, x, t);
23866: --g;
23866: if (eval_get_sign(r) == 0)
23866: return;
23866: int msbr = eval_msb(r);
23866: do
23866: {
23866: if (msbr >= org_g + g + 1)
23866: {
23866: t = s;
23866: eval_left_shift(t, g + 1);
23866: eval_bit_set(t, 2 * g);
23866: if (t.compare(r) <= 0)
23866: {
23866: (static_cast <bool> (g >= 0) ? void (0) : __assert_fail ("g >= 0", "/usr/include/boost/multiprecision/detail/default_ops.hpp", 1565, __extension__ __PRETTY_FUNCTION__));
23866: eval_bit_set(s, g);
23866: eval_subtract(r, t);
23866: if (eval_get_sign(r) == 0)
23866: return;
23866: msbr = eval_msb(r);
23866: }
23866: }
23866: --g;
23866: } while (g >= 0);
23866: }
23866:
23866: template <class B>
23866: inline constexpr void eval_conj(B& result, const B& val)
23866: {
23866: result = val;
23866: }
23866: template <class B>
23866: inline constexpr void eval_proj(B& result, const B& val)
23866: {
23866: result = val;
23866: }
23866:
23866:
23866:
23866:
23866: template <class T>
23866: typename enable_if_c<sizeof(T) == 0>::type eval_floor();
23866: template <class T>
23866: typename enable_if_c<sizeof(T) == 0>::type eval_ceil();
23866: template <class T>
23866: typename enable_if_c<sizeof(T) == 0>::type eval_trunc();
23866: template <class T>
23866: typename enable_if_c<sizeof(T) == 0>::type eval_sqrt();
23866: template <class T>
23866: typename enable_if_c<sizeof(T) == 0>::type eval_ldexp();
23866: template <class T>
23866: typename enable_if_c<sizeof(T) == 0>::type eval_frexp();
23866:
23866: template <class T>
23866: typename enable_if_c<sizeof(T) == 0>::type eval_asinh();
23866: template <class T>
23866: typename enable_if_c<sizeof(T) == 0>::type eval_acosh();
23866: template <class T>
23866: typename enable_if_c<sizeof(T) == 0>::type eval_atanh();
23866:
23866:
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr typename B::exponent_type eval_ilogb(const B& val)
23866: {
23866: static_assert(!std::numeric_limits<number<B> >::is_specialized || (std::numeric_limits<number<B> >::radix == 2), "The default implementation of ilogb requires a base 2 number type");
23866: typename B::exponent_type e(0);
23866: switch (eval_fpclassify(val))
23866: {
23866: case 0:
23866:
23866: return 2147483647 > 0 ? (std::numeric_limits<typename B::exponent_type>::max)() : (std::numeric_limits<typename B::exponent_type>::min)();
23866:
23866:
23866:
23866: case 1:
23866: return (std::numeric_limits<typename B::exponent_type>::max)();
23866: case 2:
23866: return (std::numeric_limits<typename B::exponent_type>::min)();
23866: }
23866: B result;
23866: eval_frexp(result, val, &e);
23866: return e - 1;
23866: }
23866:
23866: template <class T>
23866: constexpr int eval_signbit(const T& val);
23866:
23866: template <class B>
23866: inline constexpr void eval_logb(B& result, const B& val)
23866: {
23866: switch (eval_fpclassify(val))
23866: {
23866: case 0:
23866: result = val;
23866: (*__errno_location ()) = 33;
23866: return;
23866: case 2:
23866: result = std::numeric_limits<number<B> >::infinity().backend();
23866: result.negate();
23866: (*__errno_location ()) = 34;
23866: return;
23866: case 1:
23866: result = val;
23866: if (eval_signbit(val))
23866: result.negate();
23866: return;
23866: }
23866: typedef typename boost::mpl::if_c<boost::is_same<boost::intmax_t, long>::value, boost::long_long_type, boost::intmax_t>::type max_t;
23866: result = static_cast<max_t>(eval_ilogb(val));
23866: }
23866: template <class B, class A>
23866: inline constexpr void eval_scalbn(B& result, const B& val, A e)
23866: {
23866: static_assert(!std::numeric_limits<number<B> >::is_specialized || (std::numeric_limits<number<B> >::radix == 2), "The default implementation of scalbn requires a base 2 number type");
23866: eval_ldexp(result, val, static_cast<typename B::exponent_type>(e));
23866: }
23866: template <class B, class A>
23866: inline constexpr void eval_scalbln(B& result, const B& val, A e)
23866: {
23866: eval_scalbn(result, val, e);
23866: }
23866:
23866: template <class T>
23866: inline constexpr bool is_arg_nan(const T& val, mpl::true_ const&, const mpl::false_&)
23866: {
23866: return eval_fpclassify(val) == 0;
23866: }
23866: template <class T>
23866: inline constexpr bool is_arg_nan(const T& val, mpl::false_ const&, const mpl::true_&)
23866: {
23866: return (boost::math::isnan)(val);
23866: }
23866: template <class T>
23866: inline constexpr bool is_arg_nan(const T&, mpl::false_ const&, const mpl::false_&)
23866: {
23866: return false;
23866: }
23866:
23866: template <class T>
23866: inline constexpr bool is_arg_nan(const T& val)
23866: {
23866: return is_arg_nan(val, mpl::bool_<boost::multiprecision::detail::is_backend<T>::value>(), is_floating_point<T>());
23866: }
23866:
23866: template <class T, class U, class V>
23866: inline constexpr void eval_fmax(T& result, const U& a, const V& b)
23866: {
23866: if (is_arg_nan(a))
23866: result = number<T>::canonical_value(b);
23866: else if (is_arg_nan(b))
23866: result = number<T>::canonical_value(a);
23866: else if (eval_lt(number<T>::canonical_value(a), number<T>::canonical_value(b)))
23866: result = number<T>::canonical_value(b);
23866: else
23866: result = number<T>::canonical_value(a);
23866: }
23866: template <class T, class U, class V>
23866: inline constexpr void eval_fmin(T& result, const U& a, const V& b)
23866: {
23866: if (is_arg_nan(a))
23866: result = number<T>::canonical_value(b);
23866: else if (is_arg_nan(b))
23866: result = number<T>::canonical_value(a);
23866: else if (eval_lt(number<T>::canonical_value(a), number<T>::canonical_value(b)))
23866: result = number<T>::canonical_value(a);
23866: else
23866: result = number<T>::canonical_value(b);
23866: }
23866:
23866: template <class R, class T, class U>
23866: inline constexpr void eval_hypot(R& result, const T& a, const U& b)
23866: {
23866:
23866:
23866:
23866: R x, y;
23866: x = number<R>::canonical_value(a);
23866: y = number<R>::canonical_value(b);
23866: if (eval_get_sign(x) < 0)
23866: x.negate();
23866: if (eval_get_sign(y) < 0)
23866: y.negate();
23866:
23866:
23866:
23866: int c1 = eval_fpclassify(x);
23866: int c2 = eval_fpclassify(y);
23866:
23866: if (c1 == 2)
23866: {
23866: result = y;
23866: return;
23866: }
23866: if (c2 == 2)
23866: {
23866: result = x;
23866: return;
23866: }
23866: if (c1 == 1)
23866: {
23866: result = x;
23866: return;
23866: }
23866: if ((c2 == 1) || (c2 == 0))
23866: {
23866: result = y;
23866: return;
23866: }
23866: if (c1 == 0)
23866: {
23866: result = x;
23866: return;
23866: }
23866:
23866: if (eval_gt(y, x))
23866: x.swap(y);
23866:
23866: eval_multiply(result, x, std::numeric_limits<number<R> >::epsilon().backend());
23866:
23866: if (eval_gt(result, y))
23866: {
23866: result = x;
23866: return;
23866: }
23866:
23866: R rat;
23866: eval_divide(rat, y, x);
23866: eval_multiply(result, rat, rat);
23866: eval_increment(result);
23866: eval_sqrt(rat, result);
23866: eval_multiply(result, rat, x);
23866: }
23866:
23866: template <class R, class T>
23866: inline constexpr void eval_nearbyint(R& result, const T& a)
23866: {
23866: eval_round(result, a);
23866: }
23866: template <class R, class T>
23866: inline constexpr void eval_rint(R& result, const T& a)
23866: {
23866: eval_nearbyint(result, a);
23866: }
23866:
23866: template <class T>
23866: inline constexpr int eval_signbit(const T& val)
23866: {
23866: return eval_get_sign(val) < 0 ? 1 : 0;
23866: }
23866:
23866:
23866:
23866:
23866: template <class To, class From>
23866: inline constexpr void eval_real(To& to, const From& from)
23866: {
23866: to = from;
23866: }
23866: template <class To, class From>
23866: inline constexpr void eval_imag(To& to, const From&)
23866: {
23866: typedef typename mpl::front<typename To::unsigned_types>::type ui_type;
23866: to = ui_type(0);
23866: }
23866:
23866: }
23866: namespace default_ops_adl {
23866:
23866: template <class To, class From>
23866: inline constexpr void eval_set_real_imp(To& to, const From& from)
23866: {
23866: typedef typename component_type<number<To> >::type to_component_type;
23866: typename to_component_type::backend_type to_component;
23866: to_component = from;
23866: eval_set_real(to, to_component);
23866: }
23866: template <class To, class From>
23866: inline constexpr void eval_set_imag_imp(To& to, const From& from)
23866: {
23866: typedef typename component_type<number<To> >::type to_component_type;
23866: typename to_component_type::backend_type to_component;
23866: to_component = from;
23866: eval_set_imag(to, to_component);
23866: }
23866:
23866: }
23866: namespace default_ops {
23866:
23866: template <class To, class From>
23866: inline constexpr typename enable_if_c<number_category<To>::value == number_kind_complex>::type eval_set_real(To& to, const From& from)
23866: {
23866: default_ops_adl::eval_set_real_imp(to, from);
23866: }
23866: template <class To, class From>
23866: inline constexpr typename disable_if_c<number_category<To>::value == number_kind_complex>::type eval_set_real(To& to, const From& from)
23866: {
23866: to = from;
23866: }
23866:
23866: template <class To, class From>
23866: inline constexpr void eval_set_imag(To& to, const From& from)
23866: {
23866: default_ops_adl::eval_set_imag_imp(to, from);
23866: }
23866:
23866: template <class T>
23866: inline constexpr void eval_set_real(T& to, const T& from)
23866: {
23866: to = from;
23866: }
23866: template <class T>
23866: void constexpr eval_set_imag(T&, const T&)
23866: {
23866: static_assert(sizeof(T) == 0x7fffffff, "eval_set_imag needs to be specialised for each specific backend");
23866: }
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/multiprecision/detail/functions/constants.hpp" 1 3 4
23866: # 9 "/usr/include/boost/multiprecision/detail/functions/constants.hpp" 3 4
23866: template <class T>
23866: void calc_log2(T& num, unsigned digits)
23866: {
23866: typedef typename boost::multiprecision::detail::canonical<boost::uint32_t, T>::type ui_type;
23866: typedef typename mpl::front<typename T::signed_types>::type si_type;
23866:
23866:
23866:
23866:
23866: static const char* string_val = "0."
23866: "6931471805599453094172321214581765680755001343602552541206800094933936219696947156058633269964186875"
23866: "4200148102057068573368552023575813055703267075163507596193072757082837143519030703862389167347112335"
23866: "0115364497955239120475172681574932065155524734139525882950453007095326366642654104239157814952043740"
23866: "4303855008019441706416715186447128399681717845469570262716310645461502572074024816377733896385506952"
23866: "6066834113727387372292895649354702576265209885969320196505855476470330679365443254763274495125040606"
23866: "9438147104689946506220167720424524529612687946546193165174681392672504103802546259656869144192871608"
23866: "2938031727143677826548775664850856740776484514644399404614226031930967354025744460703080960850474866"
23866: "3852313818167675143866747664789088143714198549423151997354880375165861275352916610007105355824987941"
23866: "4729509293113897155998205654392871700072180857610252368892132449713893203784393530887748259701715591"
23866: "0708823683627589842589185353024363421436706118923678919237231467232172053401649256872747782344535347"
23866: "6481149418642386776774406069562657379600867076257199184734022651462837904883062033061144630073719489";
23866:
23866:
23866:
23866: if (digits < 3640)
23866: {
23866: num = string_val;
23866: return;
23866: }
23866: # 50 "/usr/include/boost/multiprecision/detail/functions/constants.hpp" 3 4
23866: num = static_cast<ui_type>(1180509120uL);
23866: T denom, next_term, temp;
23866: denom = static_cast<ui_type>(1277337600uL);
23866: next_term = static_cast<ui_type>(120uL);
23866: si_type sign = -1;
23866:
23866: ui_type limit = digits / 3 + 1;
23866:
23866: for (ui_type n = 6; n < limit; ++n)
23866: {
23866: temp = static_cast<ui_type>(2);
23866: eval_multiply(temp, ui_type(2 * n));
23866: eval_multiply(temp, ui_type(2 * n + 1));
23866: eval_multiply(num, temp);
23866: eval_multiply(denom, temp);
23866: sign = -sign;
23866: eval_multiply(next_term, n);
23866: eval_multiply(temp, next_term, next_term);
23866: if (sign < 0)
23866: temp.negate();
23866: eval_add(num, temp);
23866: }
23866: eval_multiply(denom, ui_type(4));
23866: eval_multiply(num, ui_type(3));
23866: ;
23866: ;
23866: eval_divide(num, denom);
23866: ;
23866: }
23866:
23866: template <class T>
23866: void calc_e(T& result, unsigned digits)
23866: {
23866: typedef typename mpl::front<typename T::unsigned_types>::type ui_type;
23866:
23866:
23866:
23866: const char* string_val = "2."
23866: "7182818284590452353602874713526624977572470936999595749669676277240766303535475945713821785251664274"
23866: "2746639193200305992181741359662904357290033429526059563073813232862794349076323382988075319525101901"
23866: "1573834187930702154089149934884167509244761460668082264800168477411853742345442437107539077744992069"
23866: "5517027618386062613313845830007520449338265602976067371132007093287091274437470472306969772093101416"
23866: "9283681902551510865746377211125238978442505695369677078544996996794686445490598793163688923009879312"
23866: "7736178215424999229576351482208269895193668033182528869398496465105820939239829488793320362509443117"
23866: "3012381970684161403970198376793206832823764648042953118023287825098194558153017567173613320698112509"
23866: "9618188159304169035159888851934580727386673858942287922849989208680582574927961048419844436346324496"
23866: "8487560233624827041978623209002160990235304369941849146314093431738143640546253152096183690888707016"
23866: "7683964243781405927145635490613031072085103837505101157477041718986106873969655212671546889570350354"
23866: "0212340784981933432106817012100562788023519303322474501585390473041995777709350366041699732972508869";
23866:
23866:
23866:
23866: if (digits < 3640)
23866: {
23866: result = string_val;
23866: return;
23866: }
23866:
23866: T lim;
23866: lim = ui_type(1);
23866: eval_ldexp(lim, lim, digits);
23866:
23866:
23866:
23866:
23866: result = ui_type(2);
23866: T denom;
23866: denom = ui_type(1);
23866: ui_type i = 2;
23866: do
23866: {
23866: eval_multiply(denom, i);
23866: eval_multiply(result, i);
23866: eval_add(result, ui_type(1));
23866: ++i;
23866: } while (denom.compare(lim) <= 0);
23866: eval_divide(result, denom);
23866: }
23866:
23866: template <class T>
23866: void calc_pi(T& result, unsigned digits)
23866: {
23866: typedef typename mpl::front<typename T::unsigned_types>::type ui_type;
23866: typedef typename mpl::front<typename T::float_types>::type real_type;
23866:
23866:
23866:
23866: const char* string_val = "3."
23866: "1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679"
23866: "8214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196"
23866: "4428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273"
23866: "7245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094"
23866: "3305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912"
23866: "9833673362440656643086021394946395224737190702179860943702770539217176293176752384674818467669405132"
23866: "0005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235"
23866: "4201995611212902196086403441815981362977477130996051870721134999999837297804995105973173281609631859"
23866: "5024459455346908302642522308253344685035261931188171010003137838752886587533208381420617177669147303"
23866: "5982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989"
23866: "3809525720106548586327886593615338182796823030195203530185296899577362259941389124972177528347913152";
23866:
23866:
23866:
23866: if (digits < 3640)
23866: {
23866: result = string_val;
23866: return;
23866: }
23866:
23866: T a;
23866: a = ui_type(1);
23866: T b;
23866: T A(a);
23866: T B;
23866: B = real_type(0.5f);
23866: T D;
23866: D = real_type(0.25f);
23866:
23866: T lim;
23866: lim = ui_type(1);
23866: eval_ldexp(lim, lim, -(int)digits);
23866: # 190 "/usr/include/boost/multiprecision/detail/functions/constants.hpp" 3 4
23866: unsigned k = 1;
23866:
23866: do
23866: {
23866: eval_add(result, A, B);
23866: eval_ldexp(result, result, -2);
23866: eval_sqrt(b, B);
23866: eval_add(a, b);
23866: eval_ldexp(a, a, -1);
23866: eval_multiply(A, a, a);
23866: eval_subtract(B, A, result);
23866: eval_ldexp(B, B, 1);
23866: eval_subtract(result, A, B);
23866: bool neg = eval_get_sign(result) < 0;
23866: if (neg)
23866: result.negate();
23866: if (result.compare(lim) <= 0)
23866: break;
23866: if (neg)
23866: result.negate();
23866: eval_ldexp(result, result, k - 1);
23866: eval_subtract(D, result);
23866: ++k;
23866: eval_ldexp(lim, lim, 1);
23866: } while (true);
23866:
23866: eval_divide(result, B, D);
23866: }
23866:
23866: template <class T, const T& (*F)(void)>
23866: struct constant_initializer
23866: {
23866: static void do_nothing()
23866: {
23866: init.do_nothing();
23866: }
23866:
23866: private:
23866: struct initializer
23866: {
23866: initializer()
23866: {
23866: F();
23866: }
23866: void do_nothing() const {}
23866: };
23866: static const initializer init;
23866: };
23866:
23866: template <class T, const T& (*F)(void)>
23866: typename constant_initializer<T, F>::initializer const constant_initializer<T, F>::init;
23866:
23866: template <class T>
23866: const T& get_constant_ln2()
23866: {
23866: static thread_local T result;
23866: static thread_local long digits = 0;
23866: # 255 "/usr/include/boost/multiprecision/detail/functions/constants.hpp" 3 4
23866: if ((digits != boost::multiprecision::detail::digits2<number<T> >::value()))
23866: {
23866:
23866: calc_log2(result, boost::multiprecision::detail::digits2<number<T, et_on> >::value());
23866: digits = boost::multiprecision::detail::digits2<number<T> >::value();
23866: }
23866:
23866: return result;
23866: }
23866:
23866: template <class T>
23866: const T& get_constant_e()
23866: {
23866: static thread_local T result;
23866: static thread_local long digits = 0;
23866: # 278 "/usr/include/boost/multiprecision/detail/functions/constants.hpp" 3 4
23866: if ((digits != boost::multiprecision::detail::digits2<number<T> >::value()))
23866: {
23866:
23866: calc_e(result, boost::multiprecision::detail::digits2<number<T, et_on> >::value());
23866: digits = boost::multiprecision::detail::digits2<number<T> >::value();
23866: }
23866:
23866: return result;
23866: }
23866:
23866: template <class T>
23866: const T& get_constant_pi()
23866: {
23866: static thread_local T result;
23866: static thread_local long digits = 0;
23866: # 301 "/usr/include/boost/multiprecision/detail/functions/constants.hpp" 3 4
23866: if ((digits != boost::multiprecision::detail::digits2<number<T> >::value()))
23866: {
23866:
23866: calc_pi(result, boost::multiprecision::detail::digits2<number<T, et_on> >::value());
23866: digits = boost::multiprecision::detail::digits2<number<T> >::value();
23866: }
23866:
23866: return result;
23866: }
23866:
23866: template <class T>
23866: const T& get_constant_one_over_epsilon()
23866: {
23866: static thread_local T result;
23866: static thread_local long digits = 0;
23866: # 324 "/usr/include/boost/multiprecision/detail/functions/constants.hpp" 3 4
23866: if ((digits != boost::multiprecision::detail::digits2<number<T> >::value()))
23866: {
23866:
23866: typedef typename mpl::front<typename T::unsigned_types>::type ui_type;
23866: result = static_cast<ui_type>(1u);
23866: eval_divide(result, std::numeric_limits<number<T> >::epsilon().backend());
23866: }
23866:
23866: return result;
23866: }
23866: # 1875 "/usr/include/boost/multiprecision/detail/default_ops.hpp" 2 3 4
23866: # 1 "/usr/include/boost/multiprecision/detail/functions/pow.hpp" 1 3 4
23866: # 20 "/usr/include/boost/multiprecision/detail/functions/pow.hpp" 3 4
23866: namespace detail {
23866:
23866: template <typename T, typename U>
23866: inline void pow_imp(T& result, const T& t, const U& p, const mpl::false_&)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: typedef typename boost::multiprecision::detail::canonical<U, T>::type int_type;
23866:
23866: if (&result == &t)
23866: {
23866: T temp;
23866: pow_imp(temp, t, p, mpl::false_());
23866: result = temp;
23866: return;
23866: }
23866:
23866:
23866: if (U(p % U(2)) != U(0))
23866: {
23866: result = t;
23866: }
23866: else
23866: result = int_type(1);
23866:
23866: U p2(p);
23866:
23866:
23866: T x(t);
23866:
23866: while (U(p2 /= 2) != U(0))
23866: {
23866:
23866: eval_multiply(x, x);
23866:
23866: const bool has_binary_power = (U(p2 % U(2)) != U(0));
23866:
23866: if (has_binary_power)
23866: {
23866:
23866: eval_multiply(result, x);
23866: }
23866: }
23866: }
23866:
23866: template <typename T, typename U>
23866: inline void pow_imp(T& result, const T& t, const U& p, const mpl::true_&)
23866: {
23866:
23866: typedef typename boost::multiprecision::detail::canonical<U, T>::type int_type;
23866: typedef typename make_unsigned<U>::type ui_type;
23866:
23866: if (p < 0)
23866: {
23866: T temp;
23866: temp = static_cast<int_type>(1);
23866: T denom;
23866: pow_imp(denom, t, static_cast<ui_type>(-p), mpl::false_());
23866: eval_divide(result, temp, denom);
23866: return;
23866: }
23866: pow_imp(result, t, static_cast<ui_type>(p), mpl::false_());
23866: }
23866:
23866: }
23866:
23866: template <typename T, typename U>
23866: inline typename enable_if_c<is_integral<U>::value>::type eval_pow(T& result, const T& t, const U& p)
23866: {
23866: detail::pow_imp(result, t, p, boost::is_signed<U>());
23866: }
23866:
23866: template <class T>
23866: void hyp0F0(T& H0F0, const T& x)
23866: {
23866:
23866:
23866:
23866:
23866: typedef typename mpl::front<typename T::unsigned_types>::type ui_type;
23866:
23866: (static_cast <bool> (&H0F0 != &x) ? void (0) : __assert_fail ("&H0F0 != &x", "/usr/include/boost/multiprecision/detail/functions/pow.hpp", 105, __extension__ __PRETTY_FUNCTION__));
23866: long tol = boost::multiprecision::detail::digits2<number<T, et_on> >::value();
23866: T t;
23866:
23866: T x_pow_n_div_n_fact(x);
23866:
23866: eval_add(H0F0, x_pow_n_div_n_fact, ui_type(1));
23866:
23866: T lim;
23866: eval_ldexp(lim, H0F0, 1 - tol);
23866: if (eval_get_sign(lim) < 0)
23866: lim.negate();
23866:
23866: ui_type n;
23866:
23866: const unsigned series_limit =
23866: boost::multiprecision::detail::digits2<number<T, et_on> >::value() < 100
23866: ? 100
23866: : boost::multiprecision::detail::digits2<number<T, et_on> >::value();
23866:
23866: for (n = 2; n < series_limit; ++n)
23866: {
23866: eval_multiply(x_pow_n_div_n_fact, x);
23866: eval_divide(x_pow_n_div_n_fact, n);
23866: eval_add(H0F0, x_pow_n_div_n_fact);
23866: bool neg = eval_get_sign(x_pow_n_div_n_fact) < 0;
23866: if (neg)
23866: x_pow_n_div_n_fact.negate();
23866: if (lim.compare(x_pow_n_div_n_fact) > 0)
23866: break;
23866: if (neg)
23866: x_pow_n_div_n_fact.negate();
23866: }
23866: if (n >= series_limit)
23866: ::boost::throw_exception(std::runtime_error("H0F0 failed to converge"), ::boost::source_location("/usr/include/boost/multiprecision/detail/functions/pow.hpp", 139, __PRETTY_FUNCTION__));
23866: }
23866:
23866: template <class T>
23866: void hyp1F0(T& H1F0, const T& a, const T& x)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: typedef typename boost::multiprecision::detail::canonical<int, T>::type si_type;
23866:
23866: (static_cast <bool> (&H1F0 != &x) ? void (0) : __assert_fail ("&H1F0 != &x", "/usr/include/boost/multiprecision/detail/functions/pow.hpp", 152, __extension__ __PRETTY_FUNCTION__));
23866: (static_cast <bool> (&H1F0 != &a) ? void (0) : __assert_fail ("&H1F0 != &a", "/usr/include/boost/multiprecision/detail/functions/pow.hpp", 153, __extension__ __PRETTY_FUNCTION__));
23866:
23866: T x_pow_n_div_n_fact(x);
23866: T pochham_a(a);
23866: T ap(a);
23866:
23866: eval_multiply(H1F0, pochham_a, x_pow_n_div_n_fact);
23866: eval_add(H1F0, si_type(1));
23866: T lim;
23866: eval_ldexp(lim, H1F0, 1 - boost::multiprecision::detail::digits2<number<T, et_on> >::value());
23866: if (eval_get_sign(lim) < 0)
23866: lim.negate();
23866:
23866: si_type n;
23866: T term, part;
23866:
23866: const si_type series_limit =
23866: boost::multiprecision::detail::digits2<number<T, et_on> >::value() < 100
23866: ? 100
23866: : boost::multiprecision::detail::digits2<number<T, et_on> >::value();
23866:
23866: for (n = 2; n < series_limit; n++)
23866: {
23866: eval_multiply(x_pow_n_div_n_fact, x);
23866: eval_divide(x_pow_n_div_n_fact, n);
23866: eval_increment(ap);
23866: eval_multiply(pochham_a, ap);
23866: eval_multiply(term, pochham_a, x_pow_n_div_n_fact);
23866: eval_add(H1F0, term);
23866: if (eval_get_sign(term) < 0)
23866: term.negate();
23866: if (lim.compare(term) >= 0)
23866: break;
23866: }
23866: if (n >= series_limit)
23866: ::boost::throw_exception(std::runtime_error("H1F0 failed to converge"), ::boost::source_location("/usr/include/boost/multiprecision/detail/functions/pow.hpp", 188, __PRETTY_FUNCTION__));
23866: }
23866:
23866: template <class T>
23866: void eval_exp(T& result, const T& x)
23866: {
23866: static_assert(number_category<T>::value == number_kind_floating_point, "The exp function is only valid for floating point types.");
23866: if (&x == &result)
23866: {
23866: T temp;
23866: eval_exp(temp, x);
23866: result = temp;
23866: return;
23866: }
23866: typedef typename boost::multiprecision::detail::canonical<unsigned, T>::type ui_type;
23866: typedef typename boost::multiprecision::detail::canonical<int, T>::type si_type;
23866: typedef typename T::exponent_type exp_type;
23866: typedef typename boost::multiprecision::detail::canonical<exp_type, T>::type canonical_exp_type;
23866:
23866:
23866: int type = eval_fpclassify(x);
23866: bool isneg = eval_get_sign(x) < 0;
23866: if (type == (int)0)
23866: {
23866: result = x;
23866: (*__errno_location ()) = 33;
23866: return;
23866: }
23866: else if (type == (int)1)
23866: {
23866: if (isneg)
23866: result = ui_type(0u);
23866: else
23866: result = x;
23866: return;
23866: }
23866: else if (type == (int)2)
23866: {
23866: result = ui_type(1);
23866: return;
23866: }
23866:
23866:
23866: T xx = x;
23866: T exp_series;
23866: if (isneg)
23866: xx.negate();
23866:
23866:
23866: if (xx.compare(si_type(1)) <= 0)
23866: {
23866:
23866:
23866:
23866: T lim;
23866: if (std::numeric_limits<number<T, et_on> >::is_specialized)
23866: lim = std::numeric_limits<number<T, et_on> >::epsilon().backend();
23866: else
23866: {
23866: result = ui_type(1);
23866: eval_ldexp(lim, result, 1 - boost::multiprecision::detail::digits2<number<T, et_on> >::value());
23866: }
23866: unsigned k = 2;
23866: exp_series = xx;
23866: result = si_type(1);
23866: if (isneg)
23866: eval_subtract(result, exp_series);
23866: else
23866: eval_add(result, exp_series);
23866: eval_multiply(exp_series, xx);
23866: eval_divide(exp_series, ui_type(k));
23866: eval_add(result, exp_series);
23866: while (exp_series.compare(lim) > 0)
23866: {
23866: ++k;
23866: eval_multiply(exp_series, xx);
23866: eval_divide(exp_series, ui_type(k));
23866: if (isneg && (k & 1))
23866: eval_subtract(result, exp_series);
23866: else
23866: eval_add(result, exp_series);
23866: }
23866: return;
23866: }
23866:
23866:
23866: typename boost::multiprecision::detail::canonical<boost::intmax_t, T>::type ll;
23866: eval_trunc(exp_series, x);
23866: eval_convert_to(&ll, exp_series);
23866: if (x.compare(ll) == 0)
23866: {
23866: detail::pow_imp(result, get_constant_e<T>(), ll, mpl::true_());
23866: return;
23866: }
23866: else if (exp_series.compare(x) == 0)
23866: {
23866:
23866:
23866:
23866: if (isneg)
23866: result = ui_type(0);
23866: else
23866: result = std::numeric_limits<number<T> >::has_infinity ? std::numeric_limits<number<T> >::infinity().backend() : (std::numeric_limits<number<T> >::max)().backend();
23866: return;
23866: }
23866: # 304 "/usr/include/boost/multiprecision/detail/functions/pow.hpp" 3 4
23866: eval_divide(result, xx, get_constant_ln2<T>());
23866: exp_type n;
23866: eval_convert_to(&n, result);
23866:
23866: if (n == (std::numeric_limits<exp_type>::max)())
23866: {
23866:
23866: if (isneg)
23866: result = ui_type(0);
23866: else
23866: result = std::numeric_limits<number<T> >::has_infinity ? std::numeric_limits<number<T> >::infinity().backend() : (std::numeric_limits<number<T> >::max)().backend();
23866: return;
23866: }
23866:
23866:
23866: const si_type p2 = static_cast<si_type>(si_type(1) << 11);
23866:
23866: eval_multiply(exp_series, get_constant_ln2<T>(), static_cast<canonical_exp_type>(n));
23866: eval_subtract(exp_series, xx);
23866: eval_divide(exp_series, p2);
23866: exp_series.negate();
23866: hyp0F0(result, exp_series);
23866:
23866: detail::pow_imp(exp_series, result, p2, mpl::true_());
23866: result = ui_type(1);
23866: eval_ldexp(result, result, n);
23866: eval_multiply(exp_series, result);
23866:
23866: if (isneg)
23866: eval_divide(result, ui_type(1), exp_series);
23866: else
23866: result = exp_series;
23866: }
23866:
23866: template <class T>
23866: void eval_log(T& result, const T& arg)
23866: {
23866: static_assert(number_category<T>::value == number_kind_floating_point, "The log function is only valid for floating point types.");
23866:
23866:
23866:
23866:
23866:
23866:
23866: typedef typename boost::multiprecision::detail::canonical<unsigned, T>::type ui_type;
23866: typedef typename T::exponent_type exp_type;
23866: typedef typename boost::multiprecision::detail::canonical<exp_type, T>::type canonical_exp_type;
23866: typedef typename mpl::front<typename T::float_types>::type fp_type;
23866: int s = eval_signbit(arg);
23866: switch (eval_fpclassify(arg))
23866: {
23866: case 0:
23866: result = arg;
23866: (*__errno_location ()) = 33;
23866: return;
23866: case 1:
23866: if (s)
23866: break;
23866: result = arg;
23866: return;
23866: case 2:
23866: result = std::numeric_limits<number<T> >::has_infinity ? std::numeric_limits<number<T> >::infinity().backend() : (std::numeric_limits<number<T> >::max)().backend();
23866: result.negate();
23866: (*__errno_location ()) = 34;
23866: return;
23866: }
23866: if (s)
23866: {
23866: result = std::numeric_limits<number<T> >::quiet_NaN().backend();
23866: (*__errno_location ()) = 33;
23866: return;
23866: }
23866:
23866: exp_type e;
23866: T t;
23866: eval_frexp(t, arg, &e);
23866: bool alternate = false;
23866:
23866: if (t.compare(fp_type(2) / fp_type(3)) <= 0)
23866: {
23866: alternate = true;
23866: eval_ldexp(t, t, 1);
23866: --e;
23866: }
23866:
23866: eval_multiply(result, get_constant_ln2<T>(), canonical_exp_type(e));
23866: ;
23866: eval_subtract(t, ui_type(1));
23866: if (!alternate)
23866: t.negate();
23866: T pow = t;
23866: T lim;
23866: T t2;
23866:
23866: if (alternate)
23866: eval_add(result, t);
23866: else
23866: eval_subtract(result, t);
23866:
23866: if (std::numeric_limits<number<T, et_on> >::is_specialized)
23866: eval_multiply(lim, result, std::numeric_limits<number<T, et_on> >::epsilon().backend());
23866: else
23866: eval_ldexp(lim, result, 1 - boost::multiprecision::detail::digits2<number<T, et_on> >::value());
23866: if (eval_get_sign(lim) < 0)
23866: lim.negate();
23866: ;
23866:
23866: ui_type k = 1;
23866: do
23866: {
23866: ++k;
23866: eval_multiply(pow, t);
23866: eval_divide(t2, pow, k);
23866: ;
23866: if (alternate && ((k & 1) != 0))
23866: eval_add(result, t2);
23866: else
23866: eval_subtract(result, t2);
23866: ;
23866: } while (lim.compare(t2) < 0);
23866: }
23866:
23866: template <class T>
23866: const T& get_constant_log10()
23866: {
23866: static thread_local T result;
23866: static thread_local long digits = 0;
23866: # 439 "/usr/include/boost/multiprecision/detail/functions/pow.hpp" 3 4
23866: if ((digits != boost::multiprecision::detail::digits2<number<T> >::value()))
23866: {
23866:
23866: typedef typename boost::multiprecision::detail::canonical<unsigned, T>::type ui_type;
23866: T ten;
23866: ten = ui_type(10u);
23866: eval_log(result, ten);
23866: digits = boost::multiprecision::detail::digits2<number<T> >::value();
23866: }
23866:
23866: return result;
23866: }
23866:
23866: template <class T>
23866: void eval_log10(T& result, const T& arg)
23866: {
23866: static_assert(number_category<T>::value == number_kind_floating_point, "The log10 function is only valid for floating point types.");
23866: eval_log(result, arg);
23866: eval_divide(result, get_constant_log10<T>());
23866: }
23866:
23866: template <class R, class T>
23866: inline void eval_log2(R& result, const T& a)
23866: {
23866: eval_log(result, a);
23866: eval_divide(result, get_constant_ln2<R>());
23866: }
23866:
23866: template <typename T>
23866: inline void eval_pow(T& result, const T& x, const T& a)
23866: {
23866: static_assert(number_category<T>::value == number_kind_floating_point, "The pow function is only valid for floating point types.");
23866: typedef typename boost::multiprecision::detail::canonical<int, T>::type si_type;
23866: typedef typename mpl::front<typename T::float_types>::type fp_type;
23866:
23866: if ((&result == &x) || (&result == &a))
23866: {
23866: T t;
23866: eval_pow(t, x, a);
23866: result = t;
23866: return;
23866: }
23866:
23866: if ((a.compare(si_type(1)) == 0) || (x.compare(si_type(1)) == 0))
23866: {
23866: result = x;
23866: return;
23866: }
23866: if (a.compare(si_type(0)) == 0)
23866: {
23866: result = si_type(1);
23866: return;
23866: }
23866:
23866: int type = eval_fpclassify(x);
23866:
23866: switch (type)
23866: {
23866: case 2:
23866: switch (eval_fpclassify(a))
23866: {
23866: case 2:
23866: result = si_type(1);
23866: break;
23866: case 0:
23866: result = a;
23866: break;
23866: case 4:
23866: {
23866:
23866: try
23866: {
23866: typename boost::multiprecision::detail::canonical<boost::intmax_t, T>::type i;
23866: eval_convert_to(&i, a);
23866: if (a.compare(i) == 0)
23866: {
23866: if (eval_signbit(a))
23866: {
23866: if (i & 1)
23866: {
23866: result = std::numeric_limits<number<T> >::infinity().backend();
23866: if (eval_signbit(x))
23866: result.negate();
23866: (*__errno_location ()) = 34;
23866: }
23866: else
23866: {
23866: result = std::numeric_limits<number<T> >::infinity().backend();
23866: (*__errno_location ()) = 34;
23866: }
23866: }
23866: else if (i & 1)
23866: {
23866: result = x;
23866: }
23866: else
23866: result = si_type(0);
23866: return;
23866: }
23866: }
23866: catch (const std::exception&)
23866: {
23866:
23866: }
23866: __attribute__((fallthrough));
23866: }
23866: default:
23866: if (eval_signbit(a))
23866: {
23866: result = std::numeric_limits<number<T> >::infinity().backend();
23866: (*__errno_location ()) = 34;
23866: }
23866: else
23866: result = x;
23866: break;
23866: }
23866: return;
23866: case 0:
23866: result = x;
23866: (*__errno_location ()) = 34;
23866: return;
23866: default:;
23866: }
23866:
23866: int s = eval_get_sign(a);
23866: if (s == 0)
23866: {
23866: result = si_type(1);
23866: return;
23866: }
23866:
23866: if (s < 0)
23866: {
23866: T t, da;
23866: t = a;
23866: t.negate();
23866: eval_pow(da, x, t);
23866: eval_divide(result, si_type(1), da);
23866: return;
23866: }
23866:
23866: typename boost::multiprecision::detail::canonical<boost::intmax_t, T>::type an;
23866: typename boost::multiprecision::detail::canonical<boost::intmax_t, T>::type max_an =
23866: std::numeric_limits<typename boost::multiprecision::detail::canonical<boost::intmax_t, T>::type>::is_specialized ? (std::numeric_limits<typename boost::multiprecision::detail::canonical<boost::intmax_t, T>::type>::max)() : static_cast<typename boost::multiprecision::detail::canonical<boost::intmax_t, T>::type>(1) << (sizeof(typename boost::multiprecision::detail::canonical<boost::intmax_t, T>::type) * 8 - 2);
23866: typename boost::multiprecision::detail::canonical<boost::intmax_t, T>::type min_an =
23866: std::numeric_limits<typename boost::multiprecision::detail::canonical<boost::intmax_t, T>::type>::is_specialized ? (std::numeric_limits<typename boost::multiprecision::detail::canonical<boost::intmax_t, T>::type>::min)() : -min_an;
23866:
23866: T fa;
23866:
23866: try
23866: {
23866:
23866: eval_convert_to(&an, a);
23866: if (a.compare(an) == 0)
23866: {
23866: detail::pow_imp(result, x, an, mpl::true_());
23866: return;
23866: }
23866:
23866: }
23866: catch (const std::exception&)
23866: {
23866:
23866: an = (std::numeric_limits<boost::intmax_t>::max)();
23866: }
23866:
23866: if ((eval_get_sign(x) < 0))
23866: {
23866: typename boost::multiprecision::detail::canonical<boost::uintmax_t, T>::type aun;
23866:
23866: try
23866: {
23866:
23866: eval_convert_to(&aun, a);
23866: if (a.compare(aun) == 0)
23866: {
23866: fa = x;
23866: fa.negate();
23866: eval_pow(result, fa, a);
23866: if (aun & 1u)
23866: result.negate();
23866: return;
23866: }
23866:
23866: }
23866: catch (const std::exception&)
23866: {
23866:
23866: }
23866:
23866: eval_floor(result, a);
23866:
23866: if ((x.compare(si_type(-1)) == 0) && (eval_fpclassify(a) == 1))
23866: {
23866: result = si_type(1);
23866: }
23866: else if (a.compare(result) == 0)
23866: {
23866:
23866: if (x.compare(si_type(-1)) < 0)
23866: {
23866: result = std::numeric_limits<number<T, et_on> >::infinity().backend();
23866: }
23866: else
23866: {
23866: result = si_type(0);
23866: }
23866: }
23866: else if (type == 1)
23866: {
23866: result = std::numeric_limits<number<T, et_on> >::infinity().backend();
23866: }
23866: else if (std::numeric_limits<number<T, et_on> >::has_quiet_NaN)
23866: {
23866: result = std::numeric_limits<number<T, et_on> >::quiet_NaN().backend();
23866: (*__errno_location ()) = 33;
23866: }
23866: else
23866: {
23866: ::boost::throw_exception(std::domain_error("Result of pow is undefined or non-real and there is no NaN for this number type."), ::boost::source_location("/usr/include/boost/multiprecision/detail/functions/pow.hpp", 658, __PRETTY_FUNCTION__));
23866: }
23866: return;
23866: }
23866:
23866: T t, da;
23866:
23866: eval_subtract(da, a, an);
23866:
23866: if ((x.compare(fp_type(0.5)) >= 0) && (x.compare(fp_type(0.9)) < 0) && (an < max_an) && (an > min_an))
23866: {
23866: if (a.compare(fp_type(1e-5f)) <= 0)
23866: {
23866:
23866: eval_log(t, x);
23866: eval_multiply(t, a);
23866: hyp0F0(result, t);
23866: return;
23866: }
23866: else
23866: {
23866:
23866:
23866: if (an)
23866: {
23866: da.negate();
23866: t = si_type(1);
23866: eval_subtract(t, x);
23866: hyp1F0(result, da, t);
23866: detail::pow_imp(t, x, an, mpl::true_());
23866: eval_multiply(result, t);
23866: }
23866: else
23866: {
23866: da = a;
23866: da.negate();
23866: t = si_type(1);
23866: eval_subtract(t, x);
23866: hyp1F0(result, da, t);
23866: }
23866: }
23866: }
23866: else
23866: {
23866:
23866:
23866: if (an)
23866: {
23866: eval_log(t, x);
23866: eval_multiply(t, da);
23866: eval_exp(result, t);
23866: detail::pow_imp(t, x, an, mpl::true_());
23866: eval_multiply(result, t);
23866: }
23866: else
23866: {
23866: eval_log(t, x);
23866: eval_multiply(t, a);
23866: eval_exp(result, t);
23866: }
23866: }
23866: }
23866:
23866: template <class T, class A>
23866:
23866:
23866:
23866: inline typename enable_if_c<is_compatible_arithmetic_type<A, number<T> >::value && !is_integral<A>::value, void>::type
23866:
23866: eval_pow(T& result, const T& x, const A& a)
23866: {
23866:
23866:
23866: typedef typename boost::multiprecision::detail::canonical<A, T>::type canonical_type;
23866: typedef typename mpl::if_<is_same<A, canonical_type>, T, canonical_type>::type cast_type;
23866: cast_type c;
23866: c = a;
23866: eval_pow(result, x, c);
23866: }
23866:
23866: template <class T, class A>
23866:
23866:
23866:
23866: inline typename enable_if_c<is_compatible_arithmetic_type<A, number<T> >::value, void>::type
23866:
23866: eval_pow(T& result, const A& x, const T& a)
23866: {
23866: typedef typename boost::multiprecision::detail::canonical<A, T>::type canonical_type;
23866: typedef typename mpl::if_<is_same<A, canonical_type>, T, canonical_type>::type cast_type;
23866: cast_type c;
23866: c = x;
23866: eval_pow(result, c, a);
23866: }
23866:
23866: template <class T>
23866: void eval_exp2(T& result, const T& arg)
23866: {
23866: static_assert(number_category<T>::value == number_kind_floating_point, "The log function is only valid for floating point types.");
23866:
23866:
23866: typename boost::multiprecision::detail::canonical<typename T::exponent_type, T>::type i;
23866: T temp;
23866: try
23866: {
23866: eval_trunc(temp, arg);
23866: eval_convert_to(&i, temp);
23866: if (arg.compare(i) == 0)
23866: {
23866: temp = static_cast<typename mpl::front<typename T::unsigned_types>::type>(1u);
23866: eval_ldexp(result, temp, i);
23866: return;
23866: }
23866: }
23866: catch (const boost::math::rounding_error&)
23866: {
23866: }
23866: catch (const std::runtime_error&)
23866: {
23866: }
23866:
23866: temp = static_cast<typename mpl::front<typename T::unsigned_types>::type>(2u);
23866: eval_pow(result, temp, arg);
23866: }
23866:
23866: namespace detail {
23866:
23866: template <class T>
23866: void small_sinh_series(T x, T& result)
23866: {
23866: typedef typename boost::multiprecision::detail::canonical<unsigned, T>::type ui_type;
23866: bool neg = eval_get_sign(x) < 0;
23866: if (neg)
23866: x.negate();
23866: T p(x);
23866: T mult(x);
23866: eval_multiply(mult, x);
23866: result = x;
23866: ui_type k = 1;
23866:
23866: T lim(x);
23866: eval_ldexp(lim, lim, 1 - boost::multiprecision::detail::digits2<number<T, et_on> >::value());
23866:
23866: do
23866: {
23866: eval_multiply(p, mult);
23866: eval_divide(p, ++k);
23866: eval_divide(p, ++k);
23866: eval_add(result, p);
23866: } while (p.compare(lim) >= 0);
23866: if (neg)
23866: result.negate();
23866: }
23866:
23866: template <class T>
23866: void sinhcosh(const T& x, T* p_sinh, T* p_cosh)
23866: {
23866: typedef typename boost::multiprecision::detail::canonical<unsigned, T>::type ui_type;
23866: typedef typename mpl::front<typename T::float_types>::type fp_type;
23866:
23866: switch (eval_fpclassify(x))
23866: {
23866: case 0:
23866: (*__errno_location ()) = 33;
23866:
23866: case 1:
23866: if (p_sinh)
23866: *p_sinh = x;
23866: if (p_cosh)
23866: {
23866: *p_cosh = x;
23866: if (eval_get_sign(x) < 0)
23866: p_cosh->negate();
23866: }
23866: return;
23866: case 2:
23866: if (p_sinh)
23866: *p_sinh = x;
23866: if (p_cosh)
23866: *p_cosh = ui_type(1);
23866: return;
23866: default:;
23866: }
23866:
23866: bool small_sinh = eval_get_sign(x) < 0 ? x.compare(fp_type(-0.5)) > 0 : x.compare(fp_type(0.5)) < 0;
23866:
23866: if (p_cosh || !small_sinh)
23866: {
23866: T e_px, e_mx;
23866: eval_exp(e_px, x);
23866: eval_divide(e_mx, ui_type(1), e_px);
23866: if (eval_signbit(e_mx) != eval_signbit(e_px))
23866: e_mx.negate();
23866:
23866: if (p_sinh)
23866: {
23866: if (small_sinh)
23866: {
23866: small_sinh_series(x, *p_sinh);
23866: }
23866: else
23866: {
23866: eval_subtract(*p_sinh, e_px, e_mx);
23866: eval_ldexp(*p_sinh, *p_sinh, -1);
23866: }
23866: }
23866: if (p_cosh)
23866: {
23866: eval_add(*p_cosh, e_px, e_mx);
23866: eval_ldexp(*p_cosh, *p_cosh, -1);
23866: }
23866: }
23866: else
23866: {
23866: small_sinh_series(x, *p_sinh);
23866: }
23866: }
23866:
23866: }
23866:
23866: template <class T>
23866: inline void eval_sinh(T& result, const T& x)
23866: {
23866: static_assert(number_category<T>::value == number_kind_floating_point, "The sinh function is only valid for floating point types.");
23866: detail::sinhcosh(x, &result, static_cast<T*>(0));
23866: }
23866:
23866: template <class T>
23866: inline void eval_cosh(T& result, const T& x)
23866: {
23866: static_assert(number_category<T>::value == number_kind_floating_point, "The cosh function is only valid for floating point types.");
23866: detail::sinhcosh(x, static_cast<T*>(0), &result);
23866: }
23866:
23866: template <class T>
23866: inline void eval_tanh(T& result, const T& x)
23866: {
23866: static_assert(number_category<T>::value == number_kind_floating_point, "The tanh function is only valid for floating point types.");
23866: T c;
23866: detail::sinhcosh(x, &result, &c);
23866: if ((eval_fpclassify(result) == 1) && (eval_fpclassify(c) == 1))
23866: {
23866: bool s = eval_signbit(result) != eval_signbit(c);
23866: result = static_cast<typename mpl::front<typename T::unsigned_types>::type>(1u);
23866: if (s)
23866: result.negate();
23866: return;
23866: }
23866: eval_divide(result, c);
23866: }
23866: # 1876 "/usr/include/boost/multiprecision/detail/default_ops.hpp" 2 3 4
23866: # 1 "/usr/include/boost/multiprecision/detail/functions/trig.hpp" 1 3 4
23866: # 20 "/usr/include/boost/multiprecision/detail/functions/trig.hpp" 3 4
23866: template <class T>
23866: void hyp0F1(T& result, const T& b, const T& x)
23866: {
23866: typedef typename boost::multiprecision::detail::canonical<boost::int32_t, T>::type si_type;
23866: typedef typename boost::multiprecision::detail::canonical<boost::uint32_t, T>::type ui_type;
23866:
23866:
23866:
23866:
23866:
23866: T x_pow_n_div_n_fact(x);
23866: T pochham_b(b);
23866: T bp(b);
23866:
23866: eval_divide(result, x_pow_n_div_n_fact, pochham_b);
23866: eval_add(result, ui_type(1));
23866:
23866: si_type n;
23866:
23866: T tol;
23866: tol = ui_type(1);
23866: eval_ldexp(tol, tol, 1 - boost::multiprecision::detail::digits2<number<T, et_on> >::value());
23866: eval_multiply(tol, result);
23866: if (eval_get_sign(tol) < 0)
23866: tol.negate();
23866: T term;
23866:
23866: const int series_limit =
23866: boost::multiprecision::detail::digits2<number<T, et_on> >::value() < 100
23866: ? 100
23866: : boost::multiprecision::detail::digits2<number<T, et_on> >::value();
23866:
23866: for (n = 2; n < series_limit; ++n)
23866: {
23866: eval_multiply(x_pow_n_div_n_fact, x);
23866: eval_divide(x_pow_n_div_n_fact, n);
23866: eval_increment(bp);
23866: eval_multiply(pochham_b, bp);
23866:
23866: eval_divide(term, x_pow_n_div_n_fact, pochham_b);
23866: eval_add(result, term);
23866:
23866: bool neg_term = eval_get_sign(term) < 0;
23866: if (neg_term)
23866: term.negate();
23866: if (term.compare(tol) <= 0)
23866: break;
23866: }
23866:
23866: if (n >= series_limit)
23866: ::boost::throw_exception(std::runtime_error("H0F1 Failed to Converge"), ::boost::source_location("/usr/include/boost/multiprecision/detail/functions/trig.hpp", 70, __PRETTY_FUNCTION__));
23866: }
23866:
23866: template <class T>
23866: void eval_sin(T& result, const T& x)
23866: {
23866: static_assert(number_category<T>::value == number_kind_floating_point, "The sin function is only valid for floating point types.");
23866: if (&result == &x)
23866: {
23866: T temp;
23866: eval_sin(temp, x);
23866: result = temp;
23866: return;
23866: }
23866:
23866: typedef typename boost::multiprecision::detail::canonical<boost::int32_t, T>::type si_type;
23866: typedef typename boost::multiprecision::detail::canonical<boost::uint32_t, T>::type ui_type;
23866: typedef typename mpl::front<typename T::float_types>::type fp_type;
23866:
23866: switch (eval_fpclassify(x))
23866: {
23866: case 1:
23866: case 0:
23866: if (std::numeric_limits<number<T, et_on> >::has_quiet_NaN)
23866: {
23866: result = std::numeric_limits<number<T, et_on> >::quiet_NaN().backend();
23866: (*__errno_location ()) = 33;
23866: }
23866: else
23866: ::boost::throw_exception(std::domain_error("Result is undefined or complex and there is no NaN for this number type."), ::boost::source_location("/usr/include/boost/multiprecision/detail/functions/trig.hpp", 99, __PRETTY_FUNCTION__));
23866: return;
23866: case 2:
23866: result = x;
23866: return;
23866: default:;
23866: }
23866:
23866:
23866: T xx = x;
23866:
23866:
23866:
23866:
23866: bool b_negate_sin = false;
23866:
23866: if (eval_get_sign(x) < 0)
23866: {
23866: xx.negate();
23866: b_negate_sin = !b_negate_sin;
23866: }
23866:
23866: T n_pi, t;
23866:
23866: if (xx.compare(get_constant_pi<T>()) > 0)
23866: {
23866: eval_divide(n_pi, xx, get_constant_pi<T>());
23866: eval_trunc(n_pi, n_pi);
23866: t = ui_type(2);
23866: eval_fmod(t, n_pi, t);
23866: const bool b_n_pi_is_even = eval_get_sign(t) == 0;
23866: eval_multiply(n_pi, get_constant_pi<T>());
23866: if (n_pi.compare(get_constant_one_over_epsilon<T>()) > 0)
23866: {
23866: result = ui_type(0);
23866: return;
23866: }
23866: else
23866: eval_subtract(xx, n_pi);
23866:
23866: ;
23866: ;
23866:
23866:
23866: if (!b_n_pi_is_even)
23866: {
23866: b_negate_sin = !b_negate_sin;
23866: }
23866: }
23866:
23866:
23866: eval_ldexp(t, get_constant_pi<T>(), -1);
23866: if (xx.compare(t) > 0)
23866: {
23866: eval_subtract(xx, get_constant_pi<T>(), xx);
23866: ;
23866: }
23866:
23866: eval_subtract(t, xx);
23866: const bool b_zero = eval_get_sign(xx) == 0;
23866: const bool b_pi_half = eval_get_sign(t) == 0;
23866:
23866:
23866: const bool b_near_zero = xx.compare(fp_type(1e-1)) < 0;
23866: const bool b_near_pi_half = t.compare(fp_type(1e-1)) < 0;
23866: ;
23866:
23866: if (b_zero)
23866: {
23866: result = ui_type(0);
23866: }
23866: else if (b_pi_half)
23866: {
23866: result = ui_type(1);
23866: }
23866: else if (b_near_zero)
23866: {
23866: eval_multiply(t, xx, xx);
23866: eval_divide(t, si_type(-4));
23866: T t2;
23866: t2 = fp_type(1.5);
23866: hyp0F1(result, t2, t);
23866: ;
23866: eval_multiply(result, xx);
23866: }
23866: else if (b_near_pi_half)
23866: {
23866: eval_multiply(t, t);
23866: eval_divide(t, si_type(-4));
23866: T t2;
23866: t2 = fp_type(0.5);
23866: hyp0F1(result, t2, t);
23866: ;
23866: }
23866: else
23866: {
23866:
23866:
23866:
23866:
23866:
23866: static const si_type n_scale = 9;
23866: static const si_type n_three_pow_scale = static_cast<si_type>(19683L);
23866:
23866: eval_divide(xx, n_three_pow_scale);
23866:
23866:
23866: eval_multiply(t, xx, xx);
23866: eval_divide(t, si_type(-4));
23866: T t2;
23866: t2 = fp_type(1.5);
23866: hyp0F1(result, t2, t);
23866: ;
23866: eval_multiply(result, xx);
23866:
23866:
23866: for (boost::int32_t k = static_cast<boost::int32_t>(0); k < n_scale; k++)
23866: {
23866:
23866: eval_multiply(t2, result, ui_type(3));
23866: eval_multiply(t, result, result);
23866: eval_multiply(t, result);
23866: eval_multiply(t, ui_type(4));
23866: eval_subtract(result, t2, t);
23866: }
23866: }
23866:
23866: if (b_negate_sin)
23866: result.negate();
23866: }
23866:
23866: template <class T>
23866: void eval_cos(T& result, const T& x)
23866: {
23866: static_assert(number_category<T>::value == number_kind_floating_point, "The cos function is only valid for floating point types.");
23866: if (&result == &x)
23866: {
23866: T temp;
23866: eval_cos(temp, x);
23866: result = temp;
23866: return;
23866: }
23866:
23866: typedef typename boost::multiprecision::detail::canonical<boost::int32_t, T>::type si_type;
23866: typedef typename boost::multiprecision::detail::canonical<boost::uint32_t, T>::type ui_type;
23866: typedef typename mpl::front<typename T::float_types>::type fp_type;
23866:
23866: switch (eval_fpclassify(x))
23866: {
23866: case 1:
23866: case 0:
23866: if (std::numeric_limits<number<T, et_on> >::has_quiet_NaN)
23866: {
23866: result = std::numeric_limits<number<T, et_on> >::quiet_NaN().backend();
23866: (*__errno_location ()) = 33;
23866: }
23866: else
23866: ::boost::throw_exception(std::domain_error("Result is undefined or complex and there is no NaN for this number type."), ::boost::source_location("/usr/include/boost/multiprecision/detail/functions/trig.hpp", 256, __PRETTY_FUNCTION__));
23866: return;
23866: case 2:
23866: result = ui_type(1);
23866: return;
23866: default:;
23866: }
23866:
23866:
23866: T xx = x;
23866:
23866:
23866:
23866:
23866: bool b_negate_cos = false;
23866:
23866: if (eval_get_sign(x) < 0)
23866: {
23866: xx.negate();
23866: }
23866:
23866: T n_pi, t;
23866:
23866: if (xx.compare(get_constant_pi<T>()) > 0)
23866: {
23866: eval_divide(t, xx, get_constant_pi<T>());
23866: eval_trunc(n_pi, t);
23866: ;
23866: eval_multiply(t, n_pi, get_constant_pi<T>());
23866: ;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: if (n_pi.compare(get_constant_one_over_epsilon<T>()) > 0)
23866: {
23866: result = ui_type(1);
23866: return;
23866: }
23866: else
23866: eval_subtract(xx, t);
23866: ;
23866:
23866:
23866: t = ui_type(2);
23866: eval_fmod(t, n_pi, t);
23866: const bool b_n_pi_is_even = eval_get_sign(t) == 0;
23866:
23866: if (!b_n_pi_is_even)
23866: {
23866: b_negate_cos = !b_negate_cos;
23866: }
23866: }
23866:
23866:
23866: eval_ldexp(t, get_constant_pi<T>(), -1);
23866: int com = xx.compare(t);
23866: if (com > 0)
23866: {
23866: eval_subtract(xx, get_constant_pi<T>(), xx);
23866: b_negate_cos = !b_negate_cos;
23866: ;
23866: }
23866:
23866: const bool b_zero = eval_get_sign(xx) == 0;
23866: const bool b_pi_half = com == 0;
23866:
23866:
23866: const bool b_near_zero = xx.compare(fp_type(1e-1)) < 0;
23866:
23866: if (b_zero)
23866: {
23866: result = si_type(1);
23866: }
23866: else if (b_pi_half)
23866: {
23866: result = si_type(0);
23866: }
23866: else if (b_near_zero)
23866: {
23866: eval_multiply(t, xx, xx);
23866: eval_divide(t, si_type(-4));
23866: n_pi = fp_type(0.5f);
23866: hyp0F1(result, n_pi, t);
23866: ;
23866: }
23866: else
23866: {
23866: eval_subtract(t, xx);
23866: eval_sin(result, t);
23866: }
23866: if (b_negate_cos)
23866: result.negate();
23866: }
23866:
23866: template <class T>
23866: void eval_tan(T& result, const T& x)
23866: {
23866: static_assert(number_category<T>::value == number_kind_floating_point, "The tan function is only valid for floating point types.");
23866: if (&result == &x)
23866: {
23866: T temp;
23866: eval_tan(temp, x);
23866: result = temp;
23866: return;
23866: }
23866: T t;
23866: eval_sin(result, x);
23866: eval_cos(t, x);
23866: eval_divide(result, t);
23866: }
23866:
23866: template <class T>
23866: void hyp2F1(T& result, const T& a, const T& b, const T& c, const T& x)
23866: {
23866:
23866:
23866:
23866:
23866: typedef typename boost::multiprecision::detail::canonical<boost::uint32_t, T>::type ui_type;
23866:
23866: T x_pow_n_div_n_fact(x);
23866: T pochham_a(a);
23866: T pochham_b(b);
23866: T pochham_c(c);
23866: T ap(a);
23866: T bp(b);
23866: T cp(c);
23866:
23866: eval_multiply(result, pochham_a, pochham_b);
23866: eval_divide(result, pochham_c);
23866: eval_multiply(result, x_pow_n_div_n_fact);
23866: eval_add(result, ui_type(1));
23866:
23866: T lim;
23866: eval_ldexp(lim, result, 1 - boost::multiprecision::detail::digits2<number<T, et_on> >::value());
23866:
23866: if (eval_get_sign(lim) < 0)
23866: lim.negate();
23866:
23866: ui_type n;
23866: T term;
23866:
23866: const unsigned series_limit =
23866: boost::multiprecision::detail::digits2<number<T, et_on> >::value() < 100
23866: ? 100
23866: : boost::multiprecision::detail::digits2<number<T, et_on> >::value();
23866:
23866: for (n = 2; n < series_limit; ++n)
23866: {
23866: eval_multiply(x_pow_n_div_n_fact, x);
23866: eval_divide(x_pow_n_div_n_fact, n);
23866:
23866: eval_increment(ap);
23866: eval_multiply(pochham_a, ap);
23866: eval_increment(bp);
23866: eval_multiply(pochham_b, bp);
23866: eval_increment(cp);
23866: eval_multiply(pochham_c, cp);
23866:
23866: eval_multiply(term, pochham_a, pochham_b);
23866: eval_divide(term, pochham_c);
23866: eval_multiply(term, x_pow_n_div_n_fact);
23866: eval_add(result, term);
23866:
23866: if (eval_get_sign(term) < 0)
23866: term.negate();
23866: if (lim.compare(term) >= 0)
23866: break;
23866: }
23866: if (n > series_limit)
23866: ::boost::throw_exception(std::runtime_error("H2F1 failed to converge."), ::boost::source_location("/usr/include/boost/multiprecision/detail/functions/trig.hpp", 430, __PRETTY_FUNCTION__));
23866: }
23866:
23866: template <class T>
23866: void eval_asin(T& result, const T& x)
23866: {
23866: static_assert(number_category<T>::value == number_kind_floating_point, "The asin function is only valid for floating point types.");
23866: typedef typename boost::multiprecision::detail::canonical<boost::uint32_t, T>::type ui_type;
23866: typedef typename mpl::front<typename T::float_types>::type fp_type;
23866:
23866: if (&result == &x)
23866: {
23866: T t(x);
23866: eval_asin(result, t);
23866: return;
23866: }
23866:
23866: switch (eval_fpclassify(x))
23866: {
23866: case 0:
23866: case 1:
23866: if (std::numeric_limits<number<T, et_on> >::has_quiet_NaN)
23866: {
23866: result = std::numeric_limits<number<T, et_on> >::quiet_NaN().backend();
23866: (*__errno_location ()) = 33;
23866: }
23866: else
23866: ::boost::throw_exception(std::domain_error("Result is undefined or complex and there is no NaN for this number type."), ::boost::source_location("/usr/include/boost/multiprecision/detail/functions/trig.hpp", 457, __PRETTY_FUNCTION__));
23866: return;
23866: case 2:
23866: result = x;
23866: return;
23866: default:;
23866: }
23866:
23866: const bool b_neg = eval_get_sign(x) < 0;
23866:
23866: T xx(x);
23866: if (b_neg)
23866: xx.negate();
23866:
23866: int c = xx.compare(ui_type(1));
23866: if (c > 0)
23866: {
23866: if (std::numeric_limits<number<T, et_on> >::has_quiet_NaN)
23866: {
23866: result = std::numeric_limits<number<T, et_on> >::quiet_NaN().backend();
23866: (*__errno_location ()) = 33;
23866: }
23866: else
23866: ::boost::throw_exception(std::domain_error("Result is undefined or complex and there is no NaN for this number type."), ::boost::source_location("/usr/include/boost/multiprecision/detail/functions/trig.hpp", 480, __PRETTY_FUNCTION__));
23866: return;
23866: }
23866: else if (c == 0)
23866: {
23866: result = get_constant_pi<T>();
23866: eval_ldexp(result, result, -1);
23866: if (b_neg)
23866: result.negate();
23866: return;
23866: }
23866:
23866: if (xx.compare(fp_type(1e-4)) < 0)
23866: {
23866:
23866: eval_multiply(xx, xx);
23866: T t1, t2;
23866: t1 = fp_type(0.5f);
23866: t2 = fp_type(1.5f);
23866: hyp2F1(result, t1, t1, t2, xx);
23866: eval_multiply(result, x);
23866: return;
23866: }
23866: else if (xx.compare(fp_type(1 - 1e-4f)) > 0)
23866: {
23866: T dx1;
23866: T t1, t2;
23866: eval_subtract(dx1, ui_type(1), xx);
23866: t1 = fp_type(0.5f);
23866: t2 = fp_type(1.5f);
23866: eval_ldexp(dx1, dx1, -1);
23866: hyp2F1(result, t1, t1, t2, dx1);
23866: eval_ldexp(dx1, dx1, 2);
23866: eval_sqrt(t1, dx1);
23866: eval_multiply(result, t1);
23866: eval_ldexp(t1, get_constant_pi<T>(), -1);
23866: result.negate();
23866: eval_add(result, t1);
23866: if (b_neg)
23866: result.negate();
23866: return;
23866: }
23866:
23866: typedef typename boost::multiprecision::detail::canonical<long double, T>::type guess_type;
23866:
23866:
23866:
23866:
23866: guess_type dd;
23866: eval_convert_to(&dd, xx);
23866:
23866: result = (guess_type)(std::asin(dd));
23866:
23866:
23866:
23866:
23866:
23866:
23866: boost::intmax_t current_precision = eval_ilogb(result);
23866: boost::intmax_t target_precision = current_precision - 1 - (std::numeric_limits<number<T> >::digits * 2) / 3;
23866:
23866:
23866: while (current_precision > target_precision)
23866: {
23866: T sine, cosine;
23866: eval_sin(sine, result);
23866: eval_cos(cosine, result);
23866: eval_subtract(sine, xx);
23866: eval_divide(sine, cosine);
23866: eval_subtract(result, sine);
23866: current_precision = eval_ilogb(sine);
23866: if (current_precision <= (std::numeric_limits<typename T::exponent_type>::min)() + 1)
23866: break;
23866: }
23866: if (b_neg)
23866: result.negate();
23866: }
23866:
23866: template <class T>
23866: inline void eval_acos(T& result, const T& x)
23866: {
23866: static_assert(number_category<T>::value == number_kind_floating_point, "The acos function is only valid for floating point types.");
23866: typedef typename boost::multiprecision::detail::canonical<boost::uint32_t, T>::type ui_type;
23866:
23866: switch (eval_fpclassify(x))
23866: {
23866: case 0:
23866: case 1:
23866: if (std::numeric_limits<number<T, et_on> >::has_quiet_NaN)
23866: {
23866: result = std::numeric_limits<number<T, et_on> >::quiet_NaN().backend();
23866: (*__errno_location ()) = 33;
23866: }
23866: else
23866: ::boost::throw_exception(std::domain_error("Result is undefined or complex and there is no NaN for this number type."), ::boost::source_location("/usr/include/boost/multiprecision/detail/functions/trig.hpp", 574, __PRETTY_FUNCTION__));
23866: return;
23866: case 2:
23866: result = get_constant_pi<T>();
23866: eval_ldexp(result, result, -1);
23866: return;
23866: }
23866:
23866: eval_abs(result, x);
23866: int c = result.compare(ui_type(1));
23866:
23866: if (c > 0)
23866: {
23866: if (std::numeric_limits<number<T, et_on> >::has_quiet_NaN)
23866: {
23866: result = std::numeric_limits<number<T, et_on> >::quiet_NaN().backend();
23866: (*__errno_location ()) = 33;
23866: }
23866: else
23866: ::boost::throw_exception(std::domain_error("Result is undefined or complex and there is no NaN for this number type."), ::boost::source_location("/usr/include/boost/multiprecision/detail/functions/trig.hpp", 593, __PRETTY_FUNCTION__));
23866: return;
23866: }
23866: else if (c == 0)
23866: {
23866: if (eval_get_sign(x) < 0)
23866: result = get_constant_pi<T>();
23866: else
23866: result = ui_type(0);
23866: return;
23866: }
23866:
23866: eval_asin(result, x);
23866: T t;
23866: eval_ldexp(t, get_constant_pi<T>(), -1);
23866: eval_subtract(result, t);
23866: result.negate();
23866: }
23866:
23866: template <class T>
23866: void eval_atan(T& result, const T& x)
23866: {
23866: static_assert(number_category<T>::value == number_kind_floating_point, "The atan function is only valid for floating point types.");
23866: typedef typename boost::multiprecision::detail::canonical<boost::int32_t, T>::type si_type;
23866: typedef typename boost::multiprecision::detail::canonical<boost::uint32_t, T>::type ui_type;
23866: typedef typename mpl::front<typename T::float_types>::type fp_type;
23866:
23866: switch (eval_fpclassify(x))
23866: {
23866: case 0:
23866: result = x;
23866: (*__errno_location ()) = 33;
23866: return;
23866: case 2:
23866: result = x;
23866: return;
23866: case 1:
23866: if (eval_get_sign(x) < 0)
23866: {
23866: eval_ldexp(result, get_constant_pi<T>(), -1);
23866: result.negate();
23866: }
23866: else
23866: eval_ldexp(result, get_constant_pi<T>(), -1);
23866: return;
23866: default:;
23866: }
23866:
23866: const bool b_neg = eval_get_sign(x) < 0;
23866:
23866: T xx(x);
23866: if (b_neg)
23866: xx.negate();
23866:
23866: if (xx.compare(fp_type(0.1)) < 0)
23866: {
23866: T t1, t2, t3;
23866: t1 = ui_type(1);
23866: t2 = fp_type(0.5f);
23866: t3 = fp_type(1.5f);
23866: eval_multiply(xx, xx);
23866: xx.negate();
23866: hyp2F1(result, t1, t2, t3, xx);
23866: eval_multiply(result, x);
23866: return;
23866: }
23866:
23866: if (xx.compare(fp_type(10)) > 0)
23866: {
23866: T t1, t2, t3;
23866: t1 = fp_type(0.5f);
23866: t2 = ui_type(1u);
23866: t3 = fp_type(1.5f);
23866: eval_multiply(xx, xx);
23866: eval_divide(xx, si_type(-1), xx);
23866: hyp2F1(result, t1, t2, t3, xx);
23866: eval_divide(result, x);
23866: if (!b_neg)
23866: result.negate();
23866: eval_ldexp(t1, get_constant_pi<T>(), -1);
23866: eval_add(result, t1);
23866: if (b_neg)
23866: result.negate();
23866: return;
23866: }
23866:
23866:
23866: fp_type d;
23866: eval_convert_to(&d, xx);
23866: result = fp_type(std::atan(d));
23866:
23866:
23866:
23866:
23866:
23866:
23866: boost::intmax_t current_precision = eval_ilogb(result);
23866: boost::intmax_t target_precision = current_precision - 1 - (std::numeric_limits<number<T> >::digits * 2) / 3;
23866:
23866: T s, c, t;
23866: while (current_precision > target_precision)
23866: {
23866: eval_sin(s, result);
23866: eval_cos(c, result);
23866: eval_multiply(t, xx, c);
23866: eval_subtract(t, s);
23866: eval_multiply(s, t, c);
23866: eval_add(result, s);
23866: current_precision = eval_ilogb(s);
23866: if (current_precision <= (std::numeric_limits<typename T::exponent_type>::min)() + 1)
23866: break;
23866: }
23866: if (b_neg)
23866: result.negate();
23866: }
23866:
23866: template <class T>
23866: void eval_atan2(T& result, const T& y, const T& x)
23866: {
23866: static_assert(number_category<T>::value == number_kind_floating_point, "The atan2 function is only valid for floating point types.");
23866: if (&result == &y)
23866: {
23866: T temp(y);
23866: eval_atan2(result, temp, x);
23866: return;
23866: }
23866: else if (&result == &x)
23866: {
23866: T temp(x);
23866: eval_atan2(result, y, temp);
23866: return;
23866: }
23866:
23866: typedef typename boost::multiprecision::detail::canonical<boost::uint32_t, T>::type ui_type;
23866:
23866: switch (eval_fpclassify(y))
23866: {
23866: case 0:
23866: result = y;
23866: (*__errno_location ()) = 33;
23866: return;
23866: case 2:
23866: {
23866: if (eval_signbit(x))
23866: {
23866: result = get_constant_pi<T>();
23866: if (eval_signbit(y))
23866: result.negate();
23866: }
23866: else
23866: {
23866: result = y;
23866: }
23866: return;
23866: }
23866: case 1:
23866: {
23866: if (eval_fpclassify(x) == 1)
23866: {
23866: if (eval_signbit(x))
23866: {
23866:
23866: eval_ldexp(result, get_constant_pi<T>(), -2);
23866: eval_subtract(result, get_constant_pi<T>());
23866: if (eval_get_sign(y) >= 0)
23866: result.negate();
23866: }
23866: else
23866: {
23866:
23866: eval_ldexp(result, get_constant_pi<T>(), -2);
23866: if (eval_get_sign(y) < 0)
23866: result.negate();
23866: }
23866: }
23866: else
23866: {
23866: eval_ldexp(result, get_constant_pi<T>(), -1);
23866: if (eval_get_sign(y) < 0)
23866: result.negate();
23866: }
23866: return;
23866: }
23866: }
23866:
23866: switch (eval_fpclassify(x))
23866: {
23866: case 0:
23866: result = x;
23866: (*__errno_location ()) = 33;
23866: return;
23866: case 2:
23866: {
23866: eval_ldexp(result, get_constant_pi<T>(), -1);
23866: if (eval_get_sign(y) < 0)
23866: result.negate();
23866: return;
23866: }
23866: case 1:
23866: if (eval_get_sign(x) > 0)
23866: result = ui_type(0);
23866: else
23866: result = get_constant_pi<T>();
23866: if (eval_get_sign(y) < 0)
23866: result.negate();
23866: return;
23866: }
23866:
23866: T xx;
23866: eval_divide(xx, y, x);
23866: if (eval_get_sign(xx) < 0)
23866: xx.negate();
23866:
23866: eval_atan(result, xx);
23866:
23866:
23866: const bool y_neg = eval_get_sign(y) < 0;
23866: const bool x_neg = eval_get_sign(x) < 0;
23866:
23866: if (y_neg != x_neg)
23866: result.negate();
23866:
23866: if (x_neg)
23866: {
23866: if (y_neg)
23866: eval_subtract(result, get_constant_pi<T>());
23866: else
23866: eval_add(result, get_constant_pi<T>());
23866: }
23866: }
23866: template <class T, class A>
23866: inline typename enable_if<is_arithmetic<A>, void>::type eval_atan2(T& result, const T& x, const A& a)
23866: {
23866: typedef typename boost::multiprecision::detail::canonical<A, T>::type canonical_type;
23866: typedef typename mpl::if_<is_same<A, canonical_type>, T, canonical_type>::type cast_type;
23866: cast_type c;
23866: c = a;
23866: eval_atan2(result, x, c);
23866: }
23866:
23866: template <class T, class A>
23866: inline typename enable_if<is_arithmetic<A>, void>::type eval_atan2(T& result, const A& x, const T& a)
23866: {
23866: typedef typename boost::multiprecision::detail::canonical<A, T>::type canonical_type;
23866: typedef typename mpl::if_<is_same<A, canonical_type>, T, canonical_type>::type cast_type;
23866: cast_type c;
23866: c = x;
23866: eval_atan2(result, c, a);
23866: }
23866: # 1877 "/usr/include/boost/multiprecision/detail/default_ops.hpp" 2 3 4
23866:
23866: }
23866:
23866:
23866:
23866:
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr int fpclassify (const multiprecision::number<Backend, ExpressionTemplates>& arg)
23866: {
23866: using multiprecision::default_ops::eval_fpclassify;
23866: return eval_fpclassify(arg.backend());
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr int fpclassify (const multiprecision::detail::expression<tag, A1, A2, A3, A4>& arg)
23866: {
23866: typedef typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type value_type;
23866: return fpclassify (value_type(arg));
23866: }
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr bool isfinite (const multiprecision::number<Backend, ExpressionTemplates>& arg)
23866: {
23866: int v = fpclassify (arg);
23866: return (v != (int)1) && (v != (int)0);
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr bool isfinite (const multiprecision::detail::expression<tag, A1, A2, A3, A4>& arg)
23866: {
23866: typedef typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type value_type;
23866: return isfinite (value_type(arg));
23866: }
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr bool isnan (const multiprecision::number<Backend, ExpressionTemplates>& arg)
23866: {
23866: return fpclassify (arg) == (int)0;
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr bool isnan (const multiprecision::detail::expression<tag, A1, A2, A3, A4>& arg)
23866: {
23866: typedef typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type value_type;
23866: return isnan (value_type(arg));
23866: }
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr bool isinf (const multiprecision::number<Backend, ExpressionTemplates>& arg)
23866: {
23866: return fpclassify (arg) == (int)1;
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr bool isinf (const multiprecision::detail::expression<tag, A1, A2, A3, A4>& arg)
23866: {
23866: typedef typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type value_type;
23866: return isinf (value_type(arg));
23866: }
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr bool isnormal (const multiprecision::number<Backend, ExpressionTemplates>& arg)
23866: {
23866: return fpclassify (arg) == (int)4;
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr bool isnormal (const multiprecision::detail::expression<tag, A1, A2, A3, A4>& arg)
23866: {
23866: typedef typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type value_type;
23866: return isnormal (value_type(arg));
23866: }
23866:
23866:
23866:
23866:
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr int sign (const multiprecision::number<Backend, ExpressionTemplates>& arg)
23866: {
23866: return arg.sign();
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr int sign (const multiprecision::detail::expression<tag, A1, A2, A3, A4>& arg)
23866: {
23866: typedef typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type value_type;
23866: return sign (value_type(arg));
23866: }
23866:
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr int signbit (const multiprecision::number<Backend, ExpressionTemplates>& arg)
23866: {
23866: using default_ops::eval_signbit;
23866: return eval_signbit(arg.backend());
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr int signbit (const multiprecision::detail::expression<tag, A1, A2, A3, A4>& arg)
23866: {
23866: typedef typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type value_type;
23866: return signbit (value_type(arg));
23866: }
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr multiprecision::number<Backend, ExpressionTemplates> changesign (const multiprecision::number<Backend, ExpressionTemplates>& arg)
23866: {
23866: return -arg;
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type changesign (const multiprecision::detail::expression<tag, A1, A2, A3, A4>& arg)
23866: {
23866: typedef typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type value_type;
23866: return changesign (value_type(arg));
23866: }
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr multiprecision::number<Backend, ExpressionTemplates> copysign (const multiprecision::number<Backend, ExpressionTemplates>& a, const multiprecision::number<Backend, ExpressionTemplates>& b)
23866: {
23866: return (boost::multiprecision::signbit)(a) != (boost::multiprecision::signbit)(b) ? (boost::multiprecision::changesign)(a) : a;
23866: }
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates, class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr multiprecision::number<Backend, ExpressionTemplates> copysign (const multiprecision::number<Backend, ExpressionTemplates>& a, const multiprecision::detail::expression<tag, A1, A2, A3, A4>& b)
23866: {
23866: return copysign (a, multiprecision::number<Backend, ExpressionTemplates>(b));
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4, class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr multiprecision::number<Backend, ExpressionTemplates> copysign (const multiprecision::detail::expression<tag, A1, A2, A3, A4>& a, const multiprecision::number<Backend, ExpressionTemplates>& b)
23866: {
23866: return copysign (multiprecision::number<Backend, ExpressionTemplates>(a), b);
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4, class tagb, class A1b, class A2b, class A3b, class A4b>
23866: inline constexpr typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type copysign (const multiprecision::detail::expression<tag, A1, A2, A3, A4>& a, const multiprecision::detail::expression<tagb, A1b, A2b, A3b, A4b>& b)
23866: {
23866: typedef typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type value_type;
23866: return copysign (value_type(a), value_type(b));
23866: }
23866:
23866:
23866:
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr typename scalar_result_from_possible_complex<multiprecision::number<Backend, ExpressionTemplates> >::type
23866: real(const multiprecision::number<Backend, ExpressionTemplates>& a)
23866: {
23866: using default_ops::eval_real;
23866: typedef typename scalar_result_from_possible_complex<multiprecision::number<Backend, ExpressionTemplates> >::type result_type;
23866: boost::multiprecision::detail::scoped_default_precision<result_type> precision_guard(a);
23866: result_type result;
23866: eval_real(result.backend(), a.backend());
23866: return result;
23866: }
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr typename scalar_result_from_possible_complex<multiprecision::number<Backend, ExpressionTemplates> >::type
23866: imag(const multiprecision::number<Backend, ExpressionTemplates>& a)
23866: {
23866: using default_ops::eval_imag;
23866: typedef typename scalar_result_from_possible_complex<multiprecision::number<Backend, ExpressionTemplates> >::type result_type;
23866: boost::multiprecision::detail::scoped_default_precision<result_type> precision_guard(a);
23866: result_type result;
23866: eval_imag(result.backend(), a.backend());
23866: return result;
23866: }
23866:
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename scalar_result_from_possible_complex<typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type>::type
23866: real(const multiprecision::detail::expression<tag, A1, A2, A3, A4>& arg)
23866: {
23866: typedef typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type value_type;
23866: detail::scoped_default_precision<value_type> precision_guard(arg);
23866: return real(value_type(arg));
23866: }
23866:
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename scalar_result_from_possible_complex<typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type>::type
23866: imag(const multiprecision::detail::expression<tag, A1, A2, A3, A4>& arg)
23866: {
23866: typedef typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type value_type;
23866: detail::scoped_default_precision<value_type> precision_guard(arg);
23866: return imag(value_type(arg));
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template <class T, expression_template_option ExpressionTemplates>
23866: inline constexpr typename boost::lazy_enable_if_c<number_category<T>::value == number_kind_complex, component_type<number<T, ExpressionTemplates> > >::type
23866: abs(const number<T, ExpressionTemplates>& v)
23866: {
23866: return std::move(boost::math::hypot(real(v), imag(v)));
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename boost::lazy_enable_if_c<number_category<typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value == number_kind_complex, component_type<typename detail::expression<tag, A1, A2, A3, A4>::result_type> >::type
23866: abs(const detail::expression<tag, A1, A2, A3, A4>& v)
23866: {
23866: typedef typename detail::expression<tag, A1, A2, A3, A4>::result_type number_type;
23866: return std::move(abs(static_cast<number_type>(v)));
23866: }
23866:
23866: template <class T, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<number_category<T>::value == number_kind_complex, typename scalar_result_from_possible_complex<number<T, ExpressionTemplates> >::type>::type
23866: arg(const number<T, ExpressionTemplates>& v)
23866: {
23866: return std::move(atan2(imag(v), real(v)));
23866: }
23866: template <class T, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<number_category<T>::value == number_kind_floating_point, typename scalar_result_from_possible_complex<number<T, ExpressionTemplates> >::type>::type
23866: arg(const number<T, ExpressionTemplates>&)
23866: {
23866: return 0;
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename enable_if_c<number_category<typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value == number_kind_complex || number_category<typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value == number_kind_floating_point, typename scalar_result_from_possible_complex<typename detail::expression<tag, A1, A2, A3, A4>::result_type>::type>::type
23866: arg(const detail::expression<tag, A1, A2, A3, A4>& v)
23866: {
23866: typedef typename detail::expression<tag, A1, A2, A3, A4>::result_type number_type;
23866: return std::move(arg(static_cast<number_type>(v)));
23866: }
23866:
23866: template <class T, expression_template_option ExpressionTemplates>
23866: inline constexpr typename boost::lazy_enable_if_c<number_category<T>::value == number_kind_complex, component_type<number<T, ExpressionTemplates> > >::type
23866: norm(const number<T, ExpressionTemplates>& v)
23866: {
23866: typename component_type<number<T, ExpressionTemplates> >::type a(real(v)), b(imag(v));
23866: return std::move(a * a + b * b);
23866: }
23866: template <class T, expression_template_option ExpressionTemplates>
23866: inline constexpr typename boost::enable_if_c<number_category<T>::value != number_kind_complex, typename scalar_result_from_possible_complex<number<T, ExpressionTemplates> >::type>::type
23866: norm(const number<T, ExpressionTemplates>& v)
23866: {
23866: return v * v;
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename scalar_result_from_possible_complex<typename detail::expression<tag, A1, A2, A3, A4>::result_type>::type
23866: norm(const detail::expression<tag, A1, A2, A3, A4>& v)
23866: {
23866: typedef typename detail::expression<tag, A1, A2, A3, A4>::result_type number_type;
23866: return std::move(norm(static_cast<number_type>(v)));
23866: }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates>
23866: constexpr typename complex_result_from_scalar<number<Backend, ExpressionTemplates> >::type polar(number<Backend, ExpressionTemplates> const& r, number<Backend, ExpressionTemplates> const& theta)
23866: {
23866: return typename complex_result_from_scalar<number<Backend, ExpressionTemplates> >::type(number<Backend, ExpressionTemplates>(r * cos(theta)), number<Backend, ExpressionTemplates>(r * sin(theta)));
23866: }
23866:
23866: template <class tag, class A1, class A2, class A3, class A4, class Backend, expression_template_option ExpressionTemplates>
23866: constexpr typename enable_if_c<boost::is_same<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, ExpressionTemplates> >::value,
23866: typename complex_result_from_scalar<number<Backend, ExpressionTemplates> >::type>::type
23866: polar(detail::expression<tag, A1, A2, A3, A4> const& r, number<Backend, ExpressionTemplates> const& theta)
23866: {
23866: return typename complex_result_from_scalar<number<Backend, ExpressionTemplates> >::type(number<Backend, ExpressionTemplates>(r * cos(theta)), number<Backend, ExpressionTemplates>(r * sin(theta)));
23866: }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates, class tag, class A1, class A2, class A3, class A4>
23866: constexpr typename enable_if_c<boost::is_same<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, ExpressionTemplates> >::value,
23866: typename complex_result_from_scalar<number<Backend, ExpressionTemplates> >::type>::type
23866: polar(number<Backend, ExpressionTemplates> const& r, detail::expression<tag, A1, A2, A3, A4> const& theta)
23866: {
23866: return typename complex_result_from_scalar<number<Backend, ExpressionTemplates> >::type(number<Backend, ExpressionTemplates>(r * cos(theta)), number<Backend, ExpressionTemplates>(r * sin(theta)));
23866: }
23866:
23866: template <class tag, class A1, class A2, class A3, class A4, class tagb, class A1b, class A2b, class A3b, class A4b>
23866: constexpr typename enable_if_c<boost::is_same<typename detail::expression<tag, A1, A2, A3, A4>::result_type, typename detail::expression<tagb, A1b, A2b, A3b, A4b>::result_type>::value,
23866: typename complex_result_from_scalar<typename detail::expression<tag, A1, A2, A3, A4>::result_type>::type>::type
23866: polar(detail::expression<tag, A1, A2, A3, A4> const& r, detail::expression<tagb, A1b, A2b, A3b, A4b> const& theta)
23866: {
23866: typedef typename detail::expression<tag, A1, A2, A3, A4>::result_type scalar_type;
23866: return typename complex_result_from_scalar<scalar_type>::type(scalar_type(r * cos(theta)), scalar_type(r * sin(theta)));
23866: }
23866:
23866:
23866:
23866: template <class Scalar, class Backend, expression_template_option ExpressionTemplates>
23866: constexpr typename boost::enable_if_c<boost::is_arithmetic<Scalar>::value, typename complex_result_from_scalar<number<Backend, ExpressionTemplates> >::type>::type
23866: polar(Scalar const& r, number<Backend, ExpressionTemplates> const& theta)
23866: {
23866: return typename complex_result_from_scalar<number<Backend, ExpressionTemplates> >::type(number<Backend, ExpressionTemplates>(r * cos(theta)), number<Backend, ExpressionTemplates>(r * sin(theta)));
23866: }
23866:
23866: template <class tag, class A1, class A2, class A3, class A4, class Scalar>
23866: constexpr typename enable_if_c<boost::is_arithmetic<Scalar>::value,
23866: typename complex_result_from_scalar<typename detail::expression<tag, A1, A2, A3, A4>::result_type>::type>::type
23866: polar(Scalar const& r, detail::expression<tag, A1, A2, A3, A4> const& theta)
23866: {
23866: typedef typename detail::expression<tag, A1, A2, A3, A4>::result_type scalar_type;
23866: return typename complex_result_from_scalar<scalar_type>::type(scalar_type(r * cos(theta)), scalar_type(r * sin(theta)));
23866: }
23866:
23866:
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates>
23866: constexpr typename complex_result_from_scalar<number<Backend, ExpressionTemplates> >::type polar(number<Backend, ExpressionTemplates> const& r)
23866: {
23866: return typename complex_result_from_scalar<number<Backend, ExpressionTemplates> >::type(r);
23866: }
23866:
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: constexpr typename complex_result_from_scalar<typename detail::expression<tag, A1, A2, A3, A4>::result_type>::type
23866: polar(detail::expression<tag, A1, A2, A3, A4> const& r)
23866: {
23866: return typename complex_result_from_scalar<typename detail::expression<tag, A1, A2, A3, A4>::result_type>::type(r);
23866: }
23866:
23866: }
23866:
23866: namespace math {
23866:
23866:
23866:
23866:
23866: using boost::multiprecision::changesign;
23866: using boost::multiprecision::copysign;
23866: using boost::multiprecision::fpclassify;
23866: using boost::multiprecision::isfinite;
23866: using boost::multiprecision::isinf;
23866: using boost::multiprecision::isnan;
23866: using boost::multiprecision::isnormal;
23866: using boost::multiprecision::sign;
23866: using boost::multiprecision::signbit;
23866:
23866: }
23866:
23866: namespace multiprecision {
23866:
23866: typedef ::boost::math::policies::policy<
23866: ::boost::math::policies::domain_error< ::boost::math::policies::errno_on_error>,
23866: ::boost::math::policies::pole_error< ::boost::math::policies::errno_on_error>,
23866: ::boost::math::policies::overflow_error< ::boost::math::policies::errno_on_error>,
23866: ::boost::math::policies::evaluation_error< ::boost::math::policies::errno_on_error>,
23866: ::boost::math::policies::rounding_error< ::boost::math::policies::errno_on_error> >
23866: c99_error_policy;
23866:
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr typename boost::enable_if_c<number_category<Backend>::value != number_kind_complex, multiprecision::number<Backend, ExpressionTemplates> >::type
23866: asinh
23866: (const multiprecision::number<Backend, ExpressionTemplates>& arg)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<Backend, ExpressionTemplates> > precision_guard(arg);
23866: return boost::math::asinh(arg, c99_error_policy());
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename boost::enable_if_c<number_category<typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type>::value != number_kind_complex, typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type>::type
23866: asinh
23866: (const multiprecision::detail::expression<tag, A1, A2, A3, A4>& arg)
23866: {
23866: typedef typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type value_type;
23866: detail::scoped_default_precision<value_type> precision_guard(arg);
23866: return asinh(value_type(arg));
23866: }
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr typename boost::enable_if_c<number_category<Backend>::value != number_kind_complex, multiprecision::number<Backend, ExpressionTemplates> >::type
23866: acosh
23866: (const multiprecision::number<Backend, ExpressionTemplates>& arg)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<Backend, ExpressionTemplates> > precision_guard(arg);
23866: return boost::math::acosh(arg, c99_error_policy());
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename boost::enable_if_c<number_category<typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type>::value != number_kind_complex, typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type>::type
23866: acosh
23866: (const multiprecision::detail::expression<tag, A1, A2, A3, A4>& arg)
23866: {
23866: typedef typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type value_type;
23866: detail::scoped_default_precision<value_type> precision_guard(arg);
23866: return acosh(value_type(arg));
23866: }
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr typename boost::enable_if_c<number_category<Backend>::value != number_kind_complex, multiprecision::number<Backend, ExpressionTemplates> >::type
23866: atanh
23866: (const multiprecision::number<Backend, ExpressionTemplates>& arg)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<Backend, ExpressionTemplates> > precision_guard(arg);
23866: return boost::math::atanh(arg, c99_error_policy());
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename boost::enable_if_c<number_category<typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type>::value != number_kind_complex, typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type>::type
23866: atanh
23866: (const multiprecision::detail::expression<tag, A1, A2, A3, A4>& arg)
23866: {
23866: typedef typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type value_type;
23866: detail::scoped_default_precision<value_type> precision_guard(arg);
23866: return atanh(value_type(arg));
23866: }
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr multiprecision::number<Backend, ExpressionTemplates> cbrt (const multiprecision::number<Backend, ExpressionTemplates>& arg)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<Backend, ExpressionTemplates> > precision_guard(arg);
23866: return boost::math::cbrt(arg, c99_error_policy());
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type cbrt (const multiprecision::detail::expression<tag, A1, A2, A3, A4>& arg)
23866: {
23866: typedef typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type value_type;
23866: detail::scoped_default_precision<value_type> precision_guard(arg);
23866: return cbrt(value_type(arg));
23866: }
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr multiprecision::number<Backend, ExpressionTemplates> erf (const multiprecision::number<Backend, ExpressionTemplates>& arg)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<Backend, ExpressionTemplates> > precision_guard(arg);
23866: return boost::math::erf(arg, c99_error_policy());
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type erf (const multiprecision::detail::expression<tag, A1, A2, A3, A4>& arg)
23866: {
23866: typedef typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type value_type;
23866: detail::scoped_default_precision<value_type> precision_guard(arg);
23866: return erf(value_type(arg));
23866: }
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr multiprecision::number<Backend, ExpressionTemplates> erfc (const multiprecision::number<Backend, ExpressionTemplates>& arg)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<Backend, ExpressionTemplates> > precision_guard(arg);
23866: return boost::math::erfc(arg, c99_error_policy());
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type erfc (const multiprecision::detail::expression<tag, A1, A2, A3, A4>& arg)
23866: {
23866: typedef typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type value_type;
23866: detail::scoped_default_precision<value_type> precision_guard(arg);
23866: return erfc(value_type(arg));
23866: }
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr multiprecision::number<Backend, ExpressionTemplates> expm1 (const multiprecision::number<Backend, ExpressionTemplates>& arg)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<Backend, ExpressionTemplates> > precision_guard(arg);
23866: return boost::math::expm1(arg, c99_error_policy());
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type expm1 (const multiprecision::detail::expression<tag, A1, A2, A3, A4>& arg)
23866: {
23866: typedef typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type value_type;
23866: detail::scoped_default_precision<value_type> precision_guard(arg);
23866: return expm1(value_type(arg));
23866: }
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr multiprecision::number<Backend, ExpressionTemplates> lgamma (const multiprecision::number<Backend, ExpressionTemplates>& arg)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<Backend, ExpressionTemplates> > precision_guard(arg);
23866: multiprecision::number<Backend, ExpressionTemplates> result;
23866: result = boost::math::lgamma(arg, c99_error_policy());
23866: if ((boost::multiprecision::isnan)(result) && !(boost::multiprecision::isnan)(arg))
23866: {
23866: result = std::numeric_limits<multiprecision::number<Backend, ExpressionTemplates> >::infinity();
23866: (*__errno_location ()) = 34;
23866: }
23866: return result;
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type lgamma (const multiprecision::detail::expression<tag, A1, A2, A3, A4>& arg)
23866: {
23866: typedef typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type value_type;
23866: detail::scoped_default_precision<value_type> precision_guard(arg);
23866: return lgamma(value_type(arg));
23866: }
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr multiprecision::number<Backend, ExpressionTemplates> tgamma (const multiprecision::number<Backend, ExpressionTemplates>& arg)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<Backend, ExpressionTemplates> > precision_guard(arg);
23866: if ((arg == 0) && std::numeric_limits<multiprecision::number<Backend, ExpressionTemplates> >::has_infinity)
23866: {
23866: (*__errno_location ()) = 34;
23866: return 1 / arg;
23866: }
23866: return boost::math::tgamma(arg, c99_error_policy());
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type tgamma (const multiprecision::detail::expression<tag, A1, A2, A3, A4>& arg)
23866: {
23866: typedef typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type value_type;
23866: detail::scoped_default_precision<value_type> precision_guard(arg);
23866: return tgamma(value_type(arg));
23866: }
23866:
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr long lrint (const multiprecision::number<Backend, ExpressionTemplates>& arg)
23866: {
23866: return lround(arg);
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr long lrint (const multiprecision::detail::expression<tag, A1, A2, A3, A4>& arg)
23866: {
23866: return lround(arg);
23866: }
23866:
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr boost::long_long_type llrint (const multiprecision::number<Backend, ExpressionTemplates>& arg)
23866: {
23866: return llround(arg);
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr boost::long_long_type llrint (const multiprecision::detail::expression<tag, A1, A2, A3, A4>& arg)
23866: {
23866: return llround(arg);
23866: }
23866:
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr multiprecision::number<Backend, ExpressionTemplates> log1p (const multiprecision::number<Backend, ExpressionTemplates>& arg)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<Backend, ExpressionTemplates> > precision_guard(arg);
23866: return boost::math::log1p(arg, c99_error_policy());
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type log1p (const multiprecision::detail::expression<tag, A1, A2, A3, A4>& arg)
23866: {
23866: typedef typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type value_type;
23866: detail::scoped_default_precision<value_type> precision_guard(arg);
23866: return log1p(value_type(arg));
23866: }
23866:
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr multiprecision::number<Backend, ExpressionTemplates> nextafter (const multiprecision::number<Backend, ExpressionTemplates>& a, const multiprecision::number<Backend, ExpressionTemplates>& b)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<Backend, ExpressionTemplates> > precision_guard(a, b);
23866: return boost::math::nextafter(a, b, c99_error_policy());
23866: }
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates, class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr multiprecision::number<Backend, ExpressionTemplates> nextafter (const multiprecision::number<Backend, ExpressionTemplates>& a, const multiprecision::detail::expression<tag, A1, A2, A3, A4>& b)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<Backend, ExpressionTemplates> > precision_guard(a, b);
23866: return nextafter (a, multiprecision::number<Backend, ExpressionTemplates>(b));
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4, class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr multiprecision::number<Backend, ExpressionTemplates> nextafter (const multiprecision::detail::expression<tag, A1, A2, A3, A4>& a, const multiprecision::number<Backend, ExpressionTemplates>& b)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<Backend, ExpressionTemplates> > precision_guard(a, b);
23866: return nextafter (multiprecision::number<Backend, ExpressionTemplates>(a), b);
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4, class tagb, class A1b, class A2b, class A3b, class A4b>
23866: inline constexpr typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type nextafter (const multiprecision::detail::expression<tag, A1, A2, A3, A4>& a, const multiprecision::detail::expression<tagb, A1b, A2b, A3b, A4b>& b)
23866: {
23866: typedef typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type value_type;
23866: detail::scoped_default_precision<value_type> precision_guard(a, b);
23866: return nextafter (value_type(a), value_type(b));
23866: }
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr multiprecision::number<Backend, ExpressionTemplates> nexttoward (const multiprecision::number<Backend, ExpressionTemplates>& a, const multiprecision::number<Backend, ExpressionTemplates>& b)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<Backend, ExpressionTemplates> > precision_guard(a, b);
23866: return boost::math::nextafter(a, b, c99_error_policy());
23866: }
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates, class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr multiprecision::number<Backend, ExpressionTemplates> nexttoward (const multiprecision::number<Backend, ExpressionTemplates>& a, const multiprecision::detail::expression<tag, A1, A2, A3, A4>& b)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<Backend, ExpressionTemplates> > precision_guard(a, b);
23866: return nexttoward (a, multiprecision::number<Backend, ExpressionTemplates>(b));
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4, class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr multiprecision::number<Backend, ExpressionTemplates> nexttoward (const multiprecision::detail::expression<tag, A1, A2, A3, A4>& a, const multiprecision::number<Backend, ExpressionTemplates>& b)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<Backend, ExpressionTemplates> > precision_guard(a, b);
23866: return nexttoward (multiprecision::number<Backend, ExpressionTemplates>(a), b);
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4, class tagb, class A1b, class A2b, class A3b, class A4b>
23866: inline constexpr typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type nexttoward (const multiprecision::detail::expression<tag, A1, A2, A3, A4>& a, const multiprecision::detail::expression<tagb, A1b, A2b, A3b, A4b>& b)
23866: {
23866: typedef typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type value_type;
23866: detail::scoped_default_precision<value_type> precision_guard(a, b);
23866: return nexttoward (value_type(a), value_type(b));
23866: }
23866:
23866: template <class B1, class B2, class B3, expression_template_option ET1, expression_template_option ET2, expression_template_option ET3>
23866: inline constexpr number<B1, ET1>& add(number<B1, ET1>& result, const number<B2, ET2>& a, const number<B3, ET3>& b)
23866: {
23866: static_assert((is_convertible<B2, B1>::value), "No conversion to the target of a mixed precision addition exists");
23866: static_assert((is_convertible<B3, B1>::value), "No conversion to the target of a mixed precision addition exists");
23866: using default_ops::eval_add;
23866: eval_add(result.backend(), a.backend(), b.backend());
23866: return result;
23866: }
23866:
23866: template <class B1, class B2, class B3, expression_template_option ET1, expression_template_option ET2, expression_template_option ET3>
23866: inline constexpr number<B1, ET1>& subtract(number<B1, ET1>& result, const number<B2, ET2>& a, const number<B3, ET3>& b)
23866: {
23866: static_assert((is_convertible<B2, B1>::value), "No conversion to the target of a mixed precision addition exists");
23866: static_assert((is_convertible<B3, B1>::value), "No conversion to the target of a mixed precision addition exists");
23866: using default_ops::eval_subtract;
23866: eval_subtract(result.backend(), a.backend(), b.backend());
23866: return result;
23866: }
23866:
23866: template <class B1, class B2, class B3, expression_template_option ET1, expression_template_option ET2, expression_template_option ET3>
23866: inline constexpr number<B1, ET1>& multiply(number<B1, ET1>& result, const number<B2, ET2>& a, const number<B3, ET3>& b)
23866: {
23866: static_assert((is_convertible<B2, B1>::value), "No conversion to the target of a mixed precision addition exists");
23866: static_assert((is_convertible<B3, B1>::value), "No conversion to the target of a mixed precision addition exists");
23866: using default_ops::eval_multiply;
23866: eval_multiply(result.backend(), a.backend(), b.backend());
23866: return result;
23866: }
23866:
23866: template <class B, expression_template_option ET, class I>
23866: inline constexpr typename enable_if_c<is_integral<I>::value, number<B, ET>&>::type
23866: add(number<B, ET>& result, const I& a, const I& b)
23866: {
23866: using default_ops::eval_add;
23866: typedef typename detail::canonical<I, B>::type canonical_type;
23866: eval_add(result.backend(), static_cast<canonical_type>(a), static_cast<canonical_type>(b));
23866: return result;
23866: }
23866:
23866: template <class B, expression_template_option ET, class I>
23866: inline constexpr typename enable_if_c<is_integral<I>::value, number<B, ET>&>::type
23866: subtract(number<B, ET>& result, const I& a, const I& b)
23866: {
23866: using default_ops::eval_subtract;
23866: typedef typename detail::canonical<I, B>::type canonical_type;
23866: eval_subtract(result.backend(), static_cast<canonical_type>(a), static_cast<canonical_type>(b));
23866: return result;
23866: }
23866:
23866: template <class B, expression_template_option ET, class I>
23866: inline constexpr typename enable_if_c<is_integral<I>::value, number<B, ET>&>::type
23866: multiply(number<B, ET>& result, const I& a, const I& b)
23866: {
23866: using default_ops::eval_multiply;
23866: typedef typename detail::canonical<I, B>::type canonical_type;
23866: eval_multiply(result.backend(), static_cast<canonical_type>(a), static_cast<canonical_type>(b));
23866: return result;
23866: }
23866:
23866: template <class tag, class A1, class A2, class A3, class A4, class Policy>
23866: inline constexpr typename detail::expression<tag, A1, A2, A3, A4>::result_type trunc(const detail::expression<tag, A1, A2, A3, A4>& v, const Policy& pol)
23866: {
23866: typedef typename detail::expression<tag, A1, A2, A3, A4>::result_type number_type;
23866: return std::move(trunc(number_type(v), pol));
23866: }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates, class Policy>
23866: inline constexpr number<Backend, ExpressionTemplates> trunc(const number<Backend, ExpressionTemplates>& v, const Policy&)
23866: {
23866: using default_ops::eval_trunc;
23866: detail::scoped_default_precision<multiprecision::number<Backend, ExpressionTemplates> > precision_guard(v);
23866: number<Backend, ExpressionTemplates> result;
23866: eval_trunc(result.backend(), v.backend());
23866: return result;
23866: }
23866:
23866: template <class tag, class A1, class A2, class A3, class A4, class Policy>
23866: inline constexpr int itrunc(const detail::expression<tag, A1, A2, A3, A4>& v, const Policy& pol)
23866: {
23866: typedef typename detail::expression<tag, A1, A2, A3, A4>::result_type number_type;
23866: number_type r(trunc(v, pol));
23866: if ((r > (std::numeric_limits<int>::max)()) || r < (std::numeric_limits<int>::min)() || !(boost::math::isfinite)(v))
23866: return boost::math::policies::raise_rounding_error("boost::multiprecision::itrunc<%1%>(%1%)", 0, number_type(v), 0, pol);
23866: return r.template convert_to<int>();
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr int itrunc(const detail::expression<tag, A1, A2, A3, A4>& v)
23866: {
23866: return itrunc(v, boost::math::policies::policy<>());
23866: }
23866: template <class Backend, expression_template_option ExpressionTemplates, class Policy>
23866: inline constexpr int itrunc(const number<Backend, ExpressionTemplates>& v, const Policy& pol)
23866: {
23866: number<Backend, ExpressionTemplates> r(trunc(v, pol));
23866: if ((r > (std::numeric_limits<int>::max)()) || r < (std::numeric_limits<int>::min)() || !(boost::math::isfinite)(v))
23866: return boost::math::policies::raise_rounding_error("boost::multiprecision::itrunc<%1%>(%1%)", 0, v, 0, pol);
23866: return r.template convert_to<int>();
23866: }
23866: template <class Backend, expression_template_option ExpressionTemplates>
23866: inline constexpr int itrunc(const number<Backend, ExpressionTemplates>& v)
23866: {
23866: return itrunc(v, boost::math::policies::policy<>());
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4, class Policy>
23866: inline constexpr long ltrunc(const detail::expression<tag, A1, A2, A3, A4>& v, const Policy& pol)
23866: {
23866: typedef typename detail::expression<tag, A1, A2, A3, A4>::result_type number_type;
23866: number_type r(trunc(v, pol));
23866: if ((r > (std::numeric_limits<long>::max)()) || r < (std::numeric_limits<long>::min)() || !(boost::math::isfinite)(v))
23866: return boost::math::policies::raise_rounding_error("boost::multiprecision::ltrunc<%1%>(%1%)", 0, number_type(v), 0L, pol);
23866: return r.template convert_to<long>();
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr long ltrunc(const detail::expression<tag, A1, A2, A3, A4>& v)
23866: {
23866: return ltrunc(v, boost::math::policies::policy<>());
23866: }
23866: template <class T, expression_template_option ExpressionTemplates, class Policy>
23866: inline constexpr long ltrunc(const number<T, ExpressionTemplates>& v, const Policy& pol)
23866: {
23866: number<T, ExpressionTemplates> r(trunc(v, pol));
23866: if ((r > (std::numeric_limits<long>::max)()) || r < (std::numeric_limits<long>::min)() || !(boost::math::isfinite)(v))
23866: return boost::math::policies::raise_rounding_error("boost::multiprecision::ltrunc<%1%>(%1%)", 0, v, 0L, pol);
23866: return r.template convert_to<long>();
23866: }
23866: template <class T, expression_template_option ExpressionTemplates>
23866: inline constexpr long ltrunc(const number<T, ExpressionTemplates>& v)
23866: {
23866: return ltrunc(v, boost::math::policies::policy<>());
23866: }
23866:
23866: template <class tag, class A1, class A2, class A3, class A4, class Policy>
23866: inline constexpr boost::long_long_type lltrunc(const detail::expression<tag, A1, A2, A3, A4>& v, const Policy& pol)
23866: {
23866: typedef typename detail::expression<tag, A1, A2, A3, A4>::result_type number_type;
23866: number_type r(trunc(v, pol));
23866: if ((r > (std::numeric_limits<boost::long_long_type>::max)()) || r < (std::numeric_limits<boost::long_long_type>::min)() || !(boost::math::isfinite)(v))
23866: return boost::math::policies::raise_rounding_error("boost::multiprecision::lltrunc<%1%>(%1%)", 0, number_type(v), 0LL, pol);
23866: return r.template convert_to<boost::long_long_type>();
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr boost::long_long_type lltrunc(const detail::expression<tag, A1, A2, A3, A4>& v)
23866: {
23866: return lltrunc(v, boost::math::policies::policy<>());
23866: }
23866: template <class T, expression_template_option ExpressionTemplates, class Policy>
23866: inline constexpr boost::long_long_type lltrunc(const number<T, ExpressionTemplates>& v, const Policy& pol)
23866: {
23866: number<T, ExpressionTemplates> r(trunc(v, pol));
23866: if ((r > (std::numeric_limits<boost::long_long_type>::max)()) || r < (std::numeric_limits<boost::long_long_type>::min)() || !(boost::math::isfinite)(v))
23866: return boost::math::policies::raise_rounding_error("boost::multiprecision::lltrunc<%1%>(%1%)", 0, v, 0LL, pol);
23866: return r.template convert_to<boost::long_long_type>();
23866: }
23866: template <class T, expression_template_option ExpressionTemplates>
23866: inline constexpr boost::long_long_type lltrunc(const number<T, ExpressionTemplates>& v)
23866: {
23866: return lltrunc(v, boost::math::policies::policy<>());
23866: }
23866:
23866: template <class tag, class A1, class A2, class A3, class A4, class Policy>
23866: inline constexpr typename detail::expression<tag, A1, A2, A3, A4>::result_type round(const detail::expression<tag, A1, A2, A3, A4>& v, const Policy& pol)
23866: {
23866: typedef typename detail::expression<tag, A1, A2, A3, A4>::result_type number_type;
23866: return std::move(round(static_cast<number_type>(v), pol));
23866: }
23866: template <class T, expression_template_option ExpressionTemplates, class Policy>
23866: inline constexpr number<T, ExpressionTemplates> round(const number<T, ExpressionTemplates>& v, const Policy&)
23866: {
23866: using default_ops::eval_round;
23866: detail::scoped_default_precision<multiprecision::number<T, ExpressionTemplates> > precision_guard(v);
23866: number<T, ExpressionTemplates> result;
23866: eval_round(result.backend(), v.backend());
23866: return result;
23866: }
23866:
23866: template <class tag, class A1, class A2, class A3, class A4, class Policy>
23866: inline constexpr int iround(const detail::expression<tag, A1, A2, A3, A4>& v, const Policy& pol)
23866: {
23866: typedef typename detail::expression<tag, A1, A2, A3, A4>::result_type number_type;
23866: number_type r(round(v, pol));
23866: if ((r > (std::numeric_limits<int>::max)()) || r < (std::numeric_limits<int>::min)() || !(boost::math::isfinite)(v))
23866: return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, number_type(v), 0, pol);
23866: return r.template convert_to<int>();
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr int iround(const detail::expression<tag, A1, A2, A3, A4>& v)
23866: {
23866: return iround(v, boost::math::policies::policy<>());
23866: }
23866: template <class T, expression_template_option ExpressionTemplates, class Policy>
23866: inline constexpr int iround(const number<T, ExpressionTemplates>& v, const Policy& pol)
23866: {
23866: number<T, ExpressionTemplates> r(round(v, pol));
23866: if ((r > (std::numeric_limits<int>::max)()) || r < (std::numeric_limits<int>::min)() || !(boost::math::isfinite)(v))
23866: return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, v, 0, pol);
23866: return r.template convert_to<int>();
23866: }
23866: template <class T, expression_template_option ExpressionTemplates>
23866: inline constexpr int iround(const number<T, ExpressionTemplates>& v)
23866: {
23866: return iround(v, boost::math::policies::policy<>());
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4, class Policy>
23866: inline constexpr long lround(const detail::expression<tag, A1, A2, A3, A4>& v, const Policy& pol)
23866: {
23866: typedef typename detail::expression<tag, A1, A2, A3, A4>::result_type number_type;
23866: number_type r(round(v, pol));
23866: if ((r > (std::numeric_limits<long>::max)()) || r < (std::numeric_limits<long>::min)() || !(boost::math::isfinite)(v))
23866: return boost::math::policies::raise_rounding_error("boost::multiprecision::lround<%1%>(%1%)", 0, number_type(v), 0L, pol);
23866: return r.template convert_to<long>();
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr long lround(const detail::expression<tag, A1, A2, A3, A4>& v)
23866: {
23866: return lround(v, boost::math::policies::policy<>());
23866: }
23866: template <class T, expression_template_option ExpressionTemplates, class Policy>
23866: inline constexpr long lround(const number<T, ExpressionTemplates>& v, const Policy& pol)
23866: {
23866: number<T, ExpressionTemplates> r(round(v, pol));
23866: if ((r > (std::numeric_limits<long>::max)()) || r < (std::numeric_limits<long>::min)() || !(boost::math::isfinite)(v))
23866: return boost::math::policies::raise_rounding_error("boost::multiprecision::lround<%1%>(%1%)", 0, v, 0L, pol);
23866: return r.template convert_to<long>();
23866: }
23866: template <class T, expression_template_option ExpressionTemplates>
23866: inline constexpr long lround(const number<T, ExpressionTemplates>& v)
23866: {
23866: return lround(v, boost::math::policies::policy<>());
23866: }
23866:
23866: template <class tag, class A1, class A2, class A3, class A4, class Policy>
23866: inline constexpr boost::long_long_type llround(const detail::expression<tag, A1, A2, A3, A4>& v, const Policy& pol)
23866: {
23866: typedef typename detail::expression<tag, A1, A2, A3, A4>::result_type number_type;
23866: number_type r(round(v, pol));
23866: if ((r > (std::numeric_limits<boost::long_long_type>::max)()) || r < (std::numeric_limits<boost::long_long_type>::min)() || !(boost::math::isfinite)(v))
23866: return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, number_type(v), 0LL, pol);
23866: return r.template convert_to<boost::long_long_type>();
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr boost::long_long_type llround(const detail::expression<tag, A1, A2, A3, A4>& v)
23866: {
23866: return llround(v, boost::math::policies::policy<>());
23866: }
23866: template <class T, expression_template_option ExpressionTemplates, class Policy>
23866: inline constexpr boost::long_long_type llround(const number<T, ExpressionTemplates>& v, const Policy& pol)
23866: {
23866: number<T, ExpressionTemplates> r(round(v, pol));
23866: if ((r > (std::numeric_limits<boost::long_long_type>::max)()) || r < (std::numeric_limits<boost::long_long_type>::min)() || !(boost::math::isfinite)(v))
23866: return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, v, 0LL, pol);
23866: return r.template convert_to<boost::long_long_type>();
23866: }
23866: template <class T, expression_template_option ExpressionTemplates>
23866: inline constexpr boost::long_long_type llround(const number<T, ExpressionTemplates>& v)
23866: {
23866: return llround(v, boost::math::policies::policy<>());
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class T, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<number_category<T>::value == number_kind_floating_point, number<T, ExpressionTemplates> >::type frexp(const number<T, ExpressionTemplates>& v, short* pint)
23866: {
23866: using default_ops::eval_frexp;
23866: detail::scoped_default_precision<multiprecision::number<T, ExpressionTemplates> > precision_guard(v);
23866: number<T, ExpressionTemplates> result;
23866: eval_frexp(result.backend(), v.backend(), pint);
23866: return result;
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename enable_if_c<number_category<typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value == number_kind_floating_point, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::type
23866: frexp(const detail::expression<tag, A1, A2, A3, A4>& v, short* pint)
23866: {
23866: typedef typename detail::expression<tag, A1, A2, A3, A4>::result_type number_type;
23866: return std::move(frexp(static_cast<number_type>(v), pint));
23866: }
23866: template <class T, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<number_category<T>::value == number_kind_floating_point, number<T, ExpressionTemplates> >::type frexp(const number<T, ExpressionTemplates>& v, int* pint)
23866: {
23866: using default_ops::eval_frexp;
23866: detail::scoped_default_precision<multiprecision::number<T, ExpressionTemplates> > precision_guard(v);
23866: number<T, ExpressionTemplates> result;
23866: eval_frexp(result.backend(), v.backend(), pint);
23866: return result;
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename enable_if_c<number_category<typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value == number_kind_floating_point, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::type
23866: frexp(const detail::expression<tag, A1, A2, A3, A4>& v, int* pint)
23866: {
23866: typedef typename detail::expression<tag, A1, A2, A3, A4>::result_type number_type;
23866: return std::move(frexp(static_cast<number_type>(v), pint));
23866: }
23866: template <class T, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<number_category<T>::value == number_kind_floating_point, number<T, ExpressionTemplates> >::type frexp(const number<T, ExpressionTemplates>& v, long* pint)
23866: {
23866: using default_ops::eval_frexp;
23866: detail::scoped_default_precision<multiprecision::number<T, ExpressionTemplates> > precision_guard(v);
23866: number<T, ExpressionTemplates> result;
23866: eval_frexp(result.backend(), v.backend(), pint);
23866: return result;
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename enable_if_c<number_category<typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value == number_kind_floating_point, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::type
23866: frexp(const detail::expression<tag, A1, A2, A3, A4>& v, long* pint)
23866: {
23866: typedef typename detail::expression<tag, A1, A2, A3, A4>::result_type number_type;
23866: return std::move(frexp(static_cast<number_type>(v), pint));
23866: }
23866: template <class T, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<number_category<T>::value == number_kind_floating_point, number<T, ExpressionTemplates> >::type frexp(const number<T, ExpressionTemplates>& v, boost::long_long_type* pint)
23866: {
23866: using default_ops::eval_frexp;
23866: detail::scoped_default_precision<multiprecision::number<T, ExpressionTemplates> > precision_guard(v);
23866: number<T, ExpressionTemplates> result;
23866: eval_frexp(result.backend(), v.backend(), pint);
23866: return result;
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename enable_if_c<number_category<typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value == number_kind_floating_point, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::type
23866: frexp(const detail::expression<tag, A1, A2, A3, A4>& v, boost::long_long_type* pint)
23866: {
23866: typedef typename detail::expression<tag, A1, A2, A3, A4>::result_type number_type;
23866: return std::move(frexp(static_cast<number_type>(v), pint));
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template <class T, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<number_category<T>::value == number_kind_floating_point, number<T, ExpressionTemplates> >::type modf(const number<T, ExpressionTemplates>& v, number<T, ExpressionTemplates>* pipart)
23866: {
23866: using default_ops::eval_modf;
23866: detail::scoped_default_precision<multiprecision::number<T, ExpressionTemplates> > precision_guard(v);
23866: number<T, ExpressionTemplates> result;
23866: eval_modf(result.backend(), v.backend(), pipart ? &pipart->backend() : 0);
23866: return result;
23866: }
23866: template <class T, expression_template_option ExpressionTemplates, class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename enable_if_c<number_category<T>::value == number_kind_floating_point, number<T, ExpressionTemplates> >::type modf(const detail::expression<tag, A1, A2, A3, A4>& v, number<T, ExpressionTemplates>* pipart)
23866: {
23866: using default_ops::eval_modf;
23866: detail::scoped_default_precision<multiprecision::number<T, ExpressionTemplates> > precision_guard(v);
23866: number<T, ExpressionTemplates> result, arg(v);
23866: eval_modf(result.backend(), arg.backend(), pipart ? &pipart->backend() : 0);
23866: return result;
23866: }
23866:
23866:
23866:
23866:
23866: template <class B, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, ExpressionTemplates> >::type
23866: sqrt(const number<B, ExpressionTemplates>& x)
23866: {
23866: using default_ops::eval_integer_sqrt;
23866: number<B, ExpressionTemplates> s, r;
23866: eval_integer_sqrt(s.backend(), r.backend(), x.backend());
23866: return s;
23866: }
23866:
23866:
23866:
23866:
23866: namespace default_ops {
23866:
23866: struct fma_func
23866: {
23866: template <class B, class T, class U, class V>
23866: constexpr void operator()(B& result, const T& a, const U& b, const V& c) const
23866: {
23866: eval_multiply_add(result, a, b, c);
23866: }
23866: };
23866:
23866: }
23866:
23866: template <class Backend, class U, class V>
23866: inline constexpr typename enable_if<
23866: mpl::and_<
23866: mpl::bool_<number_category<number<Backend, et_on> >::value == number_kind_floating_point>,
23866: mpl::or_<
23866: is_number<U>,
23866: is_number_expression<U>,
23866: is_arithmetic<U> >,
23866: mpl::or_<
23866: is_number<V>,
23866: is_number_expression<V>,
23866: is_arithmetic<V> > >,
23866: detail::expression<detail::function, default_ops::fma_func, number<Backend, et_on>, U, V> >::type
23866: fma(const number<Backend, et_on>& a, const U& b, const V& c)
23866: {
23866: return detail::expression<detail::function, default_ops::fma_func, number<Backend, et_on>, U, V>(
23866: default_ops::fma_func(), a, b, c);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class U, class V>
23866: inline constexpr typename enable_if<
23866: mpl::and_<
23866: mpl::bool_<number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_floating_point>,
23866: mpl::or_<
23866: is_number<U>,
23866: is_number_expression<U>,
23866: is_arithmetic<U> >,
23866: mpl::or_<
23866: is_number<V>,
23866: is_number_expression<V>,
23866: is_arithmetic<V> > >,
23866: detail::expression<detail::function, default_ops::fma_func, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, U, V> >::type
23866: fma(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const U& b, const V& c)
23866: {
23866: return detail::expression<detail::function, default_ops::fma_func, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, U, V>(
23866: default_ops::fma_func(), a, b, c);
23866: }
23866:
23866: template <class Backend, class U, class V>
23866: inline constexpr typename enable_if<
23866: mpl::and_<
23866: mpl::bool_<number_category<number<Backend, et_off> >::value == number_kind_floating_point>,
23866: mpl::or_<
23866: is_number<U>,
23866: is_number_expression<U>,
23866: is_arithmetic<U> >,
23866: mpl::or_<
23866: is_number<V>,
23866: is_number_expression<V>,
23866: is_arithmetic<V> > >,
23866: number<Backend, et_off> >::type
23866: fma(const number<Backend, et_off>& a, const U& b, const V& c)
23866: {
23866: using default_ops::eval_multiply_add;
23866: detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(a, b, c);
23866: number<Backend, et_off> result;
23866: eval_multiply_add(result.backend(), number<Backend, et_off>::canonical_value(a), number<Backend, et_off>::canonical_value(b), number<Backend, et_off>::canonical_value(c));
23866: return result;
23866: }
23866:
23866: template <class U, class Backend, class V>
23866: inline constexpr typename enable_if<
23866: mpl::and_<
23866: mpl::bool_<number_category<number<Backend, et_on> >::value == number_kind_floating_point>,
23866: is_arithmetic<U>,
23866: mpl::or_<
23866: is_number<V>,
23866: is_number_expression<V>,
23866: is_arithmetic<V> > >,
23866: detail::expression<detail::function, default_ops::fma_func, U, number<Backend, et_on>, V> >::type
23866: fma(const U& a, const number<Backend, et_on>& b, const V& c)
23866: {
23866: return detail::expression<detail::function, default_ops::fma_func, U, number<Backend, et_on>, V>(
23866: default_ops::fma_func(), a, b, c);
23866: }
23866:
23866: template <class U, class tag, class Arg1, class Arg2, class Arg3, class Arg4, class V>
23866: inline constexpr typename enable_if<
23866: mpl::and_<
23866: mpl::bool_<number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_floating_point>,
23866: is_arithmetic<U>,
23866: mpl::or_<
23866: is_number<V>,
23866: is_number_expression<V>,
23866: is_arithmetic<V> > >,
23866: detail::expression<detail::function, default_ops::fma_func, U, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V> >::type
23866: fma(const U& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b, const V& c)
23866: {
23866: return detail::expression<detail::function, default_ops::fma_func, U, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V>(
23866: default_ops::fma_func(), a, b, c);
23866: }
23866:
23866: template <class U, class Backend, class V>
23866: inline constexpr typename enable_if<
23866: mpl::and_<
23866: mpl::bool_<number_category<number<Backend, et_off> >::value == number_kind_floating_point>,
23866: is_arithmetic<U>,
23866: mpl::or_<
23866: is_number<V>,
23866: is_number_expression<V>,
23866: is_arithmetic<V> > >,
23866: number<Backend, et_off> >::type
23866: fma(const U& a, const number<Backend, et_off>& b, const V& c)
23866: {
23866: using default_ops::eval_multiply_add;
23866: detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(a, b, c);
23866: number<Backend, et_off> result;
23866: eval_multiply_add(result.backend(), number<Backend, et_off>::canonical_value(a), number<Backend, et_off>::canonical_value(b), number<Backend, et_off>::canonical_value(c));
23866: return result;
23866: }
23866:
23866: template <class U, class V, class Backend>
23866: inline constexpr typename enable_if<
23866: mpl::and_<
23866: mpl::bool_<number_category<number<Backend, et_on> >::value == number_kind_floating_point>,
23866: is_arithmetic<U>,
23866: is_arithmetic<V> >,
23866: detail::expression<detail::function, default_ops::fma_func, U, V, number<Backend, et_on> > >::type
23866: fma(const U& a, const V& b, const number<Backend, et_on>& c)
23866: {
23866: return detail::expression<detail::function, default_ops::fma_func, U, V, number<Backend, et_on> >(
23866: default_ops::fma_func(), a, b, c);
23866: }
23866:
23866: template <class U, class V, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename enable_if<
23866: mpl::and_<
23866: mpl::bool_<number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_floating_point>,
23866: is_arithmetic<U>,
23866: is_arithmetic<V> >,
23866: detail::expression<detail::function, default_ops::fma_func, U, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > >::type
23866: fma(const U& a, const V& b, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& c)
23866: {
23866: return detail::expression<detail::function, default_ops::fma_func, U, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(
23866: default_ops::fma_func(), a, b, c);
23866: }
23866:
23866: template <class U, class V, class Backend>
23866: inline constexpr typename enable_if<
23866: mpl::and_<
23866: mpl::bool_<number_category<number<Backend, et_off> >::value == number_kind_floating_point>,
23866: is_arithmetic<U>,
23866: is_arithmetic<V> >,
23866: number<Backend, et_off> >::type
23866: fma(const U& a, const V& b, const number<Backend, et_off>& c)
23866: {
23866: using default_ops::eval_multiply_add;
23866: detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(a, b, c);
23866: number<Backend, et_off> result;
23866: eval_multiply_add(result.backend(), number<Backend, et_off>::canonical_value(a), number<Backend, et_off>::canonical_value(b), number<Backend, et_off>::canonical_value(c));
23866: return result;
23866: }
23866:
23866: namespace default_ops {
23866:
23866: struct remquo_func
23866: {
23866: template <class B, class T, class U>
23866: constexpr void operator()(B& result, const T& a, const U& b, int* pi) const
23866: {
23866: eval_remquo(result, a, b, pi);
23866: }
23866: };
23866:
23866: }
23866:
23866: template <class Backend, class U>
23866: inline constexpr typename enable_if_c<
23866: number_category<number<Backend, et_on> >::value == number_kind_floating_point,
23866: detail::expression<detail::function, default_ops::remquo_func, number<Backend, et_on>, U, int*> >::type
23866: remquo(const number<Backend, et_on>& a, const U& b, int* pi)
23866: {
23866: return detail::expression<detail::function, default_ops::remquo_func, number<Backend, et_on>, U, int*>(
23866: default_ops::remquo_func(), a, b, pi);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class U>
23866: inline constexpr typename enable_if_c<
23866: number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_floating_point,
23866: detail::expression<detail::function, default_ops::remquo_func, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, U, int*> >::type
23866: remquo(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const U& b, int* pi)
23866: {
23866: return detail::expression<detail::function, default_ops::remquo_func, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, U, int*>(
23866: default_ops::remquo_func(), a, b, pi);
23866: }
23866:
23866: template <class U, class Backend>
23866: inline constexpr typename enable_if_c<
23866: (number_category<number<Backend, et_on> >::value == number_kind_floating_point) && !is_number<U>::value && !is_number_expression<U>::value,
23866: detail::expression<detail::function, default_ops::remquo_func, U, number<Backend, et_on>, int*> >::type
23866: remquo(const U& a, const number<Backend, et_on>& b, int* pi)
23866: {
23866: return detail::expression<detail::function, default_ops::remquo_func, U, number<Backend, et_on>, int*>(
23866: default_ops::remquo_func(), a, b, pi);
23866: }
23866:
23866: template <class U, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename enable_if_c<
23866: (number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_floating_point) && !is_number<U>::value && !is_number_expression<U>::value,
23866: detail::expression<detail::function, default_ops::remquo_func, U, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, int*> >::type
23866: remquo(const U& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b, int* pi)
23866: {
23866: return detail::expression<detail::function, default_ops::remquo_func, U, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, int*>(
23866: default_ops::remquo_func(), a, b, pi);
23866: }
23866:
23866: template <class Backend, class U>
23866: inline constexpr typename enable_if_c<
23866: number_category<number<Backend, et_on> >::value == number_kind_floating_point,
23866: number<Backend, et_off> >::type
23866: remquo(const number<Backend, et_off>& a, const U& b, int* pi)
23866: {
23866: using default_ops::eval_remquo;
23866: detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(a, b);
23866: number<Backend, et_off> result;
23866: eval_remquo(result.backend(), a.backend(), number<Backend, et_off>::canonical_value(b), pi);
23866: return result;
23866: }
23866: template <class U, class Backend>
23866: inline constexpr typename enable_if_c<
23866: (number_category<number<Backend, et_on> >::value == number_kind_floating_point) && !is_number<U>::value && !is_number_expression<U>::value,
23866: number<Backend, et_off> >::type
23866: remquo(const U& a, const number<Backend, et_off>& b, int* pi)
23866: {
23866: using default_ops::eval_remquo;
23866: detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(a, b);
23866: number<Backend, et_off> result;
23866: eval_remquo(result.backend(), number<Backend, et_off>::canonical_value(a), b.backend(), pi);
23866: return result;
23866: }
23866:
23866: template <class B, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, ExpressionTemplates> >::type
23866: sqrt(const number<B, ExpressionTemplates>& x, number<B, ExpressionTemplates>& r)
23866: {
23866: using default_ops::eval_integer_sqrt;
23866: detail::scoped_default_precision<multiprecision::number<B, ExpressionTemplates> > precision_guard(x, r);
23866: number<B, ExpressionTemplates> s;
23866: eval_integer_sqrt(s.backend(), r.backend(), x.backend());
23866: return s;
23866: }
23866:
23866:
23866:
23866:
23866: #define UNARY_OP_FUNCTOR_CXX11_RVALUE(func,category) template <class Backend> inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c<number_category<Backend>::value == category, number<Backend, et_on> > ::type func(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::BOOST_JOIN(eval_, func); BOOST_JOIN(eval_, func)(result.backend(), arg.backend()); return result; }
23866: # 3063 "/usr/include/boost/multiprecision/detail/default_ops.hpp" 3 4
23866: #define BINARY_OP_FUNCTOR_CXX11_RVALUE(func,category) template <class Backend> inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c<number_category<Backend>::value == category, number<Backend, et_on> >::type func(number<Backend, et_on>&& arg, const number<Backend, et_on>& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::BOOST_JOIN(eval_, func); BOOST_JOIN(eval_, func)(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend> inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c<number_category<Backend>::value == category, number<Backend, et_on> >::type func(const number<Backend, et_on>& arg, number<Backend, et_on>&& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::BOOST_JOIN(eval_, func); BOOST_JOIN(eval_, func)(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend> inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c<number_category<Backend>::value == category, number<Backend, et_on> >::type func(number<Backend, et_on>&& arg, number<Backend, et_on>&& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::BOOST_JOIN(eval_, func); BOOST_JOIN(eval_, func)(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend, class tag, class A1, class A2, class A3, class A4> inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c<(number_category<Backend>::value == category) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), number<Backend, et_on> > ::type func(number<Backend, et_on>&& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression<detail::function, detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct)) < Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > (detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct))<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Backend> inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c<(number_category<Backend>::value == category) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), number<Backend, et_on> > ::type func(const detail::expression<tag, A1, A2, A3, A4>& arg, number<Backend, et_on>&& a) { return detail::expression<detail::function, detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct)) < Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > (detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct))<Backend>(), arg, a); } template <class Backend, class Arithmetic> inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == category), number<Backend, et_on> >::type func(number<Backend, et_on>&& arg, const Arithmetic& a) { return detail::expression<detail::function, detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct))<Backend>, number<Backend, et_on>, Arithmetic > (detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct))<Backend>(), arg, a); } template <class Backend, class Arithmetic> inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == category), number<Backend, et_on> > ::type func(const Arithmetic& arg, number<Backend, et_on>&& a) { return detail::expression< detail::function, detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct)) < Backend>, Arithmetic, number<Backend, et_on> > (detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct)) < Backend > (), arg, a); }
23866: # 3132 "/usr/include/boost/multiprecision/detail/default_ops.hpp" 3 4
23866: #define UNARY_OP_FUNCTOR(func,category) namespace detail { template <class Backend> struct BOOST_JOIN(category, BOOST_JOIN(func, _funct)) { BOOST_MP_CXX14_CONSTEXPR void operator()(Backend& result, const Backend& arg) const { using default_ops::BOOST_JOIN(eval_, func); BOOST_JOIN(eval_, func) (result, arg); } template <class U> BOOST_MP_CXX14_CONSTEXPR void operator()(U& result, const Backend& arg) const { using default_ops::BOOST_JOIN(eval_, func); Backend temp; BOOST_JOIN(eval_, func) (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == category, detail::expression<detail::function, detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct))<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type func(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct)) < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct)) < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c<number_category<Backend>::value == category, detail::expression<detail::function, detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct)) < Backend>, number<Backend, et_on> > > ::type func(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct)) < Backend>, number<Backend, et_on> > (detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct)) < Backend > (), arg); } template <class Backend> inline BOOST_MP_CXX14_CONSTEXPR typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == category, number<Backend, et_off> >::type func(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::BOOST_JOIN(eval_, func); BOOST_JOIN(eval_, func)(result.backend(), arg.backend()); return result; } UNARY_OP_FUNCTOR_CXX11_RVALUE(func, category)
23866: # 3189 "/usr/include/boost/multiprecision/detail/default_ops.hpp" 3 4
23866: #define BINARY_OP_FUNCTOR(func,category) namespace detail { template <class Backend> struct BOOST_JOIN(category, BOOST_JOIN(func, _funct)) { BOOST_MP_CXX14_CONSTEXPR void operator()(Backend& result, const Backend& arg, const Backend& a) const { using default_ops::BOOST_JOIN(eval_, func); BOOST_JOIN(eval_, func) (result, arg, a); } template <class Arithmetic> BOOST_MP_CXX14_CONSTEXPR void operator()(Backend& result, const Backend& arg, const Arithmetic& a) const { using default_ops::BOOST_JOIN(eval_, func); BOOST_JOIN(eval_, func) (result, arg, number<Backend>::canonical_value(a)); } template <class Arithmetic> BOOST_MP_CXX14_CONSTEXPR void operator()(Backend& result, const Arithmetic& arg, const Backend& a) const { using default_ops::BOOST_JOIN(eval_, func); BOOST_JOIN(eval_, func) (result, number<Backend>::canonical_value(arg), a); } template <class U> BOOST_MP_CXX14_CONSTEXPR void operator()(U& result, const Backend& arg, const Backend& a) const { using default_ops::BOOST_JOIN(eval_, func); Backend r; BOOST_JOIN(eval_, func) (r, arg, a); result = r; } template <class U, class Arithmetic> BOOST_MP_CXX14_CONSTEXPR void operator()(U& result, const Backend& arg, const Arithmetic& a) const { using default_ops::BOOST_JOIN(eval_, func); Backend r; BOOST_JOIN(eval_, func) (r, arg, number<Backend>::canonical_value(a)); result = r; } template <class U, class Arithmetic> BOOST_MP_CXX14_CONSTEXPR void operator()(U& result, const Arithmetic& arg, const Backend& a) const { using default_ops::BOOST_JOIN(eval_, func); Backend r; BOOST_JOIN(eval_, func) (r, number<Backend>::canonical_value(arg), a); result = r; } }; } template <class Backend> inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c<number_category<Backend>::value == category, detail::expression<detail::function, detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct))<Backend>, number<Backend, et_on>, number<Backend, et_on> > > ::type func(const number<Backend, et_on>& arg, const number<Backend, et_on>& a) { return detail::expression<detail::function, detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct)) < Backend>, number<Backend, et_on>, number<Backend, et_on> > (detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct))<Backend>(), arg, a); } template <class Backend, class tag, class A1, class A2, class A3, class A4> inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c<(number_category<Backend>::value == category) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), detail::expression<detail::function, detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct))<Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > > ::type func(const number<Backend, et_on>& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression<detail::function, detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct)) < Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > (detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct))<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Backend> inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c<(number_category<Backend>::value == category) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), detail::expression<detail::function, detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct))<Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > > ::type func(const detail::expression<tag, A1, A2, A3, A4>& arg, const number<Backend, et_on>& a) { return detail::expression<detail::function, detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct)) < Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > (detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct))<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class tagb, class A1b, class A2b, class A3b, class A4b> inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c<(number_category<detail::expression<tag, A1, A2, A3, A4> >::value == category) && (number_category<detail::expression<tagb, A1b, A2b, A3b, A4b> >::value == category), detail::expression<detail::function, detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct))<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, detail::expression<tagb, A1b, A2b, A3b, A4b> > > ::type func(const detail::expression<tag, A1, A2, A3, A4>& arg, const detail::expression<tagb, A1b, A2b, A3b, A4b>& a) { return detail::expression<detail::function, detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct))<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, detail::expression<tagb, A1b, A2b, A3b, A4b> > (detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct))<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>(), arg, a); } template <class Backend, class Arithmetic> inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == category), detail::expression<detail::function, detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct)) < Backend>, number<Backend, et_on>, Arithmetic> > ::type func(const number<Backend, et_on>& arg, const Arithmetic& a) { return detail::expression<detail::function, detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct))<Backend>, number<Backend, et_on>, Arithmetic > (detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct))<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Arithmetic> inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value && (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == category), detail::expression< detail::function, detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct)) < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, Arithmetic> > ::type func(const detail::expression<tag, A1, A2, A3, A4>& arg, const Arithmetic& a) { return detail::expression< detail::function, detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct)) < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, Arithmetic > (detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct)) < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend, class Arithmetic> inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == category), detail::expression< detail::function, detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct)) < Backend>, Arithmetic, number<Backend, et_on> > > ::type func(const Arithmetic& arg, const number<Backend, et_on>& a) { return detail::expression< detail::function, detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct)) < Backend>, Arithmetic, number<Backend, et_on> > (detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct)) < Backend > (), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Arithmetic> inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value && (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == category), detail::expression< detail::function, detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct)) < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, Arithmetic, detail::expression<tag, A1, A2, A3, A4> > > ::type func(const Arithmetic& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression< detail::function, detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct)) < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, Arithmetic, detail::expression<tag, A1, A2, A3, A4> > (detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct)) < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend> inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c<(number_category<Backend>::value == category), number<Backend, et_off> >::type func(const number<Backend, et_off>& arg, const number<Backend, et_off>& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::BOOST_JOIN(eval_, func); BOOST_JOIN(eval_, func)(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend, class Arithmetic> inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_off> >::value && (number_category<Backend>::value == category), number<Backend, et_off> >::type func(const number<Backend, et_off>& arg, const Arithmetic& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::BOOST_JOIN(eval_, func); BOOST_JOIN(eval_, func) (result.backend(), arg.backend(), number<Backend, et_off>::canonical_value(a)); return result; } template <class Backend, class Arithmetic> inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_off> >::value && (number_category<Backend>::value == category), number<Backend, et_off> >::type func(const Arithmetic& a, const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::BOOST_JOIN(eval_, func); BOOST_JOIN(eval_, func) (result.backend(), number<Backend, et_off>::canonical_value(a), arg.backend()); return result; } BINARY_OP_FUNCTOR_CXX11_RVALUE(func, category)
23866: # 3360 "/usr/include/boost/multiprecision/detail/default_ops.hpp" 3 4
23866: #define HETERO_BINARY_OP_FUNCTOR_B(func,Arg2,category) template <class tag, class A1, class A2, class A3, class A4> inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c< (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == category), detail::expression< detail::function, detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct)) < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, Arg2> > ::type func(const detail::expression<tag, A1, A2, A3, A4>& arg, Arg2 const& a) { return detail::expression< detail::function, detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct)) < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, Arg2 > (detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct)) < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend> inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c< (number_category<Backend>::value == category), detail::expression< detail::function, detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct)) < Backend>, number<Backend, et_on>, Arg2> > ::type func(const number<Backend, et_on>& arg, Arg2 const& a) { return detail::expression< detail::function, detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct)) < Backend>, number<Backend, et_on>, Arg2 > (detail::BOOST_JOIN(category, BOOST_JOIN(func, _funct)) < Backend > (), arg, a); } template <class Backend> inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c< (number_category<Backend>::value == category), number<Backend, et_off> >::type func(const number<Backend, et_off>& arg, Arg2 const& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::BOOST_JOIN(eval_, func); BOOST_JOIN(eval_, func) (result.backend(), arg.backend(), a); return result; }
23866: # 3399 "/usr/include/boost/multiprecision/detail/default_ops.hpp" 3 4
23866: #define HETERO_BINARY_OP_FUNCTOR(func,Arg2,category) namespace detail { template <class Backend> struct BOOST_JOIN(category, BOOST_JOIN(func, _funct)) { template <class Arg> BOOST_MP_CXX14_CONSTEXPR void operator()(Backend& result, Backend const& arg, Arg a) const { using default_ops::BOOST_JOIN(eval_, func); BOOST_JOIN(eval_, func) (result, arg, a); } }; } HETERO_BINARY_OP_FUNCTOR_B(func, Arg2, category)
23866: # 3418 "/usr/include/boost/multiprecision/detail/default_ops.hpp" 3 4
23866: namespace detail {
23866: template <class Backend>
23866: struct abs_funct
23866: {
23866: constexpr void operator()(Backend& result, const Backend& arg) const
23866: {
23866: using default_ops::eval_abs;
23866: eval_abs(result, arg);
23866: }
23866: };
23866: template <class Backend>
23866: struct conj_funct
23866: {
23866: constexpr void operator()(Backend& result, const Backend& arg) const
23866: {
23866: using default_ops::eval_conj;
23866: eval_conj(result, arg);
23866: }
23866: };
23866: template <class Backend>
23866: struct proj_funct
23866: {
23866: constexpr void operator()(Backend& result, const Backend& arg) const
23866: {
23866: using default_ops::eval_proj;
23866: eval_proj(result, arg);
23866: }
23866: };
23866:
23866: }
23866:
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename boost::disable_if_c<number_category<typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value == number_kind_complex,
23866: detail::expression<
23866: detail::function, detail::abs_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > >::type
23866: abs(const detail::expression<tag, A1, A2, A3, A4>& arg)
23866: {
23866: return detail::expression<
23866: detail::function, detail::abs_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> >(
23866: detail::abs_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>(), arg);
23866: }
23866: template <class Backend>
23866: inline constexpr typename disable_if_c<number_category<Backend>::value == number_kind_complex,
23866: detail::expression<
23866: detail::function, detail::abs_funct<Backend>, number<Backend, et_on> > >::type
23866: abs(const number<Backend, et_on>& arg)
23866: {
23866: return detail::expression<
23866: detail::function, detail::abs_funct<Backend>, number<Backend, et_on> >(
23866: detail::abs_funct<Backend>(), arg);
23866: }
23866: template <class Backend>
23866: inline constexpr typename disable_if_c<number_category<Backend>::value == number_kind_complex, number<Backend, et_off> >::type
23866: abs(const number<Backend, et_off>& arg)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg);
23866: number<Backend, et_off> result;
23866: using default_ops::eval_abs;
23866: eval_abs(result.backend(), arg.backend());
23866: return result;
23866: }
23866:
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr detail::expression<
23866: detail::function, detail::conj_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> >
23866: conj(const detail::expression<tag, A1, A2, A3, A4>& arg)
23866: {
23866: return detail::expression<
23866: detail::function, detail::conj_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> >(
23866: detail::conj_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>(), arg);
23866: }
23866: template <class Backend>
23866: inline constexpr detail::expression<
23866: detail::function, detail::conj_funct<Backend>, number<Backend, et_on> >
23866: conj(const number<Backend, et_on>& arg)
23866: {
23866: return detail::expression<
23866: detail::function, detail::conj_funct<Backend>, number<Backend, et_on> >(
23866: detail::conj_funct<Backend>(), arg);
23866: }
23866: template <class Backend>
23866: inline constexpr number<Backend, et_off>
23866: conj(const number<Backend, et_off>& arg)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg);
23866: number<Backend, et_off> result;
23866: using default_ops::eval_conj;
23866: eval_conj(result.backend(), arg.backend());
23866: return result;
23866: }
23866:
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr detail::expression<
23866: detail::function, detail::proj_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> >
23866: proj(const detail::expression<tag, A1, A2, A3, A4>& arg)
23866: {
23866: return detail::expression<
23866: detail::function, detail::proj_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> >(
23866: detail::proj_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>(), arg);
23866: }
23866: template <class Backend>
23866: inline constexpr detail::expression<
23866: detail::function, detail::proj_funct<Backend>, number<Backend, et_on> >
23866: proj(const number<Backend, et_on>& arg)
23866: {
23866: return detail::expression<
23866: detail::function, detail::proj_funct<Backend>, number<Backend, et_on> >(
23866: detail::proj_funct<Backend>(), arg);
23866: }
23866: template <class Backend>
23866: inline constexpr number<Backend, et_off>
23866: proj(const number<Backend, et_off>& arg)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg);
23866: number<Backend, et_off> result;
23866: using default_ops::eval_proj;
23866: eval_proj(result.backend(), arg.backend());
23866: return result;
23866: }
23866:
23866: namespace detail { template <class Backend> struct number_kind_floating_pointfabs_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_fabs; eval_fabs (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_fabs; Backend temp; eval_fabs (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointfabs_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type fabs(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointfabs_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointfabs_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointfabs_funct < Backend>, number<Backend, et_on> > > ::type fabs(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointfabs_funct < Backend>, number<Backend, et_on> > (detail::number_kind_floating_pointfabs_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_floating_point, number<Backend, et_off> >::type fabs(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_fabs; eval_fabs(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> > ::type fabs(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_fabs; eval_fabs(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointsqrt_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_sqrt; eval_sqrt (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_sqrt; Backend temp; eval_sqrt (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointsqrt_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type sqrt(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointsqrt_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointsqrt_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointsqrt_funct < Backend>, number<Backend, et_on> > > ::type sqrt(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointsqrt_funct < Backend>, number<Backend, et_on> > (detail::number_kind_floating_pointsqrt_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_floating_point, number<Backend, et_off> >::type sqrt(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_sqrt; eval_sqrt(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> > ::type sqrt(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_sqrt; eval_sqrt(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointfloor_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_floor; eval_floor (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_floor; Backend temp; eval_floor (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointfloor_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type floor(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointfloor_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointfloor_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointfloor_funct < Backend>, number<Backend, et_on> > > ::type floor(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointfloor_funct < Backend>, number<Backend, et_on> > (detail::number_kind_floating_pointfloor_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_floating_point, number<Backend, et_off> >::type floor(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_floor; eval_floor(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> > ::type floor(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_floor; eval_floor(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointceil_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_ceil; eval_ceil (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_ceil; Backend temp; eval_ceil (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointceil_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type ceil(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointceil_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointceil_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointceil_funct < Backend>, number<Backend, et_on> > > ::type ceil(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointceil_funct < Backend>, number<Backend, et_on> > (detail::number_kind_floating_pointceil_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_floating_point, number<Backend, et_off> >::type ceil(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_ceil; eval_ceil(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> > ::type ceil(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_ceil; eval_ceil(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointtrunc_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_trunc; eval_trunc (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_trunc; Backend temp; eval_trunc (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointtrunc_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type trunc(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointtrunc_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointtrunc_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointtrunc_funct < Backend>, number<Backend, et_on> > > ::type trunc(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointtrunc_funct < Backend>, number<Backend, et_on> > (detail::number_kind_floating_pointtrunc_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_floating_point, number<Backend, et_off> >::type trunc(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_trunc; eval_trunc(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> > ::type trunc(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_trunc; eval_trunc(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointround_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_round; eval_round (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_round; Backend temp; eval_round (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointround_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type round(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointround_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointround_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointround_funct < Backend>, number<Backend, et_on> > > ::type round(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointround_funct < Backend>, number<Backend, et_on> > (detail::number_kind_floating_pointround_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_floating_point, number<Backend, et_off> >::type round(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_round; eval_round(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> > ::type round(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_round; eval_round(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointexp_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_exp; eval_exp (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_exp; Backend temp; eval_exp (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointexp_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type exp(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointexp_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointexp_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointexp_funct < Backend>, number<Backend, et_on> > > ::type exp(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointexp_funct < Backend>, number<Backend, et_on> > (detail::number_kind_floating_pointexp_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_floating_point, number<Backend, et_off> >::type exp(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_exp; eval_exp(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> > ::type exp(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_exp; eval_exp(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointexp2_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_exp2; eval_exp2 (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_exp2; Backend temp; eval_exp2 (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointexp2_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type exp2(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointexp2_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointexp2_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointexp2_funct < Backend>, number<Backend, et_on> > > ::type exp2(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointexp2_funct < Backend>, number<Backend, et_on> > (detail::number_kind_floating_pointexp2_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_floating_point, number<Backend, et_off> >::type exp2(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_exp2; eval_exp2(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> > ::type exp2(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_exp2; eval_exp2(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointlog_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_log; eval_log (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_log; Backend temp; eval_log (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointlog_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type log(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointlog_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointlog_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointlog_funct < Backend>, number<Backend, et_on> > > ::type log(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointlog_funct < Backend>, number<Backend, et_on> > (detail::number_kind_floating_pointlog_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_floating_point, number<Backend, et_off> >::type log(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_log; eval_log(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> > ::type log(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_log; eval_log(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointlog10_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_log10; eval_log10 (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_log10; Backend temp; eval_log10 (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointlog10_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type log10(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointlog10_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointlog10_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointlog10_funct < Backend>, number<Backend, et_on> > > ::type log10(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointlog10_funct < Backend>, number<Backend, et_on> > (detail::number_kind_floating_pointlog10_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_floating_point, number<Backend, et_off> >::type log10(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_log10; eval_log10(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> > ::type log10(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_log10; eval_log10(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointcos_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_cos; eval_cos (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_cos; Backend temp; eval_cos (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointcos_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type cos(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointcos_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointcos_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointcos_funct < Backend>, number<Backend, et_on> > > ::type cos(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointcos_funct < Backend>, number<Backend, et_on> > (detail::number_kind_floating_pointcos_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_floating_point, number<Backend, et_off> >::type cos(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_cos; eval_cos(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> > ::type cos(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_cos; eval_cos(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointsin_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_sin; eval_sin (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_sin; Backend temp; eval_sin (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointsin_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type sin(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointsin_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointsin_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointsin_funct < Backend>, number<Backend, et_on> > > ::type sin(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointsin_funct < Backend>, number<Backend, et_on> > (detail::number_kind_floating_pointsin_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_floating_point, number<Backend, et_off> >::type sin(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_sin; eval_sin(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> > ::type sin(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_sin; eval_sin(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointtan_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_tan; eval_tan (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_tan; Backend temp; eval_tan (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointtan_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type tan(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointtan_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointtan_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointtan_funct < Backend>, number<Backend, et_on> > > ::type tan(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointtan_funct < Backend>, number<Backend, et_on> > (detail::number_kind_floating_pointtan_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_floating_point, number<Backend, et_off> >::type tan(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_tan; eval_tan(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> > ::type tan(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_tan; eval_tan(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointasin_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_asin; eval_asin (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_asin; Backend temp; eval_asin (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointasin_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type asin(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointasin_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointasin_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointasin_funct < Backend>, number<Backend, et_on> > > ::type asin(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointasin_funct < Backend>, number<Backend, et_on> > (detail::number_kind_floating_pointasin_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_floating_point, number<Backend, et_off> >::type asin(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_asin; eval_asin(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> > ::type asin(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_asin; eval_asin(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointacos_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_acos; eval_acos (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_acos; Backend temp; eval_acos (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointacos_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type acos(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointacos_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointacos_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointacos_funct < Backend>, number<Backend, et_on> > > ::type acos(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointacos_funct < Backend>, number<Backend, et_on> > (detail::number_kind_floating_pointacos_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_floating_point, number<Backend, et_off> >::type acos(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_acos; eval_acos(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> > ::type acos(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_acos; eval_acos(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointatan_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_atan; eval_atan (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_atan; Backend temp; eval_atan (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointatan_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type atan(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointatan_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointatan_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointatan_funct < Backend>, number<Backend, et_on> > > ::type atan(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointatan_funct < Backend>, number<Backend, et_on> > (detail::number_kind_floating_pointatan_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_floating_point, number<Backend, et_off> >::type atan(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_atan; eval_atan(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> > ::type atan(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_atan; eval_atan(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointcosh_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_cosh; eval_cosh (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_cosh; Backend temp; eval_cosh (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointcosh_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type cosh(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointcosh_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointcosh_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointcosh_funct < Backend>, number<Backend, et_on> > > ::type cosh(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointcosh_funct < Backend>, number<Backend, et_on> > (detail::number_kind_floating_pointcosh_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_floating_point, number<Backend, et_off> >::type cosh(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_cosh; eval_cosh(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> > ::type cosh(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_cosh; eval_cosh(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointsinh_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_sinh; eval_sinh (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_sinh; Backend temp; eval_sinh (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointsinh_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type sinh(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointsinh_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointsinh_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointsinh_funct < Backend>, number<Backend, et_on> > > ::type sinh(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointsinh_funct < Backend>, number<Backend, et_on> > (detail::number_kind_floating_pointsinh_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_floating_point, number<Backend, et_off> >::type sinh(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_sinh; eval_sinh(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> > ::type sinh(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_sinh; eval_sinh(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointtanh_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_tanh; eval_tanh (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_tanh; Backend temp; eval_tanh (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointtanh_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type tanh(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointtanh_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointtanh_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointtanh_funct < Backend>, number<Backend, et_on> > > ::type tanh(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointtanh_funct < Backend>, number<Backend, et_on> > (detail::number_kind_floating_pointtanh_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_floating_point, number<Backend, et_off> >::type tanh(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_tanh; eval_tanh(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> > ::type tanh(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_tanh; eval_tanh(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointlog2_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_log2; eval_log2 (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_log2; Backend temp; eval_log2 (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointlog2_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type log2(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointlog2_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointlog2_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointlog2_funct < Backend>, number<Backend, et_on> > > ::type log2(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointlog2_funct < Backend>, number<Backend, et_on> > (detail::number_kind_floating_pointlog2_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_floating_point, number<Backend, et_off> >::type log2(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_log2; eval_log2(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> > ::type log2(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_log2; eval_log2(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointnearbyint_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_nearbyint; eval_nearbyint (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_nearbyint; Backend temp; eval_nearbyint (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointnearbyint_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type nearbyint(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointnearbyint_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointnearbyint_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointnearbyint_funct < Backend>, number<Backend, et_on> > > ::type nearbyint(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointnearbyint_funct < Backend>, number<Backend, et_on> > (detail::number_kind_floating_pointnearbyint_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_floating_point, number<Backend, et_off> >::type nearbyint(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_nearbyint; eval_nearbyint(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> > ::type nearbyint(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_nearbyint; eval_nearbyint(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointrint_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_rint; eval_rint (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_rint; Backend temp; eval_rint (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointrint_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type rint(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointrint_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointrint_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointrint_funct < Backend>, number<Backend, et_on> > > ::type rint(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointrint_funct < Backend>, number<Backend, et_on> > (detail::number_kind_floating_pointrint_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_floating_point, number<Backend, et_off> >::type rint(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_rint; eval_rint(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> > ::type rint(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_rint; eval_rint(result.backend(), arg.backend()); return result; }
23866:
23866: namespace detail { template <class Backend> struct number_kind_floating_pointldexp_funct { template <class Arg> constexpr void operator()(Backend& result, Backend const& arg, Arg a) const { using default_ops::eval_ldexp; eval_ldexp (result, arg, a); } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c< (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointldexp_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, short> > ::type ldexp(const detail::expression<tag, A1, A2, A3, A4>& arg, short const& a) { return detail::expression< detail::function, detail::number_kind_floating_pointldexp_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, short > (detail::number_kind_floating_pointldexp_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c< (number_category<Backend>::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointldexp_funct < Backend>, number<Backend, et_on>, short> > ::type ldexp(const number<Backend, et_on>& arg, short const& a) { return detail::expression< detail::function, detail::number_kind_floating_pointldexp_funct < Backend>, number<Backend, et_on>, short > (detail::number_kind_floating_pointldexp_funct < Backend > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c< (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type ldexp(const number<Backend, et_off>& arg, short const& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_ldexp; eval_ldexp (result.backend(), arg.backend(), a); return result; }
23866:
23866: template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c< (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointldexp_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, int> > ::type ldexp(const detail::expression<tag, A1, A2, A3, A4>& arg, int const& a) { return detail::expression< detail::function, detail::number_kind_floating_pointldexp_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, int > (detail::number_kind_floating_pointldexp_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c< (number_category<Backend>::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointldexp_funct < Backend>, number<Backend, et_on>, int> > ::type ldexp(const number<Backend, et_on>& arg, int const& a) { return detail::expression< detail::function, detail::number_kind_floating_pointldexp_funct < Backend>, number<Backend, et_on>, int > (detail::number_kind_floating_pointldexp_funct < Backend > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c< (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type ldexp(const number<Backend, et_off>& arg, int const& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_ldexp; eval_ldexp (result.backend(), arg.backend(), a); return result; }
23866:
23866: template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c< (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointldexp_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, long> > ::type ldexp(const detail::expression<tag, A1, A2, A3, A4>& arg, long const& a) { return detail::expression< detail::function, detail::number_kind_floating_pointldexp_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, long > (detail::number_kind_floating_pointldexp_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c< (number_category<Backend>::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointldexp_funct < Backend>, number<Backend, et_on>, long> > ::type ldexp(const number<Backend, et_on>& arg, long const& a) { return detail::expression< detail::function, detail::number_kind_floating_pointldexp_funct < Backend>, number<Backend, et_on>, long > (detail::number_kind_floating_pointldexp_funct < Backend > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c< (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type ldexp(const number<Backend, et_off>& arg, long const& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_ldexp; eval_ldexp (result.backend(), arg.backend(), a); return result; }
23866:
23866: template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c< (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointldexp_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, boost::long_long_type> > ::type ldexp(const detail::expression<tag, A1, A2, A3, A4>& arg, boost::long_long_type const& a) { return detail::expression< detail::function, detail::number_kind_floating_pointldexp_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, boost::long_long_type > (detail::number_kind_floating_pointldexp_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c< (number_category<Backend>::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointldexp_funct < Backend>, number<Backend, et_on>, boost::long_long_type> > ::type ldexp(const number<Backend, et_on>& arg, boost::long_long_type const& a) { return detail::expression< detail::function, detail::number_kind_floating_pointldexp_funct < Backend>, number<Backend, et_on>, boost::long_long_type > (detail::number_kind_floating_pointldexp_funct < Backend > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c< (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type ldexp(const number<Backend, et_off>& arg, boost::long_long_type const& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_ldexp; eval_ldexp (result.backend(), arg.backend(), a); return result; }
23866:
23866: namespace detail { template <class Backend> struct number_kind_floating_pointpow_funct { constexpr void operator()(Backend& result, const Backend& arg, const Backend& a) const { using default_ops::eval_pow; eval_pow (result, arg, a); } template <class Arithmetic> constexpr void operator()(Backend& result, const Backend& arg, const Arithmetic& a) const { using default_ops::eval_pow; eval_pow (result, arg, number<Backend>::canonical_value(a)); } template <class Arithmetic> constexpr void operator()(Backend& result, const Arithmetic& arg, const Backend& a) const { using default_ops::eval_pow; eval_pow (result, number<Backend>::canonical_value(arg), a); } template <class U> constexpr void operator()(U& result, const Backend& arg, const Backend& a) const { using default_ops::eval_pow; Backend r; eval_pow (r, arg, a); result = r; } template <class U, class Arithmetic> constexpr void operator()(U& result, const Backend& arg, const Arithmetic& a) const { using default_ops::eval_pow; Backend r; eval_pow (r, arg, number<Backend>::canonical_value(a)); result = r; } template <class U, class Arithmetic> constexpr void operator()(U& result, const Arithmetic& arg, const Backend& a) const { using default_ops::eval_pow; Backend r; eval_pow (r, number<Backend>::canonical_value(arg), a); result = r; } }; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointpow_funct<Backend>, number<Backend, et_on>, number<Backend, et_on> > > ::type pow(const number<Backend, et_on>& arg, const number<Backend, et_on>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointpow_funct < Backend>, number<Backend, et_on>, number<Backend, et_on> > (detail::number_kind_floating_pointpow_funct<Backend>(), arg, a); } template <class Backend, class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), detail::expression<detail::function, detail::number_kind_floating_pointpow_funct<Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > > ::type pow(const number<Backend, et_on>& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointpow_funct < Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointpow_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), detail::expression<detail::function, detail::number_kind_floating_pointpow_funct<Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > > ::type pow(const detail::expression<tag, A1, A2, A3, A4>& arg, const number<Backend, et_on>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointpow_funct < Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > (detail::number_kind_floating_pointpow_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class tagb, class A1b, class A2b, class A3b, class A4b> inline constexpr typename enable_if_c<(number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point) && (number_category<detail::expression<tagb, A1b, A2b, A3b, A4b> >::value == number_kind_floating_point), detail::expression<detail::function, detail::number_kind_floating_pointpow_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, detail::expression<tagb, A1b, A2b, A3b, A4b> > > ::type pow(const detail::expression<tag, A1, A2, A3, A4>& arg, const detail::expression<tagb, A1b, A2b, A3b, A4b>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointpow_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, detail::expression<tagb, A1b, A2b, A3b, A4b> > (detail::number_kind_floating_pointpow_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), detail::expression<detail::function, detail::number_kind_floating_pointpow_funct < Backend>, number<Backend, et_on>, Arithmetic> > ::type pow(const number<Backend, et_on>& arg, const Arithmetic& a) { return detail::expression<detail::function, detail::number_kind_floating_pointpow_funct<Backend>, number<Backend, et_on>, Arithmetic > (detail::number_kind_floating_pointpow_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value && (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointpow_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, Arithmetic> > ::type pow(const detail::expression<tag, A1, A2, A3, A4>& arg, const Arithmetic& a) { return detail::expression< detail::function, detail::number_kind_floating_pointpow_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, Arithmetic > (detail::number_kind_floating_pointpow_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointpow_funct < Backend>, Arithmetic, number<Backend, et_on> > > ::type pow(const Arithmetic& arg, const number<Backend, et_on>& a) { return detail::expression< detail::function, detail::number_kind_floating_pointpow_funct < Backend>, Arithmetic, number<Backend, et_on> > (detail::number_kind_floating_pointpow_funct < Backend > (), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value && (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointpow_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, Arithmetic, detail::expression<tag, A1, A2, A3, A4> > > ::type pow(const Arithmetic& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression< detail::function, detail::number_kind_floating_pointpow_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, Arithmetic, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointpow_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type pow(const number<Backend, et_off>& arg, const number<Backend, et_off>& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_pow; eval_pow(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_off> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type pow(const number<Backend, et_off>& arg, const Arithmetic& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_pow; eval_pow (result.backend(), arg.backend(), number<Backend, et_off>::canonical_value(a)); return result; } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_off> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type pow(const Arithmetic& a, const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_pow; eval_pow (result.backend(), number<Backend, et_off>::canonical_value(a), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> >::type pow(number<Backend, et_on>&& arg, const number<Backend, et_on>& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_pow; eval_pow(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> >::type pow(const number<Backend, et_on>& arg, number<Backend, et_on>&& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_pow; eval_pow(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> >::type pow(number<Backend, et_on>&& arg, number<Backend, et_on>&& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_pow; eval_pow(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend, class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), number<Backend, et_on> > ::type pow(number<Backend, et_on>&& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointpow_funct < Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointpow_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), number<Backend, et_on> > ::type pow(const detail::expression<tag, A1, A2, A3, A4>& arg, number<Backend, et_on>&& a) { return detail::expression<detail::function, detail::number_kind_floating_pointpow_funct < Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > (detail::number_kind_floating_pointpow_funct<Backend>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_on> >::type pow(number<Backend, et_on>&& arg, const Arithmetic& a) { return detail::expression<detail::function, detail::number_kind_floating_pointpow_funct<Backend>, number<Backend, et_on>, Arithmetic > (detail::number_kind_floating_pointpow_funct<Backend>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_on> > ::type pow(const Arithmetic& arg, number<Backend, et_on>&& a) { return detail::expression< detail::function, detail::number_kind_floating_pointpow_funct < Backend>, Arithmetic, number<Backend, et_on> > (detail::number_kind_floating_pointpow_funct < Backend > (), arg, a); }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointfmod_funct { constexpr void operator()(Backend& result, const Backend& arg, const Backend& a) const { using default_ops::eval_fmod; eval_fmod (result, arg, a); } template <class Arithmetic> constexpr void operator()(Backend& result, const Backend& arg, const Arithmetic& a) const { using default_ops::eval_fmod; eval_fmod (result, arg, number<Backend>::canonical_value(a)); } template <class Arithmetic> constexpr void operator()(Backend& result, const Arithmetic& arg, const Backend& a) const { using default_ops::eval_fmod; eval_fmod (result, number<Backend>::canonical_value(arg), a); } template <class U> constexpr void operator()(U& result, const Backend& arg, const Backend& a) const { using default_ops::eval_fmod; Backend r; eval_fmod (r, arg, a); result = r; } template <class U, class Arithmetic> constexpr void operator()(U& result, const Backend& arg, const Arithmetic& a) const { using default_ops::eval_fmod; Backend r; eval_fmod (r, arg, number<Backend>::canonical_value(a)); result = r; } template <class U, class Arithmetic> constexpr void operator()(U& result, const Arithmetic& arg, const Backend& a) const { using default_ops::eval_fmod; Backend r; eval_fmod (r, number<Backend>::canonical_value(arg), a); result = r; } }; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointfmod_funct<Backend>, number<Backend, et_on>, number<Backend, et_on> > > ::type fmod(const number<Backend, et_on>& arg, const number<Backend, et_on>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfmod_funct < Backend>, number<Backend, et_on>, number<Backend, et_on> > (detail::number_kind_floating_pointfmod_funct<Backend>(), arg, a); } template <class Backend, class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), detail::expression<detail::function, detail::number_kind_floating_pointfmod_funct<Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > > ::type fmod(const number<Backend, et_on>& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfmod_funct < Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointfmod_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), detail::expression<detail::function, detail::number_kind_floating_pointfmod_funct<Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > > ::type fmod(const detail::expression<tag, A1, A2, A3, A4>& arg, const number<Backend, et_on>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfmod_funct < Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > (detail::number_kind_floating_pointfmod_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class tagb, class A1b, class A2b, class A3b, class A4b> inline constexpr typename enable_if_c<(number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point) && (number_category<detail::expression<tagb, A1b, A2b, A3b, A4b> >::value == number_kind_floating_point), detail::expression<detail::function, detail::number_kind_floating_pointfmod_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, detail::expression<tagb, A1b, A2b, A3b, A4b> > > ::type fmod(const detail::expression<tag, A1, A2, A3, A4>& arg, const detail::expression<tagb, A1b, A2b, A3b, A4b>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfmod_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, detail::expression<tagb, A1b, A2b, A3b, A4b> > (detail::number_kind_floating_pointfmod_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), detail::expression<detail::function, detail::number_kind_floating_pointfmod_funct < Backend>, number<Backend, et_on>, Arithmetic> > ::type fmod(const number<Backend, et_on>& arg, const Arithmetic& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfmod_funct<Backend>, number<Backend, et_on>, Arithmetic > (detail::number_kind_floating_pointfmod_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value && (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointfmod_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, Arithmetic> > ::type fmod(const detail::expression<tag, A1, A2, A3, A4>& arg, const Arithmetic& a) { return detail::expression< detail::function, detail::number_kind_floating_pointfmod_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, Arithmetic > (detail::number_kind_floating_pointfmod_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointfmod_funct < Backend>, Arithmetic, number<Backend, et_on> > > ::type fmod(const Arithmetic& arg, const number<Backend, et_on>& a) { return detail::expression< detail::function, detail::number_kind_floating_pointfmod_funct < Backend>, Arithmetic, number<Backend, et_on> > (detail::number_kind_floating_pointfmod_funct < Backend > (), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value && (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointfmod_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, Arithmetic, detail::expression<tag, A1, A2, A3, A4> > > ::type fmod(const Arithmetic& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression< detail::function, detail::number_kind_floating_pointfmod_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, Arithmetic, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointfmod_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type fmod(const number<Backend, et_off>& arg, const number<Backend, et_off>& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_fmod; eval_fmod(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_off> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type fmod(const number<Backend, et_off>& arg, const Arithmetic& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_fmod; eval_fmod (result.backend(), arg.backend(), number<Backend, et_off>::canonical_value(a)); return result; } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_off> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type fmod(const Arithmetic& a, const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_fmod; eval_fmod (result.backend(), number<Backend, et_off>::canonical_value(a), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> >::type fmod(number<Backend, et_on>&& arg, const number<Backend, et_on>& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_fmod; eval_fmod(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> >::type fmod(const number<Backend, et_on>& arg, number<Backend, et_on>&& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_fmod; eval_fmod(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> >::type fmod(number<Backend, et_on>&& arg, number<Backend, et_on>&& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_fmod; eval_fmod(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend, class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), number<Backend, et_on> > ::type fmod(number<Backend, et_on>&& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfmod_funct < Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointfmod_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), number<Backend, et_on> > ::type fmod(const detail::expression<tag, A1, A2, A3, A4>& arg, number<Backend, et_on>&& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfmod_funct < Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > (detail::number_kind_floating_pointfmod_funct<Backend>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_on> >::type fmod(number<Backend, et_on>&& arg, const Arithmetic& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfmod_funct<Backend>, number<Backend, et_on>, Arithmetic > (detail::number_kind_floating_pointfmod_funct<Backend>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_on> > ::type fmod(const Arithmetic& arg, number<Backend, et_on>&& a) { return detail::expression< detail::function, detail::number_kind_floating_pointfmod_funct < Backend>, Arithmetic, number<Backend, et_on> > (detail::number_kind_floating_pointfmod_funct < Backend > (), arg, a); }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointfmax_funct { constexpr void operator()(Backend& result, const Backend& arg, const Backend& a) const { using default_ops::eval_fmax; eval_fmax (result, arg, a); } template <class Arithmetic> constexpr void operator()(Backend& result, const Backend& arg, const Arithmetic& a) const { using default_ops::eval_fmax; eval_fmax (result, arg, number<Backend>::canonical_value(a)); } template <class Arithmetic> constexpr void operator()(Backend& result, const Arithmetic& arg, const Backend& a) const { using default_ops::eval_fmax; eval_fmax (result, number<Backend>::canonical_value(arg), a); } template <class U> constexpr void operator()(U& result, const Backend& arg, const Backend& a) const { using default_ops::eval_fmax; Backend r; eval_fmax (r, arg, a); result = r; } template <class U, class Arithmetic> constexpr void operator()(U& result, const Backend& arg, const Arithmetic& a) const { using default_ops::eval_fmax; Backend r; eval_fmax (r, arg, number<Backend>::canonical_value(a)); result = r; } template <class U, class Arithmetic> constexpr void operator()(U& result, const Arithmetic& arg, const Backend& a) const { using default_ops::eval_fmax; Backend r; eval_fmax (r, number<Backend>::canonical_value(arg), a); result = r; } }; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointfmax_funct<Backend>, number<Backend, et_on>, number<Backend, et_on> > > ::type fmax(const number<Backend, et_on>& arg, const number<Backend, et_on>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfmax_funct < Backend>, number<Backend, et_on>, number<Backend, et_on> > (detail::number_kind_floating_pointfmax_funct<Backend>(), arg, a); } template <class Backend, class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), detail::expression<detail::function, detail::number_kind_floating_pointfmax_funct<Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > > ::type fmax(const number<Backend, et_on>& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfmax_funct < Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointfmax_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), detail::expression<detail::function, detail::number_kind_floating_pointfmax_funct<Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > > ::type fmax(const detail::expression<tag, A1, A2, A3, A4>& arg, const number<Backend, et_on>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfmax_funct < Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > (detail::number_kind_floating_pointfmax_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class tagb, class A1b, class A2b, class A3b, class A4b> inline constexpr typename enable_if_c<(number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point) && (number_category<detail::expression<tagb, A1b, A2b, A3b, A4b> >::value == number_kind_floating_point), detail::expression<detail::function, detail::number_kind_floating_pointfmax_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, detail::expression<tagb, A1b, A2b, A3b, A4b> > > ::type fmax(const detail::expression<tag, A1, A2, A3, A4>& arg, const detail::expression<tagb, A1b, A2b, A3b, A4b>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfmax_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, detail::expression<tagb, A1b, A2b, A3b, A4b> > (detail::number_kind_floating_pointfmax_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), detail::expression<detail::function, detail::number_kind_floating_pointfmax_funct < Backend>, number<Backend, et_on>, Arithmetic> > ::type fmax(const number<Backend, et_on>& arg, const Arithmetic& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfmax_funct<Backend>, number<Backend, et_on>, Arithmetic > (detail::number_kind_floating_pointfmax_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value && (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointfmax_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, Arithmetic> > ::type fmax(const detail::expression<tag, A1, A2, A3, A4>& arg, const Arithmetic& a) { return detail::expression< detail::function, detail::number_kind_floating_pointfmax_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, Arithmetic > (detail::number_kind_floating_pointfmax_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointfmax_funct < Backend>, Arithmetic, number<Backend, et_on> > > ::type fmax(const Arithmetic& arg, const number<Backend, et_on>& a) { return detail::expression< detail::function, detail::number_kind_floating_pointfmax_funct < Backend>, Arithmetic, number<Backend, et_on> > (detail::number_kind_floating_pointfmax_funct < Backend > (), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value && (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointfmax_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, Arithmetic, detail::expression<tag, A1, A2, A3, A4> > > ::type fmax(const Arithmetic& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression< detail::function, detail::number_kind_floating_pointfmax_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, Arithmetic, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointfmax_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type fmax(const number<Backend, et_off>& arg, const number<Backend, et_off>& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_fmax; eval_fmax(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_off> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type fmax(const number<Backend, et_off>& arg, const Arithmetic& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_fmax; eval_fmax (result.backend(), arg.backend(), number<Backend, et_off>::canonical_value(a)); return result; } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_off> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type fmax(const Arithmetic& a, const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_fmax; eval_fmax (result.backend(), number<Backend, et_off>::canonical_value(a), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> >::type fmax(number<Backend, et_on>&& arg, const number<Backend, et_on>& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_fmax; eval_fmax(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> >::type fmax(const number<Backend, et_on>& arg, number<Backend, et_on>&& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_fmax; eval_fmax(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> >::type fmax(number<Backend, et_on>&& arg, number<Backend, et_on>&& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_fmax; eval_fmax(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend, class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), number<Backend, et_on> > ::type fmax(number<Backend, et_on>&& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfmax_funct < Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointfmax_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), number<Backend, et_on> > ::type fmax(const detail::expression<tag, A1, A2, A3, A4>& arg, number<Backend, et_on>&& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfmax_funct < Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > (detail::number_kind_floating_pointfmax_funct<Backend>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_on> >::type fmax(number<Backend, et_on>&& arg, const Arithmetic& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfmax_funct<Backend>, number<Backend, et_on>, Arithmetic > (detail::number_kind_floating_pointfmax_funct<Backend>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_on> > ::type fmax(const Arithmetic& arg, number<Backend, et_on>&& a) { return detail::expression< detail::function, detail::number_kind_floating_pointfmax_funct < Backend>, Arithmetic, number<Backend, et_on> > (detail::number_kind_floating_pointfmax_funct < Backend > (), arg, a); }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointfmin_funct { constexpr void operator()(Backend& result, const Backend& arg, const Backend& a) const { using default_ops::eval_fmin; eval_fmin (result, arg, a); } template <class Arithmetic> constexpr void operator()(Backend& result, const Backend& arg, const Arithmetic& a) const { using default_ops::eval_fmin; eval_fmin (result, arg, number<Backend>::canonical_value(a)); } template <class Arithmetic> constexpr void operator()(Backend& result, const Arithmetic& arg, const Backend& a) const { using default_ops::eval_fmin; eval_fmin (result, number<Backend>::canonical_value(arg), a); } template <class U> constexpr void operator()(U& result, const Backend& arg, const Backend& a) const { using default_ops::eval_fmin; Backend r; eval_fmin (r, arg, a); result = r; } template <class U, class Arithmetic> constexpr void operator()(U& result, const Backend& arg, const Arithmetic& a) const { using default_ops::eval_fmin; Backend r; eval_fmin (r, arg, number<Backend>::canonical_value(a)); result = r; } template <class U, class Arithmetic> constexpr void operator()(U& result, const Arithmetic& arg, const Backend& a) const { using default_ops::eval_fmin; Backend r; eval_fmin (r, number<Backend>::canonical_value(arg), a); result = r; } }; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointfmin_funct<Backend>, number<Backend, et_on>, number<Backend, et_on> > > ::type fmin(const number<Backend, et_on>& arg, const number<Backend, et_on>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfmin_funct < Backend>, number<Backend, et_on>, number<Backend, et_on> > (detail::number_kind_floating_pointfmin_funct<Backend>(), arg, a); } template <class Backend, class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), detail::expression<detail::function, detail::number_kind_floating_pointfmin_funct<Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > > ::type fmin(const number<Backend, et_on>& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfmin_funct < Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointfmin_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), detail::expression<detail::function, detail::number_kind_floating_pointfmin_funct<Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > > ::type fmin(const detail::expression<tag, A1, A2, A3, A4>& arg, const number<Backend, et_on>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfmin_funct < Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > (detail::number_kind_floating_pointfmin_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class tagb, class A1b, class A2b, class A3b, class A4b> inline constexpr typename enable_if_c<(number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point) && (number_category<detail::expression<tagb, A1b, A2b, A3b, A4b> >::value == number_kind_floating_point), detail::expression<detail::function, detail::number_kind_floating_pointfmin_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, detail::expression<tagb, A1b, A2b, A3b, A4b> > > ::type fmin(const detail::expression<tag, A1, A2, A3, A4>& arg, const detail::expression<tagb, A1b, A2b, A3b, A4b>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfmin_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, detail::expression<tagb, A1b, A2b, A3b, A4b> > (detail::number_kind_floating_pointfmin_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), detail::expression<detail::function, detail::number_kind_floating_pointfmin_funct < Backend>, number<Backend, et_on>, Arithmetic> > ::type fmin(const number<Backend, et_on>& arg, const Arithmetic& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfmin_funct<Backend>, number<Backend, et_on>, Arithmetic > (detail::number_kind_floating_pointfmin_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value && (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointfmin_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, Arithmetic> > ::type fmin(const detail::expression<tag, A1, A2, A3, A4>& arg, const Arithmetic& a) { return detail::expression< detail::function, detail::number_kind_floating_pointfmin_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, Arithmetic > (detail::number_kind_floating_pointfmin_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointfmin_funct < Backend>, Arithmetic, number<Backend, et_on> > > ::type fmin(const Arithmetic& arg, const number<Backend, et_on>& a) { return detail::expression< detail::function, detail::number_kind_floating_pointfmin_funct < Backend>, Arithmetic, number<Backend, et_on> > (detail::number_kind_floating_pointfmin_funct < Backend > (), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value && (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointfmin_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, Arithmetic, detail::expression<tag, A1, A2, A3, A4> > > ::type fmin(const Arithmetic& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression< detail::function, detail::number_kind_floating_pointfmin_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, Arithmetic, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointfmin_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type fmin(const number<Backend, et_off>& arg, const number<Backend, et_off>& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_fmin; eval_fmin(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_off> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type fmin(const number<Backend, et_off>& arg, const Arithmetic& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_fmin; eval_fmin (result.backend(), arg.backend(), number<Backend, et_off>::canonical_value(a)); return result; } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_off> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type fmin(const Arithmetic& a, const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_fmin; eval_fmin (result.backend(), number<Backend, et_off>::canonical_value(a), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> >::type fmin(number<Backend, et_on>&& arg, const number<Backend, et_on>& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_fmin; eval_fmin(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> >::type fmin(const number<Backend, et_on>& arg, number<Backend, et_on>&& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_fmin; eval_fmin(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> >::type fmin(number<Backend, et_on>&& arg, number<Backend, et_on>&& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_fmin; eval_fmin(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend, class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), number<Backend, et_on> > ::type fmin(number<Backend, et_on>&& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfmin_funct < Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointfmin_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), number<Backend, et_on> > ::type fmin(const detail::expression<tag, A1, A2, A3, A4>& arg, number<Backend, et_on>&& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfmin_funct < Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > (detail::number_kind_floating_pointfmin_funct<Backend>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_on> >::type fmin(number<Backend, et_on>&& arg, const Arithmetic& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfmin_funct<Backend>, number<Backend, et_on>, Arithmetic > (detail::number_kind_floating_pointfmin_funct<Backend>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_on> > ::type fmin(const Arithmetic& arg, number<Backend, et_on>&& a) { return detail::expression< detail::function, detail::number_kind_floating_pointfmin_funct < Backend>, Arithmetic, number<Backend, et_on> > (detail::number_kind_floating_pointfmin_funct < Backend > (), arg, a); }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointatan2_funct { constexpr void operator()(Backend& result, const Backend& arg, const Backend& a) const { using default_ops::eval_atan2; eval_atan2 (result, arg, a); } template <class Arithmetic> constexpr void operator()(Backend& result, const Backend& arg, const Arithmetic& a) const { using default_ops::eval_atan2; eval_atan2 (result, arg, number<Backend>::canonical_value(a)); } template <class Arithmetic> constexpr void operator()(Backend& result, const Arithmetic& arg, const Backend& a) const { using default_ops::eval_atan2; eval_atan2 (result, number<Backend>::canonical_value(arg), a); } template <class U> constexpr void operator()(U& result, const Backend& arg, const Backend& a) const { using default_ops::eval_atan2; Backend r; eval_atan2 (r, arg, a); result = r; } template <class U, class Arithmetic> constexpr void operator()(U& result, const Backend& arg, const Arithmetic& a) const { using default_ops::eval_atan2; Backend r; eval_atan2 (r, arg, number<Backend>::canonical_value(a)); result = r; } template <class U, class Arithmetic> constexpr void operator()(U& result, const Arithmetic& arg, const Backend& a) const { using default_ops::eval_atan2; Backend r; eval_atan2 (r, number<Backend>::canonical_value(arg), a); result = r; } }; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointatan2_funct<Backend>, number<Backend, et_on>, number<Backend, et_on> > > ::type atan2(const number<Backend, et_on>& arg, const number<Backend, et_on>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointatan2_funct < Backend>, number<Backend, et_on>, number<Backend, et_on> > (detail::number_kind_floating_pointatan2_funct<Backend>(), arg, a); } template <class Backend, class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), detail::expression<detail::function, detail::number_kind_floating_pointatan2_funct<Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > > ::type atan2(const number<Backend, et_on>& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointatan2_funct < Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointatan2_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), detail::expression<detail::function, detail::number_kind_floating_pointatan2_funct<Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > > ::type atan2(const detail::expression<tag, A1, A2, A3, A4>& arg, const number<Backend, et_on>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointatan2_funct < Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > (detail::number_kind_floating_pointatan2_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class tagb, class A1b, class A2b, class A3b, class A4b> inline constexpr typename enable_if_c<(number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point) && (number_category<detail::expression<tagb, A1b, A2b, A3b, A4b> >::value == number_kind_floating_point), detail::expression<detail::function, detail::number_kind_floating_pointatan2_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, detail::expression<tagb, A1b, A2b, A3b, A4b> > > ::type atan2(const detail::expression<tag, A1, A2, A3, A4>& arg, const detail::expression<tagb, A1b, A2b, A3b, A4b>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointatan2_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, detail::expression<tagb, A1b, A2b, A3b, A4b> > (detail::number_kind_floating_pointatan2_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), detail::expression<detail::function, detail::number_kind_floating_pointatan2_funct < Backend>, number<Backend, et_on>, Arithmetic> > ::type atan2(const number<Backend, et_on>& arg, const Arithmetic& a) { return detail::expression<detail::function, detail::number_kind_floating_pointatan2_funct<Backend>, number<Backend, et_on>, Arithmetic > (detail::number_kind_floating_pointatan2_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value && (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointatan2_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, Arithmetic> > ::type atan2(const detail::expression<tag, A1, A2, A3, A4>& arg, const Arithmetic& a) { return detail::expression< detail::function, detail::number_kind_floating_pointatan2_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, Arithmetic > (detail::number_kind_floating_pointatan2_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointatan2_funct < Backend>, Arithmetic, number<Backend, et_on> > > ::type atan2(const Arithmetic& arg, const number<Backend, et_on>& a) { return detail::expression< detail::function, detail::number_kind_floating_pointatan2_funct < Backend>, Arithmetic, number<Backend, et_on> > (detail::number_kind_floating_pointatan2_funct < Backend > (), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value && (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointatan2_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, Arithmetic, detail::expression<tag, A1, A2, A3, A4> > > ::type atan2(const Arithmetic& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression< detail::function, detail::number_kind_floating_pointatan2_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, Arithmetic, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointatan2_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type atan2(const number<Backend, et_off>& arg, const number<Backend, et_off>& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_atan2; eval_atan2(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_off> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type atan2(const number<Backend, et_off>& arg, const Arithmetic& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_atan2; eval_atan2 (result.backend(), arg.backend(), number<Backend, et_off>::canonical_value(a)); return result; } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_off> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type atan2(const Arithmetic& a, const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_atan2; eval_atan2 (result.backend(), number<Backend, et_off>::canonical_value(a), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> >::type atan2(number<Backend, et_on>&& arg, const number<Backend, et_on>& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_atan2; eval_atan2(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> >::type atan2(const number<Backend, et_on>& arg, number<Backend, et_on>&& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_atan2; eval_atan2(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> >::type atan2(number<Backend, et_on>&& arg, number<Backend, et_on>&& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_atan2; eval_atan2(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend, class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), number<Backend, et_on> > ::type atan2(number<Backend, et_on>&& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointatan2_funct < Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointatan2_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), number<Backend, et_on> > ::type atan2(const detail::expression<tag, A1, A2, A3, A4>& arg, number<Backend, et_on>&& a) { return detail::expression<detail::function, detail::number_kind_floating_pointatan2_funct < Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > (detail::number_kind_floating_pointatan2_funct<Backend>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_on> >::type atan2(number<Backend, et_on>&& arg, const Arithmetic& a) { return detail::expression<detail::function, detail::number_kind_floating_pointatan2_funct<Backend>, number<Backend, et_on>, Arithmetic > (detail::number_kind_floating_pointatan2_funct<Backend>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_on> > ::type atan2(const Arithmetic& arg, number<Backend, et_on>&& a) { return detail::expression< detail::function, detail::number_kind_floating_pointatan2_funct < Backend>, Arithmetic, number<Backend, et_on> > (detail::number_kind_floating_pointatan2_funct < Backend > (), arg, a); }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointfdim_funct { constexpr void operator()(Backend& result, const Backend& arg, const Backend& a) const { using default_ops::eval_fdim; eval_fdim (result, arg, a); } template <class Arithmetic> constexpr void operator()(Backend& result, const Backend& arg, const Arithmetic& a) const { using default_ops::eval_fdim; eval_fdim (result, arg, number<Backend>::canonical_value(a)); } template <class Arithmetic> constexpr void operator()(Backend& result, const Arithmetic& arg, const Backend& a) const { using default_ops::eval_fdim; eval_fdim (result, number<Backend>::canonical_value(arg), a); } template <class U> constexpr void operator()(U& result, const Backend& arg, const Backend& a) const { using default_ops::eval_fdim; Backend r; eval_fdim (r, arg, a); result = r; } template <class U, class Arithmetic> constexpr void operator()(U& result, const Backend& arg, const Arithmetic& a) const { using default_ops::eval_fdim; Backend r; eval_fdim (r, arg, number<Backend>::canonical_value(a)); result = r; } template <class U, class Arithmetic> constexpr void operator()(U& result, const Arithmetic& arg, const Backend& a) const { using default_ops::eval_fdim; Backend r; eval_fdim (r, number<Backend>::canonical_value(arg), a); result = r; } }; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointfdim_funct<Backend>, number<Backend, et_on>, number<Backend, et_on> > > ::type fdim(const number<Backend, et_on>& arg, const number<Backend, et_on>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfdim_funct < Backend>, number<Backend, et_on>, number<Backend, et_on> > (detail::number_kind_floating_pointfdim_funct<Backend>(), arg, a); } template <class Backend, class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), detail::expression<detail::function, detail::number_kind_floating_pointfdim_funct<Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > > ::type fdim(const number<Backend, et_on>& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfdim_funct < Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointfdim_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), detail::expression<detail::function, detail::number_kind_floating_pointfdim_funct<Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > > ::type fdim(const detail::expression<tag, A1, A2, A3, A4>& arg, const number<Backend, et_on>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfdim_funct < Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > (detail::number_kind_floating_pointfdim_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class tagb, class A1b, class A2b, class A3b, class A4b> inline constexpr typename enable_if_c<(number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point) && (number_category<detail::expression<tagb, A1b, A2b, A3b, A4b> >::value == number_kind_floating_point), detail::expression<detail::function, detail::number_kind_floating_pointfdim_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, detail::expression<tagb, A1b, A2b, A3b, A4b> > > ::type fdim(const detail::expression<tag, A1, A2, A3, A4>& arg, const detail::expression<tagb, A1b, A2b, A3b, A4b>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfdim_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, detail::expression<tagb, A1b, A2b, A3b, A4b> > (detail::number_kind_floating_pointfdim_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), detail::expression<detail::function, detail::number_kind_floating_pointfdim_funct < Backend>, number<Backend, et_on>, Arithmetic> > ::type fdim(const number<Backend, et_on>& arg, const Arithmetic& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfdim_funct<Backend>, number<Backend, et_on>, Arithmetic > (detail::number_kind_floating_pointfdim_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value && (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointfdim_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, Arithmetic> > ::type fdim(const detail::expression<tag, A1, A2, A3, A4>& arg, const Arithmetic& a) { return detail::expression< detail::function, detail::number_kind_floating_pointfdim_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, Arithmetic > (detail::number_kind_floating_pointfdim_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointfdim_funct < Backend>, Arithmetic, number<Backend, et_on> > > ::type fdim(const Arithmetic& arg, const number<Backend, et_on>& a) { return detail::expression< detail::function, detail::number_kind_floating_pointfdim_funct < Backend>, Arithmetic, number<Backend, et_on> > (detail::number_kind_floating_pointfdim_funct < Backend > (), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value && (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointfdim_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, Arithmetic, detail::expression<tag, A1, A2, A3, A4> > > ::type fdim(const Arithmetic& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression< detail::function, detail::number_kind_floating_pointfdim_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, Arithmetic, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointfdim_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type fdim(const number<Backend, et_off>& arg, const number<Backend, et_off>& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_fdim; eval_fdim(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_off> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type fdim(const number<Backend, et_off>& arg, const Arithmetic& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_fdim; eval_fdim (result.backend(), arg.backend(), number<Backend, et_off>::canonical_value(a)); return result; } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_off> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type fdim(const Arithmetic& a, const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_fdim; eval_fdim (result.backend(), number<Backend, et_off>::canonical_value(a), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> >::type fdim(number<Backend, et_on>&& arg, const number<Backend, et_on>& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_fdim; eval_fdim(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> >::type fdim(const number<Backend, et_on>& arg, number<Backend, et_on>&& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_fdim; eval_fdim(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> >::type fdim(number<Backend, et_on>&& arg, number<Backend, et_on>&& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_fdim; eval_fdim(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend, class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), number<Backend, et_on> > ::type fdim(number<Backend, et_on>&& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfdim_funct < Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointfdim_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), number<Backend, et_on> > ::type fdim(const detail::expression<tag, A1, A2, A3, A4>& arg, number<Backend, et_on>&& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfdim_funct < Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > (detail::number_kind_floating_pointfdim_funct<Backend>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_on> >::type fdim(number<Backend, et_on>&& arg, const Arithmetic& a) { return detail::expression<detail::function, detail::number_kind_floating_pointfdim_funct<Backend>, number<Backend, et_on>, Arithmetic > (detail::number_kind_floating_pointfdim_funct<Backend>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_on> > ::type fdim(const Arithmetic& arg, number<Backend, et_on>&& a) { return detail::expression< detail::function, detail::number_kind_floating_pointfdim_funct < Backend>, Arithmetic, number<Backend, et_on> > (detail::number_kind_floating_pointfdim_funct < Backend > (), arg, a); }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointhypot_funct { constexpr void operator()(Backend& result, const Backend& arg, const Backend& a) const { using default_ops::eval_hypot; eval_hypot (result, arg, a); } template <class Arithmetic> constexpr void operator()(Backend& result, const Backend& arg, const Arithmetic& a) const { using default_ops::eval_hypot; eval_hypot (result, arg, number<Backend>::canonical_value(a)); } template <class Arithmetic> constexpr void operator()(Backend& result, const Arithmetic& arg, const Backend& a) const { using default_ops::eval_hypot; eval_hypot (result, number<Backend>::canonical_value(arg), a); } template <class U> constexpr void operator()(U& result, const Backend& arg, const Backend& a) const { using default_ops::eval_hypot; Backend r; eval_hypot (r, arg, a); result = r; } template <class U, class Arithmetic> constexpr void operator()(U& result, const Backend& arg, const Arithmetic& a) const { using default_ops::eval_hypot; Backend r; eval_hypot (r, arg, number<Backend>::canonical_value(a)); result = r; } template <class U, class Arithmetic> constexpr void operator()(U& result, const Arithmetic& arg, const Backend& a) const { using default_ops::eval_hypot; Backend r; eval_hypot (r, number<Backend>::canonical_value(arg), a); result = r; } }; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointhypot_funct<Backend>, number<Backend, et_on>, number<Backend, et_on> > > ::type hypot(const number<Backend, et_on>& arg, const number<Backend, et_on>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointhypot_funct < Backend>, number<Backend, et_on>, number<Backend, et_on> > (detail::number_kind_floating_pointhypot_funct<Backend>(), arg, a); } template <class Backend, class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), detail::expression<detail::function, detail::number_kind_floating_pointhypot_funct<Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > > ::type hypot(const number<Backend, et_on>& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointhypot_funct < Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointhypot_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), detail::expression<detail::function, detail::number_kind_floating_pointhypot_funct<Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > > ::type hypot(const detail::expression<tag, A1, A2, A3, A4>& arg, const number<Backend, et_on>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointhypot_funct < Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > (detail::number_kind_floating_pointhypot_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class tagb, class A1b, class A2b, class A3b, class A4b> inline constexpr typename enable_if_c<(number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point) && (number_category<detail::expression<tagb, A1b, A2b, A3b, A4b> >::value == number_kind_floating_point), detail::expression<detail::function, detail::number_kind_floating_pointhypot_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, detail::expression<tagb, A1b, A2b, A3b, A4b> > > ::type hypot(const detail::expression<tag, A1, A2, A3, A4>& arg, const detail::expression<tagb, A1b, A2b, A3b, A4b>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointhypot_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, detail::expression<tagb, A1b, A2b, A3b, A4b> > (detail::number_kind_floating_pointhypot_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), detail::expression<detail::function, detail::number_kind_floating_pointhypot_funct < Backend>, number<Backend, et_on>, Arithmetic> > ::type hypot(const number<Backend, et_on>& arg, const Arithmetic& a) { return detail::expression<detail::function, detail::number_kind_floating_pointhypot_funct<Backend>, number<Backend, et_on>, Arithmetic > (detail::number_kind_floating_pointhypot_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value && (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointhypot_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, Arithmetic> > ::type hypot(const detail::expression<tag, A1, A2, A3, A4>& arg, const Arithmetic& a) { return detail::expression< detail::function, detail::number_kind_floating_pointhypot_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, Arithmetic > (detail::number_kind_floating_pointhypot_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointhypot_funct < Backend>, Arithmetic, number<Backend, et_on> > > ::type hypot(const Arithmetic& arg, const number<Backend, et_on>& a) { return detail::expression< detail::function, detail::number_kind_floating_pointhypot_funct < Backend>, Arithmetic, number<Backend, et_on> > (detail::number_kind_floating_pointhypot_funct < Backend > (), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value && (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointhypot_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, Arithmetic, detail::expression<tag, A1, A2, A3, A4> > > ::type hypot(const Arithmetic& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression< detail::function, detail::number_kind_floating_pointhypot_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, Arithmetic, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointhypot_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type hypot(const number<Backend, et_off>& arg, const number<Backend, et_off>& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_hypot; eval_hypot(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_off> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type hypot(const number<Backend, et_off>& arg, const Arithmetic& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_hypot; eval_hypot (result.backend(), arg.backend(), number<Backend, et_off>::canonical_value(a)); return result; } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_off> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type hypot(const Arithmetic& a, const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_hypot; eval_hypot (result.backend(), number<Backend, et_off>::canonical_value(a), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> >::type hypot(number<Backend, et_on>&& arg, const number<Backend, et_on>& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_hypot; eval_hypot(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> >::type hypot(const number<Backend, et_on>& arg, number<Backend, et_on>&& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_hypot; eval_hypot(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> >::type hypot(number<Backend, et_on>&& arg, number<Backend, et_on>&& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_hypot; eval_hypot(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend, class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), number<Backend, et_on> > ::type hypot(number<Backend, et_on>&& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointhypot_funct < Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointhypot_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), number<Backend, et_on> > ::type hypot(const detail::expression<tag, A1, A2, A3, A4>& arg, number<Backend, et_on>&& a) { return detail::expression<detail::function, detail::number_kind_floating_pointhypot_funct < Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > (detail::number_kind_floating_pointhypot_funct<Backend>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_on> >::type hypot(number<Backend, et_on>&& arg, const Arithmetic& a) { return detail::expression<detail::function, detail::number_kind_floating_pointhypot_funct<Backend>, number<Backend, et_on>, Arithmetic > (detail::number_kind_floating_pointhypot_funct<Backend>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_on> > ::type hypot(const Arithmetic& arg, number<Backend, et_on>&& a) { return detail::expression< detail::function, detail::number_kind_floating_pointhypot_funct < Backend>, Arithmetic, number<Backend, et_on> > (detail::number_kind_floating_pointhypot_funct < Backend > (), arg, a); }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointremainder_funct { constexpr void operator()(Backend& result, const Backend& arg, const Backend& a) const { using default_ops::eval_remainder; eval_remainder (result, arg, a); } template <class Arithmetic> constexpr void operator()(Backend& result, const Backend& arg, const Arithmetic& a) const { using default_ops::eval_remainder; eval_remainder (result, arg, number<Backend>::canonical_value(a)); } template <class Arithmetic> constexpr void operator()(Backend& result, const Arithmetic& arg, const Backend& a) const { using default_ops::eval_remainder; eval_remainder (result, number<Backend>::canonical_value(arg), a); } template <class U> constexpr void operator()(U& result, const Backend& arg, const Backend& a) const { using default_ops::eval_remainder; Backend r; eval_remainder (r, arg, a); result = r; } template <class U, class Arithmetic> constexpr void operator()(U& result, const Backend& arg, const Arithmetic& a) const { using default_ops::eval_remainder; Backend r; eval_remainder (r, arg, number<Backend>::canonical_value(a)); result = r; } template <class U, class Arithmetic> constexpr void operator()(U& result, const Arithmetic& arg, const Backend& a) const { using default_ops::eval_remainder; Backend r; eval_remainder (r, number<Backend>::canonical_value(arg), a); result = r; } }; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointremainder_funct<Backend>, number<Backend, et_on>, number<Backend, et_on> > > ::type remainder(const number<Backend, et_on>& arg, const number<Backend, et_on>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointremainder_funct < Backend>, number<Backend, et_on>, number<Backend, et_on> > (detail::number_kind_floating_pointremainder_funct<Backend>(), arg, a); } template <class Backend, class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), detail::expression<detail::function, detail::number_kind_floating_pointremainder_funct<Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > > ::type remainder(const number<Backend, et_on>& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointremainder_funct < Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointremainder_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), detail::expression<detail::function, detail::number_kind_floating_pointremainder_funct<Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > > ::type remainder(const detail::expression<tag, A1, A2, A3, A4>& arg, const number<Backend, et_on>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointremainder_funct < Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > (detail::number_kind_floating_pointremainder_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class tagb, class A1b, class A2b, class A3b, class A4b> inline constexpr typename enable_if_c<(number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point) && (number_category<detail::expression<tagb, A1b, A2b, A3b, A4b> >::value == number_kind_floating_point), detail::expression<detail::function, detail::number_kind_floating_pointremainder_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, detail::expression<tagb, A1b, A2b, A3b, A4b> > > ::type remainder(const detail::expression<tag, A1, A2, A3, A4>& arg, const detail::expression<tagb, A1b, A2b, A3b, A4b>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointremainder_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, detail::expression<tagb, A1b, A2b, A3b, A4b> > (detail::number_kind_floating_pointremainder_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), detail::expression<detail::function, detail::number_kind_floating_pointremainder_funct < Backend>, number<Backend, et_on>, Arithmetic> > ::type remainder(const number<Backend, et_on>& arg, const Arithmetic& a) { return detail::expression<detail::function, detail::number_kind_floating_pointremainder_funct<Backend>, number<Backend, et_on>, Arithmetic > (detail::number_kind_floating_pointremainder_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value && (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointremainder_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, Arithmetic> > ::type remainder(const detail::expression<tag, A1, A2, A3, A4>& arg, const Arithmetic& a) { return detail::expression< detail::function, detail::number_kind_floating_pointremainder_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, Arithmetic > (detail::number_kind_floating_pointremainder_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointremainder_funct < Backend>, Arithmetic, number<Backend, et_on> > > ::type remainder(const Arithmetic& arg, const number<Backend, et_on>& a) { return detail::expression< detail::function, detail::number_kind_floating_pointremainder_funct < Backend>, Arithmetic, number<Backend, et_on> > (detail::number_kind_floating_pointremainder_funct < Backend > (), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value && (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointremainder_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, Arithmetic, detail::expression<tag, A1, A2, A3, A4> > > ::type remainder(const Arithmetic& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression< detail::function, detail::number_kind_floating_pointremainder_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, Arithmetic, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointremainder_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type remainder(const number<Backend, et_off>& arg, const number<Backend, et_off>& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_remainder; eval_remainder(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_off> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type remainder(const number<Backend, et_off>& arg, const Arithmetic& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_remainder; eval_remainder (result.backend(), arg.backend(), number<Backend, et_off>::canonical_value(a)); return result; } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_off> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type remainder(const Arithmetic& a, const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_remainder; eval_remainder (result.backend(), number<Backend, et_off>::canonical_value(a), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> >::type remainder(number<Backend, et_on>&& arg, const number<Backend, et_on>& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_remainder; eval_remainder(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> >::type remainder(const number<Backend, et_on>& arg, number<Backend, et_on>&& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_remainder; eval_remainder(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> >::type remainder(number<Backend, et_on>&& arg, number<Backend, et_on>&& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_remainder; eval_remainder(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend, class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), number<Backend, et_on> > ::type remainder(number<Backend, et_on>&& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression<detail::function, detail::number_kind_floating_pointremainder_funct < Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointremainder_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_floating_point) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), number<Backend, et_on> > ::type remainder(const detail::expression<tag, A1, A2, A3, A4>& arg, number<Backend, et_on>&& a) { return detail::expression<detail::function, detail::number_kind_floating_pointremainder_funct < Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > (detail::number_kind_floating_pointremainder_funct<Backend>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_on> >::type remainder(number<Backend, et_on>&& arg, const Arithmetic& a) { return detail::expression<detail::function, detail::number_kind_floating_pointremainder_funct<Backend>, number<Backend, et_on>, Arithmetic > (detail::number_kind_floating_pointremainder_funct<Backend>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_on> > ::type remainder(const Arithmetic& arg, number<Backend, et_on>&& a) { return detail::expression< detail::function, detail::number_kind_floating_pointremainder_funct < Backend>, Arithmetic, number<Backend, et_on> > (detail::number_kind_floating_pointremainder_funct < Backend > (), arg, a); }
23866:
23866: namespace detail { template <class Backend> struct number_kind_floating_pointlogb_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_logb; eval_logb (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_logb; Backend temp; eval_logb (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointlogb_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type logb(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointlogb_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_floating_pointlogb_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, detail::expression<detail::function, detail::number_kind_floating_pointlogb_funct < Backend>, number<Backend, et_on> > > ::type logb(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_floating_pointlogb_funct < Backend>, number<Backend, et_on> > (detail::number_kind_floating_pointlogb_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_floating_point, number<Backend, et_off> >::type logb(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_logb; eval_logb(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, number<Backend, et_on> > ::type logb(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_logb; eval_logb(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointscalbn_funct { template <class Arg> constexpr void operator()(Backend& result, Backend const& arg, Arg a) const { using default_ops::eval_scalbn; eval_scalbn (result, arg, a); } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c< (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointscalbn_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, short> > ::type scalbn(const detail::expression<tag, A1, A2, A3, A4>& arg, short const& a) { return detail::expression< detail::function, detail::number_kind_floating_pointscalbn_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, short > (detail::number_kind_floating_pointscalbn_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c< (number_category<Backend>::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointscalbn_funct < Backend>, number<Backend, et_on>, short> > ::type scalbn(const number<Backend, et_on>& arg, short const& a) { return detail::expression< detail::function, detail::number_kind_floating_pointscalbn_funct < Backend>, number<Backend, et_on>, short > (detail::number_kind_floating_pointscalbn_funct < Backend > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c< (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type scalbn(const number<Backend, et_off>& arg, short const& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_scalbn; eval_scalbn (result.backend(), arg.backend(), a); return result; }
23866: namespace detail { template <class Backend> struct number_kind_floating_pointscalbln_funct { template <class Arg> constexpr void operator()(Backend& result, Backend const& arg, Arg a) const { using default_ops::eval_scalbln; eval_scalbln (result, arg, a); } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c< (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointscalbln_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, short> > ::type scalbln(const detail::expression<tag, A1, A2, A3, A4>& arg, short const& a) { return detail::expression< detail::function, detail::number_kind_floating_pointscalbln_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, short > (detail::number_kind_floating_pointscalbln_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c< (number_category<Backend>::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointscalbln_funct < Backend>, number<Backend, et_on>, short> > ::type scalbln(const number<Backend, et_on>& arg, short const& a) { return detail::expression< detail::function, detail::number_kind_floating_pointscalbln_funct < Backend>, number<Backend, et_on>, short > (detail::number_kind_floating_pointscalbln_funct < Backend > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c< (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type scalbln(const number<Backend, et_off>& arg, short const& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_scalbln; eval_scalbln (result.backend(), arg.backend(), a); return result; }
23866: template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c< (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointscalbn_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, int> > ::type scalbn(const detail::expression<tag, A1, A2, A3, A4>& arg, int const& a) { return detail::expression< detail::function, detail::number_kind_floating_pointscalbn_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, int > (detail::number_kind_floating_pointscalbn_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c< (number_category<Backend>::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointscalbn_funct < Backend>, number<Backend, et_on>, int> > ::type scalbn(const number<Backend, et_on>& arg, int const& a) { return detail::expression< detail::function, detail::number_kind_floating_pointscalbn_funct < Backend>, number<Backend, et_on>, int > (detail::number_kind_floating_pointscalbn_funct < Backend > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c< (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type scalbn(const number<Backend, et_off>& arg, int const& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_scalbn; eval_scalbn (result.backend(), arg.backend(), a); return result; }
23866: template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c< (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointscalbln_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, int> > ::type scalbln(const detail::expression<tag, A1, A2, A3, A4>& arg, int const& a) { return detail::expression< detail::function, detail::number_kind_floating_pointscalbln_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, int > (detail::number_kind_floating_pointscalbln_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c< (number_category<Backend>::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointscalbln_funct < Backend>, number<Backend, et_on>, int> > ::type scalbln(const number<Backend, et_on>& arg, int const& a) { return detail::expression< detail::function, detail::number_kind_floating_pointscalbln_funct < Backend>, number<Backend, et_on>, int > (detail::number_kind_floating_pointscalbln_funct < Backend > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c< (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type scalbln(const number<Backend, et_off>& arg, int const& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_scalbln; eval_scalbln (result.backend(), arg.backend(), a); return result; }
23866: template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c< (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointscalbn_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, long> > ::type scalbn(const detail::expression<tag, A1, A2, A3, A4>& arg, long const& a) { return detail::expression< detail::function, detail::number_kind_floating_pointscalbn_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, long > (detail::number_kind_floating_pointscalbn_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c< (number_category<Backend>::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointscalbn_funct < Backend>, number<Backend, et_on>, long> > ::type scalbn(const number<Backend, et_on>& arg, long const& a) { return detail::expression< detail::function, detail::number_kind_floating_pointscalbn_funct < Backend>, number<Backend, et_on>, long > (detail::number_kind_floating_pointscalbn_funct < Backend > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c< (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type scalbn(const number<Backend, et_off>& arg, long const& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_scalbn; eval_scalbn (result.backend(), arg.backend(), a); return result; }
23866: template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c< (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointscalbln_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, long> > ::type scalbln(const detail::expression<tag, A1, A2, A3, A4>& arg, long const& a) { return detail::expression< detail::function, detail::number_kind_floating_pointscalbln_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, long > (detail::number_kind_floating_pointscalbln_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c< (number_category<Backend>::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointscalbln_funct < Backend>, number<Backend, et_on>, long> > ::type scalbln(const number<Backend, et_on>& arg, long const& a) { return detail::expression< detail::function, detail::number_kind_floating_pointscalbln_funct < Backend>, number<Backend, et_on>, long > (detail::number_kind_floating_pointscalbln_funct < Backend > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c< (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type scalbln(const number<Backend, et_off>& arg, long const& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_scalbln; eval_scalbln (result.backend(), arg.backend(), a); return result; }
23866: template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c< (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointscalbn_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, boost::long_long_type> > ::type scalbn(const detail::expression<tag, A1, A2, A3, A4>& arg, boost::long_long_type const& a) { return detail::expression< detail::function, detail::number_kind_floating_pointscalbn_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, boost::long_long_type > (detail::number_kind_floating_pointscalbn_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c< (number_category<Backend>::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointscalbn_funct < Backend>, number<Backend, et_on>, boost::long_long_type> > ::type scalbn(const number<Backend, et_on>& arg, boost::long_long_type const& a) { return detail::expression< detail::function, detail::number_kind_floating_pointscalbn_funct < Backend>, number<Backend, et_on>, boost::long_long_type > (detail::number_kind_floating_pointscalbn_funct < Backend > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c< (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type scalbn(const number<Backend, et_off>& arg, boost::long_long_type const& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_scalbn; eval_scalbn (result.backend(), arg.backend(), a); return result; }
23866: template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c< (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointscalbln_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, boost::long_long_type> > ::type scalbln(const detail::expression<tag, A1, A2, A3, A4>& arg, boost::long_long_type const& a) { return detail::expression< detail::function, detail::number_kind_floating_pointscalbln_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, boost::long_long_type > (detail::number_kind_floating_pointscalbln_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c< (number_category<Backend>::value == number_kind_floating_point), detail::expression< detail::function, detail::number_kind_floating_pointscalbln_funct < Backend>, number<Backend, et_on>, boost::long_long_type> > ::type scalbln(const number<Backend, et_on>& arg, boost::long_long_type const& a) { return detail::expression< detail::function, detail::number_kind_floating_pointscalbln_funct < Backend>, number<Backend, et_on>, boost::long_long_type > (detail::number_kind_floating_pointscalbln_funct < Backend > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c< (number_category<Backend>::value == number_kind_floating_point), number<Backend, et_off> >::type scalbln(const number<Backend, et_off>& arg, boost::long_long_type const& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_scalbln; eval_scalbln (result.backend(), arg.backend(), a); return result; }
23866:
23866:
23866:
23866:
23866: namespace detail { template <class Backend> struct number_kind_complexexp_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_exp; eval_exp (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_exp; Backend temp; eval_exp (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexexp_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type exp(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_complexexp_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_complexexp_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexexp_funct < Backend>, number<Backend, et_on> > > ::type exp(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_complexexp_funct < Backend>, number<Backend, et_on> > (detail::number_kind_complexexp_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_complex, number<Backend, et_off> >::type exp(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_exp; eval_exp(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, number<Backend, et_on> > ::type exp(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_exp; eval_exp(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_complexlog_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_log; eval_log (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_log; Backend temp; eval_log (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexlog_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type log(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_complexlog_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_complexlog_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexlog_funct < Backend>, number<Backend, et_on> > > ::type log(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_complexlog_funct < Backend>, number<Backend, et_on> > (detail::number_kind_complexlog_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_complex, number<Backend, et_off> >::type log(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_log; eval_log(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, number<Backend, et_on> > ::type log(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_log; eval_log(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_complexlog10_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_log10; eval_log10 (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_log10; Backend temp; eval_log10 (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexlog10_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type log10(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_complexlog10_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_complexlog10_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexlog10_funct < Backend>, number<Backend, et_on> > > ::type log10(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_complexlog10_funct < Backend>, number<Backend, et_on> > (detail::number_kind_complexlog10_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_complex, number<Backend, et_off> >::type log10(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_log10; eval_log10(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, number<Backend, et_on> > ::type log10(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_log10; eval_log10(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_complexpow_funct { constexpr void operator()(Backend& result, const Backend& arg, const Backend& a) const { using default_ops::eval_pow; eval_pow (result, arg, a); } template <class Arithmetic> constexpr void operator()(Backend& result, const Backend& arg, const Arithmetic& a) const { using default_ops::eval_pow; eval_pow (result, arg, number<Backend>::canonical_value(a)); } template <class Arithmetic> constexpr void operator()(Backend& result, const Arithmetic& arg, const Backend& a) const { using default_ops::eval_pow; eval_pow (result, number<Backend>::canonical_value(arg), a); } template <class U> constexpr void operator()(U& result, const Backend& arg, const Backend& a) const { using default_ops::eval_pow; Backend r; eval_pow (r, arg, a); result = r; } template <class U, class Arithmetic> constexpr void operator()(U& result, const Backend& arg, const Arithmetic& a) const { using default_ops::eval_pow; Backend r; eval_pow (r, arg, number<Backend>::canonical_value(a)); result = r; } template <class U, class Arithmetic> constexpr void operator()(U& result, const Arithmetic& arg, const Backend& a) const { using default_ops::eval_pow; Backend r; eval_pow (r, number<Backend>::canonical_value(arg), a); result = r; } }; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexpow_funct<Backend>, number<Backend, et_on>, number<Backend, et_on> > > ::type pow(const number<Backend, et_on>& arg, const number<Backend, et_on>& a) { return detail::expression<detail::function, detail::number_kind_complexpow_funct < Backend>, number<Backend, et_on>, number<Backend, et_on> > (detail::number_kind_complexpow_funct<Backend>(), arg, a); } template <class Backend, class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_complex) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), detail::expression<detail::function, detail::number_kind_complexpow_funct<Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > > ::type pow(const number<Backend, et_on>& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression<detail::function, detail::number_kind_complexpow_funct < Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_complexpow_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_complex) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), detail::expression<detail::function, detail::number_kind_complexpow_funct<Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > > ::type pow(const detail::expression<tag, A1, A2, A3, A4>& arg, const number<Backend, et_on>& a) { return detail::expression<detail::function, detail::number_kind_complexpow_funct < Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > (detail::number_kind_complexpow_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class tagb, class A1b, class A2b, class A3b, class A4b> inline constexpr typename enable_if_c<(number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_complex) && (number_category<detail::expression<tagb, A1b, A2b, A3b, A4b> >::value == number_kind_complex), detail::expression<detail::function, detail::number_kind_complexpow_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, detail::expression<tagb, A1b, A2b, A3b, A4b> > > ::type pow(const detail::expression<tag, A1, A2, A3, A4>& arg, const detail::expression<tagb, A1b, A2b, A3b, A4b>& a) { return detail::expression<detail::function, detail::number_kind_complexpow_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, detail::expression<tagb, A1b, A2b, A3b, A4b> > (detail::number_kind_complexpow_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_complex), detail::expression<detail::function, detail::number_kind_complexpow_funct < Backend>, number<Backend, et_on>, Arithmetic> > ::type pow(const number<Backend, et_on>& arg, const Arithmetic& a) { return detail::expression<detail::function, detail::number_kind_complexpow_funct<Backend>, number<Backend, et_on>, Arithmetic > (detail::number_kind_complexpow_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value && (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_complex), detail::expression< detail::function, detail::number_kind_complexpow_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, Arithmetic> > ::type pow(const detail::expression<tag, A1, A2, A3, A4>& arg, const Arithmetic& a) { return detail::expression< detail::function, detail::number_kind_complexpow_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, Arithmetic > (detail::number_kind_complexpow_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_complex), detail::expression< detail::function, detail::number_kind_complexpow_funct < Backend>, Arithmetic, number<Backend, et_on> > > ::type pow(const Arithmetic& arg, const number<Backend, et_on>& a) { return detail::expression< detail::function, detail::number_kind_complexpow_funct < Backend>, Arithmetic, number<Backend, et_on> > (detail::number_kind_complexpow_funct < Backend > (), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value && (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_complex), detail::expression< detail::function, detail::number_kind_complexpow_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, Arithmetic, detail::expression<tag, A1, A2, A3, A4> > > ::type pow(const Arithmetic& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression< detail::function, detail::number_kind_complexpow_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, Arithmetic, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_complexpow_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_complex), number<Backend, et_off> >::type pow(const number<Backend, et_off>& arg, const number<Backend, et_off>& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_pow; eval_pow(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_off> >::value && (number_category<Backend>::value == number_kind_complex), number<Backend, et_off> >::type pow(const number<Backend, et_off>& arg, const Arithmetic& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_pow; eval_pow (result.backend(), arg.backend(), number<Backend, et_off>::canonical_value(a)); return result; } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_off> >::value && (number_category<Backend>::value == number_kind_complex), number<Backend, et_off> >::type pow(const Arithmetic& a, const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_pow; eval_pow (result.backend(), number<Backend, et_off>::canonical_value(a), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, number<Backend, et_on> >::type pow(number<Backend, et_on>&& arg, const number<Backend, et_on>& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_pow; eval_pow(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, number<Backend, et_on> >::type pow(const number<Backend, et_on>& arg, number<Backend, et_on>&& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_pow; eval_pow(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, number<Backend, et_on> >::type pow(number<Backend, et_on>&& arg, number<Backend, et_on>&& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_pow; eval_pow(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend, class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_complex) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), number<Backend, et_on> > ::type pow(number<Backend, et_on>&& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression<detail::function, detail::number_kind_complexpow_funct < Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_complexpow_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_complex) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), number<Backend, et_on> > ::type pow(const detail::expression<tag, A1, A2, A3, A4>& arg, number<Backend, et_on>&& a) { return detail::expression<detail::function, detail::number_kind_complexpow_funct < Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > (detail::number_kind_complexpow_funct<Backend>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_complex), number<Backend, et_on> >::type pow(number<Backend, et_on>&& arg, const Arithmetic& a) { return detail::expression<detail::function, detail::number_kind_complexpow_funct<Backend>, number<Backend, et_on>, Arithmetic > (detail::number_kind_complexpow_funct<Backend>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_complex), number<Backend, et_on> > ::type pow(const Arithmetic& arg, number<Backend, et_on>&& a) { return detail::expression< detail::function, detail::number_kind_complexpow_funct < Backend>, Arithmetic, number<Backend, et_on> > (detail::number_kind_complexpow_funct < Backend > (), arg, a); }
23866: namespace detail { template <class Backend> struct number_kind_complexsqrt_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_sqrt; eval_sqrt (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_sqrt; Backend temp; eval_sqrt (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexsqrt_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type sqrt(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_complexsqrt_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_complexsqrt_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexsqrt_funct < Backend>, number<Backend, et_on> > > ::type sqrt(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_complexsqrt_funct < Backend>, number<Backend, et_on> > (detail::number_kind_complexsqrt_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_complex, number<Backend, et_off> >::type sqrt(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_sqrt; eval_sqrt(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, number<Backend, et_on> > ::type sqrt(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_sqrt; eval_sqrt(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_complexsin_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_sin; eval_sin (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_sin; Backend temp; eval_sin (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexsin_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type sin(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_complexsin_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_complexsin_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexsin_funct < Backend>, number<Backend, et_on> > > ::type sin(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_complexsin_funct < Backend>, number<Backend, et_on> > (detail::number_kind_complexsin_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_complex, number<Backend, et_off> >::type sin(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_sin; eval_sin(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, number<Backend, et_on> > ::type sin(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_sin; eval_sin(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_complexcos_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_cos; eval_cos (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_cos; Backend temp; eval_cos (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexcos_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type cos(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_complexcos_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_complexcos_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexcos_funct < Backend>, number<Backend, et_on> > > ::type cos(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_complexcos_funct < Backend>, number<Backend, et_on> > (detail::number_kind_complexcos_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_complex, number<Backend, et_off> >::type cos(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_cos; eval_cos(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, number<Backend, et_on> > ::type cos(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_cos; eval_cos(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_complextan_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_tan; eval_tan (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_tan; Backend temp; eval_tan (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complextan_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type tan(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_complextan_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_complextan_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complextan_funct < Backend>, number<Backend, et_on> > > ::type tan(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_complextan_funct < Backend>, number<Backend, et_on> > (detail::number_kind_complextan_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_complex, number<Backend, et_off> >::type tan(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_tan; eval_tan(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, number<Backend, et_on> > ::type tan(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_tan; eval_tan(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_complexasin_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_asin; eval_asin (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_asin; Backend temp; eval_asin (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexasin_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type asin(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_complexasin_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_complexasin_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexasin_funct < Backend>, number<Backend, et_on> > > ::type asin(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_complexasin_funct < Backend>, number<Backend, et_on> > (detail::number_kind_complexasin_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_complex, number<Backend, et_off> >::type asin(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_asin; eval_asin(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, number<Backend, et_on> > ::type asin(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_asin; eval_asin(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_complexacos_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_acos; eval_acos (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_acos; Backend temp; eval_acos (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexacos_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type acos(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_complexacos_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_complexacos_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexacos_funct < Backend>, number<Backend, et_on> > > ::type acos(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_complexacos_funct < Backend>, number<Backend, et_on> > (detail::number_kind_complexacos_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_complex, number<Backend, et_off> >::type acos(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_acos; eval_acos(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, number<Backend, et_on> > ::type acos(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_acos; eval_acos(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_complexatan_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_atan; eval_atan (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_atan; Backend temp; eval_atan (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexatan_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type atan(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_complexatan_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_complexatan_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexatan_funct < Backend>, number<Backend, et_on> > > ::type atan(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_complexatan_funct < Backend>, number<Backend, et_on> > (detail::number_kind_complexatan_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_complex, number<Backend, et_off> >::type atan(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_atan; eval_atan(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, number<Backend, et_on> > ::type atan(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_atan; eval_atan(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_complexsinh_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_sinh; eval_sinh (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_sinh; Backend temp; eval_sinh (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexsinh_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type sinh(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_complexsinh_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_complexsinh_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexsinh_funct < Backend>, number<Backend, et_on> > > ::type sinh(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_complexsinh_funct < Backend>, number<Backend, et_on> > (detail::number_kind_complexsinh_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_complex, number<Backend, et_off> >::type sinh(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_sinh; eval_sinh(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, number<Backend, et_on> > ::type sinh(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_sinh; eval_sinh(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_complexcosh_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_cosh; eval_cosh (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_cosh; Backend temp; eval_cosh (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexcosh_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type cosh(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_complexcosh_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_complexcosh_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexcosh_funct < Backend>, number<Backend, et_on> > > ::type cosh(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_complexcosh_funct < Backend>, number<Backend, et_on> > (detail::number_kind_complexcosh_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_complex, number<Backend, et_off> >::type cosh(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_cosh; eval_cosh(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, number<Backend, et_on> > ::type cosh(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_cosh; eval_cosh(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_complextanh_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_tanh; eval_tanh (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_tanh; Backend temp; eval_tanh (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complextanh_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type tanh(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_complextanh_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_complextanh_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complextanh_funct < Backend>, number<Backend, et_on> > > ::type tanh(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_complextanh_funct < Backend>, number<Backend, et_on> > (detail::number_kind_complextanh_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_complex, number<Backend, et_off> >::type tanh(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_tanh; eval_tanh(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, number<Backend, et_on> > ::type tanh(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_tanh; eval_tanh(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_complexasinh_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_asinh; eval_asinh (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_asinh; Backend temp; eval_asinh (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexasinh_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type asinh(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_complexasinh_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_complexasinh_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexasinh_funct < Backend>, number<Backend, et_on> > > ::type asinh(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_complexasinh_funct < Backend>, number<Backend, et_on> > (detail::number_kind_complexasinh_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_complex, number<Backend, et_off> >::type asinh(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_asinh; eval_asinh(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, number<Backend, et_on> > ::type asinh(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_asinh; eval_asinh(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_complexacosh_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_acosh; eval_acosh (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_acosh; Backend temp; eval_acosh (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexacosh_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type acosh(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_complexacosh_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_complexacosh_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexacosh_funct < Backend>, number<Backend, et_on> > > ::type acosh(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_complexacosh_funct < Backend>, number<Backend, et_on> > (detail::number_kind_complexacosh_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_complex, number<Backend, et_off> >::type acosh(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_acosh; eval_acosh(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, number<Backend, et_on> > ::type acosh(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_acosh; eval_acosh(result.backend(), arg.backend()); return result; }
23866: namespace detail { template <class Backend> struct number_kind_complexatanh_funct { constexpr void operator()(Backend& result, const Backend& arg) const { using default_ops::eval_atanh; eval_atanh (result, arg); } template <class U> constexpr void operator()(U& result, const Backend& arg) const { using default_ops::eval_atanh; Backend temp; eval_atanh (temp, arg); result = temp; } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexatanh_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > > ::type atanh(const detail::expression<tag, A1, A2, A3, A4>& arg) { return detail::expression< detail::function, detail::number_kind_complexatanh_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_complexatanh_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg); } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, detail::expression<detail::function, detail::number_kind_complexatanh_funct < Backend>, number<Backend, et_on> > > ::type atanh(const number<Backend, et_on>& arg) { return detail::expression< detail::function, detail::number_kind_complexatanh_funct < Backend>, number<Backend, et_on> > (detail::number_kind_complexatanh_funct < Backend > (), arg); } template <class Backend> inline constexpr typename boost::enable_if_c< boost::multiprecision::number_category<Backend>::value == number_kind_complex, number<Backend, et_off> >::type atanh(const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_atanh; eval_atanh(result.backend(), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_complex, number<Backend, et_on> > ::type atanh(number<Backend, et_on>&& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_atanh; eval_atanh(result.backend(), arg.backend()); return result; }
23866:
23866:
23866:
23866:
23866: namespace detail { template <class Backend> struct number_kind_integergcd_funct { constexpr void operator()(Backend& result, const Backend& arg, const Backend& a) const { using default_ops::eval_gcd; eval_gcd (result, arg, a); } template <class Arithmetic> constexpr void operator()(Backend& result, const Backend& arg, const Arithmetic& a) const { using default_ops::eval_gcd; eval_gcd (result, arg, number<Backend>::canonical_value(a)); } template <class Arithmetic> constexpr void operator()(Backend& result, const Arithmetic& arg, const Backend& a) const { using default_ops::eval_gcd; eval_gcd (result, number<Backend>::canonical_value(arg), a); } template <class U> constexpr void operator()(U& result, const Backend& arg, const Backend& a) const { using default_ops::eval_gcd; Backend r; eval_gcd (r, arg, a); result = r; } template <class U, class Arithmetic> constexpr void operator()(U& result, const Backend& arg, const Arithmetic& a) const { using default_ops::eval_gcd; Backend r; eval_gcd (r, arg, number<Backend>::canonical_value(a)); result = r; } template <class U, class Arithmetic> constexpr void operator()(U& result, const Arithmetic& arg, const Backend& a) const { using default_ops::eval_gcd; Backend r; eval_gcd (r, number<Backend>::canonical_value(arg), a); result = r; } }; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_integer, detail::expression<detail::function, detail::number_kind_integergcd_funct<Backend>, number<Backend, et_on>, number<Backend, et_on> > > ::type gcd(const number<Backend, et_on>& arg, const number<Backend, et_on>& a) { return detail::expression<detail::function, detail::number_kind_integergcd_funct < Backend>, number<Backend, et_on>, number<Backend, et_on> > (detail::number_kind_integergcd_funct<Backend>(), arg, a); } template <class Backend, class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_integer) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), detail::expression<detail::function, detail::number_kind_integergcd_funct<Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > > ::type gcd(const number<Backend, et_on>& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression<detail::function, detail::number_kind_integergcd_funct < Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_integergcd_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_integer) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), detail::expression<detail::function, detail::number_kind_integergcd_funct<Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > > ::type gcd(const detail::expression<tag, A1, A2, A3, A4>& arg, const number<Backend, et_on>& a) { return detail::expression<detail::function, detail::number_kind_integergcd_funct < Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > (detail::number_kind_integergcd_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class tagb, class A1b, class A2b, class A3b, class A4b> inline constexpr typename enable_if_c<(number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_integer) && (number_category<detail::expression<tagb, A1b, A2b, A3b, A4b> >::value == number_kind_integer), detail::expression<detail::function, detail::number_kind_integergcd_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, detail::expression<tagb, A1b, A2b, A3b, A4b> > > ::type gcd(const detail::expression<tag, A1, A2, A3, A4>& arg, const detail::expression<tagb, A1b, A2b, A3b, A4b>& a) { return detail::expression<detail::function, detail::number_kind_integergcd_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, detail::expression<tagb, A1b, A2b, A3b, A4b> > (detail::number_kind_integergcd_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_integer), detail::expression<detail::function, detail::number_kind_integergcd_funct < Backend>, number<Backend, et_on>, Arithmetic> > ::type gcd(const number<Backend, et_on>& arg, const Arithmetic& a) { return detail::expression<detail::function, detail::number_kind_integergcd_funct<Backend>, number<Backend, et_on>, Arithmetic > (detail::number_kind_integergcd_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value && (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_integer), detail::expression< detail::function, detail::number_kind_integergcd_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, Arithmetic> > ::type gcd(const detail::expression<tag, A1, A2, A3, A4>& arg, const Arithmetic& a) { return detail::expression< detail::function, detail::number_kind_integergcd_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, Arithmetic > (detail::number_kind_integergcd_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_integer), detail::expression< detail::function, detail::number_kind_integergcd_funct < Backend>, Arithmetic, number<Backend, et_on> > > ::type gcd(const Arithmetic& arg, const number<Backend, et_on>& a) { return detail::expression< detail::function, detail::number_kind_integergcd_funct < Backend>, Arithmetic, number<Backend, et_on> > (detail::number_kind_integergcd_funct < Backend > (), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value && (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_integer), detail::expression< detail::function, detail::number_kind_integergcd_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, Arithmetic, detail::expression<tag, A1, A2, A3, A4> > > ::type gcd(const Arithmetic& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression< detail::function, detail::number_kind_integergcd_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, Arithmetic, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_integergcd_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_integer), number<Backend, et_off> >::type gcd(const number<Backend, et_off>& arg, const number<Backend, et_off>& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_gcd; eval_gcd(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_off> >::value && (number_category<Backend>::value == number_kind_integer), number<Backend, et_off> >::type gcd(const number<Backend, et_off>& arg, const Arithmetic& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_gcd; eval_gcd (result.backend(), arg.backend(), number<Backend, et_off>::canonical_value(a)); return result; } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_off> >::value && (number_category<Backend>::value == number_kind_integer), number<Backend, et_off> >::type gcd(const Arithmetic& a, const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_gcd; eval_gcd (result.backend(), number<Backend, et_off>::canonical_value(a), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_integer, number<Backend, et_on> >::type gcd(number<Backend, et_on>&& arg, const number<Backend, et_on>& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_gcd; eval_gcd(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_integer, number<Backend, et_on> >::type gcd(const number<Backend, et_on>& arg, number<Backend, et_on>&& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_gcd; eval_gcd(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_integer, number<Backend, et_on> >::type gcd(number<Backend, et_on>&& arg, number<Backend, et_on>&& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_gcd; eval_gcd(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend, class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_integer) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), number<Backend, et_on> > ::type gcd(number<Backend, et_on>&& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression<detail::function, detail::number_kind_integergcd_funct < Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_integergcd_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_integer) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), number<Backend, et_on> > ::type gcd(const detail::expression<tag, A1, A2, A3, A4>& arg, number<Backend, et_on>&& a) { return detail::expression<detail::function, detail::number_kind_integergcd_funct < Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > (detail::number_kind_integergcd_funct<Backend>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_integer), number<Backend, et_on> >::type gcd(number<Backend, et_on>&& arg, const Arithmetic& a) { return detail::expression<detail::function, detail::number_kind_integergcd_funct<Backend>, number<Backend, et_on>, Arithmetic > (detail::number_kind_integergcd_funct<Backend>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_integer), number<Backend, et_on> > ::type gcd(const Arithmetic& arg, number<Backend, et_on>&& a) { return detail::expression< detail::function, detail::number_kind_integergcd_funct < Backend>, Arithmetic, number<Backend, et_on> > (detail::number_kind_integergcd_funct < Backend > (), arg, a); }
23866: namespace detail { template <class Backend> struct number_kind_integerlcm_funct { constexpr void operator()(Backend& result, const Backend& arg, const Backend& a) const { using default_ops::eval_lcm; eval_lcm (result, arg, a); } template <class Arithmetic> constexpr void operator()(Backend& result, const Backend& arg, const Arithmetic& a) const { using default_ops::eval_lcm; eval_lcm (result, arg, number<Backend>::canonical_value(a)); } template <class Arithmetic> constexpr void operator()(Backend& result, const Arithmetic& arg, const Backend& a) const { using default_ops::eval_lcm; eval_lcm (result, number<Backend>::canonical_value(arg), a); } template <class U> constexpr void operator()(U& result, const Backend& arg, const Backend& a) const { using default_ops::eval_lcm; Backend r; eval_lcm (r, arg, a); result = r; } template <class U, class Arithmetic> constexpr void operator()(U& result, const Backend& arg, const Arithmetic& a) const { using default_ops::eval_lcm; Backend r; eval_lcm (r, arg, number<Backend>::canonical_value(a)); result = r; } template <class U, class Arithmetic> constexpr void operator()(U& result, const Arithmetic& arg, const Backend& a) const { using default_ops::eval_lcm; Backend r; eval_lcm (r, number<Backend>::canonical_value(arg), a); result = r; } }; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_integer, detail::expression<detail::function, detail::number_kind_integerlcm_funct<Backend>, number<Backend, et_on>, number<Backend, et_on> > > ::type lcm(const number<Backend, et_on>& arg, const number<Backend, et_on>& a) { return detail::expression<detail::function, detail::number_kind_integerlcm_funct < Backend>, number<Backend, et_on>, number<Backend, et_on> > (detail::number_kind_integerlcm_funct<Backend>(), arg, a); } template <class Backend, class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_integer) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), detail::expression<detail::function, detail::number_kind_integerlcm_funct<Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > > ::type lcm(const number<Backend, et_on>& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression<detail::function, detail::number_kind_integerlcm_funct < Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_integerlcm_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_integer) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), detail::expression<detail::function, detail::number_kind_integerlcm_funct<Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > > ::type lcm(const detail::expression<tag, A1, A2, A3, A4>& arg, const number<Backend, et_on>& a) { return detail::expression<detail::function, detail::number_kind_integerlcm_funct < Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > (detail::number_kind_integerlcm_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class tagb, class A1b, class A2b, class A3b, class A4b> inline constexpr typename enable_if_c<(number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_integer) && (number_category<detail::expression<tagb, A1b, A2b, A3b, A4b> >::value == number_kind_integer), detail::expression<detail::function, detail::number_kind_integerlcm_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, detail::expression<tagb, A1b, A2b, A3b, A4b> > > ::type lcm(const detail::expression<tag, A1, A2, A3, A4>& arg, const detail::expression<tagb, A1b, A2b, A3b, A4b>& a) { return detail::expression<detail::function, detail::number_kind_integerlcm_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, detail::expression<tagb, A1b, A2b, A3b, A4b> > (detail::number_kind_integerlcm_funct<typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_integer), detail::expression<detail::function, detail::number_kind_integerlcm_funct < Backend>, number<Backend, et_on>, Arithmetic> > ::type lcm(const number<Backend, et_on>& arg, const Arithmetic& a) { return detail::expression<detail::function, detail::number_kind_integerlcm_funct<Backend>, number<Backend, et_on>, Arithmetic > (detail::number_kind_integerlcm_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value && (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_integer), detail::expression< detail::function, detail::number_kind_integerlcm_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, Arithmetic> > ::type lcm(const detail::expression<tag, A1, A2, A3, A4>& arg, const Arithmetic& a) { return detail::expression< detail::function, detail::number_kind_integerlcm_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, Arithmetic > (detail::number_kind_integerlcm_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_integer), detail::expression< detail::function, detail::number_kind_integerlcm_funct < Backend>, Arithmetic, number<Backend, et_on> > > ::type lcm(const Arithmetic& arg, const number<Backend, et_on>& a) { return detail::expression< detail::function, detail::number_kind_integerlcm_funct < Backend>, Arithmetic, number<Backend, et_on> > (detail::number_kind_integerlcm_funct < Backend > (), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value && (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_integer), detail::expression< detail::function, detail::number_kind_integerlcm_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, Arithmetic, detail::expression<tag, A1, A2, A3, A4> > > ::type lcm(const Arithmetic& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression< detail::function, detail::number_kind_integerlcm_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, Arithmetic, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_integerlcm_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_integer), number<Backend, et_off> >::type lcm(const number<Backend, et_off>& arg, const number<Backend, et_off>& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_lcm; eval_lcm(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_off> >::value && (number_category<Backend>::value == number_kind_integer), number<Backend, et_off> >::type lcm(const number<Backend, et_off>& arg, const Arithmetic& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_lcm; eval_lcm (result.backend(), arg.backend(), number<Backend, et_off>::canonical_value(a)); return result; } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_off> >::value && (number_category<Backend>::value == number_kind_integer), number<Backend, et_off> >::type lcm(const Arithmetic& a, const number<Backend, et_off>& arg) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg); number<Backend, et_off> result; using default_ops::eval_lcm; eval_lcm (result.backend(), number<Backend, et_off>::canonical_value(a), arg.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_integer, number<Backend, et_on> >::type lcm(number<Backend, et_on>&& arg, const number<Backend, et_on>& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_lcm; eval_lcm(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_integer, number<Backend, et_on> >::type lcm(const number<Backend, et_on>& arg, number<Backend, et_on>&& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_lcm; eval_lcm(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend> inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_integer, number<Backend, et_on> >::type lcm(number<Backend, et_on>&& arg, number<Backend, et_on>&& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_lcm; eval_lcm(result.backend(), arg.backend(), a.backend()); return result; } template <class Backend, class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_integer) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), number<Backend, et_on> > ::type lcm(number<Backend, et_on>&& arg, const detail::expression<tag, A1, A2, A3, A4>& a) { return detail::expression<detail::function, detail::number_kind_integerlcm_funct < Backend>, number<Backend, et_on>, detail::expression<tag, A1, A2, A3, A4> > (detail::number_kind_integerlcm_funct<Backend>(), arg, a); } template <class tag, class A1, class A2, class A3, class A4, class Backend> inline constexpr typename enable_if_c<(number_category<Backend>::value == number_kind_integer) && (boost::is_convertible<typename detail::expression<tag, A1, A2, A3, A4>::result_type, number<Backend, et_on> >::value), number<Backend, et_on> > ::type lcm(const detail::expression<tag, A1, A2, A3, A4>& arg, number<Backend, et_on>&& a) { return detail::expression<detail::function, detail::number_kind_integerlcm_funct < Backend>, detail::expression<tag, A1, A2, A3, A4>, number<Backend, et_on> > (detail::number_kind_integerlcm_funct<Backend>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_integer), number<Backend, et_on> >::type lcm(number<Backend, et_on>&& arg, const Arithmetic& a) { return detail::expression<detail::function, detail::number_kind_integerlcm_funct<Backend>, number<Backend, et_on>, Arithmetic > (detail::number_kind_integerlcm_funct<Backend>(), arg, a); } template <class Backend, class Arithmetic> inline constexpr typename enable_if_c< is_compatible_arithmetic_type<Arithmetic, number<Backend, et_on> >::value && (number_category<Backend>::value == number_kind_integer), number<Backend, et_on> > ::type lcm(const Arithmetic& arg, number<Backend, et_on>&& a) { return detail::expression< detail::function, detail::number_kind_integerlcm_funct < Backend>, Arithmetic, number<Backend, et_on> > (detail::number_kind_integerlcm_funct < Backend > (), arg, a); }
23866: namespace detail { template <class Backend> struct number_kind_integerpow_funct { template <class Arg> constexpr void operator()(Backend& result, Backend const& arg, Arg a) const { using default_ops::eval_pow; eval_pow (result, arg, a); } }; } template <class tag, class A1, class A2, class A3, class A4> inline constexpr typename enable_if_c< (number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_integer), detail::expression< detail::function, detail::number_kind_integerpow_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, unsigned> > ::type pow(const detail::expression<tag, A1, A2, A3, A4>& arg, unsigned const& a) { return detail::expression< detail::function, detail::number_kind_integerpow_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type>, detail::expression<tag, A1, A2, A3, A4>, unsigned > (detail::number_kind_integerpow_funct < typename detail::backend_type<detail::expression<tag, A1, A2, A3, A4> >::type > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c< (number_category<Backend>::value == number_kind_integer), detail::expression< detail::function, detail::number_kind_integerpow_funct < Backend>, number<Backend, et_on>, unsigned> > ::type pow(const number<Backend, et_on>& arg, unsigned const& a) { return detail::expression< detail::function, detail::number_kind_integerpow_funct < Backend>, number<Backend, et_on>, unsigned > (detail::number_kind_integerpow_funct < Backend > (), arg, a); } template <class Backend> inline constexpr typename enable_if_c< (number_category<Backend>::value == number_kind_integer), number<Backend, et_off> >::type pow(const number<Backend, et_off>& arg, unsigned const& a) { detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(arg, a); number<Backend, et_off> result; using default_ops::eval_pow; eval_pow (result.backend(), arg.backend(), a); return result; }
23866:
23866: #undef BINARY_OP_FUNCTOR
23866: #undef UNARY_OP_FUNCTOR
23866:
23866:
23866:
23866:
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_floating_point, typename Backend::exponent_type>::type
23866: ilogb(const multiprecision::number<Backend, ExpressionTemplates>& val)
23866: {
23866: using default_ops::eval_ilogb;
23866: return eval_ilogb(val.backend());
23866: }
23866:
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename enable_if_c<number_category<detail::expression<tag, A1, A2, A3, A4> >::value == number_kind_floating_point, typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type::backend_type::exponent_type>::type
23866: ilogb(const detail::expression<tag, A1, A2, A3, A4>& val)
23866: {
23866: using default_ops::eval_ilogb;
23866: typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type arg(val);
23866: return eval_ilogb(arg.backend());
23866: }
23866:
23866: }
23866:
23866: namespace math {
23866:
23866:
23866:
23866: namespace detail {
23866: template <class T>
23866: T sinc_pi_imp(T);
23866: template <class T>
23866: T sinhc_pi_imp(T);
23866: }
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline multiprecision::number<Backend, ExpressionTemplates> sinc_pi(const multiprecision::number<Backend, ExpressionTemplates>& x)
23866: {
23866: boost::multiprecision::detail::scoped_default_precision<multiprecision::number<Backend, ExpressionTemplates> > precision_guard(x);
23866: return std::move(detail::sinc_pi_imp(x));
23866: }
23866:
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates, class Policy>
23866: inline multiprecision::number<Backend, ExpressionTemplates> sinc_pi(const multiprecision::number<Backend, ExpressionTemplates>& x, const Policy&)
23866: {
23866: boost::multiprecision::detail::scoped_default_precision<multiprecision::number<Backend, ExpressionTemplates> > precision_guard(x);
23866: return std::move(detail::sinc_pi_imp(x));
23866: }
23866:
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline multiprecision::number<Backend, ExpressionTemplates> sinhc_pi(const multiprecision::number<Backend, ExpressionTemplates>& x)
23866: {
23866: boost::multiprecision::detail::scoped_default_precision<multiprecision::number<Backend, ExpressionTemplates> > precision_guard(x);
23866: return std::move(detail::sinhc_pi_imp(x));
23866: }
23866:
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates, class Policy>
23866: inline multiprecision::number<Backend, ExpressionTemplates> sinhc_pi(const multiprecision::number<Backend, ExpressionTemplates>& x, const Policy&)
23866: {
23866: boost::multiprecision::detail::scoped_default_precision<multiprecision::number<Backend, ExpressionTemplates> > precision_guard(x);
23866: return std::move(boost::math::sinhc_pi(x));
23866: }
23866:
23866: using boost::multiprecision::gcd;
23866: using boost::multiprecision::lcm;
23866:
23866:
23866:
23866:
23866: }
23866:
23866: namespace integer {
23866:
23866: using boost::multiprecision::gcd;
23866: using boost::multiprecision::lcm;
23866:
23866: }
23866:
23866: }
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/multiprecision/detail/no_et_ops.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MP_NO_ET_OPS_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace multiprecision {
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr number<B, et_off> operator-(const number<B, et_off>& v)
23866: {
23866: static_assert(is_signed_number<B>::value, "Negating an unsigned type results in ill-defined behavior.");
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(v);
23866: number<B, et_off> result(v);
23866: result.backend().negate();
23866: return result;
23866: }
23866: template <class B>
23866: inline constexpr number<B, et_off> operator~(const number<B, et_off>& v)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(v);
23866: number<B, et_off> result;
23866: eval_complement(result.backend(), v.backend());
23866: return result;
23866: }
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr number<B, et_off> operator+(const number<B, et_off>& a, const number<B, et_off>& b)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
23866: number<B, et_off> result;
23866: using default_ops::eval_add;
23866: eval_add(result.backend(), a.backend(), b.backend());
23866: return result;
23866: }
23866: template <class B, class V>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
23866: operator+(const number<B, et_off>& a, const V& b)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a);
23866: number<B, et_off> result;
23866: using default_ops::eval_add;
23866: eval_add(result.backend(), a.backend(), number<B, et_off>::canonical_value(b));
23866: return result;
23866: }
23866: template <class V, class B>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
23866: operator+(const V& a, const number<B, et_off>& b)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(b);
23866: number<B, et_off> result;
23866: using default_ops::eval_add;
23866: eval_add(result.backend(), b.backend(), number<B, et_off>::canonical_value(a));
23866: return result;
23866: }
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr number<B, et_off> operator-(const number<B, et_off>& a, const number<B, et_off>& b)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
23866: number<B, et_off> result;
23866: using default_ops::eval_subtract;
23866: eval_subtract(result.backend(), a.backend(), b.backend());
23866: return result;
23866: }
23866: template <class B, class V>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
23866: operator-(const number<B, et_off>& a, const V& b)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a);
23866: number<B, et_off> result;
23866: using default_ops::eval_subtract;
23866: eval_subtract(result.backend(), a.backend(), number<B, et_off>::canonical_value(b));
23866: return result;
23866: }
23866: template <class V, class B>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
23866: operator-(const V& a, const number<B, et_off>& b)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(b);
23866: number<B, et_off> result;
23866: using default_ops::eval_subtract;
23866: eval_subtract(result.backend(), number<B, et_off>::canonical_value(a), b.backend());
23866: return result;
23866: }
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr number<B, et_off> operator*(const number<B, et_off>& a, const number<B, et_off>& b)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
23866: number<B, et_off> result;
23866: using default_ops::eval_multiply;
23866: eval_multiply(result.backend(), a.backend(), b.backend());
23866: return result;
23866: }
23866: template <class B, class V>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
23866: operator*(const number<B, et_off>& a, const V& b)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a);
23866: number<B, et_off> result;
23866: using default_ops::eval_multiply;
23866: eval_multiply(result.backend(), a.backend(), number<B, et_off>::canonical_value(b));
23866: return result;
23866: }
23866: template <class V, class B>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
23866: operator*(const V& a, const number<B, et_off>& b)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(b);
23866: number<B, et_off> result;
23866: using default_ops::eval_multiply;
23866: eval_multiply(result.backend(), b.backend(), number<B, et_off>::canonical_value(a));
23866: return result;
23866: }
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr number<B, et_off> operator/(const number<B, et_off>& a, const number<B, et_off>& b)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
23866: number<B, et_off> result;
23866: using default_ops::eval_divide;
23866: eval_divide(result.backend(), a.backend(), b.backend());
23866: return result;
23866: }
23866: template <class B, class V>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
23866: operator/(const number<B, et_off>& a, const V& b)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a);
23866: number<B, et_off> result;
23866: using default_ops::eval_divide;
23866: eval_divide(result.backend(), a.backend(), number<B, et_off>::canonical_value(b));
23866: return result;
23866: }
23866: template <class V, class B>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
23866: operator/(const V& a, const number<B, et_off>& b)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(b);
23866: number<B, et_off> result;
23866: using default_ops::eval_divide;
23866: eval_divide(result.backend(), number<B, et_off>::canonical_value(a), b.backend());
23866: return result;
23866: }
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator%(const number<B, et_off>& a, const number<B, et_off>& b)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
23866: number<B, et_off> result;
23866: using default_ops::eval_modulus;
23866: eval_modulus(result.backend(), a.backend(), b.backend());
23866: return result;
23866: }
23866: template <class B, class V>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
23866: operator%(const number<B, et_off>& a, const V& b)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a);
23866: number<B, et_off> result;
23866: using default_ops::eval_modulus;
23866: eval_modulus(result.backend(), a.backend(), number<B, et_off>::canonical_value(b));
23866: return result;
23866: }
23866: template <class V, class B>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
23866: operator%(const V& a, const number<B, et_off>& b)
23866: {
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(b);
23866: number<B, et_off> result;
23866: using default_ops::eval_modulus;
23866: eval_modulus(result.backend(), number<B, et_off>::canonical_value(a), b.backend());
23866: return result;
23866: }
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator|(const number<B, et_off>& a, const number<B, et_off>& b)
23866: {
23866: number<B, et_off> result;
23866: using default_ops::eval_bitwise_or;
23866: eval_bitwise_or(result.backend(), a.backend(), b.backend());
23866: return result;
23866: }
23866: template <class B, class V>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
23866: operator|(const number<B, et_off>& a, const V& b)
23866: {
23866: number<B, et_off> result;
23866: using default_ops::eval_bitwise_or;
23866: eval_bitwise_or(result.backend(), a.backend(), number<B, et_off>::canonical_value(b));
23866: return result;
23866: }
23866: template <class V, class B>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
23866: operator|(const V& a, const number<B, et_off>& b)
23866: {
23866: number<B, et_off> result;
23866: using default_ops::eval_bitwise_or;
23866: eval_bitwise_or(result.backend(), b.backend(), number<B, et_off>::canonical_value(a));
23866: return result;
23866: }
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator^(const number<B, et_off>& a, const number<B, et_off>& b)
23866: {
23866: number<B, et_off> result;
23866: using default_ops::eval_bitwise_xor;
23866: eval_bitwise_xor(result.backend(), a.backend(), b.backend());
23866: return result;
23866: }
23866: template <class B, class V>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
23866: operator^(const number<B, et_off>& a, const V& b)
23866: {
23866: number<B, et_off> result;
23866: using default_ops::eval_bitwise_xor;
23866: eval_bitwise_xor(result.backend(), a.backend(), number<B, et_off>::canonical_value(b));
23866: return result;
23866: }
23866: template <class V, class B>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
23866: operator^(const V& a, const number<B, et_off>& b)
23866: {
23866: number<B, et_off> result;
23866: using default_ops::eval_bitwise_xor;
23866: eval_bitwise_xor(result.backend(), b.backend(), number<B, et_off>::canonical_value(a));
23866: return result;
23866: }
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator&(const number<B, et_off>& a, const number<B, et_off>& b)
23866: {
23866: number<B, et_off> result;
23866: using default_ops::eval_bitwise_and;
23866: eval_bitwise_and(result.backend(), a.backend(), b.backend());
23866: return result;
23866: }
23866: template <class B, class V>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
23866: operator&(const number<B, et_off>& a, const V& b)
23866: {
23866: number<B, et_off> result;
23866: using default_ops::eval_bitwise_and;
23866: eval_bitwise_and(result.backend(), a.backend(), number<B, et_off>::canonical_value(b));
23866: return result;
23866: }
23866: template <class V, class B>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
23866: operator&(const V& a, const number<B, et_off>& b)
23866: {
23866: number<B, et_off> result;
23866: using default_ops::eval_bitwise_and;
23866: eval_bitwise_and(result.backend(), b.backend(), number<B, et_off>::canonical_value(a));
23866: return result;
23866: }
23866:
23866:
23866:
23866: template <class B, class I>
23866: inline constexpr typename enable_if_c<is_integral<I>::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
23866: operator<<(const number<B, et_off>& a, const I& b)
23866: {
23866: number<B, et_off> result(a);
23866: using default_ops::eval_left_shift;
23866: detail::check_shift_range(b, mpl::bool_<(sizeof(I) > sizeof(std::size_t))>(), mpl::bool_<is_signed<I>::value>());
23866: eval_left_shift(result.backend(), b);
23866: return result;
23866: }
23866: template <class B, class I>
23866: inline constexpr typename enable_if_c<is_integral<I>::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
23866: operator>>(const number<B, et_off>& a, const I& b)
23866: {
23866: number<B, et_off> result(a);
23866: using default_ops::eval_right_shift;
23866: detail::check_shift_range(b, mpl::bool_<(sizeof(I) > sizeof(std::size_t))>(), mpl::bool_<is_signed<I>::value>());
23866: eval_right_shift(result.backend(), b);
23866: return result;
23866: }
23866: # 322 "/usr/include/boost/multiprecision/detail/no_et_ops.hpp" 3 4
23866: template <class B>
23866: inline constexpr number<B, et_off> operator-(number<B, et_off>&& v)
23866: {
23866: static_assert(is_signed_number<B>::value, "Negating an unsigned type results in ill-defined behavior.");
23866: v.backend().negate();
23866: return static_cast<number<B, et_off>&&>(v);
23866: }
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator~(number<B, et_off>&& v)
23866: {
23866: eval_complement(v.backend(), v.backend());
23866: return static_cast<number<B, et_off>&&>(v);
23866: }
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr number<B, et_off> operator+(number<B, et_off>&& a, const number<B, et_off>& b)
23866: {
23866: using default_ops::eval_add;
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
23866: eval_add(a.backend(), b.backend());
23866: return static_cast<number<B, et_off>&&>(a);
23866: }
23866: template <class B>
23866: inline constexpr number<B, et_off> operator+(const number<B, et_off>& a, number<B, et_off>&& b)
23866: {
23866: using default_ops::eval_add;
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
23866: eval_add(b.backend(), a.backend());
23866: return static_cast<number<B, et_off>&&>(b);
23866: }
23866: template <class B>
23866: inline constexpr number<B, et_off> operator+(number<B, et_off>&& a, number<B, et_off>&& b)
23866: {
23866: using default_ops::eval_add;
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
23866: eval_add(a.backend(), b.backend());
23866: return static_cast<number<B, et_off>&&>(a);
23866: }
23866: template <class B, class V>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
23866: operator+(number<B, et_off>&& a, const V& b)
23866: {
23866: using default_ops::eval_add;
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
23866: eval_add(a.backend(), number<B, et_off>::canonical_value(b));
23866: return static_cast<number<B, et_off>&&>(a);
23866: }
23866: template <class V, class B>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
23866: operator+(const V& a, number<B, et_off>&& b)
23866: {
23866: using default_ops::eval_add;
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
23866: eval_add(b.backend(), number<B, et_off>::canonical_value(a));
23866: return static_cast<number<B, et_off>&&>(b);
23866: }
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr number<B, et_off> operator-(number<B, et_off>&& a, const number<B, et_off>& b)
23866: {
23866: using default_ops::eval_subtract;
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
23866: eval_subtract(a.backend(), b.backend());
23866: return static_cast<number<B, et_off>&&>(a);
23866: }
23866: template <class B>
23866: inline constexpr typename enable_if<is_signed_number<B>, number<B, et_off> >::type operator-(const number<B, et_off>& a, number<B, et_off>&& b)
23866: {
23866: using default_ops::eval_subtract;
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
23866: eval_subtract(b.backend(), a.backend());
23866: b.backend().negate();
23866: return static_cast<number<B, et_off>&&>(b);
23866: }
23866: template <class B>
23866: inline constexpr number<B, et_off> operator-(number<B, et_off>&& a, number<B, et_off>&& b)
23866: {
23866: using default_ops::eval_subtract;
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
23866: eval_subtract(a.backend(), b.backend());
23866: return static_cast<number<B, et_off>&&>(a);
23866: }
23866: template <class B, class V>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
23866: operator-(number<B, et_off>&& a, const V& b)
23866: {
23866: using default_ops::eval_subtract;
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
23866: eval_subtract(a.backend(), number<B, et_off>::canonical_value(b));
23866: return static_cast<number<B, et_off>&&>(a);
23866: }
23866: template <class V, class B>
23866: inline constexpr typename enable_if_c<(is_compatible_arithmetic_type<V, number<B, et_off> >::value && is_signed_number<B>::value), number<B, et_off> >::type
23866: operator-(const V& a, number<B, et_off>&& b)
23866: {
23866: using default_ops::eval_subtract;
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
23866: eval_subtract(b.backend(), number<B, et_off>::canonical_value(a));
23866: b.backend().negate();
23866: return static_cast<number<B, et_off>&&>(b);
23866: }
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr number<B, et_off> operator*(number<B, et_off>&& a, const number<B, et_off>& b)
23866: {
23866: using default_ops::eval_multiply;
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
23866: eval_multiply(a.backend(), b.backend());
23866: return static_cast<number<B, et_off>&&>(a);
23866: }
23866: template <class B>
23866: inline constexpr number<B, et_off> operator*(const number<B, et_off>& a, number<B, et_off>&& b)
23866: {
23866: using default_ops::eval_multiply;
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
23866: eval_multiply(b.backend(), a.backend());
23866: return static_cast<number<B, et_off>&&>(b);
23866: }
23866: template <class B>
23866: inline constexpr number<B, et_off> operator*(number<B, et_off>&& a, number<B, et_off>&& b)
23866: {
23866: using default_ops::eval_multiply;
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
23866: eval_multiply(a.backend(), b.backend());
23866: return static_cast<number<B, et_off>&&>(a);
23866: }
23866: template <class B, class V>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
23866: operator*(number<B, et_off>&& a, const V& b)
23866: {
23866: using default_ops::eval_multiply;
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
23866: eval_multiply(a.backend(), number<B, et_off>::canonical_value(b));
23866: return static_cast<number<B, et_off>&&>(a);
23866: }
23866: template <class V, class B>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
23866: operator*(const V& a, number<B, et_off>&& b)
23866: {
23866: using default_ops::eval_multiply;
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
23866: eval_multiply(b.backend(), number<B, et_off>::canonical_value(a));
23866: return static_cast<number<B, et_off>&&>(b);
23866: }
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr number<B, et_off> operator/(number<B, et_off>&& a, const number<B, et_off>& b)
23866: {
23866: using default_ops::eval_divide;
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
23866: eval_divide(a.backend(), b.backend());
23866: return static_cast<number<B, et_off>&&>(a);
23866: }
23866: template <class B, class V>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_off> >, number<B, et_off> >::type
23866: operator/(number<B, et_off>&& a, const V& b)
23866: {
23866: using default_ops::eval_divide;
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
23866: eval_divide(a.backend(), number<B, et_off>::canonical_value(b));
23866: return static_cast<number<B, et_off>&&>(a);
23866: }
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator%(number<B, et_off>&& a, const number<B, et_off>& b)
23866: {
23866: using default_ops::eval_modulus;
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
23866: eval_modulus(a.backend(), b.backend());
23866: return static_cast<number<B, et_off>&&>(a);
23866: }
23866: template <class B, class V>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
23866: operator%(number<B, et_off>&& a, const V& b)
23866: {
23866: using default_ops::eval_modulus;
23866: detail::scoped_default_precision<multiprecision::number<B, et_off> > precision_guard(a, b);
23866: eval_modulus(a.backend(), number<B, et_off>::canonical_value(b));
23866: return static_cast<number<B, et_off>&&>(a);
23866: }
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator|(number<B, et_off>&& a, const number<B, et_off>& b)
23866: {
23866: using default_ops::eval_bitwise_or;
23866: eval_bitwise_or(a.backend(), b.backend());
23866: return static_cast<number<B, et_off>&&>(a);
23866: }
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator|(const number<B, et_off>& a, number<B, et_off>&& b)
23866: {
23866: using default_ops::eval_bitwise_or;
23866: eval_bitwise_or(b.backend(), a.backend());
23866: return static_cast<number<B, et_off>&&>(b);
23866: }
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator|(number<B, et_off>&& a, number<B, et_off>&& b)
23866: {
23866: using default_ops::eval_bitwise_or;
23866: eval_bitwise_or(a.backend(), b.backend());
23866: return static_cast<number<B, et_off>&&>(a);
23866: }
23866: template <class B, class V>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
23866: operator|(number<B, et_off>&& a, const V& b)
23866: {
23866: using default_ops::eval_bitwise_or;
23866: eval_bitwise_or(a.backend(), number<B, et_off>::canonical_value(b));
23866: return static_cast<number<B, et_off>&&>(a);
23866: }
23866: template <class V, class B>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
23866: operator|(const V& a, number<B, et_off>&& b)
23866: {
23866: using default_ops::eval_bitwise_or;
23866: eval_bitwise_or(b.backend(), number<B, et_off>::canonical_value(a));
23866: return static_cast<number<B, et_off>&&>(b);
23866: }
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator^(number<B, et_off>&& a, const number<B, et_off>& b)
23866: {
23866: using default_ops::eval_bitwise_xor;
23866: eval_bitwise_xor(a.backend(), b.backend());
23866: return static_cast<number<B, et_off>&&>(a);
23866: }
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator^(const number<B, et_off>& a, number<B, et_off>&& b)
23866: {
23866: using default_ops::eval_bitwise_xor;
23866: eval_bitwise_xor(b.backend(), a.backend());
23866: return static_cast<number<B, et_off>&&>(b);
23866: }
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator^(number<B, et_off>&& a, number<B, et_off>&& b)
23866: {
23866: using default_ops::eval_bitwise_xor;
23866: eval_bitwise_xor(a.backend(), b.backend());
23866: return static_cast<number<B, et_off>&&>(a);
23866: }
23866: template <class B, class V>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
23866: operator^(number<B, et_off>&& a, const V& b)
23866: {
23866: using default_ops::eval_bitwise_xor;
23866: eval_bitwise_xor(a.backend(), number<B, et_off>::canonical_value(b));
23866: return static_cast<number<B, et_off>&&>(a);
23866: }
23866: template <class V, class B>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
23866: operator^(const V& a, number<B, et_off>&& b)
23866: {
23866: using default_ops::eval_bitwise_xor;
23866: eval_bitwise_xor(b.backend(), number<B, et_off>::canonical_value(a));
23866: return static_cast<number<B, et_off>&&>(b);
23866: }
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator&(number<B, et_off>&& a, const number<B, et_off>& b)
23866: {
23866: using default_ops::eval_bitwise_and;
23866: eval_bitwise_and(a.backend(), b.backend());
23866: return static_cast<number<B, et_off>&&>(a);
23866: }
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator&(const number<B, et_off>& a, number<B, et_off>&& b)
23866: {
23866: using default_ops::eval_bitwise_and;
23866: eval_bitwise_and(b.backend(), a.backend());
23866: return static_cast<number<B, et_off>&&>(b);
23866: }
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer, number<B, et_off> >::type operator&(number<B, et_off>&& a, number<B, et_off>&& b)
23866: {
23866: using default_ops::eval_bitwise_and;
23866: eval_bitwise_and(a.backend(), b.backend());
23866: return static_cast<number<B, et_off>&&>(a);
23866: }
23866: template <class B, class V>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
23866: operator&(number<B, et_off>&& a, const V& b)
23866: {
23866: using default_ops::eval_bitwise_and;
23866: eval_bitwise_and(a.backend(), number<B, et_off>::canonical_value(b));
23866: return static_cast<number<B, et_off>&&>(a);
23866: }
23866: template <class V, class B>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_off> >::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
23866: operator&(const V& a, number<B, et_off>&& b)
23866: {
23866: using default_ops::eval_bitwise_and;
23866: eval_bitwise_and(b.backend(), number<B, et_off>::canonical_value(a));
23866: return static_cast<number<B, et_off>&&>(b);
23866: }
23866:
23866:
23866:
23866: template <class B, class I>
23866: inline constexpr typename enable_if_c<is_integral<I>::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
23866: operator<<(number<B, et_off>&& a, const I& b)
23866: {
23866: using default_ops::eval_left_shift;
23866: eval_left_shift(a.backend(), b);
23866: return static_cast<number<B, et_off>&&>(a);
23866: }
23866: template <class B, class I>
23866: inline constexpr typename enable_if_c<is_integral<I>::value && (number_category<B>::value == number_kind_integer), number<B, et_off> >::type
23866: operator>>(number<B, et_off>&& a, const I& b)
23866: {
23866: using default_ops::eval_right_shift;
23866: eval_right_shift(a.backend(), b);
23866: return static_cast<number<B, et_off>&&>(a);
23866: }
23866:
23866:
23866:
23866: }
23866: }
23866: # 3700 "/usr/include/boost/multiprecision/detail/default_ops.hpp" 2 3 4
23866: # 1 "/usr/include/boost/multiprecision/detail/et_ops.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MP_ET_OPS_HPP
23866:
23866: namespace boost { namespace multiprecision {
23866: # 23 "/usr/include/boost/multiprecision/detail/et_ops.hpp" 3 4
23866: template <class B, expression_template_option ExpressionTemplates>
23866: inline constexpr const number<B, ExpressionTemplates> operator+(const number<B, ExpressionTemplates>& v) { return v; }
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr const detail::expression<tag, Arg1, Arg2, Arg3, Arg4> operator+(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& v) { return v; }
23866: template <class B>
23866: inline constexpr detail::expression<detail::negate, number<B, et_on> > operator-(const number<B, et_on>& v)
23866: {
23866: static_assert(is_signed_number<B>::value, "Negating an unsigned type results in ill-defined behavior.");
23866: return detail::expression<detail::negate, number<B, et_on> >(v);
23866: }
23866:
23866: template <class B>
23866: inline constexpr number<B, et_on> operator-(number<B, et_on>&& v)
23866: {
23866: static_assert(is_signed_number<B>::value, "Negating an unsigned type results in ill-defined behavior.");
23866: return detail::expression<detail::negate, number<B, et_on> >(v);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr detail::expression<detail::negate, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > operator-(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& v)
23866: {
23866: static_assert((is_signed_number<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value), "Negating an unsigned type results in ill-defined behavior.");
23866: return detail::expression<detail::negate, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(v);
23866: }
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: detail::expression<detail::complement_immediates, number<B, et_on> > >::type
23866: operator~(const number<B, et_on>& v) { return detail::expression<detail::complement_immediates, number<B, et_on> >(v); }
23866:
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: number<B, et_on> >::type
23866: operator~(number<B, et_on>&& v) { return detail::expression<detail::complement_immediates, number<B, et_on> >(v); }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename enable_if_c<number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer,
23866: detail::expression<detail::bitwise_complement, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > >::type
23866: operator~(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& v) { return detail::expression<detail::bitwise_complement, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(v); }
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr detail::expression<detail::add_immediates, number<B, et_on>, number<B, et_on> >
23866: operator+(const number<B, et_on>& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::add_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class B>
23866: inline constexpr number<B, et_on>
23866: operator+(number<B, et_on>&& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::add_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866: template <class B>
23866: inline constexpr number<B, et_on>
23866: operator+(const number<B, et_on>& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::add_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866: template <class B>
23866: inline constexpr number<B, et_on>
23866: operator+(number<B, et_on>&& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::add_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class B, class V>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, detail::expression<detail::add_immediates, number<B, et_on>, V> >::type
23866: operator+(const number<B, et_on>& a, const V& b)
23866: {
23866: return detail::expression<detail::add_immediates, number<B, et_on>, V>(a, b);
23866: }
23866:
23866: template <class B, class V>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, number<B, et_on> >::type
23866: operator+(number<B, et_on>&& a, const V& b)
23866: {
23866: return detail::expression<detail::add_immediates, number<B, et_on>, V>(a, b);
23866: }
23866:
23866: template <class V, class B>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, detail::expression<detail::add_immediates, V, number<B, et_on> > >::type
23866: operator+(const V& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::add_immediates, V, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class V, class B>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, number<B, et_on> >::type
23866: operator+(const V& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::add_immediates, V, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class B, expression_template_option ET, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr detail::expression<detail::plus, number<B, ET>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >
23866: operator+(const number<B, ET>& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::plus, number<B, ET>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
23866: }
23866:
23866: template <class B, expression_template_option ET, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename detail::expression<detail::plus, number<B, ET>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >::result_type
23866: operator+(number<B, ET>&& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::plus, number<B, ET>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class B, expression_template_option ET>
23866: inline constexpr detail::expression<detail::plus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, ET> >
23866: operator+(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const number<B, ET>& b)
23866: {
23866: return detail::expression<detail::plus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, ET> >(a, b);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class B, expression_template_option ET>
23866: inline constexpr typename detail::expression<detail::plus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, ET> >::result_type
23866: operator+(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, number<B, ET>&& b)
23866: {
23866: return detail::expression<detail::plus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, ET> >(a, b);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class tag2, class Arg1b, class Arg2b, class Arg3b, class Arg4b>
23866: inline constexpr detail::expression<detail::plus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b> >
23866: operator+(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b>& b)
23866: {
23866: return detail::expression<detail::plus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b> >(a, b);
23866: }
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class V>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>, detail::expression<detail::plus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V> >::type
23866: operator+(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const V& b)
23866: {
23866: return detail::expression<detail::plus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V>(a, b);
23866: }
23866: template <class V, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>, detail::expression<detail::plus, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > >::type
23866: operator+(const V& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::plus, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
23866: }
23866:
23866:
23866:
23866: template <class V, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::result_type>,
23866: detail::expression<detail::multiply_add, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, V> >::type
23866: operator+(const V& a, const detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::multiply_add, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, V>(b.left(), b.right(), a);
23866: }
23866: template <class Arg1, class Arg2, class Arg3, class Arg4, class V>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::result_type>,
23866: detail::expression<detail::multiply_add, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, V> >::type
23866: operator+(const detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>& a, const V& b)
23866: {
23866: return detail::expression<detail::multiply_add, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, V>(a.left(), a.right(), b);
23866: }
23866: template <class B, expression_template_option ET, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr detail::expression<detail::multiply_add, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, number<B, ET> >
23866: operator+(const number<B, ET>& a, const detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::multiply_add, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, number<B, ET> >(b.left(), b.right(), a);
23866: }
23866:
23866: template <class B, expression_template_option ET, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename detail::expression<detail::multiply_add, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, number<B, ET> >::result_type
23866: operator+(number<B, ET>&& a, const detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::multiply_add, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, number<B, ET> >(b.left(), b.right(), a);
23866: }
23866:
23866: template <class Arg1, class Arg2, class Arg3, class Arg4, class B, expression_template_option ET>
23866: inline constexpr detail::expression<detail::multiply_add, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, number<B, ET> >
23866: operator+(const detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>& a, const number<B, ET>& b)
23866: {
23866: return detail::expression<detail::multiply_add, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, number<B, ET> >(a.left(), a.right(), b);
23866: }
23866:
23866: template <class Arg1, class Arg2, class Arg3, class Arg4, class B, expression_template_option ET>
23866: inline constexpr typename detail::expression<detail::multiply_add, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, number<B, ET> >::result_type
23866: operator+(const detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>& a, number<B, ET>&& b)
23866: {
23866: return detail::expression<detail::multiply_add, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, number<B, ET> >(a.left(), a.right(), b);
23866: }
23866:
23866:
23866:
23866:
23866: template <class V, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::result_type>,
23866: detail::expression<detail::negate, detail::expression<detail::multiply_subtract, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, V> > >::type
23866: operator-(const V& a, const detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::multiply_subtract, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, V> >(detail::expression<detail::multiply_subtract, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, V>(b.left(), b.right(), a));
23866: }
23866: template <class Arg1, class Arg2, class Arg3, class Arg4, class V>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::result_type>,
23866: detail::expression<detail::multiply_subtract, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, V> >::type
23866: operator-(const detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>& a, const V& b)
23866: {
23866: return detail::expression<detail::multiply_subtract, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, V>(a.left(), a.right(), b);
23866: }
23866: template <class B, expression_template_option ET, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr detail::expression<detail::negate, detail::expression<detail::multiply_subtract, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, number<B, ET> > >
23866: operator-(const number<B, ET>& a, const detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::multiply_subtract, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, number<B, ET> > >(detail::expression<detail::multiply_subtract, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, number<B, ET> >(b.left(), b.right(), a));
23866: }
23866:
23866: template <class B, expression_template_option ET, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename detail::expression<detail::negate, detail::expression<detail::multiply_subtract, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, number<B, ET> > >::result_type
23866: operator-(number<B, ET>&& a, const detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::multiply_subtract, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, number<B, ET> > >(detail::expression<detail::multiply_subtract, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, number<B, ET> >(b.left(), b.right(), a));
23866: }
23866:
23866: template <class Arg1, class Arg2, class Arg3, class Arg4, class B, expression_template_option ET>
23866: inline constexpr detail::expression<detail::multiply_subtract, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, number<B, ET> >
23866: operator-(const detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>& a, const number<B, ET>& b)
23866: {
23866: return detail::expression<detail::multiply_subtract, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, number<B, ET> >(a.left(), a.right(), b);
23866: }
23866:
23866: template <class Arg1, class Arg2, class Arg3, class Arg4, class B, expression_template_option ET>
23866: inline constexpr typename detail::expression<detail::multiply_subtract, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, number<B, ET> >::result_type
23866: operator-(const detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>& a, number<B, ET>&& b)
23866: {
23866: return detail::expression<detail::multiply_subtract, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::left_type, typename detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>::right_type, number<B, ET> >(a.left(), a.right(), b);
23866: }
23866:
23866:
23866:
23866:
23866: template <class B, expression_template_option ET, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr detail::expression<detail::minus, number<B, ET>, Arg1>
23866: operator+(const number<B, ET>& a, const detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::minus, number<B, ET>, Arg1>(a, b.left_ref());
23866: }
23866:
23866: template <class B, expression_template_option ET, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename detail::expression<detail::minus, number<B, ET>, Arg1>::result_type
23866: operator+(number<B, ET>&& a, const detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::minus, number<B, ET>, Arg1>(a, b.left_ref());
23866: }
23866:
23866: template <class Arg1, class Arg2, class Arg3, class Arg4, class B, expression_template_option ET>
23866: inline constexpr detail::expression<detail::minus, number<B, ET>, Arg1>
23866: operator+(const detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>& a, const number<B, ET>& b)
23866: {
23866: return detail::expression<detail::minus, number<B, ET>, Arg1>(b, a.left_ref());
23866: }
23866:
23866: template <class Arg1, class Arg2, class Arg3, class Arg4, class B, expression_template_option ET>
23866: inline constexpr typename detail::expression<detail::minus, number<B, ET>, Arg1>::result_type
23866: operator+(const detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>& a, number<B, ET>&& b)
23866: {
23866: return detail::expression<detail::minus, number<B, ET>, Arg1>(b, a.left_ref());
23866: }
23866:
23866: template <class B>
23866: inline constexpr detail::expression<detail::subtract_immediates, number<B, et_on>, number<B, et_on> >
23866: operator+(const number<B, et_on>& a, const detail::expression<detail::negate, number<B, et_on> >& b)
23866: {
23866: return detail::expression<detail::subtract_immediates, number<B, et_on>, number<B, et_on> >(a, b.left_ref());
23866: }
23866:
23866: template <class B>
23866: inline constexpr typename detail::expression<detail::subtract_immediates, number<B, et_on>, number<B, et_on> >::result_type
23866: operator+(number<B, et_on>&& a, const detail::expression<detail::negate, number<B, et_on> >& b)
23866: {
23866: return detail::expression<detail::subtract_immediates, number<B, et_on>, number<B, et_on> >(a, b.left_ref());
23866: }
23866:
23866: template <class B>
23866: inline constexpr detail::expression<detail::subtract_immediates, number<B, et_on>, number<B, et_on> >
23866: operator+(const detail::expression<detail::negate, number<B, et_on> >& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::subtract_immediates, number<B, et_on>, number<B, et_on> >(b, a.left_ref());
23866: }
23866:
23866: template <class B>
23866: inline constexpr typename detail::expression<detail::subtract_immediates, number<B, et_on>, number<B, et_on> >::result_type
23866: operator+(const detail::expression<detail::negate, number<B, et_on> >& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::subtract_immediates, number<B, et_on>, number<B, et_on> >(b, a.left_ref());
23866: }
23866:
23866: template <class B, class V>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, detail::expression<detail::subtract_immediates, V, number<B, et_on> > >::type
23866: operator+(const detail::expression<detail::negate, number<B, et_on> >& a, const V& b)
23866: {
23866: return detail::expression<detail::subtract_immediates, V, number<B, et_on> >(b, a.left_ref());
23866: }
23866: template <class B, class B2, expression_template_option ET>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<number<B2, ET>, number<B, et_on> >, detail::expression<detail::subtract_immediates, number<B2, ET>, number<B, et_on> > >::type
23866: operator+(const detail::expression<detail::negate, number<B, et_on> >& a, const number<B2, ET>& b)
23866: {
23866: return detail::expression<detail::subtract_immediates, number<B2, ET>, number<B, et_on> >(b, a.left_ref());
23866: }
23866:
23866: template <class B, class B2, expression_template_option ET>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<number<B2, ET>, number<B, et_on> >, typename detail::expression<detail::subtract_immediates, number<B2, ET>, number<B, et_on> >::result_type>::type
23866: operator+(const detail::expression<detail::negate, number<B, et_on> >& a, number<B2, ET>&& b)
23866: {
23866: return detail::expression<detail::subtract_immediates, number<B2, ET>, number<B, et_on> >(b, a.left_ref());
23866: }
23866:
23866: template <class B2, expression_template_option ET, class B>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<number<B2, ET>, number<B, et_on> >, detail::expression<detail::subtract_immediates, number<B2, ET>, number<B, et_on> > >::type
23866: operator+(const number<B2, ET>& a, const detail::expression<detail::negate, number<B, et_on> >& b)
23866: {
23866: return detail::expression<detail::subtract_immediates, number<B2, ET>, number<B, et_on> >(a, b.left_ref());
23866: }
23866:
23866: template <class B2, expression_template_option ET, class B>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<number<B2, ET>, number<B, et_on> >, typename detail::expression<detail::subtract_immediates, number<B2, ET>, number<B, et_on> >::result_type>::type
23866: operator+(number<B2, ET>&& a, const detail::expression<detail::negate, number<B, et_on> >& b)
23866: {
23866: return detail::expression<detail::subtract_immediates, number<B2, ET>, number<B, et_on> >(a, b.left_ref());
23866: }
23866:
23866: template <class B>
23866: inline constexpr detail::expression<detail::negate, detail::expression<detail::add_immediates, number<B, et_on>, number<B, et_on> > >
23866: operator+(const detail::expression<detail::negate, number<B, et_on> >& a, const detail::expression<detail::negate, number<B, et_on> >& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::add_immediates, number<B, et_on>, number<B, et_on> > >(detail::expression<detail::add_immediates, number<B, et_on>, number<B, et_on> >(a.left_ref(), b.left_ref()));
23866: }
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr detail::expression<detail::subtract_immediates, number<B, et_on>, number<B, et_on> >
23866: operator-(const number<B, et_on>& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::subtract_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class B>
23866: inline constexpr number<B, et_on>
23866: operator-(number<B, et_on>&& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::subtract_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866: template <class B>
23866: inline constexpr number<B, et_on>
23866: operator-(const number<B, et_on>& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::subtract_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866: template <class B>
23866: inline constexpr number<B, et_on>
23866: operator-(number<B, et_on>&& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::subtract_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class B, class V>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, detail::expression<detail::subtract_immediates, number<B, et_on>, V> >::type
23866: operator-(const number<B, et_on>& a, const V& b)
23866: {
23866: return detail::expression<detail::subtract_immediates, number<B, et_on>, V>(a, b);
23866: }
23866:
23866: template <class B, class V>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, number<B, et_on> >::type
23866: operator-(number<B, et_on>&& a, const V& b)
23866: {
23866: return detail::expression<detail::subtract_immediates, number<B, et_on>, V>(a, b);
23866: }
23866:
23866: template <class V, class B>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, detail::expression<detail::subtract_immediates, V, number<B, et_on> > >::type
23866: operator-(const V& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::subtract_immediates, V, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class V, class B>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, number<B, et_on> >::type
23866: operator-(const V& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::subtract_immediates, V, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class B, expression_template_option ET, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr detail::expression<detail::minus, number<B, ET>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >
23866: operator-(const number<B, ET>& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::minus, number<B, ET>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
23866: }
23866:
23866: template <class B, expression_template_option ET, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename detail::expression<detail::minus, number<B, ET>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >::result_type
23866: operator-(number<B, ET>&& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::minus, number<B, ET>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class B, expression_template_option ET>
23866: inline constexpr detail::expression<detail::minus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, ET> >
23866: operator-(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const number<B, ET>& b)
23866: {
23866: return detail::expression<detail::minus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, ET> >(a, b);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class B, expression_template_option ET>
23866: inline constexpr typename detail::expression<detail::minus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, ET> >::result_type
23866: operator-(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, number<B, ET>&& b)
23866: {
23866: return detail::expression<detail::minus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, ET> >(a, b);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class tag2, class Arg1b, class Arg2b, class Arg3b, class Arg4b>
23866: inline constexpr detail::expression<detail::minus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b> >
23866: operator-(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b>& b)
23866: {
23866: return detail::expression<detail::minus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b> >(a, b);
23866: }
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class V>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>, detail::expression<detail::minus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V> >::type
23866: operator-(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const V& b)
23866: {
23866: return detail::expression<detail::minus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V>(a, b);
23866: }
23866: template <class V, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>, detail::expression<detail::minus, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > >::type
23866: operator-(const V& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::minus, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
23866: }
23866:
23866:
23866:
23866: template <class B, expression_template_option ET, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr detail::expression<detail::plus, number<B, ET>, Arg1>
23866: operator-(const number<B, ET>& a, const detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::plus, number<B, ET>, Arg1>(a, b.left_ref());
23866: }
23866:
23866: template <class B, expression_template_option ET, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename detail::expression<detail::plus, number<B, ET>, Arg1>::result_type
23866: operator-(number<B, ET>&& a, const detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::plus, number<B, ET>, Arg1>(a, b.left_ref());
23866: }
23866:
23866: template <class Arg1, class Arg2, class Arg3, class Arg4, class B, expression_template_option ET>
23866: inline constexpr detail::expression<detail::negate, detail::expression<detail::plus, number<B, ET>, Arg1> >
23866: operator-(const detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>& a, const number<B, ET>& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::plus, number<B, ET>, Arg1> >(
23866: detail::expression<detail::plus, number<B, ET>, Arg1>(b, a.left_ref()));
23866: }
23866:
23866: template <class Arg1, class Arg2, class Arg3, class Arg4, class B, expression_template_option ET>
23866: inline constexpr typename detail::expression<detail::negate, detail::expression<detail::plus, number<B, ET>, Arg1> >::result_type
23866: operator-(const detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>& a, number<B, ET>&& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::plus, number<B, ET>, Arg1> >(
23866: detail::expression<detail::plus, number<B, ET>, Arg1>(b, a.left_ref()));
23866: }
23866:
23866: template <class B>
23866: inline constexpr detail::expression<detail::add_immediates, number<B, et_on>, number<B, et_on> >
23866: operator-(const number<B, et_on>& a, const detail::expression<detail::negate, number<B, et_on> >& b)
23866: {
23866: return detail::expression<detail::add_immediates, number<B, et_on>, number<B, et_on> >(a, b.left_ref());
23866: }
23866:
23866: template <class B>
23866: inline constexpr typename detail::expression<detail::add_immediates, number<B, et_on>, number<B, et_on> >::result_type
23866: operator-(number<B, et_on>&& a, const detail::expression<detail::negate, number<B, et_on> >& b)
23866: {
23866: return detail::expression<detail::add_immediates, number<B, et_on>, number<B, et_on> >(a, b.left_ref());
23866: }
23866:
23866: template <class B>
23866: inline constexpr detail::expression<detail::negate, detail::expression<detail::add_immediates, number<B, et_on>, number<B, et_on> > >
23866: operator-(const detail::expression<detail::negate, number<B, et_on> >& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::add_immediates, number<B, et_on>, number<B, et_on> > >(
23866: detail::expression<detail::add_immediates, number<B, et_on>, number<B, et_on> >(b, a.left_ref()));
23866: }
23866:
23866: template <class B>
23866: inline constexpr typename detail::expression<detail::negate, detail::expression<detail::add_immediates, number<B, et_on>, number<B, et_on> > >::result_type
23866: operator-(const detail::expression<detail::negate, number<B, et_on> >& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::add_immediates, number<B, et_on>, number<B, et_on> > >(
23866: detail::expression<detail::add_immediates, number<B, et_on>, number<B, et_on> >(b, a.left_ref()));
23866: }
23866:
23866: template <class B, class V>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, detail::expression<detail::negate, detail::expression<detail::add_immediates, number<B, et_on>, V> > >::type
23866: operator-(const detail::expression<detail::negate, number<B, et_on> >& a, const V& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::add_immediates, number<B, et_on>, V> >(detail::expression<detail::add_immediates, number<B, et_on>, V>(a.left_ref(), b));
23866: }
23866: template <class B, class B2, expression_template_option ET>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<number<B2, ET>, number<B, et_on> >, detail::expression<detail::negate, detail::expression<detail::add_immediates, number<B, et_on>, number<B2, ET> > > >::type
23866: operator-(const detail::expression<detail::negate, number<B, et_on> >& a, const number<B2, ET>& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::add_immediates, number<B, et_on>, number<B2, ET> > >(detail::expression<detail::add_immediates, number<B, et_on>, number<B2, ET> >(a.left_ref(), b));
23866: }
23866:
23866: template <class B, class B2, expression_template_option ET>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<number<B2, ET>, number<B, et_on> >, typename detail::expression<detail::negate, detail::expression<detail::add_immediates, number<B, et_on>, number<B2, ET> > >::result_type>::type
23866: operator-(const detail::expression<detail::negate, number<B, et_on> >& a, number<B2, ET>&& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::add_immediates, number<B, et_on>, number<B2, ET> > >(detail::expression<detail::add_immediates, number<B, et_on>, number<B2, ET> >(a.left_ref(), b));
23866: }
23866:
23866: template <class V, class B>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, detail::expression<detail::add_immediates, V, number<B, et_on> > >::type
23866: operator-(const V& a, const detail::expression<detail::negate, number<B, et_on> >& b)
23866: {
23866: return detail::expression<detail::add_immediates, V, number<B, et_on> >(a, b.left_ref());
23866: }
23866: template <class B2, expression_template_option ET, class B>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<number<B2, ET>, number<B, et_on> >, detail::expression<detail::add_immediates, number<B2, ET>, number<B, et_on> > >::type
23866: operator-(const number<B2, ET>& a, const detail::expression<detail::negate, number<B, et_on> >& b)
23866: {
23866: return detail::expression<detail::add_immediates, number<B2, ET>, number<B, et_on> >(a, b.left_ref());
23866: }
23866:
23866: template <class B2, expression_template_option ET, class B>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<number<B2, ET>, number<B, et_on> >, typename detail::expression<detail::add_immediates, number<B2, ET>, number<B, et_on> >::result_type>::type
23866: operator-(number<B2, ET>&& a, const detail::expression<detail::negate, number<B, et_on> >& b)
23866: {
23866: return detail::expression<detail::add_immediates, number<B2, ET>, number<B, et_on> >(a, b.left_ref());
23866: }
23866:
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr detail::expression<detail::multiply_immediates, number<B, et_on>, number<B, et_on> >
23866: operator*(const number<B, et_on>& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::multiply_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class B>
23866: inline constexpr number<B, et_on>
23866: operator*(number<B, et_on>&& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::multiply_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866: template <class B>
23866: inline constexpr number<B, et_on>
23866: operator*(const number<B, et_on>& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::multiply_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866: template <class B>
23866: inline constexpr number<B, et_on>
23866: operator*(number<B, et_on>&& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::multiply_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class B, class V>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, detail::expression<detail::multiply_immediates, number<B, et_on>, V> >::type
23866: operator*(const number<B, et_on>& a, const V& b)
23866: {
23866: return detail::expression<detail::multiply_immediates, number<B, et_on>, V>(a, b);
23866: }
23866:
23866: template <class B, class V>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, number<B, et_on> >::type
23866: operator*(number<B, et_on>&& a, const V& b)
23866: {
23866: return detail::expression<detail::multiply_immediates, number<B, et_on>, V>(a, b);
23866: }
23866:
23866: template <class V, class B>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, detail::expression<detail::multiply_immediates, V, number<B, et_on> > >::type
23866: operator*(const V& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::multiply_immediates, V, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class V, class B>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, number<B, et_on> >::type
23866: operator*(const V& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::multiply_immediates, V, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class B, expression_template_option ET, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr detail::expression<detail::multiplies, number<B, ET>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >
23866: operator*(const number<B, ET>& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::multiplies, number<B, ET>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
23866: }
23866:
23866: template <class B, expression_template_option ET, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename detail::expression<detail::multiplies, number<B, ET>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >::result_type
23866: operator*(number<B, ET>&& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::multiplies, number<B, ET>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class B, expression_template_option ET>
23866: inline constexpr detail::expression<detail::multiplies, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, ET> >
23866: operator*(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const number<B, ET>& b)
23866: {
23866: return detail::expression<detail::multiplies, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, ET> >(a, b);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class B, expression_template_option ET>
23866: inline constexpr typename detail::expression<detail::multiplies, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, ET> >::result_type
23866: operator*(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, number<B, ET>&& b)
23866: {
23866: return detail::expression<detail::multiplies, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, ET> >(a, b);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class tag2, class Arg1b, class Arg2b, class Arg3b, class Arg4b>
23866: inline constexpr detail::expression<detail::multiplies, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b> >
23866: operator*(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b>& b)
23866: {
23866: return detail::expression<detail::multiplies, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b> >(a, b);
23866: }
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class V>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>, detail::expression<detail::multiplies, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V> >::type
23866: operator*(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const V& b)
23866: {
23866: return detail::expression<detail::multiplies, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V>(a, b);
23866: }
23866: template <class V, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>, detail::expression<detail::multiplies, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > >::type
23866: operator*(const V& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::multiplies, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
23866: }
23866:
23866:
23866:
23866: template <class B, expression_template_option ET, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr detail::expression<detail::negate, detail::expression<detail::multiplies, number<B, ET>, Arg1> >
23866: operator*(const number<B, ET>& a, const detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::multiplies, number<B, ET>, Arg1> >(
23866: detail::expression<detail::multiplies, number<B, ET>, Arg1>(a, b.left_ref()));
23866: }
23866:
23866: template <class B, expression_template_option ET, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename detail::expression<detail::negate, detail::expression<detail::multiplies, number<B, ET>, Arg1> >::result_type
23866: operator*(number<B, ET>&& a, const detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::multiplies, number<B, ET>, Arg1> >(
23866: detail::expression<detail::multiplies, number<B, ET>, Arg1>(a, b.left_ref()));
23866: }
23866:
23866: template <class Arg1, class Arg2, class Arg3, class Arg4, class B, expression_template_option ET>
23866: inline constexpr detail::expression<detail::negate, detail::expression<detail::multiplies, number<B, ET>, Arg1> >
23866: operator*(const detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>& a, const number<B, ET>& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::multiplies, number<B, ET>, Arg1> >(
23866: detail::expression<detail::multiplies, number<B, ET>, Arg1>(b, a.left_ref()));
23866: }
23866:
23866: template <class Arg1, class Arg2, class Arg3, class Arg4, class B, expression_template_option ET>
23866: inline constexpr typename detail::expression<detail::negate, detail::expression<detail::multiplies, number<B, ET>, Arg1> >::result_type
23866: operator*(const detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>& a, number<B, ET>&& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::multiplies, number<B, ET>, Arg1> >(
23866: detail::expression<detail::multiplies, number<B, ET>, Arg1>(b, a.left_ref()));
23866: }
23866:
23866: template <class B>
23866: inline constexpr detail::expression<detail::negate, detail::expression<detail::multiply_immediates, number<B, et_on>, number<B, et_on> > >
23866: operator*(const number<B, et_on>& a, const detail::expression<detail::negate, number<B, et_on> >& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::multiply_immediates, number<B, et_on>, number<B, et_on> > >(
23866: detail::expression<detail::multiply_immediates, number<B, et_on>, number<B, et_on> >(a, b.left_ref()));
23866: }
23866:
23866: template <class B>
23866: inline constexpr typename detail::expression<detail::negate, detail::expression<detail::multiply_immediates, number<B, et_on>, number<B, et_on> > >::result_type
23866: operator*(number<B, et_on>&& a, const detail::expression<detail::negate, number<B, et_on> >& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::multiply_immediates, number<B, et_on>, number<B, et_on> > >(
23866: detail::expression<detail::multiply_immediates, number<B, et_on>, number<B, et_on> >(a, b.left_ref()));
23866: }
23866:
23866: template <class B>
23866: inline constexpr detail::expression<detail::negate, detail::expression<detail::multiply_immediates, number<B, et_on>, number<B, et_on> > >
23866: operator*(const detail::expression<detail::negate, number<B, et_on> >& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::multiply_immediates, number<B, et_on>, number<B, et_on> > >(
23866: detail::expression<detail::multiply_immediates, number<B, et_on>, number<B, et_on> >(b, a.left_ref()));
23866: }
23866:
23866: template <class B>
23866: inline constexpr typename detail::expression<detail::negate, detail::expression<detail::multiply_immediates, number<B, et_on>, number<B, et_on> > >::result_type
23866: operator*(const detail::expression<detail::negate, number<B, et_on> >& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::multiply_immediates, number<B, et_on>, number<B, et_on> > >(
23866: detail::expression<detail::multiply_immediates, number<B, et_on>, number<B, et_on> >(b, a.left_ref()));
23866: }
23866:
23866: template <class B, class V>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, detail::expression<detail::negate, detail::expression<detail::multiply_immediates, number<B, et_on>, V> > >::type
23866: operator*(const detail::expression<detail::negate, number<B, et_on> >& a, const V& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::multiply_immediates, number<B, et_on>, V> >(
23866: detail::expression<detail::multiply_immediates, number<B, et_on>, V>(a.left_ref(), b));
23866: }
23866: template <class B, class B2, expression_template_option ET>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<number<B2, ET>, number<B, et_on> >, detail::expression<detail::negate, detail::expression<detail::multiply_immediates, number<B, et_on>, number<B2, ET> > > >::type
23866: operator*(const detail::expression<detail::negate, number<B, et_on> >& a, const number<B2, ET>& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::multiply_immediates, number<B, et_on>, number<B2, ET> > >(
23866: detail::expression<detail::multiply_immediates, number<B, et_on>, number<B2, ET> >(a.left_ref(), b));
23866: }
23866:
23866: template <class B, class B2, expression_template_option ET>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<number<B2, ET>, number<B, et_on> >, typename detail::expression<detail::negate, detail::expression<detail::multiply_immediates, number<B, et_on>, number<B2, ET> > >::result_type >::type
23866: operator*(const detail::expression<detail::negate, number<B, et_on> >& a, number<B2, ET>&& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::multiply_immediates, number<B, et_on>, number<B2, ET> > >(
23866: detail::expression<detail::multiply_immediates, number<B, et_on>, number<B2, ET> >(a.left_ref(), b));
23866: }
23866:
23866: template <class V, class B>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, detail::expression<detail::negate, detail::expression<detail::multiply_immediates, number<B, et_on>, V> > >::type
23866: operator*(const V& a, const detail::expression<detail::negate, number<B, et_on> >& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::multiply_immediates, number<B, et_on>, V> >(
23866: detail::expression<detail::multiply_immediates, number<B, et_on>, V>(b.left_ref(), a));
23866: }
23866: template <class B2, expression_template_option ET, class B>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<number<B2, ET>, number<B, et_on> >, detail::expression<detail::negate, detail::expression<detail::multiply_immediates, number<B, et_on>, number<B2, ET> > > >::type
23866: operator*(const number<B2, ET>& a, const detail::expression<detail::negate, number<B, et_on> >& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::multiply_immediates, number<B, et_on>, number<B2, ET> > >(
23866: detail::expression<detail::multiply_immediates, number<B, et_on>, number<B2, ET> >(b.left_ref(), a));
23866: }
23866:
23866: template <class B2, expression_template_option ET, class B>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<number<B2, ET>, number<B, et_on> >, typename detail::expression<detail::negate, detail::expression<detail::multiply_immediates, number<B, et_on>, number<B2, ET> > >::result_type>::type
23866: operator*(number<B2, ET>&& a, const detail::expression<detail::negate, number<B, et_on> >& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::multiply_immediates, number<B, et_on>, number<B2, ET> > >(
23866: detail::expression<detail::multiply_immediates, number<B, et_on>, number<B2, ET> >(b.left_ref(), a));
23866: }
23866:
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr detail::expression<detail::divide_immediates, number<B, et_on>, number<B, et_on> >
23866: operator/(const number<B, et_on>& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::divide_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class B>
23866: inline constexpr number<B, et_on>
23866: operator/(number<B, et_on>&& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::divide_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866: template <class B>
23866: inline constexpr number<B, et_on>
23866: operator/(const number<B, et_on>& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::divide_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866: template <class B>
23866: inline constexpr number<B, et_on>
23866: operator/(number<B, et_on>&& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::divide_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class B, class V>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, detail::expression<detail::divide_immediates, number<B, et_on>, V> >::type
23866: operator/(const number<B, et_on>& a, const V& b)
23866: {
23866: return detail::expression<detail::divide_immediates, number<B, et_on>, V>(a, b);
23866: }
23866:
23866: template <class B, class V>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, number<B, et_on> >::type
23866: operator/(number<B, et_on>&& a, const V& b)
23866: {
23866: return detail::expression<detail::divide_immediates, number<B, et_on>, V>(a, b);
23866: }
23866:
23866: template <class V, class B>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, detail::expression<detail::divide_immediates, V, number<B, et_on> > >::type
23866: operator/(const V& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::divide_immediates, V, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class V, class B>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, number<B, et_on> >::type
23866: operator/(const V& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::divide_immediates, V, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class B, expression_template_option ET, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr detail::expression<detail::divides, number<B, ET>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >
23866: operator/(const number<B, ET>& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::divides, number<B, ET>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
23866: }
23866:
23866: template <class B, expression_template_option ET, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename detail::expression<detail::divides, number<B, ET>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >::result_type
23866: operator/(number<B, ET>&& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::divides, number<B, ET>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class B, expression_template_option ET>
23866: inline constexpr detail::expression<detail::divides, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, ET> >
23866: operator/(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const number<B, ET>& b)
23866: {
23866: return detail::expression<detail::divides, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, ET> >(a, b);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class B, expression_template_option ET>
23866: inline constexpr typename detail::expression<detail::divides, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, ET> >::result_type
23866: operator/(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, number<B, ET>&& b)
23866: {
23866: return detail::expression<detail::divides, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, ET> >(a, b);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class tag2, class Arg1b, class Arg2b, class Arg3b, class Arg4b>
23866: inline constexpr detail::expression<detail::divides, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b> >
23866: operator/(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b>& b)
23866: {
23866: return detail::expression<detail::divides, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b> >(a, b);
23866: }
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class V>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>, detail::expression<detail::divides, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V> >::type
23866: operator/(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const V& b)
23866: {
23866: return detail::expression<detail::divides, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V>(a, b);
23866: }
23866: template <class V, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>, detail::expression<detail::divides, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > >::type
23866: operator/(const V& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::divides, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
23866: }
23866:
23866:
23866:
23866: template <class B, expression_template_option ET, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr detail::expression<detail::negate, detail::expression<detail::divides, number<B, ET>, Arg1> >
23866: operator/(const number<B, ET>& a, const detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::divides, number<B, ET>, Arg1> >(
23866: detail::expression<detail::divides, number<B, ET>, Arg1>(a, b.left_ref()));
23866: }
23866:
23866: template <class B, expression_template_option ET, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline typename detail::expression<detail::negate, detail::expression<detail::divides, number<B, ET>, Arg1> >::result_type
23866: operator/(number<B, ET>&& a, const detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::divides, number<B, ET>, Arg1> >(
23866: detail::expression<detail::divides, number<B, ET>, Arg1>(a, b.left_ref()));
23866: }
23866:
23866: template <class Arg1, class Arg2, class Arg3, class Arg4, class B, expression_template_option ET>
23866: inline constexpr detail::expression<detail::negate, detail::expression<detail::divides, Arg1, number<B, ET> > >
23866: operator/(const detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>& a, const number<B, ET>& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::divides, Arg1, number<B, ET> > >(
23866: detail::expression<detail::divides, Arg1, number<B, ET> >(a.left_ref(), b));
23866: }
23866:
23866: template <class Arg1, class Arg2, class Arg3, class Arg4, class B, expression_template_option ET>
23866: inline constexpr typename detail::expression<detail::negate, detail::expression<detail::divides, Arg1, number<B, ET> > >::result_type
23866: operator/(const detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>& a, number<B, ET>&& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::divides, Arg1, number<B, ET> > >(
23866: detail::expression<detail::divides, Arg1, number<B, ET> >(a.left_ref(), b));
23866: }
23866:
23866: template <class B>
23866: inline constexpr detail::expression<detail::negate, detail::expression<detail::divide_immediates, number<B, et_on>, number<B, et_on> > >
23866: operator/(const number<B, et_on>& a, const detail::expression<detail::negate, number<B, et_on> >& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::divide_immediates, number<B, et_on>, number<B, et_on> > >(
23866: detail::expression<detail::divide_immediates, number<B, et_on>, number<B, et_on> >(a, b.left_ref()));
23866: }
23866:
23866: template <class B>
23866: inline constexpr typename detail::expression<detail::negate, detail::expression<detail::divide_immediates, number<B, et_on>, number<B, et_on> > >::result_type
23866: operator/(number<B, et_on>&& a, const detail::expression<detail::negate, number<B, et_on> >& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::divide_immediates, number<B, et_on>, number<B, et_on> > >(
23866: detail::expression<detail::divide_immediates, number<B, et_on>, number<B, et_on> >(a, b.left_ref()));
23866: }
23866:
23866: template <class B>
23866: inline constexpr detail::expression<detail::negate, detail::expression<detail::divide_immediates, number<B, et_on>, number<B, et_on> > >
23866: operator/(const detail::expression<detail::negate, number<B, et_on> >& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::divide_immediates, number<B, et_on>, number<B, et_on> > >(
23866: detail::expression<detail::divide_immediates, number<B, et_on>, number<B, et_on> >(a.left_ref(), b));
23866: }
23866:
23866: template <class B>
23866: inline constexpr typename detail::expression<detail::negate, detail::expression<detail::divide_immediates, number<B, et_on>, number<B, et_on> > >::result_type
23866: operator/(const detail::expression<detail::negate, number<B, et_on> >& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::divide_immediates, number<B, et_on>, number<B, et_on> > >(
23866: detail::expression<detail::divide_immediates, number<B, et_on>, number<B, et_on> >(a.left_ref(), b));
23866: }
23866:
23866: template <class B, class V>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, detail::expression<detail::negate, detail::expression<detail::divide_immediates, number<B, et_on>, V> > >::type
23866: operator/(const detail::expression<detail::negate, number<B, et_on> >& a, const V& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::divide_immediates, number<B, et_on>, V> >(
23866: detail::expression<detail::divide_immediates, number<B, et_on>, V>(a.left_ref(), b));
23866: }
23866: template <class B, class B2, expression_template_option ET>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<number<B2, ET>, number<B, et_on> >, detail::expression<detail::negate, detail::expression<detail::divide_immediates, number<B, et_on>, number<B2, ET> > > >::type
23866: operator/(const detail::expression<detail::negate, number<B, et_on> >& a, const number<B2, ET>& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::divide_immediates, number<B, et_on>, number<B2, ET> > >(
23866: detail::expression<detail::divide_immediates, number<B, et_on>, number<B2, ET> >(a.left_ref(), b));
23866: }
23866:
23866: template <class B, class B2, expression_template_option ET>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<number<B2, ET>, number<B, et_on> >, typename detail::expression<detail::negate, detail::expression<detail::divide_immediates, number<B, et_on>, number<B2, ET> > >::result_type>::type
23866: operator/(const detail::expression<detail::negate, number<B, et_on> >& a, number<B2, ET>&& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::divide_immediates, number<B, et_on>, number<B2, ET> > >(
23866: detail::expression<detail::divide_immediates, number<B, et_on>, number<B2, ET> >(a.left_ref(), b));
23866: }
23866:
23866: template <class V, class B>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<V, number<B, et_on> >, detail::expression<detail::negate, detail::expression<detail::divide_immediates, V, number<B, et_on> > > >::type
23866: operator/(const V& a, const detail::expression<detail::negate, number<B, et_on> >& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::divide_immediates, V, number<B, et_on> > >(
23866: detail::expression<detail::divide_immediates, V, number<B, et_on> >(a, b.left_ref()));
23866: }
23866: template <class B2, expression_template_option ET, class B>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<number<B2, ET>, number<B, et_on> >, detail::expression<detail::negate, detail::expression<detail::divide_immediates, number<B2, ET>, number<B, et_on> > > >::type
23866: operator/(const number<B2, ET>& a, const detail::expression<detail::negate, number<B, et_on> >& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::divide_immediates, number<B2, ET>, number<B, et_on> > >(
23866: detail::expression<detail::divide_immediates, number<B2, ET>, number<B, et_on> >(a, b.left_ref()));
23866: }
23866:
23866: template <class B2, expression_template_option ET, class B>
23866: inline constexpr typename enable_if<is_compatible_arithmetic_type<number<B2, ET>, typename detail::expression<detail::negate, detail::expression<detail::divide_immediates, number<B2, ET>, number<B, et_on> > >::result_type >, number<B, et_on> >::type
23866: operator/(number<B2, ET>&& a, const detail::expression<detail::negate, number<B, et_on> >& b)
23866: {
23866: return detail::expression<detail::negate, detail::expression<detail::divide_immediates, number<B2, ET>, number<B, et_on> > >(
23866: detail::expression<detail::divide_immediates, number<B2, ET>, number<B, et_on> >(a, b.left_ref()));
23866: }
23866:
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: detail::expression<detail::modulus_immediates, number<B, et_on>, number<B, et_on> > >::type
23866: operator%(const number<B, et_on>& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::modulus_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: number<B, et_on> >::type
23866: operator%(number<B, et_on>&& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::modulus_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: number<B, et_on> >::type
23866: operator%(const number<B, et_on>& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::modulus_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: number<B, et_on> >::type
23866: operator%(number<B, et_on>&& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::modulus_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class B, class V>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_on> >::value && (number_category<B>::value == number_kind_integer),
23866: detail::expression<detail::modulus_immediates, number<B, et_on>, V> >::type
23866: operator%(const number<B, et_on>& a, const V& b)
23866: {
23866: return detail::expression<detail::modulus_immediates, number<B, et_on>, V>(a, b);
23866: }
23866:
23866: template <class B, class V>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_on> >::value && (number_category<B>::value == number_kind_integer),
23866: number<B, et_on> >::type
23866: operator%(number<B, et_on>&& a, const V& b)
23866: {
23866: return detail::expression<detail::modulus_immediates, number<B, et_on>, V>(a, b);
23866: }
23866:
23866: template <class V, class B>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_on> >::value && (number_category<B>::value == number_kind_integer),
23866: detail::expression<detail::modulus_immediates, V, number<B, et_on> > >::type
23866: operator%(const V& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::modulus_immediates, V, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class V, class B>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_on> >::value && (number_category<B>::value == number_kind_integer),
23866: number<B, et_on> >::type
23866: operator%(const V& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::modulus_immediates, V, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class B, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: detail::expression<detail::modulus, number<B, et_on>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > >::type
23866: operator%(const number<B, et_on>& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::modulus, number<B, et_on>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
23866: }
23866:
23866: template <class B, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: typename detail::expression<detail::modulus, number<B, et_on>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >::result_type >::type
23866: operator%(number<B, et_on>&& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::modulus, number<B, et_on>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: detail::expression<detail::modulus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, et_on> > >::type
23866: operator%(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::modulus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: typename detail::expression<detail::modulus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, et_on> >::result_type >::type
23866: operator%(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::modulus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class tag2, class Arg1b, class Arg2b, class Arg3b, class Arg4b>
23866: inline constexpr typename enable_if_c<number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer,
23866: detail::expression<detail::modulus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b> > >::type
23866: operator%(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b>& b)
23866: {
23866: return detail::expression<detail::modulus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b> >(a, b);
23866: }
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class V>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value && (number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer),
23866: detail::expression<detail::modulus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V> >::type
23866: operator%(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const V& b)
23866: {
23866: return detail::expression<detail::modulus, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V>(a, b);
23866: }
23866: template <class V, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value && (number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer),
23866: detail::expression<detail::modulus, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > >::type
23866: operator%(const V& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::modulus, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
23866: }
23866:
23866:
23866:
23866: template <class B, class I>
23866: inline constexpr typename enable_if_c<is_integral<I>::value && (number_category<B>::value == number_kind_integer), detail::expression<detail::shift_left, number<B, et_on>, I> >::type
23866: operator<<(const number<B, et_on>& a, const I& b)
23866: {
23866: return detail::expression<detail::shift_left, number<B, et_on>, I>(a, b);
23866: }
23866:
23866: template <class B, class I>
23866: inline constexpr typename enable_if_c<is_integral<I>::value && (number_category<B>::value == number_kind_integer), number<B, et_on> >::type
23866: operator<<(number<B, et_on>&& a, const I& b)
23866: {
23866: return detail::expression<detail::shift_left, number<B, et_on>, I>(a, b);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class I>
23866: inline constexpr typename enable_if_c<is_integral<I>::value && (number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer),
23866: detail::expression<detail::shift_left, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, I> >::type
23866: operator<<(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const I& b)
23866: {
23866: return detail::expression<detail::shift_left, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, I>(a, b);
23866: }
23866:
23866:
23866:
23866: template <class B, class I>
23866: inline constexpr typename enable_if_c<is_integral<I>::value && (number_category<B>::value == number_kind_integer),
23866: detail::expression<detail::shift_right, number<B, et_on>, I> >::type
23866: operator>>(const number<B, et_on>& a, const I& b)
23866: {
23866: return detail::expression<detail::shift_right, number<B, et_on>, I>(a, b);
23866: }
23866:
23866: template <class B, class I>
23866: inline constexpr typename enable_if_c<is_integral<I>::value && (number_category<B>::value == number_kind_integer),
23866: number<B, et_on> >::type
23866: operator>>(number<B, et_on>&& a, const I& b)
23866: {
23866: return detail::expression<detail::shift_right, number<B, et_on>, I>(a, b);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class I>
23866: inline constexpr typename enable_if_c<is_integral<I>::value && (number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer),
23866: detail::expression<detail::shift_right, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, I> >::type
23866: operator>>(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const I& b)
23866: {
23866: return detail::expression<detail::shift_right, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, I>(a, b);
23866: }
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: detail::expression<detail::bitwise_and_immediates, number<B, et_on>, number<B, et_on> > >::type
23866: operator&(const number<B, et_on>& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::bitwise_and_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: number<B, et_on> >::type
23866: operator&(number<B, et_on>&& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::bitwise_and_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: number<B, et_on> >::type
23866: operator&(const number<B, et_on>& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::bitwise_and_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: number<B, et_on> >::type
23866: operator&(number<B, et_on>&& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::bitwise_and_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class B, class V>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_on> >::value && (number_category<B>::value == number_kind_integer),
23866: detail::expression<detail::bitwise_and_immediates, number<B, et_on>, V> >::type
23866: operator&(const number<B, et_on>& a, const V& b)
23866: {
23866: return detail::expression<detail::bitwise_and_immediates, number<B, et_on>, V>(a, b);
23866: }
23866:
23866: template <class B, class V>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_on> >::value && (number_category<B>::value == number_kind_integer),
23866: number<B, et_on> >::type
23866: operator&(number<B, et_on>&& a, const V& b)
23866: {
23866: return detail::expression<detail::bitwise_and_immediates, number<B, et_on>, V>(a, b);
23866: }
23866:
23866: template <class V, class B>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_on> >::value && (number_category<B>::value == number_kind_integer),
23866: detail::expression<detail::bitwise_and_immediates, V, number<B, et_on> > >::type
23866: operator&(const V& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::bitwise_and_immediates, V, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class V, class B>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_on> >::value && (number_category<B>::value == number_kind_integer),
23866: number<B, et_on> >::type
23866: operator&(const V& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::bitwise_and_immediates, V, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class B, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: detail::expression<detail::bitwise_and, number<B, et_on>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > >::type
23866: operator&(const number<B, et_on>& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::bitwise_and, number<B, et_on>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
23866: }
23866:
23866: template <class B, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: typename detail::expression<detail::bitwise_and, number<B, et_on>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >::result_type >::type
23866: operator&(number<B, et_on>&& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::bitwise_and, number<B, et_on>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: detail::expression<detail::bitwise_and, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, et_on> > >::type
23866: operator&(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::bitwise_and, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: typename detail::expression<detail::bitwise_and, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, et_on> >::result_type >::type
23866: operator&(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::bitwise_and, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class tag2, class Arg1b, class Arg2b, class Arg3b, class Arg4b>
23866: inline constexpr typename enable_if_c<number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer,
23866: detail::expression<detail::bitwise_and, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b> > >::type
23866: operator&(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b>& b)
23866: {
23866: return detail::expression<detail::bitwise_and, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b> >(a, b);
23866: }
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class V>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value && (number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer),
23866: detail::expression<detail::bitwise_and, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V> >::type
23866: operator&(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const V& b)
23866: {
23866: return detail::expression<detail::bitwise_and, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V>(a, b);
23866: }
23866: template <class V, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value && (number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer),
23866: detail::expression<detail::bitwise_and, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > >::type
23866: operator&(const V& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::bitwise_and, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
23866: }
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: detail::expression<detail::bitwise_or_immediates, number<B, et_on>, number<B, et_on> > >::type
23866: operator|(const number<B, et_on>& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::bitwise_or_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: number<B, et_on> >::type
23866: operator|(number<B, et_on>&& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::bitwise_or_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: number<B, et_on> >::type
23866: operator|(const number<B, et_on>& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::bitwise_or_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: number<B, et_on> >::type
23866: operator|(number<B, et_on>&& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::bitwise_or_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class B, class V>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_on> >::value && (number_category<B>::value == number_kind_integer),
23866: detail::expression<detail::bitwise_or_immediates, number<B, et_on>, V> >::type
23866: operator|(const number<B, et_on>& a, const V& b)
23866: {
23866: return detail::expression<detail::bitwise_or_immediates, number<B, et_on>, V>(a, b);
23866: }
23866:
23866: template <class B, class V>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_on> >::value && (number_category<B>::value == number_kind_integer),
23866: number<B, et_on> >::type
23866: operator|(number<B, et_on>&& a, const V& b)
23866: {
23866: return detail::expression<detail::bitwise_or_immediates, number<B, et_on>, V>(a, b);
23866: }
23866:
23866: template <class V, class B>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_on> >::value && (number_category<B>::value == number_kind_integer),
23866: detail::expression<detail::bitwise_or_immediates, V, number<B, et_on> > >::type
23866: operator|(const V& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::bitwise_or_immediates, V, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class V, class B>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_on> >::value && (number_category<B>::value == number_kind_integer),
23866: number<B, et_on> >::type
23866: operator|(const V& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::bitwise_or_immediates, V, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class B, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: detail::expression<detail::bitwise_or, number<B, et_on>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > >::type
23866: operator|(const number<B, et_on>& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::bitwise_or, number<B, et_on>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
23866: }
23866:
23866: template <class B, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: typename detail::expression<detail::bitwise_or, number<B, et_on>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >::result_type>::type
23866: operator|(number<B, et_on>&& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::bitwise_or, number<B, et_on>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: detail::expression<detail::bitwise_or, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, et_on> > >::type
23866: operator|(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::bitwise_or, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: typename detail::expression<detail::bitwise_or, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, et_on> >::result_type>::type
23866: operator|(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::bitwise_or, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class tag2, class Arg1b, class Arg2b, class Arg3b, class Arg4b>
23866: inline constexpr typename enable_if_c<number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer,
23866: detail::expression<detail::bitwise_or, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b> > >::type
23866: operator|(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b>& b)
23866: {
23866: return detail::expression<detail::bitwise_or, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b> >(a, b);
23866: }
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class V>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value && (number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer),
23866: detail::expression<detail::bitwise_or, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V> >::type
23866: operator|(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const V& b)
23866: {
23866: return detail::expression<detail::bitwise_or, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V>(a, b);
23866: }
23866: template <class V, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value && (number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer),
23866: detail::expression<detail::bitwise_or, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > >::type
23866: operator|(const V& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::bitwise_or, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
23866: }
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: detail::expression<detail::bitwise_xor_immediates, number<B, et_on>, number<B, et_on> > >::type
23866: operator^(const number<B, et_on>& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::bitwise_xor_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: number<B, et_on> >::type
23866: operator^(number<B, et_on>&& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::bitwise_xor_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: number<B, et_on> >::type
23866: operator^(const number<B, et_on>& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::bitwise_xor_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866: template <class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: number<B, et_on> >::type
23866: operator^(number<B, et_on>&& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::bitwise_xor_immediates, number<B, et_on>, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class B, class V>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_on> >::value && (number_category<B>::value == number_kind_integer),
23866: detail::expression<detail::bitwise_xor_immediates, number<B, et_on>, V> >::type
23866: operator^(const number<B, et_on>& a, const V& b)
23866: {
23866: return detail::expression<detail::bitwise_xor_immediates, number<B, et_on>, V>(a, b);
23866: }
23866:
23866: template <class B, class V>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_on> >::value && (number_category<B>::value == number_kind_integer),
23866: number<B, et_on> >::type
23866: operator^(number<B, et_on>&& a, const V& b)
23866: {
23866: return detail::expression<detail::bitwise_xor_immediates, number<B, et_on>, V>(a, b);
23866: }
23866:
23866: template <class V, class B>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_on> >::value && (number_category<B>::value == number_kind_integer),
23866: detail::expression<detail::bitwise_xor_immediates, V, number<B, et_on> > >::type
23866: operator^(const V& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::bitwise_xor_immediates, V, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class V, class B>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, number<B, et_on> >::value && (number_category<B>::value == number_kind_integer),
23866: number<B, et_on> >::type
23866: operator^(const V& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::bitwise_xor_immediates, V, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class B, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: detail::expression<detail::bitwise_xor, number<B, et_on>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > >::type
23866: operator^(const number<B, et_on>& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::bitwise_xor, number<B, et_on>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
23866: }
23866:
23866: template <class B, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: typename detail::expression<detail::bitwise_xor, number<B, et_on>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >::result_type>::type
23866: operator^(number<B, et_on>&& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::bitwise_xor, number<B, et_on>, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: detail::expression<detail::bitwise_xor, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, et_on> > >::type
23866: operator^(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const number<B, et_on>& b)
23866: {
23866: return detail::expression<detail::bitwise_xor, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class B>
23866: inline constexpr typename enable_if_c<number_category<B>::value == number_kind_integer,
23866: typename detail::expression<detail::bitwise_xor, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, et_on> >::result_type>::type
23866: operator^(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, number<B, et_on>&& b)
23866: {
23866: return detail::expression<detail::bitwise_xor, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, et_on> >(a, b);
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class tag2, class Arg1b, class Arg2b, class Arg3b, class Arg4b>
23866: inline constexpr typename enable_if_c<number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer,
23866: detail::expression<detail::bitwise_xor, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b> > >::type
23866: operator^(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b>& b)
23866: {
23866: return detail::expression<detail::bitwise_xor, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, detail::expression<tag2, Arg1b, Arg2b, Arg3b, Arg4b> >(a, b);
23866: }
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class V>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value && (number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer),
23866: detail::expression<detail::bitwise_xor, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V> >::type
23866: operator^(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& a, const V& b)
23866: {
23866: return detail::expression<detail::bitwise_xor, detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, V>(a, b);
23866: }
23866: template <class V, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: inline constexpr typename enable_if_c<is_compatible_arithmetic_type<V, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value && (number_category<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value == number_kind_integer), detail::expression<detail::bitwise_xor, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> > >::type
23866: operator^(const V& a, const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& b)
23866: {
23866: return detail::expression<detail::bitwise_xor, V, detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >(a, b);
23866: }
23866:
23866: }}
23866: # 3701 "/usr/include/boost/multiprecision/detail/default_ops.hpp" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/multiprecision/detail/min_max.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MP_MIN_MAX_HPP
23866:
23866: # 1 "/usr/include/boost/multiprecision/traits/is_backend.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MP_IS_BACKEND_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost { namespace multiprecision { namespace detail {
23866:
23866: template< typename T, typename fallback_ = boost::mpl::bool_<false> > struct has_signed_types { struct gcc_3_2_wknd { template< typename U > static boost::mpl::aux::yes_tag test( boost::mpl::aux::type_wrapper<U> const volatile* , boost::mpl::aux::type_wrapper<typename U::signed_types>* = 0 ); static boost::mpl::aux::no_tag test(...); }; typedef boost::mpl::aux::type_wrapper<T> t_; static const bool value = sizeof(gcc_3_2_wknd::test(static_cast<t_*>(0))) == sizeof(boost::mpl::aux::yes_tag); typedef boost::mpl::bool_<value> type; };
23866: template< typename T, typename fallback_ = boost::mpl::bool_<false> > struct has_unsigned_types { struct gcc_3_2_wknd { template< typename U > static boost::mpl::aux::yes_tag test( boost::mpl::aux::type_wrapper<U> const volatile* , boost::mpl::aux::type_wrapper<typename U::unsigned_types>* = 0 ); static boost::mpl::aux::no_tag test(...); }; typedef boost::mpl::aux::type_wrapper<T> t_; static const bool value = sizeof(gcc_3_2_wknd::test(static_cast<t_*>(0))) == sizeof(boost::mpl::aux::yes_tag); typedef boost::mpl::bool_<value> type; };
23866: template< typename T, typename fallback_ = boost::mpl::bool_<false> > struct has_float_types { struct gcc_3_2_wknd { template< typename U > static boost::mpl::aux::yes_tag test( boost::mpl::aux::type_wrapper<U> const volatile* , boost::mpl::aux::type_wrapper<typename U::float_types>* = 0 ); static boost::mpl::aux::no_tag test(...); }; typedef boost::mpl::aux::type_wrapper<T> t_; static const bool value = sizeof(gcc_3_2_wknd::test(static_cast<t_*>(0))) == sizeof(boost::mpl::aux::yes_tag); typedef boost::mpl::bool_<value> type; };
23866:
23866: template <class T>
23866: struct is_backend
23866: {
23866: static const bool value = has_signed_types<T>::value && has_unsigned_types<T>::value && has_float_types<T>::value;
23866: };
23866:
23866: template <class Backend>
23866: struct other_backend
23866: {
23866: typedef typename boost::conditional<
23866: boost::is_same<number<Backend>, number<Backend, et_on> >::value,
23866: number<Backend, et_off>, number<Backend, et_on> >::type type;
23866: };
23866:
23866: template <class B, class V>
23866: struct number_from_backend
23866: {
23866: typedef typename boost::conditional<
23866: boost::is_convertible<V, number<B> >::value,
23866: number<B>,
23866: typename other_backend<B>::type>::type type;
23866: };
23866:
23866: template <bool b, class T, class U>
23866: struct is_first_backend_imp
23866: {
23866: static const bool value = false;
23866: };
23866: template <class T, class U>
23866: struct is_first_backend_imp<true, T, U>
23866: {
23866: static const bool value = is_convertible<U, number<T, et_on> >::value || is_convertible<U, number<T, et_off> >::value;
23866: };
23866:
23866: template <class T, class U>
23866: struct is_first_backend : is_first_backend_imp<is_backend<T>::value, T, U>
23866: {};
23866:
23866: template <bool b, class T, class U>
23866: struct is_second_backend_imp
23866: {
23866: static const bool value = false;
23866: };
23866: template <class T, class U>
23866: struct is_second_backend_imp<true, T, U>
23866: {
23866: static const bool value = (is_convertible<T, number<U, et_on> >::value || is_convertible<T, number<U, et_off> >::value) && !is_first_backend<T, U>::value;
23866: };
23866:
23866: template <class T, class U>
23866: struct is_second_backend : is_second_backend_imp<is_backend<U>::value, T, U>
23866: {};
23866:
23866: }
23866: }
23866: }
23866: # 10 "/usr/include/boost/multiprecision/detail/min_max.hpp" 2 3 4
23866:
23866: namespace boost { namespace multiprecision {
23866: # 28 "/usr/include/boost/multiprecision/detail/min_max.hpp" 3 4
23866: template <class Backend>
23866: inline typename boost::enable_if_c<boost::multiprecision::detail::is_backend<Backend>::value, const number<Backend, et_on>&>::type(min)(const number<Backend, et_on>& a, const number<Backend, et_on>& b)
23866: {
23866: return a < b ? a : b;
23866: }
23866: template <class Backend, class tag, class A1, class A2, class A3, class A4>
23866: inline typename boost::enable_if_c<boost::multiprecision::detail::is_backend<Backend>::value, const number<Backend, et_on> >::type(min)(const number<Backend, et_on>& a, const detail::expression<tag, A1, A2, A3, A4>& b)
23866: {
23866: number<Backend, et_on> t(b);
23866: if (a < t)
23866: return a;
23866: return std::move(t);
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4, class Backend>
23866: inline typename boost::enable_if_c<boost::multiprecision::detail::is_backend<Backend>::value, const number<Backend, et_on> >::type(min)(const detail::expression<tag, A1, A2, A3, A4>& a, const number<Backend, et_on>& b)
23866: {
23866: number<Backend, et_on> t(a);
23866: if (t < b)
23866: return std::move(t);
23866: return b;
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4, class tagb, class A1b, class A2b, class A3b, class A4b>
23866: inline typename detail::expression<tag, A1, A2, A3, A4>::result_type(min)(const detail::expression<tag, A1, A2, A3, A4>& a, const detail::expression<tagb, A1b, A2b, A3b, A4b>& b)
23866: {
23866: typename detail::expression<tag, A1, A2, A3, A4>::result_type t1(a), t2(b);
23866: if (t1 < t2)
23866: return std::move(t1);
23866: return std::move(t2);
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline typename detail::expression<tag, A1, A2, A3, A4>::result_type(min)(const detail::expression<tag, A1, A2, A3, A4>& a, const detail::expression<tag, A1, A2, A3, A4>& b)
23866: {
23866: typename detail::expression<tag, A1, A2, A3, A4>::result_type t1(a), t2(b);
23866: if (t1 < t2)
23866: return std::move(t1);
23866: return std::move(t2);
23866: }
23866:
23866: template <class Backend>
23866: inline typename boost::enable_if_c<boost::multiprecision::detail::is_backend<Backend>::value, const number<Backend, et_on>&>::type(max)(const number<Backend, et_on>& a, const number<Backend, et_on>& b)
23866: {
23866: return a > b ? a : b;
23866: }
23866: template <class Backend, class tag, class A1, class A2, class A3, class A4>
23866: inline typename boost::enable_if_c<boost::multiprecision::detail::is_backend<Backend>::value, const number<Backend, et_on> >::type(max)(const number<Backend, et_on>& a, const detail::expression<tag, A1, A2, A3, A4>& b)
23866: {
23866: number<Backend, et_on> t(b);
23866: if (a > t)
23866: return a;
23866: return std::move(t);
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4, class Backend>
23866: inline typename boost::enable_if_c<boost::multiprecision::detail::is_backend<Backend>::value, const number<Backend, et_on> >::type(max)(const detail::expression<tag, A1, A2, A3, A4>& a, const number<Backend, et_on>& b)
23866: {
23866: number<Backend, et_on> t(a);
23866: if (t > b)
23866: return std::move(t);
23866: return b;
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4, class tagb, class A1b, class A2b, class A3b, class A4b>
23866: inline typename detail::expression<tag, A1, A2, A3, A4>::result_type(max)(const detail::expression<tag, A1, A2, A3, A4>& a, const detail::expression<tagb, A1b, A2b, A3b, A4b>& b)
23866: {
23866: typename detail::expression<tag, A1, A2, A3, A4>::result_type t1(a), t2(b);
23866: if (t1 > t2)
23866: return std::move(t1);
23866: return std::move(t2);
23866: }
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline typename detail::expression<tag, A1, A2, A3, A4>::result_type(max)(const detail::expression<tag, A1, A2, A3, A4>& a, const detail::expression<tag, A1, A2, A3, A4>& b)
23866: {
23866: typename detail::expression<tag, A1, A2, A3, A4>::result_type t1(a), t2(b);
23866: if (t1 > t2)
23866: return std::move(t1);
23866: return std::move(t2);
23866: }
23866:
23866: }}
23866: # 3705 "/usr/include/boost/multiprecision/detail/default_ops.hpp" 2 3 4
23866: # 10 "/usr/include/boost/multiprecision/detail/generic_interconvert.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost { namespace multiprecision { namespace detail {
23866:
23866: template <class To, class From>
23866: inline To do_cast(const From& from)
23866: {
23866: return static_cast<To>(from);
23866: }
23866: template <class To, class B, ::boost::multiprecision::expression_template_option et>
23866: inline To do_cast(const number<B, et>& from)
23866: {
23866: return from.template convert_to<To>();
23866: }
23866:
23866: template <class To, class From>
23866: void generic_interconvert(To& to, const From& from, const mpl::int_<number_kind_floating_point>& , const mpl::int_<number_kind_integer>& )
23866: {
23866: using default_ops::eval_add;
23866: using default_ops::eval_bitwise_and;
23866: using default_ops::eval_convert_to;
23866: using default_ops::eval_get_sign;
23866: using default_ops::eval_is_zero;
23866: using default_ops::eval_ldexp;
23866: using default_ops::eval_right_shift;
23866:
23866: typedef typename canonical<unsigned char, From>::type l_limb_type;
23866:
23866: typedef typename canonical<l_limb_type, To>::type to_type;
23866: From t(from);
23866: bool is_neg = eval_get_sign(t) < 0;
23866: if (is_neg)
23866: t.negate();
23866:
23866: l_limb_type limb;
23866: l_limb_type mask = static_cast<l_limb_type>(~static_cast<l_limb_type>(0));
23866: From fl;
23866: eval_bitwise_and(fl, t, mask);
23866: eval_convert_to(&limb, fl);
23866: to = static_cast<to_type>(limb);
23866: eval_right_shift(t, std::numeric_limits<l_limb_type>::digits);
23866:
23866:
23866:
23866: To l;
23866: unsigned shift = std::numeric_limits<l_limb_type>::digits;
23866: while (!eval_is_zero(t))
23866: {
23866: eval_bitwise_and(fl, t, mask);
23866: eval_convert_to(&limb, fl);
23866: l = static_cast<to_type>(limb);
23866: eval_right_shift(t, std::numeric_limits<l_limb_type>::digits);
23866: eval_ldexp(l, l, shift);
23866: eval_add(to, l);
23866: shift += std::numeric_limits<l_limb_type>::digits;
23866: }
23866:
23866:
23866:
23866: if (is_neg)
23866: to.negate();
23866: }
23866:
23866: template <class To, class From>
23866: void generic_interconvert(To& to, const From& from, const mpl::int_<number_kind_integer>& , const mpl::int_<number_kind_integer>& )
23866: {
23866: using default_ops::eval_bitwise_and;
23866: using default_ops::eval_bitwise_or;
23866: using default_ops::eval_convert_to;
23866: using default_ops::eval_get_sign;
23866: using default_ops::eval_is_zero;
23866: using default_ops::eval_left_shift;
23866: using default_ops::eval_right_shift;
23866:
23866: typedef typename canonical<unsigned char, From>::type limb_type;
23866:
23866: typedef typename canonical<limb_type, To>::type to_type;
23866: From t(from);
23866: bool is_neg = eval_get_sign(t) < 0;
23866: if (is_neg)
23866: t.negate();
23866:
23866: limb_type limb;
23866: limb_type mask = static_cast<limb_type>(~static_cast<limb_type>(0));
23866: From fl;
23866: eval_bitwise_and(fl, t, mask);
23866: eval_convert_to(&limb, fl);
23866: to = static_cast<to_type>(limb);
23866: eval_right_shift(t, std::numeric_limits<limb_type>::digits);
23866:
23866:
23866:
23866: To l;
23866: unsigned shift = std::numeric_limits<limb_type>::digits;
23866: while (!eval_is_zero(t))
23866: {
23866: eval_bitwise_and(fl, t, mask);
23866: eval_convert_to(&limb, fl);
23866: l = static_cast<to_type>(limb);
23866: eval_right_shift(t, std::numeric_limits<limb_type>::digits);
23866: eval_left_shift(l, shift);
23866: eval_bitwise_or(to, l);
23866: shift += std::numeric_limits<limb_type>::digits;
23866: }
23866:
23866:
23866:
23866: if (is_neg)
23866: to.negate();
23866: }
23866:
23866: template <class To, class From>
23866: void generic_interconvert(To& to, const From& from, const mpl::int_<number_kind_floating_point>& , const mpl::int_<number_kind_floating_point>& )
23866: {
23866: # 137 "/usr/include/boost/multiprecision/detail/generic_interconvert.hpp" 3 4
23866: if (std::numeric_limits<number<From> >::radix != 2)
23866: {
23866: to = from.str(0, std::ios_base::fmtflags()).c_str();
23866: return;
23866: }
23866:
23866: typedef typename canonical<unsigned char, To>::type ui_type;
23866:
23866: using default_ops::eval_add;
23866: using default_ops::eval_convert_to;
23866: using default_ops::eval_fpclassify;
23866: using default_ops::eval_get_sign;
23866: using default_ops::eval_is_zero;
23866: using default_ops::eval_subtract;
23866:
23866:
23866:
23866:
23866: int c = eval_fpclassify(from);
23866:
23866: if (c == (int)2)
23866: {
23866: to = ui_type(0);
23866: return;
23866: }
23866: else if (c == (int)0)
23866: {
23866: to = static_cast<const char*>("nan");
23866: return;
23866: }
23866: else if (c == (int)1)
23866: {
23866: to = static_cast<const char*>("inf");
23866: if (eval_get_sign(from) < 0)
23866: to.negate();
23866: return;
23866: }
23866:
23866: typename From::exponent_type e;
23866: From f, term;
23866: to = ui_type(0);
23866:
23866: eval_frexp(f, from, &e);
23866:
23866: static const int shift = std::numeric_limits<boost::intmax_t>::digits - 1;
23866:
23866: while (!eval_is_zero(f))
23866: {
23866:
23866: eval_ldexp(f, f, shift);
23866: eval_floor(term, f);
23866: e -= shift;
23866: eval_ldexp(to, to, shift);
23866: typename boost::multiprecision::detail::canonical<boost::intmax_t, To>::type ll;
23866: eval_convert_to(&ll, term);
23866: eval_add(to, ll);
23866: eval_subtract(f, term);
23866: }
23866: typedef typename To::exponent_type to_exponent;
23866: if (e > (std::numeric_limits<to_exponent>::max)())
23866: {
23866: to = static_cast<const char*>("inf");
23866: if (eval_get_sign(from) < 0)
23866: to.negate();
23866: return;
23866: }
23866: if (e < (std::numeric_limits<to_exponent>::min)())
23866: {
23866: to = ui_type(0);
23866: if (eval_get_sign(from) < 0)
23866: to.negate();
23866: return;
23866: }
23866: eval_ldexp(to, to, static_cast<to_exponent>(e));
23866:
23866:
23866:
23866: }
23866:
23866: template <class To, class From>
23866: void generic_interconvert(To& to, const From& from, const mpl::int_<number_kind_rational>& , const mpl::int_<number_kind_rational>& )
23866: {
23866: typedef typename component_type<number<To> >::type to_component_type;
23866:
23866: number<From> t(from);
23866: to_component_type n(numerator(t)), d(denominator(t));
23866: using default_ops::assign_components;
23866: assign_components(to, n.backend(), d.backend());
23866: }
23866:
23866: template <class To, class From>
23866: void generic_interconvert(To& to, const From& from, const mpl::int_<number_kind_rational>& , const mpl::int_<number_kind_integer>& )
23866: {
23866: typedef typename component_type<number<To> >::type to_component_type;
23866:
23866: number<From> t(from);
23866: to_component_type n(t), d(1);
23866: using default_ops::assign_components;
23866: assign_components(to, n.backend(), d.backend());
23866: }
23866:
23866: template <class R, class LargeInteger>
23866: R safe_convert_to_float(const LargeInteger& i)
23866: {
23866: using std::ldexp;
23866: if (!i)
23866: return R(0);
23866: if (std::numeric_limits<R>::is_specialized && std::numeric_limits<R>::max_exponent)
23866: {
23866: LargeInteger val(i);
23866: if (val.sign() < 0)
23866: val = -val;
23866: unsigned mb = msb(val);
23866: if (mb >= std::numeric_limits<R>::max_exponent)
23866: {
23866: int scale_factor = (int)mb + 1 - std::numeric_limits<R>::max_exponent;
23866: (static_cast <bool> (scale_factor >= 1) ? void (0) : __assert_fail ("scale_factor >= 1", "/usr/include/boost/multiprecision/detail/generic_interconvert.hpp", 253, __extension__ __PRETTY_FUNCTION__));
23866: val >>= scale_factor;
23866: R result = val.template convert_to<R>();
23866: if (std::numeric_limits<R>::digits == 0 || std::numeric_limits<R>::digits >= std::numeric_limits<R>::max_exponent)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: LargeInteger remainder(i);
23866: remainder &= (LargeInteger(1) << scale_factor) - 1;
23866: result += ldexp(safe_convert_to_float<R>(remainder), -scale_factor);
23866: }
23866: return i.sign() < 0 ? static_cast<R>(-result) : result;
23866: }
23866: }
23866: return i.template convert_to<R>();
23866: }
23866:
23866: template <class To, class Integer>
23866: inline typename disable_if_c<is_number<To>::value || is_floating_point<To>::value>::type
23866: generic_convert_rational_to_float_imp(To& result, const Integer& n, const Integer& d, const mpl::true_&)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: using default_ops::eval_divide;
23866: number<To> fn(safe_convert_to_float<number<To> >(n)), fd(safe_convert_to_float<number<To> >(d));
23866: eval_divide(result, fn.backend(), fd.backend());
23866: }
23866: template <class To, class Integer>
23866: inline typename enable_if_c<is_number<To>::value || is_floating_point<To>::value>::type
23866: generic_convert_rational_to_float_imp(To& result, const Integer& n, const Integer& d, const mpl::true_&)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: To fd(safe_convert_to_float<To>(d));
23866: result = safe_convert_to_float<To>(n);
23866: result /= fd;
23866: }
23866:
23866: template <class To, class Integer>
23866: typename enable_if_c<is_number<To>::value || is_floating_point<To>::value>::type
23866: generic_convert_rational_to_float_imp(To& result, Integer& num, Integer& denom, const mpl::false_&)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: if (num == 0)
23866: {
23866: result = 0;
23866: return;
23866: }
23866: bool s = false;
23866: if (num < 0)
23866: {
23866: s = true;
23866: num = -num;
23866: }
23866: int denom_bits = msb(denom);
23866: int shift = std::numeric_limits<To>::digits + denom_bits - msb(num);
23866: if (shift > 0)
23866: num <<= shift;
23866: else if (shift < 0)
23866: denom <<= boost::multiprecision::detail::unsigned_abs(shift);
23866: Integer q, r;
23866: divide_qr(num, denom, q, r);
23866: int q_bits = msb(q);
23866: if (q_bits == std::numeric_limits<To>::digits - 1)
23866: {
23866:
23866:
23866:
23866: r <<= 1;
23866: int c = r.compare(denom);
23866: if (c > 0)
23866: ++q;
23866: else if ((c == 0) && (q & 1u))
23866: {
23866: ++q;
23866: }
23866: }
23866: else
23866: {
23866: (static_cast <bool> (q_bits == std::numeric_limits<To>::digits) ? void (0) : __assert_fail ("q_bits == std::numeric_limits<To>::digits", "/usr/include/boost/multiprecision/detail/generic_interconvert.hpp", 346, __extension__ __PRETTY_FUNCTION__));
23866:
23866:
23866:
23866: if (q & 1u)
23866: {
23866: if (r || (q & 2u))
23866: ++q;
23866: }
23866: }
23866: using std::ldexp;
23866: result = do_cast<To>(q);
23866: result = ldexp(result, -shift);
23866: if (s)
23866: result = -result;
23866: }
23866: template <class To, class Integer>
23866: inline typename disable_if_c<is_number<To>::value || is_floating_point<To>::value>::type
23866: generic_convert_rational_to_float_imp(To& result, Integer& num, Integer& denom, const mpl::false_& tag)
23866: {
23866: number<To> t;
23866: generic_convert_rational_to_float_imp(t, num, denom, tag);
23866: result = t.backend();
23866: }
23866:
23866: template <class To, class From>
23866: inline void generic_convert_rational_to_float(To& result, const From& f)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: typedef typename mpl::if_c<is_number<From>::value, From, number<From> >::type actual_from_type;
23866: typedef typename mpl::if_c<is_number<To>::value || is_floating_point<To>::value, To, number<To> >::type actual_to_type;
23866: typedef typename component_type<actual_from_type>::type integer_type;
23866: typedef mpl::bool_<!std::numeric_limits<integer_type>::is_specialized || std::numeric_limits<integer_type>::is_bounded || !std::numeric_limits<actual_to_type>::is_specialized || !std::numeric_limits<actual_to_type>::is_bounded || (std::numeric_limits<actual_to_type>::radix != 2)> dispatch_tag;
23866:
23866: integer_type n(numerator(static_cast<actual_from_type>(f))), d(denominator(static_cast<actual_from_type>(f)));
23866: generic_convert_rational_to_float_imp(result, n, d, dispatch_tag());
23866: }
23866:
23866: template <class To, class From>
23866: inline void generic_interconvert(To& to, const From& from, const mpl::int_<number_kind_floating_point>& , const mpl::int_<number_kind_rational>& )
23866: {
23866: generic_convert_rational_to_float(to, from);
23866: }
23866:
23866: template <class To, class From>
23866: void generic_interconvert_float2rational(To& to, const From& from, const mpl::int_<2>& )
23866: {
23866: typedef typename mpl::front<typename To::unsigned_types>::type ui_type;
23866: static const int shift = std::numeric_limits<boost::long_long_type>::digits;
23866: typename From::exponent_type e;
23866: typename component_type<number<To> >::type num, denom;
23866: number<From> val(from);
23866: val = frexp(val, &e);
23866: while (val)
23866: {
23866: val = ldexp(val, shift);
23866: e -= shift;
23866: boost::long_long_type ll = boost::math::lltrunc(val);
23866: val -= ll;
23866: num <<= shift;
23866: num += ll;
23866: }
23866: denom = ui_type(1u);
23866: if (e < 0)
23866: denom <<= -e;
23866: else if (e > 0)
23866: num <<= e;
23866: assign_components(to, num.backend(), denom.backend());
23866: }
23866:
23866: template <class To, class From, int Radix>
23866: void generic_interconvert_float2rational(To& to, const From& from, const mpl::int_<Radix>& )
23866: {
23866:
23866:
23866:
23866:
23866:
23866: typedef typename mpl::front<typename To::unsigned_types>::type ui_type;
23866: typename From::exponent_type e;
23866: typename component_type<number<To> >::type num, denom;
23866: number<From> val(from);
23866:
23866: if (!val)
23866: {
23866: to = ui_type(0u);
23866: return;
23866: }
23866:
23866: e = ilogb(val);
23866: val = scalbn(val, -e);
23866: while (val)
23866: {
23866: boost::long_long_type ll = boost::math::lltrunc(val);
23866: val -= ll;
23866: val = scalbn(val, 1);
23866: num *= Radix;
23866: num += ll;
23866: --e;
23866: }
23866: ++e;
23866: denom = ui_type(Radix);
23866: denom = pow(denom, abs(e));
23866: if (e > 0)
23866: {
23866: num *= denom;
23866: denom = 1;
23866: }
23866: assign_components(to, num.backend(), denom.backend());
23866: }
23866:
23866: template <class To, class From>
23866: void generic_interconvert(To& to, const From& from, const mpl::int_<number_kind_rational>& , const mpl::int_<number_kind_floating_point>& )
23866: {
23866: generic_interconvert_float2rational(to, from, mpl::int_<std::numeric_limits<number<From> >::radix>());
23866: }
23866:
23866: template <class To, class From>
23866: void generic_interconvert(To& to, const From& from, const mpl::int_<number_kind_integer>& , const mpl::int_<number_kind_rational>& )
23866: {
23866: number<From> t(from);
23866: number<To> result(numerator(t) / denominator(t));
23866: to = result.backend();
23866: }
23866:
23866: template <class To, class From>
23866: void generic_interconvert_float2int(To& to, const From& from, const mpl::int_<2>& )
23866: {
23866: typedef typename From::exponent_type exponent_type;
23866: static const exponent_type shift = std::numeric_limits<boost::long_long_type>::digits;
23866: exponent_type e;
23866: number<To> num(0u);
23866: number<From> val(from);
23866: val = frexp(val, &e);
23866: bool neg = false;
23866: if (val.sign() < 0)
23866: {
23866: val.backend().negate();
23866: neg = true;
23866: }
23866: while (e > 0)
23866: {
23866: exponent_type s = (std::min)(e, shift);
23866: val = ldexp(val, s);
23866: e -= s;
23866: boost::long_long_type ll = boost::math::lltrunc(val);
23866: val -= ll;
23866: num <<= s;
23866: num += ll;
23866: }
23866: to = num.backend();
23866: if (neg)
23866: to.negate();
23866: }
23866:
23866: template <class To, class From, int Radix>
23866: void generic_interconvert_float2int(To& to, const From& from, const mpl::int_<Radix>& )
23866: {
23866:
23866:
23866:
23866:
23866:
23866: typename From::exponent_type e;
23866: number<To> num(0u);
23866: number<From> val(from);
23866: e = ilogb(val);
23866: val = scalbn(val, -e);
23866: while (e >= 0)
23866: {
23866: boost::long_long_type ll = boost::math::lltrunc(val);
23866: val -= ll;
23866: val = scalbn(val, 1);
23866: num *= Radix;
23866: num += ll;
23866: --e;
23866: }
23866: to = num.backend();
23866: }
23866:
23866: template <class To, class From>
23866: void generic_interconvert(To& to, const From& from, const mpl::int_<number_kind_integer>& , const mpl::int_<number_kind_floating_point>& )
23866: {
23866: generic_interconvert_float2int(to, from, mpl::int_<std::numeric_limits<number<From> >::radix>());
23866: }
23866:
23866: template <class To, class From, class tag>
23866: void generic_interconvert_complex_to_scalar(To& to, const From& from, const mpl::true_&, const tag&)
23866: {
23866:
23866: eval_real(to, from);
23866:
23866: To im;
23866: eval_imag(im, from);
23866: if (!eval_is_zero(im))
23866: ::boost::throw_exception(std::runtime_error("Could not convert imaginary number to scalar."), ::boost::source_location("/usr/include/boost/multiprecision/detail/generic_interconvert.hpp", 547, __PRETTY_FUNCTION__));
23866: }
23866: template <class To, class From>
23866: void generic_interconvert_complex_to_scalar(To& to, const From& from, const mpl::false_&, const mpl::true_&)
23866: {
23866: typedef typename component_type<number<From> >::type component_number;
23866: typedef typename component_number::backend_type component_backend;
23866:
23866:
23866:
23866: component_backend r;
23866: generic_interconvert_complex_to_scalar(r, from, mpl::true_(), mpl::true_());
23866: to = r;
23866: }
23866: template <class To, class From>
23866: void generic_interconvert_complex_to_scalar(To& to, const From& from, const mpl::false_&, const mpl::false_&)
23866: {
23866: typedef typename component_type<number<From> >::type component_number;
23866: typedef typename component_number::backend_type component_backend;
23866:
23866:
23866:
23866: component_backend r;
23866: generic_interconvert_complex_to_scalar(r, from, mpl::true_(), mpl::true_());
23866: generic_interconvert(to, r, mpl::int_<number_category<To>::value>(), mpl::int_<number_category<To>::value>());
23866: }
23866:
23866: template <class To, class From>
23866: void generic_interconvert(To& to, const From& from, const mpl::int_<number_kind_floating_point>& , const mpl::int_<number_kind_complex>& )
23866: {
23866: typedef typename component_type<number<From> >::type component_number;
23866: typedef typename component_number::backend_type component_backend;
23866:
23866: generic_interconvert_complex_to_scalar(to, from, mpl::bool_<boost::is_same<component_backend, To>::value>(), mpl::bool_<boost::is_constructible<To, const component_backend&>::value>());
23866: }
23866: template <class To, class From>
23866: void generic_interconvert(To& to, const From& from, const mpl::int_<number_kind_integer>& , const mpl::int_<number_kind_complex>& )
23866: {
23866: typedef typename component_type<number<From> >::type component_number;
23866: typedef typename component_number::backend_type component_backend;
23866:
23866: generic_interconvert_complex_to_scalar(to, from, mpl::bool_<boost::is_same<component_backend, To>::value>(), mpl::bool_<boost::is_constructible<To, const component_backend&>::value>());
23866: }
23866:
23866: }
23866: }
23866: }
23866: # 27 "/usr/include/boost/multiprecision/number.hpp" 2 3 4
23866: # 1 "/usr/include/boost/multiprecision/detail/number_compare.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MP_COMPARE_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost { namespace multiprecision {
23866:
23866: namespace default_ops {
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr bool eval_eq(const B& a, const B& b)
23866: {
23866: return a.compare(b) == 0;
23866: }
23866: template <class T, class U>
23866: inline constexpr bool eval_eq_imp(const T& a, const U& b, const mpl::true_&)
23866: {
23866: typename boost::multiprecision::detail::number_from_backend<T, U>::type t(b);
23866: return eval_eq(a, t.backend());
23866: }
23866: template <class T, class U>
23866: inline constexpr bool eval_eq_imp(const T& a, const U& b, const mpl::false_&)
23866: {
23866: typename boost::multiprecision::detail::number_from_backend<U, T>::type t(a);
23866: return eval_eq(t.backend(), b);
23866: }
23866: template <class T, class U>
23866: inline constexpr bool eval_eq(const T& a, const U& b)
23866: {
23866: typedef mpl::bool_<boost::multiprecision::detail::is_first_backend<T, U>::value> tag_type;
23866: return eval_eq_imp(a, b, tag_type());
23866: }
23866:
23866: template <class B>
23866: inline constexpr bool eval_lt(const B& a, const B& b)
23866: {
23866: return a.compare(b) < 0;
23866: }
23866: template <class T, class U>
23866: inline constexpr bool eval_lt_imp(const T& a, const U& b, const mpl::true_&)
23866: {
23866: typename boost::multiprecision::detail::number_from_backend<T, U>::type t(b);
23866: return eval_lt(a, t.backend());
23866: }
23866: template <class T, class U>
23866: inline constexpr bool eval_lt_imp(const T& a, const U& b, const mpl::false_&)
23866: {
23866: typename boost::multiprecision::detail::number_from_backend<U, T>::type t(a);
23866: return eval_lt(t.backend(), b);
23866: }
23866: template <class T, class U>
23866: inline constexpr bool eval_lt(const T& a, const U& b)
23866: {
23866: typedef mpl::bool_<boost::multiprecision::detail::is_first_backend<T, U>::value> tag_type;
23866: return eval_lt_imp(a, b, tag_type());
23866: }
23866:
23866: template <class B>
23866: inline constexpr bool eval_gt(const B& a, const B& b)
23866: {
23866: return a.compare(b) > 0;
23866: }
23866: template <class T, class U>
23866: inline constexpr bool eval_gt_imp(const T& a, const U& b, const mpl::true_&)
23866: {
23866: typename boost::multiprecision::detail::number_from_backend<T, U>::type t(b);
23866: return eval_gt(a, t.backend());
23866: }
23866: template <class T, class U>
23866: inline constexpr bool eval_gt_imp(const T& a, const U& b, const mpl::false_&)
23866: {
23866: typename boost::multiprecision::detail::number_from_backend<U, T>::type t(a);
23866: return eval_gt(t.backend(), b);
23866: }
23866: template <class T, class U>
23866: inline constexpr bool eval_gt(const T& a, const U& b)
23866: {
23866: typedef mpl::bool_<boost::multiprecision::detail::is_first_backend<T, U>::value> tag_type;
23866: return eval_gt_imp(a, b, tag_type());
23866: }
23866:
23866: }
23866:
23866: namespace detail {
23866:
23866: template <class Num, class Val>
23866: struct is_valid_mixed_compare : public mpl::false_
23866: {};
23866:
23866: template <class B, expression_template_option ET, class Val>
23866: struct is_valid_mixed_compare<number<B, ET>, Val> : public is_convertible<Val, number<B, ET> >
23866: {};
23866:
23866: template <class B, expression_template_option ET>
23866: struct is_valid_mixed_compare<number<B, ET>, number<B, ET> > : public mpl::false_
23866: {};
23866:
23866: template <class B, expression_template_option ET, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: struct is_valid_mixed_compare<number<B, ET>, expression<tag, Arg1, Arg2, Arg3, Arg4> >
23866: : public mpl::bool_<is_convertible<expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, ET> >::value>
23866: {};
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class B, expression_template_option ET>
23866: struct is_valid_mixed_compare<expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, ET> >
23866: : public mpl::bool_<is_convertible<expression<tag, Arg1, Arg2, Arg3, Arg4>, number<B, ET> >::value>
23866: {};
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates>
23866: inline constexpr typename boost::enable_if_c<number_category<Backend>::value != number_kind_floating_point, bool>::type is_unordered_value(const number<Backend, ExpressionTemplates>&)
23866: {
23866: return false;
23866: }
23866: template <class Backend, expression_template_option ExpressionTemplates>
23866: inline
23866:
23866: constexpr
23866:
23866: typename boost::enable_if_c<number_category<Backend>::value == number_kind_floating_point, bool>::type
23866: is_unordered_value(const number<Backend, ExpressionTemplates>& a)
23866: {
23866: using default_ops::eval_fpclassify;
23866: return eval_fpclassify(a.backend()) == 0;
23866: }
23866:
23866: template <class Arithmetic>
23866: inline constexpr typename boost::enable_if_c<number_category<Arithmetic>::value != number_kind_floating_point, bool>::type is_unordered_value(const Arithmetic&)
23866: {
23866: return false;
23866: }
23866: template <class Arithmetic>
23866: inline
23866:
23866: constexpr
23866:
23866: typename boost::enable_if_c < number_category < Arithmetic> ::value == number_kind_floating_point, bool> ::type
23866: is_unordered_value(const Arithmetic& a)
23866: {
23866:
23866: if (__builtin_is_constant_evaluated())
23866: {
23866: return a != a;
23866: }
23866: else
23866:
23866: {
23866: return (boost::math::isnan)(a);
23866: }
23866: }
23866:
23866: template <class T, class U>
23866: inline constexpr bool is_unordered_comparison(const T& a, const U& b)
23866: {
23866: return is_unordered_value(a) || is_unordered_value(b);
23866: }
23866:
23866: }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates, class Backend2, expression_template_option ExpressionTemplates2>
23866: inline constexpr bool operator==(const number<Backend, ExpressionTemplates>& a, const number<Backend2, ExpressionTemplates2>& b)
23866: {
23866: using default_ops::eval_eq;
23866: if (detail::is_unordered_comparison(a, b))
23866: return false;
23866: return eval_eq(a.backend(), b.backend());
23866: }
23866: template <class Backend, expression_template_option ExpressionTemplates, class Arithmetic>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<number<Backend, ExpressionTemplates>, Arithmetic>::value, bool>::type
23866: operator==(const number<Backend, ExpressionTemplates>& a, const Arithmetic& b)
23866: {
23866: using default_ops::eval_eq;
23866: if (detail::is_unordered_comparison(a, b))
23866: return false;
23866: return eval_eq(a.backend(), number<Backend, ExpressionTemplates>::canonical_value(b));
23866: }
23866: template <class Arithmetic, class Backend, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<number<Backend, ExpressionTemplates>, Arithmetic>::value, bool>::type
23866: operator==(const Arithmetic& a, const number<Backend, ExpressionTemplates>& b)
23866: {
23866: using default_ops::eval_eq;
23866: if (detail::is_unordered_comparison(a, b))
23866: return false;
23866: return eval_eq(b.backend(), number<Backend, ExpressionTemplates>::canonical_value(a));
23866: }
23866: template <class Arithmetic, class Tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, Arithmetic>::value, bool>::type
23866: operator==(const Arithmetic& a, const detail::expression<Tag, A1, A2, A3, A4>& b)
23866: {
23866: typedef typename detail::expression<Tag, A1, A2, A3, A4>::result_type result_type;
23866: using default_ops::eval_eq;
23866: result_type t(b);
23866: if (detail::is_unordered_comparison(a, t))
23866: return false;
23866: return eval_eq(t.backend(), result_type::canonical_value(a));
23866: }
23866: template <class Tag, class A1, class A2, class A3, class A4, class Arithmetic>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, Arithmetic>::value, bool>::type
23866: operator==(const detail::expression<Tag, A1, A2, A3, A4>& a, const Arithmetic& b)
23866: {
23866: typedef typename detail::expression<Tag, A1, A2, A3, A4>::result_type result_type;
23866: using default_ops::eval_eq;
23866: result_type t(a);
23866: if (detail::is_unordered_comparison(t, b))
23866: return false;
23866: return eval_eq(t.backend(), result_type::canonical_value(b));
23866: }
23866: template <class Tag, class A1, class A2, class A3, class A4, class Tagb, class A1b, class A2b, class A3b, class A4b>
23866: inline constexpr typename enable_if<is_same<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, typename detail::expression<Tagb, A1b, A2b, A3b, A4b>::result_type>, bool>::type
23866: operator==(const detail::expression<Tag, A1, A2, A3, A4>& a, const detail::expression<Tagb, A1b, A2b, A3b, A4b>& b)
23866: {
23866: using default_ops::eval_eq;
23866: typename detail::expression<Tag, A1, A2, A3, A4>::result_type t(a);
23866: typename detail::expression<Tagb, A1b, A2b, A3b, A4b>::result_type t2(b);
23866: if (detail::is_unordered_comparison(t, t2))
23866: return false;
23866: return eval_eq(t.backend(), t2.backend());
23866: }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates, class Backend2, expression_template_option ExpressionTemplates2>
23866: inline constexpr bool operator!=(const number<Backend, ExpressionTemplates>& a, const number<Backend2, ExpressionTemplates2>& b)
23866: {
23866: using default_ops::eval_eq;
23866: if (detail::is_unordered_comparison(a, b))
23866: return true;
23866: return !eval_eq(a.backend(), b.backend());
23866: }
23866: template <class Backend, expression_template_option ExpressionTemplates, class Arithmetic>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<number<Backend, ExpressionTemplates>, Arithmetic>::value, bool>::type
23866: operator!=(const number<Backend, ExpressionTemplates>& a, const Arithmetic& b)
23866: {
23866: using default_ops::eval_eq;
23866: if (detail::is_unordered_comparison(a, b))
23866: return true;
23866: return !eval_eq(a.backend(), number<Backend, et_on>::canonical_value(b));
23866: }
23866: template <class Arithmetic, class Backend, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<number<Backend, ExpressionTemplates>, Arithmetic>::value, bool>::type
23866: operator!=(const Arithmetic& a, const number<Backend, ExpressionTemplates>& b)
23866: {
23866: using default_ops::eval_eq;
23866: if (detail::is_unordered_comparison(a, b))
23866: return true;
23866: return !eval_eq(b.backend(), number<Backend, et_on>::canonical_value(a));
23866: }
23866: template <class Arithmetic, class Tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, Arithmetic>::value, bool>::type
23866: operator!=(const Arithmetic& a, const detail::expression<Tag, A1, A2, A3, A4>& b)
23866: {
23866: typedef typename detail::expression<Tag, A1, A2, A3, A4>::result_type result_type;
23866: using default_ops::eval_eq;
23866: result_type t(b);
23866: if (detail::is_unordered_comparison(a, t))
23866: return true;
23866: return !eval_eq(t.backend(), result_type::canonical_value(a));
23866: }
23866: template <class Tag, class A1, class A2, class A3, class A4, class Arithmetic>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, Arithmetic>::value, bool>::type
23866: operator!=(const detail::expression<Tag, A1, A2, A3, A4>& a, const Arithmetic& b)
23866: {
23866: typedef typename detail::expression<Tag, A1, A2, A3, A4>::result_type result_type;
23866: using default_ops::eval_eq;
23866: result_type t(a);
23866: if (detail::is_unordered_comparison(t, b))
23866: return true;
23866: return !eval_eq(t.backend(), result_type::canonical_value(b));
23866: }
23866: template <class Tag, class A1, class A2, class A3, class A4, class Tagb, class A1b, class A2b, class A3b, class A4b>
23866: inline constexpr typename enable_if<is_same<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, typename detail::expression<Tagb, A1b, A2b, A3b, A4b>::result_type>, bool>::type
23866: operator!=(const detail::expression<Tag, A1, A2, A3, A4>& a, const detail::expression<Tagb, A1b, A2b, A3b, A4b>& b)
23866: {
23866: using default_ops::eval_eq;
23866: typename detail::expression<Tag, A1, A2, A3, A4>::result_type t(a);
23866: typename detail::expression<Tagb, A1b, A2b, A3b, A4b>::result_type t2(b);
23866: if (detail::is_unordered_comparison(t, t2))
23866: return true;
23866: return !eval_eq(t.backend(), t2.backend());
23866: }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates, class Backend2, expression_template_option ExpressionTemplates2>
23866: inline constexpr typename boost::enable_if_c<(number_category<Backend>::value != number_kind_complex) && (number_category<Backend2>::value != number_kind_complex), bool>::type
23866: operator<(const number<Backend, ExpressionTemplates>& a, const number<Backend2, ExpressionTemplates2>& b)
23866: {
23866: using default_ops::eval_lt;
23866: if (detail::is_unordered_comparison(a, b))
23866: return false;
23866: return eval_lt(a.backend(), b.backend());
23866: }
23866: template <class Backend, expression_template_option ExpressionTemplates, class Arithmetic>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<number<Backend, ExpressionTemplates>, Arithmetic>::value && (number_category<Backend>::value != number_kind_complex), bool>::type
23866: operator<(const number<Backend, ExpressionTemplates>& a, const Arithmetic& b)
23866: {
23866: using default_ops::eval_lt;
23866: if (detail::is_unordered_comparison(a, b))
23866: return false;
23866: return eval_lt(a.backend(), number<Backend, ExpressionTemplates>::canonical_value(b));
23866: }
23866: template <class Arithmetic, class Backend, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<number<Backend, ExpressionTemplates>, Arithmetic>::value && (number_category<Backend>::value != number_kind_complex), bool>::type
23866: operator<(const Arithmetic& a, const number<Backend, ExpressionTemplates>& b)
23866: {
23866: using default_ops::eval_gt;
23866: if (detail::is_unordered_comparison(a, b))
23866: return false;
23866: return eval_gt(b.backend(), number<Backend, ExpressionTemplates>::canonical_value(a));
23866: }
23866: template <class Arithmetic, class Tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, Arithmetic>::value && (number_category<typename detail::expression<Tag, A1, A2, A3, A4>::result_type>::value != number_kind_complex), bool>::type
23866: operator<(const Arithmetic& a, const detail::expression<Tag, A1, A2, A3, A4>& b)
23866: {
23866: typedef typename detail::expression<Tag, A1, A2, A3, A4>::result_type result_type;
23866: using default_ops::eval_gt;
23866: result_type t(b);
23866: if (detail::is_unordered_comparison(a, t))
23866: return false;
23866: return eval_gt(t.backend(), result_type::canonical_value(a));
23866: }
23866: template <class Tag, class A1, class A2, class A3, class A4, class Arithmetic>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, Arithmetic>::value && (number_category<typename detail::expression<Tag, A1, A2, A3, A4>::result_type>::value != number_kind_complex), bool>::type
23866: operator<(const detail::expression<Tag, A1, A2, A3, A4>& a, const Arithmetic& b)
23866: {
23866: typedef typename detail::expression<Tag, A1, A2, A3, A4>::result_type result_type;
23866: using default_ops::eval_lt;
23866: result_type t(a);
23866: if (detail::is_unordered_comparison(t, b))
23866: return false;
23866: return eval_lt(t.backend(), result_type::canonical_value(b));
23866: }
23866: template <class Tag, class A1, class A2, class A3, class A4, class Tagb, class A1b, class A2b, class A3b, class A4b>
23866: inline constexpr typename enable_if_c<is_same<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, typename detail::expression<Tagb, A1b, A2b, A3b, A4b>::result_type>::value && (number_category<typename detail::expression<Tag, A1, A2, A3, A4>::result_type>::value != number_kind_complex), bool>::type
23866: operator<(const detail::expression<Tag, A1, A2, A3, A4>& a, const detail::expression<Tagb, A1b, A2b, A3b, A4b>& b)
23866: {
23866: using default_ops::eval_lt;
23866: typename detail::expression<Tag, A1, A2, A3, A4>::result_type t(a);
23866: typename detail::expression<Tagb, A1b, A2b, A3b, A4b>::result_type t2(b);
23866: if (detail::is_unordered_comparison(t, t2))
23866: return false;
23866: return eval_lt(t.backend(), t2.backend());
23866: }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates, class Backend2, expression_template_option ExpressionTemplates2>
23866: inline constexpr typename boost::enable_if_c<(number_category<Backend>::value != number_kind_complex) && (number_category<Backend2>::value != number_kind_complex), bool>::type
23866: operator>(const number<Backend, ExpressionTemplates>& a, const number<Backend2, ExpressionTemplates2>& b)
23866: {
23866: using default_ops::eval_gt;
23866: if (detail::is_unordered_comparison(a, b))
23866: return false;
23866: return eval_gt(a.backend(), b.backend());
23866: }
23866: template <class Backend, expression_template_option ExpressionTemplates, class Arithmetic>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<number<Backend, ExpressionTemplates>, Arithmetic>::value && (number_category<Backend>::value != number_kind_complex), bool>::type
23866: operator>(const number<Backend, ExpressionTemplates>& a, const Arithmetic& b)
23866: {
23866: using default_ops::eval_gt;
23866: if (detail::is_unordered_comparison(a, b))
23866: return false;
23866: return eval_gt(a.backend(), number<Backend, ExpressionTemplates>::canonical_value(b));
23866: }
23866: template <class Arithmetic, class Backend, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<number<Backend, ExpressionTemplates>, Arithmetic>::value && (number_category<Backend>::value != number_kind_complex), bool>::type
23866: operator>(const Arithmetic& a, const number<Backend, ExpressionTemplates>& b)
23866: {
23866: using default_ops::eval_lt;
23866: if (detail::is_unordered_comparison(a, b))
23866: return false;
23866: return eval_lt(b.backend(), number<Backend, ExpressionTemplates>::canonical_value(a));
23866: }
23866: template <class Arithmetic, class Tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, Arithmetic>::value && (number_category<typename detail::expression<Tag, A1, A2, A3, A4>::result_type>::value != number_kind_complex), bool>::type
23866: operator>(const Arithmetic& a, const detail::expression<Tag, A1, A2, A3, A4>& b)
23866: {
23866: typedef typename detail::expression<Tag, A1, A2, A3, A4>::result_type result_type;
23866: using default_ops::eval_lt;
23866: result_type t(b);
23866: if (detail::is_unordered_comparison(a, t))
23866: return false;
23866: return a > t;
23866: }
23866: template <class Tag, class A1, class A2, class A3, class A4, class Arithmetic>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, Arithmetic>::value && (number_category<typename detail::expression<Tag, A1, A2, A3, A4>::result_type>::value != number_kind_complex), bool>::type
23866: operator>(const detail::expression<Tag, A1, A2, A3, A4>& a, const Arithmetic& b)
23866: {
23866: typedef typename detail::expression<Tag, A1, A2, A3, A4>::result_type result_type;
23866: using default_ops::eval_gt;
23866: result_type t(a);
23866: if (detail::is_unordered_comparison(t, b))
23866: return false;
23866: return t > b;
23866: }
23866: template <class Tag, class A1, class A2, class A3, class A4, class Tagb, class A1b, class A2b, class A3b, class A4b>
23866: inline constexpr typename enable_if_c<is_same<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, typename detail::expression<Tagb, A1b, A2b, A3b, A4b>::result_type>::value && (number_category<typename detail::expression<Tag, A1, A2, A3, A4>::result_type>::value != number_kind_complex), bool>::type
23866: operator>(const detail::expression<Tag, A1, A2, A3, A4>& a, const detail::expression<Tagb, A1b, A2b, A3b, A4b>& b)
23866: {
23866: using default_ops::eval_gt;
23866: typename detail::expression<Tag, A1, A2, A3, A4>::result_type t(a);
23866: typename detail::expression<Tagb, A1b, A2b, A3b, A4b>::result_type t2(b);
23866: if (detail::is_unordered_comparison(t, t2))
23866: return false;
23866: return t > t2;
23866: }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates, class Backend2, expression_template_option ExpressionTemplates2>
23866: inline constexpr typename boost::enable_if_c<(number_category<Backend>::value != number_kind_complex) && (number_category<Backend2>::value != number_kind_complex), bool>::type
23866: operator<=(const number<Backend, ExpressionTemplates>& a, const number<Backend2, ExpressionTemplates2>& b)
23866: {
23866: using default_ops::eval_gt;
23866: if (detail::is_unordered_comparison(a, b))
23866: return false;
23866: return !eval_gt(a.backend(), b.backend());
23866: }
23866: template <class Backend, expression_template_option ExpressionTemplates, class Arithmetic>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<number<Backend, ExpressionTemplates>, Arithmetic>::value && (number_category<Backend>::value != number_kind_complex), bool>::type
23866: operator<=(const number<Backend, ExpressionTemplates>& a, const Arithmetic& b)
23866: {
23866: using default_ops::eval_gt;
23866: if (detail::is_unordered_comparison(a, b))
23866: return false;
23866: return !eval_gt(a.backend(), number<Backend, ExpressionTemplates>::canonical_value(b));
23866: }
23866: template <class Arithmetic, class Backend, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<number<Backend, ExpressionTemplates>, Arithmetic>::value && (number_category<Backend>::value != number_kind_complex), bool>::type
23866: operator<=(const Arithmetic& a, const number<Backend, ExpressionTemplates>& b)
23866: {
23866: using default_ops::eval_lt;
23866: if (detail::is_unordered_comparison(a, b))
23866: return false;
23866: return !eval_lt(b.backend(), number<Backend, ExpressionTemplates>::canonical_value(a));
23866: }
23866: template <class Arithmetic, class Tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, Arithmetic>::value && (number_category<typename detail::expression<Tag, A1, A2, A3, A4>::result_type>::value != number_kind_complex), bool>::type
23866: operator<=(const Arithmetic& a, const detail::expression<Tag, A1, A2, A3, A4>& b)
23866: {
23866: typedef typename detail::expression<Tag, A1, A2, A3, A4>::result_type result_type;
23866: using default_ops::eval_lt;
23866: if (detail::is_unordered_value(a) || detail::is_unordered_value(b))
23866: return false;
23866: result_type t(b);
23866: if (detail::is_unordered_comparison(a, t))
23866: return false;
23866: return !eval_lt(t.backend(), result_type::canonical_value(a));
23866: }
23866: template <class Tag, class A1, class A2, class A3, class A4, class Arithmetic>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, Arithmetic>::value && (number_category<typename detail::expression<Tag, A1, A2, A3, A4>::result_type>::value != number_kind_complex), bool>::type
23866: operator<=(const detail::expression<Tag, A1, A2, A3, A4>& a, const Arithmetic& b)
23866: {
23866: typedef typename detail::expression<Tag, A1, A2, A3, A4>::result_type result_type;
23866: using default_ops::eval_gt;
23866: result_type t(a);
23866: if (detail::is_unordered_comparison(t, b))
23866: return false;
23866: return !eval_gt(t.backend(), result_type::canonical_value(b));
23866: }
23866: template <class Tag, class A1, class A2, class A3, class A4, class Tagb, class A1b, class A2b, class A3b, class A4b>
23866: inline constexpr typename enable_if_c<is_same<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, typename detail::expression<Tagb, A1b, A2b, A3b, A4b>::result_type>::value && (number_category<typename detail::expression<Tag, A1, A2, A3, A4>::result_type>::value != number_kind_complex), bool>::type
23866: operator<=(const detail::expression<Tag, A1, A2, A3, A4>& a, const detail::expression<Tagb, A1b, A2b, A3b, A4b>& b)
23866: {
23866: using default_ops::eval_gt;
23866: typename detail::expression<Tag, A1, A2, A3, A4>::result_type t(a);
23866: typename detail::expression<Tagb, A1b, A2b, A3b, A4b>::result_type t2(b);
23866: if (detail::is_unordered_comparison(t, t2))
23866: return false;
23866: return !eval_gt(t.backend(), t2.backend());
23866: }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates, class Backend2, expression_template_option ExpressionTemplates2>
23866: inline constexpr typename boost::enable_if_c<(number_category<Backend>::value != number_kind_complex) && (number_category<Backend2>::value != number_kind_complex), bool>::type
23866: operator>=(const number<Backend, ExpressionTemplates>& a, const number<Backend2, ExpressionTemplates2>& b)
23866: {
23866: using default_ops::eval_lt;
23866: if (detail::is_unordered_comparison(a, b))
23866: return false;
23866: return !eval_lt(a.backend(), b.backend());
23866: }
23866: template <class Backend, expression_template_option ExpressionTemplates, class Arithmetic>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<number<Backend, ExpressionTemplates>, Arithmetic>::value && (number_category<Backend>::value != number_kind_complex), bool>::type
23866: operator>=(const number<Backend, ExpressionTemplates>& a, const Arithmetic& b)
23866: {
23866: using default_ops::eval_lt;
23866: if (detail::is_unordered_comparison(a, b))
23866: return false;
23866: return !eval_lt(a.backend(), number<Backend, ExpressionTemplates>::canonical_value(b));
23866: }
23866: template <class Arithmetic, class Backend, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<number<Backend, ExpressionTemplates>, Arithmetic>::value && (number_category<Backend>::value != number_kind_complex), bool>::type
23866: operator>=(const Arithmetic& a, const number<Backend, ExpressionTemplates>& b)
23866: {
23866: using default_ops::eval_gt;
23866: if (detail::is_unordered_comparison(a, b))
23866: return false;
23866: return !eval_gt(b.backend(), number<Backend, ExpressionTemplates>::canonical_value(a));
23866: }
23866: template <class Arithmetic, class Tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, Arithmetic>::value && (number_category<typename detail::expression<Tag, A1, A2, A3, A4>::result_type>::value != number_kind_complex), bool>::type
23866: operator>=(const Arithmetic& a, const detail::expression<Tag, A1, A2, A3, A4>& b)
23866: {
23866: typedef typename detail::expression<Tag, A1, A2, A3, A4>::result_type result_type;
23866: using default_ops::eval_gt;
23866: result_type t(b);
23866: if (detail::is_unordered_comparison(a, t))
23866: return false;
23866: return !eval_gt(t.backend(), result_type::canonical_value(a));
23866: }
23866: template <class Tag, class A1, class A2, class A3, class A4, class Arithmetic>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, Arithmetic>::value && (number_category<typename detail::expression<Tag, A1, A2, A3, A4>::result_type>::value != number_kind_complex), bool>::type
23866: operator>=(const detail::expression<Tag, A1, A2, A3, A4>& a, const Arithmetic& b)
23866: {
23866: typedef typename detail::expression<Tag, A1, A2, A3, A4>::result_type result_type;
23866: using default_ops::eval_lt;
23866: result_type t(a);
23866: if (detail::is_unordered_comparison(t, b))
23866: return false;
23866: return !eval_lt(t.backend(), result_type::canonical_value(b));
23866: }
23866: template <class Tag, class A1, class A2, class A3, class A4, class Tagb, class A1b, class A2b, class A3b, class A4b>
23866: inline constexpr typename enable_if_c<is_same<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, typename detail::expression<Tagb, A1b, A2b, A3b, A4b>::result_type>::value && (number_category<typename detail::expression<Tag, A1, A2, A3, A4>::result_type>::value != number_kind_complex), bool>::type
23866: operator>=(const detail::expression<Tag, A1, A2, A3, A4>& a, const detail::expression<Tagb, A1b, A2b, A3b, A4b>& b)
23866: {
23866: using default_ops::eval_lt;
23866: typename detail::expression<Tag, A1, A2, A3, A4>::result_type t(a);
23866: typename detail::expression<Tagb, A1b, A2b, A3b, A4b>::result_type t2(b);
23866: if (detail::is_unordered_comparison(t, t2))
23866: return false;
23866: return !eval_lt(t.backend(), t2.backend());
23866: }
23866:
23866:
23866:
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates, class Backend2, expression_template_option ExpressionTemplates2>
23866: inline constexpr bool isgreater (const number<Backend, ExpressionTemplates>& a, const number<Backend2, ExpressionTemplates2>& b) { return a > b; }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates, class Arithmetic>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<number<Backend, ExpressionTemplates>, Arithmetic>::value, bool>::type
23866: isgreater
23866: (const number<Backend, ExpressionTemplates>& a, const Arithmetic& b) { return a > b; }
23866:
23866: template <class Arithmetic, class Backend, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<number<Backend, ExpressionTemplates>, Arithmetic>::value, bool>::type
23866: isgreater
23866: (const Arithmetic& a, const number<Backend, ExpressionTemplates>& b) { return a > b; }
23866:
23866: template <class Arithmetic, class Tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, Arithmetic>::value, bool>::type
23866: isgreater
23866: (const Arithmetic& a, const detail::expression<Tag, A1, A2, A3, A4>& b) { return a > b; }
23866:
23866: template <class Tag, class A1, class A2, class A3, class A4, class Arithmetic>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, Arithmetic>::value, bool>::type
23866: isgreater
23866: (const detail::expression<Tag, A1, A2, A3, A4>& a, const Arithmetic& b) { return a > b; }
23866:
23866: template <class Tag, class A1, class A2, class A3, class A4, class Tagb, class A1b, class A2b, class A3b, class A4b>
23866: inline constexpr typename enable_if<is_same<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, typename detail::expression<Tagb, A1b, A2b, A3b, A4b>::result_type>, bool>::type
23866: isgreater
23866: (const detail::expression<Tag, A1, A2, A3, A4>& a, const detail::expression<Tagb, A1b, A2b, A3b, A4b>& b) { return a > b; }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates, class Backend2, expression_template_option ExpressionTemplates2>
23866: inline constexpr bool isgreaterequal (const number<Backend, ExpressionTemplates>& a, const number<Backend2, ExpressionTemplates2>& b) { return a >= b; }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates, class Arithmetic>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<number<Backend, ExpressionTemplates>, Arithmetic>::value, bool>::type
23866: isgreaterequal
23866: (const number<Backend, ExpressionTemplates>& a, const Arithmetic& b) { return a >= b; }
23866:
23866: template <class Arithmetic, class Backend, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<number<Backend, ExpressionTemplates>, Arithmetic>::value, bool>::type
23866: isgreaterequal
23866: (const Arithmetic& a, const number<Backend, ExpressionTemplates>& b) { return a >= b; }
23866:
23866: template <class Arithmetic, class Tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, Arithmetic>::value, bool>::type
23866: isgreaterequal
23866: (const Arithmetic& a, const detail::expression<Tag, A1, A2, A3, A4>& b) { return a >= b; }
23866:
23866: template <class Tag, class A1, class A2, class A3, class A4, class Arithmetic>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, Arithmetic>::value, bool>::type
23866: isgreaterequal
23866: (const detail::expression<Tag, A1, A2, A3, A4>& a, const Arithmetic& b) { return a >= b; }
23866:
23866: template <class Tag, class A1, class A2, class A3, class A4, class Tagb, class A1b, class A2b, class A3b, class A4b>
23866: inline constexpr typename enable_if<is_same<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, typename detail::expression<Tagb, A1b, A2b, A3b, A4b>::result_type>, bool>::type
23866: isgreaterequal
23866: (const detail::expression<Tag, A1, A2, A3, A4>& a, const detail::expression<Tagb, A1b, A2b, A3b, A4b>& b) { return a >= b; }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates, class Backend2, expression_template_option ExpressionTemplates2>
23866: inline constexpr bool islessequal (const number<Backend, ExpressionTemplates>& a, const number<Backend2, ExpressionTemplates2>& b) { return a <= b; }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates, class Arithmetic>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<number<Backend, ExpressionTemplates>, Arithmetic>::value, bool>::type
23866: islessequal
23866: (const number<Backend, ExpressionTemplates>& a, const Arithmetic& b) { return a <= b; }
23866:
23866: template <class Arithmetic, class Backend, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<number<Backend, ExpressionTemplates>, Arithmetic>::value, bool>::type
23866: islessequal
23866: (const Arithmetic& a, const number<Backend, ExpressionTemplates>& b) { return a <= b; }
23866:
23866: template <class Arithmetic, class Tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, Arithmetic>::value, bool>::type
23866: islessequal
23866: (const Arithmetic& a, const detail::expression<Tag, A1, A2, A3, A4>& b) { return a <= b; }
23866:
23866: template <class Tag, class A1, class A2, class A3, class A4, class Arithmetic>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, Arithmetic>::value, bool>::type
23866: islessequal
23866: (const detail::expression<Tag, A1, A2, A3, A4>& a, const Arithmetic& b) { return a <= b; }
23866:
23866: template <class Tag, class A1, class A2, class A3, class A4, class Tagb, class A1b, class A2b, class A3b, class A4b>
23866: inline constexpr typename enable_if<is_same<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, typename detail::expression<Tagb, A1b, A2b, A3b, A4b>::result_type>, bool>::type
23866: islessequal
23866: (const detail::expression<Tag, A1, A2, A3, A4>& a, const detail::expression<Tagb, A1b, A2b, A3b, A4b>& b) { return a <= b; }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates, class Backend2, expression_template_option ExpressionTemplates2>
23866: inline constexpr bool isless (const number<Backend, ExpressionTemplates>& a, const number<Backend2, ExpressionTemplates2>& b) { return a < b; }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates, class Arithmetic>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<number<Backend, ExpressionTemplates>, Arithmetic>::value, bool>::type
23866: isless
23866: (const number<Backend, ExpressionTemplates>& a, const Arithmetic& b) { return a < b; }
23866:
23866: template <class Arithmetic, class Backend, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<number<Backend, ExpressionTemplates>, Arithmetic>::value, bool>::type
23866: isless
23866: (const Arithmetic& a, const number<Backend, ExpressionTemplates>& b) { return a < b; }
23866:
23866: template <class Arithmetic, class Tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, Arithmetic>::value, bool>::type
23866: isless
23866: (const Arithmetic& a, const detail::expression<Tag, A1, A2, A3, A4>& b) { return a < b; }
23866:
23866: template <class Tag, class A1, class A2, class A3, class A4, class Arithmetic>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, Arithmetic>::value, bool>::type
23866: isless
23866: (const detail::expression<Tag, A1, A2, A3, A4>& a, const Arithmetic& b) { return a < b; }
23866:
23866: template <class Tag, class A1, class A2, class A3, class A4, class Tagb, class A1b, class A2b, class A3b, class A4b>
23866: inline constexpr typename enable_if<is_same<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, typename detail::expression<Tagb, A1b, A2b, A3b, A4b>::result_type>, bool>::type
23866: isless
23866: (const detail::expression<Tag, A1, A2, A3, A4>& a, const detail::expression<Tagb, A1b, A2b, A3b, A4b>& b) { return a < b; }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates, class Backend2, expression_template_option ExpressionTemplates2>
23866: inline constexpr bool islessgreater (const number<Backend, ExpressionTemplates>& a, const number<Backend2, ExpressionTemplates2>& b)
23866: {
23866: if (detail::is_unordered_comparison(a, b))
23866: return false;
23866: return a != b;
23866: }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates, class Arithmetic>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<number<Backend, ExpressionTemplates>, Arithmetic>::value, bool>::type
23866: islessgreater
23866: (const number<Backend, ExpressionTemplates>& a, const Arithmetic& b)
23866: {
23866: if (detail::is_unordered_comparison(a, b))
23866: return false;
23866: return a != b;
23866: }
23866:
23866: template <class Arithmetic, class Backend, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<number<Backend, ExpressionTemplates>, Arithmetic>::value, bool>::type
23866: islessgreater
23866: (const Arithmetic& a, const number<Backend, ExpressionTemplates>& b)
23866: {
23866: if (detail::is_unordered_comparison(a, b))
23866: return false;
23866: return a != b;
23866: }
23866:
23866: template <class Arithmetic, class Tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, Arithmetic>::value, bool>::type
23866: islessgreater
23866: (const Arithmetic& a, const detail::expression<Tag, A1, A2, A3, A4>& bb)
23866: {
23866: typename detail::expression<Tag, A1, A2, A3, A4>::result_type b(bb);
23866: return islessgreater (a, b);
23866: }
23866:
23866: template <class Tag, class A1, class A2, class A3, class A4, class Arithmetic>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, Arithmetic>::value, bool>::type
23866: islessgreater
23866: (const detail::expression<Tag, A1, A2, A3, A4>& aa, const Arithmetic& b)
23866: {
23866: typename detail::expression<Tag, A1, A2, A3, A4>::result_type a(aa);
23866: return islessgreater (a, b);
23866: }
23866:
23866: template <class Tag, class A1, class A2, class A3, class A4, class Tagb, class A1b, class A2b, class A3b, class A4b>
23866: inline constexpr typename enable_if<is_same<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, typename detail::expression<Tagb, A1b, A2b, A3b, A4b>::result_type>, bool>::type
23866: islessgreater
23866: (const detail::expression<Tag, A1, A2, A3, A4>& aa, const detail::expression<Tagb, A1b, A2b, A3b, A4b>& bb)
23866: {
23866: typename detail::expression<Tag, A1, A2, A3, A4>::result_type a(aa);
23866: typename detail::expression<Tagb, A1b, A2b, A3b, A4b>::result_type b(bb);
23866: return islessgreater (a, b);
23866: }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates, class Backend2, expression_template_option ExpressionTemplates2>
23866: inline constexpr bool isunordered (const number<Backend, ExpressionTemplates>& a, const number<Backend2, ExpressionTemplates2>& b) { return detail::is_unordered_comparison(a, b); }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates, class Arithmetic>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<number<Backend, ExpressionTemplates>, Arithmetic>::value, bool>::type
23866: isunordered
23866: (const number<Backend, ExpressionTemplates>& a, const Arithmetic& b) { return detail::is_unordered_comparison(a, b); }
23866:
23866: template <class Arithmetic, class Backend, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<number<Backend, ExpressionTemplates>, Arithmetic>::value, bool>::type
23866: isunordered
23866: (const Arithmetic& a, const number<Backend, ExpressionTemplates>& b) { return detail::is_unordered_comparison(a, b); }
23866:
23866: template <class Arithmetic, class Tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, Arithmetic>::value, bool>::type
23866: isunordered
23866: (const Arithmetic& a, const detail::expression<Tag, A1, A2, A3, A4>& bb)
23866: {
23866: typename detail::expression<Tag, A1, A2, A3, A4>::result_type b(bb);
23866: return detail::is_unordered_comparison(a, b);
23866: }
23866:
23866: template <class Tag, class A1, class A2, class A3, class A4, class Arithmetic>
23866: inline constexpr typename enable_if_c<detail::is_valid_mixed_compare<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, Arithmetic>::value, bool>::type
23866: isunordered
23866: (const detail::expression<Tag, A1, A2, A3, A4>& aa, const Arithmetic& b)
23866: {
23866: typename detail::expression<Tag, A1, A2, A3, A4>::result_type a(aa);
23866: return detail::is_unordered_comparison(a, b);
23866: }
23866:
23866: template <class Tag, class A1, class A2, class A3, class A4, class Tagb, class A1b, class A2b, class A3b, class A4b>
23866: inline constexpr typename enable_if<is_same<typename detail::expression<Tag, A1, A2, A3, A4>::result_type, typename detail::expression<Tagb, A1b, A2b, A3b, A4b>::result_type>, bool>::type
23866: isunordered
23866: (const detail::expression<Tag, A1, A2, A3, A4>& aa, const detail::expression<Tagb, A1b, A2b, A3b, A4b>& bb)
23866: {
23866: typename detail::expression<Tag, A1, A2, A3, A4>::result_type a(aa);
23866: typename detail::expression<Tagb, A1b, A2b, A3b, A4b>::result_type b(bb);
23866: return detail::is_unordered_comparison(a, b);
23866: }
23866:
23866: }}
23866: # 28 "/usr/include/boost/multiprecision/number.hpp" 2 3 4
23866: # 1 "/usr/include/boost/multiprecision/traits/is_restricted_conversion.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MP_RESTRICTED_CONVERSION_HPP
23866:
23866: # 1 "/usr/include/boost/multiprecision/traits/explicit_conversion.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MP_EXPLICIT_CONVERTIBLE_HPP
23866: # 17 "/usr/include/boost/multiprecision/traits/explicit_conversion.hpp" 3 4
23866: namespace boost {
23866: namespace multiprecision {
23866: namespace detail {
23866:
23866: template <unsigned int N>
23866: struct dummy_size
23866: {};
23866:
23866: template <typename S, typename T>
23866: struct has_generic_interconversion
23866: {
23866: typedef typename boost::conditional<
23866: is_number<S>::value && is_number<T>::value,
23866: typename boost::conditional<
23866: number_category<S>::value == number_kind_integer,
23866: typename boost::conditional<
23866: number_category<T>::value == number_kind_integer || number_category<T>::value == number_kind_floating_point || number_category<T>::value == number_kind_rational || number_category<T>::value == number_kind_fixed_point,
23866: boost::true_type,
23866: boost::false_type>::type,
23866: typename boost::conditional<
23866: number_category<S>::value == number_kind_rational,
23866: typename boost::conditional<
23866: number_category<T>::value == number_kind_rational || number_category<T>::value == number_kind_rational,
23866: boost::true_type,
23866: boost::false_type>::type,
23866: typename boost::conditional<
23866: number_category<T>::value == number_kind_floating_point,
23866: boost::true_type,
23866: boost::false_type>::type>::type>::type,
23866: boost::false_type>::type type;
23866: };
23866:
23866: template <typename S, typename T>
23866: struct is_explicitly_convertible_imp
23866: {
23866:
23866: template <typename S1, typename T1>
23866: static type_traits::yes_type selector(dummy_size<sizeof(new T1(boost::declval<
23866:
23866: S1
23866:
23866:
23866:
23866: >()))>*);
23866:
23866: template <typename S1, typename T1>
23866: static type_traits::no_type selector(...);
23866:
23866: static const bool value = sizeof(selector<S, T>(0)) == sizeof(type_traits::yes_type);
23866:
23866: typedef boost::integral_constant<bool, value> type;
23866:
23866:
23866:
23866:
23866: };
23866:
23866: template <typename From, typename To>
23866: struct is_explicitly_convertible : public is_explicitly_convertible_imp<From, To>::type
23866: {
23866: };
23866: # 87 "/usr/include/boost/multiprecision/traits/explicit_conversion.hpp" 3 4
23866: }}}
23866: # 11 "/usr/include/boost/multiprecision/traits/is_restricted_conversion.hpp" 2 3 4
23866:
23866:
23866:
23866: namespace boost { namespace multiprecision { namespace detail {
23866:
23866: template <class From, class To>
23866: struct is_lossy_conversion
23866: {
23866: typedef typename mpl::if_c<
23866: ((number_category<From>::value == number_kind_floating_point) && (number_category<To>::value == number_kind_integer))
23866:
23866: || ((number_category<From>::value == number_kind_rational) && (number_category<To>::value == number_kind_integer)) || ((number_category<From>::value == number_kind_fixed_point) && (number_category<To>::value == number_kind_integer)) || (number_category<From>::value == number_kind_unknown) || (number_category<To>::value == number_kind_unknown),
23866: mpl::true_,
23866: mpl::false_>::type type;
23866: static const bool value = type::value;
23866: };
23866:
23866: template <typename From, typename To>
23866: struct is_restricted_conversion
23866: {
23866: typedef typename mpl::if_c<
23866: ((is_explicitly_convertible<From, To>::value && !is_convertible<From, To>::value) || is_lossy_conversion<From, To>::value),
23866: mpl::true_,
23866: mpl::false_>::type type;
23866: static const bool value = type::value;
23866: };
23866:
23866: }}}
23866: # 29 "/usr/include/boost/multiprecision/number.hpp" 2 3 4
23866: # 1 "/usr/include/boost/container_hash/hash.hpp" 1 3 4
23866: # 17 "/usr/include/boost/container_hash/hash.hpp" 3 4
23866: #define BOOST_FUNCTIONAL_HASH_HASH_HPP
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/container_hash/detail/hash_float.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTIONAL_HASH_DETAIL_HASH_FLOAT_HEADER
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/container_hash/detail/float_functions.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTIONAL_HASH_DETAIL_FLOAT_FUNCTIONS_HPP
23866:
23866:
23866:
23866:
23866: # 40 "/usr/include/boost/container_hash/detail/float_functions.hpp" 3 4
23866: #define BOOST_HASH_CONFORMANT_FLOATS 1
23866: # 76 "/usr/include/boost/container_hash/detail/float_functions.hpp" 3 4
23866: namespace boost {
23866: namespace hash_detail {
23866: template <typename Float>
23866: struct call_ldexp {
23866: typedef Float float_type;
23866: inline Float operator()(Float x, int y) const {
23866: return std::ldexp(x, y);
23866: }
23866: };
23866:
23866: template <typename Float>
23866: struct call_frexp {
23866: typedef Float float_type;
23866: inline Float operator()(Float x, int* y) const {
23866: return std::frexp(x, y);
23866: }
23866: };
23866:
23866: template <typename Float>
23866: struct select_hash_type
23866: {
23866: typedef Float type;
23866: };
23866: }
23866: }
23866: # 15 "/usr/include/boost/container_hash/detail/hash_float.hpp" 2 3 4
23866: # 1 "/usr/include/boost/container_hash/detail/limits.hpp" 1 3 4
23866: # 10 "/usr/include/boost/container_hash/detail/limits.hpp" 3 4
23866: #define BOOST_FUNCTIONAL_HASH_DETAIL_LIMITS_HEADER
23866:
23866:
23866:
23866:
23866: # 27 "/usr/include/boost/container_hash/detail/limits.hpp" 3 4
23866: namespace boost
23866: {
23866: namespace hash_detail
23866: {
23866: template <class T>
23866: struct limits : std::numeric_limits<T> {};
23866: # 59 "/usr/include/boost/container_hash/detail/limits.hpp" 3 4
23866: }
23866: }
23866: # 16 "/usr/include/boost/container_hash/detail/hash_float.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/integer/static_log2.hpp" 1 3 4
23866: # 17 "/usr/include/boost/integer/static_log2.hpp" 3 4
23866: #define BOOST_INTEGER_STATIC_LOG2_HPP
23866:
23866:
23866:
23866:
23866: namespace boost {
23866:
23866: namespace detail {
23866:
23866: namespace static_log2_impl {
23866: # 45 "/usr/include/boost/integer/static_log2.hpp" 3 4
23866: typedef boost::static_log2_argument_type argument_type;
23866: typedef boost::static_log2_result_type result_type;
23866:
23866: template <result_type n>
23866: struct choose_initial_n {
23866:
23866: static const bool c = (argument_type(1) << n << n) != 0;
23866: static const result_type value = !c*n + choose_initial_n<2*c*n>::value
23866:
23866:
23866: ;
23866:
23866: };
23866:
23866: template <>
23866: struct choose_initial_n<0> {
23866: static const result_type value = 0;
23866: };
23866:
23866:
23866:
23866:
23866: const result_type n_zero = 16;
23866: const result_type initial_n = choose_initial_n<n_zero>::value;
23866: # 85 "/usr/include/boost/integer/static_log2.hpp" 3 4
23866: template <argument_type x, result_type n = initial_n>
23866: struct static_log2_impl {
23866:
23866: static const bool c = (x >> n) > 0;
23866: static const result_type value = c*n + (static_log2_impl< (x>>c*n), n/2 >::value)
23866:
23866:
23866: ;
23866:
23866: };
23866:
23866: template <>
23866: struct static_log2_impl<1, 0> {
23866: static const result_type value = 0;
23866: };
23866:
23866: }
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <static_log2_argument_type x>
23866: struct static_log2 {
23866:
23866: static const static_log2_result_type value = detail::static_log2_impl::static_log2_impl<x>::value
23866:
23866:
23866: ;
23866:
23866: };
23866:
23866:
23866: template <>
23866: struct static_log2<0> { };
23866:
23866: }
23866: # 18 "/usr/include/boost/container_hash/detail/hash_float.hpp" 2 3 4
23866: # 1 "/usr/include/boost/cstdint.hpp" 1 3 4
23866: # 19 "/usr/include/boost/container_hash/detail/hash_float.hpp" 2 3 4
23866: # 1 "/usr/include/boost/assert.hpp" 1 3 4
23866: # 32 "/usr/include/boost/assert.hpp" 3 4
23866: #undef BOOST_ASSERT
23866: #undef BOOST_ASSERT_MSG
23866: #undef BOOST_ASSERT_IS_VOID
23866: # 58 "/usr/include/boost/assert.hpp" 3 4
23866: # 1 "/usr/include/assert.h" 1 3 4
23866: # 24 "/usr/include/assert.h" 3 4
23866: #undef _ASSERT_H
23866: #undef assert
23866: #undef __ASSERT_VOID_CAST
23866:
23866:
23866: #undef assert_perror
23866:
23866:
23866:
23866:
23866: #define _ASSERT_H 1
23866:
23866:
23866:
23866: #define __ASSERT_VOID_CAST static_cast<void>
23866: # 92 "/usr/include/assert.h" 3 4
23866: #define assert(expr) (static_cast <bool> (expr) ? void (0) : __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 117 "/usr/include/assert.h" 3 4
23866: #define assert_perror(errnum) (!(errnum) ? __ASSERT_VOID_CAST (0) : __assert_perror_fail ((errnum), __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 129 "/usr/include/assert.h" 3 4
23866: #define __ASSERT_FUNCTION __extension__ __PRETTY_FUNCTION__
23866: # 59 "/usr/include/boost/assert.hpp" 2 3 4
23866:
23866: #define BOOST_ASSERT(expr) assert(expr)
23866: #define BOOST_ASSERT_MSG(expr,msg) assert((expr)&&(msg))
23866: # 72 "/usr/include/boost/assert.hpp" 3 4
23866: #undef BOOST_VERIFY
23866: #undef BOOST_VERIFY_MSG
23866: # 82 "/usr/include/boost/assert.hpp" 3 4
23866: #define BOOST_VERIFY(expr) BOOST_ASSERT(expr)
23866: #define BOOST_VERIFY_MSG(expr,msg) BOOST_ASSERT_MSG(expr,msg)
23866: # 20 "/usr/include/boost/container_hash/detail/hash_float.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/c++/10/cstring" 1 3 4
23866: # 39 "/usr/include/c++/10/cstring" 3 4
23866:
23866: # 40 "/usr/include/c++/10/cstring" 3
23866: # 22 "/usr/include/boost/container_hash/detail/hash_float.hpp" 2 3 4
23866: # 41 "/usr/include/boost/container_hash/detail/hash_float.hpp" 3 4
23866: #define BOOST_HASH_USE_FPCLASSIFY 1
23866: # 51 "/usr/include/boost/container_hash/detail/hash_float.hpp" 3 4
23866: namespace boost
23866: {
23866: namespace hash_detail
23866: {
23866: inline void hash_float_combine(std::size_t& seed, std::size_t value)
23866: {
23866: seed ^= value + (seed<<6) + (seed>>2);
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline std::size_t hash_binary(char* ptr, std::size_t length)
23866: {
23866: std::size_t seed = 0;
23866:
23866: if (length >= sizeof(std::size_t)) {
23866: std::memcpy(&seed, ptr, sizeof(std::size_t));
23866: length -= sizeof(std::size_t);
23866: ptr += sizeof(std::size_t);
23866:
23866: while(length >= sizeof(std::size_t)) {
23866: std::size_t buffer = 0;
23866: std::memcpy(&buffer, ptr, sizeof(std::size_t));
23866: hash_float_combine(seed, buffer);
23866: length -= sizeof(std::size_t);
23866: ptr += sizeof(std::size_t);
23866: }
23866: }
23866:
23866: if (length > 0) {
23866: std::size_t buffer = 0;
23866: std::memcpy(&buffer, ptr, length);
23866: hash_float_combine(seed, buffer);
23866: }
23866:
23866: return seed;
23866: }
23866:
23866: template <typename Float, unsigned digits, unsigned max_exponent>
23866: struct enable_binary_hash
23866: {
23866: static const bool value = std::numeric_limits<Float>::is_iec559 && std::numeric_limits<Float>::digits == digits && std::numeric_limits<Float>::radix == 2 && std::numeric_limits<Float>::max_exponent == max_exponent
23866:
23866:
23866:
23866: ;
23866: };
23866:
23866: template <typename Float>
23866: inline std::size_t float_hash_impl(Float v,
23866: typename boost::enable_if_c<
23866: enable_binary_hash<Float, 24, 128>::value,
23866: std::size_t>::type)
23866: {
23866: return hash_binary((char*) &v, 4);
23866: }
23866:
23866:
23866: template <typename Float>
23866: inline std::size_t float_hash_impl(Float v,
23866: typename boost::enable_if_c<
23866: enable_binary_hash<Float, 53, 1024>::value,
23866: std::size_t>::type)
23866: {
23866: return hash_binary((char*) &v, 8);
23866: }
23866:
23866: template <typename Float>
23866: inline std::size_t float_hash_impl(Float v,
23866: typename boost::enable_if_c<
23866: enable_binary_hash<Float, 64, 16384>::value,
23866: std::size_t>::type)
23866: {
23866: return hash_binary((char*) &v, 10);
23866: }
23866:
23866: template <typename Float>
23866: inline std::size_t float_hash_impl(Float v,
23866: typename boost::enable_if_c<
23866: enable_binary_hash<Float, 113, 16384>::value,
23866: std::size_t>::type)
23866: {
23866: return hash_binary((char*) &v, 16);
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class T>
23866: inline std::size_t float_hash_impl2(T v)
23866: {
23866: boost::hash_detail::call_frexp<T> frexp;
23866: boost::hash_detail::call_ldexp<T> ldexp;
23866:
23866: int exp = 0;
23866:
23866: v = frexp(v, &exp);
23866:
23866:
23866:
23866: if(v < 0) {
23866: v = -v;
23866: exp += limits<T>::max_exponent -
23866: limits<T>::min_exponent;
23866: }
23866:
23866: v = ldexp(v, limits<std::size_t>::digits);
23866: std::size_t seed = static_cast<std::size_t>(v);
23866: v -= static_cast<T>(seed);
23866:
23866:
23866: std::size_t const length
23866: = (limits<T>::digits *
23866: boost::static_log2<limits<T>::radix>::value
23866: + limits<std::size_t>::digits - 1)
23866: / limits<std::size_t>::digits;
23866:
23866: for(std::size_t i = 0; i != length; ++i)
23866: {
23866: v = ldexp(v, limits<std::size_t>::digits);
23866: std::size_t part = static_cast<std::size_t>(v);
23866: v -= static_cast<T>(part);
23866: hash_float_combine(seed, part);
23866: }
23866:
23866: hash_float_combine(seed, static_cast<std::size_t>(exp));
23866:
23866: return seed;
23866: }
23866:
23866:
23866: template <class T>
23866: inline std::size_t float_hash_impl(T v, ...)
23866: {
23866: typedef typename select_hash_type<T>::type type;
23866: return float_hash_impl2(static_cast<type>(v));
23866: }
23866:
23866: }
23866: }
23866:
23866:
23866:
23866:
23866:
23866: namespace boost
23866: {
23866: namespace hash_detail
23866: {
23866: template <class T>
23866: inline std::size_t float_hash_value(T v)
23866: {
23866:
23866:
23866:
23866: switch (std::fpclassify(v))
23866:
23866:
23866:
23866:
23866: {
23866: case 2:
23866: return 0;
23866: case 1:
23866: return (std::size_t)(v > 0 ? -1 : -2);
23866: case 0:
23866: return (std::size_t)(-3);
23866: case 4:
23866: case 3:
23866: return float_hash_impl(v, 0);
23866: default:
23866: (static_cast <bool> (0) ? void (0) : __assert_fail ("0", "/usr/include/boost/container_hash/detail/hash_float.hpp", 228, __extension__ __PRETTY_FUNCTION__));
23866: return 0;
23866: }
23866: }
23866: }
23866: }
23866: # 265 "/usr/include/boost/container_hash/detail/hash_float.hpp" 3 4
23866: #undef BOOST_HASH_USE_FPCLASSIFY
23866: # 23 "/usr/include/boost/container_hash/hash.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/cstdint.hpp" 1 3 4
23866: # 29 "/usr/include/boost/container_hash/hash.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/typeindex" 1 3 4
23866: # 30 "/usr/include/c++/10/typeindex" 3 4
23866: #define _GLIBCXX_TYPEINDEX 1
23866:
23866:
23866: # 33 "/usr/include/c++/10/typeindex" 3
23866: # 43 "/usr/include/c++/10/typeindex" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: # 55 "/usr/include/c++/10/typeindex" 3
23866: struct type_index
23866: {
23866: type_index(const type_info& __rhs) noexcept
23866: : _M_target(&__rhs) { }
23866:
23866: bool
23866: operator==(const type_index& __rhs) const noexcept
23866: { return *_M_target == *__rhs._M_target; }
23866:
23866:
23866: bool
23866: operator!=(const type_index& __rhs) const noexcept
23866: { return *_M_target != *__rhs._M_target; }
23866:
23866:
23866: bool
23866: operator<(const type_index& __rhs) const noexcept
23866: { return _M_target->before(*__rhs._M_target); }
23866:
23866: bool
23866: operator<=(const type_index& __rhs) const noexcept
23866: { return !__rhs._M_target->before(*_M_target); }
23866:
23866: bool
23866: operator>(const type_index& __rhs) const noexcept
23866: { return __rhs._M_target->before(*_M_target); }
23866:
23866: bool
23866: operator>=(const type_index& __rhs) const noexcept
23866: { return !_M_target->before(*__rhs._M_target); }
23866: # 98 "/usr/include/c++/10/typeindex" 3
23866: size_t
23866: hash_code() const noexcept
23866: { return _M_target->hash_code(); }
23866:
23866: const char*
23866: name() const noexcept
23866: { return _M_target->name(); }
23866:
23866: private:
23866: const type_info* _M_target;
23866: };
23866:
23866: template<typename _Tp> struct hash;
23866:
23866:
23866: template<>
23866: struct hash<type_index>
23866: {
23866: typedef size_t result_type;
23866: typedef type_index argument_type;
23866:
23866: size_t
23866: operator()(const type_index& __ti) const noexcept
23866: { return __ti.hash_code(); }
23866: };
23866:
23866:
23866: }
23866: # 36 "/usr/include/boost/container_hash/hash.hpp" 2 3 4
23866: # 57 "/usr/include/boost/container_hash/hash.hpp" 3 4
23866: #define BOOST_HASH_CHAR_TRAITS char_traits
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_FUNCTIONAL_HASH_ROTL32(x,r) (x << r) | (x >> (32 - r))
23866: # 74 "/usr/include/boost/container_hash/hash.hpp" 3 4
23866: #define BOOST_HASH_CXX17 1
23866: # 84 "/usr/include/boost/container_hash/hash.hpp" 3 4
23866: #define BOOST_HASH_HAS_STRING_VIEW 1
23866:
23866:
23866: #define BOOST_HASH_HAS_OPTIONAL 1
23866:
23866:
23866: #define BOOST_HASH_HAS_VARIANT 1
23866: # 115 "/usr/include/boost/container_hash/hash.hpp" 3 4
23866: # 1 "/usr/include/c++/10/variant" 1 3 4
23866: # 30 "/usr/include/c++/10/variant" 3 4
23866: #define _GLIBCXX_VARIANT 1
23866:
23866:
23866: # 33 "/usr/include/c++/10/variant" 3
23866: # 52 "/usr/include/c++/10/variant" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866: namespace __detail
23866: {
23866: namespace __variant
23866: {
23866: template<size_t _Np, typename... _Types>
23866: struct _Nth_type;
23866:
23866: template<size_t _Np, typename _First, typename... _Rest>
23866: struct _Nth_type<_Np, _First, _Rest...>
23866: : _Nth_type<_Np-1, _Rest...> { };
23866:
23866: template<typename _First, typename... _Rest>
23866: struct _Nth_type<0, _First, _Rest...>
23866: { using type = _First; };
23866:
23866: }
23866: }
23866:
23866: #define __cpp_lib_variant 201606L
23866:
23866: template<typename... _Types> class tuple;
23866: template<typename... _Types> class variant;
23866: template <typename> struct hash;
23866:
23866: template<typename _Variant>
23866: struct variant_size;
23866:
23866: template<typename _Variant>
23866: struct variant_size<const _Variant> : variant_size<_Variant> {};
23866:
23866: template<typename _Variant>
23866: struct variant_size<volatile _Variant> : variant_size<_Variant> {};
23866:
23866: template<typename _Variant>
23866: struct variant_size<const volatile _Variant> : variant_size<_Variant> {};
23866:
23866: template<typename... _Types>
23866: struct variant_size<variant<_Types...>>
23866: : std::integral_constant<size_t, sizeof...(_Types)> {};
23866:
23866: template<typename _Variant>
23866: inline constexpr size_t variant_size_v = variant_size<_Variant>::value;
23866:
23866: template<size_t _Np, typename _Variant>
23866: struct variant_alternative;
23866:
23866: template<size_t _Np, typename _First, typename... _Rest>
23866: struct variant_alternative<_Np, variant<_First, _Rest...>>
23866: : variant_alternative<_Np-1, variant<_Rest...>> {};
23866:
23866: template<typename _First, typename... _Rest>
23866: struct variant_alternative<0, variant<_First, _Rest...>>
23866: { using type = _First; };
23866:
23866: template<size_t _Np, typename _Variant>
23866: using variant_alternative_t =
23866: typename variant_alternative<_Np, _Variant>::type;
23866:
23866: template<size_t _Np, typename _Variant>
23866: struct variant_alternative<_Np, const _Variant>
23866: { using type = add_const_t<variant_alternative_t<_Np, _Variant>>; };
23866:
23866: template<size_t _Np, typename _Variant>
23866: struct variant_alternative<_Np, volatile _Variant>
23866: { using type = add_volatile_t<variant_alternative_t<_Np, _Variant>>; };
23866:
23866: template<size_t _Np, typename _Variant>
23866: struct variant_alternative<_Np, const volatile _Variant>
23866: { using type = add_cv_t<variant_alternative_t<_Np, _Variant>>; };
23866:
23866: inline constexpr size_t variant_npos = -1;
23866:
23866: template<size_t _Np, typename... _Types>
23866: constexpr variant_alternative_t<_Np, variant<_Types...>>&
23866: get(variant<_Types...>&);
23866:
23866: template<size_t _Np, typename... _Types>
23866: constexpr variant_alternative_t<_Np, variant<_Types...>>&&
23866: get(variant<_Types...>&&);
23866:
23866: template<size_t _Np, typename... _Types>
23866: constexpr variant_alternative_t<_Np, variant<_Types...>> const&
23866: get(const variant<_Types...>&);
23866:
23866: template<size_t _Np, typename... _Types>
23866: constexpr variant_alternative_t<_Np, variant<_Types...>> const&&
23866: get(const variant<_Types...>&&);
23866:
23866: template<typename _Result_type, typename _Visitor, typename... _Variants>
23866: constexpr decltype(auto)
23866: __do_visit(_Visitor&& __visitor, _Variants&&... __variants);
23866:
23866: template <typename... _Types, typename _Tp>
23866: decltype(auto)
23866: __variant_cast(_Tp&& __rhs)
23866: {
23866: if constexpr (is_lvalue_reference_v<_Tp>)
23866: {
23866: if constexpr (is_const_v<remove_reference_t<_Tp>>)
23866: return static_cast<const variant<_Types...>&>(__rhs);
23866: else
23866: return static_cast<variant<_Types...>&>(__rhs);
23866: }
23866: else
23866: return static_cast<variant<_Types...>&&>(__rhs);
23866: }
23866:
23866: namespace __detail
23866: {
23866: namespace __variant
23866: {
23866:
23866:
23866: template<typename _Tp, typename... _Types>
23866: struct __index_of : std::integral_constant<size_t, 0> {};
23866:
23866: template<typename _Tp, typename... _Types>
23866: inline constexpr size_t __index_of_v = __index_of<_Tp, _Types...>::value;
23866:
23866: template<typename _Tp, typename _First, typename... _Rest>
23866: struct __index_of<_Tp, _First, _Rest...> :
23866: std::integral_constant<size_t, is_same_v<_Tp, _First>
23866: ? 0 : __index_of_v<_Tp, _Rest...> + 1> {};
23866:
23866:
23866: struct __variant_cookie {};
23866:
23866: struct __variant_idx_cookie { using type = __variant_idx_cookie; };
23866:
23866: template<typename> struct __deduce_visit_result { };
23866:
23866:
23866: template<typename _Visitor, typename... _Variants>
23866: constexpr void
23866: __raw_visit(_Visitor&& __visitor, _Variants&&... __variants)
23866: {
23866: std::__do_visit<__variant_cookie>(std::forward<_Visitor>(__visitor),
23866: std::forward<_Variants>(__variants)...);
23866: }
23866:
23866:
23866: template<typename _Visitor, typename... _Variants>
23866: constexpr void
23866: __raw_idx_visit(_Visitor&& __visitor, _Variants&&... __variants)
23866: {
23866: std::__do_visit<__variant_idx_cookie>(std::forward<_Visitor>(__visitor),
23866: std::forward<_Variants>(__variants)...);
23866: }
23866:
23866:
23866:
23866: template<typename _Type, bool = std::is_trivially_destructible_v<_Type>>
23866: struct _Uninitialized;
23866:
23866: template<typename _Type>
23866: struct _Uninitialized<_Type, true>
23866: {
23866: template<typename... _Args>
23866: constexpr
23866: _Uninitialized(in_place_index_t<0>, _Args&&... __args)
23866: : _M_storage(std::forward<_Args>(__args)...)
23866: { }
23866:
23866: constexpr const _Type& _M_get() const & noexcept
23866: { return _M_storage; }
23866:
23866: constexpr _Type& _M_get() & noexcept
23866: { return _M_storage; }
23866:
23866: constexpr const _Type&& _M_get() const && noexcept
23866: { return std::move(_M_storage); }
23866:
23866: constexpr _Type&& _M_get() && noexcept
23866: { return std::move(_M_storage); }
23866:
23866: _Type _M_storage;
23866: };
23866:
23866: template<typename _Type>
23866: struct _Uninitialized<_Type, false>
23866: {
23866: template<typename... _Args>
23866: constexpr
23866: _Uninitialized(in_place_index_t<0>, _Args&&... __args)
23866: {
23866: ::new ((void*)std::addressof(_M_storage))
23866: _Type(std::forward<_Args>(__args)...);
23866: }
23866:
23866: const _Type& _M_get() const & noexcept
23866: { return *_M_storage._M_ptr(); }
23866:
23866: _Type& _M_get() & noexcept
23866: { return *_M_storage._M_ptr(); }
23866:
23866: const _Type&& _M_get() const && noexcept
23866: { return std::move(*_M_storage._M_ptr()); }
23866:
23866: _Type&& _M_get() && noexcept
23866: { return std::move(*_M_storage._M_ptr()); }
23866:
23866: __gnu_cxx::__aligned_membuf<_Type> _M_storage;
23866: };
23866:
23866: template<typename _Union>
23866: constexpr decltype(auto)
23866: __get(in_place_index_t<0>, _Union&& __u) noexcept
23866: { return std::forward<_Union>(__u)._M_first._M_get(); }
23866:
23866: template<size_t _Np, typename _Union>
23866: constexpr decltype(auto)
23866: __get(in_place_index_t<_Np>, _Union&& __u) noexcept
23866: {
23866: return __variant::__get(in_place_index<_Np-1>,
23866: std::forward<_Union>(__u)._M_rest);
23866: }
23866:
23866:
23866: template<size_t _Np, typename _Variant>
23866: constexpr decltype(auto)
23866: __get(_Variant&& __v) noexcept
23866: {
23866: return __variant::__get(std::in_place_index<_Np>,
23866: std::forward<_Variant>(__v)._M_u);
23866: }
23866:
23866: template<typename... _Types>
23866: struct _Traits
23866: {
23866: static constexpr bool _S_default_ctor =
23866: is_default_constructible_v<typename _Nth_type<0, _Types...>::type>;
23866: static constexpr bool _S_copy_ctor =
23866: (is_copy_constructible_v<_Types> && ...);
23866: static constexpr bool _S_move_ctor =
23866: (is_move_constructible_v<_Types> && ...);
23866: static constexpr bool _S_copy_assign =
23866: _S_copy_ctor
23866: && (is_copy_assignable_v<_Types> && ...);
23866: static constexpr bool _S_move_assign =
23866: _S_move_ctor
23866: && (is_move_assignable_v<_Types> && ...);
23866:
23866: static constexpr bool _S_trivial_dtor =
23866: (is_trivially_destructible_v<_Types> && ...);
23866: static constexpr bool _S_trivial_copy_ctor =
23866: (is_trivially_copy_constructible_v<_Types> && ...);
23866: static constexpr bool _S_trivial_move_ctor =
23866: (is_trivially_move_constructible_v<_Types> && ...);
23866: static constexpr bool _S_trivial_copy_assign =
23866: _S_trivial_dtor && _S_trivial_copy_ctor
23866: && (is_trivially_copy_assignable_v<_Types> && ...);
23866: static constexpr bool _S_trivial_move_assign =
23866: _S_trivial_dtor && _S_trivial_move_ctor
23866: && (is_trivially_move_assignable_v<_Types> && ...);
23866:
23866:
23866:
23866: static constexpr bool _S_nothrow_default_ctor =
23866: is_nothrow_default_constructible_v<
23866: typename _Nth_type<0, _Types...>::type>;
23866: static constexpr bool _S_nothrow_copy_ctor = false;
23866: static constexpr bool _S_nothrow_move_ctor =
23866: (is_nothrow_move_constructible_v<_Types> && ...);
23866: static constexpr bool _S_nothrow_copy_assign = false;
23866: static constexpr bool _S_nothrow_move_assign =
23866: _S_nothrow_move_ctor
23866: && (is_nothrow_move_assignable_v<_Types> && ...);
23866: };
23866:
23866:
23866: template<typename... _Types>
23866: union _Variadic_union { };
23866:
23866: template<typename _First, typename... _Rest>
23866: union _Variadic_union<_First, _Rest...>
23866: {
23866: constexpr _Variadic_union() : _M_rest() { }
23866:
23866: template<typename... _Args>
23866: constexpr _Variadic_union(in_place_index_t<0>, _Args&&... __args)
23866: : _M_first(in_place_index<0>, std::forward<_Args>(__args)...)
23866: { }
23866:
23866: template<size_t _Np, typename... _Args>
23866: constexpr _Variadic_union(in_place_index_t<_Np>, _Args&&... __args)
23866: : _M_rest(in_place_index<_Np-1>, std::forward<_Args>(__args)...)
23866: { }
23866:
23866: _Uninitialized<_First> _M_first;
23866: _Variadic_union<_Rest...> _M_rest;
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Tp>
23866: struct _Never_valueless_alt
23866: : __and_<bool_constant<sizeof(_Tp) <= 256>, is_trivially_copyable<_Tp>>
23866: { };
23866: # 368 "/usr/include/c++/10/variant" 3
23866: template <typename... _Types>
23866: constexpr bool __never_valueless()
23866: {
23866: return _Traits<_Types...>::_S_move_assign
23866: && (_Never_valueless_alt<_Types>::value && ...);
23866: }
23866:
23866:
23866: template<bool __trivially_destructible, typename... _Types>
23866: struct _Variant_storage;
23866:
23866: template <typename... _Types>
23866: using __select_index =
23866: typename __select_int::_Select_int_base<sizeof...(_Types),
23866: unsigned char,
23866: unsigned short>::type::value_type;
23866:
23866: template<typename... _Types>
23866: struct _Variant_storage<false, _Types...>
23866: {
23866: constexpr
23866: _Variant_storage()
23866: : _M_index(static_cast<__index_type>(variant_npos))
23866: { }
23866:
23866: template<size_t _Np, typename... _Args>
23866: constexpr
23866: _Variant_storage(in_place_index_t<_Np>, _Args&&... __args)
23866: : _M_u(in_place_index<_Np>, std::forward<_Args>(__args)...),
23866: _M_index{_Np}
23866: { }
23866:
23866: void _M_reset()
23866: {
23866: if (!_M_valid()) [[unlikely]]
23866: return;
23866:
23866: std::__do_visit<void>([](auto&& __this_mem) mutable
23866: {
23866: std::_Destroy(std::__addressof(__this_mem));
23866: }, __variant_cast<_Types...>(*this));
23866:
23866: _M_index = static_cast<__index_type>(variant_npos);
23866: }
23866:
23866: ~_Variant_storage()
23866: { _M_reset(); }
23866:
23866: void*
23866: _M_storage() const noexcept
23866: {
23866: return const_cast<void*>(static_cast<const void*>(
23866: std::addressof(_M_u)));
23866: }
23866:
23866: constexpr bool
23866: _M_valid() const noexcept
23866: {
23866: if constexpr (__variant::__never_valueless<_Types...>())
23866: return true;
23866: return this->_M_index != __index_type(variant_npos);
23866: }
23866:
23866: _Variadic_union<_Types...> _M_u;
23866: using __index_type = __select_index<_Types...>;
23866: __index_type _M_index;
23866: };
23866:
23866: template<typename... _Types>
23866: struct _Variant_storage<true, _Types...>
23866: {
23866: constexpr
23866: _Variant_storage()
23866: : _M_index(static_cast<__index_type>(variant_npos))
23866: { }
23866:
23866: template<size_t _Np, typename... _Args>
23866: constexpr
23866: _Variant_storage(in_place_index_t<_Np>, _Args&&... __args)
23866: : _M_u(in_place_index<_Np>, std::forward<_Args>(__args)...),
23866: _M_index{_Np}
23866: { }
23866:
23866: void _M_reset() noexcept
23866: { _M_index = static_cast<__index_type>(variant_npos); }
23866:
23866: void*
23866: _M_storage() const noexcept
23866: {
23866: return const_cast<void*>(static_cast<const void*>(
23866: std::addressof(_M_u)));
23866: }
23866:
23866: constexpr bool
23866: _M_valid() const noexcept
23866: {
23866: if constexpr (__variant::__never_valueless<_Types...>())
23866: return true;
23866: return this->_M_index != static_cast<__index_type>(variant_npos);
23866: }
23866:
23866: _Variadic_union<_Types...> _M_u;
23866: using __index_type = __select_index<_Types...>;
23866: __index_type _M_index;
23866: };
23866:
23866: template<typename... _Types>
23866: using _Variant_storage_alias =
23866: _Variant_storage<_Traits<_Types...>::_S_trivial_dtor, _Types...>;
23866:
23866: template<typename _Tp, typename _Up>
23866: void __variant_construct_single(_Tp&& __lhs, _Up&& __rhs_mem)
23866: {
23866: void* __storage = std::addressof(__lhs._M_u);
23866: using _Type = remove_reference_t<decltype(__rhs_mem)>;
23866: if constexpr (!is_same_v<_Type, __variant_cookie>)
23866: ::new (__storage)
23866: _Type(std::forward<decltype(__rhs_mem)>(__rhs_mem));
23866: }
23866:
23866: template<typename... _Types, typename _Tp, typename _Up>
23866: void __variant_construct(_Tp&& __lhs, _Up&& __rhs)
23866: {
23866: __lhs._M_index = __rhs._M_index;
23866: __variant::__raw_visit([&__lhs](auto&& __rhs_mem) mutable
23866: {
23866: __variant_construct_single(std::forward<_Tp>(__lhs),
23866: std::forward<decltype(__rhs_mem)>(__rhs_mem));
23866: }, __variant_cast<_Types...>(std::forward<_Up>(__rhs)));
23866: }
23866:
23866:
23866:
23866:
23866: template<bool, typename... _Types>
23866: struct _Copy_ctor_base : _Variant_storage_alias<_Types...>
23866: {
23866: using _Base = _Variant_storage_alias<_Types...>;
23866: using _Base::_Base;
23866:
23866: _Copy_ctor_base(const _Copy_ctor_base& __rhs)
23866: noexcept(_Traits<_Types...>::_S_nothrow_copy_ctor)
23866: {
23866: __variant_construct<_Types...>(*this, __rhs);
23866: }
23866:
23866: _Copy_ctor_base(_Copy_ctor_base&&) = default;
23866: _Copy_ctor_base& operator=(const _Copy_ctor_base&) = default;
23866: _Copy_ctor_base& operator=(_Copy_ctor_base&&) = default;
23866: };
23866:
23866: template<typename... _Types>
23866: struct _Copy_ctor_base<true, _Types...> : _Variant_storage_alias<_Types...>
23866: {
23866: using _Base = _Variant_storage_alias<_Types...>;
23866: using _Base::_Base;
23866: };
23866:
23866: template<typename... _Types>
23866: using _Copy_ctor_alias =
23866: _Copy_ctor_base<_Traits<_Types...>::_S_trivial_copy_ctor, _Types...>;
23866:
23866: template<bool, typename... _Types>
23866: struct _Move_ctor_base : _Copy_ctor_alias<_Types...>
23866: {
23866: using _Base = _Copy_ctor_alias<_Types...>;
23866: using _Base::_Base;
23866:
23866: _Move_ctor_base(_Move_ctor_base&& __rhs)
23866: noexcept(_Traits<_Types...>::_S_nothrow_move_ctor)
23866: {
23866: __variant_construct<_Types...>(*this, std::move(__rhs));
23866: }
23866:
23866: template<typename _Up>
23866: void _M_destructive_move(unsigned short __rhs_index, _Up&& __rhs)
23866: {
23866: this->_M_reset();
23866: __variant_construct_single(*this, std::forward<_Up>(__rhs));
23866: this->_M_index = __rhs_index;
23866: }
23866:
23866: template<typename _Up>
23866: void _M_destructive_copy(unsigned short __rhs_index, const _Up& __rhs)
23866: {
23866: this->_M_reset();
23866: __variant_construct_single(*this, __rhs);
23866: this->_M_index = __rhs_index;
23866: }
23866:
23866: _Move_ctor_base(const _Move_ctor_base&) = default;
23866: _Move_ctor_base& operator=(const _Move_ctor_base&) = default;
23866: _Move_ctor_base& operator=(_Move_ctor_base&&) = default;
23866: };
23866:
23866: template<typename... _Types>
23866: struct _Move_ctor_base<true, _Types...> : _Copy_ctor_alias<_Types...>
23866: {
23866: using _Base = _Copy_ctor_alias<_Types...>;
23866: using _Base::_Base;
23866:
23866: template<typename _Up>
23866: void _M_destructive_move(unsigned short __rhs_index, _Up&& __rhs)
23866: {
23866: this->_M_reset();
23866: __variant_construct_single(*this, std::forward<_Up>(__rhs));
23866: this->_M_index = __rhs_index;
23866: }
23866:
23866: template<typename _Up>
23866: void _M_destructive_copy(unsigned short __rhs_index, const _Up& __rhs)
23866: {
23866: this->_M_reset();
23866: __variant_construct_single(*this, __rhs);
23866: this->_M_index = __rhs_index;
23866: }
23866: };
23866:
23866: template<typename... _Types>
23866: using _Move_ctor_alias =
23866: _Move_ctor_base<_Traits<_Types...>::_S_trivial_move_ctor, _Types...>;
23866:
23866: template<bool, typename... _Types>
23866: struct _Copy_assign_base : _Move_ctor_alias<_Types...>
23866: {
23866: using _Base = _Move_ctor_alias<_Types...>;
23866: using _Base::_Base;
23866:
23866: _Copy_assign_base&
23866: operator=(const _Copy_assign_base& __rhs)
23866: noexcept(_Traits<_Types...>::_S_nothrow_copy_assign)
23866: {
23866: __variant::__raw_idx_visit(
23866: [this](auto&& __rhs_mem, auto __rhs_index) mutable
23866: {
23866: if constexpr (__rhs_index != variant_npos)
23866: {
23866: if (this->_M_index == __rhs_index)
23866: __variant::__get<__rhs_index>(*this) = __rhs_mem;
23866: else
23866: {
23866: using __rhs_type = __remove_cvref_t<decltype(__rhs_mem)>;
23866: if constexpr (is_nothrow_copy_constructible_v<__rhs_type>
23866: || !is_nothrow_move_constructible_v<__rhs_type>)
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: this->_M_destructive_copy(__rhs_index, __rhs_mem);
23866: else
23866: __variant_cast<_Types...>(*this)
23866: = variant<_Types...>(std::in_place_index<__rhs_index>,
23866: __rhs_mem);
23866: }
23866: }
23866: else
23866: this->_M_reset();
23866: }, __variant_cast<_Types...>(__rhs));
23866: return *this;
23866: }
23866:
23866: _Copy_assign_base(const _Copy_assign_base&) = default;
23866: _Copy_assign_base(_Copy_assign_base&&) = default;
23866: _Copy_assign_base& operator=(_Copy_assign_base&&) = default;
23866: };
23866:
23866: template<typename... _Types>
23866: struct _Copy_assign_base<true, _Types...> : _Move_ctor_alias<_Types...>
23866: {
23866: using _Base = _Move_ctor_alias<_Types...>;
23866: using _Base::_Base;
23866: };
23866:
23866: template<typename... _Types>
23866: using _Copy_assign_alias =
23866: _Copy_assign_base<_Traits<_Types...>::_S_trivial_copy_assign, _Types...>;
23866:
23866: template<bool, typename... _Types>
23866: struct _Move_assign_base : _Copy_assign_alias<_Types...>
23866: {
23866: using _Base = _Copy_assign_alias<_Types...>;
23866: using _Base::_Base;
23866:
23866: _Move_assign_base&
23866: operator=(_Move_assign_base&& __rhs)
23866: noexcept(_Traits<_Types...>::_S_nothrow_move_assign)
23866: {
23866: __variant::__raw_idx_visit(
23866: [this](auto&& __rhs_mem, auto __rhs_index) mutable
23866: {
23866: if constexpr (__rhs_index != variant_npos)
23866: {
23866: if (this->_M_index == __rhs_index)
23866: __variant::__get<__rhs_index>(*this) = std::move(__rhs_mem);
23866: else
23866: __variant_cast<_Types...>(*this)
23866: .template emplace<__rhs_index>(std::move(__rhs_mem));
23866: }
23866: else
23866: this->_M_reset();
23866: }, __variant_cast<_Types...>(__rhs));
23866: return *this;
23866: }
23866:
23866: _Move_assign_base(const _Move_assign_base&) = default;
23866: _Move_assign_base(_Move_assign_base&&) = default;
23866: _Move_assign_base& operator=(const _Move_assign_base&) = default;
23866: };
23866:
23866: template<typename... _Types>
23866: struct _Move_assign_base<true, _Types...> : _Copy_assign_alias<_Types...>
23866: {
23866: using _Base = _Copy_assign_alias<_Types...>;
23866: using _Base::_Base;
23866: };
23866:
23866: template<typename... _Types>
23866: using _Move_assign_alias =
23866: _Move_assign_base<_Traits<_Types...>::_S_trivial_move_assign, _Types...>;
23866:
23866: template<typename... _Types>
23866: struct _Variant_base : _Move_assign_alias<_Types...>
23866: {
23866: using _Base = _Move_assign_alias<_Types...>;
23866:
23866: constexpr
23866: _Variant_base()
23866: noexcept(_Traits<_Types...>::_S_nothrow_default_ctor)
23866: : _Variant_base(in_place_index<0>) { }
23866:
23866: template<size_t _Np, typename... _Args>
23866: constexpr explicit
23866: _Variant_base(in_place_index_t<_Np> __i, _Args&&... __args)
23866: : _Base(__i, std::forward<_Args>(__args)...)
23866: { }
23866:
23866: _Variant_base(const _Variant_base&) = default;
23866: _Variant_base(_Variant_base&&) = default;
23866: _Variant_base& operator=(const _Variant_base&) = default;
23866: _Variant_base& operator=(_Variant_base&&) = default;
23866: };
23866:
23866:
23866: template<typename _Tp, typename _Tuple>
23866: struct __tuple_count;
23866:
23866: template<typename _Tp, typename _Tuple>
23866: inline constexpr size_t __tuple_count_v =
23866: __tuple_count<_Tp, _Tuple>::value;
23866:
23866: template<typename _Tp, typename... _Types>
23866: struct __tuple_count<_Tp, tuple<_Types...>>
23866: : integral_constant<size_t, 0> { };
23866:
23866: template<typename _Tp, typename _First, typename... _Rest>
23866: struct __tuple_count<_Tp, tuple<_First, _Rest...>>
23866: : integral_constant<
23866: size_t,
23866: __tuple_count_v<_Tp, tuple<_Rest...>> + is_same_v<_Tp, _First>> { };
23866:
23866:
23866: template<typename _Tp, typename... _Types>
23866: inline constexpr bool __exactly_once =
23866: __tuple_count_v<_Tp, tuple<_Types...>> == 1;
23866:
23866:
23866: template<typename _Ti> struct _Arr { _Ti _M_x[1]; };
23866:
23866:
23866: template<size_t _Ind, typename _Tp, typename _Ti,
23866: bool _Ti_is_cv_bool = is_same_v<remove_cv_t<_Ti>, bool>,
23866: typename = void>
23866: struct _Build_FUN
23866: {
23866:
23866:
23866: void _S_fun();
23866: };
23866:
23866:
23866: template<size_t _Ind, typename _Tp, typename _Ti>
23866: struct _Build_FUN<_Ind, _Tp, _Ti, false,
23866: void_t<decltype(_Arr<_Ti>{{std::declval<_Tp>()}})>>
23866: {
23866:
23866: static integral_constant<size_t, _Ind> _S_fun(_Ti);
23866: };
23866:
23866:
23866: template<size_t _Ind, typename _Tp, typename _Ti>
23866: struct _Build_FUN<_Ind, _Tp, _Ti, true,
23866: enable_if_t<is_same_v<__remove_cvref_t<_Tp>, bool>>>
23866: {
23866:
23866: static integral_constant<size_t, _Ind> _S_fun(_Ti);
23866: };
23866:
23866: template<typename _Tp, typename _Variant,
23866: typename = make_index_sequence<variant_size_v<_Variant>>>
23866: struct _Build_FUNs;
23866:
23866: template<typename _Tp, typename... _Ti, size_t... _Ind>
23866: struct _Build_FUNs<_Tp, variant<_Ti...>, index_sequence<_Ind...>>
23866: : _Build_FUN<_Ind, _Tp, _Ti>...
23866: {
23866: using _Build_FUN<_Ind, _Tp, _Ti>::_S_fun...;
23866: };
23866:
23866:
23866:
23866: template<typename _Tp, typename _Variant>
23866: using _FUN_type
23866: = decltype(_Build_FUNs<_Tp, _Variant>::_S_fun(std::declval<_Tp>()));
23866:
23866:
23866: template<typename _Tp, typename _Variant, typename = void>
23866: struct __accepted_index
23866: : integral_constant<size_t, variant_npos>
23866: { };
23866:
23866: template<typename _Tp, typename _Variant>
23866: struct __accepted_index<_Tp, _Variant, void_t<_FUN_type<_Tp, _Variant>>>
23866: : _FUN_type<_Tp, _Variant>
23866: { };
23866:
23866:
23866: template<typename _Variant>
23866: void* __get_storage(_Variant&& __v) noexcept
23866: { return __v._M_storage(); }
23866:
23866: template <typename _Maybe_variant_cookie, typename _Variant>
23866: struct _Extra_visit_slot_needed
23866: {
23866: template <typename> struct _Variant_never_valueless;
23866:
23866: template <typename... _Types>
23866: struct _Variant_never_valueless<variant<_Types...>>
23866: : bool_constant<__variant::__never_valueless<_Types...>()> {};
23866:
23866: static constexpr bool value =
23866: (is_same_v<_Maybe_variant_cookie, __variant_cookie>
23866: || is_same_v<_Maybe_variant_cookie, __variant_idx_cookie>)
23866: && !_Variant_never_valueless<__remove_cvref_t<_Variant>>::value;
23866: };
23866:
23866:
23866: template<typename _Tp, size_t... _Dimensions>
23866: struct _Multi_array;
23866:
23866:
23866: template<typename _Tp>
23866: struct _Multi_array<_Tp>
23866: {
23866: template<typename>
23866: struct __untag_result
23866: : false_type
23866: { using element_type = _Tp; };
23866:
23866: template <typename... _Args>
23866: struct __untag_result<const void(*)(_Args...)>
23866: : false_type
23866: { using element_type = void(*)(_Args...); };
23866:
23866: template <typename... _Args>
23866: struct __untag_result<__variant_cookie(*)(_Args...)>
23866: : false_type
23866: { using element_type = void(*)(_Args...); };
23866:
23866: template <typename... _Args>
23866: struct __untag_result<__variant_idx_cookie(*)(_Args...)>
23866: : false_type
23866: { using element_type = void(*)(_Args...); };
23866:
23866: template <typename _Res, typename... _Args>
23866: struct __untag_result<__deduce_visit_result<_Res>(*)(_Args...)>
23866: : true_type
23866: { using element_type = _Res(*)(_Args...); };
23866:
23866: using __result_is_deduced = __untag_result<_Tp>;
23866:
23866: constexpr const typename __untag_result<_Tp>::element_type&
23866: _M_access() const
23866: { return _M_data; }
23866:
23866: typename __untag_result<_Tp>::element_type _M_data;
23866: };
23866:
23866:
23866: template<typename _Ret,
23866: typename _Visitor,
23866: typename... _Variants,
23866: size_t __first, size_t... __rest>
23866: struct _Multi_array<_Ret(*)(_Visitor, _Variants...), __first, __rest...>
23866: {
23866: static constexpr size_t __index =
23866: sizeof...(_Variants) - sizeof...(__rest) - 1;
23866:
23866: using _Variant = typename _Nth_type<__index, _Variants...>::type;
23866:
23866: static constexpr int __do_cookie =
23866: _Extra_visit_slot_needed<_Ret, _Variant>::value ? 1 : 0;
23866:
23866: using _Tp = _Ret(*)(_Visitor, _Variants...);
23866:
23866: template<typename... _Args>
23866: constexpr decltype(auto)
23866: _M_access(size_t __first_index, _Args... __rest_indices) const
23866: {
23866: return _M_arr[__first_index + __do_cookie]
23866: ._M_access(__rest_indices...);
23866: }
23866:
23866: _Multi_array<_Tp, __rest...> _M_arr[__first + __do_cookie];
23866: };
23866: # 913 "/usr/include/c++/10/variant" 3
23866: template<typename _Array_type, typename _Index_seq>
23866: struct __gen_vtable_impl;
23866: # 923 "/usr/include/c++/10/variant" 3
23866: template<typename _Result_type, typename _Visitor, size_t... __dimensions,
23866: typename... _Variants, size_t... __indices>
23866: struct __gen_vtable_impl<
23866: _Multi_array<_Result_type (*)(_Visitor, _Variants...), __dimensions...>,
23866: std::index_sequence<__indices...>>
23866: {
23866: using _Next =
23866: remove_reference_t<typename _Nth_type<sizeof...(__indices),
23866: _Variants...>::type>;
23866: using _Array_type =
23866: _Multi_array<_Result_type (*)(_Visitor, _Variants...),
23866: __dimensions...>;
23866:
23866: static constexpr _Array_type
23866: _S_apply()
23866: {
23866: _Array_type __vtable{};
23866: _S_apply_all_alts(
23866: __vtable, make_index_sequence<variant_size_v<_Next>>());
23866: return __vtable;
23866: }
23866:
23866: template<size_t... __var_indices>
23866: static constexpr void
23866: _S_apply_all_alts(_Array_type& __vtable,
23866: std::index_sequence<__var_indices...>)
23866: {
23866: if constexpr (_Extra_visit_slot_needed<_Result_type, _Next>::value)
23866: (_S_apply_single_alt<true, __var_indices>(
23866: __vtable._M_arr[__var_indices + 1],
23866: &(__vtable._M_arr[0])), ...);
23866: else
23866: (_S_apply_single_alt<false, __var_indices>(
23866: __vtable._M_arr[__var_indices]), ...);
23866: }
23866:
23866: template<bool __do_cookie, size_t __index, typename _Tp>
23866: static constexpr void
23866: _S_apply_single_alt(_Tp& __element, _Tp* __cookie_element = nullptr)
23866: {
23866: if constexpr (__do_cookie)
23866: {
23866: __element = __gen_vtable_impl<
23866: _Tp,
23866: std::index_sequence<__indices..., __index>>::_S_apply();
23866: *__cookie_element = __gen_vtable_impl<
23866: _Tp,
23866: std::index_sequence<__indices..., variant_npos>>::_S_apply();
23866: }
23866: else
23866: {
23866: __element = __gen_vtable_impl<
23866: remove_reference_t<decltype(__element)>,
23866: std::index_sequence<__indices..., __index>>::_S_apply();
23866: }
23866: }
23866: };
23866:
23866:
23866:
23866:
23866: template<typename _Result_type, typename _Visitor, typename... _Variants,
23866: size_t... __indices>
23866: struct __gen_vtable_impl<
23866: _Multi_array<_Result_type (*)(_Visitor, _Variants...)>,
23866: std::index_sequence<__indices...>>
23866: {
23866: using _Array_type =
23866: _Multi_array<_Result_type (*)(_Visitor, _Variants...)>;
23866:
23866: template<size_t __index, typename _Variant>
23866: static constexpr decltype(auto)
23866: __element_by_index_or_cookie(_Variant&& __var) noexcept
23866: {
23866: if constexpr (__index != variant_npos)
23866: return __variant::__get<__index>(std::forward<_Variant>(__var));
23866: else
23866: return __variant_cookie{};
23866: }
23866:
23866: static constexpr decltype(auto)
23866: __visit_invoke(_Visitor&& __visitor, _Variants... __vars)
23866: {
23866: if constexpr (is_same_v<_Result_type, __variant_idx_cookie>)
23866:
23866:
23866: std::__invoke(std::forward<_Visitor>(__visitor),
23866: __element_by_index_or_cookie<__indices>(
23866: std::forward<_Variants>(__vars))...,
23866: integral_constant<size_t, __indices>()...);
23866: else if constexpr (is_same_v<_Result_type, __variant_cookie>)
23866:
23866: std::__invoke(std::forward<_Visitor>(__visitor),
23866: __element_by_index_or_cookie<__indices>(
23866: std::forward<_Variants>(__vars))...);
23866: else if constexpr (_Array_type::__result_is_deduced::value)
23866:
23866: return std::__invoke(std::forward<_Visitor>(__visitor),
23866: __element_by_index_or_cookie<__indices>(
23866: std::forward<_Variants>(__vars))...);
23866: else
23866: return std::__invoke_r<_Result_type>(
23866: std::forward<_Visitor>(__visitor),
23866: __variant::__get<__indices>(std::forward<_Variants>(__vars))...);
23866: }
23866:
23866: static constexpr auto
23866: _S_apply()
23866: { return _Array_type{&__visit_invoke}; }
23866: };
23866:
23866: template<typename _Result_type, typename _Visitor, typename... _Variants>
23866: struct __gen_vtable
23866: {
23866: using _Array_type =
23866: _Multi_array<_Result_type (*)(_Visitor, _Variants...),
23866: variant_size_v<remove_reference_t<_Variants>>...>;
23866:
23866: static constexpr _Array_type _S_vtable
23866: = __gen_vtable_impl<_Array_type, std::index_sequence<>>::_S_apply();
23866: };
23866:
23866: template<size_t _Np, typename _Tp>
23866: struct _Base_dedup : public _Tp { };
23866:
23866: template<typename _Variant, typename __indices>
23866: struct _Variant_hash_base;
23866:
23866: template<typename... _Types, size_t... __indices>
23866: struct _Variant_hash_base<variant<_Types...>,
23866: std::index_sequence<__indices...>>
23866: : _Base_dedup<__indices, __poison_hash<remove_const_t<_Types>>>... { };
23866:
23866: }
23866: }
23866:
23866: template<size_t _Np, typename _Variant, typename... _Args>
23866: void __variant_construct_by_index(_Variant& __v, _Args&&... __args)
23866: {
23866: __v._M_index = _Np;
23866: auto&& __storage = __detail::__variant::__get<_Np>(__v);
23866: ::new ((void*)std::addressof(__storage))
23866: remove_reference_t<decltype(__storage)>
23866: (std::forward<_Args>(__args)...);
23866: }
23866:
23866: template<typename _Tp, typename... _Types>
23866: constexpr bool
23866: holds_alternative(const variant<_Types...>& __v) noexcept
23866: {
23866: static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
23866: "T must occur exactly once in alternatives");
23866: return __v.index() == __detail::__variant::__index_of_v<_Tp, _Types...>;
23866: }
23866:
23866: template<typename _Tp, typename... _Types>
23866: constexpr _Tp& get(variant<_Types...>& __v)
23866: {
23866: static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
23866: "T must occur exactly once in alternatives");
23866: static_assert(!is_void_v<_Tp>, "_Tp must not be void");
23866: return std::get<__detail::__variant::__index_of_v<_Tp, _Types...>>(__v);
23866: }
23866:
23866: template<typename _Tp, typename... _Types>
23866: constexpr _Tp&& get(variant<_Types...>&& __v)
23866: {
23866: static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
23866: "T must occur exactly once in alternatives");
23866: static_assert(!is_void_v<_Tp>, "_Tp must not be void");
23866: return std::get<__detail::__variant::__index_of_v<_Tp, _Types...>>(
23866: std::move(__v));
23866: }
23866:
23866: template<typename _Tp, typename... _Types>
23866: constexpr const _Tp& get(const variant<_Types...>& __v)
23866: {
23866: static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
23866: "T must occur exactly once in alternatives");
23866: static_assert(!is_void_v<_Tp>, "_Tp must not be void");
23866: return std::get<__detail::__variant::__index_of_v<_Tp, _Types...>>(__v);
23866: }
23866:
23866: template<typename _Tp, typename... _Types>
23866: constexpr const _Tp&& get(const variant<_Types...>&& __v)
23866: {
23866: static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
23866: "T must occur exactly once in alternatives");
23866: static_assert(!is_void_v<_Tp>, "_Tp must not be void");
23866: return std::get<__detail::__variant::__index_of_v<_Tp, _Types...>>(
23866: std::move(__v));
23866: }
23866:
23866: template<size_t _Np, typename... _Types>
23866: constexpr add_pointer_t<variant_alternative_t<_Np, variant<_Types...>>>
23866: get_if(variant<_Types...>* __ptr) noexcept
23866: {
23866: using _Alternative_type = variant_alternative_t<_Np, variant<_Types...>>;
23866: static_assert(_Np < sizeof...(_Types),
23866: "The index must be in [0, number of alternatives)");
23866: static_assert(!is_void_v<_Alternative_type>, "_Tp must not be void");
23866: if (__ptr && __ptr->index() == _Np)
23866: return std::addressof(__detail::__variant::__get<_Np>(*__ptr));
23866: return nullptr;
23866: }
23866:
23866: template<size_t _Np, typename... _Types>
23866: constexpr
23866: add_pointer_t<const variant_alternative_t<_Np, variant<_Types...>>>
23866: get_if(const variant<_Types...>* __ptr) noexcept
23866: {
23866: using _Alternative_type = variant_alternative_t<_Np, variant<_Types...>>;
23866: static_assert(_Np < sizeof...(_Types),
23866: "The index must be in [0, number of alternatives)");
23866: static_assert(!is_void_v<_Alternative_type>, "_Tp must not be void");
23866: if (__ptr && __ptr->index() == _Np)
23866: return std::addressof(__detail::__variant::__get<_Np>(*__ptr));
23866: return nullptr;
23866: }
23866:
23866: template<typename _Tp, typename... _Types>
23866: constexpr add_pointer_t<_Tp>
23866: get_if(variant<_Types...>* __ptr) noexcept
23866: {
23866: static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
23866: "T must occur exactly once in alternatives");
23866: static_assert(!is_void_v<_Tp>, "_Tp must not be void");
23866: return std::get_if<__detail::__variant::__index_of_v<_Tp, _Types...>>(
23866: __ptr);
23866: }
23866:
23866: template<typename _Tp, typename... _Types>
23866: constexpr add_pointer_t<const _Tp>
23866: get_if(const variant<_Types...>* __ptr) noexcept
23866: {
23866: static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
23866: "T must occur exactly once in alternatives");
23866: static_assert(!is_void_v<_Tp>, "_Tp must not be void");
23866: return std::get_if<__detail::__variant::__index_of_v<_Tp, _Types...>>(
23866: __ptr);
23866: }
23866:
23866: struct monostate { };
23866:
23866: #define _VARIANT_RELATION_FUNCTION_TEMPLATE(__OP,__NAME) template<typename... _Types> constexpr bool operator __OP(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs) { bool __ret = true; __detail::__variant::__raw_idx_visit( [&__ret, &__lhs] (auto&& __rhs_mem, auto __rhs_index) mutable { if constexpr (__rhs_index != variant_npos) { if (__lhs.index() == __rhs_index) { auto& __this_mem = std::get<__rhs_index>(__lhs); __ret = __this_mem __OP __rhs_mem; } else __ret = (__lhs.index() + 1) __OP (__rhs_index + 1); } else __ret = (__lhs.index() + 1) __OP (__rhs_index + 1); }, __rhs); return __ret; }
23866: # 1192 "/usr/include/c++/10/variant" 3
23866: template<typename... _Types> constexpr bool operator <(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs) { bool __ret = true; __detail::__variant::__raw_idx_visit( [&__ret, &__lhs] (auto&& __rhs_mem, auto __rhs_index) mutable { if constexpr (__rhs_index != variant_npos) { if (__lhs.index() == __rhs_index) { auto& __this_mem = std::get<__rhs_index>(__lhs); __ret = __this_mem < __rhs_mem; } else __ret = (__lhs.index() + 1) < (__rhs_index + 1); } else __ret = (__lhs.index() + 1) < (__rhs_index + 1); }, __rhs); return __ret; }
23866: template<typename... _Types> constexpr bool operator <=(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs) { bool __ret = true; __detail::__variant::__raw_idx_visit( [&__ret, &__lhs] (auto&& __rhs_mem, auto __rhs_index) mutable { if constexpr (__rhs_index != variant_npos) { if (__lhs.index() == __rhs_index) { auto& __this_mem = std::get<__rhs_index>(__lhs); __ret = __this_mem <= __rhs_mem; } else __ret = (__lhs.index() + 1) <= (__rhs_index + 1); } else __ret = (__lhs.index() + 1) <= (__rhs_index + 1); }, __rhs); return __ret; }
23866: template<typename... _Types> constexpr bool operator ==(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs) { bool __ret = true; __detail::__variant::__raw_idx_visit( [&__ret, &__lhs] (auto&& __rhs_mem, auto __rhs_index) mutable { if constexpr (__rhs_index != variant_npos) { if (__lhs.index() == __rhs_index) { auto& __this_mem = std::get<__rhs_index>(__lhs); __ret = __this_mem == __rhs_mem; } else __ret = (__lhs.index() + 1) == (__rhs_index + 1); } else __ret = (__lhs.index() + 1) == (__rhs_index + 1); }, __rhs); return __ret; }
23866: template<typename... _Types> constexpr bool operator !=(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs) { bool __ret = true; __detail::__variant::__raw_idx_visit( [&__ret, &__lhs] (auto&& __rhs_mem, auto __rhs_index) mutable { if constexpr (__rhs_index != variant_npos) { if (__lhs.index() == __rhs_index) { auto& __this_mem = std::get<__rhs_index>(__lhs); __ret = __this_mem != __rhs_mem; } else __ret = (__lhs.index() + 1) != (__rhs_index + 1); } else __ret = (__lhs.index() + 1) != (__rhs_index + 1); }, __rhs); return __ret; }
23866: template<typename... _Types> constexpr bool operator >=(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs) { bool __ret = true; __detail::__variant::__raw_idx_visit( [&__ret, &__lhs] (auto&& __rhs_mem, auto __rhs_index) mutable { if constexpr (__rhs_index != variant_npos) { if (__lhs.index() == __rhs_index) { auto& __this_mem = std::get<__rhs_index>(__lhs); __ret = __this_mem >= __rhs_mem; } else __ret = (__lhs.index() + 1) >= (__rhs_index + 1); } else __ret = (__lhs.index() + 1) >= (__rhs_index + 1); }, __rhs); return __ret; }
23866: template<typename... _Types> constexpr bool operator >(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs) { bool __ret = true; __detail::__variant::__raw_idx_visit( [&__ret, &__lhs] (auto&& __rhs_mem, auto __rhs_index) mutable { if constexpr (__rhs_index != variant_npos) { if (__lhs.index() == __rhs_index) { auto& __this_mem = std::get<__rhs_index>(__lhs); __ret = __this_mem > __rhs_mem; } else __ret = (__lhs.index() + 1) > (__rhs_index + 1); } else __ret = (__lhs.index() + 1) > (__rhs_index + 1); }, __rhs); return __ret; }
23866:
23866: #undef _VARIANT_RELATION_FUNCTION_TEMPLATE
23866:
23866: constexpr bool operator==(monostate, monostate) noexcept { return true; }
23866: # 1233 "/usr/include/c++/10/variant" 3
23866: constexpr bool operator!=(monostate, monostate) noexcept { return false; }
23866: constexpr bool operator<(monostate, monostate) noexcept { return false; }
23866: constexpr bool operator>(monostate, monostate) noexcept { return false; }
23866: constexpr bool operator<=(monostate, monostate) noexcept { return true; }
23866: constexpr bool operator>=(monostate, monostate) noexcept { return true; }
23866:
23866:
23866: template<typename _Visitor, typename... _Variants>
23866: constexpr decltype(auto) visit(_Visitor&&, _Variants&&...);
23866:
23866: template<typename... _Types>
23866: inline enable_if_t<(is_move_constructible_v<_Types> && ...)
23866: && (is_swappable_v<_Types> && ...)>
23866: swap(variant<_Types...>& __lhs, variant<_Types...>& __rhs)
23866: noexcept(noexcept(__lhs.swap(__rhs)))
23866: { __lhs.swap(__rhs); }
23866:
23866: template<typename... _Types>
23866: enable_if_t<!((is_move_constructible_v<_Types> && ...)
23866: && (is_swappable_v<_Types> && ...))>
23866: swap(variant<_Types...>&, variant<_Types...>&) = delete;
23866:
23866: class bad_variant_access : public exception
23866: {
23866: public:
23866: bad_variant_access() noexcept { }
23866:
23866: const char* what() const noexcept override
23866: { return _M_reason; }
23866:
23866: private:
23866: bad_variant_access(const char* __reason) noexcept : _M_reason(__reason) { }
23866:
23866:
23866: const char* _M_reason = "bad variant access";
23866:
23866: friend void __throw_bad_variant_access(const char* __what);
23866: };
23866:
23866:
23866: inline void
23866: __throw_bad_variant_access(const char* __what)
23866: { (throw (bad_variant_access(__what))); }
23866:
23866: inline void
23866: __throw_bad_variant_access(bool __valueless)
23866: {
23866: if (__valueless) [[__unlikely__]]
23866: __throw_bad_variant_access("std::get: variant is valueless");
23866: else
23866: __throw_bad_variant_access("std::get: wrong index for variant");
23866: }
23866:
23866: template<typename... _Types>
23866: class variant
23866: : private __detail::__variant::_Variant_base<_Types...>,
23866: private _Enable_default_constructor<
23866: __detail::__variant::_Traits<_Types...>::_S_default_ctor,
23866: variant<_Types...>>,
23866: private _Enable_copy_move<
23866: __detail::__variant::_Traits<_Types...>::_S_copy_ctor,
23866: __detail::__variant::_Traits<_Types...>::_S_copy_assign,
23866: __detail::__variant::_Traits<_Types...>::_S_move_ctor,
23866: __detail::__variant::_Traits<_Types...>::_S_move_assign,
23866: variant<_Types...>>
23866: {
23866: private:
23866: template <typename... _UTypes, typename _Tp>
23866: friend decltype(auto) __variant_cast(_Tp&&);
23866: template<size_t _Np, typename _Variant, typename... _Args>
23866: friend void __variant_construct_by_index(_Variant& __v,
23866: _Args&&... __args);
23866:
23866: static_assert(sizeof...(_Types) > 0,
23866: "variant must have at least one alternative");
23866: static_assert(!(std::is_reference_v<_Types> || ...),
23866: "variant must have no reference alternative");
23866: static_assert(!(std::is_void_v<_Types> || ...),
23866: "variant must have no void alternative");
23866:
23866: using _Base = __detail::__variant::_Variant_base<_Types...>;
23866: using _Default_ctor_enabler =
23866: _Enable_default_constructor<
23866: __detail::__variant::_Traits<_Types...>::_S_default_ctor,
23866: variant<_Types...>>;
23866:
23866: template<typename _Tp>
23866: static constexpr bool __not_self
23866: = !is_same_v<__remove_cvref_t<_Tp>, variant>;
23866:
23866: template<typename _Tp>
23866: static constexpr bool
23866: __exactly_once = __detail::__variant::__exactly_once<_Tp, _Types...>;
23866:
23866: template<typename _Tp>
23866: static constexpr size_t __accepted_index
23866: = __detail::__variant::__accepted_index<_Tp, variant>::value;
23866:
23866: template<size_t _Np, typename = enable_if_t<(_Np < sizeof...(_Types))>>
23866: using __to_type = variant_alternative_t<_Np, variant>;
23866:
23866: template<typename _Tp, typename = enable_if_t<__not_self<_Tp>>>
23866: using __accepted_type = __to_type<__accepted_index<_Tp>>;
23866:
23866: template<typename _Tp>
23866: static constexpr size_t __index_of =
23866: __detail::__variant::__index_of_v<_Tp, _Types...>;
23866:
23866: using _Traits = __detail::__variant::_Traits<_Types...>;
23866:
23866: template<typename _Tp>
23866: struct __is_in_place_tag : false_type { };
23866: template<typename _Tp>
23866: struct __is_in_place_tag<in_place_type_t<_Tp>> : true_type { };
23866: template<size_t _Np>
23866: struct __is_in_place_tag<in_place_index_t<_Np>> : true_type { };
23866:
23866: template<typename _Tp>
23866: static constexpr bool __not_in_place_tag
23866: = !__is_in_place_tag<__remove_cvref_t<_Tp>>::value;
23866:
23866: public:
23866: variant() = default;
23866: variant(const variant& __rhs) = default;
23866: variant(variant&&) = default;
23866: variant& operator=(const variant&) = default;
23866: variant& operator=(variant&&) = default;
23866: ~variant() = default;
23866:
23866: template<typename _Tp,
23866: typename = enable_if_t<sizeof...(_Types) != 0>,
23866: typename = enable_if_t<__not_in_place_tag<_Tp>>,
23866: typename _Tj = __accepted_type<_Tp&&>,
23866: typename = enable_if_t<__exactly_once<_Tj>
23866: && is_constructible_v<_Tj, _Tp>>>
23866: constexpr
23866: variant(_Tp&& __t)
23866: noexcept(is_nothrow_constructible_v<_Tj, _Tp>)
23866: : variant(in_place_index<__accepted_index<_Tp>>,
23866: std::forward<_Tp>(__t))
23866: { }
23866:
23866: template<typename _Tp, typename... _Args,
23866: typename = enable_if_t<__exactly_once<_Tp>
23866: && is_constructible_v<_Tp, _Args...>>>
23866: constexpr explicit
23866: variant(in_place_type_t<_Tp>, _Args&&... __args)
23866: : variant(in_place_index<__index_of<_Tp>>,
23866: std::forward<_Args>(__args)...)
23866: { }
23866:
23866: template<typename _Tp, typename _Up, typename... _Args,
23866: typename = enable_if_t<__exactly_once<_Tp>
23866: && is_constructible_v<_Tp,
23866: initializer_list<_Up>&, _Args...>>>
23866: constexpr explicit
23866: variant(in_place_type_t<_Tp>, initializer_list<_Up> __il,
23866: _Args&&... __args)
23866: : variant(in_place_index<__index_of<_Tp>>, __il,
23866: std::forward<_Args>(__args)...)
23866: { }
23866:
23866: template<size_t _Np, typename... _Args,
23866: typename _Tp = __to_type<_Np>,
23866: typename = enable_if_t<is_constructible_v<_Tp, _Args...>>>
23866: constexpr explicit
23866: variant(in_place_index_t<_Np>, _Args&&... __args)
23866: : _Base(in_place_index<_Np>, std::forward<_Args>(__args)...),
23866: _Default_ctor_enabler(_Enable_default_constructor_tag{})
23866: { }
23866:
23866: template<size_t _Np, typename _Up, typename... _Args,
23866: typename _Tp = __to_type<_Np>,
23866: typename = enable_if_t<is_constructible_v<_Tp,
23866: initializer_list<_Up>&,
23866: _Args...>>>
23866: constexpr explicit
23866: variant(in_place_index_t<_Np>, initializer_list<_Up> __il,
23866: _Args&&... __args)
23866: : _Base(in_place_index<_Np>, __il, std::forward<_Args>(__args)...),
23866: _Default_ctor_enabler(_Enable_default_constructor_tag{})
23866: { }
23866:
23866: template<typename _Tp>
23866: enable_if_t<__exactly_once<__accepted_type<_Tp&&>>
23866: && is_constructible_v<__accepted_type<_Tp&&>, _Tp>
23866: && is_assignable_v<__accepted_type<_Tp&&>&, _Tp>,
23866: variant&>
23866: operator=(_Tp&& __rhs)
23866: noexcept(is_nothrow_assignable_v<__accepted_type<_Tp&&>&, _Tp>
23866: && is_nothrow_constructible_v<__accepted_type<_Tp&&>, _Tp>)
23866: {
23866: constexpr auto __index = __accepted_index<_Tp>;
23866: if (index() == __index)
23866: std::get<__index>(*this) = std::forward<_Tp>(__rhs);
23866: else
23866: {
23866: using _Tj = __accepted_type<_Tp&&>;
23866: if constexpr (is_nothrow_constructible_v<_Tj, _Tp>
23866: || !is_nothrow_move_constructible_v<_Tj>)
23866: this->emplace<__index>(std::forward<_Tp>(__rhs));
23866: else
23866: operator=(variant(std::forward<_Tp>(__rhs)));
23866: }
23866: return *this;
23866: }
23866:
23866: template<typename _Tp, typename... _Args>
23866: enable_if_t<is_constructible_v<_Tp, _Args...> && __exactly_once<_Tp>,
23866: _Tp&>
23866: emplace(_Args&&... __args)
23866: {
23866: constexpr size_t __index = __index_of<_Tp>;
23866: return this->emplace<__index>(std::forward<_Args>(__args)...);
23866: }
23866:
23866: template<typename _Tp, typename _Up, typename... _Args>
23866: enable_if_t<is_constructible_v<_Tp, initializer_list<_Up>&, _Args...>
23866: && __exactly_once<_Tp>,
23866: _Tp&>
23866: emplace(initializer_list<_Up> __il, _Args&&... __args)
23866: {
23866: constexpr size_t __index = __index_of<_Tp>;
23866: return this->emplace<__index>(__il, std::forward<_Args>(__args)...);
23866: }
23866:
23866: template<size_t _Np, typename... _Args>
23866: enable_if_t<is_constructible_v<variant_alternative_t<_Np, variant>,
23866: _Args...>,
23866: variant_alternative_t<_Np, variant>&>
23866: emplace(_Args&&... __args)
23866: {
23866: static_assert(_Np < sizeof...(_Types),
23866: "The index must be in [0, number of alternatives)");
23866: using type = variant_alternative_t<_Np, variant>;
23866:
23866:
23866: if constexpr (is_nothrow_constructible_v<type, _Args...>)
23866: {
23866: this->_M_reset();
23866: __variant_construct_by_index<_Np>(*this,
23866: std::forward<_Args>(__args)...);
23866: }
23866: else if constexpr (is_scalar_v<type>)
23866: {
23866:
23866: const type __tmp(std::forward<_Args>(__args)...);
23866:
23866: this->_M_reset();
23866: __variant_construct_by_index<_Np>(*this, __tmp);
23866: }
23866: else if constexpr (__detail::__variant::_Never_valueless_alt<type>()
23866: && _Traits::_S_move_assign)
23866: {
23866:
23866: variant __tmp(in_place_index<_Np>,
23866: std::forward<_Args>(__args)...);
23866:
23866: *this = std::move(__tmp);
23866: }
23866: else
23866: {
23866:
23866:
23866: this->_M_reset();
23866: try
23866: {
23866: __variant_construct_by_index<_Np>(*this,
23866: std::forward<_Args>(__args)...);
23866: }
23866: catch(...)
23866: {
23866: this->_M_index = variant_npos;
23866: throw;
23866: }
23866: }
23866: return std::get<_Np>(*this);
23866: }
23866:
23866: template<size_t _Np, typename _Up, typename... _Args>
23866: enable_if_t<is_constructible_v<variant_alternative_t<_Np, variant>,
23866: initializer_list<_Up>&, _Args...>,
23866: variant_alternative_t<_Np, variant>&>
23866: emplace(initializer_list<_Up> __il, _Args&&... __args)
23866: {
23866: static_assert(_Np < sizeof...(_Types),
23866: "The index must be in [0, number of alternatives)");
23866: using type = variant_alternative_t<_Np, variant>;
23866:
23866:
23866: if constexpr (is_nothrow_constructible_v<type,
23866: initializer_list<_Up>&,
23866: _Args...>)
23866: {
23866: this->_M_reset();
23866: __variant_construct_by_index<_Np>(*this, __il,
23866: std::forward<_Args>(__args)...);
23866: }
23866: else if constexpr (__detail::__variant::_Never_valueless_alt<type>()
23866: && _Traits::_S_move_assign)
23866: {
23866:
23866: variant __tmp(in_place_index<_Np>, __il,
23866: std::forward<_Args>(__args)...);
23866:
23866: *this = std::move(__tmp);
23866: }
23866: else
23866: {
23866:
23866:
23866: this->_M_reset();
23866: try
23866: {
23866: __variant_construct_by_index<_Np>(*this, __il,
23866: std::forward<_Args>(__args)...);
23866: }
23866: catch(...)
23866: {
23866: this->_M_index = variant_npos;
23866: throw;
23866: }
23866: }
23866: return std::get<_Np>(*this);
23866: }
23866:
23866: constexpr bool valueless_by_exception() const noexcept
23866: { return !this->_M_valid(); }
23866:
23866: constexpr size_t index() const noexcept
23866: {
23866: using __index_type = typename _Base::__index_type;
23866: if constexpr (__detail::__variant::__never_valueless<_Types...>())
23866: return this->_M_index;
23866: else if constexpr (sizeof...(_Types) <= __index_type(-1) / 2)
23866: return make_signed_t<__index_type>(this->_M_index);
23866: else
23866: return size_t(__index_type(this->_M_index + 1)) - 1;
23866: }
23866:
23866: void
23866: swap(variant& __rhs)
23866: noexcept((__is_nothrow_swappable<_Types>::value && ...)
23866: && is_nothrow_move_constructible_v<variant>)
23866: {
23866: __detail::__variant::__raw_idx_visit(
23866: [this, &__rhs](auto&& __rhs_mem, auto __rhs_index) mutable
23866: {
23866: if constexpr (__rhs_index != variant_npos)
23866: {
23866: if (this->index() == __rhs_index)
23866: {
23866: auto& __this_mem =
23866: std::get<__rhs_index>(*this);
23866: using std::swap;
23866: swap(__this_mem, __rhs_mem);
23866: }
23866: else
23866: {
23866: if (!this->valueless_by_exception()) [[__likely__]]
23866: {
23866: auto __tmp(std::move(__rhs_mem));
23866: __rhs = std::move(*this);
23866: this->_M_destructive_move(__rhs_index,
23866: std::move(__tmp));
23866: }
23866: else
23866: {
23866: this->_M_destructive_move(__rhs_index,
23866: std::move(__rhs_mem));
23866: __rhs._M_reset();
23866: }
23866: }
23866: }
23866: else
23866: {
23866: if (!this->valueless_by_exception()) [[__likely__]]
23866: {
23866: __rhs = std::move(*this);
23866: this->_M_reset();
23866: }
23866: }
23866: }, __rhs);
23866: }
23866:
23866: private:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<size_t _Np, typename _Vp>
23866: friend constexpr decltype(auto)
23866: __detail::__variant::__get(_Vp&& __v) noexcept;
23866:
23866: template<typename _Vp>
23866: friend void*
23866: __detail::__variant::__get_storage(_Vp&& __v) noexcept;
23866:
23866: #define _VARIANT_RELATION_FUNCTION_TEMPLATE(__OP) template<typename... _Tp> friend constexpr bool operator __OP(const variant<_Tp...>& __lhs, const variant<_Tp...>& __rhs);
23866:
23866:
23866:
23866:
23866:
23866: template<typename... _Tp> friend constexpr bool operator <(const variant<_Tp...>& __lhs, const variant<_Tp...>& __rhs);
23866: template<typename... _Tp> friend constexpr bool operator <=(const variant<_Tp...>& __lhs, const variant<_Tp...>& __rhs);
23866: template<typename... _Tp> friend constexpr bool operator ==(const variant<_Tp...>& __lhs, const variant<_Tp...>& __rhs);
23866: template<typename... _Tp> friend constexpr bool operator !=(const variant<_Tp...>& __lhs, const variant<_Tp...>& __rhs);
23866: template<typename... _Tp> friend constexpr bool operator >=(const variant<_Tp...>& __lhs, const variant<_Tp...>& __rhs);
23866: template<typename... _Tp> friend constexpr bool operator >(const variant<_Tp...>& __lhs, const variant<_Tp...>& __rhs);
23866:
23866: #undef _VARIANT_RELATION_FUNCTION_TEMPLATE
23866: };
23866:
23866: template<size_t _Np, typename... _Types>
23866: constexpr variant_alternative_t<_Np, variant<_Types...>>&
23866: get(variant<_Types...>& __v)
23866: {
23866: static_assert(_Np < sizeof...(_Types),
23866: "The index must be in [0, number of alternatives)");
23866: if (__v.index() != _Np)
23866: __throw_bad_variant_access(__v.valueless_by_exception());
23866: return __detail::__variant::__get<_Np>(__v);
23866: }
23866:
23866: template<size_t _Np, typename... _Types>
23866: constexpr variant_alternative_t<_Np, variant<_Types...>>&&
23866: get(variant<_Types...>&& __v)
23866: {
23866: static_assert(_Np < sizeof...(_Types),
23866: "The index must be in [0, number of alternatives)");
23866: if (__v.index() != _Np)
23866: __throw_bad_variant_access(__v.valueless_by_exception());
23866: return __detail::__variant::__get<_Np>(std::move(__v));
23866: }
23866:
23866: template<size_t _Np, typename... _Types>
23866: constexpr const variant_alternative_t<_Np, variant<_Types...>>&
23866: get(const variant<_Types...>& __v)
23866: {
23866: static_assert(_Np < sizeof...(_Types),
23866: "The index must be in [0, number of alternatives)");
23866: if (__v.index() != _Np)
23866: __throw_bad_variant_access(__v.valueless_by_exception());
23866: return __detail::__variant::__get<_Np>(__v);
23866: }
23866:
23866: template<size_t _Np, typename... _Types>
23866: constexpr const variant_alternative_t<_Np, variant<_Types...>>&&
23866: get(const variant<_Types...>&& __v)
23866: {
23866: static_assert(_Np < sizeof...(_Types),
23866: "The index must be in [0, number of alternatives)");
23866: if (__v.index() != _Np)
23866: __throw_bad_variant_access(__v.valueless_by_exception());
23866: return __detail::__variant::__get<_Np>(std::move(__v));
23866: }
23866:
23866: template<typename _Result_type, typename _Visitor, typename... _Variants>
23866: constexpr decltype(auto)
23866: __do_visit(_Visitor&& __visitor, _Variants&&... __variants)
23866: {
23866: constexpr auto& __vtable = __detail::__variant::__gen_vtable<
23866: _Result_type, _Visitor&&, _Variants&&...>::_S_vtable;
23866:
23866: auto __func_ptr = __vtable._M_access(__variants.index()...);
23866: return (*__func_ptr)(std::forward<_Visitor>(__visitor),
23866: std::forward<_Variants>(__variants)...);
23866: }
23866:
23866: template<typename _Visitor, typename... _Variants>
23866: constexpr decltype(auto)
23866: visit(_Visitor&& __visitor, _Variants&&... __variants)
23866: {
23866: if ((__variants.valueless_by_exception() || ...))
23866: __throw_bad_variant_access("std::visit: variant is valueless");
23866:
23866: using _Result_type = std::invoke_result_t<_Visitor,
23866: decltype(std::get<0>(std::declval<_Variants>()))...>;
23866:
23866: using _Tag = __detail::__variant::__deduce_visit_result<_Result_type>;
23866:
23866: return std::__do_visit<_Tag>(std::forward<_Visitor>(__visitor),
23866: std::forward<_Variants>(__variants)...);
23866: }
23866: # 1735 "/usr/include/c++/10/variant" 3
23866: template<bool, typename... _Types>
23866: struct __variant_hash_call_base_impl
23866: {
23866: size_t
23866: operator()(const variant<_Types...>& __t) const
23866: noexcept((is_nothrow_invocable_v<hash<decay_t<_Types>>, _Types> && ...))
23866: {
23866: size_t __ret;
23866: __detail::__variant::__raw_visit(
23866: [&__t, &__ret](auto&& __t_mem) mutable
23866: {
23866: using _Type = __remove_cvref_t<decltype(__t_mem)>;
23866: if constexpr (!is_same_v<_Type,
23866: __detail::__variant::__variant_cookie>)
23866: __ret = std::hash<size_t>{}(__t.index())
23866: + std::hash<_Type>{}(__t_mem);
23866: else
23866: __ret = std::hash<size_t>{}(__t.index());
23866: }, __t);
23866: return __ret;
23866: }
23866: };
23866:
23866: template<typename... _Types>
23866: struct __variant_hash_call_base_impl<false, _Types...> {};
23866:
23866: template<typename... _Types>
23866: using __variant_hash_call_base =
23866: __variant_hash_call_base_impl<(__poison_hash<remove_const_t<_Types>>::
23866: __enable_hash_call &&...), _Types...>;
23866:
23866: template<typename... _Types>
23866: struct hash<variant<_Types...>>
23866: : private __detail::__variant::_Variant_hash_base<
23866: variant<_Types...>, std::index_sequence_for<_Types...>>,
23866: public __variant_hash_call_base<_Types...>
23866: {
23866: using result_type [[__deprecated__]] = size_t;
23866: using argument_type [[__deprecated__]] = variant<_Types...>;
23866: };
23866:
23866: template<>
23866: struct hash<monostate>
23866: {
23866: using result_type [[__deprecated__]] = size_t;
23866: using argument_type [[__deprecated__]] = monostate;
23866:
23866: size_t
23866: operator()(const monostate&) const noexcept
23866: {
23866: constexpr size_t __magic_monostate_hash = -7777;
23866: return __magic_monostate_hash;
23866: }
23866: };
23866:
23866: template<typename... _Types>
23866: struct __is_fast_hash<hash<variant<_Types...>>>
23866: : bool_constant<(__is_fast_hash<_Types>::value && ...)>
23866: { };
23866:
23866:
23866: }
23866: # 116 "/usr/include/boost/container_hash/hash.hpp" 2 3 4
23866:
23866:
23866: namespace boost
23866: {
23866: namespace hash_detail
23866: {
23866: # 130 "/usr/include/boost/container_hash/hash.hpp" 3 4
23866: template <typename T>
23866: struct hash_base : std::unary_function<T, std::size_t> {};
23866:
23866:
23866: struct enable_hash_value { typedef std::size_t type; };
23866:
23866: template <typename T> struct basic_numbers {};
23866: template <typename T> struct long_numbers;
23866: template <typename T> struct ulong_numbers;
23866: template <typename T> struct float_numbers {};
23866:
23866: template <> struct basic_numbers<bool> :
23866: boost::hash_detail::enable_hash_value {};
23866: template <> struct basic_numbers<char> :
23866: boost::hash_detail::enable_hash_value {};
23866: template <> struct basic_numbers<unsigned char> :
23866: boost::hash_detail::enable_hash_value {};
23866: template <> struct basic_numbers<signed char> :
23866: boost::hash_detail::enable_hash_value {};
23866: template <> struct basic_numbers<short> :
23866: boost::hash_detail::enable_hash_value {};
23866: template <> struct basic_numbers<unsigned short> :
23866: boost::hash_detail::enable_hash_value {};
23866: template <> struct basic_numbers<int> :
23866: boost::hash_detail::enable_hash_value {};
23866: template <> struct basic_numbers<unsigned int> :
23866: boost::hash_detail::enable_hash_value {};
23866: template <> struct basic_numbers<long> :
23866: boost::hash_detail::enable_hash_value {};
23866: template <> struct basic_numbers<unsigned long> :
23866: boost::hash_detail::enable_hash_value {};
23866:
23866:
23866: template <> struct basic_numbers<wchar_t> :
23866: boost::hash_detail::enable_hash_value {};
23866:
23866:
23866:
23866: template <> struct basic_numbers<char16_t> :
23866: boost::hash_detail::enable_hash_value {};
23866:
23866:
23866:
23866: template <> struct basic_numbers<char32_t> :
23866: boost::hash_detail::enable_hash_value {};
23866:
23866:
23866:
23866:
23866:
23866: template <typename T> struct long_numbers2 {};
23866: template <typename T> struct ulong_numbers2 {};
23866: template <typename T> struct long_numbers : long_numbers2<T> {};
23866: template <typename T> struct ulong_numbers : ulong_numbers2<T> {};
23866:
23866:
23866: template <> struct long_numbers<boost::long_long_type> :
23866: boost::hash_detail::enable_hash_value {};
23866: template <> struct ulong_numbers<boost::ulong_long_type> :
23866: boost::hash_detail::enable_hash_value {};
23866: # 199 "/usr/include/boost/container_hash/hash.hpp" 3 4
23866: template <> struct float_numbers<float> :
23866: boost::hash_detail::enable_hash_value {};
23866: template <> struct float_numbers<double> :
23866: boost::hash_detail::enable_hash_value {};
23866: template <> struct float_numbers<long double> :
23866: boost::hash_detail::enable_hash_value {};
23866: }
23866:
23866: template <typename T>
23866: typename boost::hash_detail::basic_numbers<T>::type hash_value(T);
23866: template <typename T>
23866: typename boost::hash_detail::long_numbers<T>::type hash_value(T);
23866: template <typename T>
23866: typename boost::hash_detail::ulong_numbers<T>::type hash_value(T);
23866:
23866: template <typename T>
23866: typename boost::enable_if<boost::is_enum<T>, std::size_t>::type
23866: hash_value(T);
23866:
23866:
23866: template <class T> std::size_t hash_value(T* const&);
23866:
23866:
23866:
23866:
23866:
23866: template< class T, unsigned N >
23866: std::size_t hash_value(const T (&x)[N]);
23866:
23866: template< class T, unsigned N >
23866: std::size_t hash_value(T (&x)[N]);
23866:
23866:
23866: template <class Ch, class A>
23866: std::size_t hash_value(
23866: std::basic_string<Ch, std::char_traits<Ch>, A> const&);
23866:
23866:
23866: template <class Ch>
23866: std::size_t hash_value(
23866: std::basic_string_view<Ch, std::char_traits<Ch> > const&);
23866:
23866:
23866: template <typename T>
23866: typename boost::hash_detail::float_numbers<T>::type hash_value(T);
23866:
23866:
23866: template <typename T>
23866: std::size_t hash_value(std::optional<T> const&);
23866:
23866:
23866:
23866: std::size_t hash_value(std::monostate);
23866: template <typename... Types>
23866: std::size_t hash_value(std::variant<Types...> const&);
23866:
23866:
23866:
23866: std::size_t hash_value(std::type_index);
23866:
23866:
23866:
23866: std::size_t hash_value(std::error_code const&);
23866: std::size_t hash_value(std::error_condition const&);
23866:
23866:
23866:
23866:
23866: namespace hash_detail
23866: {
23866: template <class T>
23866: inline std::size_t hash_value_signed(T val)
23866: {
23866: const unsigned int size_t_bits = std::numeric_limits<std::size_t>::digits;
23866:
23866: const int length = (std::numeric_limits<T>::digits - 1)
23866: / static_cast<int>(size_t_bits);
23866:
23866: std::size_t seed = 0;
23866: T positive = val < 0 ? -1 - val : val;
23866:
23866:
23866: for(unsigned int i = length * size_t_bits; i > 0; i -= size_t_bits)
23866: {
23866: seed ^= (std::size_t) (positive >> i) + (seed<<6) + (seed>>2);
23866: }
23866: seed ^= (std::size_t) val + (seed<<6) + (seed>>2);
23866:
23866: return seed;
23866: }
23866:
23866: template <class T>
23866: inline std::size_t hash_value_unsigned(T val)
23866: {
23866: const unsigned int size_t_bits = std::numeric_limits<std::size_t>::digits;
23866:
23866: const int length = (std::numeric_limits<T>::digits - 1)
23866: / static_cast<int>(size_t_bits);
23866:
23866: std::size_t seed = 0;
23866:
23866:
23866: for(unsigned int i = length * size_t_bits; i > 0; i -= size_t_bits)
23866: {
23866: seed ^= (std::size_t) (val >> i) + (seed<<6) + (seed>>2);
23866: }
23866: seed ^= (std::size_t) val + (seed<<6) + (seed>>2);
23866:
23866: return seed;
23866: }
23866:
23866: template <typename SizeT>
23866: inline void hash_combine_impl(SizeT& seed, SizeT value)
23866: {
23866: seed ^= value + 0x9e3779b9 + (seed<<6) + (seed>>2);
23866: }
23866:
23866: inline void hash_combine_impl(boost::uint32_t& h1,
23866: boost::uint32_t k1)
23866: {
23866: const uint32_t c1 = 0xcc9e2d51;
23866: const uint32_t c2 = 0x1b873593;
23866:
23866: k1 *= c1;
23866: k1 = (k1 << 15) | (k1 >> (32 - 15));
23866: k1 *= c2;
23866:
23866: h1 ^= k1;
23866: h1 = (h1 << 13) | (h1 >> (32 - 13));
23866: h1 = h1*5+0xe6546b64;
23866: }
23866: # 356 "/usr/include/boost/container_hash/hash.hpp" 3 4
23866: }
23866:
23866: template <typename T>
23866: typename boost::hash_detail::basic_numbers<T>::type hash_value(T v)
23866: {
23866: return static_cast<std::size_t>(v);
23866: }
23866:
23866: template <typename T>
23866: typename boost::hash_detail::long_numbers<T>::type hash_value(T v)
23866: {
23866: return hash_detail::hash_value_signed(v);
23866: }
23866:
23866: template <typename T>
23866: typename boost::hash_detail::ulong_numbers<T>::type hash_value(T v)
23866: {
23866: return hash_detail::hash_value_unsigned(v);
23866: }
23866:
23866: template <typename T>
23866: typename boost::enable_if<boost::is_enum<T>, std::size_t>::type
23866: hash_value(T v)
23866: {
23866: return static_cast<std::size_t>(v);
23866: }
23866:
23866:
23866:
23866: template <class T> std::size_t hash_value(T* const& v)
23866:
23866:
23866:
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866: std::size_t x = static_cast<std::size_t>(
23866: reinterpret_cast<std::ptrdiff_t>(v));
23866:
23866: return x + (x >> 3);
23866: }
23866: # 412 "/usr/include/boost/container_hash/hash.hpp" 3 4
23866: template <class T>
23866: inline void hash_combine(std::size_t& seed, T const& v)
23866: {
23866: boost::hash<T> hasher;
23866: return boost::hash_detail::hash_combine_impl(seed, hasher(v));
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template <class It>
23866: inline std::size_t hash_range(It first, It last)
23866: {
23866: std::size_t seed = 0;
23866:
23866: for(; first != last; ++first)
23866: {
23866: hash_combine<typename std::iterator_traits<It>::value_type>(seed, *first);
23866: }
23866:
23866: return seed;
23866: }
23866:
23866: template <class It>
23866: inline void hash_range(std::size_t& seed, It first, It last)
23866: {
23866: for(; first != last; ++first)
23866: {
23866: hash_combine<typename std::iterator_traits<It>::value_type>(seed, *first);
23866: }
23866: }
23866: # 472 "/usr/include/boost/container_hash/hash.hpp" 3 4
23866: template< class T, unsigned N >
23866: inline std::size_t hash_value(const T (&x)[N])
23866: {
23866: return hash_range(x, x + N);
23866: }
23866:
23866: template< class T, unsigned N >
23866: inline std::size_t hash_value(T (&x)[N])
23866: {
23866: return hash_range(x, x + N);
23866: }
23866:
23866:
23866: template <class Ch, class A>
23866: inline std::size_t hash_value(
23866: std::basic_string<Ch, std::char_traits<Ch>, A> const& v)
23866: {
23866: return hash_range(v.begin(), v.end());
23866: }
23866:
23866:
23866: template <class Ch>
23866: inline std::size_t hash_value(
23866: std::basic_string_view<Ch, std::char_traits<Ch> > const& v)
23866: {
23866: return hash_range(v.begin(), v.end());
23866: }
23866:
23866:
23866: template <typename T>
23866: typename boost::hash_detail::float_numbers<T>::type hash_value(T v)
23866: {
23866: return boost::hash_detail::float_hash_value(v);
23866: }
23866:
23866:
23866: template <typename T>
23866: inline std::size_t hash_value(std::optional<T> const& v) {
23866: if (!v) {
23866:
23866: return 0x12345678;
23866: } else {
23866: boost::hash<T> hf;
23866: return hf(*v);
23866: }
23866: }
23866:
23866:
23866:
23866: inline std::size_t hash_value(std::monostate) {
23866: return 0x87654321;
23866: }
23866:
23866: template <typename... Types>
23866: inline std::size_t hash_value(std::variant<Types...> const& v) {
23866: std::size_t seed = 0;
23866: hash_combine(seed, v.index());
23866: std::visit([&seed](auto&& x) { hash_combine(seed, x); }, v);
23866: return seed;
23866: }
23866:
23866:
23866:
23866:
23866: inline std::size_t hash_value(std::type_index v)
23866: {
23866: return v.hash_code();
23866: }
23866:
23866:
23866:
23866: inline std::size_t hash_value(std::error_code const& v) {
23866: std::size_t seed = 0;
23866: hash_combine(seed, v.value());
23866: hash_combine(seed, &v.category());
23866: return seed;
23866: }
23866:
23866: inline std::size_t hash_value(std::error_condition const& v) {
23866: std::size_t seed = 0;
23866: hash_combine(seed, v.value());
23866: hash_combine(seed, &v.category());
23866: return seed;
23866: }
23866: # 574 "/usr/include/boost/container_hash/hash.hpp" 3 4
23866: #define BOOST_HASH_SPECIALIZE(type) template <> struct hash<type> : public boost::hash_detail::hash_base<type> { std::size_t operator()(type v) const { return boost::hash_value(v); } };
23866: # 584 "/usr/include/boost/container_hash/hash.hpp" 3 4
23866: #define BOOST_HASH_SPECIALIZE_REF(type) template <> struct hash<type> : public boost::hash_detail::hash_base<type> { std::size_t operator()(type const& v) const { return boost::hash_value(v); } };
23866: # 594 "/usr/include/boost/container_hash/hash.hpp" 3 4
23866: #define BOOST_HASH_SPECIALIZE_TEMPLATE_REF(type) struct hash<type> : public boost::hash_detail::hash_base<type> { std::size_t operator()(type const& v) const { return boost::hash_value(v); } };
23866: # 604 "/usr/include/boost/container_hash/hash.hpp" 3 4
23866: template <> struct hash<bool> : public boost::hash_detail::hash_base<bool> { std::size_t operator()(bool v) const { return boost::hash_value(v); } };
23866: template <> struct hash<char> : public boost::hash_detail::hash_base<char> { std::size_t operator()(char v) const { return boost::hash_value(v); } };
23866: template <> struct hash<signed char> : public boost::hash_detail::hash_base<signed char> { std::size_t operator()(signed char v) const { return boost::hash_value(v); } };
23866: template <> struct hash<unsigned char> : public boost::hash_detail::hash_base<unsigned char> { std::size_t operator()(unsigned char v) const { return boost::hash_value(v); } };
23866:
23866: template <> struct hash<wchar_t> : public boost::hash_detail::hash_base<wchar_t> { std::size_t operator()(wchar_t v) const { return boost::hash_value(v); } };
23866:
23866:
23866: template <> struct hash<char16_t> : public boost::hash_detail::hash_base<char16_t> { std::size_t operator()(char16_t v) const { return boost::hash_value(v); } };
23866:
23866:
23866: template <> struct hash<char32_t> : public boost::hash_detail::hash_base<char32_t> { std::size_t operator()(char32_t v) const { return boost::hash_value(v); } };
23866:
23866: template <> struct hash<short> : public boost::hash_detail::hash_base<short> { std::size_t operator()(short v) const { return boost::hash_value(v); } };
23866: template <> struct hash<unsigned short> : public boost::hash_detail::hash_base<unsigned short> { std::size_t operator()(unsigned short v) const { return boost::hash_value(v); } };
23866: template <> struct hash<int> : public boost::hash_detail::hash_base<int> { std::size_t operator()(int v) const { return boost::hash_value(v); } };
23866: template <> struct hash<unsigned int> : public boost::hash_detail::hash_base<unsigned int> { std::size_t operator()(unsigned int v) const { return boost::hash_value(v); } };
23866: template <> struct hash<long> : public boost::hash_detail::hash_base<long> { std::size_t operator()(long v) const { return boost::hash_value(v); } };
23866: template <> struct hash<unsigned long> : public boost::hash_detail::hash_base<unsigned long> { std::size_t operator()(unsigned long v) const { return boost::hash_value(v); } };
23866:
23866: template <> struct hash<float> : public boost::hash_detail::hash_base<float> { std::size_t operator()(float v) const { return boost::hash_value(v); } };
23866: template <> struct hash<double> : public boost::hash_detail::hash_base<double> { std::size_t operator()(double v) const { return boost::hash_value(v); } };
23866: template <> struct hash<long double> : public boost::hash_detail::hash_base<long double> { std::size_t operator()(long double v) const { return boost::hash_value(v); } };
23866:
23866: template <> struct hash<std::string> : public boost::hash_detail::hash_base<std::string> { std::size_t operator()(std::string const& v) const { return boost::hash_value(v); } };
23866:
23866: template <> struct hash<std::wstring> : public boost::hash_detail::hash_base<std::wstring> { std::size_t operator()(std::wstring const& v) const { return boost::hash_value(v); } };
23866:
23866:
23866: template <> struct hash<std::basic_string<char16_t> > : public boost::hash_detail::hash_base<std::basic_string<char16_t> > { std::size_t operator()(std::basic_string<char16_t> const& v) const { return boost::hash_value(v); } };
23866:
23866:
23866: template <> struct hash<std::basic_string<char32_t> > : public boost::hash_detail::hash_base<std::basic_string<char32_t> > { std::size_t operator()(std::basic_string<char32_t> const& v) const { return boost::hash_value(v); } };
23866:
23866:
23866:
23866: template <> struct hash<std::string_view> : public boost::hash_detail::hash_base<std::string_view> { std::size_t operator()(std::string_view const& v) const { return boost::hash_value(v); } };
23866:
23866: template <> struct hash<std::wstring_view> : public boost::hash_detail::hash_base<std::wstring_view> { std::size_t operator()(std::wstring_view const& v) const { return boost::hash_value(v); } };
23866:
23866:
23866: template <> struct hash<std::basic_string_view<char16_t> > : public boost::hash_detail::hash_base<std::basic_string_view<char16_t> > { std::size_t operator()(std::basic_string_view<char16_t> const& v) const { return boost::hash_value(v); } };
23866:
23866:
23866: template <> struct hash<std::basic_string_view<char32_t> > : public boost::hash_detail::hash_base<std::basic_string_view<char32_t> > { std::size_t operator()(std::basic_string_view<char32_t> const& v) const { return boost::hash_value(v); } };
23866:
23866:
23866:
23866:
23866: template <> struct hash<boost::long_long_type> : public boost::hash_detail::hash_base<boost::long_long_type> { std::size_t operator()(boost::long_long_type v) const { return boost::hash_value(v); } };
23866: template <> struct hash<boost::ulong_long_type> : public boost::hash_detail::hash_base<boost::ulong_long_type> { std::size_t operator()(boost::ulong_long_type v) const { return boost::hash_value(v); } };
23866: # 663 "/usr/include/boost/container_hash/hash.hpp" 3 4
23866: template <typename T>
23866: struct hash<std::optional<T> > : public boost::hash_detail::hash_base<std::optional<T> > { std::size_t operator()(std::optional<T> const& v) const { return boost::hash_value(v); } };
23866: # 674 "/usr/include/boost/container_hash/hash.hpp" 3 4
23866: template <> struct hash<std::type_index> : public boost::hash_detail::hash_base<std::type_index> { std::size_t operator()(std::type_index v) const { return boost::hash_value(v); } };
23866:
23866:
23866: #undef BOOST_HASH_SPECIALIZE
23866: #undef BOOST_HASH_SPECIALIZE_REF
23866: #undef BOOST_HASH_SPECIALIZE_TEMPLATE_REF
23866:
23866:
23866:
23866:
23866:
23866: template <class T>
23866: struct hash<T*>
23866: : public boost::hash_detail::hash_base<T*>
23866: {
23866: std::size_t operator()(T* v) const
23866: {
23866:
23866: return boost::hash_value(v);
23866:
23866:
23866:
23866:
23866:
23866:
23866: }
23866: };
23866: # 744 "/usr/include/boost/container_hash/hash.hpp" 3 4
23866: }
23866:
23866: #undef BOOST_HASH_CHAR_TRAITS
23866: #undef BOOST_FUNCTIONAL_HASH_ROTL32
23866: # 761 "/usr/include/boost/container_hash/hash.hpp" 3 4
23866: # 1 "/usr/include/boost/container_hash/extensions.hpp" 1 3 4
23866: # 14 "/usr/include/boost/container_hash/extensions.hpp" 3 4
23866: #define BOOST_FUNCTIONAL_HASH_EXTENSIONS_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/container_hash/hash.hpp" 1 3 4
23866: # 22 "/usr/include/boost/container_hash/extensions.hpp" 2 3 4
23866: # 1 "/usr/include/boost/detail/container_fwd.hpp" 1 3 4
23866: # 9 "/usr/include/boost/detail/container_fwd.hpp" 3 4
23866: #define BOOST_DETAIL_CONTAINER_FWD_HPP
23866: # 55 "/usr/include/boost/detail/container_fwd.hpp" 3 4
23866: #define BOOST_DETAIL_NO_CONTAINER_FWD
23866: # 94 "/usr/include/boost/detail/container_fwd.hpp" 3 4
23866: # 1 "/usr/include/c++/10/map" 1 3 4
23866: # 56 "/usr/include/c++/10/map" 3 4
23866: #define _GLIBCXX_MAP 1
23866:
23866:
23866: # 59 "/usr/include/c++/10/map" 3
23866:
23866: # 1 "/usr/include/c++/10/bits/stl_tree.h" 1 3
23866: # 59 "/usr/include/c++/10/bits/stl_tree.h" 3
23866: #define _STL_TREE_H 1
23866:
23866:
23866: # 62 "/usr/include/c++/10/bits/stl_tree.h" 3
23866: # 75 "/usr/include/c++/10/bits/stl_tree.h" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: #define __cpp_lib_generic_associative_lookup 201304
23866: # 99 "/usr/include/c++/10/bits/stl_tree.h" 3
23866: enum _Rb_tree_color { _S_red = false, _S_black = true };
23866:
23866: struct _Rb_tree_node_base
23866: {
23866: typedef _Rb_tree_node_base* _Base_ptr;
23866: typedef const _Rb_tree_node_base* _Const_Base_ptr;
23866:
23866: _Rb_tree_color _M_color;
23866: _Base_ptr _M_parent;
23866: _Base_ptr _M_left;
23866: _Base_ptr _M_right;
23866:
23866: static _Base_ptr
23866: _S_minimum(_Base_ptr __x) noexcept
23866: {
23866: while (__x->_M_left != 0) __x = __x->_M_left;
23866: return __x;
23866: }
23866:
23866: static _Const_Base_ptr
23866: _S_minimum(_Const_Base_ptr __x) noexcept
23866: {
23866: while (__x->_M_left != 0) __x = __x->_M_left;
23866: return __x;
23866: }
23866:
23866: static _Base_ptr
23866: _S_maximum(_Base_ptr __x) noexcept
23866: {
23866: while (__x->_M_right != 0) __x = __x->_M_right;
23866: return __x;
23866: }
23866:
23866: static _Const_Base_ptr
23866: _S_maximum(_Const_Base_ptr __x) noexcept
23866: {
23866: while (__x->_M_right != 0) __x = __x->_M_right;
23866: return __x;
23866: }
23866: };
23866:
23866:
23866: template<typename _Key_compare>
23866: struct _Rb_tree_key_compare
23866: {
23866: _Key_compare _M_key_compare;
23866:
23866: _Rb_tree_key_compare()
23866: noexcept(is_nothrow_default_constructible<_Key_compare>::value)
23866:
23866: : _M_key_compare()
23866: { }
23866:
23866: _Rb_tree_key_compare(const _Key_compare& __comp)
23866: : _M_key_compare(__comp)
23866: { }
23866:
23866:
23866:
23866: _Rb_tree_key_compare(const _Rb_tree_key_compare&) = default;
23866:
23866: _Rb_tree_key_compare(_Rb_tree_key_compare&& __x)
23866: noexcept(is_nothrow_copy_constructible<_Key_compare>::value)
23866: : _M_key_compare(__x._M_key_compare)
23866: { }
23866:
23866: };
23866:
23866:
23866: struct _Rb_tree_header
23866: {
23866: _Rb_tree_node_base _M_header;
23866: size_t _M_node_count;
23866:
23866: _Rb_tree_header() noexcept
23866: {
23866: _M_header._M_color = _S_red;
23866: _M_reset();
23866: }
23866:
23866:
23866: _Rb_tree_header(_Rb_tree_header&& __x) noexcept
23866: {
23866: if (__x._M_header._M_parent != nullptr)
23866: _M_move_data(__x);
23866: else
23866: {
23866: _M_header._M_color = _S_red;
23866: _M_reset();
23866: }
23866: }
23866:
23866:
23866: void
23866: _M_move_data(_Rb_tree_header& __from)
23866: {
23866: _M_header._M_color = __from._M_header._M_color;
23866: _M_header._M_parent = __from._M_header._M_parent;
23866: _M_header._M_left = __from._M_header._M_left;
23866: _M_header._M_right = __from._M_header._M_right;
23866: _M_header._M_parent->_M_parent = &_M_header;
23866: _M_node_count = __from._M_node_count;
23866:
23866: __from._M_reset();
23866: }
23866:
23866: void
23866: _M_reset()
23866: {
23866: _M_header._M_parent = 0;
23866: _M_header._M_left = &_M_header;
23866: _M_header._M_right = &_M_header;
23866: _M_node_count = 0;
23866: }
23866: };
23866:
23866: template<typename _Val>
23866: struct _Rb_tree_node : public _Rb_tree_node_base
23866: {
23866: typedef _Rb_tree_node<_Val>* _Link_type;
23866: # 231 "/usr/include/c++/10/bits/stl_tree.h" 3
23866: __gnu_cxx::__aligned_membuf<_Val> _M_storage;
23866:
23866: _Val*
23866: _M_valptr()
23866: { return _M_storage._M_ptr(); }
23866:
23866: const _Val*
23866: _M_valptr() const
23866: { return _M_storage._M_ptr(); }
23866:
23866: };
23866:
23866: __attribute__ ((__pure__)) _Rb_tree_node_base*
23866: _Rb_tree_increment(_Rb_tree_node_base* __x) throw ();
23866:
23866: __attribute__ ((__pure__)) const _Rb_tree_node_base*
23866: _Rb_tree_increment(const _Rb_tree_node_base* __x) throw ();
23866:
23866: __attribute__ ((__pure__)) _Rb_tree_node_base*
23866: _Rb_tree_decrement(_Rb_tree_node_base* __x) throw ();
23866:
23866: __attribute__ ((__pure__)) const _Rb_tree_node_base*
23866: _Rb_tree_decrement(const _Rb_tree_node_base* __x) throw ();
23866:
23866: template<typename _Tp>
23866: struct _Rb_tree_iterator
23866: {
23866: typedef _Tp value_type;
23866: typedef _Tp& reference;
23866: typedef _Tp* pointer;
23866:
23866: typedef bidirectional_iterator_tag iterator_category;
23866: typedef ptrdiff_t difference_type;
23866:
23866: typedef _Rb_tree_iterator<_Tp> _Self;
23866: typedef _Rb_tree_node_base::_Base_ptr _Base_ptr;
23866: typedef _Rb_tree_node<_Tp>* _Link_type;
23866:
23866: _Rb_tree_iterator() noexcept
23866: : _M_node() { }
23866:
23866: explicit
23866: _Rb_tree_iterator(_Base_ptr __x) noexcept
23866: : _M_node(__x) { }
23866:
23866: reference
23866: operator*() const noexcept
23866: { return *static_cast<_Link_type>(_M_node)->_M_valptr(); }
23866:
23866: pointer
23866: operator->() const noexcept
23866: { return static_cast<_Link_type> (_M_node)->_M_valptr(); }
23866:
23866: _Self&
23866: operator++() noexcept
23866: {
23866: _M_node = _Rb_tree_increment(_M_node);
23866: return *this;
23866: }
23866:
23866: _Self
23866: operator++(int) noexcept
23866: {
23866: _Self __tmp = *this;
23866: _M_node = _Rb_tree_increment(_M_node);
23866: return __tmp;
23866: }
23866:
23866: _Self&
23866: operator--() noexcept
23866: {
23866: _M_node = _Rb_tree_decrement(_M_node);
23866: return *this;
23866: }
23866:
23866: _Self
23866: operator--(int) noexcept
23866: {
23866: _Self __tmp = *this;
23866: _M_node = _Rb_tree_decrement(_M_node);
23866: return __tmp;
23866: }
23866:
23866: friend bool
23866: operator==(const _Self& __x, const _Self& __y) noexcept
23866: { return __x._M_node == __y._M_node; }
23866:
23866:
23866: friend bool
23866: operator!=(const _Self& __x, const _Self& __y) noexcept
23866: { return __x._M_node != __y._M_node; }
23866:
23866:
23866: _Base_ptr _M_node;
23866: };
23866:
23866: template<typename _Tp>
23866: struct _Rb_tree_const_iterator
23866: {
23866: typedef _Tp value_type;
23866: typedef const _Tp& reference;
23866: typedef const _Tp* pointer;
23866:
23866: typedef _Rb_tree_iterator<_Tp> iterator;
23866:
23866: typedef bidirectional_iterator_tag iterator_category;
23866: typedef ptrdiff_t difference_type;
23866:
23866: typedef _Rb_tree_const_iterator<_Tp> _Self;
23866: typedef _Rb_tree_node_base::_Const_Base_ptr _Base_ptr;
23866: typedef const _Rb_tree_node<_Tp>* _Link_type;
23866:
23866: _Rb_tree_const_iterator() noexcept
23866: : _M_node() { }
23866:
23866: explicit
23866: _Rb_tree_const_iterator(_Base_ptr __x) noexcept
23866: : _M_node(__x) { }
23866:
23866: _Rb_tree_const_iterator(const iterator& __it) noexcept
23866: : _M_node(__it._M_node) { }
23866:
23866: iterator
23866: _M_const_cast() const noexcept
23866: { return iterator(const_cast<typename iterator::_Base_ptr>(_M_node)); }
23866:
23866: reference
23866: operator*() const noexcept
23866: { return *static_cast<_Link_type>(_M_node)->_M_valptr(); }
23866:
23866: pointer
23866: operator->() const noexcept
23866: { return static_cast<_Link_type>(_M_node)->_M_valptr(); }
23866:
23866: _Self&
23866: operator++() noexcept
23866: {
23866: _M_node = _Rb_tree_increment(_M_node);
23866: return *this;
23866: }
23866:
23866: _Self
23866: operator++(int) noexcept
23866: {
23866: _Self __tmp = *this;
23866: _M_node = _Rb_tree_increment(_M_node);
23866: return __tmp;
23866: }
23866:
23866: _Self&
23866: operator--() noexcept
23866: {
23866: _M_node = _Rb_tree_decrement(_M_node);
23866: return *this;
23866: }
23866:
23866: _Self
23866: operator--(int) noexcept
23866: {
23866: _Self __tmp = *this;
23866: _M_node = _Rb_tree_decrement(_M_node);
23866: return __tmp;
23866: }
23866:
23866: friend bool
23866: operator==(const _Self& __x, const _Self& __y) noexcept
23866: { return __x._M_node == __y._M_node; }
23866:
23866:
23866: friend bool
23866: operator!=(const _Self& __x, const _Self& __y) noexcept
23866: { return __x._M_node != __y._M_node; }
23866:
23866:
23866: _Base_ptr _M_node;
23866: };
23866:
23866: void
23866: _Rb_tree_insert_and_rebalance(const bool __insert_left,
23866: _Rb_tree_node_base* __x,
23866: _Rb_tree_node_base* __p,
23866: _Rb_tree_node_base& __header) throw ();
23866:
23866: _Rb_tree_node_base*
23866: _Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z,
23866: _Rb_tree_node_base& __header) throw ();
23866:
23866:
23866: template<typename _Cmp, typename _SfinaeType, typename = __void_t<>>
23866: struct __has_is_transparent
23866: { };
23866:
23866: template<typename _Cmp, typename _SfinaeType>
23866: struct __has_is_transparent<_Cmp, _SfinaeType,
23866: __void_t<typename _Cmp::is_transparent>>
23866: { typedef void type; };
23866:
23866: template<typename _Cmp, typename _SfinaeType>
23866: using __has_is_transparent_t
23866: = typename __has_is_transparent<_Cmp, _SfinaeType>::type;
23866:
23866:
23866:
23866: template<typename _Tree1, typename _Cmp2>
23866: struct _Rb_tree_merge_helper { };
23866:
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc = allocator<_Val> >
23866: class _Rb_tree
23866: {
23866: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template
23866: rebind<_Rb_tree_node<_Val> >::other _Node_allocator;
23866:
23866: typedef __gnu_cxx::__alloc_traits<_Node_allocator> _Alloc_traits;
23866:
23866: protected:
23866: typedef _Rb_tree_node_base* _Base_ptr;
23866: typedef const _Rb_tree_node_base* _Const_Base_ptr;
23866: typedef _Rb_tree_node<_Val>* _Link_type;
23866: typedef const _Rb_tree_node<_Val>* _Const_Link_type;
23866:
23866: private:
23866:
23866:
23866: struct _Reuse_or_alloc_node
23866: {
23866: _Reuse_or_alloc_node(_Rb_tree& __t)
23866: : _M_root(__t._M_root()), _M_nodes(__t._M_rightmost()), _M_t(__t)
23866: {
23866: if (_M_root)
23866: {
23866: _M_root->_M_parent = 0;
23866:
23866: if (_M_nodes->_M_left)
23866: _M_nodes = _M_nodes->_M_left;
23866: }
23866: else
23866: _M_nodes = 0;
23866: }
23866:
23866:
23866: _Reuse_or_alloc_node(const _Reuse_or_alloc_node&) = delete;
23866:
23866:
23866: ~_Reuse_or_alloc_node()
23866: { _M_t._M_erase(static_cast<_Link_type>(_M_root)); }
23866:
23866: template<typename _Arg>
23866: _Link_type
23866:
23866:
23866:
23866: operator()(_Arg&& __arg)
23866:
23866: {
23866: _Link_type __node = static_cast<_Link_type>(_M_extract());
23866: if (__node)
23866: {
23866: _M_t._M_destroy_node(__node);
23866: _M_t._M_construct_node(__node, std::forward<_Arg>(__arg));
23866: return __node;
23866: }
23866:
23866: return _M_t._M_create_node(std::forward<_Arg>(__arg));
23866: }
23866:
23866: private:
23866: _Base_ptr
23866: _M_extract()
23866: {
23866: if (!_M_nodes)
23866: return _M_nodes;
23866:
23866: _Base_ptr __node = _M_nodes;
23866: _M_nodes = _M_nodes->_M_parent;
23866: if (_M_nodes)
23866: {
23866: if (_M_nodes->_M_right == __node)
23866: {
23866: _M_nodes->_M_right = 0;
23866:
23866: if (_M_nodes->_M_left)
23866: {
23866: _M_nodes = _M_nodes->_M_left;
23866:
23866: while (_M_nodes->_M_right)
23866: _M_nodes = _M_nodes->_M_right;
23866:
23866: if (_M_nodes->_M_left)
23866: _M_nodes = _M_nodes->_M_left;
23866: }
23866: }
23866: else
23866: _M_nodes->_M_left = 0;
23866: }
23866: else
23866: _M_root = 0;
23866:
23866: return __node;
23866: }
23866:
23866: _Base_ptr _M_root;
23866: _Base_ptr _M_nodes;
23866: _Rb_tree& _M_t;
23866: };
23866:
23866:
23866:
23866: struct _Alloc_node
23866: {
23866: _Alloc_node(_Rb_tree& __t)
23866: : _M_t(__t) { }
23866:
23866: template<typename _Arg>
23866: _Link_type
23866:
23866:
23866:
23866: operator()(_Arg&& __arg) const
23866:
23866: { return _M_t._M_create_node(std::forward<_Arg>(__arg)); }
23866:
23866: private:
23866: _Rb_tree& _M_t;
23866: };
23866:
23866: public:
23866: typedef _Key key_type;
23866: typedef _Val value_type;
23866: typedef value_type* pointer;
23866: typedef const value_type* const_pointer;
23866: typedef value_type& reference;
23866: typedef const value_type& const_reference;
23866: typedef size_t size_type;
23866: typedef ptrdiff_t difference_type;
23866: typedef _Alloc allocator_type;
23866:
23866: _Node_allocator&
23866: _M_get_Node_allocator() noexcept
23866: { return this->_M_impl; }
23866:
23866: const _Node_allocator&
23866: _M_get_Node_allocator() const noexcept
23866: { return this->_M_impl; }
23866:
23866: allocator_type
23866: get_allocator() const noexcept
23866: { return allocator_type(_M_get_Node_allocator()); }
23866:
23866: protected:
23866: _Link_type
23866: _M_get_node()
23866: { return _Alloc_traits::allocate(_M_get_Node_allocator(), 1); }
23866:
23866: void
23866: _M_put_node(_Link_type __p) noexcept
23866: { _Alloc_traits::deallocate(_M_get_Node_allocator(), __p, 1); }
23866: # 611 "/usr/include/c++/10/bits/stl_tree.h" 3
23866: template<typename... _Args>
23866: void
23866: _M_construct_node(_Link_type __node, _Args&&... __args)
23866: {
23866: try
23866: {
23866: ::new(__node) _Rb_tree_node<_Val>;
23866: _Alloc_traits::construct(_M_get_Node_allocator(),
23866: __node->_M_valptr(),
23866: std::forward<_Args>(__args)...);
23866: }
23866: catch(...)
23866: {
23866: __node->~_Rb_tree_node<_Val>();
23866: _M_put_node(__node);
23866: throw;
23866: }
23866: }
23866:
23866: template<typename... _Args>
23866: _Link_type
23866: _M_create_node(_Args&&... __args)
23866: {
23866: _Link_type __tmp = _M_get_node();
23866: _M_construct_node(__tmp, std::forward<_Args>(__args)...);
23866: return __tmp;
23866: }
23866:
23866:
23866: void
23866: _M_destroy_node(_Link_type __p) noexcept
23866: {
23866:
23866:
23866:
23866: _Alloc_traits::destroy(_M_get_Node_allocator(), __p->_M_valptr());
23866: __p->~_Rb_tree_node<_Val>();
23866:
23866: }
23866:
23866: void
23866: _M_drop_node(_Link_type __p) noexcept
23866: {
23866: _M_destroy_node(__p);
23866: _M_put_node(__p);
23866: }
23866:
23866: template<typename _NodeGen>
23866: _Link_type
23866: _M_clone_node(_Const_Link_type __x, _NodeGen& __node_gen)
23866: {
23866: _Link_type __tmp = __node_gen(*__x->_M_valptr());
23866: __tmp->_M_color = __x->_M_color;
23866: __tmp->_M_left = 0;
23866: __tmp->_M_right = 0;
23866: return __tmp;
23866: }
23866:
23866: protected:
23866:
23866:
23866:
23866:
23866: template<typename _Key_compare,
23866: bool = __is_pod(_Key_compare)>
23866:
23866: struct _Rb_tree_impl
23866: : public _Node_allocator
23866: , public _Rb_tree_key_compare<_Key_compare>
23866: , public _Rb_tree_header
23866: {
23866: typedef _Rb_tree_key_compare<_Key_compare> _Base_key_compare;
23866:
23866: _Rb_tree_impl()
23866: noexcept(is_nothrow_default_constructible<_Node_allocator>::value && is_nothrow_default_constructible<_Base_key_compare>::value)
23866:
23866:
23866: : _Node_allocator()
23866: { }
23866:
23866: _Rb_tree_impl(const _Rb_tree_impl& __x)
23866: : _Node_allocator(_Alloc_traits::_S_select_on_copy(__x))
23866: , _Base_key_compare(__x._M_key_compare)
23866: { }
23866:
23866:
23866:
23866:
23866:
23866:
23866: _Rb_tree_impl(_Rb_tree_impl&&) = default;
23866:
23866: explicit
23866: _Rb_tree_impl(_Node_allocator&& __a)
23866: : _Node_allocator(std::move(__a))
23866: { }
23866:
23866: _Rb_tree_impl(_Rb_tree_impl&& __x, _Node_allocator&& __a)
23866: : _Node_allocator(std::move(__a)),
23866: _Base_key_compare(std::move(__x)),
23866: _Rb_tree_header(std::move(__x))
23866: { }
23866:
23866: _Rb_tree_impl(const _Key_compare& __comp, _Node_allocator&& __a)
23866: : _Node_allocator(std::move(__a)), _Base_key_compare(__comp)
23866: { }
23866:
23866: };
23866:
23866: _Rb_tree_impl<_Compare> _M_impl;
23866:
23866: protected:
23866: _Base_ptr&
23866: _M_root() noexcept
23866: { return this->_M_impl._M_header._M_parent; }
23866:
23866: _Const_Base_ptr
23866: _M_root() const noexcept
23866: { return this->_M_impl._M_header._M_parent; }
23866:
23866: _Base_ptr&
23866: _M_leftmost() noexcept
23866: { return this->_M_impl._M_header._M_left; }
23866:
23866: _Const_Base_ptr
23866: _M_leftmost() const noexcept
23866: { return this->_M_impl._M_header._M_left; }
23866:
23866: _Base_ptr&
23866: _M_rightmost() noexcept
23866: { return this->_M_impl._M_header._M_right; }
23866:
23866: _Const_Base_ptr
23866: _M_rightmost() const noexcept
23866: { return this->_M_impl._M_header._M_right; }
23866:
23866: _Link_type
23866: _M_begin() noexcept
23866: { return static_cast<_Link_type>(this->_M_impl._M_header._M_parent); }
23866:
23866: _Const_Link_type
23866: _M_begin() const noexcept
23866: {
23866: return static_cast<_Const_Link_type>
23866: (this->_M_impl._M_header._M_parent);
23866: }
23866:
23866: _Base_ptr
23866: _M_end() noexcept
23866: { return &this->_M_impl._M_header; }
23866:
23866: _Const_Base_ptr
23866: _M_end() const noexcept
23866: { return &this->_M_impl._M_header; }
23866:
23866: static const _Key&
23866: _S_key(_Const_Link_type __x)
23866: {
23866:
23866:
23866:
23866: static_assert(__is_invocable<_Compare&, const _Key&, const _Key&>{},
23866: "comparison object must be invocable "
23866: "with two arguments of key type");
23866:
23866:
23866:
23866: if constexpr (__is_invocable<_Compare&, const _Key&, const _Key&>{})
23866: static_assert(
23866: is_invocable_v<const _Compare&, const _Key&, const _Key&>,
23866: "comparison object must be invocable as const");
23866:
23866:
23866:
23866: return _KeyOfValue()(*__x->_M_valptr());
23866: }
23866:
23866: static _Link_type
23866: _S_left(_Base_ptr __x) noexcept
23866: { return static_cast<_Link_type>(__x->_M_left); }
23866:
23866: static _Const_Link_type
23866: _S_left(_Const_Base_ptr __x) noexcept
23866: { return static_cast<_Const_Link_type>(__x->_M_left); }
23866:
23866: static _Link_type
23866: _S_right(_Base_ptr __x) noexcept
23866: { return static_cast<_Link_type>(__x->_M_right); }
23866:
23866: static _Const_Link_type
23866: _S_right(_Const_Base_ptr __x) noexcept
23866: { return static_cast<_Const_Link_type>(__x->_M_right); }
23866:
23866: static const _Key&
23866: _S_key(_Const_Base_ptr __x)
23866: { return _S_key(static_cast<_Const_Link_type>(__x)); }
23866:
23866: static _Base_ptr
23866: _S_minimum(_Base_ptr __x) noexcept
23866: { return _Rb_tree_node_base::_S_minimum(__x); }
23866:
23866: static _Const_Base_ptr
23866: _S_minimum(_Const_Base_ptr __x) noexcept
23866: { return _Rb_tree_node_base::_S_minimum(__x); }
23866:
23866: static _Base_ptr
23866: _S_maximum(_Base_ptr __x) noexcept
23866: { return _Rb_tree_node_base::_S_maximum(__x); }
23866:
23866: static _Const_Base_ptr
23866: _S_maximum(_Const_Base_ptr __x) noexcept
23866: { return _Rb_tree_node_base::_S_maximum(__x); }
23866:
23866: public:
23866: typedef _Rb_tree_iterator<value_type> iterator;
23866: typedef _Rb_tree_const_iterator<value_type> const_iterator;
23866:
23866: typedef std::reverse_iterator<iterator> reverse_iterator;
23866: typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
23866:
23866:
23866: using node_type = _Node_handle<_Key, _Val, _Node_allocator>;
23866: using insert_return_type = _Node_insert_return<
23866: conditional_t<is_same_v<_Key, _Val>, const_iterator, iterator>,
23866: node_type>;
23866:
23866:
23866: pair<_Base_ptr, _Base_ptr>
23866: _M_get_insert_unique_pos(const key_type& __k);
23866:
23866: pair<_Base_ptr, _Base_ptr>
23866: _M_get_insert_equal_pos(const key_type& __k);
23866:
23866: pair<_Base_ptr, _Base_ptr>
23866: _M_get_insert_hint_unique_pos(const_iterator __pos,
23866: const key_type& __k);
23866:
23866: pair<_Base_ptr, _Base_ptr>
23866: _M_get_insert_hint_equal_pos(const_iterator __pos,
23866: const key_type& __k);
23866:
23866: private:
23866:
23866: template<typename _Arg, typename _NodeGen>
23866: iterator
23866: _M_insert_(_Base_ptr __x, _Base_ptr __y, _Arg&& __v, _NodeGen&);
23866:
23866: iterator
23866: _M_insert_node(_Base_ptr __x, _Base_ptr __y, _Link_type __z);
23866:
23866: template<typename _Arg>
23866: iterator
23866: _M_insert_lower(_Base_ptr __y, _Arg&& __v);
23866:
23866: template<typename _Arg>
23866: iterator
23866: _M_insert_equal_lower(_Arg&& __x);
23866:
23866: iterator
23866: _M_insert_lower_node(_Base_ptr __p, _Link_type __z);
23866:
23866: iterator
23866: _M_insert_equal_lower_node(_Link_type __z);
23866: # 889 "/usr/include/c++/10/bits/stl_tree.h" 3
23866: template<typename _NodeGen>
23866: _Link_type
23866: _M_copy(_Const_Link_type __x, _Base_ptr __p, _NodeGen&);
23866:
23866: template<typename _NodeGen>
23866: _Link_type
23866: _M_copy(const _Rb_tree& __x, _NodeGen& __gen)
23866: {
23866: _Link_type __root = _M_copy(__x._M_begin(), _M_end(), __gen);
23866: _M_leftmost() = _S_minimum(__root);
23866: _M_rightmost() = _S_maximum(__root);
23866: _M_impl._M_node_count = __x._M_impl._M_node_count;
23866: return __root;
23866: }
23866:
23866: _Link_type
23866: _M_copy(const _Rb_tree& __x)
23866: {
23866: _Alloc_node __an(*this);
23866: return _M_copy(__x, __an);
23866: }
23866:
23866: void
23866: _M_erase(_Link_type __x);
23866:
23866: iterator
23866: _M_lower_bound(_Link_type __x, _Base_ptr __y,
23866: const _Key& __k);
23866:
23866: const_iterator
23866: _M_lower_bound(_Const_Link_type __x, _Const_Base_ptr __y,
23866: const _Key& __k) const;
23866:
23866: iterator
23866: _M_upper_bound(_Link_type __x, _Base_ptr __y,
23866: const _Key& __k);
23866:
23866: const_iterator
23866: _M_upper_bound(_Const_Link_type __x, _Const_Base_ptr __y,
23866: const _Key& __k) const;
23866:
23866: public:
23866:
23866:
23866:
23866:
23866: _Rb_tree() = default;
23866:
23866:
23866: _Rb_tree(const _Compare& __comp,
23866: const allocator_type& __a = allocator_type())
23866: : _M_impl(__comp, _Node_allocator(__a)) { }
23866:
23866: _Rb_tree(const _Rb_tree& __x)
23866: : _M_impl(__x._M_impl)
23866: {
23866: if (__x._M_root() != 0)
23866: _M_root() = _M_copy(__x);
23866: }
23866:
23866:
23866: _Rb_tree(const allocator_type& __a)
23866: : _M_impl(_Node_allocator(__a))
23866: { }
23866:
23866: _Rb_tree(const _Rb_tree& __x, const allocator_type& __a)
23866: : _M_impl(__x._M_impl._M_key_compare, _Node_allocator(__a))
23866: {
23866: if (__x._M_root() != nullptr)
23866: _M_root() = _M_copy(__x);
23866: }
23866:
23866: _Rb_tree(_Rb_tree&&) = default;
23866:
23866: _Rb_tree(_Rb_tree&& __x, const allocator_type& __a)
23866: : _Rb_tree(std::move(__x), _Node_allocator(__a))
23866: { }
23866:
23866: private:
23866: _Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a, true_type)
23866: noexcept(is_nothrow_default_constructible<_Compare>::value)
23866: : _M_impl(std::move(__x._M_impl), std::move(__a))
23866: { }
23866:
23866: _Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a, false_type)
23866: : _M_impl(__x._M_impl._M_key_compare, std::move(__a))
23866: {
23866: if (__x._M_root() != nullptr)
23866: _M_move_data(__x, false_type{});
23866: }
23866:
23866: public:
23866: _Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a)
23866: noexcept( noexcept(
23866: _Rb_tree(std::declval<_Rb_tree&&>(), std::declval<_Node_allocator&&>(),
23866: std::declval<typename _Alloc_traits::is_always_equal>())) )
23866: : _Rb_tree(std::move(__x), std::move(__a),
23866: typename _Alloc_traits::is_always_equal{})
23866: { }
23866:
23866:
23866: ~_Rb_tree() noexcept
23866: { _M_erase(_M_begin()); }
23866:
23866: _Rb_tree&
23866: operator=(const _Rb_tree& __x);
23866:
23866:
23866: _Compare
23866: key_comp() const
23866: { return _M_impl._M_key_compare; }
23866:
23866: iterator
23866: begin() noexcept
23866: { return iterator(this->_M_impl._M_header._M_left); }
23866:
23866: const_iterator
23866: begin() const noexcept
23866: { return const_iterator(this->_M_impl._M_header._M_left); }
23866:
23866: iterator
23866: end() noexcept
23866: { return iterator(&this->_M_impl._M_header); }
23866:
23866: const_iterator
23866: end() const noexcept
23866: { return const_iterator(&this->_M_impl._M_header); }
23866:
23866: reverse_iterator
23866: rbegin() noexcept
23866: { return reverse_iterator(end()); }
23866:
23866: const_reverse_iterator
23866: rbegin() const noexcept
23866: { return const_reverse_iterator(end()); }
23866:
23866: reverse_iterator
23866: rend() noexcept
23866: { return reverse_iterator(begin()); }
23866:
23866: const_reverse_iterator
23866: rend() const noexcept
23866: { return const_reverse_iterator(begin()); }
23866:
23866: [[__nodiscard__]] bool
23866: empty() const noexcept
23866: { return _M_impl._M_node_count == 0; }
23866:
23866: size_type
23866: size() const noexcept
23866: { return _M_impl._M_node_count; }
23866:
23866: size_type
23866: max_size() const noexcept
23866: { return _Alloc_traits::max_size(_M_get_Node_allocator()); }
23866:
23866: void
23866: swap(_Rb_tree& __t)
23866: noexcept(__is_nothrow_swappable<_Compare>::value);
23866:
23866:
23866:
23866: template<typename _Arg>
23866: pair<iterator, bool>
23866: _M_insert_unique(_Arg&& __x);
23866:
23866: template<typename _Arg>
23866: iterator
23866: _M_insert_equal(_Arg&& __x);
23866:
23866: template<typename _Arg, typename _NodeGen>
23866: iterator
23866: _M_insert_unique_(const_iterator __pos, _Arg&& __x, _NodeGen&);
23866:
23866: template<typename _Arg>
23866: iterator
23866: _M_insert_unique_(const_iterator __pos, _Arg&& __x)
23866: {
23866: _Alloc_node __an(*this);
23866: return _M_insert_unique_(__pos, std::forward<_Arg>(__x), __an);
23866: }
23866:
23866: template<typename _Arg, typename _NodeGen>
23866: iterator
23866: _M_insert_equal_(const_iterator __pos, _Arg&& __x, _NodeGen&);
23866:
23866: template<typename _Arg>
23866: iterator
23866: _M_insert_equal_(const_iterator __pos, _Arg&& __x)
23866: {
23866: _Alloc_node __an(*this);
23866: return _M_insert_equal_(__pos, std::forward<_Arg>(__x), __an);
23866: }
23866:
23866: template<typename... _Args>
23866: pair<iterator, bool>
23866: _M_emplace_unique(_Args&&... __args);
23866:
23866: template<typename... _Args>
23866: iterator
23866: _M_emplace_equal(_Args&&... __args);
23866:
23866: template<typename... _Args>
23866: iterator
23866: _M_emplace_hint_unique(const_iterator __pos, _Args&&... __args);
23866:
23866: template<typename... _Args>
23866: iterator
23866: _M_emplace_hint_equal(const_iterator __pos, _Args&&... __args);
23866:
23866: template<typename _Iter>
23866: using __same_value_type
23866: = is_same<value_type, typename iterator_traits<_Iter>::value_type>;
23866:
23866: template<typename _InputIterator>
23866: __enable_if_t<__same_value_type<_InputIterator>::value>
23866: _M_insert_range_unique(_InputIterator __first, _InputIterator __last)
23866: {
23866: _Alloc_node __an(*this);
23866: for (; __first != __last; ++__first)
23866: _M_insert_unique_(end(), *__first, __an);
23866: }
23866:
23866: template<typename _InputIterator>
23866: __enable_if_t<!__same_value_type<_InputIterator>::value>
23866: _M_insert_range_unique(_InputIterator __first, _InputIterator __last)
23866: {
23866: for (; __first != __last; ++__first)
23866: _M_emplace_unique(*__first);
23866: }
23866:
23866: template<typename _InputIterator>
23866: __enable_if_t<__same_value_type<_InputIterator>::value>
23866: _M_insert_range_equal(_InputIterator __first, _InputIterator __last)
23866: {
23866: _Alloc_node __an(*this);
23866: for (; __first != __last; ++__first)
23866: _M_insert_equal_(end(), *__first, __an);
23866: }
23866:
23866: template<typename _InputIterator>
23866: __enable_if_t<!__same_value_type<_InputIterator>::value>
23866: _M_insert_range_equal(_InputIterator __first, _InputIterator __last)
23866: {
23866: _Alloc_node __an(*this);
23866: for (; __first != __last; ++__first)
23866: _M_emplace_equal(*__first);
23866: }
23866: # 1186 "/usr/include/c++/10/bits/stl_tree.h" 3
23866: private:
23866: void
23866: _M_erase_aux(const_iterator __position);
23866:
23866: void
23866: _M_erase_aux(const_iterator __first, const_iterator __last);
23866:
23866: public:
23866:
23866:
23866:
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: iterator
23866: erase(const_iterator __position)
23866: {
23866: ;
23866: const_iterator __result = __position;
23866: ++__result;
23866: _M_erase_aux(__position);
23866: return __result._M_const_cast();
23866: }
23866:
23866:
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: iterator
23866: erase(iterator __position)
23866: {
23866: ;
23866: iterator __result = __position;
23866: ++__result;
23866: _M_erase_aux(__position);
23866: return __result;
23866: }
23866: # 1235 "/usr/include/c++/10/bits/stl_tree.h" 3
23866: size_type
23866: erase(const key_type& __x);
23866:
23866:
23866:
23866:
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: iterator
23866: erase(const_iterator __first, const_iterator __last)
23866: {
23866: _M_erase_aux(__first, __last);
23866: return __last._M_const_cast();
23866: }
23866: # 1258 "/usr/include/c++/10/bits/stl_tree.h" 3
23866: void
23866: clear() noexcept
23866: {
23866: _M_erase(_M_begin());
23866: _M_impl._M_reset();
23866: }
23866:
23866:
23866: iterator
23866: find(const key_type& __k);
23866:
23866: const_iterator
23866: find(const key_type& __k) const;
23866:
23866: size_type
23866: count(const key_type& __k) const;
23866:
23866: iterator
23866: lower_bound(const key_type& __k)
23866: { return _M_lower_bound(_M_begin(), _M_end(), __k); }
23866:
23866: const_iterator
23866: lower_bound(const key_type& __k) const
23866: { return _M_lower_bound(_M_begin(), _M_end(), __k); }
23866:
23866: iterator
23866: upper_bound(const key_type& __k)
23866: { return _M_upper_bound(_M_begin(), _M_end(), __k); }
23866:
23866: const_iterator
23866: upper_bound(const key_type& __k) const
23866: { return _M_upper_bound(_M_begin(), _M_end(), __k); }
23866:
23866: pair<iterator, iterator>
23866: equal_range(const key_type& __k);
23866:
23866: pair<const_iterator, const_iterator>
23866: equal_range(const key_type& __k) const;
23866:
23866:
23866: template<typename _Kt,
23866: typename _Req = __has_is_transparent_t<_Compare, _Kt>>
23866: iterator
23866: _M_find_tr(const _Kt& __k)
23866: {
23866: const _Rb_tree* __const_this = this;
23866: return __const_this->_M_find_tr(__k)._M_const_cast();
23866: }
23866:
23866: template<typename _Kt,
23866: typename _Req = __has_is_transparent_t<_Compare, _Kt>>
23866: const_iterator
23866: _M_find_tr(const _Kt& __k) const
23866: {
23866: auto __j = _M_lower_bound_tr(__k);
23866: if (__j != end() && _M_impl._M_key_compare(__k, _S_key(__j._M_node)))
23866: __j = end();
23866: return __j;
23866: }
23866:
23866: template<typename _Kt,
23866: typename _Req = __has_is_transparent_t<_Compare, _Kt>>
23866: size_type
23866: _M_count_tr(const _Kt& __k) const
23866: {
23866: auto __p = _M_equal_range_tr(__k);
23866: return std::distance(__p.first, __p.second);
23866: }
23866:
23866: template<typename _Kt,
23866: typename _Req = __has_is_transparent_t<_Compare, _Kt>>
23866: iterator
23866: _M_lower_bound_tr(const _Kt& __k)
23866: {
23866: const _Rb_tree* __const_this = this;
23866: return __const_this->_M_lower_bound_tr(__k)._M_const_cast();
23866: }
23866:
23866: template<typename _Kt,
23866: typename _Req = __has_is_transparent_t<_Compare, _Kt>>
23866: const_iterator
23866: _M_lower_bound_tr(const _Kt& __k) const
23866: {
23866: auto __x = _M_begin();
23866: auto __y = _M_end();
23866: while (__x != 0)
23866: if (!_M_impl._M_key_compare(_S_key(__x), __k))
23866: {
23866: __y = __x;
23866: __x = _S_left(__x);
23866: }
23866: else
23866: __x = _S_right(__x);
23866: return const_iterator(__y);
23866: }
23866:
23866: template<typename _Kt,
23866: typename _Req = __has_is_transparent_t<_Compare, _Kt>>
23866: iterator
23866: _M_upper_bound_tr(const _Kt& __k)
23866: {
23866: const _Rb_tree* __const_this = this;
23866: return __const_this->_M_upper_bound_tr(__k)._M_const_cast();
23866: }
23866:
23866: template<typename _Kt,
23866: typename _Req = __has_is_transparent_t<_Compare, _Kt>>
23866: const_iterator
23866: _M_upper_bound_tr(const _Kt& __k) const
23866: {
23866: auto __x = _M_begin();
23866: auto __y = _M_end();
23866: while (__x != 0)
23866: if (_M_impl._M_key_compare(__k, _S_key(__x)))
23866: {
23866: __y = __x;
23866: __x = _S_left(__x);
23866: }
23866: else
23866: __x = _S_right(__x);
23866: return const_iterator(__y);
23866: }
23866:
23866: template<typename _Kt,
23866: typename _Req = __has_is_transparent_t<_Compare, _Kt>>
23866: pair<iterator, iterator>
23866: _M_equal_range_tr(const _Kt& __k)
23866: {
23866: const _Rb_tree* __const_this = this;
23866: auto __ret = __const_this->_M_equal_range_tr(__k);
23866: return { __ret.first._M_const_cast(), __ret.second._M_const_cast() };
23866: }
23866:
23866: template<typename _Kt,
23866: typename _Req = __has_is_transparent_t<_Compare, _Kt>>
23866: pair<const_iterator, const_iterator>
23866: _M_equal_range_tr(const _Kt& __k) const
23866: {
23866: auto __low = _M_lower_bound_tr(__k);
23866: auto __high = __low;
23866: auto& __cmp = _M_impl._M_key_compare;
23866: while (__high != end() && !__cmp(__k, _S_key(__high._M_node)))
23866: ++__high;
23866: return { __low, __high };
23866: }
23866:
23866:
23866:
23866: bool
23866: __rb_verify() const;
23866:
23866:
23866: _Rb_tree&
23866: operator=(_Rb_tree&&)
23866: noexcept(_Alloc_traits::_S_nothrow_move()
23866: && is_nothrow_move_assignable<_Compare>::value);
23866:
23866: template<typename _Iterator>
23866: void
23866: _M_assign_unique(_Iterator, _Iterator);
23866:
23866: template<typename _Iterator>
23866: void
23866: _M_assign_equal(_Iterator, _Iterator);
23866:
23866: private:
23866:
23866: void
23866: _M_move_data(_Rb_tree& __x, true_type)
23866: { _M_impl._M_move_data(__x._M_impl); }
23866:
23866:
23866:
23866: void
23866: _M_move_data(_Rb_tree&, false_type);
23866:
23866:
23866: void
23866: _M_move_assign(_Rb_tree&, true_type);
23866:
23866:
23866:
23866: void
23866: _M_move_assign(_Rb_tree&, false_type);
23866:
23866:
23866:
23866: public:
23866:
23866: insert_return_type
23866: _M_reinsert_node_unique(node_type&& __nh)
23866: {
23866: insert_return_type __ret;
23866: if (__nh.empty())
23866: __ret.position = end();
23866: else
23866: {
23866: ;
23866:
23866: auto __res = _M_get_insert_unique_pos(__nh._M_key());
23866: if (__res.second)
23866: {
23866: __ret.position
23866: = _M_insert_node(__res.first, __res.second, __nh._M_ptr);
23866: __nh._M_ptr = nullptr;
23866: __ret.inserted = true;
23866: }
23866: else
23866: {
23866: __ret.node = std::move(__nh);
23866: __ret.position = iterator(__res.first);
23866: __ret.inserted = false;
23866: }
23866: }
23866: return __ret;
23866: }
23866:
23866:
23866: iterator
23866: _M_reinsert_node_equal(node_type&& __nh)
23866: {
23866: iterator __ret;
23866: if (__nh.empty())
23866: __ret = end();
23866: else
23866: {
23866: ;
23866: auto __res = _M_get_insert_equal_pos(__nh._M_key());
23866: if (__res.second)
23866: __ret = _M_insert_node(__res.first, __res.second, __nh._M_ptr);
23866: else
23866: __ret = _M_insert_equal_lower_node(__nh._M_ptr);
23866: __nh._M_ptr = nullptr;
23866: }
23866: return __ret;
23866: }
23866:
23866:
23866: iterator
23866: _M_reinsert_node_hint_unique(const_iterator __hint, node_type&& __nh)
23866: {
23866: iterator __ret;
23866: if (__nh.empty())
23866: __ret = end();
23866: else
23866: {
23866: ;
23866: auto __res = _M_get_insert_hint_unique_pos(__hint, __nh._M_key());
23866: if (__res.second)
23866: {
23866: __ret = _M_insert_node(__res.first, __res.second, __nh._M_ptr);
23866: __nh._M_ptr = nullptr;
23866: }
23866: else
23866: __ret = iterator(__res.first);
23866: }
23866: return __ret;
23866: }
23866:
23866:
23866: iterator
23866: _M_reinsert_node_hint_equal(const_iterator __hint, node_type&& __nh)
23866: {
23866: iterator __ret;
23866: if (__nh.empty())
23866: __ret = end();
23866: else
23866: {
23866: ;
23866: auto __res = _M_get_insert_hint_equal_pos(__hint, __nh._M_key());
23866: if (__res.second)
23866: __ret = _M_insert_node(__res.first, __res.second, __nh._M_ptr);
23866: else
23866: __ret = _M_insert_equal_lower_node(__nh._M_ptr);
23866: __nh._M_ptr = nullptr;
23866: }
23866: return __ret;
23866: }
23866:
23866:
23866: node_type
23866: extract(const_iterator __pos)
23866: {
23866: auto __ptr = _Rb_tree_rebalance_for_erase(
23866: __pos._M_const_cast()._M_node, _M_impl._M_header);
23866: --_M_impl._M_node_count;
23866: return { static_cast<_Link_type>(__ptr), _M_get_Node_allocator() };
23866: }
23866:
23866:
23866: node_type
23866: extract(const key_type& __k)
23866: {
23866: node_type __nh;
23866: auto __pos = find(__k);
23866: if (__pos != end())
23866: __nh = extract(const_iterator(__pos));
23866: return __nh;
23866: }
23866:
23866: template<typename _Compare2>
23866: using _Compatible_tree
23866: = _Rb_tree<_Key, _Val, _KeyOfValue, _Compare2, _Alloc>;
23866:
23866: template<typename, typename>
23866: friend class _Rb_tree_merge_helper;
23866:
23866:
23866: template<typename _Compare2>
23866: void
23866: _M_merge_unique(_Compatible_tree<_Compare2>& __src) noexcept
23866: {
23866: using _Merge_helper = _Rb_tree_merge_helper<_Rb_tree, _Compare2>;
23866: for (auto __i = __src.begin(), __end = __src.end(); __i != __end;)
23866: {
23866: auto __pos = __i++;
23866: auto __res = _M_get_insert_unique_pos(_KeyOfValue()(*__pos));
23866: if (__res.second)
23866: {
23866: auto& __src_impl = _Merge_helper::_S_get_impl(__src);
23866: auto __ptr = _Rb_tree_rebalance_for_erase(
23866: __pos._M_node, __src_impl._M_header);
23866: --__src_impl._M_node_count;
23866: _M_insert_node(__res.first, __res.second,
23866: static_cast<_Link_type>(__ptr));
23866: }
23866: }
23866: }
23866:
23866:
23866: template<typename _Compare2>
23866: void
23866: _M_merge_equal(_Compatible_tree<_Compare2>& __src) noexcept
23866: {
23866: using _Merge_helper = _Rb_tree_merge_helper<_Rb_tree, _Compare2>;
23866: for (auto __i = __src.begin(), __end = __src.end(); __i != __end;)
23866: {
23866: auto __pos = __i++;
23866: auto __res = _M_get_insert_equal_pos(_KeyOfValue()(*__pos));
23866: if (__res.second)
23866: {
23866: auto& __src_impl = _Merge_helper::_S_get_impl(__src);
23866: auto __ptr = _Rb_tree_rebalance_for_erase(
23866: __pos._M_node, __src_impl._M_header);
23866: --__src_impl._M_node_count;
23866: _M_insert_node(__res.first, __res.second,
23866: static_cast<_Link_type>(__ptr));
23866: }
23866: }
23866: }
23866:
23866:
23866: friend bool
23866: operator==(const _Rb_tree& __x, const _Rb_tree& __y)
23866: {
23866: return __x.size() == __y.size()
23866: && std::equal(__x.begin(), __x.end(), __y.begin());
23866: }
23866: # 1627 "/usr/include/c++/10/bits/stl_tree.h" 3
23866: friend bool
23866: operator<(const _Rb_tree& __x, const _Rb_tree& __y)
23866: {
23866: return std::lexicographical_compare(__x.begin(), __x.end(),
23866: __y.begin(), __y.end());
23866: }
23866:
23866: friend bool __attribute__ ((__deprecated__))
23866: operator!=(const _Rb_tree& __x, const _Rb_tree& __y)
23866: { return !(__x == __y); }
23866:
23866: friend bool __attribute__ ((__deprecated__))
23866: operator>(const _Rb_tree& __x, const _Rb_tree& __y)
23866: { return __y < __x; }
23866:
23866: friend bool __attribute__ ((__deprecated__))
23866: operator<=(const _Rb_tree& __x, const _Rb_tree& __y)
23866: { return !(__y < __x); }
23866:
23866: friend bool __attribute__ ((__deprecated__))
23866: operator>=(const _Rb_tree& __x, const _Rb_tree& __y)
23866: { return !(__x < __y); }
23866:
23866: };
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: inline void
23866: swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
23866: { __x.swap(__y); }
23866:
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: void
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: _M_move_data(_Rb_tree& __x, false_type)
23866: {
23866: if (_M_get_Node_allocator() == __x._M_get_Node_allocator())
23866: _M_move_data(__x, true_type());
23866: else
23866: {
23866: _Alloc_node __an(*this);
23866: auto __lbd =
23866: [&__an](const value_type& __cval)
23866: {
23866: auto& __val = const_cast<value_type&>(__cval);
23866: return __an(std::move_if_noexcept(__val));
23866: };
23866: _M_root() = _M_copy(__x, __lbd);
23866: }
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: inline void
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: _M_move_assign(_Rb_tree& __x, true_type)
23866: {
23866: clear();
23866: if (__x._M_root() != nullptr)
23866: _M_move_data(__x, true_type());
23866: std::__alloc_on_move(_M_get_Node_allocator(),
23866: __x._M_get_Node_allocator());
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: void
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: _M_move_assign(_Rb_tree& __x, false_type)
23866: {
23866: if (_M_get_Node_allocator() == __x._M_get_Node_allocator())
23866: return _M_move_assign(__x, true_type{});
23866:
23866:
23866:
23866: _Reuse_or_alloc_node __roan(*this);
23866: _M_impl._M_reset();
23866: if (__x._M_root() != nullptr)
23866: {
23866: auto __lbd =
23866: [&__roan](const value_type& __cval)
23866: {
23866: auto& __val = const_cast<value_type&>(__cval);
23866: return __roan(std::move(__val));
23866: };
23866: _M_root() = _M_copy(__x, __lbd);
23866: __x.clear();
23866: }
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: inline _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: operator=(_Rb_tree&& __x)
23866: noexcept(_Alloc_traits::_S_nothrow_move()
23866: && is_nothrow_move_assignable<_Compare>::value)
23866: {
23866: _M_impl._M_key_compare = std::move(__x._M_impl._M_key_compare);
23866: _M_move_assign(__x, __bool_constant<_Alloc_traits::_S_nothrow_move()>());
23866: return *this;
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: template<typename _Iterator>
23866: void
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: _M_assign_unique(_Iterator __first, _Iterator __last)
23866: {
23866: _Reuse_or_alloc_node __roan(*this);
23866: _M_impl._M_reset();
23866: for (; __first != __last; ++__first)
23866: _M_insert_unique_(end(), *__first, __roan);
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: template<typename _Iterator>
23866: void
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: _M_assign_equal(_Iterator __first, _Iterator __last)
23866: {
23866: _Reuse_or_alloc_node __roan(*this);
23866: _M_impl._M_reset();
23866: for (; __first != __last; ++__first)
23866: _M_insert_equal_(end(), *__first, __roan);
23866: }
23866:
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: operator=(const _Rb_tree& __x)
23866: {
23866: if (this != &__x)
23866: {
23866:
23866:
23866: if (_Alloc_traits::_S_propagate_on_copy_assign())
23866: {
23866: auto& __this_alloc = this->_M_get_Node_allocator();
23866: auto& __that_alloc = __x._M_get_Node_allocator();
23866: if (!_Alloc_traits::_S_always_equal()
23866: && __this_alloc != __that_alloc)
23866: {
23866:
23866:
23866: clear();
23866: std::__alloc_on_copy(__this_alloc, __that_alloc);
23866: }
23866: }
23866:
23866:
23866: _Reuse_or_alloc_node __roan(*this);
23866: _M_impl._M_reset();
23866: _M_impl._M_key_compare = __x._M_impl._M_key_compare;
23866: if (__x._M_root() != 0)
23866: _M_root() = _M_copy(__x, __roan);
23866: }
23866:
23866: return *this;
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866:
23866: template<typename _Arg, typename _NodeGen>
23866:
23866:
23866:
23866: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: _M_insert_(_Base_ptr __x, _Base_ptr __p,
23866:
23866: _Arg&& __v,
23866:
23866:
23866:
23866: _NodeGen& __node_gen)
23866: {
23866: bool __insert_left = (__x != 0 || __p == _M_end()
23866: || _M_impl._M_key_compare(_KeyOfValue()(__v),
23866: _S_key(__p)));
23866:
23866: _Link_type __z = __node_gen(std::forward<_Arg>(__v));
23866:
23866: _Rb_tree_insert_and_rebalance(__insert_left, __z, __p,
23866: this->_M_impl._M_header);
23866: ++_M_impl._M_node_count;
23866: return iterator(__z);
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866:
23866: template<typename _Arg>
23866:
23866: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866:
23866: _M_insert_lower(_Base_ptr __p, _Arg&& __v)
23866:
23866:
23866:
23866: {
23866: bool __insert_left = (__p == _M_end()
23866: || !_M_impl._M_key_compare(_S_key(__p),
23866: _KeyOfValue()(__v)));
23866:
23866: _Link_type __z = _M_create_node(std::forward<_Arg>(__v));
23866:
23866: _Rb_tree_insert_and_rebalance(__insert_left, __z, __p,
23866: this->_M_impl._M_header);
23866: ++_M_impl._M_node_count;
23866: return iterator(__z);
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866:
23866: template<typename _Arg>
23866:
23866: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866:
23866: _M_insert_equal_lower(_Arg&& __v)
23866:
23866:
23866:
23866: {
23866: _Link_type __x = _M_begin();
23866: _Base_ptr __y = _M_end();
23866: while (__x != 0)
23866: {
23866: __y = __x;
23866: __x = !_M_impl._M_key_compare(_S_key(__x), _KeyOfValue()(__v)) ?
23866: _S_left(__x) : _S_right(__x);
23866: }
23866: return _M_insert_lower(__y, std::forward<_Arg>(__v));
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KoV,
23866: typename _Compare, typename _Alloc>
23866: template<typename _NodeGen>
23866: typename _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::_Link_type
23866: _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::
23866: _M_copy(_Const_Link_type __x, _Base_ptr __p, _NodeGen& __node_gen)
23866: {
23866:
23866: _Link_type __top = _M_clone_node(__x, __node_gen);
23866: __top->_M_parent = __p;
23866:
23866: try
23866: {
23866: if (__x->_M_right)
23866: __top->_M_right = _M_copy(_S_right(__x), __top, __node_gen);
23866: __p = __top;
23866: __x = _S_left(__x);
23866:
23866: while (__x != 0)
23866: {
23866: _Link_type __y = _M_clone_node(__x, __node_gen);
23866: __p->_M_left = __y;
23866: __y->_M_parent = __p;
23866: if (__x->_M_right)
23866: __y->_M_right = _M_copy(_S_right(__x), __y, __node_gen);
23866: __p = __y;
23866: __x = _S_left(__x);
23866: }
23866: }
23866: catch(...)
23866: {
23866: _M_erase(__top);
23866: throw;
23866: }
23866: return __top;
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: void
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: _M_erase(_Link_type __x)
23866: {
23866:
23866: while (__x != 0)
23866: {
23866: _M_erase(_S_right(__x));
23866: _Link_type __y = _S_left(__x);
23866: _M_drop_node(__x);
23866: __x = __y;
23866: }
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: typename _Rb_tree<_Key, _Val, _KeyOfValue,
23866: _Compare, _Alloc>::iterator
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: _M_lower_bound(_Link_type __x, _Base_ptr __y,
23866: const _Key& __k)
23866: {
23866: while (__x != 0)
23866: if (!_M_impl._M_key_compare(_S_key(__x), __k))
23866: __y = __x, __x = _S_left(__x);
23866: else
23866: __x = _S_right(__x);
23866: return iterator(__y);
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: typename _Rb_tree<_Key, _Val, _KeyOfValue,
23866: _Compare, _Alloc>::const_iterator
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: _M_lower_bound(_Const_Link_type __x, _Const_Base_ptr __y,
23866: const _Key& __k) const
23866: {
23866: while (__x != 0)
23866: if (!_M_impl._M_key_compare(_S_key(__x), __k))
23866: __y = __x, __x = _S_left(__x);
23866: else
23866: __x = _S_right(__x);
23866: return const_iterator(__y);
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: typename _Rb_tree<_Key, _Val, _KeyOfValue,
23866: _Compare, _Alloc>::iterator
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: _M_upper_bound(_Link_type __x, _Base_ptr __y,
23866: const _Key& __k)
23866: {
23866: while (__x != 0)
23866: if (_M_impl._M_key_compare(__k, _S_key(__x)))
23866: __y = __x, __x = _S_left(__x);
23866: else
23866: __x = _S_right(__x);
23866: return iterator(__y);
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: typename _Rb_tree<_Key, _Val, _KeyOfValue,
23866: _Compare, _Alloc>::const_iterator
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: _M_upper_bound(_Const_Link_type __x, _Const_Base_ptr __y,
23866: const _Key& __k) const
23866: {
23866: while (__x != 0)
23866: if (_M_impl._M_key_compare(__k, _S_key(__x)))
23866: __y = __x, __x = _S_left(__x);
23866: else
23866: __x = _S_right(__x);
23866: return const_iterator(__y);
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
23866: _Compare, _Alloc>::iterator,
23866: typename _Rb_tree<_Key, _Val, _KeyOfValue,
23866: _Compare, _Alloc>::iterator>
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: equal_range(const _Key& __k)
23866: {
23866: _Link_type __x = _M_begin();
23866: _Base_ptr __y = _M_end();
23866: while (__x != 0)
23866: {
23866: if (_M_impl._M_key_compare(_S_key(__x), __k))
23866: __x = _S_right(__x);
23866: else if (_M_impl._M_key_compare(__k, _S_key(__x)))
23866: __y = __x, __x = _S_left(__x);
23866: else
23866: {
23866: _Link_type __xu(__x);
23866: _Base_ptr __yu(__y);
23866: __y = __x, __x = _S_left(__x);
23866: __xu = _S_right(__xu);
23866: return pair<iterator,
23866: iterator>(_M_lower_bound(__x, __y, __k),
23866: _M_upper_bound(__xu, __yu, __k));
23866: }
23866: }
23866: return pair<iterator, iterator>(iterator(__y),
23866: iterator(__y));
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
23866: _Compare, _Alloc>::const_iterator,
23866: typename _Rb_tree<_Key, _Val, _KeyOfValue,
23866: _Compare, _Alloc>::const_iterator>
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: equal_range(const _Key& __k) const
23866: {
23866: _Const_Link_type __x = _M_begin();
23866: _Const_Base_ptr __y = _M_end();
23866: while (__x != 0)
23866: {
23866: if (_M_impl._M_key_compare(_S_key(__x), __k))
23866: __x = _S_right(__x);
23866: else if (_M_impl._M_key_compare(__k, _S_key(__x)))
23866: __y = __x, __x = _S_left(__x);
23866: else
23866: {
23866: _Const_Link_type __xu(__x);
23866: _Const_Base_ptr __yu(__y);
23866: __y = __x, __x = _S_left(__x);
23866: __xu = _S_right(__xu);
23866: return pair<const_iterator,
23866: const_iterator>(_M_lower_bound(__x, __y, __k),
23866: _M_upper_bound(__xu, __yu, __k));
23866: }
23866: }
23866: return pair<const_iterator, const_iterator>(const_iterator(__y),
23866: const_iterator(__y));
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: void
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: swap(_Rb_tree& __t)
23866: noexcept(__is_nothrow_swappable<_Compare>::value)
23866: {
23866: if (_M_root() == 0)
23866: {
23866: if (__t._M_root() != 0)
23866: _M_impl._M_move_data(__t._M_impl);
23866: }
23866: else if (__t._M_root() == 0)
23866: __t._M_impl._M_move_data(_M_impl);
23866: else
23866: {
23866: std::swap(_M_root(),__t._M_root());
23866: std::swap(_M_leftmost(),__t._M_leftmost());
23866: std::swap(_M_rightmost(),__t._M_rightmost());
23866:
23866: _M_root()->_M_parent = _M_end();
23866: __t._M_root()->_M_parent = __t._M_end();
23866: std::swap(this->_M_impl._M_node_count, __t._M_impl._M_node_count);
23866: }
23866:
23866: std::swap(this->_M_impl._M_key_compare, __t._M_impl._M_key_compare);
23866:
23866: _Alloc_traits::_S_on_swap(_M_get_Node_allocator(),
23866: __t._M_get_Node_allocator());
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
23866: _Compare, _Alloc>::_Base_ptr,
23866: typename _Rb_tree<_Key, _Val, _KeyOfValue,
23866: _Compare, _Alloc>::_Base_ptr>
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: _M_get_insert_unique_pos(const key_type& __k)
23866: {
23866: typedef pair<_Base_ptr, _Base_ptr> _Res;
23866: _Link_type __x = _M_begin();
23866: _Base_ptr __y = _M_end();
23866: bool __comp = true;
23866: while (__x != 0)
23866: {
23866: __y = __x;
23866: __comp = _M_impl._M_key_compare(__k, _S_key(__x));
23866: __x = __comp ? _S_left(__x) : _S_right(__x);
23866: }
23866: iterator __j = iterator(__y);
23866: if (__comp)
23866: {
23866: if (__j == begin())
23866: return _Res(__x, __y);
23866: else
23866: --__j;
23866: }
23866: if (_M_impl._M_key_compare(_S_key(__j._M_node), __k))
23866: return _Res(__x, __y);
23866: return _Res(__j._M_node, 0);
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
23866: _Compare, _Alloc>::_Base_ptr,
23866: typename _Rb_tree<_Key, _Val, _KeyOfValue,
23866: _Compare, _Alloc>::_Base_ptr>
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: _M_get_insert_equal_pos(const key_type& __k)
23866: {
23866: typedef pair<_Base_ptr, _Base_ptr> _Res;
23866: _Link_type __x = _M_begin();
23866: _Base_ptr __y = _M_end();
23866: while (__x != 0)
23866: {
23866: __y = __x;
23866: __x = _M_impl._M_key_compare(__k, _S_key(__x)) ?
23866: _S_left(__x) : _S_right(__x);
23866: }
23866: return _Res(__x, __y);
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866:
23866: template<typename _Arg>
23866:
23866: pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
23866: _Compare, _Alloc>::iterator, bool>
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866:
23866: _M_insert_unique(_Arg&& __v)
23866:
23866:
23866:
23866: {
23866: typedef pair<iterator, bool> _Res;
23866: pair<_Base_ptr, _Base_ptr> __res
23866: = _M_get_insert_unique_pos(_KeyOfValue()(__v));
23866:
23866: if (__res.second)
23866: {
23866: _Alloc_node __an(*this);
23866: return _Res(_M_insert_(__res.first, __res.second,
23866: std::forward<_Arg>(__v), __an),
23866: true);
23866: }
23866:
23866: return _Res(iterator(__res.first), false);
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866:
23866: template<typename _Arg>
23866:
23866: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866:
23866: _M_insert_equal(_Arg&& __v)
23866:
23866:
23866:
23866: {
23866: pair<_Base_ptr, _Base_ptr> __res
23866: = _M_get_insert_equal_pos(_KeyOfValue()(__v));
23866: _Alloc_node __an(*this);
23866: return _M_insert_(__res.first, __res.second,
23866: std::forward<_Arg>(__v), __an);
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
23866: _Compare, _Alloc>::_Base_ptr,
23866: typename _Rb_tree<_Key, _Val, _KeyOfValue,
23866: _Compare, _Alloc>::_Base_ptr>
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: _M_get_insert_hint_unique_pos(const_iterator __position,
23866: const key_type& __k)
23866: {
23866: iterator __pos = __position._M_const_cast();
23866: typedef pair<_Base_ptr, _Base_ptr> _Res;
23866:
23866:
23866: if (__pos._M_node == _M_end())
23866: {
23866: if (size() > 0
23866: && _M_impl._M_key_compare(_S_key(_M_rightmost()), __k))
23866: return _Res(0, _M_rightmost());
23866: else
23866: return _M_get_insert_unique_pos(__k);
23866: }
23866: else if (_M_impl._M_key_compare(__k, _S_key(__pos._M_node)))
23866: {
23866:
23866: iterator __before = __pos;
23866: if (__pos._M_node == _M_leftmost())
23866: return _Res(_M_leftmost(), _M_leftmost());
23866: else if (_M_impl._M_key_compare(_S_key((--__before)._M_node), __k))
23866: {
23866: if (_S_right(__before._M_node) == 0)
23866: return _Res(0, __before._M_node);
23866: else
23866: return _Res(__pos._M_node, __pos._M_node);
23866: }
23866: else
23866: return _M_get_insert_unique_pos(__k);
23866: }
23866: else if (_M_impl._M_key_compare(_S_key(__pos._M_node), __k))
23866: {
23866:
23866: iterator __after = __pos;
23866: if (__pos._M_node == _M_rightmost())
23866: return _Res(0, _M_rightmost());
23866: else if (_M_impl._M_key_compare(__k, _S_key((++__after)._M_node)))
23866: {
23866: if (_S_right(__pos._M_node) == 0)
23866: return _Res(0, __pos._M_node);
23866: else
23866: return _Res(__after._M_node, __after._M_node);
23866: }
23866: else
23866: return _M_get_insert_unique_pos(__k);
23866: }
23866: else
23866:
23866: return _Res(__pos._M_node, 0);
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866:
23866: template<typename _Arg, typename _NodeGen>
23866:
23866:
23866:
23866: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: _M_insert_unique_(const_iterator __position,
23866:
23866: _Arg&& __v,
23866:
23866:
23866:
23866: _NodeGen& __node_gen)
23866: {
23866: pair<_Base_ptr, _Base_ptr> __res
23866: = _M_get_insert_hint_unique_pos(__position, _KeyOfValue()(__v));
23866:
23866: if (__res.second)
23866: return _M_insert_(__res.first, __res.second,
23866: std::forward<_Arg>(__v),
23866: __node_gen);
23866: return iterator(__res.first);
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
23866: _Compare, _Alloc>::_Base_ptr,
23866: typename _Rb_tree<_Key, _Val, _KeyOfValue,
23866: _Compare, _Alloc>::_Base_ptr>
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: _M_get_insert_hint_equal_pos(const_iterator __position, const key_type& __k)
23866: {
23866: iterator __pos = __position._M_const_cast();
23866: typedef pair<_Base_ptr, _Base_ptr> _Res;
23866:
23866:
23866: if (__pos._M_node == _M_end())
23866: {
23866: if (size() > 0
23866: && !_M_impl._M_key_compare(__k, _S_key(_M_rightmost())))
23866: return _Res(0, _M_rightmost());
23866: else
23866: return _M_get_insert_equal_pos(__k);
23866: }
23866: else if (!_M_impl._M_key_compare(_S_key(__pos._M_node), __k))
23866: {
23866:
23866: iterator __before = __pos;
23866: if (__pos._M_node == _M_leftmost())
23866: return _Res(_M_leftmost(), _M_leftmost());
23866: else if (!_M_impl._M_key_compare(__k, _S_key((--__before)._M_node)))
23866: {
23866: if (_S_right(__before._M_node) == 0)
23866: return _Res(0, __before._M_node);
23866: else
23866: return _Res(__pos._M_node, __pos._M_node);
23866: }
23866: else
23866: return _M_get_insert_equal_pos(__k);
23866: }
23866: else
23866: {
23866:
23866: iterator __after = __pos;
23866: if (__pos._M_node == _M_rightmost())
23866: return _Res(0, _M_rightmost());
23866: else if (!_M_impl._M_key_compare(_S_key((++__after)._M_node), __k))
23866: {
23866: if (_S_right(__pos._M_node) == 0)
23866: return _Res(0, __pos._M_node);
23866: else
23866: return _Res(__after._M_node, __after._M_node);
23866: }
23866: else
23866: return _Res(0, 0);
23866: }
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866:
23866: template<typename _Arg, typename _NodeGen>
23866:
23866:
23866:
23866: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: _M_insert_equal_(const_iterator __position,
23866:
23866: _Arg&& __v,
23866:
23866:
23866:
23866: _NodeGen& __node_gen)
23866: {
23866: pair<_Base_ptr, _Base_ptr> __res
23866: = _M_get_insert_hint_equal_pos(__position, _KeyOfValue()(__v));
23866:
23866: if (__res.second)
23866: return _M_insert_(__res.first, __res.second,
23866: std::forward<_Arg>(__v),
23866: __node_gen);
23866:
23866: return _M_insert_equal_lower(std::forward<_Arg>(__v));
23866: }
23866:
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: _M_insert_node(_Base_ptr __x, _Base_ptr __p, _Link_type __z)
23866: {
23866: bool __insert_left = (__x != 0 || __p == _M_end()
23866: || _M_impl._M_key_compare(_S_key(__z),
23866: _S_key(__p)));
23866:
23866: _Rb_tree_insert_and_rebalance(__insert_left, __z, __p,
23866: this->_M_impl._M_header);
23866: ++_M_impl._M_node_count;
23866: return iterator(__z);
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: _M_insert_lower_node(_Base_ptr __p, _Link_type __z)
23866: {
23866: bool __insert_left = (__p == _M_end()
23866: || !_M_impl._M_key_compare(_S_key(__p),
23866: _S_key(__z)));
23866:
23866: _Rb_tree_insert_and_rebalance(__insert_left, __z, __p,
23866: this->_M_impl._M_header);
23866: ++_M_impl._M_node_count;
23866: return iterator(__z);
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: _M_insert_equal_lower_node(_Link_type __z)
23866: {
23866: _Link_type __x = _M_begin();
23866: _Base_ptr __y = _M_end();
23866: while (__x != 0)
23866: {
23866: __y = __x;
23866: __x = !_M_impl._M_key_compare(_S_key(__x), _S_key(__z)) ?
23866: _S_left(__x) : _S_right(__x);
23866: }
23866: return _M_insert_lower_node(__y, __z);
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: template<typename... _Args>
23866: pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
23866: _Compare, _Alloc>::iterator, bool>
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: _M_emplace_unique(_Args&&... __args)
23866: {
23866: _Link_type __z = _M_create_node(std::forward<_Args>(__args)...);
23866:
23866: try
23866: {
23866: typedef pair<iterator, bool> _Res;
23866: auto __res = _M_get_insert_unique_pos(_S_key(__z));
23866: if (__res.second)
23866: return _Res(_M_insert_node(__res.first, __res.second, __z), true);
23866:
23866: _M_drop_node(__z);
23866: return _Res(iterator(__res.first), false);
23866: }
23866: catch(...)
23866: {
23866: _M_drop_node(__z);
23866: throw;
23866: }
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: template<typename... _Args>
23866: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: _M_emplace_equal(_Args&&... __args)
23866: {
23866: _Link_type __z = _M_create_node(std::forward<_Args>(__args)...);
23866:
23866: try
23866: {
23866: auto __res = _M_get_insert_equal_pos(_S_key(__z));
23866: return _M_insert_node(__res.first, __res.second, __z);
23866: }
23866: catch(...)
23866: {
23866: _M_drop_node(__z);
23866: throw;
23866: }
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: template<typename... _Args>
23866: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: _M_emplace_hint_unique(const_iterator __pos, _Args&&... __args)
23866: {
23866: _Link_type __z = _M_create_node(std::forward<_Args>(__args)...);
23866:
23866: try
23866: {
23866: auto __res = _M_get_insert_hint_unique_pos(__pos, _S_key(__z));
23866:
23866: if (__res.second)
23866: return _M_insert_node(__res.first, __res.second, __z);
23866:
23866: _M_drop_node(__z);
23866: return iterator(__res.first);
23866: }
23866: catch(...)
23866: {
23866: _M_drop_node(__z);
23866: throw;
23866: }
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: template<typename... _Args>
23866: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: _M_emplace_hint_equal(const_iterator __pos, _Args&&... __args)
23866: {
23866: _Link_type __z = _M_create_node(std::forward<_Args>(__args)...);
23866:
23866: try
23866: {
23866: auto __res = _M_get_insert_hint_equal_pos(__pos, _S_key(__z));
23866:
23866: if (__res.second)
23866: return _M_insert_node(__res.first, __res.second, __z);
23866:
23866: return _M_insert_equal_lower_node(__z);
23866: }
23866: catch(...)
23866: {
23866: _M_drop_node(__z);
23866: throw;
23866: }
23866: }
23866:
23866:
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: void
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: _M_erase_aux(const_iterator __position)
23866: {
23866: _Link_type __y =
23866: static_cast<_Link_type>(_Rb_tree_rebalance_for_erase
23866: (const_cast<_Base_ptr>(__position._M_node),
23866: this->_M_impl._M_header));
23866: _M_drop_node(__y);
23866: --_M_impl._M_node_count;
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: void
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: _M_erase_aux(const_iterator __first, const_iterator __last)
23866: {
23866: if (__first == begin() && __last == end())
23866: clear();
23866: else
23866: while (__first != __last)
23866: _M_erase_aux(__first++);
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: erase(const _Key& __x)
23866: {
23866: pair<iterator, iterator> __p = equal_range(__x);
23866: const size_type __old_size = size();
23866: _M_erase_aux(__p.first, __p.second);
23866: return __old_size - size();
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: typename _Rb_tree<_Key, _Val, _KeyOfValue,
23866: _Compare, _Alloc>::iterator
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: find(const _Key& __k)
23866: {
23866: iterator __j = _M_lower_bound(_M_begin(), _M_end(), __k);
23866: return (__j == end()
23866: || _M_impl._M_key_compare(__k,
23866: _S_key(__j._M_node))) ? end() : __j;
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: typename _Rb_tree<_Key, _Val, _KeyOfValue,
23866: _Compare, _Alloc>::const_iterator
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: find(const _Key& __k) const
23866: {
23866: const_iterator __j = _M_lower_bound(_M_begin(), _M_end(), __k);
23866: return (__j == end()
23866: || _M_impl._M_key_compare(__k,
23866: _S_key(__j._M_node))) ? end() : __j;
23866: }
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type
23866: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
23866: count(const _Key& __k) const
23866: {
23866: pair<const_iterator, const_iterator> __p = equal_range(__k);
23866: const size_type __n = std::distance(__p.first, __p.second);
23866: return __n;
23866: }
23866:
23866: __attribute__ ((__pure__)) unsigned int
23866: _Rb_tree_black_count(const _Rb_tree_node_base* __node,
23866: const _Rb_tree_node_base* __root) throw ();
23866:
23866: template<typename _Key, typename _Val, typename _KeyOfValue,
23866: typename _Compare, typename _Alloc>
23866: bool
23866: _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::__rb_verify() const
23866: {
23866: if (_M_impl._M_node_count == 0 || begin() == end())
23866: return _M_impl._M_node_count == 0 && begin() == end()
23866: && this->_M_impl._M_header._M_left == _M_end()
23866: && this->_M_impl._M_header._M_right == _M_end();
23866:
23866: unsigned int __len = _Rb_tree_black_count(_M_leftmost(), _M_root());
23866: for (const_iterator __it = begin(); __it != end(); ++__it)
23866: {
23866: _Const_Link_type __x = static_cast<_Const_Link_type>(__it._M_node);
23866: _Const_Link_type __L = _S_left(__x);
23866: _Const_Link_type __R = _S_right(__x);
23866:
23866: if (__x->_M_color == _S_red)
23866: if ((__L && __L->_M_color == _S_red)
23866: || (__R && __R->_M_color == _S_red))
23866: return false;
23866:
23866: if (__L && _M_impl._M_key_compare(_S_key(__x), _S_key(__L)))
23866: return false;
23866: if (__R && _M_impl._M_key_compare(_S_key(__R), _S_key(__x)))
23866: return false;
23866:
23866: if (!__L && !__R && _Rb_tree_black_count(__x, _M_root()) != __len)
23866: return false;
23866: }
23866:
23866: if (_M_leftmost() != _Rb_tree_node_base::_S_minimum(_M_root()))
23866: return false;
23866: if (_M_rightmost() != _Rb_tree_node_base::_S_maximum(_M_root()))
23866: return false;
23866: return true;
23866: }
23866:
23866:
23866:
23866: template<typename _Key, typename _Val, typename _Sel, typename _Cmp1,
23866: typename _Alloc, typename _Cmp2>
23866: struct _Rb_tree_merge_helper<_Rb_tree<_Key, _Val, _Sel, _Cmp1, _Alloc>,
23866: _Cmp2>
23866: {
23866: private:
23866: friend class _Rb_tree<_Key, _Val, _Sel, _Cmp1, _Alloc>;
23866:
23866: static auto&
23866: _S_get_impl(_Rb_tree<_Key, _Val, _Sel, _Cmp2, _Alloc>& __tree)
23866: { return __tree._M_impl; }
23866: };
23866:
23866:
23866:
23866: }
23866: # 61 "/usr/include/c++/10/map" 2 3
23866: # 1 "/usr/include/c++/10/bits/stl_map.h" 1 3
23866: # 57 "/usr/include/c++/10/bits/stl_map.h" 3
23866: #define _STL_MAP_H 1
23866: # 66 "/usr/include/c++/10/bits/stl_map.h" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>
23866: class multimap;
23866: # 98 "/usr/include/c++/10/bits/stl_map.h" 3
23866: template <typename _Key, typename _Tp, typename _Compare = std::less<_Key>,
23866: typename _Alloc = std::allocator<std::pair<const _Key, _Tp> > >
23866: class map
23866: {
23866: public:
23866: typedef _Key key_type;
23866: typedef _Tp mapped_type;
23866: typedef std::pair<const _Key, _Tp> value_type;
23866: typedef _Compare key_compare;
23866: typedef _Alloc allocator_type;
23866:
23866: private:
23866: # 123 "/usr/include/c++/10/bits/stl_map.h" 3
23866: static_assert(is_same<typename _Alloc::value_type, value_type>::value,
23866: "std::map must have the same value_type as its allocator");
23866:
23866:
23866:
23866: public:
23866: class value_compare
23866: : public std::binary_function<value_type, value_type, bool>
23866: {
23866: friend class map<_Key, _Tp, _Compare, _Alloc>;
23866: protected:
23866: _Compare comp;
23866:
23866: value_compare(_Compare __c)
23866: : comp(__c) { }
23866:
23866: public:
23866: bool operator()(const value_type& __x, const value_type& __y) const
23866: { return comp(__x.first, __y.first); }
23866: };
23866:
23866: private:
23866:
23866: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template
23866: rebind<value_type>::other _Pair_alloc_type;
23866:
23866: typedef _Rb_tree<key_type, value_type, _Select1st<value_type>,
23866: key_compare, _Pair_alloc_type> _Rep_type;
23866:
23866:
23866: _Rep_type _M_t;
23866:
23866: typedef __gnu_cxx::__alloc_traits<_Pair_alloc_type> _Alloc_traits;
23866:
23866: public:
23866:
23866:
23866: typedef typename _Alloc_traits::pointer pointer;
23866: typedef typename _Alloc_traits::const_pointer const_pointer;
23866: typedef typename _Alloc_traits::reference reference;
23866: typedef typename _Alloc_traits::const_reference const_reference;
23866: typedef typename _Rep_type::iterator iterator;
23866: typedef typename _Rep_type::const_iterator const_iterator;
23866: typedef typename _Rep_type::size_type size_type;
23866: typedef typename _Rep_type::difference_type difference_type;
23866: typedef typename _Rep_type::reverse_iterator reverse_iterator;
23866: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
23866:
23866:
23866: using node_type = typename _Rep_type::node_type;
23866: using insert_return_type = typename _Rep_type::insert_return_type;
23866: # 185 "/usr/include/c++/10/bits/stl_map.h" 3
23866: map() = default;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: explicit
23866: map(const _Compare& __comp,
23866: const allocator_type& __a = allocator_type())
23866: : _M_t(__comp, _Pair_alloc_type(__a)) { }
23866: # 207 "/usr/include/c++/10/bits/stl_map.h" 3
23866: map(const map&) = default;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: map(map&&) = default;
23866: # 228 "/usr/include/c++/10/bits/stl_map.h" 3
23866: map(initializer_list<value_type> __l,
23866: const _Compare& __comp = _Compare(),
23866: const allocator_type& __a = allocator_type())
23866: : _M_t(__comp, _Pair_alloc_type(__a))
23866: { _M_t._M_insert_range_unique(__l.begin(), __l.end()); }
23866:
23866:
23866: explicit
23866: map(const allocator_type& __a)
23866: : _M_t(_Pair_alloc_type(__a)) { }
23866:
23866:
23866: map(const map& __m, const allocator_type& __a)
23866: : _M_t(__m._M_t, _Pair_alloc_type(__a)) { }
23866:
23866:
23866: map(map&& __m, const allocator_type& __a)
23866: noexcept(is_nothrow_copy_constructible<_Compare>::value
23866: && _Alloc_traits::_S_always_equal())
23866: : _M_t(std::move(__m._M_t), _Pair_alloc_type(__a)) { }
23866:
23866:
23866: map(initializer_list<value_type> __l, const allocator_type& __a)
23866: : _M_t(_Pair_alloc_type(__a))
23866: { _M_t._M_insert_range_unique(__l.begin(), __l.end()); }
23866:
23866:
23866: template<typename _InputIterator>
23866: map(_InputIterator __first, _InputIterator __last,
23866: const allocator_type& __a)
23866: : _M_t(_Pair_alloc_type(__a))
23866: { _M_t._M_insert_range_unique(__first, __last); }
23866: # 272 "/usr/include/c++/10/bits/stl_map.h" 3
23866: template<typename _InputIterator>
23866: map(_InputIterator __first, _InputIterator __last)
23866: : _M_t()
23866: { _M_t._M_insert_range_unique(__first, __last); }
23866: # 289 "/usr/include/c++/10/bits/stl_map.h" 3
23866: template<typename _InputIterator>
23866: map(_InputIterator __first, _InputIterator __last,
23866: const _Compare& __comp,
23866: const allocator_type& __a = allocator_type())
23866: : _M_t(__comp, _Pair_alloc_type(__a))
23866: { _M_t._M_insert_range_unique(__first, __last); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: ~map() = default;
23866: # 318 "/usr/include/c++/10/bits/stl_map.h" 3
23866: map&
23866: operator=(const map&) = default;
23866:
23866:
23866: map&
23866: operator=(map&&) = default;
23866: # 336 "/usr/include/c++/10/bits/stl_map.h" 3
23866: map&
23866: operator=(initializer_list<value_type> __l)
23866: {
23866: _M_t._M_assign_unique(__l.begin(), __l.end());
23866: return *this;
23866: }
23866:
23866:
23866:
23866: allocator_type
23866: get_allocator() const noexcept
23866: { return allocator_type(_M_t.get_allocator()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: iterator
23866: begin() noexcept
23866: { return _M_t.begin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_iterator
23866: begin() const noexcept
23866: { return _M_t.begin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: iterator
23866: end() noexcept
23866: { return _M_t.end(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_iterator
23866: end() const noexcept
23866: { return _M_t.end(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: reverse_iterator
23866: rbegin() noexcept
23866: { return _M_t.rbegin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_reverse_iterator
23866: rbegin() const noexcept
23866: { return _M_t.rbegin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: reverse_iterator
23866: rend() noexcept
23866: { return _M_t.rend(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_reverse_iterator
23866: rend() const noexcept
23866: { return _M_t.rend(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_iterator
23866: cbegin() const noexcept
23866: { return _M_t.begin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_iterator
23866: cend() const noexcept
23866: { return _M_t.end(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_reverse_iterator
23866: crbegin() const noexcept
23866: { return _M_t.rbegin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_reverse_iterator
23866: crend() const noexcept
23866: { return _M_t.rend(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: [[__nodiscard__]] bool
23866: empty() const noexcept
23866: { return _M_t.empty(); }
23866:
23866:
23866: size_type
23866: size() const noexcept
23866: { return _M_t.size(); }
23866:
23866:
23866: size_type
23866: max_size() const noexcept
23866: { return _M_t.max_size(); }
23866: # 491 "/usr/include/c++/10/bits/stl_map.h" 3
23866: mapped_type&
23866: operator[](const key_type& __k)
23866: {
23866:
23866:
23866:
23866: iterator __i = lower_bound(__k);
23866:
23866: if (__i == end() || key_comp()(__k, (*__i).first))
23866:
23866: __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct,
23866: std::tuple<const key_type&>(__k),
23866: std::tuple<>());
23866:
23866:
23866:
23866: return (*__i).second;
23866: }
23866:
23866:
23866: mapped_type&
23866: operator[](key_type&& __k)
23866: {
23866:
23866:
23866:
23866: iterator __i = lower_bound(__k);
23866:
23866: if (__i == end() || key_comp()(__k, (*__i).first))
23866: __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct,
23866: std::forward_as_tuple(std::move(__k)),
23866: std::tuple<>());
23866: return (*__i).second;
23866: }
23866: # 536 "/usr/include/c++/10/bits/stl_map.h" 3
23866: mapped_type&
23866: at(const key_type& __k)
23866: {
23866: iterator __i = lower_bound(__k);
23866: if (__i == end() || key_comp()(__k, (*__i).first))
23866: __throw_out_of_range(("map::at"));
23866: return (*__i).second;
23866: }
23866:
23866: const mapped_type&
23866: at(const key_type& __k) const
23866: {
23866: const_iterator __i = lower_bound(__k);
23866: if (__i == end() || key_comp()(__k, (*__i).first))
23866: __throw_out_of_range(("map::at"));
23866: return (*__i).second;
23866: }
23866: # 574 "/usr/include/c++/10/bits/stl_map.h" 3
23866: template<typename... _Args>
23866: std::pair<iterator, bool>
23866: emplace(_Args&&... __args)
23866: { return _M_t._M_emplace_unique(std::forward<_Args>(__args)...); }
23866: # 604 "/usr/include/c++/10/bits/stl_map.h" 3
23866: template<typename... _Args>
23866: iterator
23866: emplace_hint(const_iterator __pos, _Args&&... __args)
23866: {
23866: return _M_t._M_emplace_hint_unique(__pos,
23866: std::forward<_Args>(__args)...);
23866: }
23866:
23866:
23866:
23866:
23866: node_type
23866: extract(const_iterator __pos)
23866: {
23866: ;
23866: return _M_t.extract(__pos);
23866: }
23866:
23866:
23866: node_type
23866: extract(const key_type& __x)
23866: { return _M_t.extract(__x); }
23866:
23866:
23866: insert_return_type
23866: insert(node_type&& __nh)
23866: { return _M_t._M_reinsert_node_unique(std::move(__nh)); }
23866:
23866:
23866: iterator
23866: insert(const_iterator __hint, node_type&& __nh)
23866: { return _M_t._M_reinsert_node_hint_unique(__hint, std::move(__nh)); }
23866:
23866: template<typename, typename>
23866: friend class std::_Rb_tree_merge_helper;
23866:
23866: template<typename _Cmp2>
23866: void
23866: merge(map<_Key, _Tp, _Cmp2, _Alloc>& __source)
23866: {
23866: using _Merge_helper = _Rb_tree_merge_helper<map, _Cmp2>;
23866: _M_t._M_merge_unique(_Merge_helper::_S_get_tree(__source));
23866: }
23866:
23866: template<typename _Cmp2>
23866: void
23866: merge(map<_Key, _Tp, _Cmp2, _Alloc>&& __source)
23866: { merge(__source); }
23866:
23866: template<typename _Cmp2>
23866: void
23866: merge(multimap<_Key, _Tp, _Cmp2, _Alloc>& __source)
23866: {
23866: using _Merge_helper = _Rb_tree_merge_helper<map, _Cmp2>;
23866: _M_t._M_merge_unique(_Merge_helper::_S_get_tree(__source));
23866: }
23866:
23866: template<typename _Cmp2>
23866: void
23866: merge(multimap<_Key, _Tp, _Cmp2, _Alloc>&& __source)
23866: { merge(__source); }
23866:
23866:
23866:
23866: #define __cpp_lib_map_try_emplace 201411
23866: # 689 "/usr/include/c++/10/bits/stl_map.h" 3
23866: template <typename... _Args>
23866: pair<iterator, bool>
23866: try_emplace(const key_type& __k, _Args&&... __args)
23866: {
23866: iterator __i = lower_bound(__k);
23866: if (__i == end() || key_comp()(__k, (*__i).first))
23866: {
23866: __i = emplace_hint(__i, std::piecewise_construct,
23866: std::forward_as_tuple(__k),
23866: std::forward_as_tuple(
23866: std::forward<_Args>(__args)...));
23866: return {__i, true};
23866: }
23866: return {__i, false};
23866: }
23866:
23866:
23866: template <typename... _Args>
23866: pair<iterator, bool>
23866: try_emplace(key_type&& __k, _Args&&... __args)
23866: {
23866: iterator __i = lower_bound(__k);
23866: if (__i == end() || key_comp()(__k, (*__i).first))
23866: {
23866: __i = emplace_hint(__i, std::piecewise_construct,
23866: std::forward_as_tuple(std::move(__k)),
23866: std::forward_as_tuple(
23866: std::forward<_Args>(__args)...));
23866: return {__i, true};
23866: }
23866: return {__i, false};
23866: }
23866: # 749 "/usr/include/c++/10/bits/stl_map.h" 3
23866: template <typename... _Args>
23866: iterator
23866: try_emplace(const_iterator __hint, const key_type& __k,
23866: _Args&&... __args)
23866: {
23866: iterator __i;
23866: auto __true_hint = _M_t._M_get_insert_hint_unique_pos(__hint, __k);
23866: if (__true_hint.second)
23866: __i = emplace_hint(iterator(__true_hint.second),
23866: std::piecewise_construct,
23866: std::forward_as_tuple(__k),
23866: std::forward_as_tuple(
23866: std::forward<_Args>(__args)...));
23866: else
23866: __i = iterator(__true_hint.first);
23866: return __i;
23866: }
23866:
23866:
23866: template <typename... _Args>
23866: iterator
23866: try_emplace(const_iterator __hint, key_type&& __k, _Args&&... __args)
23866: {
23866: iterator __i;
23866: auto __true_hint = _M_t._M_get_insert_hint_unique_pos(__hint, __k);
23866: if (__true_hint.second)
23866: __i = emplace_hint(iterator(__true_hint.second),
23866: std::piecewise_construct,
23866: std::forward_as_tuple(std::move(__k)),
23866: std::forward_as_tuple(
23866: std::forward<_Args>(__args)...));
23866: else
23866: __i = iterator(__true_hint.first);
23866: return __i;
23866: }
23866: # 802 "/usr/include/c++/10/bits/stl_map.h" 3
23866: std::pair<iterator, bool>
23866: insert(const value_type& __x)
23866: { return _M_t._M_insert_unique(__x); }
23866:
23866:
23866:
23866:
23866: std::pair<iterator, bool>
23866: insert(value_type&& __x)
23866: { return _M_t._M_insert_unique(std::move(__x)); }
23866:
23866: template<typename _Pair>
23866: __enable_if_t<is_constructible<value_type, _Pair>::value,
23866: pair<iterator, bool>>
23866: insert(_Pair&& __x)
23866: { return _M_t._M_emplace_unique(std::forward<_Pair>(__x)); }
23866: # 829 "/usr/include/c++/10/bits/stl_map.h" 3
23866: void
23866: insert(std::initializer_list<value_type> __list)
23866: { insert(__list.begin(), __list.end()); }
23866: # 858 "/usr/include/c++/10/bits/stl_map.h" 3
23866: iterator
23866:
23866: insert(const_iterator __position, const value_type& __x)
23866:
23866:
23866:
23866: { return _M_t._M_insert_unique_(__position, __x); }
23866:
23866:
23866:
23866:
23866: iterator
23866: insert(const_iterator __position, value_type&& __x)
23866: { return _M_t._M_insert_unique_(__position, std::move(__x)); }
23866:
23866: template<typename _Pair>
23866: __enable_if_t<is_constructible<value_type, _Pair>::value, iterator>
23866: insert(const_iterator __position, _Pair&& __x)
23866: {
23866: return _M_t._M_emplace_hint_unique(__position,
23866: std::forward<_Pair>(__x));
23866: }
23866: # 891 "/usr/include/c++/10/bits/stl_map.h" 3
23866: template<typename _InputIterator>
23866: void
23866: insert(_InputIterator __first, _InputIterator __last)
23866: { _M_t._M_insert_range_unique(__first, __last); }
23866: # 916 "/usr/include/c++/10/bits/stl_map.h" 3
23866: template <typename _Obj>
23866: pair<iterator, bool>
23866: insert_or_assign(const key_type& __k, _Obj&& __obj)
23866: {
23866: iterator __i = lower_bound(__k);
23866: if (__i == end() || key_comp()(__k, (*__i).first))
23866: {
23866: __i = emplace_hint(__i, std::piecewise_construct,
23866: std::forward_as_tuple(__k),
23866: std::forward_as_tuple(
23866: std::forward<_Obj>(__obj)));
23866: return {__i, true};
23866: }
23866: (*__i).second = std::forward<_Obj>(__obj);
23866: return {__i, false};
23866: }
23866:
23866:
23866: template <typename _Obj>
23866: pair<iterator, bool>
23866: insert_or_assign(key_type&& __k, _Obj&& __obj)
23866: {
23866: iterator __i = lower_bound(__k);
23866: if (__i == end() || key_comp()(__k, (*__i).first))
23866: {
23866: __i = emplace_hint(__i, std::piecewise_construct,
23866: std::forward_as_tuple(std::move(__k)),
23866: std::forward_as_tuple(
23866: std::forward<_Obj>(__obj)));
23866: return {__i, true};
23866: }
23866: (*__i).second = std::forward<_Obj>(__obj);
23866: return {__i, false};
23866: }
23866: # 971 "/usr/include/c++/10/bits/stl_map.h" 3
23866: template <typename _Obj>
23866: iterator
23866: insert_or_assign(const_iterator __hint,
23866: const key_type& __k, _Obj&& __obj)
23866: {
23866: iterator __i;
23866: auto __true_hint = _M_t._M_get_insert_hint_unique_pos(__hint, __k);
23866: if (__true_hint.second)
23866: {
23866: return emplace_hint(iterator(__true_hint.second),
23866: std::piecewise_construct,
23866: std::forward_as_tuple(__k),
23866: std::forward_as_tuple(
23866: std::forward<_Obj>(__obj)));
23866: }
23866: __i = iterator(__true_hint.first);
23866: (*__i).second = std::forward<_Obj>(__obj);
23866: return __i;
23866: }
23866:
23866:
23866: template <typename _Obj>
23866: iterator
23866: insert_or_assign(const_iterator __hint, key_type&& __k, _Obj&& __obj)
23866: {
23866: iterator __i;
23866: auto __true_hint = _M_t._M_get_insert_hint_unique_pos(__hint, __k);
23866: if (__true_hint.second)
23866: {
23866: return emplace_hint(iterator(__true_hint.second),
23866: std::piecewise_construct,
23866: std::forward_as_tuple(std::move(__k)),
23866: std::forward_as_tuple(
23866: std::forward<_Obj>(__obj)));
23866: }
23866: __i = iterator(__true_hint.first);
23866: (*__i).second = std::forward<_Obj>(__obj);
23866: return __i;
23866: }
23866: # 1030 "/usr/include/c++/10/bits/stl_map.h" 3
23866: iterator
23866: erase(const_iterator __position)
23866: { return _M_t.erase(__position); }
23866:
23866:
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: iterator
23866: erase(iterator __position)
23866: { return _M_t.erase(__position); }
23866: # 1067 "/usr/include/c++/10/bits/stl_map.h" 3
23866: size_type
23866: erase(const key_type& __x)
23866: { return _M_t.erase(__x); }
23866: # 1087 "/usr/include/c++/10/bits/stl_map.h" 3
23866: iterator
23866: erase(const_iterator __first, const_iterator __last)
23866: { return _M_t.erase(__first, __last); }
23866: # 1121 "/usr/include/c++/10/bits/stl_map.h" 3
23866: void
23866: swap(map& __x)
23866: noexcept(__is_nothrow_swappable<_Compare>::value)
23866: { _M_t.swap(__x._M_t); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: void
23866: clear() noexcept
23866: { _M_t.clear(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: key_compare
23866: key_comp() const
23866: { return _M_t.key_comp(); }
23866:
23866:
23866:
23866:
23866:
23866: value_compare
23866: value_comp() const
23866: { return value_compare(_M_t.key_comp()); }
23866: # 1168 "/usr/include/c++/10/bits/stl_map.h" 3
23866: iterator
23866: find(const key_type& __x)
23866: { return _M_t.find(__x); }
23866:
23866:
23866: template<typename _Kt>
23866: auto
23866: find(const _Kt& __x) -> decltype(_M_t._M_find_tr(__x))
23866: { return _M_t._M_find_tr(__x); }
23866: # 1193 "/usr/include/c++/10/bits/stl_map.h" 3
23866: const_iterator
23866: find(const key_type& __x) const
23866: { return _M_t.find(__x); }
23866:
23866:
23866: template<typename _Kt>
23866: auto
23866: find(const _Kt& __x) const -> decltype(_M_t._M_find_tr(__x))
23866: { return _M_t._M_find_tr(__x); }
23866: # 1214 "/usr/include/c++/10/bits/stl_map.h" 3
23866: size_type
23866: count(const key_type& __x) const
23866: { return _M_t.find(__x) == _M_t.end() ? 0 : 1; }
23866:
23866:
23866: template<typename _Kt>
23866: auto
23866: count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x))
23866: { return _M_t._M_count_tr(__x); }
23866: # 1257 "/usr/include/c++/10/bits/stl_map.h" 3
23866: iterator
23866: lower_bound(const key_type& __x)
23866: { return _M_t.lower_bound(__x); }
23866:
23866:
23866: template<typename _Kt>
23866: auto
23866: lower_bound(const _Kt& __x)
23866: -> decltype(iterator(_M_t._M_lower_bound_tr(__x)))
23866: { return iterator(_M_t._M_lower_bound_tr(__x)); }
23866: # 1282 "/usr/include/c++/10/bits/stl_map.h" 3
23866: const_iterator
23866: lower_bound(const key_type& __x) const
23866: { return _M_t.lower_bound(__x); }
23866:
23866:
23866: template<typename _Kt>
23866: auto
23866: lower_bound(const _Kt& __x) const
23866: -> decltype(const_iterator(_M_t._M_lower_bound_tr(__x)))
23866: { return const_iterator(_M_t._M_lower_bound_tr(__x)); }
23866: # 1302 "/usr/include/c++/10/bits/stl_map.h" 3
23866: iterator
23866: upper_bound(const key_type& __x)
23866: { return _M_t.upper_bound(__x); }
23866:
23866:
23866: template<typename _Kt>
23866: auto
23866: upper_bound(const _Kt& __x)
23866: -> decltype(iterator(_M_t._M_upper_bound_tr(__x)))
23866: { return iterator(_M_t._M_upper_bound_tr(__x)); }
23866: # 1322 "/usr/include/c++/10/bits/stl_map.h" 3
23866: const_iterator
23866: upper_bound(const key_type& __x) const
23866: { return _M_t.upper_bound(__x); }
23866:
23866:
23866: template<typename _Kt>
23866: auto
23866: upper_bound(const _Kt& __x) const
23866: -> decltype(const_iterator(_M_t._M_upper_bound_tr(__x)))
23866: { return const_iterator(_M_t._M_upper_bound_tr(__x)); }
23866: # 1351 "/usr/include/c++/10/bits/stl_map.h" 3
23866: std::pair<iterator, iterator>
23866: equal_range(const key_type& __x)
23866: { return _M_t.equal_range(__x); }
23866:
23866:
23866: template<typename _Kt>
23866: auto
23866: equal_range(const _Kt& __x)
23866: -> decltype(pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)))
23866: { return pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)); }
23866: # 1380 "/usr/include/c++/10/bits/stl_map.h" 3
23866: std::pair<const_iterator, const_iterator>
23866: equal_range(const key_type& __x) const
23866: { return _M_t.equal_range(__x); }
23866:
23866:
23866: template<typename _Kt>
23866: auto
23866: equal_range(const _Kt& __x) const
23866: -> decltype(pair<const_iterator, const_iterator>(
23866: _M_t._M_equal_range_tr(__x)))
23866: {
23866: return pair<const_iterator, const_iterator>(
23866: _M_t._M_equal_range_tr(__x));
23866: }
23866:
23866:
23866:
23866: template<typename _K1, typename _T1, typename _C1, typename _A1>
23866: friend bool
23866: operator==(const map<_K1, _T1, _C1, _A1>&,
23866: const map<_K1, _T1, _C1, _A1>&);
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _K1, typename _T1, typename _C1, typename _A1>
23866: friend bool
23866: operator<(const map<_K1, _T1, _C1, _A1>&,
23866: const map<_K1, _T1, _C1, _A1>&);
23866:
23866: };
23866:
23866:
23866:
23866:
23866: template<typename _InputIterator,
23866: typename _Compare = less<__iter_key_t<_InputIterator>>,
23866: typename _Allocator = allocator<__iter_to_alloc_t<_InputIterator>>,
23866: typename = _RequireInputIter<_InputIterator>,
23866: typename = _RequireNotAllocator<_Compare>,
23866: typename = _RequireAllocator<_Allocator>>
23866: map(_InputIterator, _InputIterator,
23866: _Compare = _Compare(), _Allocator = _Allocator())
23866: -> map<__iter_key_t<_InputIterator>, __iter_val_t<_InputIterator>,
23866: _Compare, _Allocator>;
23866:
23866: template<typename _Key, typename _Tp, typename _Compare = less<_Key>,
23866: typename _Allocator = allocator<pair<const _Key, _Tp>>,
23866: typename = _RequireNotAllocator<_Compare>,
23866: typename = _RequireAllocator<_Allocator>>
23866: map(initializer_list<pair<_Key, _Tp>>,
23866: _Compare = _Compare(), _Allocator = _Allocator())
23866: -> map<_Key, _Tp, _Compare, _Allocator>;
23866:
23866: template <typename _InputIterator, typename _Allocator,
23866: typename = _RequireInputIter<_InputIterator>,
23866: typename = _RequireAllocator<_Allocator>>
23866: map(_InputIterator, _InputIterator, _Allocator)
23866: -> map<__iter_key_t<_InputIterator>, __iter_val_t<_InputIterator>,
23866: less<__iter_key_t<_InputIterator>>, _Allocator>;
23866:
23866: template<typename _Key, typename _Tp, typename _Allocator,
23866: typename = _RequireAllocator<_Allocator>>
23866: map(initializer_list<pair<_Key, _Tp>>, _Allocator)
23866: -> map<_Key, _Tp, less<_Key>, _Allocator>;
23866: # 1461 "/usr/include/c++/10/bits/stl_map.h" 3
23866: template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
23866: inline bool
23866: operator==(const map<_Key, _Tp, _Compare, _Alloc>& __x,
23866: const map<_Key, _Tp, _Compare, _Alloc>& __y)
23866: { return __x._M_t == __y._M_t; }
23866: # 1499 "/usr/include/c++/10/bits/stl_map.h" 3
23866: template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
23866: inline bool
23866: operator<(const map<_Key, _Tp, _Compare, _Alloc>& __x,
23866: const map<_Key, _Tp, _Compare, _Alloc>& __y)
23866: { return __x._M_t < __y._M_t; }
23866:
23866:
23866: template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
23866: inline bool
23866: operator!=(const map<_Key, _Tp, _Compare, _Alloc>& __x,
23866: const map<_Key, _Tp, _Compare, _Alloc>& __y)
23866: { return !(__x == __y); }
23866:
23866:
23866: template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
23866: inline bool
23866: operator>(const map<_Key, _Tp, _Compare, _Alloc>& __x,
23866: const map<_Key, _Tp, _Compare, _Alloc>& __y)
23866: { return __y < __x; }
23866:
23866:
23866: template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
23866: inline bool
23866: operator<=(const map<_Key, _Tp, _Compare, _Alloc>& __x,
23866: const map<_Key, _Tp, _Compare, _Alloc>& __y)
23866: { return !(__y < __x); }
23866:
23866:
23866: template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
23866: inline bool
23866: operator>=(const map<_Key, _Tp, _Compare, _Alloc>& __x,
23866: const map<_Key, _Tp, _Compare, _Alloc>& __y)
23866: { return !(__x < __y); }
23866:
23866:
23866:
23866: template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
23866: inline void
23866: swap(map<_Key, _Tp, _Compare, _Alloc>& __x,
23866: map<_Key, _Tp, _Compare, _Alloc>& __y)
23866: noexcept(noexcept(__x.swap(__y)))
23866: { __x.swap(__y); }
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Key, typename _Val, typename _Cmp1, typename _Alloc,
23866: typename _Cmp2>
23866: struct
23866: _Rb_tree_merge_helper<std::map<_Key, _Val, _Cmp1, _Alloc>,
23866: _Cmp2>
23866: {
23866: private:
23866: friend class std::map<_Key, _Val, _Cmp1, _Alloc>;
23866:
23866: static auto&
23866: _S_get_tree(std::map<_Key, _Val, _Cmp2, _Alloc>& __map)
23866: { return __map._M_t; }
23866:
23866: static auto&
23866: _S_get_tree(std::multimap<_Key, _Val, _Cmp2, _Alloc>& __map)
23866: { return __map._M_t; }
23866: };
23866:
23866:
23866:
23866: }
23866: # 62 "/usr/include/c++/10/map" 2 3
23866: # 1 "/usr/include/c++/10/bits/stl_multimap.h" 1 3
23866: # 57 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: #define _STL_MULTIMAP_H 1
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>
23866: class map;
23866: # 96 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: template <typename _Key, typename _Tp,
23866: typename _Compare = std::less<_Key>,
23866: typename _Alloc = std::allocator<std::pair<const _Key, _Tp> > >
23866: class multimap
23866: {
23866: public:
23866: typedef _Key key_type;
23866: typedef _Tp mapped_type;
23866: typedef std::pair<const _Key, _Tp> value_type;
23866: typedef _Compare key_compare;
23866: typedef _Alloc allocator_type;
23866:
23866: private:
23866: # 122 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: static_assert(is_same<typename _Alloc::value_type, value_type>::value,
23866: "std::multimap must have the same value_type as its allocator");
23866:
23866:
23866:
23866: public:
23866: class value_compare
23866: : public std::binary_function<value_type, value_type, bool>
23866: {
23866: friend class multimap<_Key, _Tp, _Compare, _Alloc>;
23866: protected:
23866: _Compare comp;
23866:
23866: value_compare(_Compare __c)
23866: : comp(__c) { }
23866:
23866: public:
23866: bool operator()(const value_type& __x, const value_type& __y) const
23866: { return comp(__x.first, __y.first); }
23866: };
23866:
23866: private:
23866:
23866: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template
23866: rebind<value_type>::other _Pair_alloc_type;
23866:
23866: typedef _Rb_tree<key_type, value_type, _Select1st<value_type>,
23866: key_compare, _Pair_alloc_type> _Rep_type;
23866:
23866: _Rep_type _M_t;
23866:
23866: typedef __gnu_cxx::__alloc_traits<_Pair_alloc_type> _Alloc_traits;
23866:
23866: public:
23866:
23866:
23866: typedef typename _Alloc_traits::pointer pointer;
23866: typedef typename _Alloc_traits::const_pointer const_pointer;
23866: typedef typename _Alloc_traits::reference reference;
23866: typedef typename _Alloc_traits::const_reference const_reference;
23866: typedef typename _Rep_type::iterator iterator;
23866: typedef typename _Rep_type::const_iterator const_iterator;
23866: typedef typename _Rep_type::size_type size_type;
23866: typedef typename _Rep_type::difference_type difference_type;
23866: typedef typename _Rep_type::reverse_iterator reverse_iterator;
23866: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
23866:
23866:
23866: using node_type = typename _Rep_type::node_type;
23866: # 182 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: multimap() = default;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: explicit
23866: multimap(const _Compare& __comp,
23866: const allocator_type& __a = allocator_type())
23866: : _M_t(__comp, _Pair_alloc_type(__a)) { }
23866: # 204 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: multimap(const multimap&) = default;
23866: # 213 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: multimap(multimap&&) = default;
23866: # 225 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: multimap(initializer_list<value_type> __l,
23866: const _Compare& __comp = _Compare(),
23866: const allocator_type& __a = allocator_type())
23866: : _M_t(__comp, _Pair_alloc_type(__a))
23866: { _M_t._M_insert_range_equal(__l.begin(), __l.end()); }
23866:
23866:
23866: explicit
23866: multimap(const allocator_type& __a)
23866: : _M_t(_Pair_alloc_type(__a)) { }
23866:
23866:
23866: multimap(const multimap& __m, const allocator_type& __a)
23866: : _M_t(__m._M_t, _Pair_alloc_type(__a)) { }
23866:
23866:
23866: multimap(multimap&& __m, const allocator_type& __a)
23866: noexcept(is_nothrow_copy_constructible<_Compare>::value
23866: && _Alloc_traits::_S_always_equal())
23866: : _M_t(std::move(__m._M_t), _Pair_alloc_type(__a)) { }
23866:
23866:
23866: multimap(initializer_list<value_type> __l, const allocator_type& __a)
23866: : _M_t(_Pair_alloc_type(__a))
23866: { _M_t._M_insert_range_equal(__l.begin(), __l.end()); }
23866:
23866:
23866: template<typename _InputIterator>
23866: multimap(_InputIterator __first, _InputIterator __last,
23866: const allocator_type& __a)
23866: : _M_t(_Pair_alloc_type(__a))
23866: { _M_t._M_insert_range_equal(__first, __last); }
23866: # 268 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: template<typename _InputIterator>
23866: multimap(_InputIterator __first, _InputIterator __last)
23866: : _M_t()
23866: { _M_t._M_insert_range_equal(__first, __last); }
23866: # 284 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: template<typename _InputIterator>
23866: multimap(_InputIterator __first, _InputIterator __last,
23866: const _Compare& __comp,
23866: const allocator_type& __a = allocator_type())
23866: : _M_t(__comp, _Pair_alloc_type(__a))
23866: { _M_t._M_insert_range_equal(__first, __last); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: ~multimap() = default;
23866: # 313 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: multimap&
23866: operator=(const multimap&) = default;
23866:
23866:
23866: multimap&
23866: operator=(multimap&&) = default;
23866: # 331 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: multimap&
23866: operator=(initializer_list<value_type> __l)
23866: {
23866: _M_t._M_assign_equal(__l.begin(), __l.end());
23866: return *this;
23866: }
23866:
23866:
23866:
23866: allocator_type
23866: get_allocator() const noexcept
23866: { return allocator_type(_M_t.get_allocator()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: iterator
23866: begin() noexcept
23866: { return _M_t.begin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_iterator
23866: begin() const noexcept
23866: { return _M_t.begin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: iterator
23866: end() noexcept
23866: { return _M_t.end(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_iterator
23866: end() const noexcept
23866: { return _M_t.end(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: reverse_iterator
23866: rbegin() noexcept
23866: { return _M_t.rbegin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_reverse_iterator
23866: rbegin() const noexcept
23866: { return _M_t.rbegin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: reverse_iterator
23866: rend() noexcept
23866: { return _M_t.rend(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_reverse_iterator
23866: rend() const noexcept
23866: { return _M_t.rend(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_iterator
23866: cbegin() const noexcept
23866: { return _M_t.begin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_iterator
23866: cend() const noexcept
23866: { return _M_t.end(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_reverse_iterator
23866: crbegin() const noexcept
23866: { return _M_t.rbegin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const_reverse_iterator
23866: crend() const noexcept
23866: { return _M_t.rend(); }
23866:
23866:
23866:
23866:
23866: [[__nodiscard__]] bool
23866: empty() const noexcept
23866: { return _M_t.empty(); }
23866:
23866:
23866: size_type
23866: size() const noexcept
23866: { return _M_t.size(); }
23866:
23866:
23866: size_type
23866: max_size() const noexcept
23866: { return _M_t.max_size(); }
23866: # 489 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: template<typename... _Args>
23866: iterator
23866: emplace(_Args&&... __args)
23866: { return _M_t._M_emplace_equal(std::forward<_Args>(__args)...); }
23866: # 516 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: template<typename... _Args>
23866: iterator
23866: emplace_hint(const_iterator __pos, _Args&&... __args)
23866: {
23866: return _M_t._M_emplace_hint_equal(__pos,
23866: std::forward<_Args>(__args)...);
23866: }
23866: # 538 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: iterator
23866: insert(const value_type& __x)
23866: { return _M_t._M_insert_equal(__x); }
23866:
23866:
23866:
23866:
23866: iterator
23866: insert(value_type&& __x)
23866: { return _M_t._M_insert_equal(std::move(__x)); }
23866:
23866: template<typename _Pair>
23866: __enable_if_t<is_constructible<value_type, _Pair>::value, iterator>
23866: insert(_Pair&& __x)
23866: { return _M_t._M_emplace_equal(std::forward<_Pair>(__x)); }
23866: # 577 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: iterator
23866:
23866: insert(const_iterator __position, const value_type& __x)
23866:
23866:
23866:
23866: { return _M_t._M_insert_equal_(__position, __x); }
23866:
23866:
23866:
23866:
23866: iterator
23866: insert(const_iterator __position, value_type&& __x)
23866: { return _M_t._M_insert_equal_(__position, std::move(__x)); }
23866:
23866: template<typename _Pair>
23866: __enable_if_t<is_constructible<value_type, _Pair&&>::value, iterator>
23866: insert(const_iterator __position, _Pair&& __x)
23866: {
23866: return _M_t._M_emplace_hint_equal(__position,
23866: std::forward<_Pair>(__x));
23866: }
23866: # 611 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: template<typename _InputIterator>
23866: void
23866: insert(_InputIterator __first, _InputIterator __last)
23866: { _M_t._M_insert_range_equal(__first, __last); }
23866: # 624 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: void
23866: insert(initializer_list<value_type> __l)
23866: { this->insert(__l.begin(), __l.end()); }
23866:
23866:
23866:
23866:
23866: node_type
23866: extract(const_iterator __pos)
23866: {
23866: ;
23866: return _M_t.extract(__pos);
23866: }
23866:
23866:
23866: node_type
23866: extract(const key_type& __x)
23866: { return _M_t.extract(__x); }
23866:
23866:
23866: iterator
23866: insert(node_type&& __nh)
23866: { return _M_t._M_reinsert_node_equal(std::move(__nh)); }
23866:
23866:
23866: iterator
23866: insert(const_iterator __hint, node_type&& __nh)
23866: { return _M_t._M_reinsert_node_hint_equal(__hint, std::move(__nh)); }
23866:
23866: template<typename, typename>
23866: friend class std::_Rb_tree_merge_helper;
23866:
23866: template<typename _Cmp2>
23866: void
23866: merge(multimap<_Key, _Tp, _Cmp2, _Alloc>& __source)
23866: {
23866: using _Merge_helper = _Rb_tree_merge_helper<multimap, _Cmp2>;
23866: _M_t._M_merge_equal(_Merge_helper::_S_get_tree(__source));
23866: }
23866:
23866: template<typename _Cmp2>
23866: void
23866: merge(multimap<_Key, _Tp, _Cmp2, _Alloc>&& __source)
23866: { merge(__source); }
23866:
23866: template<typename _Cmp2>
23866: void
23866: merge(map<_Key, _Tp, _Cmp2, _Alloc>& __source)
23866: {
23866: using _Merge_helper = _Rb_tree_merge_helper<multimap, _Cmp2>;
23866: _M_t._M_merge_equal(_Merge_helper::_S_get_tree(__source));
23866: }
23866:
23866: template<typename _Cmp2>
23866: void
23866: merge(map<_Key, _Tp, _Cmp2, _Alloc>&& __source)
23866: { merge(__source); }
23866: # 701 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: iterator
23866: erase(const_iterator __position)
23866: { return _M_t.erase(__position); }
23866:
23866:
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: iterator
23866: erase(iterator __position)
23866: { return _M_t.erase(__position); }
23866: # 738 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: size_type
23866: erase(const key_type& __x)
23866: { return _M_t.erase(__x); }
23866: # 759 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: iterator
23866: erase(const_iterator __first, const_iterator __last)
23866: { return _M_t.erase(__first, __last); }
23866: # 796 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: void
23866: swap(multimap& __x)
23866: noexcept(__is_nothrow_swappable<_Compare>::value)
23866: { _M_t.swap(__x._M_t); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: void
23866: clear() noexcept
23866: { _M_t.clear(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: key_compare
23866: key_comp() const
23866: { return _M_t.key_comp(); }
23866:
23866:
23866:
23866:
23866:
23866: value_compare
23866: value_comp() const
23866: { return value_compare(_M_t.key_comp()); }
23866: # 842 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: iterator
23866: find(const key_type& __x)
23866: { return _M_t.find(__x); }
23866:
23866:
23866: template<typename _Kt>
23866: auto
23866: find(const _Kt& __x) -> decltype(_M_t._M_find_tr(__x))
23866: { return _M_t._M_find_tr(__x); }
23866: # 866 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: const_iterator
23866: find(const key_type& __x) const
23866: { return _M_t.find(__x); }
23866:
23866:
23866: template<typename _Kt>
23866: auto
23866: find(const _Kt& __x) const -> decltype(_M_t._M_find_tr(__x))
23866: { return _M_t._M_find_tr(__x); }
23866: # 884 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: size_type
23866: count(const key_type& __x) const
23866: { return _M_t.count(__x); }
23866:
23866:
23866: template<typename _Kt>
23866: auto
23866: count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x))
23866: { return _M_t._M_count_tr(__x); }
23866: # 927 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: iterator
23866: lower_bound(const key_type& __x)
23866: { return _M_t.lower_bound(__x); }
23866:
23866:
23866: template<typename _Kt>
23866: auto
23866: lower_bound(const _Kt& __x)
23866: -> decltype(iterator(_M_t._M_lower_bound_tr(__x)))
23866: { return iterator(_M_t._M_lower_bound_tr(__x)); }
23866: # 952 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: const_iterator
23866: lower_bound(const key_type& __x) const
23866: { return _M_t.lower_bound(__x); }
23866:
23866:
23866: template<typename _Kt>
23866: auto
23866: lower_bound(const _Kt& __x) const
23866: -> decltype(const_iterator(_M_t._M_lower_bound_tr(__x)))
23866: { return const_iterator(_M_t._M_lower_bound_tr(__x)); }
23866: # 972 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: iterator
23866: upper_bound(const key_type& __x)
23866: { return _M_t.upper_bound(__x); }
23866:
23866:
23866: template<typename _Kt>
23866: auto
23866: upper_bound(const _Kt& __x)
23866: -> decltype(iterator(_M_t._M_upper_bound_tr(__x)))
23866: { return iterator(_M_t._M_upper_bound_tr(__x)); }
23866: # 992 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: const_iterator
23866: upper_bound(const key_type& __x) const
23866: { return _M_t.upper_bound(__x); }
23866:
23866:
23866: template<typename _Kt>
23866: auto
23866: upper_bound(const _Kt& __x) const
23866: -> decltype(const_iterator(_M_t._M_upper_bound_tr(__x)))
23866: { return const_iterator(_M_t._M_upper_bound_tr(__x)); }
23866: # 1019 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: std::pair<iterator, iterator>
23866: equal_range(const key_type& __x)
23866: { return _M_t.equal_range(__x); }
23866:
23866:
23866: template<typename _Kt>
23866: auto
23866: equal_range(const _Kt& __x)
23866: -> decltype(pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)))
23866: { return pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)); }
23866: # 1046 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: std::pair<const_iterator, const_iterator>
23866: equal_range(const key_type& __x) const
23866: { return _M_t.equal_range(__x); }
23866:
23866:
23866: template<typename _Kt>
23866: auto
23866: equal_range(const _Kt& __x) const
23866: -> decltype(pair<const_iterator, const_iterator>(
23866: _M_t._M_equal_range_tr(__x)))
23866: {
23866: return pair<const_iterator, const_iterator>(
23866: _M_t._M_equal_range_tr(__x));
23866: }
23866:
23866:
23866:
23866: template<typename _K1, typename _T1, typename _C1, typename _A1>
23866: friend bool
23866: operator==(const multimap<_K1, _T1, _C1, _A1>&,
23866: const multimap<_K1, _T1, _C1, _A1>&);
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _K1, typename _T1, typename _C1, typename _A1>
23866: friend bool
23866: operator<(const multimap<_K1, _T1, _C1, _A1>&,
23866: const multimap<_K1, _T1, _C1, _A1>&);
23866:
23866: };
23866:
23866:
23866:
23866: template<typename _InputIterator,
23866: typename _Compare = less<__iter_key_t<_InputIterator>>,
23866: typename _Allocator = allocator<__iter_to_alloc_t<_InputIterator>>,
23866: typename = _RequireInputIter<_InputIterator>,
23866: typename = _RequireNotAllocator<_Compare>,
23866: typename = _RequireAllocator<_Allocator>>
23866: multimap(_InputIterator, _InputIterator,
23866: _Compare = _Compare(), _Allocator = _Allocator())
23866: -> multimap<__iter_key_t<_InputIterator>, __iter_val_t<_InputIterator>,
23866: _Compare, _Allocator>;
23866:
23866: template<typename _Key, typename _Tp, typename _Compare = less<_Key>,
23866: typename _Allocator = allocator<pair<const _Key, _Tp>>,
23866: typename = _RequireNotAllocator<_Compare>,
23866: typename = _RequireAllocator<_Allocator>>
23866: multimap(initializer_list<pair<_Key, _Tp>>,
23866: _Compare = _Compare(), _Allocator = _Allocator())
23866: -> multimap<_Key, _Tp, _Compare, _Allocator>;
23866:
23866: template<typename _InputIterator, typename _Allocator,
23866: typename = _RequireInputIter<_InputIterator>,
23866: typename = _RequireAllocator<_Allocator>>
23866: multimap(_InputIterator, _InputIterator, _Allocator)
23866: -> multimap<__iter_key_t<_InputIterator>, __iter_val_t<_InputIterator>,
23866: less<__iter_key_t<_InputIterator>>, _Allocator>;
23866:
23866: template<typename _Key, typename _Tp, typename _Allocator,
23866: typename = _RequireAllocator<_Allocator>>
23866: multimap(initializer_list<pair<_Key, _Tp>>, _Allocator)
23866: -> multimap<_Key, _Tp, less<_Key>, _Allocator>;
23866: # 1126 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
23866: inline bool
23866: operator==(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
23866: const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
23866: { return __x._M_t == __y._M_t; }
23866: # 1164 "/usr/include/c++/10/bits/stl_multimap.h" 3
23866: template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
23866: inline bool
23866: operator<(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
23866: const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
23866: { return __x._M_t < __y._M_t; }
23866:
23866:
23866: template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
23866: inline bool
23866: operator!=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
23866: const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
23866: { return !(__x == __y); }
23866:
23866:
23866: template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
23866: inline bool
23866: operator>(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
23866: const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
23866: { return __y < __x; }
23866:
23866:
23866: template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
23866: inline bool
23866: operator<=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
23866: const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
23866: { return !(__y < __x); }
23866:
23866:
23866: template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
23866: inline bool
23866: operator>=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
23866: const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
23866: { return !(__x < __y); }
23866:
23866:
23866:
23866: template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
23866: inline void
23866: swap(multimap<_Key, _Tp, _Compare, _Alloc>& __x,
23866: multimap<_Key, _Tp, _Compare, _Alloc>& __y)
23866: noexcept(noexcept(__x.swap(__y)))
23866: { __x.swap(__y); }
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Key, typename _Val, typename _Cmp1, typename _Alloc,
23866: typename _Cmp2>
23866: struct
23866: _Rb_tree_merge_helper<std::multimap<_Key, _Val, _Cmp1, _Alloc>,
23866: _Cmp2>
23866: {
23866: private:
23866: friend class std::multimap<_Key, _Val, _Cmp1, _Alloc>;
23866:
23866: static auto&
23866: _S_get_tree(std::map<_Key, _Val, _Cmp2, _Alloc>& __map)
23866: { return __map._M_t; }
23866:
23866: static auto&
23866: _S_get_tree(std::multimap<_Key, _Val, _Cmp2, _Alloc>& __map)
23866: { return __map._M_t; }
23866: };
23866:
23866:
23866:
23866: }
23866: # 63 "/usr/include/c++/10/map" 2 3
23866: # 71 "/usr/include/c++/10/map" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: namespace pmr
23866: {
23866: template<typename _Tp> class polymorphic_allocator;
23866: template<typename _Key, typename _Tp, typename _Cmp = std::less<_Key>>
23866: using map
23866: = std::map<_Key, _Tp, _Cmp,
23866: polymorphic_allocator<pair<const _Key, _Tp>>>;
23866: template<typename _Key, typename _Tp, typename _Cmp = std::less<_Key>>
23866: using multimap
23866: = std::multimap<_Key, _Tp, _Cmp,
23866: polymorphic_allocator<pair<const _Key, _Tp>>>;
23866: }
23866:
23866: }
23866: # 95 "/usr/include/boost/detail/container_fwd.hpp" 2 3 4
23866: # 1 "/usr/include/c++/10/set" 1 3 4
23866: # 56 "/usr/include/c++/10/set" 3 4
23866: #define _GLIBCXX_SET 1
23866:
23866:
23866: # 59 "/usr/include/c++/10/set" 3
23866:
23866:
23866: # 1 "/usr/include/c++/10/bits/stl_set.h" 1 3
23866: # 57 "/usr/include/c++/10/bits/stl_set.h" 3
23866: #define _STL_SET_H 1
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: template<typename _Key, typename _Compare, typename _Alloc>
23866: class multiset;
23866: # 92 "/usr/include/c++/10/bits/stl_set.h" 3
23866: template<typename _Key, typename _Compare = std::less<_Key>,
23866: typename _Alloc = std::allocator<_Key> >
23866: class set
23866: {
23866: # 108 "/usr/include/c++/10/bits/stl_set.h" 3
23866: static_assert(is_same<typename remove_cv<_Key>::type, _Key>::value,
23866: "std::set must have a non-const, non-volatile value_type");
23866:
23866: static_assert(is_same<typename _Alloc::value_type, _Key>::value,
23866: "std::set must have the same value_type as its allocator");
23866:
23866:
23866:
23866: public:
23866:
23866:
23866:
23866: typedef _Key key_type;
23866: typedef _Key value_type;
23866: typedef _Compare key_compare;
23866: typedef _Compare value_compare;
23866: typedef _Alloc allocator_type;
23866:
23866:
23866: private:
23866: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template
23866: rebind<_Key>::other _Key_alloc_type;
23866:
23866: typedef _Rb_tree<key_type, value_type, _Identity<value_type>,
23866: key_compare, _Key_alloc_type> _Rep_type;
23866: _Rep_type _M_t;
23866:
23866: typedef __gnu_cxx::__alloc_traits<_Key_alloc_type> _Alloc_traits;
23866:
23866: public:
23866:
23866:
23866: typedef typename _Alloc_traits::pointer pointer;
23866: typedef typename _Alloc_traits::const_pointer const_pointer;
23866: typedef typename _Alloc_traits::reference reference;
23866: typedef typename _Alloc_traits::const_reference const_reference;
23866:
23866:
23866:
23866: typedef typename _Rep_type::const_iterator iterator;
23866: typedef typename _Rep_type::const_iterator const_iterator;
23866: typedef typename _Rep_type::const_reverse_iterator reverse_iterator;
23866: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
23866: typedef typename _Rep_type::size_type size_type;
23866: typedef typename _Rep_type::difference_type difference_type;
23866:
23866:
23866:
23866: using node_type = typename _Rep_type::node_type;
23866: using insert_return_type = typename _Rep_type::insert_return_type;
23866: # 167 "/usr/include/c++/10/bits/stl_set.h" 3
23866: set() = default;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: explicit
23866: set(const _Compare& __comp,
23866: const allocator_type& __a = allocator_type())
23866: : _M_t(__comp, _Key_alloc_type(__a)) { }
23866: # 190 "/usr/include/c++/10/bits/stl_set.h" 3
23866: template<typename _InputIterator>
23866: set(_InputIterator __first, _InputIterator __last)
23866: : _M_t()
23866: { _M_t._M_insert_range_unique(__first, __last); }
23866: # 207 "/usr/include/c++/10/bits/stl_set.h" 3
23866: template<typename _InputIterator>
23866: set(_InputIterator __first, _InputIterator __last,
23866: const _Compare& __comp,
23866: const allocator_type& __a = allocator_type())
23866: : _M_t(__comp, _Key_alloc_type(__a))
23866: { _M_t._M_insert_range_unique(__first, __last); }
23866: # 223 "/usr/include/c++/10/bits/stl_set.h" 3
23866: set(const set&) = default;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: set(set&&) = default;
23866: # 243 "/usr/include/c++/10/bits/stl_set.h" 3
23866: set(initializer_list<value_type> __l,
23866: const _Compare& __comp = _Compare(),
23866: const allocator_type& __a = allocator_type())
23866: : _M_t(__comp, _Key_alloc_type(__a))
23866: { _M_t._M_insert_range_unique(__l.begin(), __l.end()); }
23866:
23866:
23866: explicit
23866: set(const allocator_type& __a)
23866: : _M_t(_Key_alloc_type(__a)) { }
23866:
23866:
23866: set(const set& __x, const allocator_type& __a)
23866: : _M_t(__x._M_t, _Key_alloc_type(__a)) { }
23866:
23866:
23866: set(set&& __x, const allocator_type& __a)
23866: noexcept(is_nothrow_copy_constructible<_Compare>::value
23866: && _Alloc_traits::_S_always_equal())
23866: : _M_t(std::move(__x._M_t), _Key_alloc_type(__a)) { }
23866:
23866:
23866: set(initializer_list<value_type> __l, const allocator_type& __a)
23866: : _M_t(_Key_alloc_type(__a))
23866: { _M_t._M_insert_range_unique(__l.begin(), __l.end()); }
23866:
23866:
23866: template<typename _InputIterator>
23866: set(_InputIterator __first, _InputIterator __last,
23866: const allocator_type& __a)
23866: : _M_t(_Key_alloc_type(__a))
23866: { _M_t._M_insert_range_unique(__first, __last); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: ~set() = default;
23866: # 297 "/usr/include/c++/10/bits/stl_set.h" 3
23866: set&
23866: operator=(const set&) = default;
23866:
23866:
23866: set&
23866: operator=(set&&) = default;
23866: # 315 "/usr/include/c++/10/bits/stl_set.h" 3
23866: set&
23866: operator=(initializer_list<value_type> __l)
23866: {
23866: _M_t._M_assign_unique(__l.begin(), __l.end());
23866: return *this;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: key_compare
23866: key_comp() const
23866: { return _M_t.key_comp(); }
23866:
23866: value_compare
23866: value_comp() const
23866: { return _M_t.key_comp(); }
23866:
23866: allocator_type
23866: get_allocator() const noexcept
23866: { return allocator_type(_M_t.get_allocator()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: iterator
23866: begin() const noexcept
23866: { return _M_t.begin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: iterator
23866: end() const noexcept
23866: { return _M_t.end(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: reverse_iterator
23866: rbegin() const noexcept
23866: { return _M_t.rbegin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: reverse_iterator
23866: rend() const noexcept
23866: { return _M_t.rend(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: iterator
23866: cbegin() const noexcept
23866: { return _M_t.begin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: iterator
23866: cend() const noexcept
23866: { return _M_t.end(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: reverse_iterator
23866: crbegin() const noexcept
23866: { return _M_t.rbegin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: reverse_iterator
23866: crend() const noexcept
23866: { return _M_t.rend(); }
23866:
23866:
23866:
23866: [[__nodiscard__]] bool
23866: empty() const noexcept
23866: { return _M_t.empty(); }
23866:
23866:
23866: size_type
23866: size() const noexcept
23866: { return _M_t.size(); }
23866:
23866:
23866: size_type
23866: max_size() const noexcept
23866: { return _M_t.max_size(); }
23866: # 440 "/usr/include/c++/10/bits/stl_set.h" 3
23866: void
23866: swap(set& __x)
23866: noexcept(__is_nothrow_swappable<_Compare>::value)
23866: { _M_t.swap(__x._M_t); }
23866: # 460 "/usr/include/c++/10/bits/stl_set.h" 3
23866: template<typename... _Args>
23866: std::pair<iterator, bool>
23866: emplace(_Args&&... __args)
23866: { return _M_t._M_emplace_unique(std::forward<_Args>(__args)...); }
23866: # 486 "/usr/include/c++/10/bits/stl_set.h" 3
23866: template<typename... _Args>
23866: iterator
23866: emplace_hint(const_iterator __pos, _Args&&... __args)
23866: {
23866: return _M_t._M_emplace_hint_unique(__pos,
23866: std::forward<_Args>(__args)...);
23866: }
23866: # 508 "/usr/include/c++/10/bits/stl_set.h" 3
23866: std::pair<iterator, bool>
23866: insert(const value_type& __x)
23866: {
23866: std::pair<typename _Rep_type::iterator, bool> __p =
23866: _M_t._M_insert_unique(__x);
23866: return std::pair<iterator, bool>(__p.first, __p.second);
23866: }
23866:
23866:
23866: std::pair<iterator, bool>
23866: insert(value_type&& __x)
23866: {
23866: std::pair<typename _Rep_type::iterator, bool> __p =
23866: _M_t._M_insert_unique(std::move(__x));
23866: return std::pair<iterator, bool>(__p.first, __p.second);
23866: }
23866: # 545 "/usr/include/c++/10/bits/stl_set.h" 3
23866: iterator
23866: insert(const_iterator __position, const value_type& __x)
23866: { return _M_t._M_insert_unique_(__position, __x); }
23866:
23866:
23866: iterator
23866: insert(const_iterator __position, value_type&& __x)
23866: { return _M_t._M_insert_unique_(__position, std::move(__x)); }
23866: # 564 "/usr/include/c++/10/bits/stl_set.h" 3
23866: template<typename _InputIterator>
23866: void
23866: insert(_InputIterator __first, _InputIterator __last)
23866: { _M_t._M_insert_range_unique(__first, __last); }
23866: # 577 "/usr/include/c++/10/bits/stl_set.h" 3
23866: void
23866: insert(initializer_list<value_type> __l)
23866: { this->insert(__l.begin(), __l.end()); }
23866:
23866:
23866:
23866:
23866: node_type
23866: extract(const_iterator __pos)
23866: {
23866: ;
23866: return _M_t.extract(__pos);
23866: }
23866:
23866:
23866: node_type
23866: extract(const key_type& __x)
23866: { return _M_t.extract(__x); }
23866:
23866:
23866: insert_return_type
23866: insert(node_type&& __nh)
23866: { return _M_t._M_reinsert_node_unique(std::move(__nh)); }
23866:
23866:
23866: iterator
23866: insert(const_iterator __hint, node_type&& __nh)
23866: { return _M_t._M_reinsert_node_hint_unique(__hint, std::move(__nh)); }
23866:
23866: template<typename, typename>
23866: friend class std::_Rb_tree_merge_helper;
23866:
23866: template<typename _Compare1>
23866: void
23866: merge(set<_Key, _Compare1, _Alloc>& __source)
23866: {
23866: using _Merge_helper = _Rb_tree_merge_helper<set, _Compare1>;
23866: _M_t._M_merge_unique(_Merge_helper::_S_get_tree(__source));
23866: }
23866:
23866: template<typename _Compare1>
23866: void
23866: merge(set<_Key, _Compare1, _Alloc>&& __source)
23866: { merge(__source); }
23866:
23866: template<typename _Compare1>
23866: void
23866: merge(multiset<_Key, _Compare1, _Alloc>& __source)
23866: {
23866: using _Merge_helper = _Rb_tree_merge_helper<set, _Compare1>;
23866: _M_t._M_merge_unique(_Merge_helper::_S_get_tree(__source));
23866: }
23866:
23866: template<typename _Compare1>
23866: void
23866: merge(multiset<_Key, _Compare1, _Alloc>&& __source)
23866: { merge(__source); }
23866: # 652 "/usr/include/c++/10/bits/stl_set.h" 3
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: iterator
23866: erase(const_iterator __position)
23866: { return _M_t.erase(__position); }
23866: # 683 "/usr/include/c++/10/bits/stl_set.h" 3
23866: size_type
23866: erase(const key_type& __x)
23866: { return _M_t.erase(__x); }
23866: # 704 "/usr/include/c++/10/bits/stl_set.h" 3
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: iterator
23866: erase(const_iterator __first, const_iterator __last)
23866: { return _M_t.erase(__first, __last); }
23866: # 732 "/usr/include/c++/10/bits/stl_set.h" 3
23866: void
23866: clear() noexcept
23866: { _M_t.clear(); }
23866: # 747 "/usr/include/c++/10/bits/stl_set.h" 3
23866: size_type
23866: count(const key_type& __x) const
23866: { return _M_t.find(__x) == _M_t.end() ? 0 : 1; }
23866:
23866:
23866: template<typename _Kt>
23866: auto
23866: count(const _Kt& __x) const
23866: -> decltype(_M_t._M_count_tr(__x))
23866: { return _M_t._M_count_tr(__x); }
23866: # 793 "/usr/include/c++/10/bits/stl_set.h" 3
23866: iterator
23866: find(const key_type& __x)
23866: { return _M_t.find(__x); }
23866:
23866: const_iterator
23866: find(const key_type& __x) const
23866: { return _M_t.find(__x); }
23866:
23866:
23866: template<typename _Kt>
23866: auto
23866: find(const _Kt& __x)
23866: -> decltype(iterator{_M_t._M_find_tr(__x)})
23866: { return iterator{_M_t._M_find_tr(__x)}; }
23866:
23866: template<typename _Kt>
23866: auto
23866: find(const _Kt& __x) const
23866: -> decltype(const_iterator{_M_t._M_find_tr(__x)})
23866: { return const_iterator{_M_t._M_find_tr(__x)}; }
23866: # 828 "/usr/include/c++/10/bits/stl_set.h" 3
23866: iterator
23866: lower_bound(const key_type& __x)
23866: { return _M_t.lower_bound(__x); }
23866:
23866: const_iterator
23866: lower_bound(const key_type& __x) const
23866: { return _M_t.lower_bound(__x); }
23866:
23866:
23866: template<typename _Kt>
23866: auto
23866: lower_bound(const _Kt& __x)
23866: -> decltype(iterator(_M_t._M_lower_bound_tr(__x)))
23866: { return iterator(_M_t._M_lower_bound_tr(__x)); }
23866:
23866: template<typename _Kt>
23866: auto
23866: lower_bound(const _Kt& __x) const
23866: -> decltype(const_iterator(_M_t._M_lower_bound_tr(__x)))
23866: { return const_iterator(_M_t._M_lower_bound_tr(__x)); }
23866: # 858 "/usr/include/c++/10/bits/stl_set.h" 3
23866: iterator
23866: upper_bound(const key_type& __x)
23866: { return _M_t.upper_bound(__x); }
23866:
23866: const_iterator
23866: upper_bound(const key_type& __x) const
23866: { return _M_t.upper_bound(__x); }
23866:
23866:
23866: template<typename _Kt>
23866: auto
23866: upper_bound(const _Kt& __x)
23866: -> decltype(iterator(_M_t._M_upper_bound_tr(__x)))
23866: { return iterator(_M_t._M_upper_bound_tr(__x)); }
23866:
23866: template<typename _Kt>
23866: auto
23866: upper_bound(const _Kt& __x) const
23866: -> decltype(iterator(_M_t._M_upper_bound_tr(__x)))
23866: { return const_iterator(_M_t._M_upper_bound_tr(__x)); }
23866: # 897 "/usr/include/c++/10/bits/stl_set.h" 3
23866: std::pair<iterator, iterator>
23866: equal_range(const key_type& __x)
23866: { return _M_t.equal_range(__x); }
23866:
23866: std::pair<const_iterator, const_iterator>
23866: equal_range(const key_type& __x) const
23866: { return _M_t.equal_range(__x); }
23866:
23866:
23866: template<typename _Kt>
23866: auto
23866: equal_range(const _Kt& __x)
23866: -> decltype(pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)))
23866: { return pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)); }
23866:
23866: template<typename _Kt>
23866: auto
23866: equal_range(const _Kt& __x) const
23866: -> decltype(pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)))
23866: { return pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)); }
23866:
23866:
23866:
23866: template<typename _K1, typename _C1, typename _A1>
23866: friend bool
23866: operator==(const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&);
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _K1, typename _C1, typename _A1>
23866: friend bool
23866: operator<(const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&);
23866:
23866: };
23866:
23866:
23866:
23866: template<typename _InputIterator,
23866: typename _Compare =
23866: less<typename iterator_traits<_InputIterator>::value_type>,
23866: typename _Allocator =
23866: allocator<typename iterator_traits<_InputIterator>::value_type>,
23866: typename = _RequireInputIter<_InputIterator>,
23866: typename = _RequireNotAllocator<_Compare>,
23866: typename = _RequireAllocator<_Allocator>>
23866: set(_InputIterator, _InputIterator,
23866: _Compare = _Compare(), _Allocator = _Allocator())
23866: -> set<typename iterator_traits<_InputIterator>::value_type,
23866: _Compare, _Allocator>;
23866:
23866: template<typename _Key, typename _Compare = less<_Key>,
23866: typename _Allocator = allocator<_Key>,
23866: typename = _RequireNotAllocator<_Compare>,
23866: typename = _RequireAllocator<_Allocator>>
23866: set(initializer_list<_Key>,
23866: _Compare = _Compare(), _Allocator = _Allocator())
23866: -> set<_Key, _Compare, _Allocator>;
23866:
23866: template<typename _InputIterator, typename _Allocator,
23866: typename = _RequireInputIter<_InputIterator>,
23866: typename = _RequireAllocator<_Allocator>>
23866: set(_InputIterator, _InputIterator, _Allocator)
23866: -> set<typename iterator_traits<_InputIterator>::value_type,
23866: less<typename iterator_traits<_InputIterator>::value_type>,
23866: _Allocator>;
23866:
23866: template<typename _Key, typename _Allocator,
23866: typename = _RequireAllocator<_Allocator>>
23866: set(initializer_list<_Key>, _Allocator)
23866: -> set<_Key, less<_Key>, _Allocator>;
23866: # 983 "/usr/include/c++/10/bits/stl_set.h" 3
23866: template<typename _Key, typename _Compare, typename _Alloc>
23866: inline bool
23866: operator==(const set<_Key, _Compare, _Alloc>& __x,
23866: const set<_Key, _Compare, _Alloc>& __y)
23866: { return __x._M_t == __y._M_t; }
23866: # 1021 "/usr/include/c++/10/bits/stl_set.h" 3
23866: template<typename _Key, typename _Compare, typename _Alloc>
23866: inline bool
23866: operator<(const set<_Key, _Compare, _Alloc>& __x,
23866: const set<_Key, _Compare, _Alloc>& __y)
23866: { return __x._M_t < __y._M_t; }
23866:
23866:
23866: template<typename _Key, typename _Compare, typename _Alloc>
23866: inline bool
23866: operator!=(const set<_Key, _Compare, _Alloc>& __x,
23866: const set<_Key, _Compare, _Alloc>& __y)
23866: { return !(__x == __y); }
23866:
23866:
23866: template<typename _Key, typename _Compare, typename _Alloc>
23866: inline bool
23866: operator>(const set<_Key, _Compare, _Alloc>& __x,
23866: const set<_Key, _Compare, _Alloc>& __y)
23866: { return __y < __x; }
23866:
23866:
23866: template<typename _Key, typename _Compare, typename _Alloc>
23866: inline bool
23866: operator<=(const set<_Key, _Compare, _Alloc>& __x,
23866: const set<_Key, _Compare, _Alloc>& __y)
23866: { return !(__y < __x); }
23866:
23866:
23866: template<typename _Key, typename _Compare, typename _Alloc>
23866: inline bool
23866: operator>=(const set<_Key, _Compare, _Alloc>& __x,
23866: const set<_Key, _Compare, _Alloc>& __y)
23866: { return !(__x < __y); }
23866:
23866:
23866:
23866: template<typename _Key, typename _Compare, typename _Alloc>
23866: inline void
23866: swap(set<_Key, _Compare, _Alloc>& __x, set<_Key, _Compare, _Alloc>& __y)
23866: noexcept(noexcept(__x.swap(__y)))
23866: { __x.swap(__y); }
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Val, typename _Cmp1, typename _Alloc, typename _Cmp2>
23866: struct
23866: _Rb_tree_merge_helper<std::set<_Val, _Cmp1, _Alloc>, _Cmp2>
23866: {
23866: private:
23866: friend class std::set<_Val, _Cmp1, _Alloc>;
23866:
23866: static auto&
23866: _S_get_tree(std::set<_Val, _Cmp2, _Alloc>& __set)
23866: { return __set._M_t; }
23866:
23866: static auto&
23866: _S_get_tree(std::multiset<_Val, _Cmp2, _Alloc>& __set)
23866: { return __set._M_t; }
23866: };
23866:
23866:
23866:
23866: }
23866: # 62 "/usr/include/c++/10/set" 2 3
23866: # 1 "/usr/include/c++/10/bits/stl_multiset.h" 1 3
23866: # 57 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: #define _STL_MULTISET_H 1
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866: template<typename _Key, typename _Compare, typename _Alloc>
23866: class set;
23866: # 94 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: template <typename _Key, typename _Compare = std::less<_Key>,
23866: typename _Alloc = std::allocator<_Key> >
23866: class multiset
23866: {
23866: # 110 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: static_assert(is_same<typename remove_cv<_Key>::type, _Key>::value,
23866: "std::multiset must have a non-const, non-volatile value_type");
23866:
23866: static_assert(is_same<typename _Alloc::value_type, _Key>::value,
23866: "std::multiset must have the same value_type as its allocator");
23866:
23866:
23866:
23866: public:
23866:
23866: typedef _Key key_type;
23866: typedef _Key value_type;
23866: typedef _Compare key_compare;
23866: typedef _Compare value_compare;
23866: typedef _Alloc allocator_type;
23866:
23866: private:
23866:
23866: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template
23866: rebind<_Key>::other _Key_alloc_type;
23866:
23866: typedef _Rb_tree<key_type, value_type, _Identity<value_type>,
23866: key_compare, _Key_alloc_type> _Rep_type;
23866:
23866: _Rep_type _M_t;
23866:
23866: typedef __gnu_cxx::__alloc_traits<_Key_alloc_type> _Alloc_traits;
23866:
23866: public:
23866: typedef typename _Alloc_traits::pointer pointer;
23866: typedef typename _Alloc_traits::const_pointer const_pointer;
23866: typedef typename _Alloc_traits::reference reference;
23866: typedef typename _Alloc_traits::const_reference const_reference;
23866:
23866:
23866:
23866: typedef typename _Rep_type::const_iterator iterator;
23866: typedef typename _Rep_type::const_iterator const_iterator;
23866: typedef typename _Rep_type::const_reverse_iterator reverse_iterator;
23866: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
23866: typedef typename _Rep_type::size_type size_type;
23866: typedef typename _Rep_type::difference_type difference_type;
23866:
23866:
23866: using node_type = typename _Rep_type::node_type;
23866: # 164 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: multiset() = default;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: explicit
23866: multiset(const _Compare& __comp,
23866: const allocator_type& __a = allocator_type())
23866: : _M_t(__comp, _Key_alloc_type(__a)) { }
23866: # 186 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: template<typename _InputIterator>
23866: multiset(_InputIterator __first, _InputIterator __last)
23866: : _M_t()
23866: { _M_t._M_insert_range_equal(__first, __last); }
23866: # 202 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: template<typename _InputIterator>
23866: multiset(_InputIterator __first, _InputIterator __last,
23866: const _Compare& __comp,
23866: const allocator_type& __a = allocator_type())
23866: : _M_t(__comp, _Key_alloc_type(__a))
23866: { _M_t._M_insert_range_equal(__first, __last); }
23866: # 218 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: multiset(const multiset&) = default;
23866: # 227 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: multiset(multiset&&) = default;
23866: # 239 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: multiset(initializer_list<value_type> __l,
23866: const _Compare& __comp = _Compare(),
23866: const allocator_type& __a = allocator_type())
23866: : _M_t(__comp, _Key_alloc_type(__a))
23866: { _M_t._M_insert_range_equal(__l.begin(), __l.end()); }
23866:
23866:
23866: explicit
23866: multiset(const allocator_type& __a)
23866: : _M_t(_Key_alloc_type(__a)) { }
23866:
23866:
23866: multiset(const multiset& __m, const allocator_type& __a)
23866: : _M_t(__m._M_t, _Key_alloc_type(__a)) { }
23866:
23866:
23866: multiset(multiset&& __m, const allocator_type& __a)
23866: noexcept(is_nothrow_copy_constructible<_Compare>::value
23866: && _Alloc_traits::_S_always_equal())
23866: : _M_t(std::move(__m._M_t), _Key_alloc_type(__a)) { }
23866:
23866:
23866: multiset(initializer_list<value_type> __l, const allocator_type& __a)
23866: : _M_t(_Key_alloc_type(__a))
23866: { _M_t._M_insert_range_equal(__l.begin(), __l.end()); }
23866:
23866:
23866: template<typename _InputIterator>
23866: multiset(_InputIterator __first, _InputIterator __last,
23866: const allocator_type& __a)
23866: : _M_t(_Key_alloc_type(__a))
23866: { _M_t._M_insert_range_equal(__first, __last); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: ~multiset() = default;
23866: # 293 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: multiset&
23866: operator=(const multiset&) = default;
23866:
23866:
23866: multiset&
23866: operator=(multiset&&) = default;
23866: # 311 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: multiset&
23866: operator=(initializer_list<value_type> __l)
23866: {
23866: _M_t._M_assign_equal(__l.begin(), __l.end());
23866: return *this;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: key_compare
23866: key_comp() const
23866: { return _M_t.key_comp(); }
23866:
23866: value_compare
23866: value_comp() const
23866: { return _M_t.key_comp(); }
23866:
23866: allocator_type
23866: get_allocator() const noexcept
23866: { return allocator_type(_M_t.get_allocator()); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: iterator
23866: begin() const noexcept
23866: { return _M_t.begin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: iterator
23866: end() const noexcept
23866: { return _M_t.end(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: reverse_iterator
23866: rbegin() const noexcept
23866: { return _M_t.rbegin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: reverse_iterator
23866: rend() const noexcept
23866: { return _M_t.rend(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: iterator
23866: cbegin() const noexcept
23866: { return _M_t.begin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: iterator
23866: cend() const noexcept
23866: { return _M_t.end(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: reverse_iterator
23866: crbegin() const noexcept
23866: { return _M_t.rbegin(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: reverse_iterator
23866: crend() const noexcept
23866: { return _M_t.rend(); }
23866:
23866:
23866:
23866: [[__nodiscard__]] bool
23866: empty() const noexcept
23866: { return _M_t.empty(); }
23866:
23866:
23866: size_type
23866: size() const noexcept
23866: { return _M_t.size(); }
23866:
23866:
23866: size_type
23866: max_size() const noexcept
23866: { return _M_t.max_size(); }
23866: # 436 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: void
23866: swap(multiset& __x)
23866: noexcept(__is_nothrow_swappable<_Compare>::value)
23866: { _M_t.swap(__x._M_t); }
23866: # 455 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: template<typename... _Args>
23866: iterator
23866: emplace(_Args&&... __args)
23866: { return _M_t._M_emplace_equal(std::forward<_Args>(__args)...); }
23866: # 481 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: template<typename... _Args>
23866: iterator
23866: emplace_hint(const_iterator __pos, _Args&&... __args)
23866: {
23866: return _M_t._M_emplace_hint_equal(__pos,
23866: std::forward<_Args>(__args)...);
23866: }
23866: # 501 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: iterator
23866: insert(const value_type& __x)
23866: { return _M_t._M_insert_equal(__x); }
23866:
23866:
23866: iterator
23866: insert(value_type&& __x)
23866: { return _M_t._M_insert_equal(std::move(__x)); }
23866: # 531 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: iterator
23866: insert(const_iterator __position, const value_type& __x)
23866: { return _M_t._M_insert_equal_(__position, __x); }
23866:
23866:
23866: iterator
23866: insert(const_iterator __position, value_type&& __x)
23866: { return _M_t._M_insert_equal_(__position, std::move(__x)); }
23866: # 549 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: template<typename _InputIterator>
23866: void
23866: insert(_InputIterator __first, _InputIterator __last)
23866: { _M_t._M_insert_range_equal(__first, __last); }
23866: # 562 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: void
23866: insert(initializer_list<value_type> __l)
23866: { this->insert(__l.begin(), __l.end()); }
23866:
23866:
23866:
23866:
23866: node_type
23866: extract(const_iterator __pos)
23866: {
23866: ;
23866: return _M_t.extract(__pos);
23866: }
23866:
23866:
23866: node_type
23866: extract(const key_type& __x)
23866: { return _M_t.extract(__x); }
23866:
23866:
23866: iterator
23866: insert(node_type&& __nh)
23866: { return _M_t._M_reinsert_node_equal(std::move(__nh)); }
23866:
23866:
23866: iterator
23866: insert(const_iterator __hint, node_type&& __nh)
23866: { return _M_t._M_reinsert_node_hint_equal(__hint, std::move(__nh)); }
23866:
23866: template<typename, typename>
23866: friend class std::_Rb_tree_merge_helper;
23866:
23866: template<typename _Compare1>
23866: void
23866: merge(multiset<_Key, _Compare1, _Alloc>& __source)
23866: {
23866: using _Merge_helper = _Rb_tree_merge_helper<multiset, _Compare1>;
23866: _M_t._M_merge_equal(_Merge_helper::_S_get_tree(__source));
23866: }
23866:
23866: template<typename _Compare1>
23866: void
23866: merge(multiset<_Key, _Compare1, _Alloc>&& __source)
23866: { merge(__source); }
23866:
23866: template<typename _Compare1>
23866: void
23866: merge(set<_Key, _Compare1, _Alloc>& __source)
23866: {
23866: using _Merge_helper = _Rb_tree_merge_helper<multiset, _Compare1>;
23866: _M_t._M_merge_equal(_Merge_helper::_S_get_tree(__source));
23866: }
23866:
23866: template<typename _Compare1>
23866: void
23866: merge(set<_Key, _Compare1, _Alloc>&& __source)
23866: { merge(__source); }
23866: # 637 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: iterator
23866: erase(const_iterator __position)
23866: { return _M_t.erase(__position); }
23866: # 668 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: size_type
23866: erase(const key_type& __x)
23866: { return _M_t.erase(__x); }
23866: # 689 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: __attribute ((__abi_tag__ ("cxx11")))
23866: iterator
23866: erase(const_iterator __first, const_iterator __last)
23866: { return _M_t.erase(__first, __last); }
23866: # 717 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: void
23866: clear() noexcept
23866: { _M_t.clear(); }
23866: # 729 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: size_type
23866: count(const key_type& __x) const
23866: { return _M_t.count(__x); }
23866:
23866:
23866: template<typename _Kt>
23866: auto
23866: count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x))
23866: { return _M_t._M_count_tr(__x); }
23866: # 774 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: iterator
23866: find(const key_type& __x)
23866: { return _M_t.find(__x); }
23866:
23866: const_iterator
23866: find(const key_type& __x) const
23866: { return _M_t.find(__x); }
23866:
23866:
23866: template<typename _Kt>
23866: auto
23866: find(const _Kt& __x)
23866: -> decltype(iterator{_M_t._M_find_tr(__x)})
23866: { return iterator{_M_t._M_find_tr(__x)}; }
23866:
23866: template<typename _Kt>
23866: auto
23866: find(const _Kt& __x) const
23866: -> decltype(const_iterator{_M_t._M_find_tr(__x)})
23866: { return const_iterator{_M_t._M_find_tr(__x)}; }
23866: # 809 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: iterator
23866: lower_bound(const key_type& __x)
23866: { return _M_t.lower_bound(__x); }
23866:
23866: const_iterator
23866: lower_bound(const key_type& __x) const
23866: { return _M_t.lower_bound(__x); }
23866:
23866:
23866: template<typename _Kt>
23866: auto
23866: lower_bound(const _Kt& __x)
23866: -> decltype(iterator(_M_t._M_lower_bound_tr(__x)))
23866: { return iterator(_M_t._M_lower_bound_tr(__x)); }
23866:
23866: template<typename _Kt>
23866: auto
23866: lower_bound(const _Kt& __x) const
23866: -> decltype(iterator(_M_t._M_lower_bound_tr(__x)))
23866: { return iterator(_M_t._M_lower_bound_tr(__x)); }
23866: # 839 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: iterator
23866: upper_bound(const key_type& __x)
23866: { return _M_t.upper_bound(__x); }
23866:
23866: const_iterator
23866: upper_bound(const key_type& __x) const
23866: { return _M_t.upper_bound(__x); }
23866:
23866:
23866: template<typename _Kt>
23866: auto
23866: upper_bound(const _Kt& __x)
23866: -> decltype(iterator(_M_t._M_upper_bound_tr(__x)))
23866: { return iterator(_M_t._M_upper_bound_tr(__x)); }
23866:
23866: template<typename _Kt>
23866: auto
23866: upper_bound(const _Kt& __x) const
23866: -> decltype(iterator(_M_t._M_upper_bound_tr(__x)))
23866: { return iterator(_M_t._M_upper_bound_tr(__x)); }
23866: # 878 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: std::pair<iterator, iterator>
23866: equal_range(const key_type& __x)
23866: { return _M_t.equal_range(__x); }
23866:
23866: std::pair<const_iterator, const_iterator>
23866: equal_range(const key_type& __x) const
23866: { return _M_t.equal_range(__x); }
23866:
23866:
23866: template<typename _Kt>
23866: auto
23866: equal_range(const _Kt& __x)
23866: -> decltype(pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)))
23866: { return pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)); }
23866:
23866: template<typename _Kt>
23866: auto
23866: equal_range(const _Kt& __x) const
23866: -> decltype(pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)))
23866: { return pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)); }
23866:
23866:
23866:
23866: template<typename _K1, typename _C1, typename _A1>
23866: friend bool
23866: operator==(const multiset<_K1, _C1, _A1>&,
23866: const multiset<_K1, _C1, _A1>&);
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<typename _K1, typename _C1, typename _A1>
23866: friend bool
23866: operator< (const multiset<_K1, _C1, _A1>&,
23866: const multiset<_K1, _C1, _A1>&);
23866:
23866: };
23866:
23866:
23866:
23866: template<typename _InputIterator,
23866: typename _Compare =
23866: less<typename iterator_traits<_InputIterator>::value_type>,
23866: typename _Allocator =
23866: allocator<typename iterator_traits<_InputIterator>::value_type>,
23866: typename = _RequireInputIter<_InputIterator>,
23866: typename = _RequireNotAllocator<_Compare>,
23866: typename = _RequireAllocator<_Allocator>>
23866: multiset(_InputIterator, _InputIterator,
23866: _Compare = _Compare(), _Allocator = _Allocator())
23866: -> multiset<typename iterator_traits<_InputIterator>::value_type,
23866: _Compare, _Allocator>;
23866:
23866: template<typename _Key,
23866: typename _Compare = less<_Key>,
23866: typename _Allocator = allocator<_Key>,
23866: typename = _RequireNotAllocator<_Compare>,
23866: typename = _RequireAllocator<_Allocator>>
23866: multiset(initializer_list<_Key>,
23866: _Compare = _Compare(), _Allocator = _Allocator())
23866: -> multiset<_Key, _Compare, _Allocator>;
23866:
23866: template<typename _InputIterator, typename _Allocator,
23866: typename = _RequireInputIter<_InputIterator>,
23866: typename = _RequireAllocator<_Allocator>>
23866: multiset(_InputIterator, _InputIterator, _Allocator)
23866: -> multiset<typename iterator_traits<_InputIterator>::value_type,
23866: less<typename iterator_traits<_InputIterator>::value_type>,
23866: _Allocator>;
23866:
23866: template<typename _Key, typename _Allocator,
23866: typename = _RequireAllocator<_Allocator>>
23866: multiset(initializer_list<_Key>, _Allocator)
23866: -> multiset<_Key, less<_Key>, _Allocator>;
23866: # 969 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: template<typename _Key, typename _Compare, typename _Alloc>
23866: inline bool
23866: operator==(const multiset<_Key, _Compare, _Alloc>& __x,
23866: const multiset<_Key, _Compare, _Alloc>& __y)
23866: { return __x._M_t == __y._M_t; }
23866: # 1007 "/usr/include/c++/10/bits/stl_multiset.h" 3
23866: template<typename _Key, typename _Compare, typename _Alloc>
23866: inline bool
23866: operator<(const multiset<_Key, _Compare, _Alloc>& __x,
23866: const multiset<_Key, _Compare, _Alloc>& __y)
23866: { return __x._M_t < __y._M_t; }
23866:
23866:
23866: template<typename _Key, typename _Compare, typename _Alloc>
23866: inline bool
23866: operator!=(const multiset<_Key, _Compare, _Alloc>& __x,
23866: const multiset<_Key, _Compare, _Alloc>& __y)
23866: { return !(__x == __y); }
23866:
23866:
23866: template<typename _Key, typename _Compare, typename _Alloc>
23866: inline bool
23866: operator>(const multiset<_Key,_Compare,_Alloc>& __x,
23866: const multiset<_Key,_Compare,_Alloc>& __y)
23866: { return __y < __x; }
23866:
23866:
23866: template<typename _Key, typename _Compare, typename _Alloc>
23866: inline bool
23866: operator<=(const multiset<_Key, _Compare, _Alloc>& __x,
23866: const multiset<_Key, _Compare, _Alloc>& __y)
23866: { return !(__y < __x); }
23866:
23866:
23866: template<typename _Key, typename _Compare, typename _Alloc>
23866: inline bool
23866: operator>=(const multiset<_Key, _Compare, _Alloc>& __x,
23866: const multiset<_Key, _Compare, _Alloc>& __y)
23866: { return !(__x < __y); }
23866:
23866:
23866:
23866: template<typename _Key, typename _Compare, typename _Alloc>
23866: inline void
23866: swap(multiset<_Key, _Compare, _Alloc>& __x,
23866: multiset<_Key, _Compare, _Alloc>& __y)
23866: noexcept(noexcept(__x.swap(__y)))
23866: { __x.swap(__y); }
23866:
23866:
23866:
23866:
23866:
23866: template<typename _Val, typename _Cmp1, typename _Alloc, typename _Cmp2>
23866: struct
23866: _Rb_tree_merge_helper<std::multiset<_Val, _Cmp1, _Alloc>,
23866: _Cmp2>
23866: {
23866: private:
23866: friend class std::multiset<_Val, _Cmp1, _Alloc>;
23866:
23866: static auto&
23866: _S_get_tree(std::set<_Val, _Cmp2, _Alloc>& __set)
23866: { return __set._M_t; }
23866:
23866: static auto&
23866: _S_get_tree(std::multiset<_Val, _Cmp2, _Alloc>& __set)
23866: { return __set._M_t; }
23866: };
23866:
23866:
23866:
23866: }
23866: # 63 "/usr/include/c++/10/set" 2 3
23866: # 71 "/usr/include/c++/10/set" 3
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866: namespace pmr
23866: {
23866: template<typename _Tp> class polymorphic_allocator;
23866: template<typename _Key, typename _Cmp = std::less<_Key>>
23866: using set = std::set<_Key, _Cmp, polymorphic_allocator<_Key>>;
23866: template<typename _Key, typename _Cmp = std::less<_Key>>
23866: using multiset = std::multiset<_Key, _Cmp, polymorphic_allocator<_Key>>;
23866: }
23866:
23866: }
23866: # 96 "/usr/include/boost/detail/container_fwd.hpp" 2 3 4
23866: # 1 "/usr/include/c++/10/bitset" 1 3 4
23866: # 43 "/usr/include/c++/10/bitset" 3 4
23866: #define _GLIBCXX_BITSET 1
23866:
23866:
23866: # 46 "/usr/include/c++/10/bitset" 3
23866: # 57 "/usr/include/c++/10/bitset" 3
23866: #define _GLIBCXX_BITSET_BITS_PER_WORD (__CHAR_BIT__ * __SIZEOF_LONG__)
23866: #define _GLIBCXX_BITSET_WORDS(__n) ((__n) / _GLIBCXX_BITSET_BITS_PER_WORD + ((__n) % _GLIBCXX_BITSET_BITS_PER_WORD == 0 ? 0 : 1))
23866:
23866:
23866:
23866: #define _GLIBCXX_BITSET_BITS_PER_ULL (__CHAR_BIT__ * __SIZEOF_LONG_LONG__)
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<size_t _Nw>
23866: struct _Base_bitset
23866: {
23866: typedef unsigned long _WordT;
23866:
23866:
23866: _WordT _M_w[_Nw];
23866:
23866: constexpr _Base_bitset() noexcept
23866: : _M_w() { }
23866:
23866:
23866: constexpr _Base_bitset(unsigned long long __val) noexcept
23866: : _M_w{ _WordT(__val)
23866:
23866: , _WordT(__val >> (8 * 4))
23866:
23866: } { }
23866:
23866:
23866:
23866:
23866:
23866:
23866: static constexpr size_t
23866: _S_whichword(size_t __pos) noexcept
23866: { return __pos / (8 * 4); }
23866:
23866: static constexpr size_t
23866: _S_whichbyte(size_t __pos) noexcept
23866: { return (__pos % (8 * 4)) / 8; }
23866:
23866: static constexpr size_t
23866: _S_whichbit(size_t __pos) noexcept
23866: { return __pos % (8 * 4); }
23866:
23866: static constexpr _WordT
23866: _S_maskbit(size_t __pos) noexcept
23866: { return (static_cast<_WordT>(1)) << _S_whichbit(__pos); }
23866:
23866: _WordT&
23866: _M_getword(size_t __pos) noexcept
23866: { return _M_w[_S_whichword(__pos)]; }
23866:
23866: constexpr _WordT
23866: _M_getword(size_t __pos) const noexcept
23866: { return _M_w[_S_whichword(__pos)]; }
23866:
23866:
23866: const _WordT*
23866: _M_getdata() const noexcept
23866: { return _M_w; }
23866:
23866:
23866: _WordT&
23866: _M_hiword() noexcept
23866: { return _M_w[_Nw - 1]; }
23866:
23866: constexpr _WordT
23866: _M_hiword() const noexcept
23866: { return _M_w[_Nw - 1]; }
23866:
23866: void
23866: _M_do_and(const _Base_bitset<_Nw>& __x) noexcept
23866: {
23866: for (size_t __i = 0; __i < _Nw; __i++)
23866: _M_w[__i] &= __x._M_w[__i];
23866: }
23866:
23866: void
23866: _M_do_or(const _Base_bitset<_Nw>& __x) noexcept
23866: {
23866: for (size_t __i = 0; __i < _Nw; __i++)
23866: _M_w[__i] |= __x._M_w[__i];
23866: }
23866:
23866: void
23866: _M_do_xor(const _Base_bitset<_Nw>& __x) noexcept
23866: {
23866: for (size_t __i = 0; __i < _Nw; __i++)
23866: _M_w[__i] ^= __x._M_w[__i];
23866: }
23866:
23866: void
23866: _M_do_left_shift(size_t __shift) noexcept;
23866:
23866: void
23866: _M_do_right_shift(size_t __shift) noexcept;
23866:
23866: void
23866: _M_do_flip() noexcept
23866: {
23866: for (size_t __i = 0; __i < _Nw; __i++)
23866: _M_w[__i] = ~_M_w[__i];
23866: }
23866:
23866: void
23866: _M_do_set() noexcept
23866: {
23866: for (size_t __i = 0; __i < _Nw; __i++)
23866: _M_w[__i] = ~static_cast<_WordT>(0);
23866: }
23866:
23866: void
23866: _M_do_reset() noexcept
23866: { __builtin_memset(_M_w, 0, _Nw * sizeof(_WordT)); }
23866:
23866: bool
23866: _M_is_equal(const _Base_bitset<_Nw>& __x) const noexcept
23866: {
23866: for (size_t __i = 0; __i < _Nw; ++__i)
23866: if (_M_w[__i] != __x._M_w[__i])
23866: return false;
23866: return true;
23866: }
23866:
23866: template<size_t _Nb>
23866: bool
23866: _M_are_all() const noexcept
23866: {
23866: for (size_t __i = 0; __i < _Nw - 1; __i++)
23866: if (_M_w[__i] != ~static_cast<_WordT>(0))
23866: return false;
23866: return _M_hiword() == (~static_cast<_WordT>(0)
23866: >> (_Nw * (8 * 4)
23866: - _Nb));
23866: }
23866:
23866: bool
23866: _M_is_any() const noexcept
23866: {
23866: for (size_t __i = 0; __i < _Nw; __i++)
23866: if (_M_w[__i] != static_cast<_WordT>(0))
23866: return true;
23866: return false;
23866: }
23866:
23866: size_t
23866: _M_do_count() const noexcept
23866: {
23866: size_t __result = 0;
23866: for (size_t __i = 0; __i < _Nw; __i++)
23866: __result += __builtin_popcountl(_M_w[__i]);
23866: return __result;
23866: }
23866:
23866: unsigned long
23866: _M_do_to_ulong() const;
23866:
23866:
23866: unsigned long long
23866: _M_do_to_ullong() const;
23866:
23866:
23866:
23866: size_t
23866: _M_do_find_first(size_t) const noexcept;
23866:
23866:
23866: size_t
23866: _M_do_find_next(size_t, size_t) const noexcept;
23866: };
23866:
23866:
23866: template<size_t _Nw>
23866: void
23866: _Base_bitset<_Nw>::_M_do_left_shift(size_t __shift) noexcept
23866: {
23866: if (__builtin_expect(__shift != 0, 1))
23866: {
23866: const size_t __wshift = __shift / (8 * 4);
23866: const size_t __offset = __shift % (8 * 4);
23866:
23866: if (__offset == 0)
23866: for (size_t __n = _Nw - 1; __n >= __wshift; --__n)
23866: _M_w[__n] = _M_w[__n - __wshift];
23866: else
23866: {
23866: const size_t __sub_offset = ((8 * 4)
23866: - __offset);
23866: for (size_t __n = _Nw - 1; __n > __wshift; --__n)
23866: _M_w[__n] = ((_M_w[__n - __wshift] << __offset)
23866: | (_M_w[__n - __wshift - 1] >> __sub_offset));
23866: _M_w[__wshift] = _M_w[0] << __offset;
23866: }
23866:
23866: std::fill(_M_w + 0, _M_w + __wshift, static_cast<_WordT>(0));
23866: }
23866: }
23866:
23866: template<size_t _Nw>
23866: void
23866: _Base_bitset<_Nw>::_M_do_right_shift(size_t __shift) noexcept
23866: {
23866: if (__builtin_expect(__shift != 0, 1))
23866: {
23866: const size_t __wshift = __shift / (8 * 4);
23866: const size_t __offset = __shift % (8 * 4);
23866: const size_t __limit = _Nw - __wshift - 1;
23866:
23866: if (__offset == 0)
23866: for (size_t __n = 0; __n <= __limit; ++__n)
23866: _M_w[__n] = _M_w[__n + __wshift];
23866: else
23866: {
23866: const size_t __sub_offset = ((8 * 4)
23866: - __offset);
23866: for (size_t __n = 0; __n < __limit; ++__n)
23866: _M_w[__n] = ((_M_w[__n + __wshift] >> __offset)
23866: | (_M_w[__n + __wshift + 1] << __sub_offset));
23866: _M_w[__limit] = _M_w[_Nw-1] >> __offset;
23866: }
23866:
23866: std::fill(_M_w + __limit + 1, _M_w + _Nw, static_cast<_WordT>(0));
23866: }
23866: }
23866:
23866: template<size_t _Nw>
23866: unsigned long
23866: _Base_bitset<_Nw>::_M_do_to_ulong() const
23866: {
23866: for (size_t __i = 1; __i < _Nw; ++__i)
23866: if (_M_w[__i])
23866: __throw_overflow_error(("_Base_bitset::_M_do_to_ulong"));
23866: return _M_w[0];
23866: }
23866:
23866:
23866: template<size_t _Nw>
23866: unsigned long long
23866: _Base_bitset<_Nw>::_M_do_to_ullong() const
23866: {
23866: const bool __dw = sizeof(unsigned long long) > sizeof(unsigned long);
23866: for (size_t __i = 1 + __dw; __i < _Nw; ++__i)
23866: if (_M_w[__i])
23866: __throw_overflow_error(("_Base_bitset::_M_do_to_ullong"));
23866:
23866: if (__dw)
23866: return _M_w[0] + (static_cast<unsigned long long>(_M_w[1])
23866: << (8 * 4));
23866: return _M_w[0];
23866: }
23866:
23866:
23866: template<size_t _Nw>
23866: size_t
23866: _Base_bitset<_Nw>::
23866: _M_do_find_first(size_t __not_found) const noexcept
23866: {
23866: for (size_t __i = 0; __i < _Nw; __i++)
23866: {
23866: _WordT __thisword = _M_w[__i];
23866: if (__thisword != static_cast<_WordT>(0))
23866: return (__i * (8 * 4)
23866: + __builtin_ctzl(__thisword));
23866: }
23866:
23866: return __not_found;
23866: }
23866:
23866: template<size_t _Nw>
23866: size_t
23866: _Base_bitset<_Nw>::
23866: _M_do_find_next(size_t __prev, size_t __not_found) const noexcept
23866: {
23866:
23866: ++__prev;
23866:
23866:
23866: if (__prev >= _Nw * (8 * 4))
23866: return __not_found;
23866:
23866:
23866: size_t __i = _S_whichword(__prev);
23866: _WordT __thisword = _M_w[__i];
23866:
23866:
23866: __thisword &= (~static_cast<_WordT>(0)) << _S_whichbit(__prev);
23866:
23866: if (__thisword != static_cast<_WordT>(0))
23866: return (__i * (8 * 4)
23866: + __builtin_ctzl(__thisword));
23866:
23866:
23866: __i++;
23866: for (; __i < _Nw; __i++)
23866: {
23866: __thisword = _M_w[__i];
23866: if (__thisword != static_cast<_WordT>(0))
23866: return (__i * (8 * 4)
23866: + __builtin_ctzl(__thisword));
23866: }
23866:
23866: return __not_found;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<>
23866: struct _Base_bitset<1>
23866: {
23866: typedef unsigned long _WordT;
23866: _WordT _M_w;
23866:
23866: constexpr _Base_bitset() noexcept
23866: : _M_w(0)
23866: { }
23866:
23866:
23866: constexpr _Base_bitset(unsigned long long __val) noexcept
23866:
23866:
23866:
23866: : _M_w(__val)
23866: { }
23866:
23866: static constexpr size_t
23866: _S_whichword(size_t __pos) noexcept
23866: { return __pos / (8 * 4); }
23866:
23866: static constexpr size_t
23866: _S_whichbyte(size_t __pos) noexcept
23866: { return (__pos % (8 * 4)) / 8; }
23866:
23866: static constexpr size_t
23866: _S_whichbit(size_t __pos) noexcept
23866: { return __pos % (8 * 4); }
23866:
23866: static constexpr _WordT
23866: _S_maskbit(size_t __pos) noexcept
23866: { return (static_cast<_WordT>(1)) << _S_whichbit(__pos); }
23866:
23866: _WordT&
23866: _M_getword(size_t) noexcept
23866: { return _M_w; }
23866:
23866: constexpr _WordT
23866: _M_getword(size_t) const noexcept
23866: { return _M_w; }
23866:
23866:
23866: const _WordT*
23866: _M_getdata() const noexcept
23866: { return &_M_w; }
23866:
23866:
23866: _WordT&
23866: _M_hiword() noexcept
23866: { return _M_w; }
23866:
23866: constexpr _WordT
23866: _M_hiword() const noexcept
23866: { return _M_w; }
23866:
23866: void
23866: _M_do_and(const _Base_bitset<1>& __x) noexcept
23866: { _M_w &= __x._M_w; }
23866:
23866: void
23866: _M_do_or(const _Base_bitset<1>& __x) noexcept
23866: { _M_w |= __x._M_w; }
23866:
23866: void
23866: _M_do_xor(const _Base_bitset<1>& __x) noexcept
23866: { _M_w ^= __x._M_w; }
23866:
23866: void
23866: _M_do_left_shift(size_t __shift) noexcept
23866: { _M_w <<= __shift; }
23866:
23866: void
23866: _M_do_right_shift(size_t __shift) noexcept
23866: { _M_w >>= __shift; }
23866:
23866: void
23866: _M_do_flip() noexcept
23866: { _M_w = ~_M_w; }
23866:
23866: void
23866: _M_do_set() noexcept
23866: { _M_w = ~static_cast<_WordT>(0); }
23866:
23866: void
23866: _M_do_reset() noexcept
23866: { _M_w = 0; }
23866:
23866: bool
23866: _M_is_equal(const _Base_bitset<1>& __x) const noexcept
23866: { return _M_w == __x._M_w; }
23866:
23866: template<size_t _Nb>
23866: bool
23866: _M_are_all() const noexcept
23866: { return _M_w == (~static_cast<_WordT>(0)
23866: >> ((8 * 4) - _Nb)); }
23866:
23866: bool
23866: _M_is_any() const noexcept
23866: { return _M_w != 0; }
23866:
23866: size_t
23866: _M_do_count() const noexcept
23866: { return __builtin_popcountl(_M_w); }
23866:
23866: unsigned long
23866: _M_do_to_ulong() const noexcept
23866: { return _M_w; }
23866:
23866:
23866: unsigned long long
23866: _M_do_to_ullong() const noexcept
23866: { return _M_w; }
23866:
23866:
23866: size_t
23866: _M_do_find_first(size_t __not_found) const noexcept
23866: {
23866: if (_M_w != 0)
23866: return __builtin_ctzl(_M_w);
23866: else
23866: return __not_found;
23866: }
23866:
23866:
23866: size_t
23866: _M_do_find_next(size_t __prev, size_t __not_found) const
23866: noexcept
23866: {
23866: ++__prev;
23866: if (__prev >= ((size_t) (8 * 4)))
23866: return __not_found;
23866:
23866: _WordT __x = _M_w >> __prev;
23866: if (__x != 0)
23866: return __builtin_ctzl(__x) + __prev;
23866: else
23866: return __not_found;
23866: }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: template<>
23866: struct _Base_bitset<0>
23866: {
23866: typedef unsigned long _WordT;
23866:
23866: constexpr _Base_bitset() noexcept
23866: { }
23866:
23866:
23866: constexpr _Base_bitset(unsigned long long) noexcept
23866:
23866:
23866:
23866: { }
23866:
23866: static constexpr size_t
23866: _S_whichword(size_t __pos) noexcept
23866: { return __pos / (8 * 4); }
23866:
23866: static constexpr size_t
23866: _S_whichbyte(size_t __pos) noexcept
23866: { return (__pos % (8 * 4)) / 8; }
23866:
23866: static constexpr size_t
23866: _S_whichbit(size_t __pos) noexcept
23866: { return __pos % (8 * 4); }
23866:
23866: static constexpr _WordT
23866: _S_maskbit(size_t __pos) noexcept
23866: { return (static_cast<_WordT>(1)) << _S_whichbit(__pos); }
23866: # 560 "/usr/include/c++/10/bitset" 3
23866: _WordT&
23866: _M_getword(size_t) noexcept
23866: {
23866: __throw_out_of_range(("_Base_bitset::_M_getword"));
23866: return *new _WordT;
23866: }
23866:
23866: constexpr _WordT
23866: _M_getword(size_t) const noexcept
23866: { return 0; }
23866:
23866: constexpr _WordT
23866: _M_hiword() const noexcept
23866: { return 0; }
23866:
23866: void
23866: _M_do_and(const _Base_bitset<0>&) noexcept
23866: { }
23866:
23866: void
23866: _M_do_or(const _Base_bitset<0>&) noexcept
23866: { }
23866:
23866: void
23866: _M_do_xor(const _Base_bitset<0>&) noexcept
23866: { }
23866:
23866: void
23866: _M_do_left_shift(size_t) noexcept
23866: { }
23866:
23866: void
23866: _M_do_right_shift(size_t) noexcept
23866: { }
23866:
23866: void
23866: _M_do_flip() noexcept
23866: { }
23866:
23866: void
23866: _M_do_set() noexcept
23866: { }
23866:
23866: void
23866: _M_do_reset() noexcept
23866: { }
23866:
23866:
23866:
23866:
23866: bool
23866: _M_is_equal(const _Base_bitset<0>&) const noexcept
23866: { return true; }
23866:
23866: template<size_t _Nb>
23866: bool
23866: _M_are_all() const noexcept
23866: { return true; }
23866:
23866: bool
23866: _M_is_any() const noexcept
23866: { return false; }
23866:
23866: size_t
23866: _M_do_count() const noexcept
23866: { return 0; }
23866:
23866: unsigned long
23866: _M_do_to_ulong() const noexcept
23866: { return 0; }
23866:
23866:
23866: unsigned long long
23866: _M_do_to_ullong() const noexcept
23866: { return 0; }
23866:
23866:
23866:
23866:
23866: size_t
23866: _M_do_find_first(size_t) const noexcept
23866: { return 0; }
23866:
23866: size_t
23866: _M_do_find_next(size_t, size_t) const noexcept
23866: { return 0; }
23866: };
23866:
23866:
23866:
23866: template<size_t _Extrabits>
23866: struct _Sanitize
23866: {
23866: typedef unsigned long _WordT;
23866:
23866: static void
23866: _S_do_sanitize(_WordT& __val) noexcept
23866: { __val &= ~((~static_cast<_WordT>(0)) << _Extrabits); }
23866: };
23866:
23866: template<>
23866: struct _Sanitize<0>
23866: {
23866: typedef unsigned long _WordT;
23866:
23866: static void
23866: _S_do_sanitize(_WordT) noexcept { }
23866: };
23866:
23866:
23866: template<size_t _Nb, bool = (_Nb < (8 * 8))>
23866: struct _Sanitize_val
23866: {
23866: static constexpr unsigned long long
23866: _S_do_sanitize_val(unsigned long long __val)
23866: { return __val; }
23866: };
23866:
23866: template<size_t _Nb>
23866: struct _Sanitize_val<_Nb, true>
23866: {
23866: static constexpr unsigned long long
23866: _S_do_sanitize_val(unsigned long long __val)
23866: { return __val & ~((~static_cast<unsigned long long>(0)) << _Nb); }
23866: };
23866: # 750 "/usr/include/c++/10/bitset" 3
23866: template<size_t _Nb>
23866: class bitset
23866: : private _Base_bitset<((_Nb) / (8 * 4) + ((_Nb) % (8 * 4) == 0 ? 0 : 1))>
23866: {
23866: private:
23866: typedef _Base_bitset<((_Nb) / (8 * 4) + ((_Nb) % (8 * 4) == 0 ? 0 : 1))> _Base;
23866: typedef unsigned long _WordT;
23866:
23866: template<class _CharT, class _Traits, class _Alloc>
23866: void
23866: _M_check_initial_position(const std::basic_string<_CharT, _Traits, _Alloc>& __s,
23866: size_t __position) const
23866: {
23866: if (__position > __s.size())
23866: __throw_out_of_range_fmt(("bitset::bitset: __position " "(which is %zu) > __s.size() " "(which is %zu)")
23866:
23866: ,
23866: __position, __s.size());
23866: }
23866:
23866: void _M_check(size_t __position, const char *__s) const
23866: {
23866: if (__position >= _Nb)
23866: __throw_out_of_range_fmt(("%s: __position (which is %zu) " ">= _Nb (which is %zu)")
23866: ,
23866: __s, __position, _Nb);
23866: }
23866:
23866: void
23866: _M_do_sanitize() noexcept
23866: {
23866: typedef _Sanitize<_Nb % (8 * 4)> __sanitize_type;
23866: __sanitize_type::_S_do_sanitize(this->_M_hiword());
23866: }
23866:
23866:
23866: friend struct std::hash<bitset>;
23866:
23866:
23866: public:
23866: # 802 "/usr/include/c++/10/bitset" 3
23866: class reference
23866: {
23866: friend class bitset;
23866:
23866: _WordT* _M_wp;
23866: size_t _M_bpos;
23866:
23866:
23866: reference();
23866:
23866: public:
23866: reference(bitset& __b, size_t __pos) noexcept
23866: {
23866: _M_wp = &__b._M_getword(__pos);
23866: _M_bpos = _Base::_S_whichbit(__pos);
23866: }
23866:
23866:
23866: reference(const reference&) = default;
23866:
23866:
23866: ~reference() noexcept
23866: { }
23866:
23866:
23866: reference&
23866: operator=(bool __x) noexcept
23866: {
23866: if (__x)
23866: *_M_wp |= _Base::_S_maskbit(_M_bpos);
23866: else
23866: *_M_wp &= ~_Base::_S_maskbit(_M_bpos);
23866: return *this;
23866: }
23866:
23866:
23866: reference&
23866: operator=(const reference& __j) noexcept
23866: {
23866: if ((*(__j._M_wp) & _Base::_S_maskbit(__j._M_bpos)))
23866: *_M_wp |= _Base::_S_maskbit(_M_bpos);
23866: else
23866: *_M_wp &= ~_Base::_S_maskbit(_M_bpos);
23866: return *this;
23866: }
23866:
23866:
23866: bool
23866: operator~() const noexcept
23866: { return (*(_M_wp) & _Base::_S_maskbit(_M_bpos)) == 0; }
23866:
23866:
23866: operator bool() const noexcept
23866: { return (*(_M_wp) & _Base::_S_maskbit(_M_bpos)) != 0; }
23866:
23866:
23866: reference&
23866: flip() noexcept
23866: {
23866: *_M_wp ^= _Base::_S_maskbit(_M_bpos);
23866: return *this;
23866: }
23866: };
23866: friend class reference;
23866:
23866:
23866:
23866: constexpr bitset() noexcept
23866: { }
23866:
23866:
23866:
23866: constexpr bitset(unsigned long long __val) noexcept
23866: : _Base(_Sanitize_val<_Nb>::_S_do_sanitize_val(__val)) { }
23866: # 891 "/usr/include/c++/10/bitset" 3
23866: template<class _CharT, class _Traits, class _Alloc>
23866: explicit
23866: bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __s,
23866: size_t __position = 0)
23866: : _Base()
23866: {
23866: _M_check_initial_position(__s, __position);
23866: _M_copy_from_string(__s, __position,
23866: std::basic_string<_CharT, _Traits, _Alloc>::npos,
23866: _CharT('0'), _CharT('1'));
23866: }
23866: # 913 "/usr/include/c++/10/bitset" 3
23866: template<class _CharT, class _Traits, class _Alloc>
23866: bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __s,
23866: size_t __position, size_t __n)
23866: : _Base()
23866: {
23866: _M_check_initial_position(__s, __position);
23866: _M_copy_from_string(__s, __position, __n, _CharT('0'), _CharT('1'));
23866: }
23866:
23866:
23866:
23866: template<class _CharT, class _Traits, class _Alloc>
23866: bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __s,
23866: size_t __position, size_t __n,
23866: _CharT __zero, _CharT __one = _CharT('1'))
23866: : _Base()
23866: {
23866: _M_check_initial_position(__s, __position);
23866: _M_copy_from_string(__s, __position, __n, __zero, __one);
23866: }
23866: # 944 "/usr/include/c++/10/bitset" 3
23866: template<typename _CharT>
23866: explicit
23866: bitset(const _CharT* __str,
23866: typename std::basic_string<_CharT>::size_type __n
23866: = std::basic_string<_CharT>::npos,
23866: _CharT __zero = _CharT('0'), _CharT __one = _CharT('1'))
23866: : _Base()
23866: {
23866: if (!__str)
23866: __throw_logic_error(("bitset::bitset(const _CharT*, ...)"));
23866:
23866: if (__n == std::basic_string<_CharT>::npos)
23866: __n = std::char_traits<_CharT>::length(__str);
23866: _M_copy_from_ptr<_CharT, std::char_traits<_CharT>>(__str, __n, 0,
23866: __n, __zero,
23866: __one);
23866: }
23866: # 971 "/usr/include/c++/10/bitset" 3
23866: bitset<_Nb>&
23866: operator&=(const bitset<_Nb>& __rhs) noexcept
23866: {
23866: this->_M_do_and(__rhs);
23866: return *this;
23866: }
23866:
23866: bitset<_Nb>&
23866: operator|=(const bitset<_Nb>& __rhs) noexcept
23866: {
23866: this->_M_do_or(__rhs);
23866: return *this;
23866: }
23866:
23866: bitset<_Nb>&
23866: operator^=(const bitset<_Nb>& __rhs) noexcept
23866: {
23866: this->_M_do_xor(__rhs);
23866: return *this;
23866: }
23866: # 1000 "/usr/include/c++/10/bitset" 3
23866: bitset<_Nb>&
23866: operator<<=(size_t __position) noexcept
23866: {
23866: if (__builtin_expect(__position < _Nb, 1))
23866: {
23866: this->_M_do_left_shift(__position);
23866: this->_M_do_sanitize();
23866: }
23866: else
23866: this->_M_do_reset();
23866: return *this;
23866: }
23866:
23866: bitset<_Nb>&
23866: operator>>=(size_t __position) noexcept
23866: {
23866: if (__builtin_expect(__position < _Nb, 1))
23866: {
23866: this->_M_do_right_shift(__position);
23866: this->_M_do_sanitize();
23866: }
23866: else
23866: this->_M_do_reset();
23866: return *this;
23866: }
23866: # 1033 "/usr/include/c++/10/bitset" 3
23866: bitset<_Nb>&
23866: _Unchecked_set(size_t __pos) noexcept
23866: {
23866: this->_M_getword(__pos) |= _Base::_S_maskbit(__pos);
23866: return *this;
23866: }
23866:
23866: bitset<_Nb>&
23866: _Unchecked_set(size_t __pos, int __val) noexcept
23866: {
23866: if (__val)
23866: this->_M_getword(__pos) |= _Base::_S_maskbit(__pos);
23866: else
23866: this->_M_getword(__pos) &= ~_Base::_S_maskbit(__pos);
23866: return *this;
23866: }
23866:
23866: bitset<_Nb>&
23866: _Unchecked_reset(size_t __pos) noexcept
23866: {
23866: this->_M_getword(__pos) &= ~_Base::_S_maskbit(__pos);
23866: return *this;
23866: }
23866:
23866: bitset<_Nb>&
23866: _Unchecked_flip(size_t __pos) noexcept
23866: {
23866: this->_M_getword(__pos) ^= _Base::_S_maskbit(__pos);
23866: return *this;
23866: }
23866:
23866: constexpr bool
23866: _Unchecked_test(size_t __pos) const noexcept
23866: { return ((this->_M_getword(__pos) & _Base::_S_maskbit(__pos))
23866: != static_cast<_WordT>(0)); }
23866:
23866:
23866:
23866:
23866:
23866:
23866: bitset<_Nb>&
23866: set() noexcept
23866: {
23866: this->_M_do_set();
23866: this->_M_do_sanitize();
23866: return *this;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: bitset<_Nb>&
23866: set(size_t __position, bool __val = true)
23866: {
23866: this->_M_check(__position, ("bitset::set"));
23866: return _Unchecked_set(__position, __val);
23866: }
23866:
23866:
23866:
23866:
23866: bitset<_Nb>&
23866: reset() noexcept
23866: {
23866: this->_M_do_reset();
23866: return *this;
23866: }
23866: # 1112 "/usr/include/c++/10/bitset" 3
23866: bitset<_Nb>&
23866: reset(size_t __position)
23866: {
23866: this->_M_check(__position, ("bitset::reset"));
23866: return _Unchecked_reset(__position);
23866: }
23866:
23866:
23866:
23866:
23866: bitset<_Nb>&
23866: flip() noexcept
23866: {
23866: this->_M_do_flip();
23866: this->_M_do_sanitize();
23866: return *this;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: bitset<_Nb>&
23866: flip(size_t __position)
23866: {
23866: this->_M_check(__position, ("bitset::flip"));
23866: return _Unchecked_flip(__position);
23866: }
23866:
23866:
23866: bitset<_Nb>
23866: operator~() const noexcept
23866: { return bitset<_Nb>(*this).flip(); }
23866: # 1162 "/usr/include/c++/10/bitset" 3
23866: reference
23866: operator[](size_t __position)
23866: { return reference(*this, __position); }
23866:
23866: constexpr bool
23866: operator[](size_t __position) const
23866: { return _Unchecked_test(__position); }
23866: # 1177 "/usr/include/c++/10/bitset" 3
23866: unsigned long
23866: to_ulong() const
23866: { return this->_M_do_to_ulong(); }
23866:
23866:
23866: unsigned long long
23866: to_ullong() const
23866: { return this->_M_do_to_ullong(); }
23866: # 1195 "/usr/include/c++/10/bitset" 3
23866: template<class _CharT, class _Traits, class _Alloc>
23866: std::basic_string<_CharT, _Traits, _Alloc>
23866: to_string() const
23866: {
23866: std::basic_string<_CharT, _Traits, _Alloc> __result;
23866: _M_copy_to_string(__result, _CharT('0'), _CharT('1'));
23866: return __result;
23866: }
23866:
23866:
23866:
23866: template<class _CharT, class _Traits, class _Alloc>
23866: std::basic_string<_CharT, _Traits, _Alloc>
23866: to_string(_CharT __zero, _CharT __one = _CharT('1')) const
23866: {
23866: std::basic_string<_CharT, _Traits, _Alloc> __result;
23866: _M_copy_to_string(__result, __zero, __one);
23866: return __result;
23866: }
23866:
23866:
23866:
23866: template<class _CharT, class _Traits>
23866: std::basic_string<_CharT, _Traits, std::allocator<_CharT> >
23866: to_string() const
23866: { return to_string<_CharT, _Traits, std::allocator<_CharT> >(); }
23866:
23866:
23866:
23866: template<class _CharT, class _Traits>
23866: std::basic_string<_CharT, _Traits, std::allocator<_CharT> >
23866: to_string(_CharT __zero, _CharT __one = _CharT('1')) const
23866: { return to_string<_CharT, _Traits,
23866: std::allocator<_CharT> >(__zero, __one); }
23866:
23866: template<class _CharT>
23866: std::basic_string<_CharT, std::char_traits<_CharT>,
23866: std::allocator<_CharT> >
23866: to_string() const
23866: {
23866: return to_string<_CharT, std::char_traits<_CharT>,
23866: std::allocator<_CharT> >();
23866: }
23866:
23866: template<class _CharT>
23866: std::basic_string<_CharT, std::char_traits<_CharT>,
23866: std::allocator<_CharT> >
23866: to_string(_CharT __zero, _CharT __one = _CharT('1')) const
23866: {
23866: return to_string<_CharT, std::char_traits<_CharT>,
23866: std::allocator<_CharT> >(__zero, __one);
23866: }
23866:
23866: std::basic_string<char, std::char_traits<char>, std::allocator<char> >
23866: to_string() const
23866: {
23866: return to_string<char, std::char_traits<char>,
23866: std::allocator<char> >();
23866: }
23866:
23866: std::basic_string<char, std::char_traits<char>, std::allocator<char> >
23866: to_string(char __zero, char __one = '1') const
23866: {
23866: return to_string<char, std::char_traits<char>,
23866: std::allocator<char> >(__zero, __one);
23866: }
23866:
23866:
23866: template<class _CharT, class _Traits>
23866: void
23866: _M_copy_from_ptr(const _CharT*, size_t, size_t, size_t,
23866: _CharT, _CharT);
23866:
23866: template<class _CharT, class _Traits, class _Alloc>
23866: void
23866: _M_copy_from_string(const std::basic_string<_CharT,
23866: _Traits, _Alloc>& __s, size_t __pos, size_t __n,
23866: _CharT __zero, _CharT __one)
23866: { _M_copy_from_ptr<_CharT, _Traits>(__s.data(), __s.size(), __pos, __n,
23866: __zero, __one); }
23866:
23866: template<class _CharT, class _Traits, class _Alloc>
23866: void
23866: _M_copy_to_string(std::basic_string<_CharT, _Traits, _Alloc>&,
23866: _CharT, _CharT) const;
23866:
23866:
23866: template<class _CharT, class _Traits, class _Alloc>
23866: void
23866: _M_copy_from_string(const std::basic_string<_CharT,
23866: _Traits, _Alloc>& __s, size_t __pos, size_t __n)
23866: { _M_copy_from_string(__s, __pos, __n, _CharT('0'), _CharT('1')); }
23866:
23866: template<class _CharT, class _Traits, class _Alloc>
23866: void
23866: _M_copy_to_string(std::basic_string<_CharT, _Traits,_Alloc>& __s) const
23866: { _M_copy_to_string(__s, _CharT('0'), _CharT('1')); }
23866:
23866:
23866: size_t
23866: count() const noexcept
23866: { return this->_M_do_count(); }
23866:
23866:
23866: constexpr size_t
23866: size() const noexcept
23866: { return _Nb; }
23866:
23866:
23866:
23866: bool
23866: operator==(const bitset<_Nb>& __rhs) const noexcept
23866: { return this->_M_is_equal(__rhs); }
23866:
23866:
23866: bool
23866: operator!=(const bitset<_Nb>& __rhs) const noexcept
23866: { return !this->_M_is_equal(__rhs); }
23866: # 1322 "/usr/include/c++/10/bitset" 3
23866: bool
23866: test(size_t __position) const
23866: {
23866: this->_M_check(__position, ("bitset::test"));
23866: return _Unchecked_test(__position);
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: bool
23866: all() const noexcept
23866: { return this->template _M_are_all<_Nb>(); }
23866:
23866:
23866:
23866:
23866:
23866: bool
23866: any() const noexcept
23866: { return this->_M_is_any(); }
23866:
23866:
23866:
23866:
23866:
23866: bool
23866: none() const noexcept
23866: { return !this->_M_is_any(); }
23866:
23866:
23866:
23866: bitset<_Nb>
23866: operator<<(size_t __position) const noexcept
23866: { return bitset<_Nb>(*this) <<= __position; }
23866:
23866: bitset<_Nb>
23866: operator>>(size_t __position) const noexcept
23866: { return bitset<_Nb>(*this) >>= __position; }
23866: # 1372 "/usr/include/c++/10/bitset" 3
23866: size_t
23866: _Find_first() const noexcept
23866: { return this->_M_do_find_first(_Nb); }
23866: # 1383 "/usr/include/c++/10/bitset" 3
23866: size_t
23866: _Find_next(size_t __prev) const noexcept
23866: { return this->_M_do_find_next(__prev, _Nb); }
23866: };
23866:
23866:
23866: template<size_t _Nb>
23866: template<class _CharT, class _Traits>
23866: void
23866: bitset<_Nb>::
23866: _M_copy_from_ptr(const _CharT* __s, size_t __len,
23866: size_t __pos, size_t __n, _CharT __zero, _CharT __one)
23866: {
23866: reset();
23866: const size_t __nbits = std::min(_Nb, std::min(__n, size_t(__len - __pos)));
23866: for (size_t __i = __nbits; __i > 0; --__i)
23866: {
23866: const _CharT __c = __s[__pos + __nbits - __i];
23866: if (_Traits::eq(__c, __zero))
23866: ;
23866: else if (_Traits::eq(__c, __one))
23866: _Unchecked_set(__i - 1);
23866: else
23866: __throw_invalid_argument(("bitset::_M_copy_from_ptr"));
23866: }
23866: }
23866:
23866: template<size_t _Nb>
23866: template<class _CharT, class _Traits, class _Alloc>
23866: void
23866: bitset<_Nb>::
23866: _M_copy_to_string(std::basic_string<_CharT, _Traits, _Alloc>& __s,
23866: _CharT __zero, _CharT __one) const
23866: {
23866: __s.assign(_Nb, __zero);
23866: for (size_t __i = _Nb; __i > 0; --__i)
23866: if (_Unchecked_test(__i - 1))
23866: _Traits::assign(__s[_Nb - __i], __one);
23866: }
23866: # 1433 "/usr/include/c++/10/bitset" 3
23866: template<size_t _Nb>
23866: inline bitset<_Nb>
23866: operator&(const bitset<_Nb>& __x, const bitset<_Nb>& __y) noexcept
23866: {
23866: bitset<_Nb> __result(__x);
23866: __result &= __y;
23866: return __result;
23866: }
23866:
23866: template<size_t _Nb>
23866: inline bitset<_Nb>
23866: operator|(const bitset<_Nb>& __x, const bitset<_Nb>& __y) noexcept
23866: {
23866: bitset<_Nb> __result(__x);
23866: __result |= __y;
23866: return __result;
23866: }
23866:
23866: template <size_t _Nb>
23866: inline bitset<_Nb>
23866: operator^(const bitset<_Nb>& __x, const bitset<_Nb>& __y) noexcept
23866: {
23866: bitset<_Nb> __result(__x);
23866: __result ^= __y;
23866: return __result;
23866: }
23866: # 1470 "/usr/include/c++/10/bitset" 3
23866: template<class _CharT, class _Traits, size_t _Nb>
23866: std::basic_istream<_CharT, _Traits>&
23866: operator>>(std::basic_istream<_CharT, _Traits>& __is, bitset<_Nb>& __x)
23866: {
23866: typedef typename _Traits::char_type char_type;
23866: typedef std::basic_istream<_CharT, _Traits> __istream_type;
23866: typedef typename __istream_type::ios_base __ios_base;
23866:
23866: std::basic_string<_CharT, _Traits> __tmp;
23866: __tmp.reserve(_Nb);
23866:
23866:
23866:
23866: const char_type __zero = __is.widen('0');
23866: const char_type __one = __is.widen('1');
23866:
23866: typename __ios_base::iostate __state = __ios_base::goodbit;
23866: typename __istream_type::sentry __sentry(__is);
23866: if (__sentry)
23866: {
23866: try
23866: {
23866: for (size_t __i = _Nb; __i > 0; --__i)
23866: {
23866: static typename _Traits::int_type __eof = _Traits::eof();
23866:
23866: typename _Traits::int_type __c1 = __is.rdbuf()->sbumpc();
23866: if (_Traits::eq_int_type(__c1, __eof))
23866: {
23866: __state |= __ios_base::eofbit;
23866: break;
23866: }
23866: else
23866: {
23866: const char_type __c2 = _Traits::to_char_type(__c1);
23866: if (_Traits::eq(__c2, __zero))
23866: __tmp.push_back(__zero);
23866: else if (_Traits::eq(__c2, __one))
23866: __tmp.push_back(__one);
23866: else if (_Traits::
23866: eq_int_type(__is.rdbuf()->sputbackc(__c2),
23866: __eof))
23866: {
23866: __state |= __ios_base::failbit;
23866: break;
23866: }
23866: }
23866: }
23866: }
23866: catch(__cxxabiv1::__forced_unwind&)
23866: {
23866: __is._M_setstate(__ios_base::badbit);
23866: throw;
23866: }
23866: catch(...)
23866: { __is._M_setstate(__ios_base::badbit); }
23866: }
23866:
23866: if (__tmp.empty() && _Nb)
23866: __state |= __ios_base::failbit;
23866: else
23866: __x._M_copy_from_string(__tmp, static_cast<size_t>(0), _Nb,
23866: __zero, __one);
23866: if (__state)
23866: __is.setstate(__state);
23866: return __is;
23866: }
23866:
23866: template <class _CharT, class _Traits, size_t _Nb>
23866: std::basic_ostream<_CharT, _Traits>&
23866: operator<<(std::basic_ostream<_CharT, _Traits>& __os,
23866: const bitset<_Nb>& __x)
23866: {
23866: std::basic_string<_CharT, _Traits> __tmp;
23866:
23866:
23866:
23866: const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__os.getloc());
23866: __x._M_copy_to_string(__tmp, __ct.widen('0'), __ct.widen('1'));
23866: return __os << __tmp;
23866: }
23866:
23866:
23866:
23866: }
23866:
23866: #undef _GLIBCXX_BITSET_WORDS
23866: #undef _GLIBCXX_BITSET_BITS_PER_WORD
23866: #undef _GLIBCXX_BITSET_BITS_PER_ULL
23866:
23866:
23866:
23866: namespace std __attribute__ ((__visibility__ ("default")))
23866: {
23866:
23866:
23866:
23866:
23866: template<size_t _Nb>
23866: struct hash<std::bitset<_Nb>>
23866: : public __hash_base<size_t, std::bitset<_Nb>>
23866: {
23866: size_t
23866: operator()(const std::bitset<_Nb>& __b) const noexcept
23866: {
23866: const size_t __clength = (_Nb + 8 - 1) / 8;
23866: return std::_Hash_impl::hash(__b._M_getdata(), __clength);
23866: }
23866: };
23866:
23866: template<>
23866: struct hash<std::bitset<0>>
23866: : public __hash_base<size_t, std::bitset<0>>
23866: {
23866: size_t
23866: operator()(const std::bitset<0>&) const noexcept
23866: { return 0; }
23866: };
23866:
23866:
23866: }
23866: # 97 "/usr/include/boost/detail/container_fwd.hpp" 2 3 4
23866: # 23 "/usr/include/boost/container_hash/extensions.hpp" 2 3 4
23866: # 42 "/usr/include/boost/container_hash/extensions.hpp" 3 4
23866: namespace boost
23866: {
23866: template <class A, class B>
23866: std::size_t hash_value(std::pair<A, B> const&);
23866: template <class T, class A>
23866: std::size_t hash_value(std::vector<T, A> const&);
23866: template <class T, class A>
23866: std::size_t hash_value(std::list<T, A> const& v);
23866: template <class T, class A>
23866: std::size_t hash_value(std::deque<T, A> const& v);
23866: template <class K, class C, class A>
23866: std::size_t hash_value(std::set<K, C, A> const& v);
23866: template <class K, class C, class A>
23866: std::size_t hash_value(std::multiset<K, C, A> const& v);
23866: template <class K, class T, class C, class A>
23866: std::size_t hash_value(std::map<K, T, C, A> const& v);
23866: template <class K, class T, class C, class A>
23866: std::size_t hash_value(std::multimap<K, T, C, A> const& v);
23866:
23866: template <class T>
23866: std::size_t hash_value(std::complex<T> const&);
23866:
23866: template <class A, class B>
23866: std::size_t hash_value(std::pair<A, B> const& v)
23866: {
23866: std::size_t seed = 0;
23866: boost::hash_combine(seed, v.first);
23866: boost::hash_combine(seed, v.second);
23866: return seed;
23866: }
23866:
23866: template <class T, class A>
23866: std::size_t hash_value(std::vector<T, A> const& v)
23866: {
23866: return boost::hash_range(v.begin(), v.end());
23866: }
23866:
23866: template <class T, class A>
23866: std::size_t hash_value(std::list<T, A> const& v)
23866: {
23866: return boost::hash_range(v.begin(), v.end());
23866: }
23866:
23866: template <class T, class A>
23866: std::size_t hash_value(std::deque<T, A> const& v)
23866: {
23866: return boost::hash_range(v.begin(), v.end());
23866: }
23866:
23866: template <class K, class C, class A>
23866: std::size_t hash_value(std::set<K, C, A> const& v)
23866: {
23866: return boost::hash_range(v.begin(), v.end());
23866: }
23866:
23866: template <class K, class C, class A>
23866: std::size_t hash_value(std::multiset<K, C, A> const& v)
23866: {
23866: return boost::hash_range(v.begin(), v.end());
23866: }
23866:
23866: template <class K, class T, class C, class A>
23866: std::size_t hash_value(std::map<K, T, C, A> const& v)
23866: {
23866: return boost::hash_range(v.begin(), v.end());
23866: }
23866:
23866: template <class K, class T, class C, class A>
23866: std::size_t hash_value(std::multimap<K, T, C, A> const& v)
23866: {
23866: return boost::hash_range(v.begin(), v.end());
23866: }
23866:
23866: template <class T>
23866: std::size_t hash_value(std::complex<T> const& v)
23866: {
23866: boost::hash<T> hasher;
23866: std::size_t seed = hasher(v.imag());
23866: seed ^= hasher(v.real()) + (seed<<6) + (seed>>2);
23866: return seed;
23866: }
23866:
23866:
23866: template <class T, std::size_t N>
23866: std::size_t hash_value(std::array<T, N> const& v)
23866: {
23866: return boost::hash_range(v.begin(), v.end());
23866: }
23866:
23866:
23866:
23866: namespace hash_detail {
23866: template <std::size_t I, typename T>
23866: inline typename boost::enable_if_c<(I == std::tuple_size<T>::value),
23866: void>::type
23866: hash_combine_tuple(std::size_t&, T const&)
23866: {
23866: }
23866:
23866: template <std::size_t I, typename T>
23866: inline typename boost::enable_if_c<(I < std::tuple_size<T>::value),
23866: void>::type
23866: hash_combine_tuple(std::size_t& seed, T const& v)
23866: {
23866: boost::hash_combine(seed, std::get<I>(v));
23866: boost::hash_detail::hash_combine_tuple<I + 1>(seed, v);
23866: }
23866:
23866: template <typename T>
23866: inline std::size_t hash_tuple(T const& v)
23866: {
23866: std::size_t seed = 0;
23866: boost::hash_detail::hash_combine_tuple<0>(seed, v);
23866: return seed;
23866: }
23866: }
23866:
23866:
23866: template <typename... T>
23866: inline std::size_t hash_value(std::tuple<T...> const& v)
23866: {
23866: return boost::hash_detail::hash_tuple(v);
23866: }
23866: # 237 "/usr/include/boost/container_hash/extensions.hpp" 3 4
23866: template <typename T>
23866: inline std::size_t hash_value(std::shared_ptr<T> const& x) {
23866: return boost::hash_value(x.get());
23866: }
23866:
23866: template <typename T, typename Deleter>
23866: inline std::size_t hash_value(std::unique_ptr<T, Deleter> const& x) {
23866: return boost::hash_value(x.get());
23866: }
23866: # 301 "/usr/include/boost/container_hash/extensions.hpp" 3 4
23866: template <class T> struct hash
23866: : boost::hash_detail::hash_base<T>
23866: {
23866:
23866: std::size_t operator()(T const& val) const
23866: {
23866: return hash_value(val);
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: };
23866: # 361 "/usr/include/boost/container_hash/extensions.hpp" 3 4
23866: }
23866: # 762 "/usr/include/boost/container_hash/hash.hpp" 2 3 4
23866: # 30 "/usr/include/boost/multiprecision/number.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/c++/10/cstdio" 1 3 4
23866: # 39 "/usr/include/c++/10/cstdio" 3 4
23866:
23866: # 40 "/usr/include/c++/10/cstdio" 3
23866: # 32 "/usr/include/boost/multiprecision/number.hpp" 2 3 4
23866: # 1 "/usr/include/c++/10/cctype" 1 3 4
23866: # 39 "/usr/include/c++/10/cctype" 3 4
23866:
23866: # 40 "/usr/include/c++/10/cctype" 3
23866: # 33 "/usr/include/boost/multiprecision/number.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace multiprecision {
23866: # 47 "/usr/include/boost/multiprecision/number.hpp" 3 4
23866: template <class Backend, expression_template_option ExpressionTemplates>
23866: class number
23866: {
23866: typedef number<Backend, ExpressionTemplates> self_type;
23866:
23866: public:
23866: typedef Backend backend_type;
23866: typedef typename component_type<self_type>::type value_type;
23866: inline constexpr number() noexcept((noexcept(Backend()))) {}
23866: inline constexpr number(const number& e) noexcept((noexcept(Backend(std::declval<Backend const&>())))) : m_backend(e.m_backend) {}
23866: template <class V>
23866: inline constexpr number(const V& v, typename boost::enable_if_c<
23866: (boost::is_arithmetic<V>::value || is_same<std::string, V>::value || is_convertible<V, const char*>::value) && !is_convertible<typename detail::canonical<V, Backend>::type, Backend>::value && !detail::is_restricted_conversion<typename detail::canonical<V, Backend>::type, Backend>::value
23866:
23866:
23866:
23866: >::type* = 0)
23866: {
23866: m_backend = canonical_value(v);
23866: }
23866: template <class V>
23866: inline constexpr number(const V& v, typename boost::enable_if_c<
23866: is_convertible<typename detail::canonical<V, Backend>::type, Backend>::value && !detail::is_restricted_conversion<typename detail::canonical<V, Backend>::type, Backend>::value>::type* = 0)
23866:
23866: noexcept((noexcept(Backend(std::declval<typename detail::canonical<V, Backend>::type const&>()))))
23866:
23866: : m_backend(canonical_value(v))
23866: {}
23866: template <class V>
23866: inline constexpr number(const V& v, unsigned digits10, typename boost::enable_if_c<(boost::is_arithmetic<V>::value || is_same<std::string, V>::value || is_convertible<V, const char*>::value) && !detail::is_restricted_conversion<typename detail::canonical<V, Backend>::type, Backend>::value && (boost::multiprecision::number_category<Backend>::value != boost::multiprecision::number_kind_complex) && (boost::multiprecision::number_category<Backend>::value != boost::multiprecision::number_kind_rational)
23866:
23866:
23866:
23866: >::type* = 0)
23866: : m_backend(canonical_value(v), digits10)
23866: {}
23866: inline constexpr number(const number& e, unsigned digits10)
23866: noexcept((noexcept(Backend(std::declval<Backend const&>(), std::declval<unsigned>()))))
23866: : m_backend(e.m_backend, digits10) {}
23866: template <class V>
23866: explicit inline constexpr number(const V& v, typename boost::enable_if_c<
23866: (boost::is_arithmetic<V>::value || is_same<std::string, V>::value || is_convertible<V, const char*>::value) && !detail::is_explicitly_convertible<typename detail::canonical<V, Backend>::type, Backend>::value && detail::is_restricted_conversion<typename detail::canonical<V, Backend>::type, Backend>::value>::type* = 0)
23866: noexcept((noexcept(std::declval<Backend&>() = std::declval<typename detail::canonical<V, Backend>::type const&>())))
23866: {
23866: m_backend = canonical_value(v);
23866: }
23866: template <class V>
23866: explicit inline constexpr number(const V& v, typename boost::enable_if_c<
23866: detail::is_explicitly_convertible<typename detail::canonical<V, Backend>::type, Backend>::value && (detail::is_restricted_conversion<typename detail::canonical<V, Backend>::type, Backend>::value || !is_convertible<typename detail::canonical<V, Backend>::type, Backend>::value)>::type* = 0)
23866: noexcept((noexcept(Backend(std::declval<typename detail::canonical<V, Backend>::type const&>()))))
23866: : m_backend(canonical_value(v)) {}
23866: template <class V>
23866: explicit inline constexpr number(const V& v, unsigned digits10, typename boost::enable_if_c<(boost::is_arithmetic<V>::value || is_same<std::string, V>::value || is_convertible<V, const char*>::value) && detail::is_restricted_conversion<typename detail::canonical<V, Backend>::type, Backend>::value && (boost::multiprecision::number_category<Backend>::value != boost::multiprecision::number_kind_complex) && (boost::multiprecision::number_category<Backend>::value != boost::multiprecision::number_kind_rational)>::type* = 0)
23866: : m_backend(canonical_value(v), digits10) {}
23866:
23866: template <expression_template_option ET>
23866: inline constexpr number(const number<Backend, ET>& val)
23866: noexcept((noexcept(Backend(std::declval<Backend const&>())))) : m_backend(val.backend()) {}
23866:
23866: template <class Other, expression_template_option ET>
23866: inline constexpr number(const number<Other, ET>& val,
23866: typename boost::enable_if_c<(boost::is_convertible<Other, Backend>::value && !detail::is_restricted_conversion<Other, Backend>::value)>::type* = 0)
23866: noexcept((noexcept(Backend(std::declval<Other const&>()))))
23866: : m_backend(val.backend()) {}
23866:
23866: template <class Other, expression_template_option ET>
23866: explicit constexpr number(const number<Other, ET>& val, typename boost::enable_if_c<
23866: (!detail::is_explicitly_convertible<Other, Backend>::value)>::type* = 0)
23866: {
23866:
23866:
23866:
23866: detail::scoped_default_precision<number<Backend, ExpressionTemplates> > precision_guard_1(val);
23866: detail::scoped_default_precision<number<Other, ET> > precision_guard_2(val);
23866: using detail::generic_interconvert;
23866: generic_interconvert(backend(), val.backend(), number_category<Backend>(), number_category<Other>());
23866: }
23866: template <class Other, expression_template_option ET>
23866: explicit inline constexpr number(const number<Other, ET>& val, typename boost::enable_if_c<
23866: (detail::is_explicitly_convertible<Other, Backend>::value && (detail::is_restricted_conversion<Other, Backend>::value || !boost::is_convertible<Other, Backend>::value))>::type* = 0) noexcept((noexcept(Backend(std::declval<Other const&>()))))
23866: : m_backend(val.backend()) {}
23866:
23866: template <class V, class U>
23866: inline constexpr number(const V& v1, const U& v2,
23866: typename boost::enable_if_c<(is_convertible<V, value_type>::value && is_convertible<U, value_type>::value && !is_same<typename component_type<self_type>::type, self_type>::value)>::type* = 0)
23866: {
23866: using default_ops::assign_components;
23866: detail::scoped_default_precision<number<Backend, ExpressionTemplates> > precision_guard(v1, v2);
23866: assign_components(m_backend, canonical_value(detail::evaluate_if_expression(v1)), canonical_value(detail::evaluate_if_expression(v2)));
23866: }
23866: template <class V, class U>
23866: inline explicit constexpr number(const V& v1, const U& v2,
23866: typename boost::enable_if_c<
23866: (is_constructible<value_type, V>::value || is_convertible<V, std::string>::value) && (is_constructible<value_type, U>::value || is_convertible<U, std::string>::value) && !is_same<typename component_type<self_type>::type, self_type>::value && !is_same<V, self_type>::value && !(is_convertible<V, value_type>::value && is_convertible<U, value_type>::value)>::type* = 0)
23866: {
23866: using default_ops::assign_components;
23866: detail::scoped_default_precision<number<Backend, ExpressionTemplates> > precision_guard(v1, v2);
23866: assign_components(m_backend, canonical_value(detail::evaluate_if_expression(v1)), canonical_value(detail::evaluate_if_expression(v2)));
23866: }
23866:
23866:
23866:
23866:
23866: template <class Traits>
23866: explicit inline constexpr number(const std::basic_string_view<char, Traits>& view)
23866: {
23866: using default_ops::assign_from_string_view;
23866: assign_from_string_view(this->backend(), view);
23866: }
23866: template <class Traits>
23866: explicit inline constexpr number(const std::basic_string_view<char, Traits>& view_x, const std::basic_string_view<char, Traits>& view_y)
23866: {
23866: using default_ops::assign_from_string_view;
23866: assign_from_string_view(this->backend(), view_x, view_y);
23866: }
23866: template <class Traits>
23866: explicit inline constexpr number(const std::basic_string_view<char, Traits>& v, unsigned digits10)
23866: : m_backend(canonical_value(v), digits10) {}
23866: template <class Traits>
23866: constexpr number& assign(const std::basic_string_view<char, Traits>& view)
23866: {
23866: using default_ops::assign_from_string_view;
23866: assign_from_string_view(this->backend(), view);
23866: return *this;
23866: }
23866:
23866:
23866: template <class V, class U>
23866: inline constexpr number(const V& v1, const U& v2, unsigned digits10,
23866: typename boost::enable_if_c<(is_convertible<V, value_type>::value && is_convertible<U, value_type>::value && !is_same<typename component_type<self_type>::type, self_type>::value)>::type* = 0)
23866: : m_backend(canonical_value(detail::evaluate_if_expression(v1)), canonical_value(detail::evaluate_if_expression(v2)), digits10)
23866: {}
23866: template <class V, class U>
23866: inline explicit constexpr number(const V& v1, const U& v2, unsigned digits10,
23866: typename boost::enable_if_c<((is_constructible<value_type, V>::value || is_convertible<V, std::string>::value) && (is_constructible<value_type, U>::value || is_convertible<U, std::string>::value) && !is_same<typename component_type<self_type>::type, self_type>::value) && !(is_convertible<V, value_type>::value && is_convertible<U, value_type>::value)>::type* = 0)
23866: : m_backend(canonical_value(detail::evaluate_if_expression(v1)), canonical_value(detail::evaluate_if_expression(v2)), digits10) {}
23866:
23866: template <class Other, expression_template_option ET>
23866: inline constexpr number(const number<Other, ET>& v1, const number<Other, ET>& v2, typename boost::enable_if_c<boost::is_convertible<Other, Backend>::value>::type* = 0)
23866: {
23866: using default_ops::assign_components;
23866: detail::scoped_default_precision<number<Backend, ExpressionTemplates> > precision_guard(v1, v2);
23866: assign_components(m_backend, v1.backend(), v2.backend());
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: constexpr typename boost::enable_if_c<is_convertible<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type, self_type>::value, number&>::type operator=(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& e)
23866: {
23866: typedef mpl::bool_<is_same<number, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value> tag_type;
23866: detail::scoped_default_precision<number<Backend, ExpressionTemplates> > precision_guard(e);
23866: # 206 "/usr/include/boost/multiprecision/number.hpp" 3 4
23866: if constexpr(boost::multiprecision::detail::is_variable_precision<number>::value)
23866: if (precision_guard.precision() != boost::multiprecision::detail::current_precision_of(*this))
23866: {
23866: number t(e);
23866: return *this = std::move(t);
23866: }
23866: do_assign(e, tag_type());
23866: return *this;
23866: }
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: constexpr number& assign(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& e)
23866: {
23866: typedef mpl::bool_<is_same<number, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type>::value> tag_type;
23866: detail::scoped_default_precision<number<Backend, ExpressionTemplates> > precision_guard(e);
23866: # 229 "/usr/include/boost/multiprecision/number.hpp" 3 4
23866: if constexpr(boost::multiprecision::detail::is_variable_precision<number>::value)
23866: if (precision_guard.precision() != boost::multiprecision::detail::current_precision_of(*this))
23866: {
23866: number t;
23866: t.assign(e);
23866: return *this = std::move(t);
23866: }
23866: do_assign(e, tag_type());
23866: return *this;
23866: }
23866:
23866: inline constexpr number& operator=(const number& e)
23866: noexcept((noexcept(std::declval<Backend&>() = std::declval<Backend const&>())))
23866: {
23866: m_backend = e.m_backend;
23866: return *this;
23866: }
23866:
23866: template <class V>
23866: inline constexpr typename boost::enable_if_c<is_convertible<V, self_type>::value, number<Backend, ExpressionTemplates>&>::type
23866: operator=(const V& v)
23866: noexcept((noexcept(std::declval<Backend&>() = std::declval<const typename detail::canonical<V, Backend>::type&>())))
23866: {
23866: m_backend = canonical_value(v);
23866: return *this;
23866: }
23866: template <class V>
23866: inline constexpr number<Backend, ExpressionTemplates>& assign(const V& v)
23866: noexcept((noexcept(std::declval<Backend&>() = std::declval<const typename detail::canonical<V, Backend>::type&>())))
23866: {
23866: m_backend = canonical_value(v);
23866: return *this;
23866: }
23866: template <class V>
23866: inline constexpr number<Backend, ExpressionTemplates>& assign(const V& v, unsigned digits10)
23866: noexcept((noexcept(std::declval<Backend&>() = std::declval<const typename detail::canonical<V, Backend>::type&>())))
23866: {
23866: number t(v, digits10);
23866: return *this = t;
23866: }
23866: template <class Other, expression_template_option ET>
23866: constexpr typename boost::disable_if<boost::multiprecision::detail::is_explicitly_convertible<Other, Backend>, number<Backend, ExpressionTemplates>&>::type
23866: assign(const number<Other, ET>& v)
23866: {
23866:
23866:
23866:
23866: using detail::generic_interconvert;
23866: detail::scoped_default_precision<number<Backend, ExpressionTemplates> > precision_guard(v);
23866: detail::scoped_default_precision<number<Other, ET> > precision_guard2(v);
23866: # 288 "/usr/include/boost/multiprecision/number.hpp" 3 4
23866: if constexpr(boost::multiprecision::detail::is_variable_precision<number>::value)
23866: if (precision_guard.precision() != boost::multiprecision::detail::current_precision_of(*this))
23866: {
23866: number t(v);
23866: return *this = std::move(t);
23866: }
23866: generic_interconvert(backend(), v.backend(), number_category<Backend>(), number_category<Other>());
23866: return *this;
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: constexpr number(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& e, typename boost::enable_if_c<is_convertible<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type, self_type>::value>::type* = 0)
23866: {
23866:
23866:
23866:
23866: *this = e;
23866: }
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: explicit constexpr number(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& e,
23866: typename boost::enable_if_c<!is_convertible<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type, self_type>::value && boost::multiprecision::detail::is_explicitly_convertible<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type, self_type>::value>::type* = 0)
23866: {
23866:
23866:
23866:
23866: assign(e);
23866: }
23866:
23866:
23866: inline constexpr number(number&& r)
23866: noexcept((noexcept(Backend(std::declval<Backend>()))))
23866: : m_backend(static_cast<Backend&&>(r.m_backend))
23866: {}
23866: inline constexpr number& operator=(number&& r) noexcept((noexcept(std::declval<Backend&>() = std::declval<Backend>())))
23866: {
23866: m_backend = static_cast<Backend&&>(r.m_backend);
23866: return *this;
23866: }
23866:
23866:
23866: constexpr number& operator+=(const self_type& val)
23866: {
23866: detail::scoped_default_precision<number<Backend, ExpressionTemplates> > precision_guard(*this, val);
23866: # 340 "/usr/include/boost/multiprecision/number.hpp" 3 4
23866: if constexpr(boost::multiprecision::detail::is_variable_precision<number>::value)
23866: if (precision_guard.precision() != boost::multiprecision::detail::current_precision_of(*this))
23866: {
23866: number t(*this + val);
23866: return *this = std::move(t);
23866: }
23866: do_add(detail::expression<detail::terminal, self_type>(val), detail::terminal());
23866: return *this;
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: constexpr typename boost::enable_if_c<is_convertible<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type, self_type>::value, number&>::type operator+=(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& e)
23866: {
23866: detail::scoped_default_precision<number<Backend, ExpressionTemplates> > precision_guard(*this, e);
23866:
23866:
23866: if ((contains_self(e) && !is_self(e)))
23866: {
23866: self_type temp(e);
23866: do_add(detail::expression<detail::terminal, self_type>(temp), detail::terminal());
23866: }
23866: else
23866: {
23866: do_add(e, tag());
23866: }
23866: return *this;
23866: }
23866:
23866: template <class Arg1, class Arg2, class Arg3, class Arg4>
23866: constexpr number& operator+=(const detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>& e)
23866: {
23866: detail::scoped_default_precision<number<Backend, ExpressionTemplates> > precision_guard(*this, e);
23866: # 381 "/usr/include/boost/multiprecision/number.hpp" 3 4
23866: if constexpr(boost::multiprecision::detail::is_variable_precision<number>::value)
23866: if (precision_guard.precision() != boost::multiprecision::detail::current_precision_of(*this))
23866: {
23866: number t(*this + e);
23866: return *this = std::move(t);
23866: }
23866:
23866:
23866:
23866: using default_ops::eval_multiply_add;
23866: eval_multiply_add(m_backend, canonical_value(e.left_ref()), canonical_value(e.right_ref()));
23866: return *this;
23866: }
23866:
23866: template <class V>
23866: typename boost::enable_if_c<boost::is_convertible<V, self_type>::value, number<Backend, ExpressionTemplates>&>::type
23866: constexpr operator+=(const V& v)
23866: {
23866: using default_ops::eval_add;
23866: eval_add(m_backend, canonical_value(v));
23866: return *this;
23866: }
23866:
23866: constexpr number& operator-=(const self_type& val)
23866: {
23866: detail::scoped_default_precision<number<Backend, ExpressionTemplates> > precision_guard(*this, val);
23866: # 416 "/usr/include/boost/multiprecision/number.hpp" 3 4
23866: if constexpr(boost::multiprecision::detail::is_variable_precision<number>::value)
23866: if (precision_guard.precision() != boost::multiprecision::detail::current_precision_of(*this))
23866: {
23866: number t(*this - val);
23866: return *this = std::move(t);
23866: }
23866: do_subtract(detail::expression<detail::terminal, self_type>(val), detail::terminal());
23866: return *this;
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: constexpr typename boost::enable_if_c<is_convertible<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type, self_type>::value, number&>::type operator-=(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& e)
23866: {
23866: detail::scoped_default_precision<number<Backend, ExpressionTemplates> > precision_guard(*this, e);
23866:
23866: if (contains_self(e))
23866: {
23866: self_type temp(e);
23866: do_subtract(detail::expression<detail::terminal, self_type>(temp), detail::terminal());
23866: }
23866: else
23866: {
23866: do_subtract(e, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::tag_type());
23866: }
23866: return *this;
23866: }
23866:
23866: template <class V>
23866: constexpr typename boost::enable_if_c<boost::is_convertible<V, self_type>::value, number<Backend, ExpressionTemplates>&>::type
23866: operator-=(const V& v)
23866: {
23866: using default_ops::eval_subtract;
23866: eval_subtract(m_backend, canonical_value(v));
23866: return *this;
23866: }
23866:
23866: template <class Arg1, class Arg2, class Arg3, class Arg4>
23866: constexpr number& operator-=(const detail::expression<detail::multiply_immediates, Arg1, Arg2, Arg3, Arg4>& e)
23866: {
23866: detail::scoped_default_precision<number<Backend, ExpressionTemplates> > precision_guard(*this, e);
23866: # 465 "/usr/include/boost/multiprecision/number.hpp" 3 4
23866: if constexpr(boost::multiprecision::detail::is_variable_precision<number>::value)
23866: if (precision_guard.precision() != boost::multiprecision::detail::current_precision_of(*this))
23866: {
23866: number t(*this - e);
23866: return *this = std::move(t);
23866: }
23866:
23866:
23866:
23866: using default_ops::eval_multiply_subtract;
23866: eval_multiply_subtract(m_backend, canonical_value(e.left_ref()), canonical_value(e.right_ref()));
23866: return *this;
23866: }
23866:
23866: constexpr number& operator*=(const self_type& e)
23866: {
23866: detail::scoped_default_precision<number<Backend, ExpressionTemplates> > precision_guard(*this, e);
23866: # 491 "/usr/include/boost/multiprecision/number.hpp" 3 4
23866: if constexpr(boost::multiprecision::detail::is_variable_precision<number>::value)
23866: if (precision_guard.precision() != boost::multiprecision::detail::current_precision_of(*this))
23866: {
23866: number t(*this * e);
23866: return *this = std::move(t);
23866: }
23866: do_multiplies(detail::expression<detail::terminal, self_type>(e), detail::terminal());
23866: return *this;
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: constexpr typename boost::enable_if_c<is_convertible<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type, self_type>::value, number&>::type operator*=(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& e)
23866: {
23866: detail::scoped_default_precision<number<Backend, ExpressionTemplates> > precision_guard(*this, e);
23866:
23866:
23866: if ((contains_self(e) && !is_self(e)))
23866: {
23866: self_type temp(e);
23866: do_multiplies(detail::expression<detail::terminal, self_type>(temp), detail::terminal());
23866: }
23866: else
23866: {
23866: do_multiplies(e, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::tag_type());
23866: }
23866: return *this;
23866: }
23866:
23866: template <class V>
23866: constexpr typename boost::enable_if_c<boost::is_convertible<V, self_type>::value, number<Backend, ExpressionTemplates>&>::type
23866: operator*=(const V& v)
23866: {
23866: using default_ops::eval_multiply;
23866: eval_multiply(m_backend, canonical_value(v));
23866: return *this;
23866: }
23866:
23866: constexpr number& operator%=(const self_type& e)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The modulus operation is only valid for integer types");
23866: detail::scoped_default_precision<number<Backend, ExpressionTemplates> > precision_guard(*this, e);
23866: # 541 "/usr/include/boost/multiprecision/number.hpp" 3 4
23866: if constexpr(boost::multiprecision::detail::is_variable_precision<number>::value)
23866: if (precision_guard.precision() != boost::multiprecision::detail::current_precision_of(*this))
23866: {
23866: number t(*this % e);
23866: return *this = std::move(t);
23866: }
23866: do_modulus(detail::expression<detail::terminal, self_type>(e), detail::terminal());
23866: return *this;
23866: }
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: constexpr typename boost::enable_if_c<is_convertible<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type, self_type>::value, number&>::type operator%=(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& e)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The modulus operation is only valid for integer types");
23866: detail::scoped_default_precision<number<Backend, ExpressionTemplates> > precision_guard(*this, e);
23866:
23866: if (contains_self(e))
23866: {
23866: self_type temp(e);
23866: do_modulus(detail::expression<detail::terminal, self_type>(temp), detail::terminal());
23866: }
23866: else
23866: {
23866: do_modulus(e, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::tag_type());
23866: }
23866: return *this;
23866: }
23866: template <class V>
23866: constexpr typename boost::enable_if_c<boost::is_convertible<V, self_type>::value, number<Backend, ExpressionTemplates>&>::type
23866: operator%=(const V& v)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The modulus operation is only valid for integer types");
23866: using default_ops::eval_modulus;
23866: eval_modulus(m_backend, canonical_value(v));
23866: return *this;
23866: }
23866: # 585 "/usr/include/boost/multiprecision/number.hpp" 3 4
23866: inline constexpr number& operator++()
23866: {
23866: using default_ops::eval_increment;
23866: eval_increment(m_backend);
23866: return *this;
23866: }
23866:
23866: inline constexpr number& operator--()
23866: {
23866: using default_ops::eval_decrement;
23866: eval_decrement(m_backend);
23866: return *this;
23866: }
23866:
23866: inline constexpr number operator++(int)
23866: {
23866: using default_ops::eval_increment;
23866: self_type temp(*this);
23866: eval_increment(m_backend);
23866: return temp;
23866: }
23866:
23866: inline constexpr number operator--(int)
23866: {
23866: using default_ops::eval_decrement;
23866: self_type temp(*this);
23866: eval_decrement(m_backend);
23866: return temp;
23866: }
23866:
23866: template <class V>
23866: inline constexpr typename boost::enable_if_c<is_integral<V>::value, number&>::type operator<<=(V val)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The left-shift operation is only valid for integer types");
23866: detail::check_shift_range(val, mpl::bool_<(sizeof(V) > sizeof(std::size_t))>(), mpl::bool_<is_signed<V>::value>());
23866: eval_left_shift(m_backend, static_cast<std::size_t>(canonical_value(val)));
23866: return *this;
23866: }
23866:
23866: template <class V>
23866: inline constexpr typename boost::enable_if_c<is_integral<V>::value, number&>::type operator>>=(V val)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The right-shift operation is only valid for integer types");
23866: detail::check_shift_range(val, mpl::bool_<(sizeof(V) > sizeof(std::size_t))>(), mpl::bool_<is_signed<V>::value>());
23866: eval_right_shift(m_backend, static_cast<std::size_t>(canonical_value(val)));
23866: return *this;
23866: }
23866:
23866: inline constexpr number& operator/=(const self_type& e)
23866: {
23866: detail::scoped_default_precision<number<Backend, ExpressionTemplates> > precision_guard(*this, e);
23866: # 645 "/usr/include/boost/multiprecision/number.hpp" 3 4
23866: if constexpr(boost::multiprecision::detail::is_variable_precision<number>::value)
23866: if (precision_guard.precision() != boost::multiprecision::detail::current_precision_of(*this))
23866: {
23866: number t(*this / e);
23866: return *this = std::move(t);
23866: }
23866: do_divide(detail::expression<detail::terminal, self_type>(e), detail::terminal());
23866: return *this;
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: constexpr typename boost::enable_if_c<is_convertible<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type, self_type>::value, number&>::type operator/=(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& e)
23866: {
23866: detail::scoped_default_precision<number<Backend, ExpressionTemplates> > precision_guard(*this, e);
23866:
23866: if (contains_self(e))
23866: {
23866: self_type temp(e);
23866: do_divide(detail::expression<detail::terminal, self_type>(temp), detail::terminal());
23866: }
23866: else
23866: {
23866: do_divide(e, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::tag_type());
23866: }
23866: return *this;
23866: }
23866:
23866: template <class V>
23866: inline constexpr typename boost::enable_if_c<boost::is_convertible<V, self_type>::value, number<Backend, ExpressionTemplates>&>::type
23866: operator/=(const V& v)
23866: {
23866: using default_ops::eval_divide;
23866: eval_divide(m_backend, canonical_value(v));
23866: return *this;
23866: }
23866:
23866: inline constexpr number& operator&=(const self_type& e)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The bitwise & operation is only valid for integer types");
23866: do_bitwise_and(detail::expression<detail::terminal, self_type>(e), detail::terminal());
23866: return *this;
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: constexpr typename boost::enable_if_c<is_convertible<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type, self_type>::value, number&>::type operator&=(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& e)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The bitwise & operation is only valid for integer types");
23866:
23866:
23866: if (contains_self(e) && !is_self(e))
23866: {
23866: self_type temp(e);
23866: do_bitwise_and(detail::expression<detail::terminal, self_type>(temp), detail::terminal());
23866: }
23866: else
23866: {
23866: do_bitwise_and(e, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::tag_type());
23866: }
23866: return *this;
23866: }
23866:
23866: template <class V>
23866: inline constexpr typename boost::enable_if_c<boost::is_convertible<V, self_type>::value, number<Backend, ExpressionTemplates>&>::type
23866: operator&=(const V& v)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The bitwise & operation is only valid for integer types");
23866: using default_ops::eval_bitwise_and;
23866: eval_bitwise_and(m_backend, canonical_value(v));
23866: return *this;
23866: }
23866:
23866: inline constexpr number& operator|=(const self_type& e)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The bitwise | operation is only valid for integer types");
23866: do_bitwise_or(detail::expression<detail::terminal, self_type>(e), detail::terminal());
23866: return *this;
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: constexpr typename boost::enable_if_c<is_convertible<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type, self_type>::value, number&>::type operator|=(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& e)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The bitwise | operation is only valid for integer types");
23866:
23866:
23866: if (contains_self(e) && !is_self(e))
23866: {
23866: self_type temp(e);
23866: do_bitwise_or(detail::expression<detail::terminal, self_type>(temp), detail::terminal());
23866: }
23866: else
23866: {
23866: do_bitwise_or(e, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::tag_type());
23866: }
23866: return *this;
23866: }
23866:
23866: template <class V>
23866: inline constexpr typename boost::enable_if_c<boost::is_convertible<V, self_type>::value, number<Backend, ExpressionTemplates>&>::type
23866: operator|=(const V& v)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The bitwise | operation is only valid for integer types");
23866: using default_ops::eval_bitwise_or;
23866: eval_bitwise_or(m_backend, canonical_value(v));
23866: return *this;
23866: }
23866:
23866: inline constexpr number& operator^=(const self_type& e)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The bitwise ^ operation is only valid for integer types");
23866: do_bitwise_xor(detail::expression<detail::terminal, self_type>(e), detail::terminal());
23866: return *this;
23866: }
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: constexpr typename boost::enable_if_c<is_convertible<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type, self_type>::value, number&>::type operator^=(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& e)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The bitwise ^ operation is only valid for integer types");
23866: if (contains_self(e))
23866: {
23866: self_type temp(e);
23866: do_bitwise_xor(detail::expression<detail::terminal, self_type>(temp), detail::terminal());
23866: }
23866: else
23866: {
23866: do_bitwise_xor(e, typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::tag_type());
23866: }
23866: return *this;
23866: }
23866:
23866: template <class V>
23866: inline constexpr typename boost::enable_if_c<boost::is_convertible<V, self_type>::value, number<Backend, ExpressionTemplates>&>::type
23866: operator^=(const V& v)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The bitwise ^ operation is only valid for integer types");
23866: using default_ops::eval_bitwise_xor;
23866: eval_bitwise_xor(m_backend, canonical_value(v));
23866: return *this;
23866: }
23866:
23866:
23866:
23866: inline constexpr void swap(self_type& other) noexcept((noexcept(std::declval<Backend>().swap(std::declval<Backend&>()))))
23866: {
23866: m_backend.swap(other.backend());
23866: }
23866:
23866:
23866:
23866: inline constexpr bool is_zero() const
23866: {
23866: using default_ops::eval_is_zero;
23866: return eval_is_zero(m_backend);
23866: }
23866: inline constexpr int sign() const
23866: {
23866: using default_ops::eval_get_sign;
23866: return eval_get_sign(m_backend);
23866: }
23866:
23866:
23866:
23866: std::string str(std::streamsize digits = 0, std::ios_base::fmtflags f = std::ios_base::fmtflags(0)) const
23866: {
23866: return m_backend.str(digits, f);
23866: }
23866: template <class Archive>
23866: void serialize(Archive& ar, const unsigned int )
23866: {
23866: ar& boost::make_nvp("backend", m_backend);
23866: }
23866:
23866: private:
23866: template <class T>
23866: constexpr void convert_to_imp(T* result) const
23866: {
23866: using default_ops::eval_convert_to;
23866: eval_convert_to(result, m_backend);
23866: }
23866: template <class B2, expression_template_option ET>
23866: constexpr void convert_to_imp(number<B2, ET>* result) const
23866: {
23866: result->assign(*this);
23866: }
23866: constexpr void convert_to_imp(std::string* result) const
23866: {
23866: *result = this->str();
23866: }
23866:
23866: public:
23866: template <class T>
23866: constexpr T convert_to() const
23866: {
23866: T result = T();
23866: convert_to_imp(&result);
23866: return result;
23866: }
23866: # 866 "/usr/include/boost/multiprecision/number.hpp" 3 4
23866: template <class T, class = typename boost::disable_if_c<boost::is_constructible<T, self_type const&>::value || !boost::is_default_constructible<T>::value || (!boost::is_arithmetic<T>::value && !boost::is_complex<T>::value), T>::type>
23866:
23866: explicit constexpr operator T() const
23866: {
23866: return this->template convert_to<T>();
23866: }
23866: inline explicit constexpr operator bool() const
23866: {
23866: return !is_zero();
23866: }
23866: # 892 "/usr/include/boost/multiprecision/number.hpp" 3 4
23866: static constexpr unsigned default_precision() noexcept
23866: {
23866: return Backend::default_precision();
23866: }
23866: static constexpr void default_precision(unsigned digits10)
23866: {
23866: Backend::default_precision(digits10);
23866: }
23866: constexpr unsigned precision() const noexcept
23866: {
23866: return m_backend.precision();
23866: }
23866: constexpr void precision(unsigned digits10)
23866: {
23866: m_backend.precision(digits10);
23866: }
23866:
23866:
23866:
23866: inline constexpr int compare(const number<Backend, ExpressionTemplates>& o) const
23866: noexcept((noexcept(std::declval<Backend>().compare(std::declval<Backend>()))))
23866: {
23866: return m_backend.compare(o.m_backend);
23866: }
23866: template <class V>
23866: inline constexpr typename boost::enable_if_c<is_arithmetic<V>::value && (number_category<Backend>::value != number_kind_complex), int>::type compare(const V& o) const
23866: {
23866: using default_ops::eval_get_sign;
23866: if (o == 0)
23866: return eval_get_sign(m_backend);
23866: return m_backend.compare(canonical_value(o));
23866: }
23866: template <class V>
23866: inline constexpr typename boost::enable_if_c<is_arithmetic<V>::value && (number_category<Backend>::value == number_kind_complex), int>::type compare(const V& o) const
23866: {
23866: using default_ops::eval_get_sign;
23866: return m_backend.compare(canonical_value(o));
23866: }
23866:
23866:
23866:
23866:
23866: inline constexpr Backend& backend() & noexcept
23866: {
23866: return m_backend;
23866: }
23866: inline constexpr const Backend& backend() const& noexcept { return m_backend; }
23866: inline constexpr Backend&& backend() && noexcept { return static_cast<Backend&&>(m_backend); }
23866: inline constexpr Backend const&& backend() const&& noexcept { return static_cast<Backend const&&>(m_backend); }
23866: # 951 "/usr/include/boost/multiprecision/number.hpp" 3 4
23866: constexpr typename scalar_result_from_possible_complex<number<Backend, ExpressionTemplates> >::type
23866: real() const
23866: {
23866: using default_ops::eval_real;
23866: detail::scoped_default_precision<typename scalar_result_from_possible_complex<multiprecision::number<Backend, ExpressionTemplates> >::type> precision_guard(*this);
23866: typename scalar_result_from_possible_complex<multiprecision::number<Backend, ExpressionTemplates> >::type result;
23866: eval_real(result.backend(), backend());
23866: return result;
23866: }
23866: constexpr typename scalar_result_from_possible_complex<number<Backend, ExpressionTemplates> >::type
23866: imag() const
23866: {
23866: using default_ops::eval_imag;
23866: detail::scoped_default_precision<typename scalar_result_from_possible_complex<multiprecision::number<Backend, ExpressionTemplates> >::type> precision_guard(*this);
23866: typename scalar_result_from_possible_complex<multiprecision::number<Backend, ExpressionTemplates> >::type result;
23866: eval_imag(result.backend(), backend());
23866: return result;
23866: }
23866: template <class T>
23866: inline constexpr typename enable_if_c<boost::is_convertible<T, self_type>::value, self_type&>::type real(const T& val)
23866: {
23866: using default_ops::eval_set_real;
23866: eval_set_real(backend(), canonical_value(val));
23866: return *this;
23866: }
23866: template <class T>
23866: inline constexpr typename enable_if_c<boost::is_convertible<T, self_type>::value && number_category<self_type>::value == number_kind_complex, self_type&>::type imag(const T& val)
23866: {
23866: using default_ops::eval_set_imag;
23866: eval_set_imag(backend(), canonical_value(val));
23866: return *this;
23866: }
23866:
23866: private:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: constexpr void do_assign(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& e, const mpl::true_&)
23866: {
23866: do_assign(e, tag());
23866: }
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: constexpr void do_assign(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& e, const mpl::false_&)
23866: {
23866:
23866:
23866: typedef typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type temp_type;
23866: temp_type t(e);
23866: this->assign(t);
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_assign(const Exp& e, const detail::add_immediates&)
23866: {
23866: using default_ops::eval_add;
23866: boost::multiprecision::detail::maybe_promote_precision(this);
23866: eval_add(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value()));
23866: }
23866: template <class Exp>
23866: constexpr void do_assign(const Exp& e, const detail::subtract_immediates&)
23866: {
23866: using default_ops::eval_subtract;
23866: boost::multiprecision::detail::maybe_promote_precision(this);
23866: eval_subtract(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value()));
23866: }
23866: template <class Exp>
23866: constexpr void do_assign(const Exp& e, const detail::multiply_immediates&)
23866: {
23866: using default_ops::eval_multiply;
23866: boost::multiprecision::detail::maybe_promote_precision(this);
23866: eval_multiply(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value()));
23866: }
23866: template <class Exp>
23866: constexpr void do_assign(const Exp& e, const detail::multiply_add&)
23866: {
23866: using default_ops::eval_multiply_add;
23866: boost::multiprecision::detail::maybe_promote_precision(this);
23866: eval_multiply_add(m_backend, canonical_value(e.left().value()), canonical_value(e.middle().value()), canonical_value(e.right().value()));
23866: }
23866: template <class Exp>
23866: constexpr void do_assign(const Exp& e, const detail::multiply_subtract&)
23866: {
23866: using default_ops::eval_multiply_subtract;
23866: boost::multiprecision::detail::maybe_promote_precision(this);
23866: eval_multiply_subtract(m_backend, canonical_value(e.left().value()), canonical_value(e.middle().value()), canonical_value(e.right().value()));
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_assign(const Exp& e, const detail::divide_immediates&)
23866: {
23866: using default_ops::eval_divide;
23866: boost::multiprecision::detail::maybe_promote_precision(this);
23866: eval_divide(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value()));
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_assign(const Exp& e, const detail::negate&)
23866: {
23866: typedef typename Exp::left_type left_type;
23866: do_assign(e.left(), typename left_type::tag_type());
23866: m_backend.negate();
23866: }
23866: template <class Exp>
23866: constexpr void do_assign(const Exp& e, const detail::plus&)
23866: {
23866: typedef typename Exp::left_type left_type;
23866: typedef typename Exp::right_type right_type;
23866:
23866: constexpr int const left_depth = left_type::depth;
23866: constexpr int const right_depth = right_type::depth;
23866:
23866: bool bl = contains_self(e.left());
23866: bool br = contains_self(e.right());
23866:
23866: if (bl && br)
23866: {
23866: self_type temp(e);
23866: temp.m_backend.swap(this->m_backend);
23866: }
23866: else if (bl && is_self(e.left()))
23866: {
23866:
23866: do_add(e.right(), typename right_type::tag_type());
23866: }
23866: else if (br && is_self(e.right()))
23866: {
23866:
23866: do_add(e.left(), typename left_type::tag_type());
23866: }
23866: else if (!br && (bl || (left_depth >= right_depth)))
23866: {
23866: do_assign(e.left(), typename left_type::tag_type());
23866: do_add(e.right(), typename right_type::tag_type());
23866: }
23866: else
23866: {
23866: do_assign(e.right(), typename right_type::tag_type());
23866: do_add(e.left(), typename left_type::tag_type());
23866: }
23866: }
23866: template <class Exp>
23866: constexpr void do_assign(const Exp& e, const detail::minus&)
23866: {
23866: typedef typename Exp::left_type left_type;
23866: typedef typename Exp::right_type right_type;
23866:
23866: constexpr int const left_depth = left_type::depth;
23866: constexpr int const right_depth = right_type::depth;
23866:
23866: bool bl = contains_self(e.left());
23866: bool br = contains_self(e.right());
23866:
23866: if (bl && br)
23866: {
23866: self_type temp(e);
23866: temp.m_backend.swap(this->m_backend);
23866: }
23866: else if (bl && is_self(e.left()))
23866: {
23866:
23866: do_subtract(e.right(), typename right_type::tag_type());
23866: }
23866: else if (br && is_self(e.right()))
23866: {
23866:
23866: do_subtract(e.left(), typename left_type::tag_type());
23866: m_backend.negate();
23866: }
23866: else if (!br && (bl || (left_depth >= right_depth)))
23866: {
23866: do_assign(e.left(), typename left_type::tag_type());
23866: do_subtract(e.right(), typename right_type::tag_type());
23866: }
23866: else
23866: {
23866: do_assign(e.right(), typename right_type::tag_type());
23866: do_subtract(e.left(), typename left_type::tag_type());
23866: m_backend.negate();
23866: }
23866: }
23866: template <class Exp>
23866: constexpr void do_assign(const Exp& e, const detail::multiplies&)
23866: {
23866: typedef typename Exp::left_type left_type;
23866: typedef typename Exp::right_type right_type;
23866:
23866: constexpr int const left_depth = left_type::depth;
23866: constexpr int const right_depth = right_type::depth;
23866:
23866: bool bl = contains_self(e.left());
23866: bool br = contains_self(e.right());
23866:
23866: if (bl && br)
23866: {
23866: self_type temp(e);
23866: temp.m_backend.swap(this->m_backend);
23866: }
23866: else if (bl && is_self(e.left()))
23866: {
23866:
23866: do_multiplies(e.right(), typename right_type::tag_type());
23866: }
23866: else if (br && is_self(e.right()))
23866: {
23866:
23866: do_multiplies(e.left(), typename left_type::tag_type());
23866: }
23866: else if (!br && (bl || (left_depth >= right_depth)))
23866: {
23866: do_assign(e.left(), typename left_type::tag_type());
23866: do_multiplies(e.right(), typename right_type::tag_type());
23866: }
23866: else
23866: {
23866: do_assign(e.right(), typename right_type::tag_type());
23866: do_multiplies(e.left(), typename left_type::tag_type());
23866: }
23866: }
23866: template <class Exp>
23866: constexpr void do_assign(const Exp& e, const detail::divides&)
23866: {
23866: typedef typename Exp::left_type left_type;
23866: typedef typename Exp::right_type right_type;
23866:
23866: bool bl = contains_self(e.left());
23866: bool br = contains_self(e.right());
23866:
23866: if (bl && is_self(e.left()))
23866: {
23866:
23866: do_divide(e.right(), typename right_type::tag_type());
23866: }
23866: else if (br)
23866: {
23866: self_type temp(e);
23866: temp.m_backend.swap(this->m_backend);
23866: }
23866: else
23866: {
23866: do_assign(e.left(), typename left_type::tag_type());
23866: do_divide(e.right(), typename right_type::tag_type());
23866: }
23866: }
23866: template <class Exp>
23866: constexpr void do_assign(const Exp& e, const detail::modulus&)
23866: {
23866:
23866:
23866:
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The modulus operation is only valid for integer types");
23866:
23866: typedef typename Exp::left_type left_type;
23866: typedef typename Exp::right_type right_type;
23866:
23866: bool bl = contains_self(e.left());
23866: bool br = contains_self(e.right());
23866:
23866: if (bl && is_self(e.left()))
23866: {
23866:
23866: do_modulus(e.right(), typename right_type::tag_type());
23866: }
23866: else if (br)
23866: {
23866: self_type temp(e);
23866: temp.m_backend.swap(this->m_backend);
23866: }
23866: else
23866: {
23866: do_assign(e.left(), typename left_type::tag_type());
23866: do_modulus(e.right(), typename right_type::tag_type());
23866: }
23866: }
23866: template <class Exp>
23866: constexpr void do_assign(const Exp& e, const detail::modulus_immediates&)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The modulus operation is only valid for integer types");
23866: using default_ops::eval_modulus;
23866: boost::multiprecision::detail::maybe_promote_precision(this);
23866: eval_modulus(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value()));
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_assign(const Exp& e, const detail::bitwise_and&)
23866: {
23866:
23866:
23866:
23866: static_assert(number_category<Backend>::value == number_kind_integer, "Bitwise operations are only valid for integer types");
23866:
23866: typedef typename Exp::left_type left_type;
23866: typedef typename Exp::right_type right_type;
23866:
23866: constexpr int const left_depth = left_type::depth;
23866: constexpr int const right_depth = right_type::depth;
23866:
23866: bool bl = contains_self(e.left());
23866: bool br = contains_self(e.right());
23866:
23866: if (bl && is_self(e.left()))
23866: {
23866:
23866: do_bitwise_and(e.right(), typename right_type::tag_type());
23866: }
23866: else if (br && is_self(e.right()))
23866: {
23866: do_bitwise_and(e.left(), typename left_type::tag_type());
23866: }
23866: else if (!br && (bl || (left_depth >= right_depth)))
23866: {
23866: do_assign(e.left(), typename left_type::tag_type());
23866: do_bitwise_and(e.right(), typename right_type::tag_type());
23866: }
23866: else
23866: {
23866: do_assign(e.right(), typename right_type::tag_type());
23866: do_bitwise_and(e.left(), typename left_type::tag_type());
23866: }
23866: }
23866: template <class Exp>
23866: constexpr void do_assign(const Exp& e, const detail::bitwise_and_immediates&)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "Bitwise operations are only valid for integer types");
23866: using default_ops::eval_bitwise_and;
23866: eval_bitwise_and(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value()));
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_assign(const Exp& e, const detail::bitwise_or&)
23866: {
23866:
23866:
23866:
23866: static_assert(number_category<Backend>::value == number_kind_integer, "Bitwise operations are only valid for integer types");
23866:
23866: typedef typename Exp::left_type left_type;
23866: typedef typename Exp::right_type right_type;
23866:
23866: constexpr int const left_depth = left_type::depth;
23866: constexpr int const right_depth = right_type::depth;
23866:
23866: bool bl = contains_self(e.left());
23866: bool br = contains_self(e.right());
23866:
23866: if (bl && is_self(e.left()))
23866: {
23866:
23866: do_bitwise_or(e.right(), typename right_type::tag_type());
23866: }
23866: else if (br && is_self(e.right()))
23866: {
23866: do_bitwise_or(e.left(), typename left_type::tag_type());
23866: }
23866: else if (!br && (bl || (left_depth >= right_depth)))
23866: {
23866: do_assign(e.left(), typename left_type::tag_type());
23866: do_bitwise_or(e.right(), typename right_type::tag_type());
23866: }
23866: else
23866: {
23866: do_assign(e.right(), typename right_type::tag_type());
23866: do_bitwise_or(e.left(), typename left_type::tag_type());
23866: }
23866: }
23866: template <class Exp>
23866: constexpr void do_assign(const Exp& e, const detail::bitwise_or_immediates&)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "Bitwise operations are only valid for integer types");
23866: using default_ops::eval_bitwise_or;
23866: eval_bitwise_or(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value()));
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_assign(const Exp& e, const detail::bitwise_xor&)
23866: {
23866:
23866:
23866:
23866: static_assert(number_category<Backend>::value == number_kind_integer, "Bitwise operations are only valid for integer types");
23866:
23866: typedef typename Exp::left_type left_type;
23866: typedef typename Exp::right_type right_type;
23866:
23866: constexpr int const left_depth = left_type::depth;
23866: constexpr int const right_depth = right_type::depth;
23866:
23866: bool bl = contains_self(e.left());
23866: bool br = contains_self(e.right());
23866:
23866: if (bl && is_self(e.left()))
23866: {
23866:
23866: do_bitwise_xor(e.right(), typename right_type::tag_type());
23866: }
23866: else if (br && is_self(e.right()))
23866: {
23866: do_bitwise_xor(e.left(), typename left_type::tag_type());
23866: }
23866: else if (!br && (bl || (left_depth >= right_depth)))
23866: {
23866: do_assign(e.left(), typename left_type::tag_type());
23866: do_bitwise_xor(e.right(), typename right_type::tag_type());
23866: }
23866: else
23866: {
23866: do_assign(e.right(), typename right_type::tag_type());
23866: do_bitwise_xor(e.left(), typename left_type::tag_type());
23866: }
23866: }
23866: template <class Exp>
23866: constexpr void do_assign(const Exp& e, const detail::bitwise_xor_immediates&)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "Bitwise operations are only valid for integer types");
23866: using default_ops::eval_bitwise_xor;
23866: eval_bitwise_xor(m_backend, canonical_value(e.left().value()), canonical_value(e.right().value()));
23866: }
23866: template <class Exp>
23866: constexpr void do_assign(const Exp& e, const detail::terminal&)
23866: {
23866: if (!is_self(e))
23866: {
23866: m_backend = canonical_value(e.value());
23866: }
23866: }
23866: template <class Exp>
23866: constexpr void do_assign(const Exp& e, const detail::function&)
23866: {
23866: typedef typename Exp::arity tag_type;
23866: boost::multiprecision::detail::maybe_promote_precision(this);
23866: do_assign_function(e, tag_type());
23866: }
23866: template <class Exp>
23866: constexpr void do_assign(const Exp& e, const detail::shift_left&)
23866: {
23866:
23866: typedef typename Exp::left_type left_type;
23866: typedef typename Exp::right_type right_type;
23866: typedef typename right_type::arity right_arity;
23866: static_assert(right_arity::value == 0, "The left shift operator requires an integer value for the shift operand.");
23866: typedef typename right_type::result_type right_value_type;
23866: static_assert(is_integral<right_value_type>::value, "The left shift operator requires an integer value for the shift operand.");
23866: typedef typename left_type::tag_type tag_type;
23866: do_assign_left_shift(e.left(), canonical_value(e.right().value()), tag_type());
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_assign(const Exp& e, const detail::shift_right&)
23866: {
23866:
23866: typedef typename Exp::left_type left_type;
23866: typedef typename Exp::right_type right_type;
23866: typedef typename right_type::arity right_arity;
23866: static_assert(right_arity::value == 0, "The left shift operator requires an integer value for the shift operand.");
23866: typedef typename right_type::result_type right_value_type;
23866: static_assert(is_integral<right_value_type>::value, "The left shift operator requires an integer value for the shift operand.");
23866: typedef typename left_type::tag_type tag_type;
23866: do_assign_right_shift(e.left(), canonical_value(e.right().value()), tag_type());
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_assign(const Exp& e, const detail::bitwise_complement&)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The bitwise ~ operation is only valid for integer types");
23866: using default_ops::eval_complement;
23866: self_type temp(e.left());
23866: eval_complement(m_backend, temp.backend());
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_assign(const Exp& e, const detail::complement_immediates&)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The bitwise ~ operation is only valid for integer types");
23866: using default_ops::eval_complement;
23866: eval_complement(m_backend, canonical_value(e.left().value()));
23866: }
23866:
23866: template <class Exp, class Val>
23866: constexpr void do_assign_right_shift(const Exp& e, const Val& val, const detail::terminal&)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The right shift operation is only valid for integer types");
23866: using default_ops::eval_right_shift;
23866: detail::check_shift_range(val, mpl::bool_<(sizeof(Val) > sizeof(std::size_t))>(), mpl::bool_<is_signed<Val>::value>());
23866: eval_right_shift(m_backend, canonical_value(e.value()), static_cast<std::size_t>(val));
23866: }
23866:
23866: template <class Exp, class Val>
23866: constexpr void do_assign_left_shift(const Exp& e, const Val& val, const detail::terminal&)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The left shift operation is only valid for integer types");
23866: using default_ops::eval_left_shift;
23866: detail::check_shift_range(val, mpl::bool_<(sizeof(Val) > sizeof(std::size_t))>(), mpl::bool_<is_signed<Val>::value>());
23866: eval_left_shift(m_backend, canonical_value(e.value()), static_cast<std::size_t>(val));
23866: }
23866:
23866: template <class Exp, class Val, class Tag>
23866: constexpr void do_assign_right_shift(const Exp& e, const Val& val, const Tag&)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The right shift operation is only valid for integer types");
23866: using default_ops::eval_right_shift;
23866: self_type temp(e);
23866: detail::check_shift_range(val, mpl::bool_<(sizeof(Val) > sizeof(std::size_t))>(), mpl::bool_<is_signed<Val>::value>());
23866: eval_right_shift(m_backend, temp.backend(), static_cast<std::size_t>(val));
23866: }
23866:
23866: template <class Exp, class Val, class Tag>
23866: constexpr void do_assign_left_shift(const Exp& e, const Val& val, const Tag&)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The left shift operation is only valid for integer types");
23866: using default_ops::eval_left_shift;
23866: self_type temp(e);
23866: detail::check_shift_range(val, mpl::bool_<(sizeof(Val) > sizeof(std::size_t))>(), mpl::bool_<is_signed<Val>::value>());
23866: eval_left_shift(m_backend, temp.backend(), static_cast<std::size_t>(val));
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_assign_function(const Exp& e, const mpl::int_<1>&)
23866: {
23866: e.left().value()(&m_backend);
23866: }
23866: template <class Exp>
23866: constexpr void do_assign_function(const Exp& e, const mpl::int_<2>&)
23866: {
23866: typedef typename Exp::right_type right_type;
23866: typedef typename right_type::tag_type tag_type;
23866: do_assign_function_1(e.left().value(), e.right_ref(), tag_type());
23866: }
23866: template <class F, class Exp>
23866: constexpr void do_assign_function_1(const F& f, const Exp& val, const detail::terminal&)
23866: {
23866: f(m_backend, function_arg_value(val));
23866: }
23866: template <class F, class Exp, class Tag>
23866: constexpr void do_assign_function_1(const F& f, const Exp& val, const Tag&)
23866: {
23866: typename Exp::result_type t(val);
23866: f(m_backend, t.backend());
23866: }
23866: template <class Exp>
23866: constexpr void do_assign_function(const Exp& e, const mpl::int_<3>&)
23866: {
23866: typedef typename Exp::middle_type middle_type;
23866: typedef typename middle_type::tag_type tag_type;
23866: typedef typename Exp::right_type end_type;
23866: typedef typename end_type::tag_type end_tag;
23866: do_assign_function_2(e.left().value(), e.middle_ref(), e.right_ref(), tag_type(), end_tag());
23866: }
23866: template <class F, class Exp1, class Exp2>
23866: constexpr void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const detail::terminal&, const detail::terminal&)
23866: {
23866: f(m_backend, function_arg_value(val1), function_arg_value(val2));
23866: }
23866: template <class F, class Exp1, class Exp2, class Tag1>
23866: constexpr void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const Tag1&, const detail::terminal&)
23866: {
23866: typename Exp1::result_type temp1(val1);
23866: f(m_backend, std::move(temp1.backend()), function_arg_value(val2));
23866: }
23866: template <class F, class Exp1, class Exp2, class Tag2>
23866: constexpr void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const detail::terminal&, const Tag2&)
23866: {
23866: typename Exp2::result_type temp2(val2);
23866: f(m_backend, function_arg_value(val1), std::move(temp2.backend()));
23866: }
23866: template <class F, class Exp1, class Exp2, class Tag1, class Tag2>
23866: constexpr void do_assign_function_2(const F& f, const Exp1& val1, const Exp2& val2, const Tag1&, const Tag2&)
23866: {
23866: typename Exp1::result_type temp1(val1);
23866: typename Exp2::result_type temp2(val2);
23866: f(m_backend, std::move(temp1.backend()), std::move(temp2.backend()));
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_assign_function(const Exp& e, const mpl::int_<4>&)
23866: {
23866: typedef typename Exp::left_middle_type left_type;
23866: typedef typename left_type::tag_type left_tag_type;
23866: typedef typename Exp::right_middle_type middle_type;
23866: typedef typename middle_type::tag_type middle_tag_type;
23866: typedef typename Exp::right_type right_type;
23866: typedef typename right_type::tag_type right_tag_type;
23866: do_assign_function_3a(e.left().value(), e.left_middle_ref(), e.right_middle_ref(), e.right_ref(), left_tag_type(), middle_tag_type(), right_tag_type());
23866: }
23866: template <class F, class Exp1, class Exp2, class Exp3, class Tag2, class Tag3>
23866: constexpr void do_assign_function_3a(const F& f, const Exp1& val1, const Exp2& val2, const Exp3& val3, const detail::terminal&, const Tag2& t2, const Tag3& t3)
23866: {
23866: do_assign_function_3b(f, val1, val2, val3, t2, t3);
23866: }
23866: template <class F, class Exp1, class Exp2, class Exp3, class Tag1, class Tag2, class Tag3>
23866: constexpr void do_assign_function_3a(const F& f, const Exp1& val1, const Exp2& val2, const Exp3& val3, const Tag1&, const Tag2& t2, const Tag3& t3)
23866: {
23866: typename Exp1::result_type t(val1);
23866: do_assign_function_3b(f, std::move(t), val2, val3, t2, t3);
23866: }
23866: template <class F, class Exp1, class Exp2, class Exp3, class Tag3>
23866: constexpr void do_assign_function_3b(const F& f, const Exp1& val1, const Exp2& val2, const Exp3& val3, const detail::terminal&, const Tag3& t3)
23866: {
23866: do_assign_function_3c(f, val1, val2, val3, t3);
23866: }
23866: template <class F, class Exp1, class Exp2, class Exp3, class Tag2, class Tag3>
23866: constexpr void do_assign_function_3b(const F& f, const Exp1& val1, const Exp2& val2, const Exp3& val3, const Tag2& , const Tag3& t3)
23866: {
23866: typename Exp2::result_type t(val2);
23866: do_assign_function_3c(f, val1, std::move(t), val3, t3);
23866: }
23866: template <class F, class Exp1, class Exp2, class Exp3>
23866: constexpr void do_assign_function_3c(const F& f, const Exp1& val1, const Exp2& val2, const Exp3& val3, const detail::terminal&)
23866: {
23866: f(m_backend, function_arg_value(val1), function_arg_value(val2), function_arg_value(val3));
23866: }
23866: template <class F, class Exp1, class Exp2, class Exp3, class Tag3>
23866: constexpr void do_assign_function_3c(const F& f, const Exp1& val1, const Exp2& val2, const Exp3& val3, const Tag3& )
23866: {
23866: typename Exp3::result_type t(val3);
23866: do_assign_function_3c(f, val1, val2, std::move(t), detail::terminal());
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_add(const Exp& e, const detail::terminal&)
23866: {
23866: using default_ops::eval_add;
23866: boost::multiprecision::detail::maybe_promote_precision(this);
23866: eval_add(m_backend, canonical_value(e.value()));
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_add(const Exp& e, const detail::negate&)
23866: {
23866: typedef typename Exp::left_type left_type;
23866: boost::multiprecision::detail::maybe_promote_precision(this);
23866: do_subtract(e.left(), typename left_type::tag_type());
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_add(const Exp& e, const detail::plus&)
23866: {
23866: typedef typename Exp::left_type left_type;
23866: typedef typename Exp::right_type right_type;
23866: do_add(e.left(), typename left_type::tag_type());
23866: do_add(e.right(), typename right_type::tag_type());
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_add(const Exp& e, const detail::minus&)
23866: {
23866: typedef typename Exp::left_type left_type;
23866: typedef typename Exp::right_type right_type;
23866: do_add(e.left(), typename left_type::tag_type());
23866: do_subtract(e.right(), typename right_type::tag_type());
23866: }
23866:
23866: template <class Exp, class unknown>
23866: constexpr void do_add(const Exp& e, const unknown&)
23866: {
23866: self_type temp(e);
23866: do_add(detail::expression<detail::terminal, self_type>(temp), detail::terminal());
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_add(const Exp& e, const detail::add_immediates&)
23866: {
23866: using default_ops::eval_add;
23866: boost::multiprecision::detail::maybe_promote_precision(this);
23866: eval_add(m_backend, canonical_value(e.left().value()));
23866: eval_add(m_backend, canonical_value(e.right().value()));
23866: }
23866: template <class Exp>
23866: constexpr void do_add(const Exp& e, const detail::subtract_immediates&)
23866: {
23866: using default_ops::eval_add;
23866: using default_ops::eval_subtract;
23866: boost::multiprecision::detail::maybe_promote_precision(this);
23866: eval_add(m_backend, canonical_value(e.left().value()));
23866: eval_subtract(m_backend, canonical_value(e.right().value()));
23866: }
23866: template <class Exp>
23866: constexpr void do_subtract(const Exp& e, const detail::terminal&)
23866: {
23866: using default_ops::eval_subtract;
23866: boost::multiprecision::detail::maybe_promote_precision(this);
23866: eval_subtract(m_backend, canonical_value(e.value()));
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_subtract(const Exp& e, const detail::negate&)
23866: {
23866: typedef typename Exp::left_type left_type;
23866: do_add(e.left(), typename left_type::tag_type());
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_subtract(const Exp& e, const detail::plus&)
23866: {
23866: typedef typename Exp::left_type left_type;
23866: typedef typename Exp::right_type right_type;
23866: do_subtract(e.left(), typename left_type::tag_type());
23866: do_subtract(e.right(), typename right_type::tag_type());
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_subtract(const Exp& e, const detail::minus&)
23866: {
23866: typedef typename Exp::left_type left_type;
23866: typedef typename Exp::right_type right_type;
23866: do_subtract(e.left(), typename left_type::tag_type());
23866: do_add(e.right(), typename right_type::tag_type());
23866: }
23866: template <class Exp>
23866: constexpr void do_subtract(const Exp& e, const detail::add_immediates&)
23866: {
23866: using default_ops::eval_subtract;
23866: boost::multiprecision::detail::maybe_promote_precision(this);
23866: eval_subtract(m_backend, canonical_value(e.left().value()));
23866: eval_subtract(m_backend, canonical_value(e.right().value()));
23866: }
23866: template <class Exp>
23866: constexpr void do_subtract(const Exp& e, const detail::subtract_immediates&)
23866: {
23866: using default_ops::eval_add;
23866: using default_ops::eval_subtract;
23866: eval_subtract(m_backend, canonical_value(e.left().value()));
23866: eval_add(m_backend, canonical_value(e.right().value()));
23866: }
23866: template <class Exp, class unknown>
23866: constexpr void do_subtract(const Exp& e, const unknown&)
23866: {
23866: self_type temp(e);
23866: do_subtract(detail::expression<detail::terminal, self_type>(temp), detail::terminal());
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_multiplies(const Exp& e, const detail::terminal&)
23866: {
23866: using default_ops::eval_multiply;
23866: boost::multiprecision::detail::maybe_promote_precision(this);
23866: eval_multiply(m_backend, canonical_value(e.value()));
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_multiplies(const Exp& e, const detail::negate&)
23866: {
23866: typedef typename Exp::left_type left_type;
23866: do_multiplies(e.left(), typename left_type::tag_type());
23866: m_backend.negate();
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_multiplies(const Exp& e, const detail::multiplies&)
23866: {
23866: typedef typename Exp::left_type left_type;
23866: typedef typename Exp::right_type right_type;
23866: do_multiplies(e.left(), typename left_type::tag_type());
23866: do_multiplies(e.right(), typename right_type::tag_type());
23866: }
23866:
23866:
23866:
23866:
23866: template <class Exp>
23866: constexpr typename boost::disable_if_c<boost::multiprecision::number_category<self_type>::value == boost::multiprecision::number_kind_integer || sizeof(Exp) == 1>::type
23866: do_multiplies(const Exp& e, const detail::divides&)
23866: {
23866: typedef typename Exp::left_type left_type;
23866: typedef typename Exp::right_type right_type;
23866: do_multiplies(e.left(), typename left_type::tag_type());
23866: do_divide(e.right(), typename right_type::tag_type());
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_multiplies(const Exp& e, const detail::multiply_immediates&)
23866: {
23866: using default_ops::eval_multiply;
23866: boost::multiprecision::detail::maybe_promote_precision(this);
23866: eval_multiply(m_backend, canonical_value(e.left().value()));
23866: eval_multiply(m_backend, canonical_value(e.right().value()));
23866: }
23866:
23866:
23866:
23866:
23866: template <class Exp>
23866: constexpr typename boost::disable_if_c<boost::multiprecision::number_category<self_type>::value == boost::multiprecision::number_kind_integer || sizeof(Exp) == 1>::type
23866: do_multiplies(const Exp& e, const detail::divide_immediates&)
23866: {
23866: using default_ops::eval_divide;
23866: using default_ops::eval_multiply;
23866: boost::multiprecision::detail::maybe_promote_precision(this);
23866: eval_multiply(m_backend, canonical_value(e.left().value()));
23866: eval_divide(m_backend, canonical_value(e.right().value()));
23866: }
23866: template <class Exp, class unknown>
23866: constexpr void do_multiplies(const Exp& e, const unknown&)
23866: {
23866: using default_ops::eval_multiply;
23866: boost::multiprecision::detail::maybe_promote_precision(this);
23866: self_type temp(e);
23866: eval_multiply(m_backend, temp.m_backend);
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_divide(const Exp& e, const detail::terminal&)
23866: {
23866: using default_ops::eval_divide;
23866: boost::multiprecision::detail::maybe_promote_precision(this);
23866: eval_divide(m_backend, canonical_value(e.value()));
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_divide(const Exp& e, const detail::negate&)
23866: {
23866: typedef typename Exp::left_type left_type;
23866: do_divide(e.left(), typename left_type::tag_type());
23866: m_backend.negate();
23866: }
23866:
23866:
23866:
23866:
23866: template <class Exp>
23866: constexpr typename boost::disable_if_c<boost::multiprecision::number_category<self_type>::value == boost::multiprecision::number_kind_integer || sizeof(Exp) == 1>::type
23866: do_divide(const Exp& e, const detail::multiplies&)
23866: {
23866: typedef typename Exp::left_type left_type;
23866: typedef typename Exp::right_type right_type;
23866: do_divide(e.left(), typename left_type::tag_type());
23866: do_divide(e.right(), typename right_type::tag_type());
23866: }
23866:
23866:
23866:
23866:
23866: template <class Exp>
23866: constexpr typename boost::disable_if_c<boost::multiprecision::number_category<self_type>::value == boost::multiprecision::number_kind_integer || sizeof(Exp) == 1>::type
23866: do_divide(const Exp& e, const detail::divides&)
23866: {
23866: typedef typename Exp::left_type left_type;
23866: typedef typename Exp::right_type right_type;
23866: do_divide(e.left(), typename left_type::tag_type());
23866: do_multiplies(e.right(), typename right_type::tag_type());
23866: }
23866:
23866:
23866:
23866:
23866: template <class Exp>
23866: constexpr typename boost::disable_if_c<boost::multiprecision::number_category<self_type>::value == boost::multiprecision::number_kind_integer || sizeof(Exp) == 1>::type
23866: do_divides(const Exp& e, const detail::multiply_immediates&)
23866: {
23866: using default_ops::eval_divide;
23866: boost::multiprecision::detail::maybe_promote_precision(this);
23866: eval_divide(m_backend, canonical_value(e.left().value()));
23866: eval_divide(m_backend, canonical_value(e.right().value()));
23866: }
23866:
23866:
23866:
23866:
23866: template <class Exp>
23866: constexpr typename boost::disable_if_c<boost::multiprecision::number_category<self_type>::value == boost::multiprecision::number_kind_integer || sizeof(Exp) == 1>::type
23866: do_divides(const Exp& e, const detail::divide_immediates&)
23866: {
23866: using default_ops::eval_divide;
23866: using default_ops::eval_multiply;
23866: boost::multiprecision::detail::maybe_promote_precision(this);
23866: eval_divide(m_backend, canonical_value(e.left().value()));
23866: mutiply(m_backend, canonical_value(e.right().value()));
23866: }
23866:
23866: template <class Exp, class unknown>
23866: constexpr void do_divide(const Exp& e, const unknown&)
23866: {
23866: using default_ops::eval_multiply;
23866: boost::multiprecision::detail::maybe_promote_precision(this);
23866: self_type temp(e);
23866: eval_divide(m_backend, temp.m_backend);
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_modulus(const Exp& e, const detail::terminal&)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The modulus operation is only valid for integer types");
23866: using default_ops::eval_modulus;
23866: boost::multiprecision::detail::maybe_promote_precision(this);
23866: eval_modulus(m_backend, canonical_value(e.value()));
23866: }
23866:
23866: template <class Exp, class Unknown>
23866: constexpr void do_modulus(const Exp& e, const Unknown&)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The modulus operation is only valid for integer types");
23866: using default_ops::eval_modulus;
23866: boost::multiprecision::detail::maybe_promote_precision(this);
23866: self_type temp(e);
23866: eval_modulus(m_backend, canonical_value(temp));
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_bitwise_and(const Exp& e, const detail::terminal&)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The bitwise & operation is only valid for integer types");
23866: using default_ops::eval_bitwise_and;
23866: eval_bitwise_and(m_backend, canonical_value(e.value()));
23866: }
23866: template <class Exp>
23866: constexpr void do_bitwise_and(const Exp& e, const detail::bitwise_and&)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The bitwise & operation is only valid for integer types");
23866: typedef typename Exp::left_type left_type;
23866: typedef typename Exp::right_type right_type;
23866: do_bitwise_and(e.left(), typename left_type::tag_type());
23866: do_bitwise_and(e.right(), typename right_type::tag_type());
23866: }
23866: template <class Exp, class unknown>
23866: constexpr void do_bitwise_and(const Exp& e, const unknown&)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The bitwise & operation is only valid for integer types");
23866: using default_ops::eval_bitwise_and;
23866: self_type temp(e);
23866: eval_bitwise_and(m_backend, temp.m_backend);
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_bitwise_or(const Exp& e, const detail::terminal&)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The bitwise | operation is only valid for integer types");
23866: using default_ops::eval_bitwise_or;
23866: eval_bitwise_or(m_backend, canonical_value(e.value()));
23866: }
23866: template <class Exp>
23866: constexpr void do_bitwise_or(const Exp& e, const detail::bitwise_or&)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The bitwise | operation is only valid for integer types");
23866: typedef typename Exp::left_type left_type;
23866: typedef typename Exp::right_type right_type;
23866: do_bitwise_or(e.left(), typename left_type::tag_type());
23866: do_bitwise_or(e.right(), typename right_type::tag_type());
23866: }
23866: template <class Exp, class unknown>
23866: constexpr void do_bitwise_or(const Exp& e, const unknown&)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The bitwise | operation is only valid for integer types");
23866: using default_ops::eval_bitwise_or;
23866: self_type temp(e);
23866: eval_bitwise_or(m_backend, temp.m_backend);
23866: }
23866:
23866: template <class Exp>
23866: constexpr void do_bitwise_xor(const Exp& e, const detail::terminal&)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The bitwise ^ operation is only valid for integer types");
23866: using default_ops::eval_bitwise_xor;
23866: eval_bitwise_xor(m_backend, canonical_value(e.value()));
23866: }
23866: template <class Exp>
23866: constexpr void do_bitwise_xor(const Exp& e, const detail::bitwise_xor&)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The bitwise ^ operation is only valid for integer types");
23866: typedef typename Exp::left_type left_type;
23866: typedef typename Exp::right_type right_type;
23866: do_bitwise_xor(e.left(), typename left_type::tag_type());
23866: do_bitwise_xor(e.right(), typename right_type::tag_type());
23866: }
23866: template <class Exp, class unknown>
23866: constexpr void do_bitwise_xor(const Exp& e, const unknown&)
23866: {
23866: static_assert(number_category<Backend>::value == number_kind_integer, "The bitwise ^ operation is only valid for integer types");
23866: using default_ops::eval_bitwise_xor;
23866: self_type temp(e);
23866: eval_bitwise_xor(m_backend, temp.m_backend);
23866: }
23866:
23866:
23866: template <class Exp>
23866: inline constexpr bool contains_self(const Exp& e) const noexcept
23866: {
23866: return contains_self(e, typename Exp::arity());
23866: }
23866: template <class Exp>
23866: inline constexpr bool contains_self(const Exp& e, mpl::int_<0> const&) const noexcept
23866: {
23866: return is_realy_self(e.value());
23866: }
23866: template <class Exp>
23866: inline constexpr bool contains_self(const Exp& e, mpl::int_<1> const&) const noexcept
23866: {
23866: typedef typename Exp::left_type child_type;
23866: return contains_self(e.left(), typename child_type::arity());
23866: }
23866: template <class Exp>
23866: inline constexpr bool contains_self(const Exp& e, mpl::int_<2> const&) const noexcept
23866: {
23866: typedef typename Exp::left_type child0_type;
23866: typedef typename Exp::right_type child1_type;
23866: return contains_self(e.left(), typename child0_type::arity()) || contains_self(e.right(), typename child1_type::arity());
23866: }
23866: template <class Exp>
23866: inline constexpr bool contains_self(const Exp& e, mpl::int_<3> const&) const noexcept
23866: {
23866: typedef typename Exp::left_type child0_type;
23866: typedef typename Exp::middle_type child1_type;
23866: typedef typename Exp::right_type child2_type;
23866: return contains_self(e.left(), typename child0_type::arity()) || contains_self(e.middle(), typename child1_type::arity()) || contains_self(e.right(), typename child2_type::arity());
23866: }
23866:
23866:
23866: template <class Exp>
23866: inline constexpr bool is_self(const Exp& e) const noexcept
23866: {
23866: return is_self(e, typename Exp::arity());
23866: }
23866: template <class Exp>
23866: inline constexpr bool is_self(const Exp& e, mpl::int_<0> const&) const noexcept
23866: {
23866: return is_realy_self(e.value());
23866: }
23866: template <class Exp, int v>
23866: inline constexpr bool is_self(const Exp&, mpl::int_<v> const&) const noexcept
23866: {
23866: return false;
23866: }
23866:
23866: template <class Val>
23866: inline constexpr bool is_realy_self(const Val&) const noexcept { return false; }
23866: inline constexpr bool is_realy_self(const self_type& v) const noexcept { return &v == this; }
23866:
23866: static inline constexpr const Backend& function_arg_value(const self_type& v) noexcept { return v.backend(); }
23866: template <class Other, expression_template_option ET2>
23866: static inline constexpr const Other& function_arg_value(const number<Other, ET2>& v) noexcept { return v.backend(); }
23866: template <class V>
23866: static inline constexpr const V& function_arg_value(const V& v) noexcept { return v; }
23866: template <class A1, class A2, class A3, class A4>
23866: static inline constexpr const A1& function_arg_value(const detail::expression<detail::terminal, A1, A2, A3, A4>& exp) noexcept { return exp.value(); }
23866: template <class A2, class A3, class A4>
23866: static inline constexpr const Backend& function_arg_value(const detail::expression<detail::terminal, number<Backend>, A2, A3, A4>& exp) noexcept { return exp.value().backend(); }
23866: Backend m_backend;
23866:
23866: public:
23866:
23866:
23866:
23866:
23866: static inline constexpr const Backend& canonical_value(const self_type& v) noexcept { return v.m_backend; }
23866: template <class B2, expression_template_option ET>
23866: static inline constexpr const B2& canonical_value(const number<B2, ET>& v) noexcept { return v.backend(); }
23866: template <class V>
23866: static inline constexpr typename boost::disable_if<is_same<typename detail::canonical<V, Backend>::type, V>, typename detail::canonical<V, Backend>::type>::type
23866: canonical_value(const V& v) noexcept { return static_cast<typename detail::canonical<V, Backend>::type>(v); }
23866: template <class V>
23866: static inline constexpr typename boost::enable_if_c<is_same<typename detail::canonical<V, Backend>::type, V>::value, const V&>::type
23866: canonical_value(const V& v) noexcept { return v; }
23866: static inline typename detail::canonical<std::string, Backend>::type canonical_value(const std::string& v) noexcept { return v.c_str(); }
23866: };
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates>
23866: inline std::ostream& operator<<(std::ostream& os, const number<Backend, ExpressionTemplates>& r)
23866: {
23866: std::streamsize d = os.precision();
23866: std::string s = r.str(d, os.flags());
23866: std::streamsize ss = os.width();
23866: if (ss > static_cast<std::streamsize>(s.size()))
23866: {
23866: char fill = os.fill();
23866: if ((os.flags() & std::ios_base::left) == std::ios_base::left)
23866: s.append(static_cast<std::string::size_type>(ss - s.size()), fill);
23866: else
23866: s.insert(static_cast<std::string::size_type>(0), static_cast<std::string::size_type>(ss - s.size()), fill);
23866: }
23866: return os << s;
23866: }
23866:
23866: namespace detail {
23866:
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline std::ostream& operator<<(std::ostream& os, const expression<tag, A1, A2, A3, A4>& r)
23866: {
23866: typedef typename expression<tag, A1, A2, A3, A4>::result_type value_type;
23866: value_type temp(r);
23866: return os << temp;
23866: }
23866: # 2036 "/usr/include/boost/multiprecision/number.hpp" 3 4
23866: inline std::string read_string_while(std::istream& is, std::string const& permitted_chars)
23866: {
23866: std::ios_base::iostate state = std::ios_base::goodbit;
23866: const std::istream::sentry sentry_check(is);
23866: std::string result;
23866:
23866: if (sentry_check)
23866: {
23866: int c = is.rdbuf()->sgetc();
23866:
23866: for (;; c = is.rdbuf()->snextc())
23866: if (std::istream::traits_type::eq_int_type(std::istream::traits_type::eof(), c))
23866: {
23866: state |= std::ios_base::eofbit;
23866: break;
23866: }
23866: else if (permitted_chars.find_first_of(std::istream::traits_type::to_char_type(c)) == std::string::npos)
23866: {
23866:
23866:
23866: break;
23866: }
23866: else
23866: {
23866: result.append(1, std::istream::traits_type::to_char_type(c));
23866: }
23866: }
23866:
23866: if (!result.size())
23866: state |= std::ios_base::failbit;
23866: is.setstate(state);
23866: return result;
23866: }
23866:
23866: }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates>
23866: inline std::istream& operator>>(std::istream& is, number<Backend, ExpressionTemplates>& r)
23866: {
23866: bool hex_format = (is.flags() & std::ios_base::hex) == std::ios_base::hex;
23866: bool oct_format = (is.flags() & std::ios_base::oct) == std::ios_base::oct;
23866: std::string s;
23866: switch (boost::multiprecision::number_category<number<Backend, ExpressionTemplates> >::value)
23866: {
23866: case boost::multiprecision::number_kind_integer:
23866: if (oct_format)
23866: s = detail::read_string_while(is, "+-01234567");
23866: else if (hex_format)
23866: s = detail::read_string_while(is, "+-xXabcdefABCDEF0123456789");
23866: else
23866: s = detail::read_string_while(is, "+-0123456789");
23866: break;
23866: case boost::multiprecision::number_kind_floating_point:
23866: s = detail::read_string_while(is, "+-eE.0123456789infINFnanNANinfinityINFINITY");
23866: break;
23866: default:
23866: is >> s;
23866: }
23866: if (s.size())
23866: {
23866: if (hex_format && (number_category<Backend>::value == number_kind_integer) && ((s[0] != '0') || (s[1] != 'x')))
23866: s.insert(s.find_first_not_of("+-"), "0x");
23866: if (oct_format && (number_category<Backend>::value == number_kind_integer) && (s[0] != '0'))
23866: s.insert(s.find_first_not_of("+-"), "0");
23866: r.assign(s);
23866: }
23866: else if (!is.fail())
23866: is.setstate(std::istream::failbit);
23866: return is;
23866: }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates>
23866: inline constexpr void swap(number<Backend, ExpressionTemplates>& a, number<Backend, ExpressionTemplates>& b)
23866: noexcept((noexcept(std::declval<number<Backend, ExpressionTemplates>&>() = std::declval<number<Backend, ExpressionTemplates>&>())))
23866: {
23866: a.swap(b);
23866: }
23866:
23866:
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates>
23866: inline constexpr std::size_t hash_value(const number<Backend, ExpressionTemplates>& val)
23866: {
23866: return hash_value(val.backend());
23866: }
23866:
23866: }
23866:
23866: template <class T>
23866: class rational;
23866:
23866: template <class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline std::istream& operator>>(std::istream& is, rational<multiprecision::number<Backend, ExpressionTemplates> >& r)
23866: {
23866: std::string s1;
23866: multiprecision::number<Backend, ExpressionTemplates> v1, v2;
23866: char c;
23866: bool have_hex = false;
23866: bool hex_format = (is.flags() & std::ios_base::hex) == std::ios_base::hex;
23866: bool oct_format = (is.flags() & std::ios_base::oct) == std::ios_base::oct;
23866:
23866: while (((-1) != (c = static_cast<char>(is.peek()))) && (c == 'x' || c == 'X' || c == '-' || c == '+' || (c >= '0' && c <= '9') || (have_hex && (c >= 'a' && c <= 'f')) || (have_hex && (c >= 'A' && c <= 'F'))))
23866: {
23866: if (c == 'x' || c == 'X')
23866: have_hex = true;
23866: s1.append(1, c);
23866: is.get();
23866: }
23866: if (hex_format && ((s1[0] != '0') || (s1[1] != 'x')))
23866: s1.insert(static_cast<std::string::size_type>(0), "0x");
23866: if (oct_format && (s1[0] != '0'))
23866: s1.insert(static_cast<std::string::size_type>(0), "0");
23866: v1.assign(s1);
23866: s1.erase();
23866: if (c == '/')
23866: {
23866: is.get();
23866: while (((-1) != (c = static_cast<char>(is.peek()))) && (c == 'x' || c == 'X' || c == '-' || c == '+' || (c >= '0' && c <= '9') || (have_hex && (c >= 'a' && c <= 'f')) || (have_hex && (c >= 'A' && c <= 'F'))))
23866: {
23866: if (c == 'x' || c == 'X')
23866: have_hex = true;
23866: s1.append(1, c);
23866: is.get();
23866: }
23866: if (hex_format && ((s1[0] != '0') || (s1[1] != 'x')))
23866: s1.insert(static_cast<std::string::size_type>(0), "0x");
23866: if (oct_format && (s1[0] != '0'))
23866: s1.insert(static_cast<std::string::size_type>(0), "0");
23866: v2.assign(s1);
23866: }
23866: else
23866: v2 = 1;
23866: r.assign(v1, v2);
23866: return is;
23866: }
23866:
23866: template <class T, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr multiprecision::number<T, ExpressionTemplates> numerator(const rational<multiprecision::number<T, ExpressionTemplates> >& a)
23866: {
23866: return a.numerator();
23866: }
23866:
23866: template <class T, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr multiprecision::number<T, ExpressionTemplates> denominator(const rational<multiprecision::number<T, ExpressionTemplates> >& a)
23866: {
23866: return a.denominator();
23866: }
23866:
23866: template <class T, multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr std::size_t hash_value(const rational<multiprecision::number<T, ExpressionTemplates> >& val)
23866: {
23866: std::size_t result = hash_value(val.numerator());
23866: boost::hash_combine(result, hash_value(val.denominator()));
23866: return result;
23866: }
23866:
23866: namespace multiprecision {
23866:
23866: template <class I>
23866: struct component_type<boost::rational<I> >
23866: {
23866: typedef I type;
23866: };
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866: namespace std {
23866:
23866: template <class Backend, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: struct hash<boost::multiprecision::number<Backend, ExpressionTemplates> >
23866: {
23866: constexpr std::size_t operator()(const boost::multiprecision::number<Backend, ExpressionTemplates>& val) const { return hash_value(val); }
23866: };
23866: template <class Backend, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: struct hash<boost::rational<boost::multiprecision::number<Backend, ExpressionTemplates> > >
23866: {
23866: constexpr std::size_t operator()(const boost::rational<boost::multiprecision::number<Backend, ExpressionTemplates> >& val) const
23866: {
23866: std::size_t result = hash_value(val.numerator());
23866: boost::hash_combine(result, hash_value(val.denominator()));
23866: return result;
23866: }
23866: };
23866:
23866: }
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/multiprecision/detail/ublas_interop.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MP_UBLAS_HPP
23866:
23866: namespace boost { namespace numeric { namespace ublas {
23866:
23866: template <class V>
23866: class sparse_vector_element;
23866:
23866: template <class V, class Backend, multiprecision::expression_template_option ExpressionTemplates>
23866: inline bool operator==(const sparse_vector_element<V>& a, const ::boost::multiprecision::number<Backend, ExpressionTemplates>& b)
23866: {
23866: typedef typename sparse_vector_element<V>::const_reference ref_type;
23866: return static_cast<ref_type>(a) == b;
23866: }
23866:
23866: template <class X, class Y>
23866: struct promote_traits;
23866:
23866: template <class Backend1, boost::multiprecision::expression_template_option ExpressionTemplates1, class Backend2, boost::multiprecision::expression_template_option ExpressionTemplates2>
23866: struct promote_traits<boost::multiprecision::number<Backend1, ExpressionTemplates1>, boost::multiprecision::number<Backend2, ExpressionTemplates2> >
23866: {
23866: typedef boost::multiprecision::number<Backend1, ExpressionTemplates1> number1_t;
23866: typedef boost::multiprecision::number<Backend2, ExpressionTemplates2> number2_t;
23866: typedef typename mpl::if_c<
23866: is_convertible<number1_t, number2_t>::value && !is_convertible<number2_t, number1_t>::value,
23866: number2_t, number1_t>::type promote_type;
23866: };
23866:
23866: template <class Backend1, boost::multiprecision::expression_template_option ExpressionTemplates1, class Arithmetic>
23866: struct promote_traits<boost::multiprecision::number<Backend1, ExpressionTemplates1>, Arithmetic>
23866: {
23866: typedef boost::multiprecision::number<Backend1, ExpressionTemplates1> promote_type;
23866: };
23866:
23866: template <class Arithmetic, class Backend1, boost::multiprecision::expression_template_option ExpressionTemplates1>
23866: struct promote_traits<Arithmetic, boost::multiprecision::number<Backend1, ExpressionTemplates1> >
23866: {
23866: typedef boost::multiprecision::number<Backend1, ExpressionTemplates1> promote_type;
23866: };
23866:
23866: template <class Backend1, boost::multiprecision::expression_template_option ExpressionTemplates1, class tag, class Arg1, class Arg2, class Arg3, class Arg4>
23866: struct promote_traits<boost::multiprecision::number<Backend1, ExpressionTemplates1>, boost::multiprecision::detail::expression<tag, Arg1, Arg2, Arg3, Arg4> >
23866: {
23866: typedef boost::multiprecision::number<Backend1, ExpressionTemplates1> number1_t;
23866: typedef boost::multiprecision::detail::expression<tag, Arg1, Arg2, Arg3, Arg4> expression_type;
23866: typedef typename expression_type::result_type number2_t;
23866: typedef typename promote_traits<number1_t, number2_t>::promote_type promote_type;
23866: };
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class Backend1, boost::multiprecision::expression_template_option ExpressionTemplates1>
23866: struct promote_traits<boost::multiprecision::detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, boost::multiprecision::number<Backend1, ExpressionTemplates1> >
23866: {
23866: typedef boost::multiprecision::number<Backend1, ExpressionTemplates1> number1_t;
23866: typedef boost::multiprecision::detail::expression<tag, Arg1, Arg2, Arg3, Arg4> expression_type;
23866: typedef typename expression_type::result_type number2_t;
23866: typedef typename promote_traits<number1_t, number2_t>::promote_type promote_type;
23866: };
23866:
23866: template <class tag, class Arg1, class Arg2, class Arg3, class Arg4, class tagb, class Arg1b, class Arg2b, class Arg3b, class Arg4b>
23866: struct promote_traits<boost::multiprecision::detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, boost::multiprecision::detail::expression<tagb, Arg1b, Arg2b, Arg3b, Arg4b> >
23866: {
23866: typedef boost::multiprecision::detail::expression<tag, Arg1, Arg2, Arg3, Arg4> expression1_t;
23866: typedef typename expression1_t::result_type number1_t;
23866: typedef boost::multiprecision::detail::expression<tagb, Arg1b, Arg2b, Arg3b, Arg4b> expression2_t;
23866: typedef typename expression2_t::result_type number2_t;
23866: };
23866:
23866: }}}
23866: # 2235 "/usr/include/boost/multiprecision/number.hpp" 2 3 4
23866: # 13 "/usr/include/boost/multiprecision/cpp_int.hpp" 2 3 4
23866: # 1 "/usr/include/boost/multiprecision/detail/integer_ops.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MP_INT_FUNC_HPP
23866:
23866:
23866:
23866: namespace boost { namespace multiprecision {
23866:
23866: namespace default_ops {
23866:
23866: template <class Backend>
23866: inline constexpr void eval_qr(const Backend& x, const Backend& y, Backend& q, Backend& r)
23866: {
23866: eval_divide(q, x, y);
23866: eval_modulus(r, x, y);
23866: }
23866:
23866: template <class Backend, class Integer>
23866: inline constexpr Integer eval_integer_modulus(const Backend& x, Integer val)
23866: {
23866: using boost::multiprecision::detail::abs;
23866: using default_ops::eval_convert_to;
23866: using default_ops::eval_modulus;
23866: typedef typename boost::multiprecision::detail::canonical<Integer, Backend>::type int_type;
23866: Backend t;
23866: eval_modulus(t, x, static_cast<int_type>(val));
23866: Integer result(0);
23866: eval_convert_to(&result, t);
23866: return abs(result);
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr void eval_gcd(B& result, const B& a, const B& b)
23866: {
23866: using default_ops::eval_get_sign;
23866: using default_ops::eval_is_zero;
23866: using default_ops::eval_lsb;
23866:
23866: int shift(0);
23866:
23866: B u(a), v(b);
23866:
23866: int s = eval_get_sign(u);
23866:
23866:
23866: if (s < 0)
23866: {
23866: u.negate();
23866: }
23866: else if (s == 0)
23866: {
23866: result = v;
23866: return;
23866: }
23866: s = eval_get_sign(v);
23866: if (s < 0)
23866: {
23866: v.negate();
23866: }
23866: else if (s == 0)
23866: {
23866: result = u;
23866: return;
23866: }
23866:
23866:
23866:
23866:
23866: unsigned us = eval_lsb(u);
23866: unsigned vs = eval_lsb(v);
23866: shift = (std::min)(us, vs);
23866: eval_right_shift(u, us);
23866: eval_right_shift(v, vs);
23866:
23866: do
23866: {
23866:
23866:
23866: s = u.compare(v);
23866: if (s > 0)
23866: u.swap(v);
23866: if (s == 0)
23866: break;
23866: eval_subtract(v, u);
23866: vs = eval_lsb(v);
23866: eval_right_shift(v, vs);
23866: } while (true);
23866:
23866: result = u;
23866: eval_left_shift(result, shift);
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template <class B>
23866: inline constexpr void eval_lcm(B& result, const B& a, const B& b)
23866: {
23866: typedef typename mpl::front<typename B::unsigned_types>::type ui_type;
23866: B t;
23866: eval_gcd(t, a, b);
23866:
23866: if (eval_is_zero(t))
23866: {
23866: result = static_cast<ui_type>(0);
23866: }
23866: else
23866: {
23866: eval_divide(result, a, t);
23866: eval_multiply(result, b);
23866: }
23866: if (eval_get_sign(result) < 0)
23866: result.negate();
23866: }
23866:
23866: }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_integer>::type
23866: divide_qr(const number<Backend, ExpressionTemplates>& x, const number<Backend, ExpressionTemplates>& y,
23866: number<Backend, ExpressionTemplates>& q, number<Backend, ExpressionTemplates>& r)
23866: {
23866: using default_ops::eval_qr;
23866: eval_qr(x.backend(), y.backend(), q.backend(), r.backend());
23866: }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates, class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_integer>::type
23866: divide_qr(const number<Backend, ExpressionTemplates>& x, const multiprecision::detail::expression<tag, A1, A2, A3, A4>& y,
23866: number<Backend, ExpressionTemplates>& q, number<Backend, ExpressionTemplates>& r)
23866: {
23866: divide_qr(x, number<Backend, ExpressionTemplates>(y), q, r);
23866: }
23866:
23866: template <class tag, class A1, class A2, class A3, class A4, class Backend, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_integer>::type
23866: divide_qr(const multiprecision::detail::expression<tag, A1, A2, A3, A4>& x, const number<Backend, ExpressionTemplates>& y,
23866: number<Backend, ExpressionTemplates>& q, number<Backend, ExpressionTemplates>& r)
23866: {
23866: divide_qr(number<Backend, ExpressionTemplates>(x), y, q, r);
23866: }
23866:
23866: template <class tag, class A1, class A2, class A3, class A4, class tagb, class A1b, class A2b, class A3b, class A4b, class Backend, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_integer>::type
23866: divide_qr(const multiprecision::detail::expression<tag, A1, A2, A3, A4>& x, const multiprecision::detail::expression<tagb, A1b, A2b, A3b, A4b>& y,
23866: number<Backend, ExpressionTemplates>& q, number<Backend, ExpressionTemplates>& r)
23866: {
23866: divide_qr(number<Backend, ExpressionTemplates>(x), number<Backend, ExpressionTemplates>(y), q, r);
23866: }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates, class Integer>
23866: inline constexpr typename enable_if<mpl::and_<is_integral<Integer>, mpl::bool_<number_category<Backend>::value == number_kind_integer> >, Integer>::type
23866: integer_modulus(const number<Backend, ExpressionTemplates>& x, Integer val)
23866: {
23866: using default_ops::eval_integer_modulus;
23866: return eval_integer_modulus(x.backend(), val);
23866: }
23866:
23866: template <class tag, class A1, class A2, class A3, class A4, class Integer>
23866: inline constexpr typename enable_if<mpl::and_<is_integral<Integer>, mpl::bool_<number_category<typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type>::value == number_kind_integer> >, Integer>::type
23866: integer_modulus(const multiprecision::detail::expression<tag, A1, A2, A3, A4>& x, Integer val)
23866: {
23866: typedef typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type result_type;
23866: return integer_modulus(result_type(x), val);
23866: }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_integer, unsigned>::type
23866: lsb(const number<Backend, ExpressionTemplates>& x)
23866: {
23866: using default_ops::eval_lsb;
23866: return eval_lsb(x.backend());
23866: }
23866:
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename enable_if_c<number_category<typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type>::value == number_kind_integer, unsigned>::type
23866: lsb(const multiprecision::detail::expression<tag, A1, A2, A3, A4>& x)
23866: {
23866: typedef typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type number_type;
23866: number_type n(x);
23866: using default_ops::eval_lsb;
23866: return eval_lsb(n.backend());
23866: }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_integer, unsigned>::type
23866: msb(const number<Backend, ExpressionTemplates>& x)
23866: {
23866: using default_ops::eval_msb;
23866: return eval_msb(x.backend());
23866: }
23866:
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename enable_if_c<number_category<typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type>::value == number_kind_integer, unsigned>::type
23866: msb(const multiprecision::detail::expression<tag, A1, A2, A3, A4>& x)
23866: {
23866: typedef typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type number_type;
23866: number_type n(x);
23866: using default_ops::eval_msb;
23866: return eval_msb(n.backend());
23866: }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_integer, bool>::type
23866: bit_test(const number<Backend, ExpressionTemplates>& x, unsigned index)
23866: {
23866: using default_ops::eval_bit_test;
23866: return eval_bit_test(x.backend(), index);
23866: }
23866:
23866: template <class tag, class A1, class A2, class A3, class A4>
23866: inline constexpr typename enable_if_c<number_category<typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type>::value == number_kind_integer, bool>::type
23866: bit_test(const multiprecision::detail::expression<tag, A1, A2, A3, A4>& x, unsigned index)
23866: {
23866: typedef typename multiprecision::detail::expression<tag, A1, A2, A3, A4>::result_type number_type;
23866: number_type n(x);
23866: using default_ops::eval_bit_test;
23866: return eval_bit_test(n.backend(), index);
23866: }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_integer, number<Backend, ExpressionTemplates>&>::type
23866: bit_set(number<Backend, ExpressionTemplates>& x, unsigned index)
23866: {
23866: using default_ops::eval_bit_set;
23866: eval_bit_set(x.backend(), index);
23866: return x;
23866: }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_integer, number<Backend, ExpressionTemplates>&>::type
23866: bit_unset(number<Backend, ExpressionTemplates>& x, unsigned index)
23866: {
23866: using default_ops::eval_bit_unset;
23866: eval_bit_unset(x.backend(), index);
23866: return x;
23866: }
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates>
23866: inline constexpr typename enable_if_c<number_category<Backend>::value == number_kind_integer, number<Backend, ExpressionTemplates>&>::type
23866: bit_flip(number<Backend, ExpressionTemplates>& x, unsigned index)
23866: {
23866: using default_ops::eval_bit_flip;
23866: eval_bit_flip(x.backend(), index);
23866: return x;
23866: }
23866:
23866: namespace default_ops {
23866:
23866:
23866:
23866:
23866:
23866: template <class Backend>
23866: struct double_precision_type
23866: {
23866: typedef Backend type;
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template <class Backend>
23866: inline constexpr void check_sign_of_backend(const Backend& v, const mpl::true_)
23866: {
23866: if (eval_get_sign(v) < 0)
23866: {
23866: ::boost::throw_exception(std::runtime_error("powm requires a positive exponent."), ::boost::source_location("/usr/include/boost/multiprecision/detail/integer_ops.hpp", 279, __PRETTY_FUNCTION__));
23866: }
23866: }
23866: template <class Backend>
23866: inline constexpr void check_sign_of_backend(const Backend&, const mpl::false_) {}
23866:
23866:
23866:
23866: template <class Backend>
23866: constexpr void eval_powm(Backend& result, const Backend& a, const Backend& p, const Backend& c)
23866: {
23866: using default_ops::eval_bit_test;
23866: using default_ops::eval_get_sign;
23866: using default_ops::eval_modulus;
23866: using default_ops::eval_multiply;
23866: using default_ops::eval_right_shift;
23866:
23866: typedef typename double_precision_type<Backend>::type double_type;
23866: typedef typename boost::multiprecision::detail::canonical<unsigned char, double_type>::type ui_type;
23866:
23866: check_sign_of_backend(p, mpl::bool_<std::numeric_limits<number<Backend> >::is_signed>());
23866:
23866: double_type x, y(a), b(p), t;
23866: x = ui_type(1u);
23866:
23866: while (eval_get_sign(b) > 0)
23866: {
23866: if (eval_bit_test(b, 0))
23866: {
23866: eval_multiply(t, x, y);
23866: eval_modulus(x, t, c);
23866: }
23866: eval_multiply(t, y, y);
23866: eval_modulus(y, t, c);
23866: eval_right_shift(b, ui_type(1));
23866: }
23866: Backend x2(x);
23866: eval_modulus(result, x2, c);
23866: }
23866:
23866: template <class Backend, class Integer>
23866: constexpr void eval_powm(Backend& result, const Backend& a, const Backend& p, Integer c)
23866: {
23866: typedef typename double_precision_type<Backend>::type double_type;
23866: typedef typename boost::multiprecision::detail::canonical<unsigned char, double_type>::type ui_type;
23866: typedef typename boost::multiprecision::detail::canonical<Integer, double_type>::type i1_type;
23866: typedef typename boost::multiprecision::detail::canonical<Integer, Backend>::type i2_type;
23866:
23866: using default_ops::eval_bit_test;
23866: using default_ops::eval_get_sign;
23866: using default_ops::eval_modulus;
23866: using default_ops::eval_multiply;
23866: using default_ops::eval_right_shift;
23866:
23866: check_sign_of_backend(p, mpl::bool_<std::numeric_limits<number<Backend> >::is_signed>());
23866:
23866: if (eval_get_sign(p) < 0)
23866: {
23866: ::boost::throw_exception(std::runtime_error("powm requires a positive exponent."), ::boost::source_location("/usr/include/boost/multiprecision/detail/integer_ops.hpp", 337, __PRETTY_FUNCTION__));
23866: }
23866:
23866: double_type x, y(a), b(p), t;
23866: x = ui_type(1u);
23866:
23866: while (eval_get_sign(b) > 0)
23866: {
23866: if (eval_bit_test(b, 0))
23866: {
23866: eval_multiply(t, x, y);
23866: eval_modulus(x, t, static_cast<i1_type>(c));
23866: }
23866: eval_multiply(t, y, y);
23866: eval_modulus(y, t, static_cast<i1_type>(c));
23866: eval_right_shift(b, ui_type(1));
23866: }
23866: Backend x2(x);
23866: eval_modulus(result, x2, static_cast<i2_type>(c));
23866: }
23866:
23866: template <class Backend, class Integer>
23866: constexpr typename enable_if<is_unsigned<Integer> >::type eval_powm(Backend& result, const Backend& a, Integer b, const Backend& c)
23866: {
23866: typedef typename double_precision_type<Backend>::type double_type;
23866: typedef typename boost::multiprecision::detail::canonical<unsigned char, double_type>::type ui_type;
23866:
23866: using default_ops::eval_bit_test;
23866: using default_ops::eval_get_sign;
23866: using default_ops::eval_modulus;
23866: using default_ops::eval_multiply;
23866: using default_ops::eval_right_shift;
23866:
23866: double_type x, y(a), t;
23866: x = ui_type(1u);
23866:
23866: while (b > 0)
23866: {
23866: if (b & 1)
23866: {
23866: eval_multiply(t, x, y);
23866: eval_modulus(x, t, c);
23866: }
23866: eval_multiply(t, y, y);
23866: eval_modulus(y, t, c);
23866: b >>= 1;
23866: }
23866: Backend x2(x);
23866: eval_modulus(result, x2, c);
23866: }
23866:
23866: template <class Backend, class Integer>
23866: constexpr typename enable_if<is_signed<Integer> >::type eval_powm(Backend& result, const Backend& a, Integer b, const Backend& c)
23866: {
23866: if (b < 0)
23866: {
23866: ::boost::throw_exception(std::runtime_error("powm requires a positive exponent."), ::boost::source_location("/usr/include/boost/multiprecision/detail/integer_ops.hpp", 393, __PRETTY_FUNCTION__));
23866: }
23866: eval_powm(result, a, static_cast<typename make_unsigned<Integer>::type>(b), c);
23866: }
23866:
23866: template <class Backend, class Integer1, class Integer2>
23866: constexpr typename enable_if<is_unsigned<Integer1> >::type eval_powm(Backend& result, const Backend& a, Integer1 b, Integer2 c)
23866: {
23866: typedef typename double_precision_type<Backend>::type double_type;
23866: typedef typename boost::multiprecision::detail::canonical<unsigned char, double_type>::type ui_type;
23866: typedef typename boost::multiprecision::detail::canonical<Integer1, double_type>::type i1_type;
23866: typedef typename boost::multiprecision::detail::canonical<Integer2, Backend>::type i2_type;
23866:
23866: using default_ops::eval_bit_test;
23866: using default_ops::eval_get_sign;
23866: using default_ops::eval_modulus;
23866: using default_ops::eval_multiply;
23866: using default_ops::eval_right_shift;
23866:
23866: double_type x, y(a), t;
23866: x = ui_type(1u);
23866:
23866: while (b > 0)
23866: {
23866: if (b & 1)
23866: {
23866: eval_multiply(t, x, y);
23866: eval_modulus(x, t, static_cast<i1_type>(c));
23866: }
23866: eval_multiply(t, y, y);
23866: eval_modulus(y, t, static_cast<i1_type>(c));
23866: b >>= 1;
23866: }
23866: Backend x2(x);
23866: eval_modulus(result, x2, static_cast<i2_type>(c));
23866: }
23866:
23866: template <class Backend, class Integer1, class Integer2>
23866: constexpr typename enable_if<is_signed<Integer1> >::type eval_powm(Backend& result, const Backend& a, Integer1 b, Integer2 c)
23866: {
23866: if (b < 0)
23866: {
23866: ::boost::throw_exception(std::runtime_error("powm requires a positive exponent."), ::boost::source_location("/usr/include/boost/multiprecision/detail/integer_ops.hpp", 435, __PRETTY_FUNCTION__));
23866: }
23866: eval_powm(result, a, static_cast<typename make_unsigned<Integer1>::type>(b), c);
23866: }
23866:
23866: struct powm_func
23866: {
23866: template <class T, class U, class V>
23866: constexpr void operator()(T& result, const T& b, const U& p, const V& m) const
23866: {
23866: eval_powm(result, b, p, m);
23866: }
23866: };
23866:
23866: }
23866:
23866: template <class T, class U, class V>
23866: inline constexpr typename enable_if<
23866: mpl::and_<
23866: mpl::bool_<number_category<T>::value == number_kind_integer>,
23866: mpl::or_<
23866: is_number<T>,
23866: is_number_expression<T> >,
23866: mpl::or_<
23866: is_number<U>,
23866: is_number_expression<U>,
23866: is_integral<U> >,
23866: mpl::or_<
23866: is_number<V>,
23866: is_number_expression<V>,
23866: is_integral<V> > >,
23866: typename mpl::if_<
23866: is_no_et_number<T>,
23866: T,
23866: typename mpl::if_<
23866: is_no_et_number<U>,
23866: U,
23866: typename mpl::if_<
23866: is_no_et_number<V>,
23866: V,
23866: detail::expression<detail::function, default_ops::powm_func, T, U, V> >::type>::type>::type>::type
23866: powm(const T& b, const U& p, const V& mod)
23866: {
23866: return detail::expression<detail::function, default_ops::powm_func, T, U, V>(
23866: default_ops::powm_func(), b, p, mod);
23866: }
23866:
23866: }}
23866: # 14 "/usr/include/boost/multiprecision/cpp_int.hpp" 2 3 4
23866: # 1 "/usr/include/boost/multiprecision/detail/rebind.hpp" 1 3 4
23866: # 9 "/usr/include/boost/multiprecision/detail/rebind.hpp" 3 4
23866: #define BOOST_MP_DETAIL_REBIND_HPP
23866:
23866: namespace boost { namespace multiprecision { namespace backends { namespace detail {
23866: template <class value_type, class my_allocator>
23866: struct rebind
23866: {
23866:
23866: typedef typename std::allocator_traits<my_allocator>::template rebind_alloc<value_type> type;
23866:
23866:
23866:
23866: };
23866: }}}}
23866: # 15 "/usr/include/boost/multiprecision/cpp_int.hpp" 2 3 4
23866: # 1 "/usr/include/boost/core/empty_value.hpp" 1 3 4
23866: # 9 "/usr/include/boost/core/empty_value.hpp" 3 4
23866: #define BOOST_CORE_EMPTY_VALUE_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_DETAIL_EMPTY_VALUE_BASE
23866: # 28 "/usr/include/boost/core/empty_value.hpp" 3 4
23866: namespace boost {
23866:
23866: template<class T>
23866: struct use_empty_value_base {
23866: enum {
23866:
23866: value = __is_empty(T) && !__is_final(T)
23866:
23866:
23866:
23866: };
23866: };
23866:
23866: struct empty_init_t { };
23866:
23866: namespace empty_ {
23866:
23866: template<class T, unsigned N = 0,
23866: bool E = boost::use_empty_value_base<T>::value>
23866: class empty_value {
23866: public:
23866: typedef T type;
23866:
23866:
23866: empty_value() = default;
23866:
23866:
23866:
23866:
23866: empty_value(boost::empty_init_t)
23866: : value_() { }
23866:
23866:
23866:
23866: template<class U, class... Args>
23866: empty_value(boost::empty_init_t, U&& value, Args&&... args)
23866: : value_(std::forward<U>(value), std::forward<Args>(args)...) { }
23866: # 80 "/usr/include/boost/core/empty_value.hpp" 3 4
23866: const T& get() const noexcept {
23866: return value_;
23866: }
23866:
23866: T& get() noexcept {
23866: return value_;
23866: }
23866:
23866: private:
23866: T value_;
23866: };
23866:
23866:
23866: template<class T, unsigned N>
23866: class empty_value<T, N, true>
23866: : T {
23866: public:
23866: typedef T type;
23866:
23866:
23866: empty_value() = default;
23866:
23866:
23866:
23866:
23866: empty_value(boost::empty_init_t)
23866: : T() { }
23866:
23866:
23866:
23866: template<class U, class... Args>
23866: empty_value(boost::empty_init_t, U&& value, Args&&... args)
23866: : T(std::forward<U>(value), std::forward<Args>(args)...) { }
23866: # 128 "/usr/include/boost/core/empty_value.hpp" 3 4
23866: const T& get() const noexcept {
23866: return *this;
23866: }
23866:
23866: T& get() noexcept {
23866: return *this;
23866: }
23866: };
23866:
23866:
23866: }
23866:
23866: using empty_::empty_value;
23866:
23866: inline constexpr empty_init_t empty_init = empty_init_t();
23866:
23866: }
23866: # 16 "/usr/include/boost/multiprecision/cpp_int.hpp" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/multiprecision/cpp_int/cpp_int_config.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MP_CPP_INT_CORE_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/assert.hpp" 1 3 4
23866: # 32 "/usr/include/boost/assert.hpp" 3 4
23866: #undef BOOST_ASSERT
23866: #undef BOOST_ASSERT_MSG
23866: #undef BOOST_ASSERT_IS_VOID
23866: # 58 "/usr/include/boost/assert.hpp" 3 4
23866: # 1 "/usr/include/assert.h" 1 3 4
23866: # 24 "/usr/include/assert.h" 3 4
23866: #undef _ASSERT_H
23866: #undef assert
23866: #undef __ASSERT_VOID_CAST
23866:
23866:
23866: #undef assert_perror
23866:
23866:
23866:
23866:
23866: #define _ASSERT_H 1
23866:
23866:
23866:
23866: #define __ASSERT_VOID_CAST static_cast<void>
23866: # 92 "/usr/include/assert.h" 3 4
23866: #define assert(expr) (static_cast <bool> (expr) ? void (0) : __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 117 "/usr/include/assert.h" 3 4
23866: #define assert_perror(errnum) (!(errnum) ? __ASSERT_VOID_CAST (0) : __assert_perror_fail ((errnum), __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 129 "/usr/include/assert.h" 3 4
23866: #define __ASSERT_FUNCTION __extension__ __PRETTY_FUNCTION__
23866: # 59 "/usr/include/boost/assert.hpp" 2 3 4
23866:
23866: #define BOOST_ASSERT(expr) assert(expr)
23866: #define BOOST_ASSERT_MSG(expr,msg) assert((expr)&&(msg))
23866: # 72 "/usr/include/boost/assert.hpp" 3 4
23866: #undef BOOST_VERIFY
23866: #undef BOOST_VERIFY_MSG
23866: # 82 "/usr/include/boost/assert.hpp" 3 4
23866: #define BOOST_VERIFY(expr) BOOST_ASSERT(expr)
23866: #define BOOST_VERIFY_MSG(expr,msg) BOOST_ASSERT_MSG(expr,msg)
23866: # 15 "/usr/include/boost/multiprecision/cpp_int/cpp_int_config.hpp" 2 3 4
23866:
23866: namespace boost {
23866: namespace multiprecision {
23866:
23866: namespace detail {
23866: # 29 "/usr/include/boost/multiprecision/cpp_int/cpp_int_config.hpp" 3 4
23866: template <unsigned N>
23866: struct largest_signed_type
23866: {
23866: typedef typename mpl::if_c<
23866: 1 + std::numeric_limits<boost::long_long_type>::digits == N,
23866: boost::long_long_type,
23866: typename mpl::if_c<
23866: 1 + std::numeric_limits<long>::digits == N,
23866: long,
23866: typename mpl::if_c<
23866: 1 + std::numeric_limits<int>::digits == N,
23866: int,
23866: typename boost::int_t<N>::exact>::type>::type>::type type;
23866: };
23866:
23866: template <unsigned N>
23866: struct largest_unsigned_type
23866: {
23866: typedef typename mpl::if_c<
23866: std::numeric_limits<boost::ulong_long_type>::digits == N,
23866: boost::ulong_long_type,
23866: typename mpl::if_c<
23866: std::numeric_limits<unsigned long>::digits == N,
23866: unsigned long,
23866: typename mpl::if_c<
23866: std::numeric_limits<unsigned int>::digits == N,
23866: unsigned int,
23866: typename boost::uint_t<N>::exact>::type>::type>::type type;
23866: };
23866:
23866: }
23866: # 103 "/usr/include/boost/multiprecision/cpp_int/cpp_int_config.hpp" 3 4
23866: typedef detail::largest_unsigned_type<32>::type limb_type;
23866: typedef detail::largest_signed_type<32>::type signed_limb_type;
23866: typedef detail::largest_unsigned_type<64>::type double_limb_type;
23866: typedef detail::largest_signed_type<64>::type signed_double_limb_type;
23866: static const limb_type max_block_10 = 1000000000;
23866: static const limb_type digits_per_block_10 = 9;
23866:
23866: inline limb_type block_multiplier(unsigned count)
23866: {
23866:
23866:
23866:
23866: constexpr
23866:
23866: const limb_type values[digits_per_block_10] = {10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000};
23866: (static_cast <bool> (count < digits_per_block_10) ? void (0) : __assert_fail ("count < digits_per_block_10", "/usr/include/boost/multiprecision/cpp_int/cpp_int_config.hpp", 118, __extension__ __PRETTY_FUNCTION__));
23866: return values[count];
23866: }
23866:
23866:
23866:
23866: static const unsigned bits_per_limb = sizeof(limb_type) * 8;
23866:
23866: template <class T>
23866: inline constexpr void minmax(const T& a, const T& b, T& aa, T& bb)
23866: {
23866: if (a < b)
23866: {
23866: aa = a;
23866: bb = b;
23866: }
23866: else
23866: {
23866: aa = b;
23866: bb = a;
23866: }
23866: }
23866:
23866: enum cpp_integer_type
23866: {
23866: signed_magnitude = 1,
23866: unsigned_magnitude = 0,
23866: signed_packed = 3,
23866: unsigned_packed = 2
23866: };
23866:
23866: enum cpp_int_check_type
23866: {
23866: checked = 1,
23866: unchecked = 0
23866: };
23866:
23866: }
23866: }
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MP_USER_DEFINED_LITERALS
23866: # 20 "/usr/include/boost/multiprecision/cpp_int.hpp" 2 3 4
23866: # 1 "/usr/include/boost/multiprecision/rational_adaptor.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MATH_RATIONAL_ADAPTER_HPP
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/cstdint.hpp" 1 3 4
23866: # 13 "/usr/include/boost/multiprecision/rational_adaptor.hpp" 2 3 4
23866: # 1 "/usr/include/boost/functional/hash_fwd.hpp" 1 3 4
23866: # 14 "/usr/include/boost/multiprecision/rational_adaptor.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/rational.hpp" 1 3 4
23866: # 64 "/usr/include/boost/rational.hpp" 3 4
23866: #define BOOST_RATIONAL_HPP
23866: # 77 "/usr/include/boost/rational.hpp" 3 4
23866: # 1 "/usr/include/boost/operators.hpp" 1 3 4
23866: # 89 "/usr/include/boost/operators.hpp" 3 4
23866: #define BOOST_OPERATORS_HPP
23866: # 116 "/usr/include/boost/operators.hpp" 3 4
23866: #define BOOST_OPERATORS_CONSTEXPR BOOST_CONSTEXPR
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost
23866: {
23866: namespace operators_impl
23866: {
23866: namespace operators_detail
23866: {
23866:
23866: template <typename T> class empty_base {};
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class T, class U, class B = operators_detail::empty_base<T> >
23866: struct less_than_comparable2 : B
23866: {
23866: friend constexpr bool operator<=(const T& x, const U& y) { return !static_cast<bool>(x > y); }
23866: friend constexpr bool operator>=(const T& x, const U& y) { return !static_cast<bool>(x < y); }
23866: friend constexpr bool operator>(const U& x, const T& y) { return y < x; }
23866: friend constexpr bool operator<(const U& x, const T& y) { return y > x; }
23866: friend constexpr bool operator<=(const U& x, const T& y) { return !static_cast<bool>(y < x); }
23866: friend constexpr bool operator>=(const U& x, const T& y) { return !static_cast<bool>(y > x); }
23866: };
23866:
23866: template <class T, class B = operators_detail::empty_base<T> >
23866: struct less_than_comparable1 : B
23866: {
23866: friend constexpr bool operator>(const T& x, const T& y) { return y < x; }
23866: friend constexpr bool operator<=(const T& x, const T& y) { return !static_cast<bool>(y < x); }
23866: friend constexpr bool operator>=(const T& x, const T& y) { return !static_cast<bool>(x < y); }
23866: };
23866:
23866: template <class T, class U, class B = operators_detail::empty_base<T> >
23866: struct equality_comparable2 : B
23866: {
23866: friend constexpr bool operator==(const U& y, const T& x) { return x == y; }
23866: friend constexpr bool operator!=(const U& y, const T& x) { return !static_cast<bool>(x == y); }
23866: friend constexpr bool operator!=(const T& y, const U& x) { return !static_cast<bool>(y == x); }
23866: };
23866:
23866: template <class T, class B = operators_detail::empty_base<T> >
23866: struct equality_comparable1 : B
23866: {
23866: friend constexpr bool operator!=(const T& x, const T& y) { return !static_cast<bool>(x == y); }
23866: };
23866:
23866:
23866: #define BOOST_OPERATOR2_LEFT(name) name ##2 ##_ ##left
23866: # 184 "/usr/include/boost/operators.hpp" 3 4
23866: #define BOOST_BINARY_OPERATOR_COMMUTATIVE(NAME,OP) template <class T, class U, class B = operators_detail::empty_base<T> > struct NAME ##2 : B { friend T operator OP( const T& lhs, const U& rhs ) { T nrv( lhs ); nrv OP ##= rhs; return nrv; } friend T operator OP( const U& lhs, const T& rhs ) { T nrv( rhs ); nrv OP ##= lhs; return nrv; } }; template <class T, class B = operators_detail::empty_base<T> > struct NAME ##1 : B { friend T operator OP( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv OP ##= rhs; return nrv; } };
23866: # 201 "/usr/include/boost/operators.hpp" 3 4
23866: #define BOOST_BINARY_OPERATOR_NON_COMMUTATIVE(NAME,OP) template <class T, class U, class B = operators_detail::empty_base<T> > struct NAME ##2 : B { friend T operator OP( const T& lhs, const U& rhs ) { T nrv( lhs ); nrv OP ##= rhs; return nrv; } }; template <class T, class U, class B = operators_detail::empty_base<T> > struct BOOST_OPERATOR2_LEFT(NAME) : B { friend T operator OP( const U& lhs, const T& rhs ) { T nrv( lhs ); nrv OP ##= rhs; return nrv; } }; template <class T, class B = operators_detail::empty_base<T> > struct NAME ##1 : B { friend T operator OP( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv OP ##= rhs; return nrv; } };
23866: # 266 "/usr/include/boost/operators.hpp" 3 4
23866: template <class T, class U, class B = operators_detail::empty_base<T> > struct multipliable2 : B { friend T operator *( const T& lhs, const U& rhs ) { T nrv( lhs ); nrv *= rhs; return nrv; } friend T operator *( const U& lhs, const T& rhs ) { T nrv( rhs ); nrv *= lhs; return nrv; } }; template <class T, class B = operators_detail::empty_base<T> > struct multipliable1 : B { friend T operator *( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv *= rhs; return nrv; } };
23866: template <class T, class U, class B = operators_detail::empty_base<T> > struct addable2 : B { friend T operator +( const T& lhs, const U& rhs ) { T nrv( lhs ); nrv += rhs; return nrv; } friend T operator +( const U& lhs, const T& rhs ) { T nrv( rhs ); nrv += lhs; return nrv; } }; template <class T, class B = operators_detail::empty_base<T> > struct addable1 : B { friend T operator +( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv += rhs; return nrv; } };
23866: template <class T, class U, class B = operators_detail::empty_base<T> > struct subtractable2 : B { friend T operator -( const T& lhs, const U& rhs ) { T nrv( lhs ); nrv -= rhs; return nrv; } }; template <class T, class U, class B = operators_detail::empty_base<T> > struct subtractable2_left : B { friend T operator -( const U& lhs, const T& rhs ) { T nrv( lhs ); nrv -= rhs; return nrv; } }; template <class T, class B = operators_detail::empty_base<T> > struct subtractable1 : B { friend T operator -( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv -= rhs; return nrv; } };
23866: template <class T, class U, class B = operators_detail::empty_base<T> > struct dividable2 : B { friend T operator /( const T& lhs, const U& rhs ) { T nrv( lhs ); nrv /= rhs; return nrv; } }; template <class T, class U, class B = operators_detail::empty_base<T> > struct dividable2_left : B { friend T operator /( const U& lhs, const T& rhs ) { T nrv( lhs ); nrv /= rhs; return nrv; } }; template <class T, class B = operators_detail::empty_base<T> > struct dividable1 : B { friend T operator /( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv /= rhs; return nrv; } };
23866: template <class T, class U, class B = operators_detail::empty_base<T> > struct modable2 : B { friend T operator %( const T& lhs, const U& rhs ) { T nrv( lhs ); nrv %= rhs; return nrv; } }; template <class T, class U, class B = operators_detail::empty_base<T> > struct modable2_left : B { friend T operator %( const U& lhs, const T& rhs ) { T nrv( lhs ); nrv %= rhs; return nrv; } }; template <class T, class B = operators_detail::empty_base<T> > struct modable1 : B { friend T operator %( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv %= rhs; return nrv; } };
23866: template <class T, class U, class B = operators_detail::empty_base<T> > struct xorable2 : B { friend T operator ^( const T& lhs, const U& rhs ) { T nrv( lhs ); nrv ^= rhs; return nrv; } friend T operator ^( const U& lhs, const T& rhs ) { T nrv( rhs ); nrv ^= lhs; return nrv; } }; template <class T, class B = operators_detail::empty_base<T> > struct xorable1 : B { friend T operator ^( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv ^= rhs; return nrv; } };
23866: template <class T, class U, class B = operators_detail::empty_base<T> > struct andable2 : B { friend T operator &( const T& lhs, const U& rhs ) { T nrv( lhs ); nrv &= rhs; return nrv; } friend T operator &( const U& lhs, const T& rhs ) { T nrv( rhs ); nrv &= lhs; return nrv; } }; template <class T, class B = operators_detail::empty_base<T> > struct andable1 : B { friend T operator &( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv &= rhs; return nrv; } };
23866: template <class T, class U, class B = operators_detail::empty_base<T> > struct orable2 : B { friend T operator |( const T& lhs, const U& rhs ) { T nrv( lhs ); nrv |= rhs; return nrv; } friend T operator |( const U& lhs, const T& rhs ) { T nrv( rhs ); nrv |= lhs; return nrv; } }; template <class T, class B = operators_detail::empty_base<T> > struct orable1 : B { friend T operator |( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv |= rhs; return nrv; } };
23866:
23866: #undef BOOST_BINARY_OPERATOR_COMMUTATIVE
23866: #undef BOOST_BINARY_OPERATOR_NON_COMMUTATIVE
23866: #undef BOOST_OPERATOR2_LEFT
23866:
23866:
23866:
23866: template <class T, class B = operators_detail::empty_base<T> >
23866: struct incrementable : B
23866: {
23866: friend T operator++(T& x, int)
23866: {
23866: incrementable_type nrv(x);
23866: ++x;
23866: return nrv;
23866: }
23866: private:
23866: typedef T incrementable_type;
23866: };
23866:
23866: template <class T, class B = operators_detail::empty_base<T> >
23866: struct decrementable : B
23866: {
23866: friend T operator--(T& x, int)
23866: {
23866: decrementable_type nrv(x);
23866: --x;
23866: return nrv;
23866: }
23866: private:
23866: typedef T decrementable_type;
23866: };
23866:
23866:
23866:
23866: template <class T, class P, class B = operators_detail::empty_base<T> >
23866: struct dereferenceable : B
23866: {
23866: P operator->() const
23866: {
23866: return ::boost::addressof(*static_cast<const T&>(*this));
23866: }
23866: };
23866:
23866: template <class T, class I, class R, class B = operators_detail::empty_base<T> >
23866: struct indexable : B
23866: {
23866: R operator[](I n) const
23866: {
23866: return *(static_cast<const T&>(*this) + n);
23866: }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_BINARY_OPERATOR(NAME,OP) template <class T, class U, class B = operators_detail::empty_base<T> > struct NAME ##2 : B { friend T operator OP( const T& lhs, const U& rhs ) { T nrv( lhs ); nrv OP ##= rhs; return nrv; } }; template <class T, class B = operators_detail::empty_base<T> > struct NAME ##1 : B { friend T operator OP( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv OP ##= rhs; return nrv; } };
23866: # 364 "/usr/include/boost/operators.hpp" 3 4
23866: template <class T, class U, class B = operators_detail::empty_base<T> > struct left_shiftable2 : B { friend T operator <<( const T& lhs, const U& rhs ) { T nrv( lhs ); nrv <<= rhs; return nrv; } }; template <class T, class B = operators_detail::empty_base<T> > struct left_shiftable1 : B { friend T operator <<( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv <<= rhs; return nrv; } };
23866: template <class T, class U, class B = operators_detail::empty_base<T> > struct right_shiftable2 : B { friend T operator >>( const T& lhs, const U& rhs ) { T nrv( lhs ); nrv >>= rhs; return nrv; } }; template <class T, class B = operators_detail::empty_base<T> > struct right_shiftable1 : B { friend T operator >>( const T& lhs, const T& rhs ) { T nrv( lhs ); nrv >>= rhs; return nrv; } };
23866:
23866: #undef BOOST_BINARY_OPERATOR
23866:
23866: template <class T, class U, class B = operators_detail::empty_base<T> >
23866: struct equivalent2 : B
23866: {
23866: friend constexpr bool operator==(const T& x, const U& y)
23866: {
23866: return !static_cast<bool>(x < y) && !static_cast<bool>(x > y);
23866: }
23866: };
23866:
23866: template <class T, class B = operators_detail::empty_base<T> >
23866: struct equivalent1 : B
23866: {
23866: friend constexpr bool operator==(const T&x, const T&y)
23866: {
23866: return !static_cast<bool>(x < y) && !static_cast<bool>(y < x);
23866: }
23866: };
23866:
23866: template <class T, class U, class B = operators_detail::empty_base<T> >
23866: struct partially_ordered2 : B
23866: {
23866: friend constexpr bool operator<=(const T& x, const U& y)
23866: { return static_cast<bool>(x < y) || static_cast<bool>(x == y); }
23866: friend constexpr bool operator>=(const T& x, const U& y)
23866: { return static_cast<bool>(x > y) || static_cast<bool>(x == y); }
23866: friend constexpr bool operator>(const U& x, const T& y)
23866: { return y < x; }
23866: friend constexpr bool operator<(const U& x, const T& y)
23866: { return y > x; }
23866: friend constexpr bool operator<=(const U& x, const T& y)
23866: { return static_cast<bool>(y > x) || static_cast<bool>(y == x); }
23866: friend constexpr bool operator>=(const U& x, const T& y)
23866: { return static_cast<bool>(y < x) || static_cast<bool>(y == x); }
23866: };
23866:
23866: template <class T, class B = operators_detail::empty_base<T> >
23866: struct partially_ordered1 : B
23866: {
23866: friend constexpr bool operator>(const T& x, const T& y)
23866: { return y < x; }
23866: friend constexpr bool operator<=(const T& x, const T& y)
23866: { return static_cast<bool>(x < y) || static_cast<bool>(x == y); }
23866: friend constexpr bool operator>=(const T& x, const T& y)
23866: { return static_cast<bool>(y < x) || static_cast<bool>(x == y); }
23866: };
23866:
23866:
23866:
23866: template <class T, class U, class B = operators_detail::empty_base<T> >
23866: struct totally_ordered2
23866: : less_than_comparable2<T, U
23866: , equality_comparable2<T, U, B
23866: > > {};
23866:
23866: template <class T, class B = operators_detail::empty_base<T> >
23866: struct totally_ordered1
23866: : less_than_comparable1<T
23866: , equality_comparable1<T, B
23866: > > {};
23866:
23866: template <class T, class U, class B = operators_detail::empty_base<T> >
23866: struct additive2
23866: : addable2<T, U
23866: , subtractable2<T, U, B
23866: > > {};
23866:
23866: template <class T, class B = operators_detail::empty_base<T> >
23866: struct additive1
23866: : addable1<T
23866: , subtractable1<T, B
23866: > > {};
23866:
23866: template <class T, class U, class B = operators_detail::empty_base<T> >
23866: struct multiplicative2
23866: : multipliable2<T, U
23866: , dividable2<T, U, B
23866: > > {};
23866:
23866: template <class T, class B = operators_detail::empty_base<T> >
23866: struct multiplicative1
23866: : multipliable1<T
23866: , dividable1<T, B
23866: > > {};
23866:
23866: template <class T, class U, class B = operators_detail::empty_base<T> >
23866: struct integer_multiplicative2
23866: : multiplicative2<T, U
23866: , modable2<T, U, B
23866: > > {};
23866:
23866: template <class T, class B = operators_detail::empty_base<T> >
23866: struct integer_multiplicative1
23866: : multiplicative1<T
23866: , modable1<T, B
23866: > > {};
23866:
23866: template <class T, class U, class B = operators_detail::empty_base<T> >
23866: struct arithmetic2
23866: : additive2<T, U
23866: , multiplicative2<T, U, B
23866: > > {};
23866:
23866: template <class T, class B = operators_detail::empty_base<T> >
23866: struct arithmetic1
23866: : additive1<T
23866: , multiplicative1<T, B
23866: > > {};
23866:
23866: template <class T, class U, class B = operators_detail::empty_base<T> >
23866: struct integer_arithmetic2
23866: : additive2<T, U
23866: , integer_multiplicative2<T, U, B
23866: > > {};
23866:
23866: template <class T, class B = operators_detail::empty_base<T> >
23866: struct integer_arithmetic1
23866: : additive1<T
23866: , integer_multiplicative1<T, B
23866: > > {};
23866:
23866: template <class T, class U, class B = operators_detail::empty_base<T> >
23866: struct bitwise2
23866: : xorable2<T, U
23866: , andable2<T, U
23866: , orable2<T, U, B
23866: > > > {};
23866:
23866: template <class T, class B = operators_detail::empty_base<T> >
23866: struct bitwise1
23866: : xorable1<T
23866: , andable1<T
23866: , orable1<T, B
23866: > > > {};
23866:
23866: template <class T, class B = operators_detail::empty_base<T> >
23866: struct unit_steppable
23866: : incrementable<T
23866: , decrementable<T, B
23866: > > {};
23866:
23866: template <class T, class U, class B = operators_detail::empty_base<T> >
23866: struct shiftable2
23866: : left_shiftable2<T, U
23866: , right_shiftable2<T, U, B
23866: > > {};
23866:
23866: template <class T, class B = operators_detail::empty_base<T> >
23866: struct shiftable1
23866: : left_shiftable1<T
23866: , right_shiftable1<T, B
23866: > > {};
23866:
23866: template <class T, class U, class B = operators_detail::empty_base<T> >
23866: struct ring_operators2
23866: : additive2<T, U
23866: , subtractable2_left<T, U
23866: , multipliable2<T, U, B
23866: > > > {};
23866:
23866: template <class T, class B = operators_detail::empty_base<T> >
23866: struct ring_operators1
23866: : additive1<T
23866: , multipliable1<T, B
23866: > > {};
23866:
23866: template <class T, class U, class B = operators_detail::empty_base<T> >
23866: struct ordered_ring_operators2
23866: : ring_operators2<T, U
23866: , totally_ordered2<T, U, B
23866: > > {};
23866:
23866: template <class T, class B = operators_detail::empty_base<T> >
23866: struct ordered_ring_operators1
23866: : ring_operators1<T
23866: , totally_ordered1<T, B
23866: > > {};
23866:
23866: template <class T, class U, class B = operators_detail::empty_base<T> >
23866: struct field_operators2
23866: : ring_operators2<T, U
23866: , dividable2<T, U
23866: , dividable2_left<T, U, B
23866: > > > {};
23866:
23866: template <class T, class B = operators_detail::empty_base<T> >
23866: struct field_operators1
23866: : ring_operators1<T
23866: , dividable1<T, B
23866: > > {};
23866:
23866: template <class T, class U, class B = operators_detail::empty_base<T> >
23866: struct ordered_field_operators2
23866: : field_operators2<T, U
23866: , totally_ordered2<T, U, B
23866: > > {};
23866:
23866: template <class T, class B = operators_detail::empty_base<T> >
23866: struct ordered_field_operators1
23866: : field_operators1<T
23866: , totally_ordered1<T, B
23866: > > {};
23866:
23866: template <class T, class U, class B = operators_detail::empty_base<T> >
23866: struct euclidian_ring_operators2
23866: : ring_operators2<T, U
23866: , dividable2<T, U
23866: , dividable2_left<T, U
23866: , modable2<T, U
23866: , modable2_left<T, U, B
23866: > > > > > {};
23866:
23866: template <class T, class B = operators_detail::empty_base<T> >
23866: struct euclidian_ring_operators1
23866: : ring_operators1<T
23866: , dividable1<T
23866: , modable1<T, B
23866: > > > {};
23866:
23866: template <class T, class U, class B = operators_detail::empty_base<T> >
23866: struct ordered_euclidian_ring_operators2
23866: : totally_ordered2<T, U
23866: , euclidian_ring_operators2<T, U, B
23866: > > {};
23866:
23866: template <class T, class B = operators_detail::empty_base<T> >
23866: struct ordered_euclidian_ring_operators1
23866: : totally_ordered1<T
23866: , euclidian_ring_operators1<T, B
23866: > > {};
23866:
23866: template <class T, class U, class B = operators_detail::empty_base<T> >
23866: struct euclidean_ring_operators2
23866: : ring_operators2<T, U
23866: , dividable2<T, U
23866: , dividable2_left<T, U
23866: , modable2<T, U
23866: , modable2_left<T, U, B
23866: > > > > > {};
23866:
23866: template <class T, class B = operators_detail::empty_base<T> >
23866: struct euclidean_ring_operators1
23866: : ring_operators1<T
23866: , dividable1<T
23866: , modable1<T, B
23866: > > > {};
23866:
23866: template <class T, class U, class B = operators_detail::empty_base<T> >
23866: struct ordered_euclidean_ring_operators2
23866: : totally_ordered2<T, U
23866: , euclidean_ring_operators2<T, U, B
23866: > > {};
23866:
23866: template <class T, class B = operators_detail::empty_base<T> >
23866: struct ordered_euclidean_ring_operators1
23866: : totally_ordered1<T
23866: , euclidean_ring_operators1<T, B
23866: > > {};
23866:
23866: template <class T, class P, class B = operators_detail::empty_base<T> >
23866: struct input_iteratable
23866: : equality_comparable1<T
23866: , incrementable<T
23866: , dereferenceable<T, P, B
23866: > > > {};
23866:
23866: template <class T, class B = operators_detail::empty_base<T> >
23866: struct output_iteratable
23866: : incrementable<T, B
23866: > {};
23866:
23866: template <class T, class P, class B = operators_detail::empty_base<T> >
23866: struct forward_iteratable
23866: : input_iteratable<T, P, B
23866: > {};
23866:
23866: template <class T, class P, class B = operators_detail::empty_base<T> >
23866: struct bidirectional_iteratable
23866: : forward_iteratable<T, P
23866: , decrementable<T, B
23866: > > {};
23866:
23866:
23866:
23866:
23866:
23866: template <class T, class P, class D, class R, class B = operators_detail::empty_base<T> >
23866: struct random_access_iteratable
23866: : bidirectional_iteratable<T, P
23866: , less_than_comparable1<T
23866: , additive2<T, D
23866: , indexable<T, D, R, B
23866: > > > > {};
23866: # 669 "/usr/include/boost/operators.hpp" 3 4
23866: namespace operators_detail
23866: {
23866:
23866:
23866:
23866: struct true_t {};
23866: struct false_t {};
23866:
23866: }
23866: # 686 "/usr/include/boost/operators.hpp" 3 4
23866: template<class T> struct is_chained_base {
23866: typedef operators_detail::false_t value;
23866: };
23866:
23866:
23866:
23866: #define BOOST_OPERATOR_TEMPLATE4(template_name4) template<class T, class U, class V, class W, class B> struct is_chained_base< template_name4<T, U, V, W, B> > { typedef operators_detail::true_t value; };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_OPERATOR_TEMPLATE3(template_name3) template<class T, class U, class V, class B> struct is_chained_base< template_name3<T, U, V, B> > { typedef operators_detail::true_t value; };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_OPERATOR_TEMPLATE2(template_name2) template<class T, class U, class B> struct is_chained_base< template_name2<T, U, B> > { typedef operators_detail::true_t value; };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_OPERATOR_TEMPLATE1(template_name1) template<class T, class B> struct is_chained_base< template_name1<T, B> > { typedef operators_detail::true_t value; };
23866: # 736 "/usr/include/boost/operators.hpp" 3 4
23866: #define BOOST_OPERATOR_TEMPLATE(template_name) template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct template_name; template<class T, class U, class B> struct template_name<T, U, B, operators_detail::false_t> : template_name ##2<T, U, B> {}; template<class T, class U> struct template_name<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : template_name ##1<T, U> {}; template <class T, class B> struct template_name<T, T, B, operators_detail::false_t> : template_name ##1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< template_name<T, U, B, O> > { typedef operators_detail::true_t value; }; BOOST_OPERATOR_TEMPLATE2(template_name ##2) BOOST_OPERATOR_TEMPLATE1(template_name ##1)
23866: # 764 "/usr/include/boost/operators.hpp" 3 4
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct less_than_comparable; template<class T, class U, class B> struct less_than_comparable<T, U, B, operators_detail::false_t> : less_than_comparable2<T, U, B> {}; template<class T, class U> struct less_than_comparable<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : less_than_comparable1<T, U> {}; template <class T, class B> struct less_than_comparable<T, T, B, operators_detail::false_t> : less_than_comparable1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< less_than_comparable<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< less_than_comparable2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< less_than_comparable1<T, B> > { typedef operators_detail::true_t value; };
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct equality_comparable; template<class T, class U, class B> struct equality_comparable<T, U, B, operators_detail::false_t> : equality_comparable2<T, U, B> {}; template<class T, class U> struct equality_comparable<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : equality_comparable1<T, U> {}; template <class T, class B> struct equality_comparable<T, T, B, operators_detail::false_t> : equality_comparable1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< equality_comparable<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< equality_comparable2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< equality_comparable1<T, B> > { typedef operators_detail::true_t value; };
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct multipliable; template<class T, class U, class B> struct multipliable<T, U, B, operators_detail::false_t> : multipliable2<T, U, B> {}; template<class T, class U> struct multipliable<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : multipliable1<T, U> {}; template <class T, class B> struct multipliable<T, T, B, operators_detail::false_t> : multipliable1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< multipliable<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< multipliable2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< multipliable1<T, B> > { typedef operators_detail::true_t value; };
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct addable; template<class T, class U, class B> struct addable<T, U, B, operators_detail::false_t> : addable2<T, U, B> {}; template<class T, class U> struct addable<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : addable1<T, U> {}; template <class T, class B> struct addable<T, T, B, operators_detail::false_t> : addable1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< addable<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< addable2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< addable1<T, B> > { typedef operators_detail::true_t value; };
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct subtractable; template<class T, class U, class B> struct subtractable<T, U, B, operators_detail::false_t> : subtractable2<T, U, B> {}; template<class T, class U> struct subtractable<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : subtractable1<T, U> {}; template <class T, class B> struct subtractable<T, T, B, operators_detail::false_t> : subtractable1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< subtractable<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< subtractable2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< subtractable1<T, B> > { typedef operators_detail::true_t value; };
23866: template<class T, class U, class B> struct is_chained_base< subtractable2_left<T, U, B> > { typedef operators_detail::true_t value; };
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct dividable; template<class T, class U, class B> struct dividable<T, U, B, operators_detail::false_t> : dividable2<T, U, B> {}; template<class T, class U> struct dividable<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : dividable1<T, U> {}; template <class T, class B> struct dividable<T, T, B, operators_detail::false_t> : dividable1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< dividable<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< dividable2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< dividable1<T, B> > { typedef operators_detail::true_t value; };
23866: template<class T, class U, class B> struct is_chained_base< dividable2_left<T, U, B> > { typedef operators_detail::true_t value; };
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct modable; template<class T, class U, class B> struct modable<T, U, B, operators_detail::false_t> : modable2<T, U, B> {}; template<class T, class U> struct modable<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : modable1<T, U> {}; template <class T, class B> struct modable<T, T, B, operators_detail::false_t> : modable1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< modable<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< modable2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< modable1<T, B> > { typedef operators_detail::true_t value; };
23866: template<class T, class U, class B> struct is_chained_base< modable2_left<T, U, B> > { typedef operators_detail::true_t value; };
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct xorable; template<class T, class U, class B> struct xorable<T, U, B, operators_detail::false_t> : xorable2<T, U, B> {}; template<class T, class U> struct xorable<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : xorable1<T, U> {}; template <class T, class B> struct xorable<T, T, B, operators_detail::false_t> : xorable1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< xorable<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< xorable2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< xorable1<T, B> > { typedef operators_detail::true_t value; };
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct andable; template<class T, class U, class B> struct andable<T, U, B, operators_detail::false_t> : andable2<T, U, B> {}; template<class T, class U> struct andable<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : andable1<T, U> {}; template <class T, class B> struct andable<T, T, B, operators_detail::false_t> : andable1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< andable<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< andable2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< andable1<T, B> > { typedef operators_detail::true_t value; };
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct orable; template<class T, class U, class B> struct orable<T, U, B, operators_detail::false_t> : orable2<T, U, B> {}; template<class T, class U> struct orable<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : orable1<T, U> {}; template <class T, class B> struct orable<T, T, B, operators_detail::false_t> : orable1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< orable<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< orable2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< orable1<T, B> > { typedef operators_detail::true_t value; };
23866:
23866: template<class T, class B> struct is_chained_base< incrementable<T, B> > { typedef operators_detail::true_t value; };
23866: template<class T, class B> struct is_chained_base< decrementable<T, B> > { typedef operators_detail::true_t value; };
23866:
23866: template<class T, class U, class B> struct is_chained_base< dereferenceable<T, U, B> > { typedef operators_detail::true_t value; };
23866: template<class T, class U, class V, class B> struct is_chained_base< indexable<T, U, V, B> > { typedef operators_detail::true_t value; };
23866:
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct left_shiftable; template<class T, class U, class B> struct left_shiftable<T, U, B, operators_detail::false_t> : left_shiftable2<T, U, B> {}; template<class T, class U> struct left_shiftable<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : left_shiftable1<T, U> {}; template <class T, class B> struct left_shiftable<T, T, B, operators_detail::false_t> : left_shiftable1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< left_shiftable<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< left_shiftable2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< left_shiftable1<T, B> > { typedef operators_detail::true_t value; };
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct right_shiftable; template<class T, class U, class B> struct right_shiftable<T, U, B, operators_detail::false_t> : right_shiftable2<T, U, B> {}; template<class T, class U> struct right_shiftable<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : right_shiftable1<T, U> {}; template <class T, class B> struct right_shiftable<T, T, B, operators_detail::false_t> : right_shiftable1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< right_shiftable<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< right_shiftable2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< right_shiftable1<T, B> > { typedef operators_detail::true_t value; };
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct equivalent; template<class T, class U, class B> struct equivalent<T, U, B, operators_detail::false_t> : equivalent2<T, U, B> {}; template<class T, class U> struct equivalent<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : equivalent1<T, U> {}; template <class T, class B> struct equivalent<T, T, B, operators_detail::false_t> : equivalent1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< equivalent<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< equivalent2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< equivalent1<T, B> > { typedef operators_detail::true_t value; };
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct partially_ordered; template<class T, class U, class B> struct partially_ordered<T, U, B, operators_detail::false_t> : partially_ordered2<T, U, B> {}; template<class T, class U> struct partially_ordered<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : partially_ordered1<T, U> {}; template <class T, class B> struct partially_ordered<T, T, B, operators_detail::false_t> : partially_ordered1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< partially_ordered<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< partially_ordered2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< partially_ordered1<T, B> > { typedef operators_detail::true_t value; };
23866:
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct totally_ordered; template<class T, class U, class B> struct totally_ordered<T, U, B, operators_detail::false_t> : totally_ordered2<T, U, B> {}; template<class T, class U> struct totally_ordered<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : totally_ordered1<T, U> {}; template <class T, class B> struct totally_ordered<T, T, B, operators_detail::false_t> : totally_ordered1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< totally_ordered<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< totally_ordered2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< totally_ordered1<T, B> > { typedef operators_detail::true_t value; };
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct additive; template<class T, class U, class B> struct additive<T, U, B, operators_detail::false_t> : additive2<T, U, B> {}; template<class T, class U> struct additive<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : additive1<T, U> {}; template <class T, class B> struct additive<T, T, B, operators_detail::false_t> : additive1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< additive<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< additive2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< additive1<T, B> > { typedef operators_detail::true_t value; };
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct multiplicative; template<class T, class U, class B> struct multiplicative<T, U, B, operators_detail::false_t> : multiplicative2<T, U, B> {}; template<class T, class U> struct multiplicative<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : multiplicative1<T, U> {}; template <class T, class B> struct multiplicative<T, T, B, operators_detail::false_t> : multiplicative1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< multiplicative<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< multiplicative2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< multiplicative1<T, B> > { typedef operators_detail::true_t value; };
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct integer_multiplicative; template<class T, class U, class B> struct integer_multiplicative<T, U, B, operators_detail::false_t> : integer_multiplicative2<T, U, B> {}; template<class T, class U> struct integer_multiplicative<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : integer_multiplicative1<T, U> {}; template <class T, class B> struct integer_multiplicative<T, T, B, operators_detail::false_t> : integer_multiplicative1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< integer_multiplicative<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< integer_multiplicative2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< integer_multiplicative1<T, B> > { typedef operators_detail::true_t value; };
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct arithmetic; template<class T, class U, class B> struct arithmetic<T, U, B, operators_detail::false_t> : arithmetic2<T, U, B> {}; template<class T, class U> struct arithmetic<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : arithmetic1<T, U> {}; template <class T, class B> struct arithmetic<T, T, B, operators_detail::false_t> : arithmetic1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< arithmetic<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< arithmetic2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< arithmetic1<T, B> > { typedef operators_detail::true_t value; };
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct integer_arithmetic; template<class T, class U, class B> struct integer_arithmetic<T, U, B, operators_detail::false_t> : integer_arithmetic2<T, U, B> {}; template<class T, class U> struct integer_arithmetic<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : integer_arithmetic1<T, U> {}; template <class T, class B> struct integer_arithmetic<T, T, B, operators_detail::false_t> : integer_arithmetic1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< integer_arithmetic<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< integer_arithmetic2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< integer_arithmetic1<T, B> > { typedef operators_detail::true_t value; };
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct bitwise; template<class T, class U, class B> struct bitwise<T, U, B, operators_detail::false_t> : bitwise2<T, U, B> {}; template<class T, class U> struct bitwise<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : bitwise1<T, U> {}; template <class T, class B> struct bitwise<T, T, B, operators_detail::false_t> : bitwise1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< bitwise<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< bitwise2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< bitwise1<T, B> > { typedef operators_detail::true_t value; };
23866: template<class T, class B> struct is_chained_base< unit_steppable<T, B> > { typedef operators_detail::true_t value; };
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct shiftable; template<class T, class U, class B> struct shiftable<T, U, B, operators_detail::false_t> : shiftable2<T, U, B> {}; template<class T, class U> struct shiftable<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : shiftable1<T, U> {}; template <class T, class B> struct shiftable<T, T, B, operators_detail::false_t> : shiftable1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< shiftable<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< shiftable2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< shiftable1<T, B> > { typedef operators_detail::true_t value; };
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct ring_operators; template<class T, class U, class B> struct ring_operators<T, U, B, operators_detail::false_t> : ring_operators2<T, U, B> {}; template<class T, class U> struct ring_operators<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : ring_operators1<T, U> {}; template <class T, class B> struct ring_operators<T, T, B, operators_detail::false_t> : ring_operators1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ring_operators<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ring_operators2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< ring_operators1<T, B> > { typedef operators_detail::true_t value; };
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct ordered_ring_operators; template<class T, class U, class B> struct ordered_ring_operators<T, U, B, operators_detail::false_t> : ordered_ring_operators2<T, U, B> {}; template<class T, class U> struct ordered_ring_operators<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : ordered_ring_operators1<T, U> {}; template <class T, class B> struct ordered_ring_operators<T, T, B, operators_detail::false_t> : ordered_ring_operators1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ordered_ring_operators<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ordered_ring_operators2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< ordered_ring_operators1<T, B> > { typedef operators_detail::true_t value; };
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct field_operators; template<class T, class U, class B> struct field_operators<T, U, B, operators_detail::false_t> : field_operators2<T, U, B> {}; template<class T, class U> struct field_operators<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : field_operators1<T, U> {}; template <class T, class B> struct field_operators<T, T, B, operators_detail::false_t> : field_operators1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< field_operators<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< field_operators2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< field_operators1<T, B> > { typedef operators_detail::true_t value; };
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct ordered_field_operators; template<class T, class U, class B> struct ordered_field_operators<T, U, B, operators_detail::false_t> : ordered_field_operators2<T, U, B> {}; template<class T, class U> struct ordered_field_operators<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : ordered_field_operators1<T, U> {}; template <class T, class B> struct ordered_field_operators<T, T, B, operators_detail::false_t> : ordered_field_operators1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ordered_field_operators<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ordered_field_operators2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< ordered_field_operators1<T, B> > { typedef operators_detail::true_t value; };
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct euclidian_ring_operators; template<class T, class U, class B> struct euclidian_ring_operators<T, U, B, operators_detail::false_t> : euclidian_ring_operators2<T, U, B> {}; template<class T, class U> struct euclidian_ring_operators<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : euclidian_ring_operators1<T, U> {}; template <class T, class B> struct euclidian_ring_operators<T, T, B, operators_detail::false_t> : euclidian_ring_operators1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< euclidian_ring_operators<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< euclidian_ring_operators2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< euclidian_ring_operators1<T, B> > { typedef operators_detail::true_t value; };
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct ordered_euclidian_ring_operators; template<class T, class U, class B> struct ordered_euclidian_ring_operators<T, U, B, operators_detail::false_t> : ordered_euclidian_ring_operators2<T, U, B> {}; template<class T, class U> struct ordered_euclidian_ring_operators<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : ordered_euclidian_ring_operators1<T, U> {}; template <class T, class B> struct ordered_euclidian_ring_operators<T, T, B, operators_detail::false_t> : ordered_euclidian_ring_operators1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ordered_euclidian_ring_operators<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ordered_euclidian_ring_operators2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< ordered_euclidian_ring_operators1<T, B> > { typedef operators_detail::true_t value; };
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct euclidean_ring_operators; template<class T, class U, class B> struct euclidean_ring_operators<T, U, B, operators_detail::false_t> : euclidean_ring_operators2<T, U, B> {}; template<class T, class U> struct euclidean_ring_operators<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : euclidean_ring_operators1<T, U> {}; template <class T, class B> struct euclidean_ring_operators<T, T, B, operators_detail::false_t> : euclidean_ring_operators1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< euclidean_ring_operators<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< euclidean_ring_operators2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< euclidean_ring_operators1<T, B> > { typedef operators_detail::true_t value; };
23866: template <class T ,class U = T ,class B = operators_detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct ordered_euclidean_ring_operators; template<class T, class U, class B> struct ordered_euclidean_ring_operators<T, U, B, operators_detail::false_t> : ordered_euclidean_ring_operators2<T, U, B> {}; template<class T, class U> struct ordered_euclidean_ring_operators<T, U, operators_detail::empty_base<T>, operators_detail::true_t> : ordered_euclidean_ring_operators1<T, U> {}; template <class T, class B> struct ordered_euclidean_ring_operators<T, T, B, operators_detail::false_t> : ordered_euclidean_ring_operators1<T, B> {}; template<class T, class U, class B, class O> struct is_chained_base< ordered_euclidean_ring_operators<T, U, B, O> > { typedef operators_detail::true_t value; }; template<class T, class U, class B> struct is_chained_base< ordered_euclidean_ring_operators2<T, U, B> > { typedef operators_detail::true_t value; }; template<class T, class B> struct is_chained_base< ordered_euclidean_ring_operators1<T, B> > { typedef operators_detail::true_t value; };
23866: template<class T, class U, class B> struct is_chained_base< input_iteratable<T, U, B> > { typedef operators_detail::true_t value; };
23866: template<class T, class B> struct is_chained_base< output_iteratable<T, B> > { typedef operators_detail::true_t value; };
23866: template<class T, class U, class B> struct is_chained_base< forward_iteratable<T, U, B> > { typedef operators_detail::true_t value; };
23866: template<class T, class U, class B> struct is_chained_base< bidirectional_iteratable<T, U, B> > { typedef operators_detail::true_t value; };
23866: template<class T, class U, class V, class W, class B> struct is_chained_base< random_access_iteratable<T, U, V, W, B> > { typedef operators_detail::true_t value; };
23866:
23866: #undef BOOST_OPERATOR_TEMPLATE
23866: #undef BOOST_OPERATOR_TEMPLATE4
23866: #undef BOOST_OPERATOR_TEMPLATE3
23866: #undef BOOST_OPERATOR_TEMPLATE2
23866: #undef BOOST_OPERATOR_TEMPLATE1
23866:
23866: template <class T, class U>
23866: struct operators2
23866: : totally_ordered2<T,U
23866: , integer_arithmetic2<T,U
23866: , bitwise2<T,U
23866: > > > {};
23866:
23866: template <class T, class U = T>
23866: struct operators : operators2<T, U> {};
23866:
23866: template <class T> struct operators<T, T>
23866: : totally_ordered<T
23866: , integer_arithmetic<T
23866: , bitwise<T
23866: , unit_steppable<T
23866: > > > > {};
23866:
23866:
23866:
23866:
23866:
23866: template <class Category,
23866: class T,
23866: class Distance = std::ptrdiff_t,
23866: class Pointer = T*,
23866: class Reference = T&>
23866: struct iterator_helper
23866: {
23866: typedef Category iterator_category;
23866: typedef T value_type;
23866: typedef Distance difference_type;
23866: typedef Pointer pointer;
23866: typedef Reference reference;
23866: };
23866:
23866: template <class T,
23866: class V,
23866: class D = std::ptrdiff_t,
23866: class P = V const *,
23866: class R = V const &>
23866: struct input_iterator_helper
23866: : input_iteratable<T, P
23866: , iterator_helper<std::input_iterator_tag, V, D, P, R
23866: > > {};
23866:
23866: template<class T>
23866: struct output_iterator_helper
23866: : output_iteratable<T
23866: , iterator_helper<std::output_iterator_tag, void, void, void, void
23866: > >
23866: {
23866: T& operator*() { return static_cast<T&>(*this); }
23866: T& operator++() { return static_cast<T&>(*this); }
23866: };
23866:
23866: template <class T,
23866: class V,
23866: class D = std::ptrdiff_t,
23866: class P = V*,
23866: class R = V&>
23866: struct forward_iterator_helper
23866: : forward_iteratable<T, P
23866: , iterator_helper<std::forward_iterator_tag, V, D, P, R
23866: > > {};
23866:
23866: template <class T,
23866: class V,
23866: class D = std::ptrdiff_t,
23866: class P = V*,
23866: class R = V&>
23866: struct bidirectional_iterator_helper
23866: : bidirectional_iteratable<T, P
23866: , iterator_helper<std::bidirectional_iterator_tag, V, D, P, R
23866: > > {};
23866:
23866: template <class T,
23866: class V,
23866: class D = std::ptrdiff_t,
23866: class P = V*,
23866: class R = V&>
23866: struct random_access_iterator_helper
23866: : random_access_iteratable<T, P, D, R
23866: , iterator_helper<std::random_access_iterator_tag, V, D, P, R
23866: > >
23866: {
23866: friend D requires_difference_operator(const T& x, const T& y) {
23866: return x - y;
23866: }
23866: };
23866:
23866: }
23866: using namespace operators_impl;
23866:
23866: }
23866: # 78 "/usr/include/boost/rational.hpp" 2 3 4
23866: # 1 "/usr/include/c++/10/cstdlib" 1 3 4
23866: # 39 "/usr/include/c++/10/cstdlib" 3 4
23866:
23866: # 40 "/usr/include/c++/10/cstdlib" 3
23866: # 79 "/usr/include/boost/rational.hpp" 2 3 4
23866: # 1 "/usr/include/boost/call_traits.hpp" 1 3 4
23866: # 12 "/usr/include/boost/call_traits.hpp" 3 4
23866: #define BOOST_CALL_TRAITS_HPP
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/detail/call_traits.hpp" 1 3 4
23866: # 19 "/usr/include/boost/detail/call_traits.hpp" 3 4
23866: #define BOOST_DETAIL_CALL_TRAITS_HPP
23866: # 31 "/usr/include/boost/detail/call_traits.hpp" 3 4
23866: namespace boost{
23866:
23866: namespace detail{
23866:
23866: template <typename T, bool small_>
23866: struct ct_imp2
23866: {
23866: typedef const T& param_type;
23866: };
23866:
23866: template <typename T>
23866: struct ct_imp2<T, true>
23866: {
23866: typedef const T param_type;
23866: };
23866:
23866: template <typename T, bool isp, bool b1, bool b2>
23866: struct ct_imp
23866: {
23866: typedef const T& param_type;
23866: };
23866:
23866: template <typename T, bool isp, bool b2>
23866: struct ct_imp<T, isp, true, b2>
23866: {
23866: typedef typename ct_imp2<T, sizeof(T) <= sizeof(void*)>::param_type param_type;
23866: };
23866:
23866: template <typename T, bool isp, bool b1>
23866: struct ct_imp<T, isp, b1, true>
23866: {
23866: typedef typename ct_imp2<T, sizeof(T) <= sizeof(void*)>::param_type param_type;
23866: };
23866:
23866: template <typename T, bool b1, bool b2>
23866: struct ct_imp<T, true, b1, b2>
23866: {
23866: typedef const T param_type;
23866: };
23866:
23866: }
23866:
23866: template <typename T>
23866: struct call_traits
23866: {
23866: public:
23866: typedef T value_type;
23866: typedef T& reference;
23866: typedef const T& const_reference;
23866:
23866:
23866:
23866:
23866:
23866:
23866: typedef typename boost::detail::ct_imp<
23866: T,
23866: ::boost::is_pointer<T>::value,
23866: ::boost::is_arithmetic<T>::value,
23866: ::boost::is_enum<T>::value
23866: >::param_type param_type;
23866: };
23866:
23866: template <typename T>
23866: struct call_traits<T&>
23866: {
23866: typedef T& value_type;
23866: typedef T& reference;
23866: typedef const T& const_reference;
23866: typedef T& param_type;
23866: };
23866: # 143 "/usr/include/boost/detail/call_traits.hpp" 3 4
23866: template <typename T, std::size_t N>
23866: struct call_traits<T [N]>
23866: {
23866: private:
23866: typedef T array_type[N];
23866: public:
23866:
23866: typedef const T* value_type;
23866: typedef array_type& reference;
23866: typedef const array_type& const_reference;
23866: typedef const T* const param_type;
23866: };
23866:
23866: template <typename T, std::size_t N>
23866: struct call_traits<const T [N]>
23866: {
23866: private:
23866: typedef const T array_type[N];
23866: public:
23866:
23866: typedef const T* value_type;
23866: typedef array_type& reference;
23866: typedef const array_type& const_reference;
23866: typedef const T* const param_type;
23866: };
23866:
23866:
23866: }
23866: # 19 "/usr/include/boost/call_traits.hpp" 2 3 4
23866: # 80 "/usr/include/boost/rational.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/assert.hpp" 1 3 4
23866: # 32 "/usr/include/boost/assert.hpp" 3 4
23866: #undef BOOST_ASSERT
23866: #undef BOOST_ASSERT_MSG
23866: #undef BOOST_ASSERT_IS_VOID
23866: # 58 "/usr/include/boost/assert.hpp" 3 4
23866: # 1 "/usr/include/assert.h" 1 3 4
23866: # 24 "/usr/include/assert.h" 3 4
23866: #undef _ASSERT_H
23866: #undef assert
23866: #undef __ASSERT_VOID_CAST
23866:
23866:
23866: #undef assert_perror
23866:
23866:
23866:
23866:
23866: #define _ASSERT_H 1
23866:
23866:
23866:
23866: #define __ASSERT_VOID_CAST static_cast<void>
23866: # 92 "/usr/include/assert.h" 3 4
23866: #define assert(expr) (static_cast <bool> (expr) ? void (0) : __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 117 "/usr/include/assert.h" 3 4
23866: #define assert_perror(errnum) (!(errnum) ? __ASSERT_VOID_CAST (0) : __assert_perror_fail ((errnum), __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 129 "/usr/include/assert.h" 3 4
23866: #define __ASSERT_FUNCTION __extension__ __PRETTY_FUNCTION__
23866: # 59 "/usr/include/boost/assert.hpp" 2 3 4
23866:
23866: #define BOOST_ASSERT(expr) assert(expr)
23866: #define BOOST_ASSERT_MSG(expr,msg) assert((expr)&&(msg))
23866: # 72 "/usr/include/boost/assert.hpp" 3 4
23866: #undef BOOST_VERIFY
23866: #undef BOOST_VERIFY_MSG
23866: # 82 "/usr/include/boost/assert.hpp" 3 4
23866: #define BOOST_VERIFY(expr) BOOST_ASSERT(expr)
23866: #define BOOST_VERIFY_MSG(expr,msg) BOOST_ASSERT_MSG(expr,msg)
23866: # 82 "/usr/include/boost/rational.hpp" 2 3 4
23866: # 1 "/usr/include/boost/integer/common_factor_rt.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_INTEGER_COMMON_FACTOR_RT_HPP
23866:
23866: # 1 "/usr/include/boost/assert.hpp" 1 3 4
23866: # 32 "/usr/include/boost/assert.hpp" 3 4
23866: #undef BOOST_ASSERT
23866: #undef BOOST_ASSERT_MSG
23866: #undef BOOST_ASSERT_IS_VOID
23866: # 58 "/usr/include/boost/assert.hpp" 3 4
23866: # 1 "/usr/include/assert.h" 1 3 4
23866: # 24 "/usr/include/assert.h" 3 4
23866: #undef _ASSERT_H
23866: #undef assert
23866: #undef __ASSERT_VOID_CAST
23866:
23866:
23866: #undef assert_perror
23866:
23866:
23866:
23866:
23866: #define _ASSERT_H 1
23866:
23866:
23866:
23866: #define __ASSERT_VOID_CAST static_cast<void>
23866: # 92 "/usr/include/assert.h" 3 4
23866: #define assert(expr) (static_cast <bool> (expr) ? void (0) : __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 117 "/usr/include/assert.h" 3 4
23866: #define assert_perror(errnum) (!(errnum) ? __ASSERT_VOID_CAST (0) : __assert_perror_fail ((errnum), __FILE__, __LINE__, __ASSERT_FUNCTION))
23866: # 129 "/usr/include/assert.h" 3 4
23866: #define __ASSERT_FUNCTION __extension__ __PRETTY_FUNCTION__
23866: # 59 "/usr/include/boost/assert.hpp" 2 3 4
23866:
23866: #define BOOST_ASSERT(expr) assert(expr)
23866: #define BOOST_ASSERT_MSG(expr,msg) assert((expr)&&(msg))
23866: # 72 "/usr/include/boost/assert.hpp" 3 4
23866: #undef BOOST_VERIFY
23866: #undef BOOST_VERIFY_MSG
23866: # 82 "/usr/include/boost/assert.hpp" 3 4
23866: #define BOOST_VERIFY(expr) BOOST_ASSERT(expr)
23866: #define BOOST_VERIFY_MSG(expr,msg) BOOST_ASSERT_MSG(expr,msg)
23866: # 11 "/usr/include/boost/integer/common_factor_rt.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/c++/10/climits" 1 3 4
23866: # 39 "/usr/include/c++/10/climits" 3 4
23866:
23866: # 40 "/usr/include/c++/10/climits" 3
23866:
23866:
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/limits.h" 1 3 4
23866: # 43 "/usr/include/c++/10/climits" 2 3
23866: # 16 "/usr/include/boost/integer/common_factor_rt.hpp" 2 3 4
23866: # 37 "/usr/include/boost/integer/common_factor_rt.hpp" 3 4
23866: #define BOOST_GCD_NOEXCEPT(T) noexcept(std::is_arithmetic<T>::value)
23866:
23866:
23866:
23866:
23866: namespace boost {
23866:
23866: template <class I>
23866: class rational;
23866:
23866: namespace integer {
23866:
23866: namespace gcd_detail{
23866:
23866:
23866:
23866:
23866:
23866: template <class T>
23866: inline constexpr T constexpr_min(T const& a, T const& b) noexcept(std::is_arithmetic<T>::value)
23866: {
23866: return a < b ? a : b;
23866: }
23866: template <class T>
23866: inline constexpr auto constexpr_swap(T&a, T& b) noexcept(std::is_arithmetic<T>::value) -> decltype(a.swap(b))
23866: {
23866: return a.swap(b);
23866: }
23866: template <class T, class U>
23866: inline constexpr void constexpr_swap(T&a, U& b...) noexcept(std::is_arithmetic<T>::value)
23866: {
23866: T t(static_cast<T&&>(a));
23866: a = static_cast<T&&>(b);
23866: b = static_cast<T&&>(t);
23866: }
23866: # 86 "/usr/include/boost/integer/common_factor_rt.hpp" 3 4
23866: template <class T, bool a =
23866:
23866: std::is_unsigned<T>::value ||
23866:
23866: (std::numeric_limits<T>::is_specialized && !std::numeric_limits<T>::is_signed)>
23866: struct gcd_traits_abs_defaults
23866: {
23866: inline static constexpr const T& abs(const T& val) noexcept(std::is_arithmetic<T>::value) { return val; }
23866: };
23866: template <class T>
23866: struct gcd_traits_abs_defaults<T, false>
23866: {
23866: inline static T constexpr abs(const T& val) noexcept(std::is_arithmetic<T>::value)
23866: {
23866:
23866: return val < T(0) ? -val : val;
23866: }
23866: };
23866:
23866: enum method_type
23866: {
23866: method_euclid = 0,
23866: method_binary = 1,
23866: method_mixed = 2
23866: };
23866:
23866: struct any_convert
23866: {
23866: template <class T>
23866: any_convert(const T&);
23866: };
23866:
23866: struct unlikely_size
23866: {
23866: char buf[9973];
23866: };
23866:
23866: unlikely_size operator <<= (any_convert, any_convert);
23866: unlikely_size operator >>= (any_convert, any_convert);
23866:
23866: template <class T>
23866: struct gcd_traits_defaults : public gcd_traits_abs_defaults<T>
23866: {
23866: inline __attribute__ ((__always_inline__)) static constexpr unsigned make_odd(T& val) noexcept(std::is_arithmetic<T>::value)
23866: {
23866: unsigned r = 0;
23866: while (T(0) == (val & 1u))
23866: {
23866:
23866:
23866:
23866: val >>= 1;
23866:
23866: ++r;
23866: }
23866: return r;
23866: }
23866: inline static constexpr bool less(const T& a, const T& b) noexcept(std::is_arithmetic<T>::value)
23866: {
23866: return a < b;
23866: }
23866:
23866: static T& get_value();
23866:
23866:
23866: static const bool has_operator_left_shift_equal = sizeof(get_value() <<= 2) != sizeof(unlikely_size);
23866: static const bool has_operator_right_shift_equal = sizeof(get_value() >>= 2) != sizeof(unlikely_size);
23866:
23866:
23866:
23866:
23866: static const method_type method = std::numeric_limits<T>::is_specialized && std::numeric_limits<T>::is_integer && has_operator_left_shift_equal && has_operator_right_shift_equal ? method_mixed : method_euclid;
23866: };
23866:
23866:
23866:
23866: template <class T>
23866: struct gcd_traits : public gcd_traits_defaults<T> {};
23866: # 240 "/usr/include/boost/integer/common_factor_rt.hpp" 3 4
23866: template <>
23866: struct gcd_traits<unsigned> : public gcd_traits_defaults<unsigned>
23866: {
23866: inline __attribute__ ((__always_inline__)) static constexpr unsigned find_lsb(unsigned mask)noexcept
23866: {
23866: return __builtin_ctz(mask);
23866: }
23866: inline __attribute__ ((__always_inline__)) static constexpr unsigned make_odd(unsigned& val)noexcept
23866: {
23866: unsigned result = find_lsb(val);
23866: val >>= result;
23866: return result;
23866: }
23866: };
23866: template <>
23866: struct gcd_traits<unsigned long> : public gcd_traits_defaults<unsigned long>
23866: {
23866: inline __attribute__ ((__always_inline__)) static constexpr unsigned find_lsb(unsigned long mask)noexcept
23866: {
23866: return __builtin_ctzl(mask);
23866: }
23866: inline __attribute__ ((__always_inline__)) static constexpr unsigned make_odd(unsigned long& val)noexcept
23866: {
23866: unsigned result = find_lsb(val);
23866: val >>= result;
23866: return result;
23866: }
23866: };
23866: template <>
23866: struct gcd_traits<boost::ulong_long_type> : public gcd_traits_defaults<boost::ulong_long_type>
23866: {
23866: inline __attribute__ ((__always_inline__)) static constexpr unsigned find_lsb(boost::ulong_long_type mask)noexcept
23866: {
23866: return __builtin_ctzll(mask);
23866: }
23866: inline __attribute__ ((__always_inline__)) static constexpr unsigned make_odd(boost::ulong_long_type& val)noexcept
23866: {
23866: unsigned result = find_lsb(val);
23866: val >>= result;
23866: return result;
23866: }
23866: };
23866:
23866:
23866:
23866:
23866:
23866: template <> struct gcd_traits<boost::long_long_type> : public gcd_traits_defaults<boost::long_long_type>
23866: {
23866: inline __attribute__ ((__always_inline__)) static constexpr unsigned make_odd(boost::long_long_type& val)noexcept { unsigned result = gcd_traits<boost::ulong_long_type>::find_lsb(val); val >>= result; return result; }
23866: };
23866: template <> struct gcd_traits<long> : public gcd_traits_defaults<long>
23866: {
23866: inline __attribute__ ((__always_inline__)) static constexpr unsigned make_odd(long& val)noexcept { unsigned result = gcd_traits<unsigned long>::find_lsb(val); val >>= result; return result; }
23866: };
23866: template <> struct gcd_traits<int> : public gcd_traits_defaults<int>
23866: {
23866: inline __attribute__ ((__always_inline__)) static constexpr unsigned make_odd(int& val)noexcept { unsigned result = gcd_traits<unsigned long>::find_lsb(val); val >>= result; return result; }
23866: };
23866: template <> struct gcd_traits<unsigned short> : public gcd_traits_defaults<unsigned short>
23866: {
23866: inline __attribute__ ((__always_inline__)) static constexpr unsigned make_odd(unsigned short& val)noexcept { unsigned result = gcd_traits<unsigned>::find_lsb(val); val >>= result; return result; }
23866: };
23866: template <> struct gcd_traits<short> : public gcd_traits_defaults<short>
23866: {
23866: inline __attribute__ ((__always_inline__)) static constexpr unsigned make_odd(short& val)noexcept { unsigned result = gcd_traits<unsigned>::find_lsb(val); val >>= result; return result; }
23866: };
23866: template <> struct gcd_traits<unsigned char> : public gcd_traits_defaults<unsigned char>
23866: {
23866: inline __attribute__ ((__always_inline__)) static constexpr unsigned make_odd(unsigned char& val)noexcept { unsigned result = gcd_traits<unsigned>::find_lsb(val); val >>= result; return result; }
23866: };
23866: template <> struct gcd_traits<signed char> : public gcd_traits_defaults<signed char>
23866: {
23866: inline __attribute__ ((__always_inline__)) static constexpr unsigned make_odd(signed char& val)noexcept { unsigned result = gcd_traits<unsigned>::find_lsb(val); val >>= result; return result; }
23866: };
23866: template <> struct gcd_traits<char> : public gcd_traits_defaults<char>
23866: {
23866: inline __attribute__ ((__always_inline__)) static constexpr unsigned make_odd(char& val)noexcept { unsigned result = gcd_traits<unsigned>::find_lsb(val); val >>= result; return result; }
23866: };
23866:
23866: template <> struct gcd_traits<wchar_t> : public gcd_traits_defaults<wchar_t>
23866: {
23866: inline __attribute__ ((__always_inline__)) static constexpr unsigned make_odd(wchar_t& val)noexcept { unsigned result = gcd_traits<unsigned>::find_lsb(val); val >>= result; return result; }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class T>
23866: constexpr T mixed_binary_gcd(T u, T v) noexcept(std::is_arithmetic<T>::value)
23866: {
23866: if(gcd_traits<T>::less(u, v))
23866: constexpr_swap(u, v);
23866:
23866: unsigned shifts = 0;
23866:
23866: if(u == T(0))
23866: return v;
23866: if(v == T(0))
23866: return u;
23866:
23866: shifts = constexpr_min(gcd_traits<T>::make_odd(u), gcd_traits<T>::make_odd(v));
23866:
23866: while(gcd_traits<T>::less(1, v))
23866: {
23866: u %= v;
23866: v -= u;
23866: if(u == T(0))
23866: return v << shifts;
23866: if(v == T(0))
23866: return u << shifts;
23866: gcd_traits<T>::make_odd(u);
23866: gcd_traits<T>::make_odd(v);
23866: if(gcd_traits<T>::less(u, v))
23866: constexpr_swap(u, v);
23866: }
23866: return (v == 1 ? v : u) << shifts;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template <typename SteinDomain>
23866: constexpr SteinDomain Stein_gcd(SteinDomain m, SteinDomain n) noexcept(std::is_arithmetic<SteinDomain>::value)
23866: {
23866: (static_cast <bool> (m >= 0) ? void (0) : __assert_fail ("m >= 0", "/usr/include/boost/integer/common_factor_rt.hpp", 369, __extension__ __PRETTY_FUNCTION__));
23866: (static_cast <bool> (n >= 0) ? void (0) : __assert_fail ("n >= 0", "/usr/include/boost/integer/common_factor_rt.hpp", 370, __extension__ __PRETTY_FUNCTION__));
23866: if (m == SteinDomain(0))
23866: return n;
23866: if (n == SteinDomain(0))
23866: return m;
23866:
23866: unsigned d_m = gcd_traits<SteinDomain>::make_odd(m);
23866: unsigned d_n = gcd_traits<SteinDomain>::make_odd(n);
23866:
23866: while (m != n)
23866: {
23866: if (n > m)
23866: constexpr_swap(n, m);
23866: m -= n;
23866: gcd_traits<SteinDomain>::make_odd(m);
23866: }
23866:
23866: m <<= constexpr_min(d_m, d_n);
23866: return m;
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <typename EuclideanDomain>
23866: inline constexpr EuclideanDomain Euclid_gcd(EuclideanDomain a, EuclideanDomain b) noexcept(std::is_arithmetic<EuclideanDomain>::value)
23866: {
23866: while (b != EuclideanDomain(0))
23866: {
23866: a %= b;
23866: constexpr_swap(a, b);
23866: }
23866: return a;
23866: }
23866:
23866:
23866: template <typename T>
23866: inline constexpr typename enable_if_c<gcd_traits<T>::method == method_mixed, T>::type
23866: optimal_gcd_select(T const &a, T const &b) noexcept(std::is_arithmetic<T>::value)
23866: {
23866: return gcd_detail::mixed_binary_gcd(a, b);
23866: }
23866:
23866: template <typename T>
23866: inline constexpr typename enable_if_c<gcd_traits<T>::method == method_binary, T>::type
23866: optimal_gcd_select(T const &a, T const &b) noexcept(std::is_arithmetic<T>::value)
23866: {
23866: return gcd_detail::Stein_gcd(a, b);
23866: }
23866:
23866: template <typename T>
23866: inline constexpr typename enable_if_c<gcd_traits<T>::method == method_euclid, T>::type
23866: optimal_gcd_select(T const &a, T const &b) noexcept(std::is_arithmetic<T>::value)
23866: {
23866: return gcd_detail::Euclid_gcd(a, b);
23866: }
23866:
23866: template <class T>
23866: inline constexpr T lcm_imp(const T& a, const T& b) noexcept(std::is_arithmetic<T>::value)
23866: {
23866: T temp = boost::integer::gcd_detail::optimal_gcd_select(a, b);
23866:
23866:
23866:
23866: return temp != T(0) ? T(a / temp * b) : T(0);
23866:
23866: }
23866:
23866: }
23866:
23866:
23866: template <typename Integer>
23866: inline constexpr Integer gcd(Integer const &a, Integer const &b) noexcept(std::is_arithmetic<Integer>::value)
23866: {
23866: if(a == (std::numeric_limits<Integer>::min)())
23866: return a == static_cast<Integer>(0) ? gcd_detail::gcd_traits<Integer>::abs(b) : boost::integer::gcd(static_cast<Integer>(a % b), b);
23866: else if (b == (std::numeric_limits<Integer>::min)())
23866: return b == static_cast<Integer>(0) ? gcd_detail::gcd_traits<Integer>::abs(a) : boost::integer::gcd(a, static_cast<Integer>(b % a));
23866: return gcd_detail::optimal_gcd_select(static_cast<Integer>(gcd_detail::gcd_traits<Integer>::abs(a)), static_cast<Integer>(gcd_detail::gcd_traits<Integer>::abs(b)));
23866: }
23866:
23866: template <typename Integer>
23866: inline constexpr Integer lcm(Integer const &a, Integer const &b) noexcept(std::is_arithmetic<Integer>::value)
23866: {
23866: return gcd_detail::lcm_imp(static_cast<Integer>(gcd_detail::gcd_traits<Integer>::abs(a)), static_cast<Integer>(gcd_detail::gcd_traits<Integer>::abs(b)));
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template <typename Integer, typename... Args>
23866: inline constexpr Integer gcd(Integer const &a, Integer const &b, const Integer& c, Args const&... args) noexcept(std::is_arithmetic<Integer>::value)
23866: {
23866: Integer t = gcd(b, c, args...);
23866: return t == 1 ? 1 : gcd(a, t);
23866: }
23866:
23866: template <typename Integer, typename... Args>
23866: inline constexpr Integer lcm(Integer const &a, Integer const &b, Integer const& c, Args const&... args) noexcept(std::is_arithmetic<Integer>::value)
23866: {
23866: return lcm(a, lcm(b, c, args...));
23866: }
23866:
23866:
23866:
23866:
23866: template <typename Integer>
23866: inline typename boost::enable_if_c<std::numeric_limits<Integer>::is_specialized, boost::rational<Integer> >::type gcd(boost::rational<Integer> const &a, boost::rational<Integer> const &b)
23866: {
23866: return boost::rational<Integer>(static_cast<Integer>(gcd(a.numerator(), b.numerator())), static_cast<Integer>(lcm(a.denominator(), b.denominator())));
23866: }
23866:
23866: template <typename Integer>
23866: inline typename boost::enable_if_c<std::numeric_limits<Integer>::is_specialized, boost::rational<Integer> >::type lcm(boost::rational<Integer> const &a, boost::rational<Integer> const &b)
23866: {
23866: return boost::rational<Integer>(static_cast<Integer>(lcm(a.numerator(), b.numerator())), static_cast<Integer>(gcd(a.denominator(), b.denominator())));
23866: }
23866: # 504 "/usr/include/boost/integer/common_factor_rt.hpp" 3 4
23866: template <typename I>
23866: std::pair<typename std::iterator_traits<I>::value_type, I>
23866: gcd_range(I first, I last) noexcept(std::is_arithmetic<I>::value)
23866: {
23866: (static_cast <bool> (first != last) ? void (0) : __assert_fail ("first != last", "/usr/include/boost/integer/common_factor_rt.hpp", 508, __extension__ __PRETTY_FUNCTION__));
23866: typedef typename std::iterator_traits<I>::value_type T;
23866:
23866: T d = *first;
23866: ++first;
23866: while (d != T(1) && first != last)
23866: {
23866: d = gcd(d, *first);
23866: ++first;
23866: }
23866: return std::make_pair(d, first);
23866: }
23866: template <typename I>
23866: std::pair<typename std::iterator_traits<I>::value_type, I>
23866: lcm_range(I first, I last) noexcept(std::is_arithmetic<I>::value)
23866: {
23866: (static_cast <bool> (first != last) ? void (0) : __assert_fail ("first != last", "/usr/include/boost/integer/common_factor_rt.hpp", 524, __extension__ __PRETTY_FUNCTION__));
23866: typedef typename std::iterator_traits<I>::value_type T;
23866:
23866: T d = *first;
23866: ++first;
23866: while (d != T(0) && first != last)
23866: {
23866: d = lcm(d, *first);
23866: ++first;
23866: }
23866: return std::make_pair(d, first);
23866: }
23866:
23866: template < typename IntegerType >
23866: class gcd_evaluator
23866:
23866:
23866:
23866: {
23866: public:
23866:
23866: typedef IntegerType first_argument_type;
23866: typedef IntegerType second_argument_type;
23866: typedef IntegerType result_type;
23866:
23866: IntegerType operator()(IntegerType const &a, IntegerType const &b) const
23866: {
23866: return boost::integer::gcd(a, b);
23866: }
23866: };
23866:
23866: template < typename IntegerType >
23866: class lcm_evaluator
23866:
23866:
23866:
23866: {
23866: public:
23866:
23866: typedef IntegerType first_argument_type;
23866: typedef IntegerType second_argument_type;
23866: typedef IntegerType result_type;
23866:
23866: IntegerType operator()(IntegerType const &a, IntegerType const &b)const
23866: {
23866: return boost::integer::lcm(a, b);
23866: }
23866: };
23866:
23866: }
23866: }
23866: # 83 "/usr/include/boost/rational.hpp" 2 3 4
23866: # 94 "/usr/include/boost/rational.hpp" 3 4
23866: #define BOOST_CONTROL_RATIONAL_HAS_GCD 1
23866:
23866:
23866: namespace boost {
23866:
23866:
23866: template <typename IntType>
23866: IntType gcd(IntType n, IntType m)
23866: {
23866:
23866: return integer::gcd( n, m );
23866: }
23866:
23866: template <typename IntType>
23866: IntType lcm(IntType n, IntType m)
23866: {
23866:
23866: return integer::lcm( n, m );
23866: }
23866:
23866:
23866: namespace rational_detail{
23866:
23866: template <class FromInt, class ToInt, typename Enable = void>
23866: struct is_compatible_integer;
23866:
23866: template <class FromInt, class ToInt>
23866: struct is_compatible_integer<FromInt, ToInt, typename enable_if_c<!is_array<FromInt>::value>::type>
23866: {
23866: static const bool value = ((std::numeric_limits<FromInt>::is_specialized && std::numeric_limits<FromInt>::is_integer && (std::numeric_limits<FromInt>::digits <= std::numeric_limits<ToInt>::digits) && (std::numeric_limits<FromInt>::radix == std::numeric_limits<ToInt>::radix) && ((std::numeric_limits<FromInt>::is_signed == false) || (std::numeric_limits<ToInt>::is_signed == true)) && is_convertible<FromInt, ToInt>::value) || is_same<FromInt, ToInt>::value) || (is_class<ToInt>::value && is_class<FromInt>::value && is_convertible<FromInt, ToInt>::value)
23866:
23866:
23866:
23866:
23866:
23866: ;
23866: };
23866:
23866: template <class FromInt, class ToInt>
23866: struct is_compatible_integer<FromInt, ToInt, typename enable_if_c<is_array<FromInt>::value>::type>
23866: {
23866: static const bool value = false;
23866: };
23866:
23866: template <class FromInt, class ToInt, typename Enable = void>
23866: struct is_backward_compatible_integer;
23866:
23866: template <class FromInt, class ToInt>
23866: struct is_backward_compatible_integer<FromInt, ToInt, typename enable_if_c<!is_array<FromInt>::value>::type>
23866: {
23866: static const bool value = (std::numeric_limits<FromInt>::is_specialized && std::numeric_limits<FromInt>::is_integer && !is_compatible_integer<FromInt, ToInt>::value && (std::numeric_limits<FromInt>::radix == std::numeric_limits<ToInt>::radix) && is_convertible<FromInt, ToInt>::value)
23866:
23866:
23866: ;
23866: };
23866:
23866: template <class FromInt, class ToInt>
23866: struct is_backward_compatible_integer<FromInt, ToInt, typename enable_if_c<is_array<FromInt>::value>::type>
23866: {
23866: static const bool value = false;
23866: };
23866: }
23866:
23866: class bad_rational : public std::domain_error
23866: {
23866: public:
23866: explicit bad_rational() : std::domain_error("bad rational: zero denominator") {}
23866: explicit bad_rational( char const *what ) : std::domain_error( what ) {}
23866: };
23866:
23866: template <typename IntType>
23866: class rational
23866: {
23866:
23866: static_assert(::std::numeric_limits<IntType>::is_specialized, "::std::numeric_limits<IntType>::is_specialized");
23866:
23866:
23866: typedef typename boost::call_traits<IntType>::param_type param_type;
23866:
23866: struct helper { IntType parts[2]; };
23866: typedef IntType (helper::* bool_type)[2];
23866:
23866: public:
23866:
23866: typedef IntType int_type;
23866:
23866: constexpr
23866: rational() : num(0), den(1) {}
23866:
23866: template <class T>
23866: constexpr rational(const T& n, typename enable_if_c<
23866: rational_detail::is_compatible_integer<T, IntType>::value
23866: >::type const* = 0) : num(n), den(1) {}
23866:
23866: template <class T, class U>
23866: constexpr rational(const T& n, const U& d, typename enable_if_c<
23866: rational_detail::is_compatible_integer<T, IntType>::value && rational_detail::is_compatible_integer<U, IntType>::value
23866: >::type const* = 0) : num(n), den(d) {
23866: normalize();
23866: }
23866:
23866: template < typename NewType >
23866: constexpr explicit
23866: rational(rational<NewType> const &r, typename enable_if_c<rational_detail::is_compatible_integer<NewType, IntType>::value>::type const* = 0)
23866: : num(r.numerator()), den(is_normalized(int_type(r.numerator()),
23866: int_type(r.denominator())) ? r.denominator() :
23866: (::boost::throw_exception(bad_rational("bad rational: denormalized conversion"), ::boost::source_location("/usr/include/boost/rational.hpp", 200, __PRETTY_FUNCTION__)), 0)){}
23866:
23866: template < typename NewType >
23866: constexpr explicit
23866: rational(rational<NewType> const &r, typename disable_if_c<rational_detail::is_compatible_integer<NewType, IntType>::value>::type const* = 0)
23866: : num(r.numerator()), den(is_normalized(int_type(r.numerator()),
23866: int_type(r.denominator())) && is_safe_narrowing_conversion(r.denominator()) && is_safe_narrowing_conversion(r.numerator()) ? r.denominator() :
23866: (::boost::throw_exception(bad_rational("bad rational: denormalized conversion"), ::boost::source_location("/usr/include/boost/rational.hpp", 207, __PRETTY_FUNCTION__)), 0)){}
23866:
23866:
23866:
23866: template <class T>
23866: constexpr typename enable_if_c<
23866: rational_detail::is_compatible_integer<T, IntType>::value, rational &
23866: >::type operator=(const T& n) { return assign(static_cast<IntType>(n), static_cast<IntType>(1)); }
23866:
23866:
23866: template <class T, class U>
23866: constexpr typename enable_if_c<
23866: rational_detail::is_compatible_integer<T, IntType>::value && rational_detail::is_compatible_integer<U, IntType>::value, rational &
23866: >::type assign(const T& n, const U& d)
23866: {
23866: return *this = rational<IntType>(static_cast<IntType>(n), static_cast<IntType>(d));
23866: }
23866: # 232 "/usr/include/boost/rational.hpp" 3 4
23866: template <class T>
23866: constexpr rational(const T& n, typename enable_if_c<
23866: rational_detail::is_backward_compatible_integer<T, IntType>::value
23866: >::type const* = 0)
23866: {
23866: assign(n, static_cast<T>(1));
23866: }
23866: template <class T, class U>
23866: constexpr rational(const T& n, const U& d, typename enable_if_c<
23866: (!rational_detail::is_compatible_integer<T, IntType>::value
23866: || !rational_detail::is_compatible_integer<U, IntType>::value)
23866: && std::numeric_limits<T>::is_specialized && std::numeric_limits<T>::is_integer
23866: && (std::numeric_limits<T>::radix == std::numeric_limits<IntType>::radix)
23866: && is_convertible<T, IntType>::value &&
23866: std::numeric_limits<U>::is_specialized && std::numeric_limits<U>::is_integer
23866: && (std::numeric_limits<U>::radix == std::numeric_limits<IntType>::radix)
23866: && is_convertible<U, IntType>::value
23866: >::type const* = 0)
23866: {
23866: assign(n, d);
23866: }
23866: template <class T>
23866: constexpr typename enable_if_c<
23866: std::numeric_limits<T>::is_specialized && std::numeric_limits<T>::is_integer
23866: && !rational_detail::is_compatible_integer<T, IntType>::value
23866: && (std::numeric_limits<T>::radix == std::numeric_limits<IntType>::radix)
23866: && is_convertible<T, IntType>::value,
23866: rational &
23866: >::type operator=(const T& n) { return assign(n, static_cast<T>(1)); }
23866:
23866: template <class T, class U>
23866: constexpr typename enable_if_c<
23866: (!rational_detail::is_compatible_integer<T, IntType>::value
23866: || !rational_detail::is_compatible_integer<U, IntType>::value)
23866: && std::numeric_limits<T>::is_specialized && std::numeric_limits<T>::is_integer
23866: && (std::numeric_limits<T>::radix == std::numeric_limits<IntType>::radix)
23866: && is_convertible<T, IntType>::value &&
23866: std::numeric_limits<U>::is_specialized && std::numeric_limits<U>::is_integer
23866: && (std::numeric_limits<U>::radix == std::numeric_limits<IntType>::radix)
23866: && is_convertible<U, IntType>::value,
23866: rational &
23866: >::type assign(const T& n, const U& d)
23866: {
23866: if(!is_safe_narrowing_conversion(n) || !is_safe_narrowing_conversion(d))
23866: ::boost::throw_exception(bad_rational(), ::boost::source_location("/usr/include/boost/rational.hpp", 276, __PRETTY_FUNCTION__));
23866: return *this = rational<IntType>(static_cast<IntType>(n), static_cast<IntType>(d));
23866: }
23866:
23866:
23866: constexpr
23866: const IntType& numerator() const { return num; }
23866: constexpr
23866: const IntType& denominator() const { return den; }
23866:
23866:
23866: constexpr rational& operator+= (const rational& r);
23866: constexpr rational& operator-= (const rational& r);
23866: constexpr rational& operator*= (const rational& r);
23866: constexpr rational& operator/= (const rational& r);
23866:
23866: template <class T>
23866: constexpr typename boost::enable_if_c<rational_detail::is_compatible_integer<T, IntType>::value, rational&>::type operator+= (const T& i)
23866: {
23866: num += i * den;
23866: return *this;
23866: }
23866: template <class T>
23866: constexpr typename boost::enable_if_c<rational_detail::is_compatible_integer<T, IntType>::value, rational&>::type operator-= (const T& i)
23866: {
23866: num -= i * den;
23866: return *this;
23866: }
23866: template <class T>
23866: constexpr typename boost::enable_if_c<rational_detail::is_compatible_integer<T, IntType>::value, rational&>::type operator*= (const T& i)
23866: {
23866:
23866: IntType gcd = integer::gcd(static_cast<IntType>(i), den);
23866: num *= i / gcd;
23866: den /= gcd;
23866: return *this;
23866: }
23866: template <class T>
23866: constexpr typename boost::enable_if_c<rational_detail::is_compatible_integer<T, IntType>::value, rational&>::type operator/= (const T& i)
23866: {
23866:
23866: IntType const zero(0);
23866:
23866: if(i == zero) ::boost::throw_exception(bad_rational(), ::boost::source_location("/usr/include/boost/rational.hpp", 319, __PRETTY_FUNCTION__));
23866: if(num == zero) return *this;
23866:
23866:
23866: IntType const gcd = integer::gcd(num, static_cast<IntType>(i));
23866: num /= gcd;
23866: den *= i / gcd;
23866:
23866: if(den < zero) {
23866: num = -num;
23866: den = -den;
23866: }
23866:
23866: return *this;
23866: }
23866:
23866:
23866: constexpr const rational& operator++() { num += den; return *this; }
23866: constexpr const rational& operator--() { num -= den; return *this; }
23866:
23866: constexpr rational operator++(int)
23866: {
23866: rational t(*this);
23866: ++(*this);
23866: return t;
23866: }
23866: constexpr rational operator--(int)
23866: {
23866: rational t(*this);
23866: --(*this);
23866: return t;
23866: }
23866:
23866:
23866: constexpr
23866: bool operator!() const { return !num; }
23866: # 365 "/usr/include/boost/rational.hpp" 3 4
23866: constexpr
23866: operator bool_type() const { return operator !() ? 0 : &helper::parts; }
23866:
23866:
23866:
23866:
23866:
23866:
23866: constexpr bool operator< (const rational& r) const;
23866: constexpr bool operator> (const rational& r) const { return r < *this; }
23866: constexpr
23866: bool operator== (const rational& r) const;
23866:
23866: template <class T>
23866: constexpr typename boost::enable_if_c<rational_detail::is_compatible_integer<T, IntType>::value, bool>::type operator< (const T& i) const
23866: {
23866:
23866: int_type const zero(0);
23866:
23866:
23866: (static_cast <bool> (this->den > zero) ? void (0) : __assert_fail ("this->den > zero", "/usr/include/boost/rational.hpp", 385, __extension__ __PRETTY_FUNCTION__));
23866: int_type q = this->num / this->den, r = this->num % this->den;
23866: while(r < zero) { r += this->den; --q; }
23866:
23866:
23866:
23866:
23866:
23866: return q < i;
23866: }
23866: template <class T>
23866: constexpr typename boost::enable_if_c<rational_detail::is_compatible_integer<T, IntType>::value, bool>::type operator>(const T& i) const
23866: {
23866: return operator==(i) ? false : !operator<(i);
23866: }
23866: template <class T>
23866: constexpr typename boost::enable_if_c<rational_detail::is_compatible_integer<T, IntType>::value, bool>::type operator== (const T& i) const
23866: {
23866: return ((den == IntType(1)) && (num == i));
23866: }
23866:
23866: private:
23866:
23866:
23866: IntType num;
23866: IntType den;
23866:
23866:
23866: static constexpr
23866: int_type inner_gcd( param_type a, param_type b, int_type const &zero =
23866: int_type(0) )
23866: { return b == zero ? a : inner_gcd(b, a % b, zero); }
23866:
23866: static constexpr
23866: int_type inner_abs( param_type x, int_type const &zero = int_type(0) )
23866: { return x < zero ? -x : +x; }
23866:
23866:
23866:
23866:
23866:
23866: constexpr bool test_invariant() const;
23866: constexpr void normalize();
23866:
23866: static constexpr
23866: bool is_normalized( param_type n, param_type d, int_type const &zero =
23866: int_type(0), int_type const &one = int_type(1) )
23866: {
23866: return d > zero && ( n != zero || d == one ) && inner_abs( inner_gcd(n,
23866: d, zero), zero ) == one;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template <class T>
23866: constexpr static typename boost::enable_if_c<(std::numeric_limits<T>::digits > std::numeric_limits<IntType>::digits) && (std::numeric_limits<T>::is_signed == false), bool>::type is_safe_narrowing_conversion(const T& val)
23866: {
23866: return val < (T(1) << std::numeric_limits<IntType>::digits);
23866: }
23866:
23866:
23866:
23866: template <class T>
23866: constexpr static typename boost::enable_if_c<(std::numeric_limits<T>::digits > std::numeric_limits<IntType>::digits) && (std::numeric_limits<T>::is_signed == true) && (std::numeric_limits<IntType>::is_signed == true), bool>::type is_safe_narrowing_conversion(const T& val)
23866: {
23866:
23866:
23866:
23866:
23866: return (val < (T(1) << std::numeric_limits<IntType>::digits)) && (val >= -(T(1) << std::numeric_limits<IntType>::digits));
23866: }
23866:
23866:
23866:
23866: template <class T>
23866: constexpr static typename boost::enable_if_c<(std::numeric_limits<T>::digits > std::numeric_limits<IntType>::digits) && (std::numeric_limits<T>::is_signed == true) && (std::numeric_limits<IntType>::is_signed == false), bool>::type is_safe_narrowing_conversion(const T& val)
23866: {
23866: return (val < (T(1) << std::numeric_limits<IntType>::digits)) && (val >= 0);
23866: }
23866:
23866:
23866:
23866: template <class T>
23866: constexpr static typename boost::enable_if_c<(std::numeric_limits<T>::digits <= std::numeric_limits<IntType>::digits) && (std::numeric_limits<T>::is_signed == true) && (std::numeric_limits<IntType>::is_signed == false), bool>::type is_safe_narrowing_conversion(const T& val)
23866: {
23866: return val >= 0;
23866: }
23866:
23866:
23866:
23866: template <class T>
23866: constexpr static typename boost::enable_if_c<(std::numeric_limits<T>::digits <= std::numeric_limits<IntType>::digits) && (std::numeric_limits<T>::is_signed == false) && (std::numeric_limits<IntType>::is_signed == true), bool>::type is_safe_narrowing_conversion(const T&)
23866: {
23866: return true;
23866: }
23866:
23866:
23866:
23866: template <class T>
23866: constexpr static typename boost::enable_if_c<(std::numeric_limits<T>::digits <= std::numeric_limits<IntType>::digits) && (std::numeric_limits<T>::is_signed == false) && (std::numeric_limits<IntType>::is_signed == false), bool>::type is_safe_narrowing_conversion(const T&)
23866: {
23866: return true;
23866: }
23866:
23866:
23866:
23866: template <class T>
23866: constexpr static typename boost::enable_if_c<(std::numeric_limits<T>::digits <= std::numeric_limits<IntType>::digits) && (std::numeric_limits<T>::is_signed == true) && (std::numeric_limits<IntType>::is_signed == true), bool>::type is_safe_narrowing_conversion(const T&)
23866: {
23866: return true;
23866: }
23866: };
23866:
23866:
23866: template <typename IntType>
23866: constexpr
23866: inline rational<IntType> operator+ (const rational<IntType>& r)
23866: {
23866: return r;
23866: }
23866:
23866: template <typename IntType>
23866: constexpr
23866: inline rational<IntType> operator- (const rational<IntType>& r)
23866: {
23866: return rational<IntType>(static_cast<IntType>(-r.numerator()), r.denominator());
23866: }
23866:
23866:
23866: template <typename IntType>
23866: constexpr rational<IntType>& rational<IntType>::operator+= (const rational<IntType>& r)
23866: {
23866: # 538 "/usr/include/boost/rational.hpp" 3 4
23866: IntType r_num = r.num;
23866: IntType r_den = r.den;
23866:
23866: IntType g = integer::gcd(den, r_den);
23866: den /= g;
23866: num = num * (r_den / g) + r_num * den;
23866: g = integer::gcd(num, g);
23866: num /= g;
23866: den *= r_den/g;
23866:
23866: return *this;
23866: }
23866:
23866: template <typename IntType>
23866: constexpr rational<IntType>& rational<IntType>::operator-= (const rational<IntType>& r)
23866: {
23866:
23866: IntType r_num = r.num;
23866: IntType r_den = r.den;
23866:
23866:
23866:
23866: IntType g = integer::gcd(den, r_den);
23866: den /= g;
23866: num = num * (r_den / g) - r_num * den;
23866: g = integer::gcd(num, g);
23866: num /= g;
23866: den *= r_den/g;
23866:
23866: return *this;
23866: }
23866:
23866: template <typename IntType>
23866: constexpr rational<IntType>& rational<IntType>::operator*= (const rational<IntType>& r)
23866: {
23866:
23866: IntType r_num = r.num;
23866: IntType r_den = r.den;
23866:
23866:
23866: IntType gcd1 = integer::gcd(num, r_den);
23866: IntType gcd2 = integer::gcd(r_num, den);
23866: num = (num/gcd1) * (r_num/gcd2);
23866: den = (den/gcd2) * (r_den/gcd1);
23866: return *this;
23866: }
23866:
23866: template <typename IntType>
23866: constexpr rational<IntType>& rational<IntType>::operator/= (const rational<IntType>& r)
23866: {
23866:
23866: IntType r_num = r.num;
23866: IntType r_den = r.den;
23866:
23866:
23866: IntType zero(0);
23866:
23866:
23866: if (r_num == zero)
23866: ::boost::throw_exception(bad_rational(), ::boost::source_location("/usr/include/boost/rational.hpp", 597, __PRETTY_FUNCTION__));
23866: if (num == zero)
23866: return *this;
23866:
23866:
23866: IntType gcd1 = integer::gcd(num, r_num);
23866: IntType gcd2 = integer::gcd(r_den, den);
23866: num = (num/gcd1) * (r_den/gcd2);
23866: den = (den/gcd2) * (r_num/gcd1);
23866:
23866: if (den < zero) {
23866: num = -num;
23866: den = -den;
23866: }
23866: return *this;
23866: }
23866: # 630 "/usr/include/boost/rational.hpp" 3 4
23866: template <class IntType, class Arg>
23866: constexpr
23866: inline typename boost::enable_if_c <
23866: rational_detail::is_compatible_integer<Arg, IntType>::value || is_same<rational<IntType>, Arg>::value, rational<IntType> >::type
23866: operator + (const rational<IntType>& a, const Arg& b)
23866: {
23866: rational<IntType> t(a);
23866: return t += b;
23866: }
23866: template <class Arg, class IntType>
23866: constexpr
23866: inline typename boost::enable_if_c <
23866: rational_detail::is_compatible_integer<Arg, IntType>::value, rational<IntType> >::type
23866: operator + (const Arg& b, const rational<IntType>& a)
23866: {
23866: rational<IntType> t(a);
23866: return t += b;
23866: }
23866:
23866: template <class IntType, class Arg>
23866: constexpr
23866: inline typename boost::enable_if_c <
23866: rational_detail::is_compatible_integer<Arg, IntType>::value || is_same<rational<IntType>, Arg>::value, rational<IntType> >::type
23866: operator - (const rational<IntType>& a, const Arg& b)
23866: {
23866: rational<IntType> t(a);
23866: return t -= b;
23866: }
23866: template <class Arg, class IntType>
23866: constexpr
23866: inline typename boost::enable_if_c <
23866: rational_detail::is_compatible_integer<Arg, IntType>::value, rational<IntType> >::type
23866: operator - (const Arg& b, const rational<IntType>& a)
23866: {
23866: rational<IntType> t(a);
23866: return -(t -= b);
23866: }
23866:
23866: template <class IntType, class Arg>
23866: constexpr
23866: inline typename boost::enable_if_c <
23866: rational_detail::is_compatible_integer<Arg, IntType>::value || is_same<rational<IntType>, Arg>::value, rational<IntType> >::type
23866: operator * (const rational<IntType>& a, const Arg& b)
23866: {
23866: rational<IntType> t(a);
23866: return t *= b;
23866: }
23866: template <class Arg, class IntType>
23866: constexpr
23866: inline typename boost::enable_if_c <
23866: rational_detail::is_compatible_integer<Arg, IntType>::value, rational<IntType> >::type
23866: operator * (const Arg& b, const rational<IntType>& a)
23866: {
23866: rational<IntType> t(a);
23866: return t *= b;
23866: }
23866:
23866: template <class IntType, class Arg>
23866: constexpr
23866: inline typename boost::enable_if_c <
23866: rational_detail::is_compatible_integer<Arg, IntType>::value || is_same<rational<IntType>, Arg>::value, rational<IntType> >::type
23866: operator / (const rational<IntType>& a, const Arg& b)
23866: {
23866: rational<IntType> t(a);
23866: return t /= b;
23866: }
23866: template <class Arg, class IntType>
23866: constexpr
23866: inline typename boost::enable_if_c <
23866: rational_detail::is_compatible_integer<Arg, IntType>::value, rational<IntType> >::type
23866: operator / (const Arg& b, const rational<IntType>& a)
23866: {
23866: rational<IntType> t(b);
23866: return t /= a;
23866: }
23866:
23866: template <class IntType, class Arg>
23866: constexpr
23866: inline typename boost::enable_if_c <
23866: rational_detail::is_compatible_integer<Arg, IntType>::value || is_same<rational<IntType>, Arg>::value, bool>::type
23866: operator <= (const rational<IntType>& a, const Arg& b)
23866: {
23866: return !(a > b);
23866: }
23866: template <class Arg, class IntType>
23866: constexpr
23866: inline typename boost::enable_if_c <
23866: rational_detail::is_compatible_integer<Arg, IntType>::value, bool>::type
23866: operator <= (const Arg& b, const rational<IntType>& a)
23866: {
23866: return a >= b;
23866: }
23866:
23866: template <class IntType, class Arg>
23866: constexpr
23866: inline typename boost::enable_if_c <
23866: rational_detail::is_compatible_integer<Arg, IntType>::value || is_same<rational<IntType>, Arg>::value, bool>::type
23866: operator >= (const rational<IntType>& a, const Arg& b)
23866: {
23866: return !(a < b);
23866: }
23866: template <class Arg, class IntType>
23866: constexpr
23866: inline typename boost::enable_if_c <
23866: rational_detail::is_compatible_integer<Arg, IntType>::value, bool>::type
23866: operator >= (const Arg& b, const rational<IntType>& a)
23866: {
23866: return a <= b;
23866: }
23866:
23866: template <class IntType, class Arg>
23866: constexpr
23866: inline typename boost::enable_if_c <
23866: rational_detail::is_compatible_integer<Arg, IntType>::value || is_same<rational<IntType>, Arg>::value, bool>::type
23866: operator != (const rational<IntType>& a, const Arg& b)
23866: {
23866: return !(a == b);
23866: }
23866: template <class Arg, class IntType>
23866: constexpr
23866: inline typename boost::enable_if_c <
23866: rational_detail::is_compatible_integer<Arg, IntType>::value, bool>::type
23866: operator != (const Arg& b, const rational<IntType>& a)
23866: {
23866: return !(b == a);
23866: }
23866:
23866: template <class Arg, class IntType>
23866: constexpr
23866: inline typename boost::enable_if_c <
23866: rational_detail::is_compatible_integer<Arg, IntType>::value, bool>::type
23866: operator < (const Arg& b, const rational<IntType>& a)
23866: {
23866: return a > b;
23866: }
23866: template <class Arg, class IntType>
23866: constexpr
23866: inline typename boost::enable_if_c <
23866: rational_detail::is_compatible_integer<Arg, IntType>::value, bool>::type
23866: operator > (const Arg& b, const rational<IntType>& a)
23866: {
23866: return a < b;
23866: }
23866: template <class Arg, class IntType>
23866: constexpr
23866: inline typename boost::enable_if_c <
23866: rational_detail::is_compatible_integer<Arg, IntType>::value, bool>::type
23866: operator == (const Arg& b, const rational<IntType>& a)
23866: {
23866: return a == b;
23866: }
23866:
23866:
23866: template <typename IntType>
23866: constexpr
23866: bool rational<IntType>::operator< (const rational<IntType>& r) const
23866: {
23866:
23866: int_type const zero( 0 );
23866:
23866:
23866:
23866:
23866:
23866: (static_cast <bool> (this->den > zero) ? void (0) : __assert_fail ("this->den > zero", "/usr/include/boost/rational.hpp", 794, __extension__ __PRETTY_FUNCTION__));
23866: (static_cast <bool> (r.den > zero) ? void (0) : __assert_fail ("r.den > zero", "/usr/include/boost/rational.hpp", 795, __extension__ __PRETTY_FUNCTION__));
23866:
23866:
23866:
23866: struct { int_type n, d, q, r; }
23866: ts = { this->num, this->den, static_cast<int_type>(this->num / this->den),
23866: static_cast<int_type>(this->num % this->den) },
23866: rs = { r.num, r.den, static_cast<int_type>(r.num / r.den),
23866: static_cast<int_type>(r.num % r.den) };
23866: unsigned reverse = 0u;
23866:
23866:
23866:
23866:
23866:
23866:
23866: while ( ts.r < zero ) { ts.r += ts.d; --ts.q; }
23866: while ( rs.r < zero ) { rs.r += rs.d; --rs.q; }
23866:
23866:
23866: for ( ;; )
23866: {
23866:
23866:
23866:
23866: if ( ts.q != rs.q )
23866: {
23866:
23866:
23866:
23866: return reverse ? ts.q > rs.q : ts.q < rs.q;
23866: }
23866:
23866:
23866: reverse ^= 1u;
23866:
23866: if ( (ts.r == zero) || (rs.r == zero) )
23866: {
23866:
23866: break;
23866: }
23866:
23866: ts.n = ts.d; ts.d = ts.r;
23866: ts.q = ts.n / ts.d; ts.r = ts.n % ts.d;
23866: rs.n = rs.d; rs.d = rs.r;
23866: rs.q = rs.n / rs.d; rs.r = rs.n % rs.d;
23866: }
23866:
23866:
23866: if ( ts.r == rs.r )
23866: {
23866:
23866:
23866:
23866: return false;
23866: }
23866: else
23866: {
23866: # 861 "/usr/include/boost/rational.hpp" 3 4
23866: return ( ts.r != zero ) != static_cast<bool>( reverse );
23866:
23866:
23866:
23866: }
23866: }
23866:
23866: template <typename IntType>
23866: constexpr
23866: inline bool rational<IntType>::operator== (const rational<IntType>& r) const
23866: {
23866: return ((num == r.num) && (den == r.den));
23866: }
23866:
23866:
23866: template <typename IntType>
23866: constexpr
23866: inline bool rational<IntType>::test_invariant() const
23866: {
23866: return ( this->den > int_type(0) ) && ( integer::gcd(this->num, this->den) ==
23866: int_type(1) );
23866: }
23866:
23866:
23866: template <typename IntType>
23866: constexpr void rational<IntType>::normalize()
23866: {
23866:
23866: IntType zero(0);
23866:
23866: if (den == zero)
23866: ::boost::throw_exception(bad_rational(), ::boost::source_location("/usr/include/boost/rational.hpp", 892, __PRETTY_FUNCTION__));
23866:
23866:
23866: if (num == zero) {
23866: den = IntType(1);
23866: return;
23866: }
23866:
23866: IntType g = integer::gcd(num, den);
23866:
23866: num /= g;
23866: den /= g;
23866:
23866: if (den < -(std::numeric_limits<IntType>::max)()) {
23866: ::boost::throw_exception(bad_rational("bad rational: non-zero singular denominator"), ::boost::source_location("/usr/include/boost/rational.hpp", 906, __PRETTY_FUNCTION__));
23866: }
23866:
23866:
23866: if (den < zero) {
23866: num = -num;
23866: den = -den;
23866: }
23866:
23866: (static_cast <bool> (this->test_invariant()) ? void (0) : __assert_fail ("this->test_invariant()", "/usr/include/boost/rational.hpp", 915, __extension__ __PRETTY_FUNCTION__));
23866: }
23866:
23866:
23866: namespace detail {
23866:
23866:
23866:
23866: struct resetter {
23866: resetter(std::istream& is) : is_(is), f_(is.flags()) {}
23866: ~resetter() { is_.flags(f_); }
23866: std::istream& is_;
23866: std::istream::fmtflags f_;
23866: };
23866:
23866: }
23866:
23866:
23866: template <typename IntType>
23866: std::istream& operator>> (std::istream& is, rational<IntType>& r)
23866: {
23866: using std::ios;
23866:
23866: IntType n = IntType(0), d = IntType(1);
23866: char c = 0;
23866: detail::resetter sentry(is);
23866:
23866: if ( is >> n )
23866: {
23866: if ( is.get(c) )
23866: {
23866: if ( c == '/' )
23866: {
23866: if ( is >> std::noskipws >> d )
23866: try {
23866: r.assign( n, d );
23866: } catch ( bad_rational & ) {
23866: try { is.setstate(ios::failbit); }
23866: catch ( ... ) {}
23866: if ( is.exceptions() & ios::failbit )
23866: throw;
23866:
23866: }
23866: }
23866: else
23866: is.setstate( ios::failbit );
23866: }
23866: }
23866:
23866: return is;
23866: }
23866:
23866:
23866: template <typename IntType>
23866: std::ostream& operator<< (std::ostream& os, const rational<IntType>& r)
23866: {
23866:
23866: std::ostringstream ss;
23866:
23866: ss.copyfmt( os );
23866: ss.tie( __null );
23866: ss.exceptions( std::ios::goodbit );
23866: ss.width( 0 );
23866: ss << std::noshowpos << std::noshowbase << '/' << r.denominator();
23866:
23866:
23866: std::string const tail = ss.str();
23866: std::streamsize const w =
23866: os.width() - static_cast<std::streamsize>( tail.size() );
23866:
23866: ss.clear();
23866: ss.str( "" );
23866: ss.flags( os.flags() );
23866: ss << std::setw( w < 0 || (os.flags() & std::ios::adjustfield) !=
23866: std::ios::internal ? 0 : w ) << r.numerator();
23866: return os << ss.str() + tail;
23866: }
23866:
23866:
23866:
23866: template <typename T, typename IntType>
23866: constexpr
23866: inline T rational_cast(const rational<IntType>& src)
23866: {
23866: return static_cast<T>(src.numerator())/static_cast<T>(src.denominator());
23866: }
23866:
23866:
23866:
23866:
23866: template <typename IntType>
23866: constexpr
23866: inline rational<IntType> abs(const rational<IntType>& r)
23866: {
23866: return r.numerator() >= IntType(0)? r: -r;
23866: }
23866:
23866: namespace integer {
23866:
23866: template <typename IntType>
23866: struct gcd_evaluator< rational<IntType> >
23866: {
23866: typedef rational<IntType> result_type,
23866: first_argument_type, second_argument_type;
23866: result_type operator() ( first_argument_type const &a
23866: , second_argument_type const &b
23866: ) const
23866: {
23866: return result_type(integer::gcd(a.numerator(), b.numerator()),
23866: integer::lcm(a.denominator(), b.denominator()));
23866: }
23866: };
23866:
23866: template <typename IntType>
23866: struct lcm_evaluator< rational<IntType> >
23866: {
23866: typedef rational<IntType> result_type,
23866: first_argument_type, second_argument_type;
23866: result_type operator() ( first_argument_type const &a
23866: , second_argument_type const &b
23866: ) const
23866: {
23866: return result_type(integer::lcm(a.numerator(), b.numerator()),
23866: integer::gcd(a.denominator(), b.denominator()));
23866: }
23866: };
23866:
23866: }
23866:
23866: }
23866: # 20 "/usr/include/boost/multiprecision/rational_adaptor.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866: namespace boost {
23866: namespace multiprecision {
23866: namespace backends {
23866:
23866: template <class IntBackend>
23866: struct rational_adaptor
23866: {
23866: typedef number<IntBackend> integer_type;
23866: typedef boost::rational<integer_type> rational_type;
23866:
23866: typedef typename IntBackend::signed_types signed_types;
23866: typedef typename IntBackend::unsigned_types unsigned_types;
23866: typedef typename IntBackend::float_types float_types;
23866:
23866: rational_adaptor() noexcept((noexcept(rational_type()))) {}
23866: rational_adaptor(const rational_adaptor& o) noexcept((noexcept(std::declval<rational_type&>() = std::declval<const rational_type&>())))
23866: {
23866: m_value = o.m_value;
23866: }
23866: rational_adaptor(const IntBackend& o) noexcept((noexcept(rational_type(std::declval<const IntBackend&>())))) : m_value(o) {}
23866:
23866: template <class U>
23866: rational_adaptor(const U& u, typename enable_if_c<is_convertible<U, IntBackend>::value>::type* = 0)
23866: : m_value(static_cast<integer_type>(u)) {}
23866: template <class U>
23866: explicit rational_adaptor(const U& u,
23866: typename enable_if_c<
23866: boost::multiprecision::detail::is_explicitly_convertible<U, IntBackend>::value && !is_convertible<U, IntBackend>::value>::type* = 0)
23866: : m_value(IntBackend(u)) {}
23866: template <class U>
23866: typename enable_if_c<(boost::multiprecision::detail::is_explicitly_convertible<U, IntBackend>::value && !is_arithmetic<U>::value), rational_adaptor&>::type operator=(const U& u)
23866: {
23866: m_value = IntBackend(u);
23866: return *this;
23866: }
23866:
23866:
23866: rational_adaptor(rational_adaptor&& o) noexcept((noexcept(rational_type(std::declval<rational_type>())))) : m_value(static_cast<rational_type&&>(o.m_value))
23866: {}
23866: rational_adaptor(IntBackend&& o) noexcept((noexcept(rational_type(std::declval<IntBackend>())))) : m_value(static_cast<IntBackend&&>(o)) {}
23866: rational_adaptor& operator=(rational_adaptor&& o) noexcept((noexcept(std::declval<rational_type&>() = std::declval<rational_type>())))
23866: {
23866: m_value = static_cast<rational_type&&>(o.m_value);
23866: return *this;
23866: }
23866:
23866: rational_adaptor& operator=(const rational_adaptor& o)
23866: {
23866: m_value = o.m_value;
23866: return *this;
23866: }
23866: rational_adaptor& operator=(const IntBackend& o)
23866: {
23866: m_value = o;
23866: return *this;
23866: }
23866: template <class Int>
23866: typename enable_if<is_integral<Int>, rational_adaptor&>::type operator=(Int i)
23866: {
23866: m_value = i;
23866: return *this;
23866: }
23866: template <class Float>
23866: typename enable_if<is_floating_point<Float>, rational_adaptor&>::type operator=(Float i)
23866: {
23866: int e;
23866: Float f = std::frexp(i, &e);
23866: f = std::ldexp(f, std::numeric_limits<Float>::digits);
23866: e -= std::numeric_limits<Float>::digits;
23866: integer_type num(f);
23866: integer_type denom(1u);
23866: if (e > 0)
23866: {
23866: num <<= e;
23866: }
23866: else if (e < 0)
23866: {
23866: denom <<= -e;
23866: }
23866: m_value.assign(num, denom);
23866: return *this;
23866: }
23866: rational_adaptor& operator=(const char* s)
23866: {
23866: std::string s1;
23866: multiprecision::number<IntBackend> v1, v2;
23866: char c;
23866: bool have_hex = false;
23866: const char* p = s;
23866:
23866: while ((0 != (c = *s)) && (c == 'x' || c == 'X' || c == '-' || c == '+' || (c >= '0' && c <= '9') || (have_hex && (c >= 'a' && c <= 'f')) || (have_hex && (c >= 'A' && c <= 'F'))))
23866: {
23866: if (c == 'x' || c == 'X')
23866: have_hex = true;
23866: s1.append(1, c);
23866: ++s;
23866: }
23866: v1.assign(s1);
23866: s1.erase();
23866: if (c == '/')
23866: {
23866: ++s;
23866: while ((0 != (c = *s)) && (c == 'x' || c == 'X' || c == '-' || c == '+' || (c >= '0' && c <= '9') || (have_hex && (c >= 'a' && c <= 'f')) || (have_hex && (c >= 'A' && c <= 'F'))))
23866: {
23866: if (c == 'x' || c == 'X')
23866: have_hex = true;
23866: s1.append(1, c);
23866: ++s;
23866: }
23866: v2.assign(s1);
23866: }
23866: else
23866: v2 = 1;
23866: if (*s)
23866: {
23866: ::boost::throw_exception(std::runtime_error(std::string("Could not parse the string \"") + p + std::string("\" as a valid rational number.")), ::boost::source_location("/usr/include/boost/multiprecision/rational_adaptor.hpp", 139, __PRETTY_FUNCTION__));
23866: }
23866: data().assign(v1, v2);
23866: return *this;
23866: }
23866: void swap(rational_adaptor& o)
23866: {
23866: std::swap(m_value, o.m_value);
23866: }
23866: std::string str(std::streamsize digits, std::ios_base::fmtflags f) const
23866: {
23866:
23866:
23866:
23866: std::string result = data().numerator().str(digits, f);
23866: if (data().denominator() != 1)
23866: {
23866: result.append(1, '/');
23866: result.append(data().denominator().str(digits, f));
23866: }
23866: return result;
23866: }
23866: void negate()
23866: {
23866: m_value = -m_value;
23866: }
23866: int compare(const rational_adaptor& o) const
23866: {
23866: return m_value > o.m_value ? 1 : (m_value < o.m_value ? -1 : 0);
23866: }
23866: template <class Arithmatic>
23866: typename enable_if_c<is_arithmetic<Arithmatic>::value && !is_floating_point<Arithmatic>::value, int>::type compare(Arithmatic i) const
23866: {
23866: return m_value > i ? 1 : (m_value < i ? -1 : 0);
23866: }
23866: template <class Arithmatic>
23866: typename enable_if_c<is_floating_point<Arithmatic>::value, int>::type compare(Arithmatic i) const
23866: {
23866: rational_adaptor r;
23866: r = i;
23866: return this->compare(r);
23866: }
23866: rational_type& data() { return m_value; }
23866: const rational_type& data() const { return m_value; }
23866:
23866: template <class Archive>
23866: void serialize(Archive& ar, const mpl::true_&)
23866: {
23866:
23866: integer_type n(m_value.numerator()), d(m_value.denominator());
23866: ar& boost::make_nvp("numerator", n);
23866: ar& boost::make_nvp("denominator", d);
23866: }
23866: template <class Archive>
23866: void serialize(Archive& ar, const mpl::false_&)
23866: {
23866:
23866: integer_type n, d;
23866: ar& boost::make_nvp("numerator", n);
23866: ar& boost::make_nvp("denominator", d);
23866: m_value.assign(n, d);
23866: }
23866: template <class Archive>
23866: void serialize(Archive& ar, const unsigned int )
23866: {
23866: typedef typename Archive::is_saving tag;
23866: serialize(ar, tag());
23866: }
23866:
23866: private:
23866: rational_type m_value;
23866: };
23866:
23866: template <class IntBackend>
23866: inline void eval_add(rational_adaptor<IntBackend>& result, const rational_adaptor<IntBackend>& o)
23866: {
23866: result.data() += o.data();
23866: }
23866: template <class IntBackend>
23866: inline void eval_subtract(rational_adaptor<IntBackend>& result, const rational_adaptor<IntBackend>& o)
23866: {
23866: result.data() -= o.data();
23866: }
23866: template <class IntBackend>
23866: inline void eval_multiply(rational_adaptor<IntBackend>& result, const rational_adaptor<IntBackend>& o)
23866: {
23866: result.data() *= o.data();
23866: }
23866: template <class IntBackend>
23866: inline void eval_divide(rational_adaptor<IntBackend>& result, const rational_adaptor<IntBackend>& o)
23866: {
23866: using default_ops::eval_is_zero;
23866: if (eval_is_zero(o))
23866: {
23866: ::boost::throw_exception(std::overflow_error("Divide by zero."), ::boost::source_location("/usr/include/boost/multiprecision/rational_adaptor.hpp", 233, __PRETTY_FUNCTION__));
23866: }
23866: result.data() /= o.data();
23866: }
23866:
23866: template <class R, class IntBackend>
23866: inline typename enable_if_c<number_category<R>::value == number_kind_floating_point>::type eval_convert_to(R* result, const rational_adaptor<IntBackend>& backend)
23866: {
23866:
23866:
23866:
23866: ::boost::multiprecision::detail::generic_convert_rational_to_float(*result, backend);
23866: }
23866:
23866: template <class R, class IntBackend>
23866: inline typename enable_if_c<(number_category<R>::value != number_kind_integer) && (number_category<R>::value != number_kind_floating_point)>::type eval_convert_to(R* result, const rational_adaptor<IntBackend>& backend)
23866: {
23866: typedef typename component_type<number<rational_adaptor<IntBackend> > >::type comp_t;
23866: comp_t num(backend.data().numerator());
23866: comp_t denom(backend.data().denominator());
23866: *result = num.template convert_to<R>();
23866: *result /= denom.template convert_to<R>();
23866: }
23866:
23866: template <class R, class IntBackend>
23866: inline typename enable_if_c<number_category<R>::value == number_kind_integer>::type eval_convert_to(R* result, const rational_adaptor<IntBackend>& backend)
23866: {
23866: typedef typename component_type<number<rational_adaptor<IntBackend> > >::type comp_t;
23866: comp_t t = backend.data().numerator();
23866: t /= backend.data().denominator();
23866: *result = t.template convert_to<R>();
23866: }
23866:
23866: template <class IntBackend>
23866: inline bool eval_is_zero(const rational_adaptor<IntBackend>& val)
23866: {
23866: using default_ops::eval_is_zero;
23866: return eval_is_zero(val.data().numerator().backend());
23866: }
23866: template <class IntBackend>
23866: inline int eval_get_sign(const rational_adaptor<IntBackend>& val)
23866: {
23866: using default_ops::eval_get_sign;
23866: return eval_get_sign(val.data().numerator().backend());
23866: }
23866:
23866: template <class IntBackend, class V>
23866: inline void assign_components(rational_adaptor<IntBackend>& result, const V& v1, const V& v2)
23866: {
23866: result.data().assign(v1, v2);
23866: }
23866:
23866: template <class IntBackend>
23866: inline std::size_t hash_value(const rational_adaptor<IntBackend>& val)
23866: {
23866: std::size_t result = hash_value(val.data().numerator());
23866: boost::hash_combine(result, val.data().denominator());
23866: return result;
23866: }
23866:
23866: }
23866:
23866: template <class IntBackend>
23866: struct expression_template_default<backends::rational_adaptor<IntBackend> > : public expression_template_default<IntBackend>
23866: {};
23866:
23866: template <class IntBackend>
23866: struct number_category<backends::rational_adaptor<IntBackend> > : public mpl::int_<number_kind_rational>
23866: {};
23866:
23866: using boost::multiprecision::backends::rational_adaptor;
23866:
23866: template <class Backend, expression_template_option ExpressionTemplates>
23866: struct component_type<number<backends::rational_adaptor<Backend>, ExpressionTemplates> >
23866: {
23866: typedef number<Backend, ExpressionTemplates> type;
23866: };
23866:
23866: template <class IntBackend, expression_template_option ET>
23866: inline number<IntBackend, ET> numerator(const number<rational_adaptor<IntBackend>, ET>& val)
23866: {
23866: return val.backend().data().numerator();
23866: }
23866: template <class IntBackend, expression_template_option ET>
23866: inline number<IntBackend, ET> denominator(const number<rational_adaptor<IntBackend>, ET>& val)
23866: {
23866: return val.backend().data().denominator();
23866: }
23866: # 334 "/usr/include/boost/multiprecision/rational_adaptor.hpp" 3 4
23866: }}
23866:
23866: namespace std {
23866:
23866: template <class IntBackend, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: class numeric_limits<boost::multiprecision::number<boost::multiprecision::rational_adaptor<IntBackend>, ExpressionTemplates> > : public std::numeric_limits<boost::multiprecision::number<IntBackend, ExpressionTemplates> >
23866: {
23866: typedef std::numeric_limits<boost::multiprecision::number<IntBackend> > base_type;
23866: typedef boost::multiprecision::number<boost::multiprecision::rational_adaptor<IntBackend> > number_type;
23866:
23866: public:
23866: static constexpr bool is_integer = false;
23866: static constexpr bool is_exact = true;
23866: static constexpr number_type(min)() { return (base_type::min)(); }
23866: static constexpr number_type(max)() { return (base_type::max)(); }
23866: static constexpr number_type lowest() { return -(max)(); }
23866: static constexpr number_type epsilon() { return base_type::epsilon(); }
23866: static constexpr number_type round_error() { return epsilon() / 2; }
23866: static constexpr number_type infinity() { return base_type::infinity(); }
23866: static constexpr number_type quiet_NaN() { return base_type::quiet_NaN(); }
23866: static constexpr number_type signaling_NaN() { return base_type::signaling_NaN(); }
23866: static constexpr number_type denorm_min() { return base_type::denorm_min(); }
23866: };
23866:
23866:
23866:
23866: template <class IntBackend, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::rational_adaptor<IntBackend>, ExpressionTemplates> >::is_integer;
23866: template <class IntBackend, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::rational_adaptor<IntBackend>, ExpressionTemplates> >::is_exact;
23866:
23866:
23866:
23866: }
23866: # 21 "/usr/include/boost/multiprecision/cpp_int.hpp" 2 3 4
23866: # 1 "/usr/include/boost/multiprecision/traits/is_byte_container.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_IS_BYTE_CONTAINER_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost { namespace multiprecision { namespace detail {
23866:
23866: template< typename T, typename fallback_ = boost::mpl::bool_<false> > struct has_member_const_iterator { struct gcc_3_2_wknd { template< typename U > static boost::mpl::aux::yes_tag test( boost::mpl::aux::type_wrapper<U> const volatile* , boost::mpl::aux::type_wrapper<typename U::const_iterator>* = 0 ); static boost::mpl::aux::no_tag test(...); }; typedef boost::mpl::aux::type_wrapper<T> t_; static const bool value = sizeof(gcc_3_2_wknd::test(static_cast<t_*>(0))) == sizeof(boost::mpl::aux::yes_tag); typedef boost::mpl::bool_<value> type; };
23866:
23866: template <class C, bool b>
23866: struct is_byte_container_imp
23866: {
23866:
23866: typedef typename boost::remove_cv<typename std::iterator_traits<typename C::const_iterator>::value_type>::type container_value_type;
23866: static const bool value = boost::is_integral<container_value_type>::value && (sizeof(container_value_type) == 1);
23866: };
23866:
23866: template <class C>
23866: struct is_byte_container_imp<C, false> : public boost::false_type
23866: {};
23866:
23866: template <class C>
23866: struct is_byte_container : public is_byte_container_imp<C, has_member_const_iterator<C>::value>
23866: {};
23866:
23866: }}}
23866: # 22 "/usr/include/boost/multiprecision/cpp_int.hpp" 2 3 4
23866: # 1 "/usr/include/boost/predef/other/endian.h" 1 3 4
23866: # 195 "/usr/include/boost/predef/other/endian.h" 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 23 "/usr/include/boost/multiprecision/cpp_int.hpp" 2 3 4
23866: # 1 "/usr/include/boost/integer/static_min_max.hpp" 1 3 4
23866: # 11 "/usr/include/boost/integer/static_min_max.hpp" 3 4
23866: #define BOOST_INTEGER_STATIC_MIN_MAX_HPP
23866:
23866:
23866:
23866:
23866: namespace boost
23866: {
23866:
23866:
23866:
23866:
23866: template <static_min_max_signed_type Value1, static_min_max_signed_type Value2>
23866: struct static_signed_min
23866: {
23866: static const static_min_max_signed_type value = (Value1 > Value2) ? Value2 : Value1;
23866: };
23866:
23866: template <static_min_max_signed_type Value1, static_min_max_signed_type Value2>
23866: struct static_signed_max
23866: {
23866: static const static_min_max_signed_type value = (Value1 < Value2) ? Value2 : Value1;
23866: };
23866:
23866: template <static_min_max_unsigned_type Value1, static_min_max_unsigned_type Value2>
23866: struct static_unsigned_min
23866: {
23866: static const static_min_max_unsigned_type value = (Value1 > Value2) ? Value2 : Value1
23866: ;
23866: };
23866:
23866: template <static_min_max_unsigned_type Value1, static_min_max_unsigned_type Value2>
23866: struct static_unsigned_max
23866: {
23866: static const static_min_max_unsigned_type value = (Value1 < Value2) ? Value2 : Value1
23866: ;
23866: };
23866:
23866:
23866: }
23866: # 24 "/usr/include/boost/multiprecision/cpp_int.hpp" 2 3 4
23866: # 1 "/usr/include/boost/type_traits/common_type.hpp" 1 3 4
23866:
23866: #define BOOST_TYPE_TRAITS_COMMON_TYPE_HPP_INCLUDED
23866: # 26 "/usr/include/boost/type_traits/common_type.hpp" 3 4
23866: # 1 "/usr/include/boost/type_traits/detail/mp_defer.hpp" 1 3 4
23866:
23866: #define BOOST_TYPE_TRAITS_DETAIL_MP_DEFER_HPP_INCLUDED
23866: # 15 "/usr/include/boost/type_traits/detail/mp_defer.hpp" 3 4
23866: namespace boost
23866: {
23866:
23866: namespace type_traits_detail
23866: {
23866:
23866:
23866:
23866:
23866: template<template<class...> class F, class... T>
23866: struct mp_valid_impl
23866: {
23866: template<template<class...> class G, class = G<T...>>
23866: static boost::true_type check_s(int);
23866:
23866: template<template<class...> class>
23866: static boost::false_type check_s(...);
23866:
23866: using type = decltype(check_s<F>(0));
23866: };
23866:
23866: template<template<class...> class F, class... T>
23866: using mp_valid = typename mp_valid_impl<F, T...>::type;
23866:
23866:
23866:
23866: struct mp_empty
23866: {
23866: };
23866:
23866: template<template<class...> class F, class... T> struct mp_defer_impl
23866: {
23866: using type = F<T...>;
23866: };
23866:
23866: template<template<class...> class F, class... T> using mp_defer = typename boost::conditional<mp_valid<F, T...>::value, mp_defer_impl<F, T...>, mp_empty>::type;
23866:
23866: }
23866:
23866: }
23866: # 27 "/usr/include/boost/type_traits/common_type.hpp" 2 3 4
23866:
23866:
23866: namespace boost
23866: {
23866:
23866:
23866:
23866:
23866:
23866: template<class... T> struct common_type
23866: {
23866: };
23866:
23866:
23866:
23866: template<class... T> using common_type_t = typename common_type<T...>::type;
23866:
23866: namespace type_traits_detail
23866: {
23866:
23866: template<class T1, class T2, class... T> using common_type_fold = common_type_t<common_type_t<T1, T2>, T...>;
23866:
23866: }
23866:
23866: template<class T1, class T2, class... T>
23866: struct common_type<T1, T2, T...>: type_traits_detail::mp_defer<type_traits_detail::common_type_fold, T1, T2, T...>
23866: {
23866: };
23866: # 80 "/usr/include/boost/type_traits/common_type.hpp" 3 4
23866: template<class T> struct common_type<T>: boost::decay<T>
23866: {
23866: static_assert(::boost::is_complete<T>::value || ::boost::is_void<T>::value || ::boost::is_array<T>::value, "Arguments to common_type must both be complete types");
23866: };
23866:
23866:
23866:
23866: namespace type_traits_detail
23866: {
23866: # 100 "/usr/include/boost/type_traits/common_type.hpp" 3 4
23866: template<class T1, class T2> using builtin_common_type = typename boost::decay<decltype( boost::declval<bool>()? boost::declval<T1>(): boost::declval<T2>() )>::type;
23866:
23866: template<class T1, class T2> struct common_type_impl: mp_defer<builtin_common_type, T1, T2>
23866: {
23866: };
23866: # 134 "/usr/include/boost/type_traits/common_type.hpp" 3 4
23866: template<class T1, class T2, class T1d = typename boost::decay<T1>::type, class T2d = typename boost::decay<T2>::type> struct common_type_decay_helper: boost::common_type<T1d, T2d>
23866: {
23866: };
23866:
23866: template<class T1, class T2> struct common_type_decay_helper<T1, T2, T1, T2>: common_type_impl<T1, T2>
23866: {
23866: };
23866:
23866: }
23866:
23866: template<class T1, class T2> struct common_type<T1, T2>: type_traits_detail::common_type_decay_helper<T1, T2>
23866: {
23866: static_assert(::boost::is_complete<T1>::value || ::boost::is_void<T1>::value || ::boost::is_array<T1>::value, "Arguments to common_type must both be complete types");
23866: static_assert(::boost::is_complete<T2>::value || ::boost::is_void<T2>::value || ::boost::is_array<T2>::value, "Arguments to common_type must both be complete types");
23866: };
23866:
23866: }
23866: # 25 "/usr/include/boost/multiprecision/cpp_int.hpp" 2 3 4
23866: # 1 "/usr/include/boost/type_traits/make_signed.hpp" 1 3 4
23866: # 10 "/usr/include/boost/type_traits/make_signed.hpp" 3 4
23866: #define BOOST_TT_MAKE_SIGNED_HPP_INCLUDED
23866: # 25 "/usr/include/boost/type_traits/make_signed.hpp" 3 4
23866: namespace boost {
23866:
23866: template <class T>
23866: struct make_signed
23866: {
23866: private:
23866: static_assert(( ::boost::is_integral<T>::value || ::boost::is_enum<T>::value), "The template argument to make_signed must be an integer or enum type.");
23866: static_assert(!(::boost::is_same<typename remove_cv<T>::type, bool>::value), "The template argument to make_signed must not be the type bool.");
23866:
23866: typedef typename remove_cv<T>::type t_no_cv;
23866: typedef typename conditional<
23866: (::boost::is_signed<T>::value
23866: && ::boost::is_integral<T>::value
23866: && ! ::boost::is_same<t_no_cv, char>::value
23866: && ! ::boost::is_same<t_no_cv, wchar_t>::value
23866: && ! ::boost::is_same<t_no_cv, bool>::value),
23866: T,
23866: typename conditional<
23866: (::boost::is_integral<T>::value
23866: && ! ::boost::is_same<t_no_cv, char>::value
23866: && ! ::boost::is_same<t_no_cv, wchar_t>::value
23866: && ! ::boost::is_same<t_no_cv, bool>::value),
23866: typename conditional<
23866: is_same<t_no_cv, unsigned char>::value,
23866: signed char,
23866: typename conditional<
23866: is_same<t_no_cv, unsigned short>::value,
23866: signed short,
23866: typename conditional<
23866: is_same<t_no_cv, unsigned int>::value,
23866: int,
23866: typename conditional<
23866: is_same<t_no_cv, unsigned long>::value,
23866: long,
23866: # 67 "/usr/include/boost/type_traits/make_signed.hpp" 3 4
23866: boost::long_long_type
23866:
23866:
23866:
23866:
23866:
23866:
23866: >::type
23866: >::type
23866: >::type
23866: >::type,
23866:
23866: typename conditional<
23866: sizeof(t_no_cv) == sizeof(unsigned char),
23866: signed char,
23866: typename conditional<
23866: sizeof(t_no_cv) == sizeof(unsigned short),
23866: signed short,
23866: typename conditional<
23866: sizeof(t_no_cv) == sizeof(unsigned int),
23866: int,
23866: typename conditional<
23866: sizeof(t_no_cv) == sizeof(unsigned long),
23866: long,
23866: # 99 "/usr/include/boost/type_traits/make_signed.hpp" 3 4
23866: boost::long_long_type
23866:
23866:
23866:
23866:
23866:
23866:
23866: >::type
23866: >::type
23866: >::type
23866: >::type
23866: >::type
23866: >::type base_integer_type;
23866:
23866:
23866: typedef typename conditional<
23866: is_const<T>::value,
23866: typename add_const<base_integer_type>::type,
23866: base_integer_type
23866: >::type const_base_integer_type;
23866: public:
23866:
23866: typedef typename conditional<
23866: is_volatile<T>::value,
23866: typename add_volatile<const_base_integer_type>::type,
23866: const_base_integer_type
23866: >::type type;
23866: };
23866:
23866:
23866:
23866: template <class T> using make_signed_t = typename make_signed<T>::type;
23866:
23866:
23866:
23866: }
23866: # 26 "/usr/include/boost/multiprecision/cpp_int.hpp" 2 3 4
23866: # 1 "/usr/include/boost/multiprecision/cpp_int/checked.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MP_CPP_INT_CHECKED_HPP
23866:
23866: namespace boost { namespace multiprecision { namespace backends { namespace detail {
23866:
23866:
23866:
23866:
23866:
23866:
23866: inline void raise_overflow(std::string op)
23866: {
23866: ::boost::throw_exception(std::overflow_error("overflow in " + op), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int/checked.hpp", 18, __PRETTY_FUNCTION__));
23866: }
23866: inline void raise_add_overflow()
23866: {
23866: raise_overflow("addition");
23866: }
23866: inline void raise_subtract_overflow()
23866: {
23866: ::boost::throw_exception(std::range_error("Subtraction resulted in a negative value, but the type is unsigned"), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int/checked.hpp", 26, __PRETTY_FUNCTION__));
23866: }
23866: inline void raise_mul_overflow()
23866: {
23866: raise_overflow("multiplication");
23866: }
23866: inline void raise_div_overflow()
23866: {
23866: raise_overflow("division");
23866: }
23866:
23866: template <class A>
23866: inline constexpr A checked_add_imp(A a, A b, const mpl::true_&)
23866: {
23866: if (a > 0)
23866: {
23866: if ((b > 0) && ((integer_traits<A>::const_max - b) < a))
23866: raise_add_overflow();
23866: }
23866: else
23866: {
23866: if ((b < 0) && ((integer_traits<A>::const_min - b) > a))
23866: raise_add_overflow();
23866: }
23866: return a + b;
23866: }
23866: template <class A>
23866: inline constexpr A checked_add_imp(A a, A b, const mpl::false_&)
23866: {
23866: if ((integer_traits<A>::const_max - b) < a)
23866: raise_add_overflow();
23866: return a + b;
23866: }
23866: template <class A>
23866: inline constexpr A checked_add(A a, A b, const mpl::int_<checked>&)
23866: {
23866: return checked_add_imp(a, b, mpl::bool_<boost::is_signed<A>::value>());
23866: }
23866: template <class A>
23866: inline constexpr A checked_add(A a, A b, const mpl::int_<unchecked>&)
23866: {
23866: return a + b;
23866: }
23866:
23866: template <class A>
23866: inline constexpr A checked_subtract_imp(A a, A b, const mpl::true_&)
23866: {
23866: if (a > 0)
23866: {
23866: if ((b < 0) && ((integer_traits<A>::const_max + b) < a))
23866: raise_subtract_overflow();
23866: }
23866: else
23866: {
23866: if ((b > 0) && ((integer_traits<A>::const_min + b) > a))
23866: raise_subtract_overflow();
23866: }
23866: return a - b;
23866: }
23866: template <class A>
23866: inline constexpr A checked_subtract_imp(A a, A b, const mpl::false_&)
23866: {
23866: if (a < b)
23866: raise_subtract_overflow();
23866: return a - b;
23866: }
23866: template <class A>
23866: inline constexpr A checked_subtract(A a, A b, const mpl::int_<checked>&)
23866: {
23866: return checked_subtract_imp(a, b, mpl::bool_<boost::is_signed<A>::value>());
23866: }
23866: template <class A>
23866: inline constexpr A checked_subtract(A a, A b, const mpl::int_<unchecked>&)
23866: {
23866: return a - b;
23866: }
23866:
23866: template <class A>
23866: inline constexpr A checked_multiply(A a, A b, const mpl::int_<checked>&)
23866: {
23866: using boost::multiprecision::detail::abs;
23866: if (a && (integer_traits<A>::const_max / abs(a) < abs(b)))
23866: raise_mul_overflow();
23866: return a * b;
23866: }
23866: template <class A>
23866: inline constexpr A checked_multiply(A a, A b, const mpl::int_<unchecked>&)
23866: {
23866: return a * b;
23866: }
23866:
23866: template <class A>
23866: inline constexpr A checked_divide(A a, A b, const mpl::int_<checked>&)
23866: {
23866: if (b == 0)
23866: raise_div_overflow();
23866: return a / b;
23866: }
23866: template <class A>
23866: inline constexpr A checked_divide(A a, A b, const mpl::int_<unchecked>&)
23866: {
23866: return a / b;
23866: }
23866:
23866: template <class A>
23866: inline constexpr A checked_left_shift(A a, boost::ulong_long_type shift, const mpl::int_<checked>&)
23866: {
23866: if (a && shift)
23866: {
23866: if ((shift > sizeof(A) * 8) || (a >> (sizeof(A) * 8 - shift)))
23866: ::boost::throw_exception(std::overflow_error("Shift out of range"), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int/checked.hpp", 136, __PRETTY_FUNCTION__));
23866: }
23866: return a << shift;
23866: }
23866: template <class A>
23866: inline constexpr A checked_left_shift(A a, boost::ulong_long_type shift, const mpl::int_<unchecked>&)
23866: {
23866: return (shift >= sizeof(A) * 8) ? 0 : a << shift;
23866: }
23866:
23866: }}}}
23866: # 27 "/usr/include/boost/multiprecision/cpp_int.hpp" 2 3 4
23866: # 1 "/usr/include/boost/multiprecision/detail/constexpr.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MP_CONSTEXPR_HPP
23866:
23866:
23866:
23866: namespace boost {
23866:
23866: namespace multiprecision {
23866:
23866: namespace std_constexpr {
23866:
23866: template <class T>
23866: inline constexpr void swap(T& a, T& b)
23866: {
23866: T t(a);
23866: a = b;
23866: b = t;
23866: }
23866:
23866: template <class InputIterator, class OutputIterator>
23866: inline constexpr OutputIterator copy(InputIterator first, InputIterator last, OutputIterator result)
23866: {
23866: while (first != last)
23866: {
23866: *result = *first;
23866: ++first;
23866: ++result;
23866: }
23866: return result;
23866: }
23866:
23866: template <class I>
23866: inline constexpr bool equal(const I* first, const I* last, const I* other)
23866: {
23866: while (first != last)
23866: {
23866: if (*first != *other)
23866: return false;
23866: ++first;
23866: ++other;
23866: }
23866: return true;
23866: }
23866:
23866: }
23866:
23866: }
23866:
23866: }
23866: # 28 "/usr/include/boost/multiprecision/cpp_int.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/multiprecision/cpp_int/value_pack.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MP_CPP_INT_VP_HPP
23866:
23866: namespace boost {
23866: namespace multiprecision {
23866:
23866: namespace literals { namespace detail {
23866:
23866: template <limb_type... VALUES>
23866: struct value_pack
23866: {
23866: constexpr value_pack() {}
23866:
23866: typedef value_pack<0, VALUES...> next_type;
23866: };
23866: template <class T>
23866: struct is_value_pack
23866: {
23866: static constexpr bool value = false;
23866: };
23866: template <limb_type... VALUES>
23866: struct is_value_pack<value_pack<VALUES...> >
23866: {
23866: static constexpr bool value = true;
23866: };
23866:
23866: struct negate_tag
23866: {};
23866:
23866: constexpr negate_tag make_negate_tag()
23866: {
23866: return negate_tag();
23866: }
23866:
23866: }}}}
23866: # 30 "/usr/include/boost/multiprecision/cpp_int.hpp" 2 3 4
23866:
23866:
23866: namespace boost {
23866: namespace multiprecision {
23866: namespace backends {
23866:
23866: using boost::enable_if;
23866: # 45 "/usr/include/boost/multiprecision/cpp_int.hpp" 3 4
23866: template <unsigned MinBits = 0, unsigned MaxBits = 0, boost::multiprecision::cpp_integer_type SignType = signed_magnitude, cpp_int_check_type Checked = unchecked, class Allocator = typename mpl::if_c<MinBits && (MinBits == MaxBits), void, std::allocator<limb_type> >::type>
23866: struct cpp_int_backend;
23866:
23866: }
23866:
23866: namespace detail {
23866:
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, cpp_int_check_type Checked, class Allocator>
23866: struct is_byte_container<backends::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> > : public boost::false_type
23866: {};
23866:
23866: }
23866:
23866: namespace backends {
23866:
23866: template <unsigned MinBits, unsigned MaxBits, cpp_integer_type SignType, cpp_int_check_type Checked, class Allocator, bool trivial = false>
23866: struct cpp_int_base;
23866:
23866:
23866:
23866: template <class T>
23866: struct max_precision;
23866:
23866: template <unsigned MinBits, unsigned MaxBits, cpp_integer_type SignType, cpp_int_check_type Checked, class Allocator>
23866: struct max_precision<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> >
23866: {
23866: static const unsigned value = is_void<Allocator>::value ? static_unsigned_max<MinBits, MaxBits>::value
23866: : (((MaxBits >= MinBits) && MaxBits) ? MaxBits : (0x7fffffff * 2U + 1U));
23866: };
23866:
23866: template <class T>
23866: struct min_precision;
23866:
23866: template <unsigned MinBits, unsigned MaxBits, cpp_integer_type SignType, cpp_int_check_type Checked, class Allocator>
23866: struct min_precision<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> >
23866: {
23866: static const unsigned value = (is_void<Allocator>::value ? static_unsigned_max<MinBits, MaxBits>::value : MinBits);
23866: };
23866:
23866:
23866:
23866:
23866: template <class T>
23866: struct is_trivial_cpp_int
23866: {
23866: static const bool value = false;
23866: };
23866:
23866: template <unsigned MinBits, unsigned MaxBits, cpp_integer_type SignType, cpp_int_check_type Checked, class Allocator>
23866: struct is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> >
23866: {
23866: typedef cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> self;
23866: static const bool value = is_void<Allocator>::value && (max_precision<self>::value <= (sizeof(double_limb_type) * 8) - (SignType == signed_packed ? 1 : 0));
23866: };
23866:
23866: template <unsigned MinBits, unsigned MaxBits, cpp_integer_type SignType, cpp_int_check_type Checked, class Allocator>
23866: struct is_trivial_cpp_int<cpp_int_base<MinBits, MaxBits, SignType, Checked, Allocator, true> >
23866: {
23866: static const bool value = true;
23866: };
23866:
23866: }
23866:
23866:
23866:
23866: template <unsigned MinBits, unsigned MaxBits, cpp_integer_type SignType, cpp_int_check_type Checked, class Allocator>
23866: struct is_unsigned_number<backends::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> >
23866: : public mpl::bool_<(SignType == unsigned_magnitude) || (SignType == unsigned_packed)>
23866: {};
23866:
23866: namespace backends {
23866:
23866:
23866:
23866:
23866:
23866: template <class T, class U>
23866: struct is_implicit_cpp_int_conversion;
23866:
23866: template <unsigned MinBits, unsigned MaxBits, cpp_integer_type SignType, cpp_int_check_type Checked, class Allocator, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: struct is_implicit_cpp_int_conversion<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >
23866: {
23866: typedef cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> t1;
23866: typedef cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> t2;
23866: static const bool value =
23866: (is_signed_number<t2>::value || !is_signed_number<t1>::value) && (max_precision<t1>::value <= max_precision<t2>::value);
23866: };
23866:
23866:
23866:
23866:
23866: template <class T>
23866: struct is_non_throwing_cpp_int : public mpl::false_
23866: {};
23866: template <unsigned MinBits, unsigned MaxBits, cpp_integer_type SignType>
23866: struct is_non_throwing_cpp_int<cpp_int_backend<MinBits, MaxBits, SignType, unchecked, void> > : public mpl::true_
23866: {};
23866:
23866:
23866:
23866:
23866: template <class T>
23866: struct is_fixed_precision;
23866: template <unsigned MinBits, unsigned MaxBits, cpp_integer_type SignType, cpp_int_check_type Checked, class Allocator>
23866: struct is_fixed_precision<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> >
23866: : public mpl::bool_<max_precision<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> >::value != (0x7fffffff * 2U + 1U)>
23866: {};
23866:
23866: namespace detail {
23866:
23866: inline constexpr void verify_new_size(unsigned new_size, unsigned min_size, const mpl::int_<checked>&)
23866: {
23866: if (new_size < min_size)
23866: ::boost::throw_exception(std::overflow_error("Unable to allocate sufficient storage for the value of the result: value overflows the maximum allowable magnitude."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int.hpp", 158, __PRETTY_FUNCTION__));
23866: }
23866: inline constexpr void verify_new_size(unsigned , unsigned , const mpl::int_<unchecked>&) {}
23866:
23866: template <class U>
23866: inline constexpr void verify_limb_mask(bool b, U limb, U mask, const mpl::int_<checked>&)
23866: {
23866:
23866: if (b && (limb & ~mask))
23866: ::boost::throw_exception(std::overflow_error("Overflow in cpp_int arithmetic: there is insufficient precision in the target type to hold all of the bits of the result."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int.hpp", 167, __PRETTY_FUNCTION__));
23866: }
23866: template <class U>
23866: inline constexpr void verify_limb_mask(bool , U , U , const mpl::int_<unchecked>&) {}
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class Allocator>
23866: struct cpp_int_base<MinBits, MaxBits, signed_magnitude, Checked, Allocator, false>
23866: : private boost::empty_value<typename detail::rebind<limb_type, Allocator>::type>
23866: {
23866: typedef typename detail::rebind<limb_type, Allocator>::type allocator_type;
23866:
23866:
23866:
23866:
23866: typedef typename std::allocator_traits<allocator_type>::pointer limb_pointer;
23866: typedef typename std::allocator_traits<allocator_type>::const_pointer const_limb_pointer;
23866:
23866: typedef mpl::int_<Checked> checked_type;
23866:
23866:
23866:
23866:
23866: static_assert(!is_void<Allocator>::value, "!is_void<Allocator>::value");
23866:
23866: private:
23866: typedef boost::empty_value<allocator_type> base_type;
23866:
23866: struct limb_data
23866: {
23866: unsigned capacity;
23866: limb_pointer data;
23866: };
23866:
23866: public:
23866: static const unsigned limb_bits = sizeof(limb_type) * 8;
23866: static const limb_type max_limb_value = ~static_cast<limb_type>(0u);
23866: static const limb_type sign_bit_mask = static_cast<limb_type>(1u) << (limb_bits - 1);
23866: static const unsigned internal_limb_count = MinBits ? (MinBits / limb_bits + ((MinBits % limb_bits) ? 1 : 0)) : (sizeof(limb_data) / sizeof(limb_type)) > 1 ? (sizeof(limb_data) / sizeof(limb_type)) : 2
23866:
23866:
23866: ;
23866: private:
23866: union data_type
23866: {
23866: limb_data ld;
23866: limb_type la[internal_limb_count];
23866: limb_type first;
23866: double_limb_type double_first;
23866:
23866: constexpr data_type() noexcept : first(0) {}
23866: constexpr data_type(limb_type i) noexcept : first(i) {}
23866: constexpr data_type(signed_limb_type i) noexcept : first(i < 0 ? static_cast<limb_type>(boost::multiprecision::detail::unsigned_abs(i)) : i) {}
23866:
23866: constexpr data_type(double_limb_type i) noexcept : double_first(i)
23866: {}
23866: constexpr data_type(signed_double_limb_type i) noexcept : double_first(i < 0 ? static_cast<double_limb_type>(boost::multiprecision::detail::unsigned_abs(i)) : i) {}
23866:
23866:
23866: constexpr data_type(limb_type* limbs, unsigned len) noexcept : ld{ len, limbs }
23866: {}
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: };
23866:
23866: data_type m_data;
23866: unsigned m_limbs;
23866: bool m_sign, m_internal, m_alias;
23866:
23866: public:
23866:
23866:
23866:
23866: inline constexpr cpp_int_base(limb_type i) noexcept
23866: : m_data(i),
23866: m_limbs(1),
23866: m_sign(false),
23866: m_internal(true),
23866: m_alias(false) {}
23866: inline constexpr cpp_int_base(signed_limb_type i) noexcept
23866: : m_data(i),
23866: m_limbs(1),
23866: m_sign(i < 0),
23866: m_internal(true),
23866: m_alias(false) {}
23866:
23866: inline constexpr cpp_int_base(double_limb_type i) noexcept
23866: : m_data(i),
23866: m_limbs(i > max_limb_value ? 2 : 1),
23866: m_sign(false),
23866: m_internal(true),
23866: m_alias(false)
23866: {}
23866: inline constexpr cpp_int_base(signed_double_limb_type i) noexcept
23866: : m_data(i),
23866: m_limbs(i < 0 ? (static_cast<double_limb_type>(boost::multiprecision::detail::unsigned_abs(i)) > static_cast<double_limb_type>(max_limb_value) ? 2 : 1) : (i > max_limb_value ? 2 : 1)),
23866: m_sign(i < 0),
23866: m_internal(true),
23866: m_alias(false) {}
23866:
23866:
23866:
23866:
23866: struct scoped_shared_storage : private boost::empty_value<allocator_type>
23866: {
23866: private:
23866: limb_type* data;
23866: unsigned capacity;
23866: unsigned allocated;
23866: bool is_alias;
23866: allocator_type& allocator() noexcept { return boost::empty_value<allocator_type>::get(); }
23866:
23866: public:
23866: scoped_shared_storage(const allocator_type& a, unsigned len)
23866: : boost::empty_value<allocator_type>(boost::empty_init_t(), a), capacity(len), allocated(0), is_alias(false)
23866: {
23866: data = allocator().allocate(len);
23866: }
23866: scoped_shared_storage(limb_type* limbs, unsigned n) : data(limbs), capacity(n), allocated(0), is_alias(true) {}
23866: ~scoped_shared_storage()
23866: {
23866: if(!is_alias)
23866: allocator().deallocate(data, capacity);
23866: }
23866: limb_type* allocate(unsigned n) noexcept
23866: {
23866: limb_type* result = data + allocated;
23866: allocated += n;
23866: (static_cast <bool> (allocated <= capacity) ? void (0) : __assert_fail ("allocated <= capacity", "/usr/include/boost/multiprecision/cpp_int.hpp", 305, __extension__ __PRETTY_FUNCTION__));
23866: return result;
23866: }
23866: void deallocate(unsigned n)
23866: {
23866: (static_cast <bool> (n <= allocated) ? void (0) : __assert_fail ("n <= allocated", "/usr/include/boost/multiprecision/cpp_int.hpp", 310, __extension__ __PRETTY_FUNCTION__));
23866: allocated -= n;
23866: }
23866: };
23866: explicit constexpr cpp_int_base(limb_type* data, unsigned offset, unsigned len) noexcept
23866: : m_data(data + offset, len),
23866: m_limbs(len),
23866: m_sign(false),
23866: m_internal(false),
23866: m_alias(true) {}
23866:
23866:
23866:
23866: explicit constexpr cpp_int_base(const limb_type* data, unsigned offset, unsigned len) noexcept
23866: : m_data(const_cast<limb_type*>(data) + offset, len),
23866: m_limbs(len),
23866: m_sign(false),
23866: m_internal(false),
23866: m_alias(true) {}
23866: explicit constexpr cpp_int_base(scoped_shared_storage& data, unsigned len) noexcept
23866: : m_data(data.allocate(len), len),
23866: m_limbs(len),
23866: m_sign(false),
23866: m_internal(false),
23866: m_alias(true) {}
23866:
23866:
23866:
23866: inline allocator_type& allocator() noexcept { return base_type::get(); }
23866: inline const allocator_type& allocator() const noexcept { return base_type::get(); }
23866: inline unsigned size() const noexcept { return m_limbs; }
23866: inline limb_pointer limbs() noexcept { return m_internal ? m_data.la : m_data.ld.data; }
23866: inline const_limb_pointer limbs() const noexcept { return m_internal ? m_data.la : m_data.ld.data; }
23866: inline unsigned capacity() const noexcept { return m_internal ? internal_limb_count : m_data.ld.capacity; }
23866: inline bool sign() const noexcept { return m_sign; }
23866: void sign(bool b) noexcept
23866: {
23866: m_sign = b;
23866:
23866: if (m_sign && (m_limbs == 1))
23866: {
23866: if (limbs()[0] == 0)
23866: m_sign = false;
23866: }
23866: }
23866: void resize(unsigned new_size, unsigned min_size)
23866: {
23866: static const unsigned max_limbs = MaxBits / (8 * sizeof(limb_type)) + ((MaxBits % (8 * sizeof(limb_type))) ? 1 : 0);
23866:
23866: if (new_size > max_limbs)
23866: new_size = max_limbs;
23866: detail::verify_new_size(new_size, min_size, checked_type());
23866:
23866: unsigned cap = capacity();
23866: if (new_size > cap)
23866: {
23866:
23866: (static_cast <bool> (!m_alias) ? void (0) : __assert_fail ("!m_alias", "/usr/include/boost/multiprecision/cpp_int.hpp", 367, __extension__ __PRETTY_FUNCTION__));
23866:
23866: cap = (std::min)((std::max)(cap * 4, new_size), max_limbs);
23866: limb_pointer pl = allocator().allocate(cap);
23866: std::memcpy(pl, limbs(), size() * sizeof(limbs()[0]));
23866: if (!m_internal && !m_alias)
23866: allocator().deallocate(limbs(), capacity());
23866: else
23866: m_internal = false;
23866: m_limbs = new_size;
23866: m_data.ld.capacity = cap;
23866: m_data.ld.data = pl;
23866: }
23866: else
23866: {
23866: m_limbs = new_size;
23866: }
23866: }
23866: inline void normalize() noexcept
23866: {
23866: limb_pointer p = limbs();
23866: while ((m_limbs - 1) && !p[m_limbs - 1])
23866: --m_limbs;
23866: }
23866: inline constexpr cpp_int_base() noexcept : m_data(), m_limbs(1), m_sign(false), m_internal(true), m_alias(false){}
23866: inline cpp_int_base(const cpp_int_base& o) : base_type(o), m_limbs(o.m_alias ? o.m_limbs : 0), m_sign(o.m_sign), m_internal(o.m_alias ? false : true), m_alias(o.m_alias)
23866: {
23866: if (m_alias)
23866: {
23866: m_data.ld = o.m_data.ld;
23866: }
23866: else
23866: {
23866: resize(o.size(), o.size());
23866: std::memcpy(limbs(), o.limbs(), o.size() * sizeof(limbs()[0]));
23866: }
23866: }
23866:
23866: cpp_int_base(cpp_int_base&& o)
23866: : base_type(static_cast<base_type&&>(o)), m_limbs(o.m_limbs), m_sign(o.m_sign), m_internal(o.m_internal), m_alias(o.m_alias)
23866: {
23866: if (m_internal)
23866: {
23866: std::memcpy(limbs(), o.limbs(), o.size() * sizeof(limbs()[0]));
23866: }
23866: else
23866: {
23866: m_data.ld = o.m_data.ld;
23866: o.m_limbs = 0;
23866: o.m_internal = true;
23866: }
23866: }
23866: cpp_int_base& operator=(cpp_int_base&& o) noexcept
23866: {
23866: if (!m_internal && !m_alias)
23866: allocator().deallocate(m_data.ld.data, m_data.ld.capacity);
23866: *static_cast<base_type*>(this) = static_cast<base_type&&>(o);
23866: m_limbs = o.m_limbs;
23866: m_sign = o.m_sign;
23866: m_internal = o.m_internal;
23866: m_alias = o.m_alias;
23866: if (m_internal)
23866: {
23866: std::memcpy(limbs(), o.limbs(), o.size() * sizeof(limbs()[0]));
23866: }
23866: else
23866: {
23866: m_data.ld = o.m_data.ld;
23866: o.m_limbs = 0;
23866: o.m_internal = true;
23866: }
23866: return *this;
23866: }
23866:
23866: inline ~cpp_int_base() noexcept
23866: {
23866: if (!m_internal && !m_alias)
23866: allocator().deallocate(limbs(), capacity());
23866: }
23866: void assign(const cpp_int_base& o)
23866: {
23866: if (this != &o)
23866: {
23866: static_cast<base_type&>(*this) = static_cast<const base_type&>(o);
23866: m_limbs = 0;
23866: resize(o.size(), o.size());
23866: std::memcpy(limbs(), o.limbs(), o.size() * sizeof(limbs()[0]));
23866: m_sign = o.m_sign;
23866: }
23866: }
23866: inline void negate() noexcept
23866: {
23866: m_sign = !m_sign;
23866:
23866: if (m_sign && (m_limbs == 1))
23866: {
23866: if (limbs()[0] == 0)
23866: m_sign = false;
23866: }
23866: }
23866: inline bool isneg() const noexcept
23866: {
23866: return m_sign;
23866: }
23866: inline void do_swap(cpp_int_base& o) noexcept
23866: {
23866: std::swap(m_data, o.m_data);
23866: std::swap(m_sign, o.m_sign);
23866: std::swap(m_internal, o.m_internal);
23866: std::swap(m_limbs, o.m_limbs);
23866: }
23866:
23866: protected:
23866: template <class A>
23866: void check_in_range(const A&) noexcept {}
23866: };
23866:
23866:
23866:
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class Allocator>
23866: const unsigned cpp_int_base<MinBits, MaxBits, signed_magnitude, Checked, Allocator, false>::limb_bits;
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class Allocator>
23866: const limb_type cpp_int_base<MinBits, MaxBits, signed_magnitude, Checked, Allocator, false>::max_limb_value;
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class Allocator>
23866: const limb_type cpp_int_base<MinBits, MaxBits, signed_magnitude, Checked, Allocator, false>::sign_bit_mask;
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class Allocator>
23866: const unsigned cpp_int_base<MinBits, MaxBits, signed_magnitude, Checked, Allocator, false>::internal_limb_count;
23866:
23866:
23866:
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class Allocator>
23866: struct cpp_int_base<MinBits, MaxBits, unsigned_magnitude, Checked, Allocator, false>
23866: : private boost::empty_value<typename detail::rebind<limb_type, Allocator>::type>
23866: {
23866:
23866:
23866:
23866:
23866: static_assert(((sizeof(Allocator) == 0) && !is_void<Allocator>::value), "There is curently no support for unsigned arbitrary precision integers.");
23866: };
23866:
23866:
23866:
23866: template <unsigned MinBits, cpp_int_check_type Checked>
23866: struct cpp_int_base<MinBits, MinBits, signed_magnitude, Checked, void, false>
23866: {
23866: typedef limb_type* limb_pointer;
23866: typedef const limb_type* const_limb_pointer;
23866: typedef mpl::int_<Checked> checked_type;
23866:
23866: struct scoped_shared_storage {};
23866:
23866:
23866:
23866:
23866: static_assert(MinBits > sizeof(double_limb_type) * 8, "Template parameter MinBits is inconsistent with the parameter trivial - did you mistakingly try to override the trivial parameter?");
23866:
23866: public:
23866: static const unsigned limb_bits = sizeof(limb_type) * 8;
23866: static const limb_type max_limb_value = ~static_cast<limb_type>(0u);
23866: static const limb_type sign_bit_mask = static_cast<limb_type>(1u) << (limb_bits - 1);
23866: static const unsigned internal_limb_count = MinBits / limb_bits + ((MinBits % limb_bits) ? 1 : 0);
23866: static const limb_type upper_limb_mask = (MinBits % limb_bits) ? (limb_type(1) << (MinBits % limb_bits)) - 1 : (~limb_type(0));
23866: static_assert(internal_limb_count >= 2, "A fixed precision integer type must have at least 2 limbs");
23866:
23866: private:
23866: union data_type
23866: {
23866: limb_type m_data[internal_limb_count];
23866: limb_type m_first_limb;
23866: double_limb_type m_double_first_limb;
23866:
23866: constexpr data_type()
23866:
23866:
23866:
23866:
23866: : m_data{0}
23866: {}
23866:
23866: constexpr data_type(limb_type i)
23866:
23866:
23866:
23866:
23866: : m_data{i}
23866: {}
23866:
23866:
23866: constexpr data_type(limb_type i, limb_type j) : m_data{i, j}
23866: {}
23866:
23866: constexpr data_type(double_limb_type i) : m_double_first_limb(i)
23866: {
23866:
23866: if (__builtin_is_constant_evaluated())
23866: {
23866: data_type t(static_cast<limb_type>(i & max_limb_value), static_cast<limb_type>(i >> limb_bits));
23866: *this = t;
23866: }
23866:
23866: }
23866:
23866: template <limb_type... VALUES>
23866: constexpr data_type(literals::detail::value_pack<VALUES...>) : m_data{VALUES...}
23866: {}
23866:
23866: } m_wrapper;
23866: boost::uint16_t m_limbs;
23866: bool m_sign;
23866:
23866: public:
23866:
23866:
23866:
23866: inline constexpr cpp_int_base(limb_type i) noexcept
23866: : m_wrapper(i),
23866: m_limbs(1),
23866: m_sign(false) {}
23866: inline constexpr cpp_int_base(signed_limb_type i) noexcept
23866: : m_wrapper(limb_type(i < 0 ? static_cast<limb_type>(-static_cast<signed_double_limb_type>(i)) : i)),
23866: m_limbs(1),
23866: m_sign(i < 0) {}
23866:
23866: inline constexpr cpp_int_base(double_limb_type i) noexcept
23866: : m_wrapper(i),
23866: m_limbs(i > max_limb_value ? 2 : 1),
23866: m_sign(false)
23866: {}
23866: inline constexpr cpp_int_base(signed_double_limb_type i) noexcept
23866: : m_wrapper(double_limb_type(i < 0 ? static_cast<double_limb_type>(boost::multiprecision::detail::unsigned_abs(i)) : i)),
23866: m_limbs(i < 0 ? (static_cast<double_limb_type>(boost::multiprecision::detail::unsigned_abs(i)) > max_limb_value ? 2 : 1) : (i > max_limb_value ? 2 : 1)),
23866: m_sign(i < 0) {}
23866:
23866:
23866: template <limb_type... VALUES>
23866: constexpr cpp_int_base(literals::detail::value_pack<VALUES...> i)
23866: : m_wrapper(i), m_limbs(sizeof...(VALUES)), m_sign(false)
23866: {}
23866: constexpr cpp_int_base(literals::detail::value_pack<> i)
23866: : m_wrapper(i), m_limbs(1), m_sign(false) {}
23866: constexpr cpp_int_base(const cpp_int_base& a, const literals::detail::negate_tag&)
23866: : m_wrapper(a.m_wrapper), m_limbs(a.m_limbs), m_sign((a.m_limbs == 1) && (*a.limbs() == 0) ? false : !a.m_sign) {}
23866:
23866:
23866:
23866:
23866:
23866: constexpr cpp_int_base& operator=(const cpp_int_base&) = default;
23866:
23866:
23866:
23866:
23866: inline constexpr unsigned size() const noexcept { return m_limbs; }
23866: inline constexpr limb_pointer limbs() noexcept { return m_wrapper.m_data; }
23866: inline constexpr const_limb_pointer limbs() const noexcept { return m_wrapper.m_data; }
23866: inline constexpr bool sign() const noexcept { return m_sign; }
23866: inline constexpr void sign(bool b) noexcept
23866: {
23866: m_sign = b;
23866:
23866: if (m_sign && (m_limbs == 1))
23866: {
23866: if (limbs()[0] == 0)
23866: m_sign = false;
23866: }
23866: }
23866: inline constexpr void resize(unsigned new_size, unsigned min_size) noexcept(((Checked == unchecked)))
23866: {
23866: m_limbs = static_cast<boost::uint16_t>((std::min)(new_size, internal_limb_count));
23866: detail::verify_new_size(m_limbs, min_size, checked_type());
23866: }
23866: inline constexpr void normalize() noexcept(((Checked == unchecked)))
23866: {
23866: limb_pointer p = limbs();
23866: detail::verify_limb_mask(m_limbs == internal_limb_count, p[internal_limb_count - 1], upper_limb_mask, checked_type());
23866: p[internal_limb_count - 1] &= upper_limb_mask;
23866: while ((m_limbs - 1) && !p[m_limbs - 1])
23866: --m_limbs;
23866: if ((m_limbs == 1) && (!*p))
23866: m_sign = false;
23866: }
23866:
23866: inline constexpr cpp_int_base() noexcept : m_wrapper(limb_type(0u)), m_limbs(1), m_sign(false) {}
23866:
23866: inline constexpr cpp_int_base(const cpp_int_base& o) noexcept
23866: : m_wrapper(o.m_wrapper),
23866: m_limbs(o.m_limbs),
23866: m_sign(o.m_sign) {}
23866:
23866:
23866:
23866: void constexpr assign(const cpp_int_base& o) noexcept
23866: {
23866: if (this != &o)
23866: {
23866: m_limbs = o.m_limbs;
23866:
23866: if (__builtin_is_constant_evaluated())
23866: {
23866: for (unsigned i = 0; i < m_limbs; ++i)
23866: limbs()[i] = o.limbs()[i];
23866: }
23866: else
23866:
23866: std::memcpy(limbs(), o.limbs(), o.size() * sizeof(o.limbs()[0]));
23866: m_sign = o.m_sign;
23866: }
23866: }
23866: inline constexpr void negate() noexcept
23866: {
23866: m_sign = !m_sign;
23866:
23866: if (m_sign && (m_limbs == 1))
23866: {
23866: if (limbs()[0] == 0)
23866: m_sign = false;
23866: }
23866: }
23866: inline constexpr bool isneg() const noexcept
23866: {
23866: return m_sign;
23866: }
23866: inline constexpr void do_swap(cpp_int_base& o) noexcept
23866: {
23866: for (unsigned i = 0; i < (std::max)(size(), o.size()); ++i)
23866: std_constexpr::swap(m_wrapper.m_data[i], o.m_wrapper.m_data[i]);
23866: std_constexpr::swap(m_sign, o.m_sign);
23866: std_constexpr::swap(m_limbs, o.m_limbs);
23866: }
23866:
23866: protected:
23866: template <class A>
23866: constexpr void check_in_range(const A&) noexcept {}
23866: };
23866:
23866:
23866: template <unsigned MinBits, cpp_int_check_type Checked>
23866: const unsigned cpp_int_base<MinBits, MinBits, signed_magnitude, Checked, void, false>::limb_bits;
23866: template <unsigned MinBits, cpp_int_check_type Checked>
23866: const limb_type cpp_int_base<MinBits, MinBits, signed_magnitude, Checked, void, false>::max_limb_value;
23866: template <unsigned MinBits, cpp_int_check_type Checked>
23866: const limb_type cpp_int_base<MinBits, MinBits, signed_magnitude, Checked, void, false>::sign_bit_mask;
23866: template <unsigned MinBits, cpp_int_check_type Checked>
23866: const unsigned cpp_int_base<MinBits, MinBits, signed_magnitude, Checked, void, false>::internal_limb_count;
23866:
23866:
23866:
23866:
23866:
23866: template <unsigned MinBits, cpp_int_check_type Checked>
23866: struct cpp_int_base<MinBits, MinBits, unsigned_magnitude, Checked, void, false>
23866: {
23866: typedef limb_type* limb_pointer;
23866: typedef const limb_type* const_limb_pointer;
23866: typedef mpl::int_<Checked> checked_type;
23866:
23866: struct scoped_shared_storage {};
23866:
23866:
23866:
23866: static_assert(MinBits > sizeof(double_limb_type) * 8, "Template parameter MinBits is inconsistent with the parameter trivial - did you mistakingly try to override the trivial parameter?");
23866:
23866: public:
23866: static const unsigned limb_bits = sizeof(limb_type) * 8;
23866: static const limb_type max_limb_value = ~static_cast<limb_type>(0u);
23866: static const limb_type sign_bit_mask = static_cast<limb_type>(1u) << (limb_bits - 1);
23866: static const unsigned internal_limb_count = MinBits / limb_bits + ((MinBits % limb_bits) ? 1 : 0);
23866: static const limb_type upper_limb_mask = (MinBits % limb_bits) ? (limb_type(1) << (MinBits % limb_bits)) - 1 : (~limb_type(0));
23866: static_assert(internal_limb_count >= 2, "A fixed precision integer type must have at least 2 limbs");
23866:
23866: private:
23866: union data_type
23866: {
23866: limb_type m_data[internal_limb_count];
23866: limb_type m_first_limb;
23866: double_limb_type m_double_first_limb;
23866:
23866: constexpr data_type()
23866:
23866:
23866:
23866:
23866: : m_data{0}
23866: {}
23866:
23866: constexpr data_type(limb_type i)
23866:
23866:
23866:
23866:
23866: : m_data{i}
23866: {}
23866:
23866:
23866: constexpr data_type(limb_type i, limb_type j) : m_data{i, j}
23866: {}
23866:
23866: constexpr data_type(double_limb_type i) : m_double_first_limb(i)
23866: {
23866:
23866: if (__builtin_is_constant_evaluated())
23866: {
23866: data_type t(static_cast<limb_type>(i & max_limb_value), static_cast<limb_type>(i >> limb_bits));
23866: *this = t;
23866: }
23866:
23866: }
23866:
23866: template <limb_type... VALUES>
23866: constexpr data_type(literals::detail::value_pack<VALUES...>) : m_data{VALUES...}
23866: {}
23866:
23866: } m_wrapper;
23866: limb_type m_limbs;
23866:
23866: public:
23866:
23866:
23866:
23866: inline constexpr cpp_int_base(limb_type i) noexcept
23866: : m_wrapper(i),
23866: m_limbs(1) {}
23866: inline constexpr cpp_int_base(signed_limb_type i) noexcept(((Checked == unchecked)))
23866: : m_wrapper(limb_type(i < 0 ? static_cast<limb_type>(-static_cast<signed_double_limb_type>(i)) : i)), m_limbs(1)
23866: {
23866: if (i < 0)
23866: negate();
23866: }
23866:
23866: inline constexpr cpp_int_base(double_limb_type i) noexcept
23866: : m_wrapper(i),
23866: m_limbs(i > max_limb_value ? 2 : 1)
23866: {}
23866: inline constexpr cpp_int_base(signed_double_limb_type i) noexcept(((Checked == unchecked)))
23866: : m_wrapper(double_limb_type(i < 0 ? static_cast<double_limb_type>(boost::multiprecision::detail::unsigned_abs(i)) : i)),
23866: m_limbs(i < 0 ? (static_cast<double_limb_type>(boost::multiprecision::detail::unsigned_abs(i)) > max_limb_value ? 2 : 1) : (i > max_limb_value ? 2 : 1))
23866: {
23866: if (i < 0)
23866: negate();
23866: }
23866:
23866:
23866: template <limb_type... VALUES>
23866: constexpr cpp_int_base(literals::detail::value_pack<VALUES...> i)
23866: : m_wrapper(i), m_limbs(sizeof...(VALUES))
23866: {}
23866: constexpr cpp_int_base(literals::detail::value_pack<>)
23866: : m_wrapper(static_cast<limb_type>(0u)), m_limbs(1) {}
23866:
23866:
23866:
23866:
23866: inline constexpr unsigned size() const noexcept { return m_limbs; }
23866: inline constexpr limb_pointer limbs() noexcept { return m_wrapper.m_data; }
23866: inline constexpr const_limb_pointer limbs() const noexcept { return m_wrapper.m_data; }
23866: inline constexpr bool sign() const noexcept { return false; }
23866: inline constexpr void sign(bool b) noexcept(((Checked == unchecked)))
23866: {
23866: if (b)
23866: negate();
23866: }
23866: inline constexpr void resize(unsigned new_size, unsigned min_size) noexcept(((Checked == unchecked)))
23866: {
23866: m_limbs = (std::min)(new_size, internal_limb_count);
23866: detail::verify_new_size(m_limbs, min_size, checked_type());
23866: }
23866: inline constexpr void normalize() noexcept(((Checked == unchecked)))
23866: {
23866: limb_pointer p = limbs();
23866: detail::verify_limb_mask(m_limbs == internal_limb_count, p[internal_limb_count - 1], upper_limb_mask, checked_type());
23866: p[internal_limb_count - 1] &= upper_limb_mask;
23866: while ((m_limbs - 1) && !p[m_limbs - 1])
23866: --m_limbs;
23866: }
23866:
23866: inline constexpr cpp_int_base() noexcept
23866: : m_wrapper(limb_type(0u)),
23866: m_limbs(1) {}
23866: inline constexpr cpp_int_base(const cpp_int_base& o) noexcept
23866: : m_wrapper(o.m_wrapper),
23866: m_limbs(o.m_limbs) {}
23866:
23866:
23866:
23866:
23866:
23866:
23866: constexpr cpp_int_base& operator=(const cpp_int_base&) = default;
23866:
23866:
23866: inline constexpr void assign(const cpp_int_base& o) noexcept
23866: {
23866: if (this != &o)
23866: {
23866: m_limbs = o.m_limbs;
23866:
23866: if (__builtin_is_constant_evaluated())
23866: {
23866: for (unsigned i = 0; i < m_limbs; ++i)
23866: limbs()[i] = o.limbs()[i];
23866: }
23866: else
23866:
23866: std::memcpy(limbs(), o.limbs(), o.size() * sizeof(limbs()[0]));
23866: }
23866: }
23866:
23866: private:
23866: void check_negate(const mpl::int_<checked>&)
23866: {
23866: ::boost::throw_exception(std::range_error("Attempt to negate an unsigned number."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int.hpp", 878, __PRETTY_FUNCTION__));
23866: }
23866: constexpr void check_negate(const mpl::int_<unchecked>&) {}
23866:
23866: public:
23866: constexpr void negate() noexcept(((Checked == unchecked)))
23866: {
23866:
23866:
23866: if ((m_limbs == 1) && (m_wrapper.m_data[0] == 0))
23866: return;
23866: check_negate(checked_type());
23866: unsigned i = m_limbs;
23866: for (; i < internal_limb_count; ++i)
23866: m_wrapper.m_data[i] = 0;
23866: m_limbs = internal_limb_count;
23866: for (i = 0; i < internal_limb_count; ++i)
23866: m_wrapper.m_data[i] = ~m_wrapper.m_data[i];
23866: normalize();
23866: eval_increment(static_cast<cpp_int_backend<MinBits, MinBits, unsigned_magnitude, Checked, void>&>(*this));
23866: }
23866: inline constexpr bool isneg() const noexcept
23866: {
23866: return false;
23866: }
23866: inline constexpr void do_swap(cpp_int_base& o) noexcept
23866: {
23866: for (unsigned i = 0; i < (std::max)(size(), o.size()); ++i)
23866: std_constexpr::swap(m_wrapper.m_data[i], o.m_wrapper.m_data[i]);
23866: std_constexpr::swap(m_limbs, o.m_limbs);
23866: }
23866:
23866: protected:
23866: template <class A>
23866: constexpr void check_in_range(const A&) noexcept {}
23866: };
23866:
23866:
23866: template <unsigned MinBits, cpp_int_check_type Checked>
23866: const unsigned cpp_int_base<MinBits, MinBits, unsigned_magnitude, Checked, void, false>::limb_bits;
23866: template <unsigned MinBits, cpp_int_check_type Checked>
23866: const limb_type cpp_int_base<MinBits, MinBits, unsigned_magnitude, Checked, void, false>::max_limb_value;
23866: template <unsigned MinBits, cpp_int_check_type Checked>
23866: const limb_type cpp_int_base<MinBits, MinBits, unsigned_magnitude, Checked, void, false>::sign_bit_mask;
23866: template <unsigned MinBits, cpp_int_check_type Checked>
23866: const unsigned cpp_int_base<MinBits, MinBits, unsigned_magnitude, Checked, void, false>::internal_limb_count;
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <unsigned N, bool s>
23866: struct trivial_limb_type_imp
23866: {
23866: typedef double_limb_type type;
23866: };
23866:
23866: template <unsigned N>
23866: struct trivial_limb_type_imp<N, true>
23866: {
23866: typedef typename boost::uint_t<N>::least type;
23866: };
23866:
23866: template <unsigned N>
23866: struct trivial_limb_type : public trivial_limb_type_imp<N, N <= sizeof(boost::long_long_type) * 8>
23866: {};
23866:
23866:
23866:
23866: template <unsigned MinBits, cpp_int_check_type Checked>
23866: struct cpp_int_base<MinBits, MinBits, signed_magnitude, Checked, void, true>
23866: {
23866: typedef typename trivial_limb_type<MinBits>::type local_limb_type;
23866: typedef local_limb_type* limb_pointer;
23866: typedef const local_limb_type* const_limb_pointer;
23866: typedef mpl::int_<Checked> checked_type;
23866:
23866: struct scoped_shared_storage {};
23866: protected:
23866: static const unsigned limb_bits = sizeof(local_limb_type) * 8;
23866: static const local_limb_type limb_mask = (MinBits < limb_bits) ? local_limb_type((local_limb_type(~local_limb_type(0))) >> (limb_bits - MinBits)) : local_limb_type(~local_limb_type(0));
23866:
23866: private:
23866: local_limb_type m_data;
23866: bool m_sign;
23866:
23866:
23866:
23866:
23866: static_assert(MinBits <= sizeof(double_limb_type) * 8, "Template parameter MinBits is inconsistent with the parameter trivial - did you mistakingly try to override the trivial parameter?");
23866:
23866: protected:
23866: template <class T>
23866: constexpr typename boost::disable_if_c<!boost::is_integral<T>::value || (std::numeric_limits<T>::is_specialized && (std::numeric_limits<T>::digits <= (int)MinBits))>::type
23866: check_in_range(T val, const mpl::int_<checked>&)
23866: {
23866: typedef typename common_type<typename make_unsigned<T>::type, local_limb_type>::type common_type;
23866:
23866: if (static_cast<common_type>(boost::multiprecision::detail::unsigned_abs(val)) > static_cast<common_type>(limb_mask))
23866: ::boost::throw_exception(std::range_error("The argument to a cpp_int constructor exceeded the largest value it can represent."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int.hpp", 978, __PRETTY_FUNCTION__));
23866: }
23866: template <class T>
23866: constexpr typename boost::disable_if_c<boost::is_integral<T>::value || (std::numeric_limits<T>::is_specialized && (std::numeric_limits<T>::digits <= (int)MinBits))>::type
23866: check_in_range(T val, const mpl::int_<checked>&)
23866: {
23866: using std::abs;
23866: typedef typename common_type<T, local_limb_type>::type common_type;
23866:
23866: if (static_cast<common_type>(abs(val)) > static_cast<common_type>(limb_mask))
23866: ::boost::throw_exception(std::range_error("The argument to a cpp_int constructor exceeded the largest value it can represent."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int.hpp", 988, __PRETTY_FUNCTION__));
23866: }
23866: template <class T, int C>
23866: constexpr void check_in_range(T, const mpl::int_<C>&) noexcept {}
23866:
23866: template <class T>
23866: constexpr void check_in_range(T val) noexcept((noexcept(std::declval<cpp_int_base>().check_in_range(std::declval<T>(), checked_type()))))
23866: {
23866: check_in_range(val, checked_type());
23866: }
23866:
23866: public:
23866:
23866:
23866:
23866: template <class SI>
23866: inline constexpr cpp_int_base(SI i, typename boost::enable_if_c<is_signed<SI>::value && (Checked == unchecked)>::type const* = 0) noexcept((noexcept(std::declval<cpp_int_base>().check_in_range(std::declval<SI>()))))
23866: : m_data(i < 0 ? static_cast<local_limb_type>(static_cast<typename make_unsigned<SI>::type>(boost::multiprecision::detail::unsigned_abs(i)) & limb_mask) : static_cast<local_limb_type>(i & limb_mask)), m_sign(i < 0) {}
23866: template <class SI>
23866: inline constexpr cpp_int_base(SI i, typename boost::enable_if_c<is_signed<SI>::value && (Checked == checked)>::type const* = 0) noexcept((noexcept(std::declval<cpp_int_base>().check_in_range(std::declval<SI>()))))
23866: : m_data(i < 0 ? (static_cast<local_limb_type>(static_cast<typename make_unsigned<SI>::type>(boost::multiprecision::detail::unsigned_abs(i)) & limb_mask)) : static_cast<local_limb_type>(i & limb_mask)), m_sign(i < 0)
23866: {
23866: check_in_range(i);
23866: }
23866: template <class UI>
23866: inline constexpr cpp_int_base(UI i, typename boost::enable_if_c<is_unsigned<UI>::value && (Checked == unchecked)>::type const* = 0) noexcept
23866: : m_data(static_cast<local_limb_type>(i) & limb_mask),
23866: m_sign(false) {}
23866: template <class UI>
23866: inline constexpr cpp_int_base(UI i, typename boost::enable_if_c<is_unsigned<UI>::value && (Checked == checked)>::type const* = 0) noexcept((noexcept(std::declval<cpp_int_base>().check_in_range(std::declval<UI>()))))
23866: : m_data(static_cast<local_limb_type>(i) & limb_mask), m_sign(false) { check_in_range(i); }
23866: template <class F>
23866: inline constexpr cpp_int_base(F i, typename boost::enable_if_c<is_floating_point<F>::value && (Checked == unchecked)>::type const* = 0) noexcept
23866: : m_data(static_cast<local_limb_type>(std::fabs(i)) & limb_mask),
23866: m_sign(i < 0) {}
23866: template <class F>
23866: inline constexpr cpp_int_base(F i, typename boost::enable_if_c<is_floating_point<F>::value && (Checked == checked)>::type const* = 0)
23866: : m_data(static_cast<local_limb_type>(std::fabs(i)) & limb_mask), m_sign(i < 0) { check_in_range(i); }
23866:
23866: constexpr cpp_int_base(literals::detail::value_pack<>) noexcept
23866: : m_data(static_cast<local_limb_type>(0u)),
23866: m_sign(false)
23866: {}
23866: template <limb_type a>
23866: constexpr cpp_int_base(literals::detail::value_pack<a>) noexcept
23866: : m_data(static_cast<local_limb_type>(a)),
23866: m_sign(false) {}
23866: template <limb_type a, limb_type b>
23866: constexpr cpp_int_base(literals::detail::value_pack<a, b>) noexcept
23866: : m_data(static_cast<local_limb_type>(a) | (static_cast<local_limb_type>(b) << bits_per_limb)),
23866: m_sign(false) {}
23866: constexpr cpp_int_base(const cpp_int_base& a, const literals::detail::negate_tag&) noexcept
23866: : m_data(a.m_data),
23866: m_sign(a.m_data ? !a.m_sign : false) {}
23866:
23866:
23866:
23866:
23866:
23866: constexpr cpp_int_base& operator=(const cpp_int_base&) = default;
23866:
23866:
23866:
23866:
23866: inline constexpr unsigned size() const noexcept { return 1; }
23866: inline constexpr limb_pointer limbs() noexcept { return &m_data; }
23866: inline constexpr const_limb_pointer limbs() const noexcept { return &m_data; }
23866: inline constexpr bool sign() const noexcept { return m_sign; }
23866: inline constexpr void sign(bool b) noexcept
23866: {
23866: m_sign = b;
23866:
23866: if (m_sign && !m_data)
23866: {
23866: m_sign = false;
23866: }
23866: }
23866: inline constexpr void resize(unsigned , unsigned min_size)
23866: {
23866: detail::verify_new_size(2, min_size, checked_type());
23866: }
23866: inline constexpr void normalize() noexcept(((Checked == unchecked)))
23866: {
23866: if (!m_data)
23866: m_sign = false;
23866: detail::verify_limb_mask(true, m_data, limb_mask, checked_type());
23866: m_data &= limb_mask;
23866: }
23866:
23866: inline constexpr cpp_int_base() noexcept : m_data(0), m_sign(false) {}
23866: inline constexpr cpp_int_base(const cpp_int_base& o) noexcept
23866: : m_data(o.m_data),
23866: m_sign(o.m_sign) {}
23866:
23866: inline constexpr void assign(const cpp_int_base& o) noexcept
23866: {
23866: m_data = o.m_data;
23866: m_sign = o.m_sign;
23866: }
23866: inline constexpr void negate() noexcept
23866: {
23866: m_sign = !m_sign;
23866:
23866: if (m_data == 0)
23866: {
23866: m_sign = false;
23866: }
23866: }
23866: inline constexpr bool isneg() const noexcept
23866: {
23866: return m_sign;
23866: }
23866: inline constexpr void do_swap(cpp_int_base& o) noexcept
23866: {
23866: std_constexpr::swap(m_sign, o.m_sign);
23866: std_constexpr::swap(m_data, o.m_data);
23866: }
23866: };
23866:
23866:
23866:
23866: template <unsigned MinBits, cpp_int_check_type Checked>
23866: struct cpp_int_base<MinBits, MinBits, unsigned_magnitude, Checked, void, true>
23866: {
23866: typedef typename trivial_limb_type<MinBits>::type local_limb_type;
23866: typedef local_limb_type* limb_pointer;
23866: typedef const local_limb_type* const_limb_pointer;
23866:
23866: struct scoped_shared_storage {};
23866: private:
23866: static const unsigned limb_bits = sizeof(local_limb_type) * 8;
23866: static const local_limb_type limb_mask = limb_bits != MinBits ? static_cast<local_limb_type>(static_cast<local_limb_type>(~local_limb_type(0)) >> (limb_bits - MinBits)) : static_cast<local_limb_type>(~local_limb_type(0))
23866: ;
23866:
23866: local_limb_type m_data;
23866:
23866: typedef mpl::int_<Checked> checked_type;
23866:
23866:
23866:
23866:
23866: static_assert(MinBits <= sizeof(double_limb_type) * 8, "Template parameter MinBits is inconsistent with the parameter trivial - did you mistakingly try to override the trivial parameter?");
23866:
23866: protected:
23866: template <class T>
23866: constexpr typename boost::disable_if_c<std::numeric_limits<T>::is_specialized && (std::numeric_limits<T>::digits <= (int)MinBits)>::type
23866: check_in_range(T val, const mpl::int_<checked>&, const boost::false_type&)
23866: {
23866: typedef typename common_type<T, local_limb_type>::type common_type;
23866:
23866: if (static_cast<common_type>(val) > limb_mask)
23866: ::boost::throw_exception(std::range_error("The argument to a cpp_int constructor exceeded the largest value it can represent."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int.hpp", 1139, __PRETTY_FUNCTION__));
23866: }
23866: template <class T>
23866: constexpr void check_in_range(T val, const mpl::int_<checked>&, const boost::true_type&)
23866: {
23866: typedef typename common_type<T, local_limb_type>::type common_type;
23866:
23866: if (static_cast<common_type>(val) > limb_mask)
23866: ::boost::throw_exception(std::range_error("The argument to a cpp_int constructor exceeded the largest value it can represent."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int.hpp", 1147, __PRETTY_FUNCTION__));
23866: if (val < 0)
23866: ::boost::throw_exception(std::range_error("The argument to an unsigned cpp_int constructor was negative."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int.hpp", 1149, __PRETTY_FUNCTION__));
23866: }
23866: template <class T, int C, bool B>
23866: inline constexpr void check_in_range(T, const mpl::int_<C>&, const boost::integral_constant<bool, B>&) noexcept {}
23866:
23866: template <class T>
23866: inline constexpr void check_in_range(T val) noexcept((noexcept(std::declval<cpp_int_base>().check_in_range(std::declval<T>(), checked_type(), is_signed<T>()))))
23866: {
23866: check_in_range(val, checked_type(), is_signed<T>());
23866: }
23866:
23866: public:
23866: # 1179 "/usr/include/boost/multiprecision/cpp_int.hpp" 3 4
23866: template <class SI>
23866: inline constexpr cpp_int_base(SI i, typename boost::enable_if_c<is_signed<SI>::value && (Checked == unchecked)>::type const* = 0) noexcept
23866: : m_data(i < 0 ? (1 + ~static_cast<local_limb_type>(-i)) & limb_mask : static_cast<local_limb_type>(i) & limb_mask)
23866: {}
23866: template <class SI>
23866: inline constexpr cpp_int_base(SI i, typename boost::enable_if_c<is_signed<SI>::value && (Checked == checked)>::type const* = 0) noexcept((noexcept(std::declval<cpp_int_base>().check_in_range(std::declval<SI>()))))
23866: : m_data(i < 0 ? 1 + ~static_cast<local_limb_type>(-i) : static_cast<local_limb_type>(i)) { check_in_range(i); }
23866: template <class UI>
23866: inline constexpr cpp_int_base(UI i, typename boost::enable_if_c<is_unsigned<UI>::value && (Checked == unchecked)>::type const* = 0) noexcept
23866: : m_data(static_cast<local_limb_type>(i) & limb_mask) {}
23866: template <class UI>
23866: inline constexpr cpp_int_base(UI i, typename boost::enable_if_c<is_unsigned<UI>::value && (Checked == checked)>::type const* = 0) noexcept((noexcept(std::declval<cpp_int_base>().check_in_range(std::declval<UI>()))))
23866: : m_data(static_cast<local_limb_type>(i)) { check_in_range(i); }
23866:
23866: template <class F>
23866: inline constexpr cpp_int_base(F i, typename boost::enable_if<is_floating_point<F> >::type const* = 0) noexcept(((Checked == unchecked)))
23866: : m_data(static_cast<local_limb_type>(std::fabs(i)) & limb_mask)
23866: {
23866: check_in_range(i);
23866: if (i < 0)
23866: negate();
23866: }
23866:
23866: constexpr cpp_int_base(literals::detail::value_pack<>) noexcept
23866: : m_data(static_cast<local_limb_type>(0u))
23866: {}
23866: template <limb_type a>
23866: constexpr cpp_int_base(literals::detail::value_pack<a>) noexcept
23866: : m_data(static_cast<local_limb_type>(a)) {}
23866: template <limb_type a, limb_type b>
23866: constexpr cpp_int_base(literals::detail::value_pack<a, b>) noexcept
23866: : m_data(static_cast<local_limb_type>(a) | (static_cast<local_limb_type>(b) << bits_per_limb)) {}
23866:
23866:
23866:
23866:
23866:
23866: constexpr cpp_int_base& operator=(const cpp_int_base&) = default;
23866:
23866:
23866:
23866:
23866: inline constexpr unsigned size() const noexcept { return 1; }
23866: inline constexpr limb_pointer limbs() noexcept { return &m_data; }
23866: inline constexpr const_limb_pointer limbs() const noexcept { return &m_data; }
23866: inline constexpr bool sign() const noexcept { return false; }
23866: inline constexpr void sign(bool b) noexcept(((Checked == unchecked)))
23866: {
23866: if (b)
23866: negate();
23866: }
23866: inline constexpr void resize(unsigned, unsigned min_size)
23866: {
23866: detail::verify_new_size(2, min_size, checked_type());
23866: }
23866: inline constexpr void normalize() noexcept(((Checked == unchecked)))
23866: {
23866: detail::verify_limb_mask(true, m_data, limb_mask, checked_type());
23866: m_data &= limb_mask;
23866: }
23866:
23866: inline constexpr cpp_int_base() noexcept : m_data(0) {}
23866: inline constexpr cpp_int_base(const cpp_int_base& o) noexcept
23866: : m_data(o.m_data) {}
23866:
23866: inline constexpr void assign(const cpp_int_base& o) noexcept
23866: {
23866: m_data = o.m_data;
23866: }
23866: inline constexpr void negate() noexcept(((Checked == unchecked)))
23866: {
23866: if (Checked == checked)
23866: {
23866: ::boost::throw_exception(std::range_error("Attempt to negate an unsigned type."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int.hpp", 1252, __PRETTY_FUNCTION__));
23866: }
23866: m_data = ~m_data;
23866: ++m_data;
23866: }
23866: inline constexpr bool isneg() const noexcept
23866: {
23866: return false;
23866: }
23866: inline constexpr void do_swap(cpp_int_base& o) noexcept
23866: {
23866: std_constexpr::swap(m_data, o.m_data);
23866: }
23866: };
23866:
23866:
23866:
23866:
23866: template <class Arg, class Base>
23866: struct is_allowed_cpp_int_base_conversion : public mpl::if_c<
23866: is_same<Arg, limb_type>::value || is_same<Arg, signed_limb_type>::value
23866:
23866: || is_same<Arg, double_limb_type>::value || is_same<Arg, signed_double_limb_type>::value
23866:
23866:
23866: || literals::detail::is_value_pack<Arg>::value
23866:
23866: || (is_trivial_cpp_int<Base>::value && is_arithmetic<Arg>::value),
23866: mpl::true_,
23866: mpl::false_>::type
23866: {};
23866:
23866:
23866:
23866: template <unsigned MinBits, unsigned MaxBits, cpp_integer_type SignType, cpp_int_check_type Checked, class Allocator>
23866: struct cpp_int_backend
23866: : public cpp_int_base<
23866: min_precision<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> >::value,
23866: max_precision<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> >::value,
23866: SignType,
23866: Checked,
23866: Allocator,
23866: is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> >::value>
23866: {
23866: typedef cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> self_type;
23866: typedef cpp_int_base<
23866: min_precision<self_type>::value,
23866: max_precision<self_type>::value,
23866: SignType,
23866: Checked,
23866: Allocator,
23866: is_trivial_cpp_int<self_type>::value>
23866: base_type;
23866: typedef mpl::bool_<is_trivial_cpp_int<self_type>::value> trivial_tag;
23866:
23866: public:
23866: typedef typename mpl::if_<
23866: trivial_tag,
23866: mpl::list<
23866: signed char, short, int, long,
23866: boost::long_long_type, signed_double_limb_type>,
23866: mpl::list<signed_limb_type, signed_double_limb_type> >::type signed_types;
23866: typedef typename mpl::if_<
23866: trivial_tag,
23866: mpl::list<unsigned char, unsigned short, unsigned,
23866: unsigned long, boost::ulong_long_type, double_limb_type>,
23866: mpl::list<limb_type, double_limb_type> >::type unsigned_types;
23866: typedef typename mpl::if_<
23866: trivial_tag,
23866: mpl::list<float, double, long double>,
23866: mpl::list<long double> >::type float_types;
23866: typedef mpl::int_<Checked> checked_type;
23866:
23866: inline constexpr cpp_int_backend() noexcept {}
23866: inline constexpr cpp_int_backend(const cpp_int_backend& o) noexcept((boost::is_void<Allocator>::value)) : base_type(o) {}
23866:
23866: inline constexpr cpp_int_backend(cpp_int_backend&& o) noexcept
23866: : base_type(static_cast<base_type&&>(o))
23866: {}
23866:
23866:
23866:
23866:
23866: template <class Arg>
23866: inline constexpr cpp_int_backend(Arg i, typename boost::enable_if_c<is_allowed_cpp_int_base_conversion<Arg, base_type>::value>::type const* = 0) noexcept((noexcept(base_type(std::declval<Arg>()))))
23866: : base_type(i) {}
23866:
23866:
23866:
23866:
23866: explicit constexpr cpp_int_backend(limb_type* data, unsigned offset, unsigned len) noexcept
23866: : base_type(data, offset, len) {}
23866: explicit cpp_int_backend(const limb_type* data, unsigned offset, unsigned len) noexcept
23866: : base_type(data, offset, len) { this->normalize(); }
23866: explicit constexpr cpp_int_backend(typename base_type::scoped_shared_storage& data, unsigned len) noexcept
23866: : base_type(data, len) {}
23866:
23866: private:
23866: template <unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: constexpr void do_assign(const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& other, mpl::true_ const&, mpl::true_ const&)
23866: {
23866:
23866: this->check_in_range(*other.limbs());
23866: *this->limbs() = static_cast<typename self_type::local_limb_type>(*other.limbs());
23866: this->sign(other.sign());
23866: this->normalize();
23866: }
23866: template <unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: constexpr void do_assign(const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& other, mpl::true_ const&, mpl::false_ const&)
23866: {
23866:
23866: double_limb_type v = *other.limbs();
23866: if (other.size() > 1)
23866: {
23866: v |= static_cast<double_limb_type>(other.limbs()[1]) << bits_per_limb;
23866: if ((Checked == checked) && (other.size() > 2))
23866: {
23866: ::boost::throw_exception(std::range_error("Assignment of a cpp_int that is out of range for the target type."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int.hpp", 1369, __PRETTY_FUNCTION__));
23866: }
23866: }
23866: *this = v;
23866: this->sign(other.sign());
23866: this->normalize();
23866: }
23866: template <unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: constexpr void do_assign(const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& other, mpl::false_ const&, mpl::true_ const&)
23866: {
23866:
23866: *this = static_cast<
23866: typename boost::multiprecision::detail::canonical<
23866: typename cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>::local_limb_type,
23866: cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> >::type>(*other.limbs());
23866: this->sign(other.sign());
23866: }
23866: template <unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: constexpr void do_assign(const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& other, mpl::false_ const&, mpl::false_ const&)
23866: {
23866:
23866: this->resize(other.size(), other.size());
23866:
23866: unsigned count = (std::min)(other.size(), this->size());
23866: for (unsigned i = 0; i < count; ++i)
23866: this->limbs()[i] = other.limbs()[i];
23866:
23866:
23866: this->sign(other.sign());
23866: this->normalize();
23866: }
23866:
23866: public:
23866: template <unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: constexpr cpp_int_backend(
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& other,
23866: typename boost::enable_if_c<is_implicit_cpp_int_conversion<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>, self_type>::value>::type* = 0)
23866: : base_type()
23866: {
23866: do_assign(
23866: other,
23866: mpl::bool_<is_trivial_cpp_int<self_type>::value>(),
23866: mpl::bool_<is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>());
23866: }
23866: template <unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: explicit constexpr cpp_int_backend(
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& other,
23866: typename boost::disable_if_c<is_implicit_cpp_int_conversion<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>, self_type>::value>::type* = 0)
23866: : base_type()
23866: {
23866: do_assign(
23866: other,
23866: mpl::bool_<is_trivial_cpp_int<self_type>::value>(),
23866: mpl::bool_<is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>());
23866: }
23866: template <unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: constexpr cpp_int_backend& operator=(
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& other)
23866: {
23866: do_assign(
23866: other,
23866: mpl::bool_<is_trivial_cpp_int<self_type>::value>(),
23866: mpl::bool_<is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>());
23866: return *this;
23866: }
23866:
23866: constexpr cpp_int_backend(const cpp_int_backend& a, const literals::detail::negate_tag& tag)
23866: : base_type(static_cast<const base_type&>(a), tag)
23866: {}
23866:
23866:
23866: inline constexpr cpp_int_backend& operator=(const cpp_int_backend& o) noexcept((noexcept(std::declval<cpp_int_backend>().assign(std::declval<const cpp_int_backend&>()))))
23866: {
23866: this->assign(o);
23866: return *this;
23866: }
23866:
23866: inline constexpr cpp_int_backend& operator=(cpp_int_backend&& o) noexcept((noexcept(std::declval<base_type&>() = std::declval<base_type>())))
23866: {
23866: *static_cast<base_type*>(this) = static_cast<base_type&&>(o);
23866: return *this;
23866: }
23866:
23866: private:
23866: template <class A>
23866: constexpr typename boost::enable_if<is_unsigned<A> >::type do_assign_arithmetic(A val, const mpl::true_&)
23866: noexcept((noexcept(std::declval<cpp_int_backend>().check_in_range(std::declval<A>()))))
23866: {
23866: this->check_in_range(val);
23866: *this->limbs() = static_cast<typename self_type::local_limb_type>(val);
23866: this->sign(false);
23866: this->normalize();
23866: }
23866: template <class A>
23866: constexpr typename boost::disable_if_c<is_unsigned<A>::value || !is_integral<A>::value>::type do_assign_arithmetic(A val, const mpl::true_&)
23866: noexcept((noexcept(std::declval<cpp_int_backend>().check_in_range(std::declval<A>())) && noexcept(std::declval<cpp_int_backend>().sign(true))))
23866: {
23866: this->check_in_range(val);
23866: *this->limbs() = (val < 0) ? static_cast<typename self_type::local_limb_type>(boost::multiprecision::detail::unsigned_abs(val)) : static_cast<typename self_type::local_limb_type>(val);
23866: this->sign(val < 0);
23866: this->normalize();
23866: }
23866: template <class A>
23866: constexpr typename boost::enable_if_c<!is_integral<A>::value>::type do_assign_arithmetic(A val, const mpl::true_&)
23866: {
23866: this->check_in_range(val);
23866: *this->limbs() = (val < 0) ? static_cast<typename self_type::local_limb_type>(boost::multiprecision::detail::abs(val)) : static_cast<typename self_type::local_limb_type>(val);
23866: this->sign(val < 0);
23866: this->normalize();
23866: }
23866: inline constexpr void do_assign_arithmetic(limb_type i, const mpl::false_&) noexcept
23866: {
23866: this->resize(1, 1);
23866: *this->limbs() = i;
23866: this->sign(false);
23866: }
23866: inline constexpr void do_assign_arithmetic(signed_limb_type i, const mpl::false_&) noexcept((noexcept(std::declval<cpp_int_backend>().sign(true))))
23866: {
23866: this->resize(1, 1);
23866: *this->limbs() = static_cast<limb_type>(boost::multiprecision::detail::unsigned_abs(i));
23866: this->sign(i < 0);
23866: }
23866: constexpr void do_assign_arithmetic(double_limb_type i, const mpl::false_&) noexcept
23866: {
23866: static_assert(sizeof(i) == 2 * sizeof(limb_type), "sizeof(i) == 2 * sizeof(limb_type)");
23866: static_assert(base_type::internal_limb_count >= 2, "base_type::internal_limb_count >= 2");
23866: typename base_type::limb_pointer p = this->limbs();
23866:
23866:
23866:
23866: *p = static_cast<limb_type>(i);
23866:
23866: p[1] = static_cast<limb_type>(i >> base_type::limb_bits);
23866: this->resize(p[1] ? 2 : 1, p[1] ? 2 : 1);
23866: this->sign(false);
23866: }
23866: constexpr void do_assign_arithmetic(signed_double_limb_type i, const mpl::false_&) noexcept((noexcept(std::declval<cpp_int_backend>().sign(true))))
23866: {
23866: static_assert(sizeof(i) == 2 * sizeof(limb_type), "sizeof(i) == 2 * sizeof(limb_type)");
23866: static_assert(base_type::internal_limb_count >= 2, "base_type::internal_limb_count >= 2");
23866: bool s = false;
23866: if (i < 0)
23866: s = true;
23866: double_limb_type ui = static_cast<double_limb_type>(boost::multiprecision::detail::unsigned_abs(i));
23866: typename base_type::limb_pointer p = this->limbs();
23866:
23866:
23866:
23866: *p = static_cast<limb_type>(ui);
23866:
23866: p[1] = static_cast<limb_type>(ui >> base_type::limb_bits);
23866: this->resize(p[1] ? 2 : 1, p[1] ? 2 : 1);
23866: this->sign(s);
23866: }
23866:
23866: constexpr void do_assign_arithmetic(long double a, const mpl::false_&)
23866: {
23866: using default_ops::eval_add;
23866: using default_ops::eval_subtract;
23866: using std::floor;
23866: using std::frexp;
23866: using std::ldexp;
23866:
23866: if (a < 0)
23866: {
23866: do_assign_arithmetic(-a, mpl::false_());
23866: this->sign(true);
23866: return;
23866: }
23866:
23866: if (a == 0)
23866: {
23866: *this = static_cast<limb_type>(0u);
23866: }
23866:
23866: if (a == 1)
23866: {
23866: *this = static_cast<limb_type>(1u);
23866: }
23866:
23866: if ((boost::math::isinf)(a) || (boost::math::isnan)(a))
23866: {
23866: ::boost::throw_exception(std::runtime_error("Cannot convert a non-finite number to an integer."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int.hpp", 1551, __PRETTY_FUNCTION__));
23866: }
23866:
23866: int e = 0;
23866: long double f(0), term(0);
23866: *this = static_cast<limb_type>(0u);
23866:
23866: f = frexp(a, &e);
23866:
23866:
23866:
23866:
23866: constexpr limb_type shift = std::numeric_limits<limb_type>::digits;
23866:
23866:
23866: while (f)
23866: {
23866:
23866: f = ldexp(f, shift);
23866: term = floor(f);
23866: e -= shift;
23866: eval_left_shift(*this, shift);
23866: if (term > 0)
23866: eval_add(*this, static_cast<limb_type>(term));
23866: else
23866: eval_subtract(*this, static_cast<limb_type>(-term));
23866: f -= term;
23866: }
23866: if (e > 0)
23866: eval_left_shift(*this, e);
23866: else if (e < 0)
23866: eval_right_shift(*this, -e);
23866: }
23866:
23866: public:
23866: template <class Arithmetic>
23866: inline constexpr typename boost::enable_if_c<!boost::multiprecision::detail::is_byte_container<Arithmetic>::value, cpp_int_backend&>::type operator=(Arithmetic val) noexcept((noexcept(std::declval<cpp_int_backend>().do_assign_arithmetic(std::declval<Arithmetic>(), trivial_tag()))))
23866: {
23866: do_assign_arithmetic(val, trivial_tag());
23866: return *this;
23866: }
23866:
23866: private:
23866: void do_assign_string(const char* s, const mpl::true_&)
23866: {
23866: std::size_t n = s ? std::strlen(s) : 0;
23866: *this = 0;
23866: unsigned radix = 10;
23866: bool isneg = false;
23866: if (n && (*s == '-'))
23866: {
23866: --n;
23866: ++s;
23866: isneg = true;
23866: }
23866: if (n && (*s == '0'))
23866: {
23866: if ((n > 1) && ((s[1] == 'x') || (s[1] == 'X')))
23866: {
23866: radix = 16;
23866: s += 2;
23866: n -= 2;
23866: }
23866: else
23866: {
23866: radix = 8;
23866: n -= 1;
23866: }
23866: }
23866: if (n)
23866: {
23866: unsigned val;
23866: while (*s)
23866: {
23866: if (*s >= '0' && *s <= '9')
23866: val = *s - '0';
23866: else if (*s >= 'a' && *s <= 'f')
23866: val = 10 + *s - 'a';
23866: else if (*s >= 'A' && *s <= 'F')
23866: val = 10 + *s - 'A';
23866: else
23866: val = radix + 1;
23866: if (val >= radix)
23866: {
23866: ::boost::throw_exception(std::runtime_error("Unexpected content found while parsing character string."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int.hpp", 1635, __PRETTY_FUNCTION__));
23866: }
23866: *this->limbs() = detail::checked_multiply(*this->limbs(), static_cast<typename base_type::local_limb_type>(radix), checked_type());
23866: *this->limbs() = detail::checked_add(*this->limbs(), static_cast<typename base_type::local_limb_type>(val), checked_type());
23866: ++s;
23866: }
23866: }
23866: if (isneg)
23866: this->negate();
23866: }
23866: void do_assign_string(const char* s, const mpl::false_&)
23866: {
23866: using default_ops::eval_add;
23866: using default_ops::eval_multiply;
23866: std::size_t n = s ? std::strlen(s) : 0;
23866: *this = static_cast<limb_type>(0u);
23866: unsigned radix = 10;
23866: bool isneg = false;
23866: if (n && (*s == '-'))
23866: {
23866: --n;
23866: ++s;
23866: isneg = true;
23866: }
23866: if (n && (*s == '0'))
23866: {
23866: if ((n > 1) && ((s[1] == 'x') || (s[1] == 'X')))
23866: {
23866: radix = 16;
23866: s += 2;
23866: n -= 2;
23866: }
23866: else
23866: {
23866: radix = 8;
23866: n -= 1;
23866: }
23866: }
23866:
23866:
23866:
23866:
23866:
23866: cpp_int_backend result;
23866: if (n)
23866: {
23866: if (radix == 16)
23866: {
23866: while (*s == '0')
23866: ++s;
23866: std::size_t bitcount = 4 * std::strlen(s);
23866: limb_type val;
23866: std::size_t limb, shift;
23866: if (bitcount > 4)
23866: bitcount -= 4;
23866: else
23866: bitcount = 0;
23866: std::size_t newsize = bitcount / (sizeof(limb_type) * 8) + 1;
23866: result.resize(static_cast<unsigned>(newsize), static_cast<unsigned>(newsize));
23866: std::memset(result.limbs(), 0, result.size() * sizeof(limb_type));
23866: while (*s)
23866: {
23866: if (*s >= '0' && *s <= '9')
23866: val = *s - '0';
23866: else if (*s >= 'a' && *s <= 'f')
23866: val = 10 + *s - 'a';
23866: else if (*s >= 'A' && *s <= 'F')
23866: val = 10 + *s - 'A';
23866: else
23866: {
23866: ::boost::throw_exception(std::runtime_error("Unexpected content found while parsing character string."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int.hpp", 1705, __PRETTY_FUNCTION__));
23866: }
23866: limb = bitcount / (sizeof(limb_type) * 8);
23866: shift = bitcount % (sizeof(limb_type) * 8);
23866: val <<= shift;
23866: if (result.size() > limb)
23866: {
23866: result.limbs()[limb] |= val;
23866: }
23866: ++s;
23866: bitcount -= 4;
23866: }
23866: result.normalize();
23866: }
23866: else if (radix == 8)
23866: {
23866: while (*s == '0')
23866: ++s;
23866: std::size_t bitcount = 3 * std::strlen(s);
23866: limb_type val;
23866: std::size_t limb, shift;
23866: if (bitcount > 3)
23866: bitcount -= 3;
23866: else
23866: bitcount = 0;
23866: std::size_t newsize = bitcount / (sizeof(limb_type) * 8) + 1;
23866: result.resize(static_cast<unsigned>(newsize), static_cast<unsigned>(newsize));
23866: std::memset(result.limbs(), 0, result.size() * sizeof(limb_type));
23866: while (*s)
23866: {
23866: if (*s >= '0' && *s <= '7')
23866: val = *s - '0';
23866: else
23866: {
23866: ::boost::throw_exception(std::runtime_error("Unexpected content found while parsing character string."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int.hpp", 1739, __PRETTY_FUNCTION__));
23866: }
23866: limb = bitcount / (sizeof(limb_type) * 8);
23866: shift = bitcount % (sizeof(limb_type) * 8);
23866: if (result.size() > limb)
23866: {
23866: result.limbs()[limb] |= (val << shift);
23866: if (shift > sizeof(limb_type) * 8 - 3)
23866: {
23866:
23866: val >>= (sizeof(limb_type) * 8 - shift);
23866: if (val)
23866: {
23866:
23866: if (limb + 1 == newsize)
23866: result.resize(static_cast<unsigned>(newsize + 1), static_cast<unsigned>(newsize + 1));
23866: if (result.size() > limb + 1)
23866: {
23866: result.limbs()[limb + 1] |= val;
23866: }
23866: }
23866: }
23866: }
23866: ++s;
23866: bitcount -= 3;
23866: }
23866: result.normalize();
23866: }
23866: else
23866: {
23866:
23866:
23866: limb_type block_mult = max_block_10;
23866: while (*s)
23866: {
23866: limb_type block = 0;
23866: for (unsigned i = 0; i < digits_per_block_10; ++i)
23866: {
23866: limb_type val;
23866: if (*s >= '0' && *s <= '9')
23866: val = *s - '0';
23866: else
23866: ::boost::throw_exception(std::runtime_error("Unexpected character encountered in input."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int.hpp", 1781, __PRETTY_FUNCTION__));
23866: block *= 10;
23866: block += val;
23866: if (!*++s)
23866: {
23866: block_mult = block_multiplier(i);
23866: break;
23866: }
23866: }
23866: eval_multiply(result, block_mult);
23866: eval_add(result, block);
23866: }
23866: }
23866: }
23866: if (isneg)
23866: result.negate();
23866: result.swap(*this);
23866: }
23866:
23866: public:
23866: cpp_int_backend& operator=(const char* s)
23866: {
23866: do_assign_string(s, trivial_tag());
23866: return *this;
23866: }
23866: inline constexpr void swap(cpp_int_backend& o) noexcept
23866: {
23866: this->do_swap(o);
23866: }
23866:
23866: private:
23866: std::string do_get_trivial_string(std::ios_base::fmtflags f, const mpl::false_&) const
23866: {
23866: typedef typename mpl::if_c<sizeof(typename base_type::local_limb_type) == 1, unsigned, typename base_type::local_limb_type>::type io_type;
23866: if (this->sign() && (((f & std::ios_base::hex) == std::ios_base::hex) || ((f & std::ios_base::oct) == std::ios_base::oct)))
23866: ::boost::throw_exception(std::runtime_error("Base 8 or 16 printing of negative numbers is not supported."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int.hpp", 1816, __PRETTY_FUNCTION__));
23866: std::stringstream ss;
23866: ss.flags(f & ~std::ios_base::showpos);
23866: ss << static_cast<io_type>(*this->limbs());
23866: std::string result;
23866: if (this->sign())
23866: result += '-';
23866: else if (f & std::ios_base::showpos)
23866: result += '+';
23866: result += ss.str();
23866: return result;
23866: }
23866: std::string do_get_trivial_string(std::ios_base::fmtflags f, const mpl::true_&) const
23866: {
23866:
23866: int base = 10;
23866: if ((f & std::ios_base::oct) == std::ios_base::oct)
23866: base = 8;
23866: else if ((f & std::ios_base::hex) == std::ios_base::hex)
23866: base = 16;
23866: std::string result;
23866:
23866: unsigned Bits = sizeof(typename base_type::local_limb_type) * 8;
23866:
23866: if (base == 8 || base == 16)
23866: {
23866: if (this->sign())
23866: ::boost::throw_exception(std::runtime_error("Base 8 or 16 printing of negative numbers is not supported."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int.hpp", 1843, __PRETTY_FUNCTION__));
23866: limb_type shift = base == 8 ? 3 : 4;
23866: limb_type mask = static_cast<limb_type>((1u << shift) - 1);
23866: typename base_type::local_limb_type v = *this->limbs();
23866: result.assign(Bits / shift + (Bits % shift ? 1 : 0), '0');
23866: std::string::difference_type pos = result.size() - 1;
23866: char letter_a = f & std::ios_base::uppercase ? 'A' : 'a';
23866: for (unsigned i = 0; i < Bits / shift; ++i)
23866: {
23866: char c = '0' + static_cast<char>(v & mask);
23866: if (c > '9')
23866: c += letter_a - '9' - 1;
23866: result[pos--] = c;
23866: v >>= shift;
23866: }
23866: if (Bits % shift)
23866: {
23866: mask = static_cast<limb_type>((1u << (Bits % shift)) - 1);
23866: char c = '0' + static_cast<char>(v & mask);
23866: if (c > '9')
23866: c += letter_a - '9';
23866: result[pos] = c;
23866: }
23866:
23866:
23866:
23866: std::string::size_type n = result.find_first_not_of('0');
23866: if (!result.empty() && (n == std::string::npos))
23866: n = result.size() - 1;
23866: result.erase(0, n);
23866: if (f & std::ios_base::showbase)
23866: {
23866: const char* pp = base == 8 ? "0" : (f & std::ios_base::uppercase) ? "0X" : "0x";
23866: result.insert(static_cast<std::string::size_type>(0), pp);
23866: }
23866: }
23866: else
23866: {
23866: result.assign(Bits / 3 + 1, '0');
23866: std::string::difference_type pos = result.size() - 1;
23866: typename base_type::local_limb_type v(*this->limbs());
23866: bool neg = false;
23866: if (this->sign())
23866: {
23866: neg = true;
23866: }
23866: while (v)
23866: {
23866: result[pos] = (v % 10) + '0';
23866: --pos;
23866: v /= 10;
23866: }
23866: std::string::size_type n = result.find_first_not_of('0');
23866: result.erase(0, n);
23866: if (result.empty())
23866: result = "0";
23866: if (neg)
23866: result.insert(static_cast<std::string::size_type>(0), 1, '-');
23866: else if (f & std::ios_base::showpos)
23866: result.insert(static_cast<std::string::size_type>(0), 1, '+');
23866: }
23866: return result;
23866: }
23866: std::string do_get_string(std::ios_base::fmtflags f, const mpl::true_&) const
23866: {
23866:
23866:
23866:
23866: return do_get_trivial_string(f, mpl::bool_<false>());
23866:
23866: }
23866: std::string do_get_string(std::ios_base::fmtflags f, const mpl::false_&) const
23866: {
23866: using default_ops::eval_get_sign;
23866: int base = 10;
23866: if ((f & std::ios_base::oct) == std::ios_base::oct)
23866: base = 8;
23866: else if ((f & std::ios_base::hex) == std::ios_base::hex)
23866: base = 16;
23866: std::string result;
23866:
23866: unsigned Bits = this->size() * base_type::limb_bits;
23866:
23866: if (base == 8 || base == 16)
23866: {
23866: if (this->sign())
23866: ::boost::throw_exception(std::runtime_error("Base 8 or 16 printing of negative numbers is not supported."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int.hpp", 1929, __PRETTY_FUNCTION__));
23866: limb_type shift = base == 8 ? 3 : 4;
23866: limb_type mask = static_cast<limb_type>((1u << shift) - 1);
23866: cpp_int_backend t(*this);
23866: result.assign(Bits / shift + ((Bits % shift) ? 1 : 0), '0');
23866: std::string::difference_type pos = result.size() - 1;
23866: char letter_a = f & std::ios_base::uppercase ? 'A' : 'a';
23866: for (unsigned i = 0; i < Bits / shift; ++i)
23866: {
23866: char c = '0' + static_cast<char>(t.limbs()[0] & mask);
23866: if (c > '9')
23866: c += letter_a - '9' - 1;
23866: result[pos--] = c;
23866: eval_right_shift(t, shift);
23866: }
23866: if (Bits % shift)
23866: {
23866: mask = static_cast<limb_type>((1u << (Bits % shift)) - 1);
23866: char c = '0' + static_cast<char>(t.limbs()[0] & mask);
23866: if (c > '9')
23866: c += letter_a - '9';
23866: result[pos] = c;
23866: }
23866:
23866:
23866:
23866: std::string::size_type n = result.find_first_not_of('0');
23866: if (!result.empty() && (n == std::string::npos))
23866: n = result.size() - 1;
23866: result.erase(0, n);
23866: if (f & std::ios_base::showbase)
23866: {
23866: const char* pp = base == 8 ? "0" : (f & std::ios_base::uppercase) ? "0X" : "0x";
23866: result.insert(static_cast<std::string::size_type>(0), pp);
23866: }
23866: }
23866: else
23866: {
23866: result.assign(Bits / 3 + 1, '0');
23866: std::string::difference_type pos = result.size() - 1;
23866: cpp_int_backend t(*this);
23866: cpp_int_backend r;
23866: bool neg = false;
23866: if (t.sign())
23866: {
23866: t.negate();
23866: neg = true;
23866: }
23866: if (this->size() == 1)
23866: {
23866: result = boost::lexical_cast<std::string>(t.limbs()[0]);
23866: }
23866: else
23866: {
23866: cpp_int_backend block10;
23866: block10 = max_block_10;
23866: while (eval_get_sign(t) != 0)
23866: {
23866: cpp_int_backend t2;
23866: divide_unsigned_helper(&t2, t, block10, r);
23866: t = t2;
23866: limb_type v = r.limbs()[0];
23866: for (unsigned i = 0; i < digits_per_block_10; ++i)
23866: {
23866: char c = '0' + v % 10;
23866: v /= 10;
23866: result[pos] = c;
23866: if (pos-- == 0)
23866: break;
23866: }
23866: }
23866: }
23866: std::string::size_type n = result.find_first_not_of('0');
23866: result.erase(0, n);
23866: if (result.empty())
23866: result = "0";
23866: if (neg)
23866: result.insert(static_cast<std::string::size_type>(0), 1, '-');
23866: else if (f & std::ios_base::showpos)
23866: result.insert(static_cast<std::string::size_type>(0), 1, '+');
23866: }
23866: return result;
23866: }
23866:
23866: public:
23866: std::string str(std::streamsize , std::ios_base::fmtflags f) const
23866: {
23866: return do_get_string(f, trivial_tag());
23866: }
23866:
23866: private:
23866: template <class Container>
23866: void construct_from_container(const Container& c, const mpl::false_&)
23866: {
23866:
23866:
23866:
23866: unsigned newsize = static_cast<unsigned>(c.size() / sizeof(limb_type));
23866: if (c.size() % sizeof(limb_type))
23866: {
23866: ++newsize;
23866: }
23866: if (newsize)
23866: {
23866: this->resize(newsize, newsize);
23866: std::memset(this->limbs(), 0, this->size());
23866: typename Container::const_iterator i(c.begin()), j(c.end());
23866: unsigned byte_location = static_cast<unsigned>(c.size() - 1);
23866: while (i != j)
23866: {
23866: unsigned limb = byte_location / sizeof(limb_type);
23866: unsigned shift = (byte_location % sizeof(limb_type)) * 8;
23866: if (this->size() > limb)
23866: this->limbs()[limb] |= static_cast<limb_type>(static_cast<unsigned char>(*i)) << shift;
23866: ++i;
23866: --byte_location;
23866: }
23866: }
23866: }
23866: template <class Container>
23866: constexpr void construct_from_container(const Container& c, const mpl::true_&)
23866: {
23866:
23866:
23866:
23866: typedef typename base_type::local_limb_type local_limb_type;
23866: *this->limbs() = 0;
23866: if (c.size())
23866: {
23866: typename Container::const_iterator i(c.begin()), j(c.end());
23866: unsigned byte_location = static_cast<unsigned>(c.size() - 1);
23866: while (i != j)
23866: {
23866: unsigned limb = byte_location / sizeof(local_limb_type);
23866: unsigned shift = (byte_location % sizeof(local_limb_type)) * 8;
23866: if (limb == 0)
23866: this->limbs()[0] |= static_cast<limb_type>(static_cast<unsigned char>(*i)) << shift;
23866: ++i;
23866: --byte_location;
23866: }
23866: }
23866: }
23866:
23866: public:
23866: template <class Container>
23866: constexpr cpp_int_backend(const Container& c, typename boost::enable_if_c<boost::multiprecision::detail::is_byte_container<Container>::value>::type const* = 0)
23866: {
23866:
23866:
23866:
23866: construct_from_container(c, trivial_tag());
23866: }
23866: template <unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: constexpr int compare_imp(const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& o, const mpl::false_&, const mpl::false_&) const noexcept
23866: {
23866: if (this->sign() != o.sign())
23866: return this->sign() ? -1 : 1;
23866:
23866:
23866: int result = compare_unsigned(o);
23866:
23866: if (this->sign())
23866: result = -result;
23866: return result;
23866: }
23866: template <unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: constexpr int compare_imp(const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& o, const mpl::true_&, const mpl::false_&) const
23866: {
23866: cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> t(*this);
23866: return t.compare(o);
23866: }
23866: template <unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: constexpr int compare_imp(const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& o, const mpl::false_&, const mpl::true_&) const
23866: {
23866: cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> t(o);
23866: return compare(t);
23866: }
23866: template <unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: constexpr int compare_imp(const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& o, const mpl::true_&, const mpl::true_&) const noexcept
23866: {
23866: if (this->sign())
23866: {
23866: if (o.sign())
23866: {
23866: return *this->limbs() < *o.limbs() ? 1 : (*this->limbs() > *o.limbs() ? -1 : 0);
23866: }
23866: else
23866: return -1;
23866: }
23866: else
23866: {
23866: if (o.sign())
23866: return 1;
23866: return *this->limbs() < *o.limbs() ? -1 : (*this->limbs() > *o.limbs() ? 1 : 0);
23866: }
23866: }
23866: template <unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: constexpr int compare(const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& o) const noexcept
23866: {
23866: typedef mpl::bool_<is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> >::value> t1;
23866: typedef mpl::bool_<is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value> t2;
23866: return compare_imp(o, t1(), t2());
23866: }
23866: template <unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: constexpr int compare_unsigned(const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& o) const noexcept
23866: {
23866: if (this->size() != o.size())
23866: {
23866: return this->size() > o.size() ? 1 : -1;
23866: }
23866: typename base_type::const_limb_pointer pa = this->limbs();
23866: typename base_type::const_limb_pointer pb = o.limbs();
23866: for (int i = this->size() - 1; i >= 0; --i)
23866: {
23866: if (pa[i] != pb[i])
23866: return pa[i] > pb[i] ? 1 : -1;
23866: }
23866: return 0;
23866: }
23866: template <class Arithmetic>
23866: inline constexpr typename boost::enable_if<is_arithmetic<Arithmetic>, int>::type compare(Arithmetic i) const
23866: {
23866:
23866: cpp_int_backend t;
23866: t = i;
23866: return compare(t);
23866: }
23866: };
23866:
23866: }
23866:
23866: namespace default_ops {
23866:
23866: template <class Backend>
23866: struct double_precision_type;
23866:
23866: template <unsigned MinBits, unsigned MaxBits, cpp_integer_type SignType, cpp_int_check_type Checked, class Allocator>
23866: struct double_precision_type<backends::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> >
23866: {
23866: typedef typename mpl::if_c<
23866: backends::is_fixed_precision<backends::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> >::value,
23866: backends::cpp_int_backend<
23866: (is_void<Allocator>::value ? 2 * backends::max_precision<backends::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> >::value
23866: : MinBits),
23866: 2 * backends::max_precision<backends::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> >::value,
23866: SignType,
23866: Checked,
23866: Allocator>,
23866: backends::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> >::type type;
23866: };
23866:
23866: }
23866:
23866: template <unsigned MinBits, unsigned MaxBits, cpp_integer_type SignType, cpp_int_check_type Checked>
23866: struct expression_template_default<backends::cpp_int_backend<MinBits, MaxBits, SignType, Checked, void> >
23866: {
23866: static const expression_template_option value = et_off;
23866: };
23866:
23866: using boost::multiprecision::backends::cpp_int_backend;
23866:
23866: template <unsigned MinBits, unsigned MaxBits, cpp_integer_type SignType, cpp_int_check_type Checked, class Allocator>
23866: struct number_category<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> > : public mpl::int_<number_kind_integer>
23866: {};
23866:
23866: typedef number<cpp_int_backend<> > cpp_int;
23866: typedef rational_adaptor<cpp_int_backend<> > cpp_rational_backend;
23866: typedef number<cpp_rational_backend> cpp_rational;
23866:
23866:
23866: typedef number<cpp_int_backend<128, 128, unsigned_magnitude, unchecked, void> > uint128_t;
23866: typedef number<cpp_int_backend<256, 256, unsigned_magnitude, unchecked, void> > uint256_t;
23866: typedef number<cpp_int_backend<512, 512, unsigned_magnitude, unchecked, void> > uint512_t;
23866: typedef number<cpp_int_backend<1024, 1024, unsigned_magnitude, unchecked, void> > uint1024_t;
23866:
23866:
23866: typedef number<cpp_int_backend<128, 128, signed_magnitude, unchecked, void> > int128_t;
23866: typedef number<cpp_int_backend<256, 256, signed_magnitude, unchecked, void> > int256_t;
23866: typedef number<cpp_int_backend<512, 512, signed_magnitude, unchecked, void> > int512_t;
23866: typedef number<cpp_int_backend<1024, 1024, signed_magnitude, unchecked, void> > int1024_t;
23866:
23866:
23866: typedef number<cpp_int_backend<0, 0, signed_magnitude, checked> > checked_cpp_int;
23866: typedef rational_adaptor<cpp_int_backend<0, 0, signed_magnitude, checked> > checked_cpp_rational_backend;
23866: typedef number<checked_cpp_rational_backend> checked_cpp_rational;
23866:
23866: typedef number<cpp_int_backend<128, 128, unsigned_magnitude, checked, void> > checked_uint128_t;
23866: typedef number<cpp_int_backend<256, 256, unsigned_magnitude, checked, void> > checked_uint256_t;
23866: typedef number<cpp_int_backend<512, 512, unsigned_magnitude, checked, void> > checked_uint512_t;
23866: typedef number<cpp_int_backend<1024, 1024, unsigned_magnitude, checked, void> > checked_uint1024_t;
23866:
23866:
23866: typedef number<cpp_int_backend<128, 128, signed_magnitude, checked, void> > checked_int128_t;
23866: typedef number<cpp_int_backend<256, 256, signed_magnitude, checked, void> > checked_int256_t;
23866: typedef number<cpp_int_backend<512, 512, signed_magnitude, checked, void> > checked_int512_t;
23866: typedef number<cpp_int_backend<1024, 1024, signed_magnitude, checked, void> > checked_int1024_t;
23866: # 2241 "/usr/include/boost/multiprecision/cpp_int.hpp" 3 4
23866: }}
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/multiprecision/cpp_int/comparison.hpp" 1 3 4
23866: # 9 "/usr/include/boost/multiprecision/cpp_int/comparison.hpp" 3 4
23866: #define BOOST_MP_CPP_INT_COMPARISON_HPP
23866:
23866:
23866:
23866:
23866: namespace boost { namespace multiprecision { namespace backends {
23866: # 24 "/usr/include/boost/multiprecision/cpp_int/comparison.hpp" 3 4
23866: template <unsigned MinBits, unsigned MaxBits, cpp_integer_type SignType, cpp_int_check_type Checked, class Allocator>
23866: inline constexpr typename enable_if_c<
23866: !is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> >::value,
23866: bool>::type
23866: eval_eq(const cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>& a, const cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>& b) noexcept
23866: {
23866: return (a.sign() == b.sign()) && (a.size() == b.size()) && std_constexpr::equal(a.limbs(), a.limbs() + a.size(), b.limbs());
23866: }
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<
23866: !is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value,
23866: bool>::type
23866: eval_eq(const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& a, const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& b) noexcept
23866: {
23866: return (a.sign() == b.sign()) && (a.size() == b.size()) && std_constexpr::equal(a.limbs(), a.limbs() + a.size(), b.limbs());
23866: }
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class Allocator>
23866: inline constexpr typename enable_if_c<
23866: !is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, Allocator> >::value,
23866: bool>::type
23866: eval_eq(const cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, Allocator>& a, limb_type b) noexcept
23866: {
23866: return (a.sign() == false) && (a.size() == 1) && (*a.limbs() == b);
23866: }
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class Allocator>
23866: inline constexpr typename enable_if_c<
23866: !is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, Allocator> >::value,
23866: bool>::type
23866: eval_eq(const cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, Allocator>& a, signed_limb_type b) noexcept
23866: {
23866: return (a.sign() == (b < 0)) && (a.size() == 1) && (*a.limbs() == boost::multiprecision::detail::unsigned_abs(b));
23866: }
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class Allocator>
23866: inline constexpr typename enable_if_c<
23866: !is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, Allocator> >::value,
23866: bool>::type
23866: eval_eq(const cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, Allocator>& a, limb_type b) noexcept
23866: {
23866: return (a.size() == 1) && (*a.limbs() == b);
23866: }
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class Allocator>
23866: inline constexpr typename enable_if_c<
23866: !is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, Allocator> >::value,
23866: bool>::type
23866: eval_eq(const cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, Allocator>& a, signed_limb_type b) noexcept
23866: {
23866: return (b < 0) ? eval_eq(a, cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, Allocator>(b)) : eval_eq(a, static_cast<limb_type>(b));
23866: }
23866:
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class Allocator>
23866: inline constexpr typename enable_if_c<
23866: !is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, Allocator> >::value,
23866: bool>::type
23866: eval_lt(const cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, Allocator>& a, limb_type b) noexcept
23866: {
23866: if (a.sign())
23866: return true;
23866: if (a.size() > 1)
23866: return false;
23866: return *a.limbs() < b;
23866: }
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class Allocator>
23866: inline constexpr typename enable_if_c<
23866: !is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, Allocator> >::value,
23866: bool>::type
23866: eval_lt(const cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, Allocator>& a, signed_limb_type b) noexcept
23866: {
23866: if ((b == 0) || (a.sign() != (b < 0)))
23866: return a.sign();
23866: if (a.sign())
23866: {
23866: if (a.size() > 1)
23866: return true;
23866: return *a.limbs() > boost::multiprecision::detail::unsigned_abs(b);
23866: }
23866: else
23866: {
23866: if (a.size() > 1)
23866: return false;
23866: return *a.limbs() < boost::multiprecision::detail::unsigned_abs(b);
23866: }
23866: }
23866:
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class Allocator>
23866: inline constexpr typename enable_if_c<
23866: !is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, Allocator> >::value,
23866: bool>::type
23866: eval_lt(const cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, Allocator>& a, limb_type b) noexcept
23866: {
23866: if (a.size() > 1)
23866: return false;
23866: return *a.limbs() < b;
23866: }
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class Allocator>
23866: inline constexpr typename enable_if_c<
23866: !is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, Allocator> >::value,
23866: bool>::type
23866: eval_lt(const cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, Allocator>& a, signed_limb_type b) noexcept
23866: {
23866: return (b < 0) ? a.compare(b) < 0 : eval_lt(a, static_cast<limb_type>(b));
23866: }
23866:
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class Allocator>
23866: inline constexpr typename enable_if_c<
23866: !is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, Allocator> >::value,
23866: bool>::type
23866: eval_gt(const cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, Allocator>& a, limb_type b) noexcept
23866: {
23866: if (a.sign())
23866: return false;
23866: if (a.size() > 1)
23866: return true;
23866: return *a.limbs() > b;
23866: }
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class Allocator>
23866: inline constexpr typename enable_if_c<
23866: !is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, Allocator> >::value,
23866: bool>::type
23866: eval_gt(const cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, Allocator>& a, signed_limb_type b) noexcept
23866: {
23866: if (b == 0)
23866: return !a.sign() && ((a.size() > 1) || *a.limbs());
23866: if (a.sign() != (b < 0))
23866: return !a.sign();
23866: if (a.sign())
23866: {
23866: if (a.size() > 1)
23866: return false;
23866: return *a.limbs() < boost::multiprecision::detail::unsigned_abs(b);
23866: }
23866: else
23866: {
23866: if (a.size() > 1)
23866: return true;
23866: return *a.limbs() > boost::multiprecision::detail::unsigned_abs(b);
23866: }
23866: }
23866:
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class Allocator>
23866: inline constexpr typename enable_if_c<
23866: !is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, Allocator> >::value,
23866: bool>::type
23866: eval_gt(const cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, Allocator>& a, limb_type b) noexcept
23866: {
23866: if (a.size() > 1)
23866: return true;
23866: return *a.limbs() > b;
23866: }
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class Allocator>
23866: inline constexpr typename enable_if_c<
23866: !is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, Allocator> >::value,
23866: bool>::type
23866: eval_gt(const cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, Allocator>& a, signed_limb_type b) noexcept
23866: {
23866: return (b < 0) ? a.compare(b) > 0 : eval_gt(a, static_cast<limb_type>(b));
23866: }
23866:
23866:
23866:
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked>
23866: inline constexpr typename enable_if_c<
23866: is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, void> >::value,
23866: bool>::value
23866: eval_eq(const cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, void>& a, const cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, void>& b) noexcept
23866: {
23866: return (a.sign() == b.sign()) && (*a.limbs() == *b.limbs());
23866: }
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked>
23866: inline constexpr typename enable_if_c<
23866: is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, void> >::value,
23866: bool>::value
23866: eval_eq(const cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, void>& a, const cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, void>& b) noexcept
23866: {
23866: return *a.limbs() == *b.limbs();
23866: }
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class U>
23866: inline constexpr typename enable_if_c<
23866: is_unsigned<U>::value && is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, void> >::value,
23866: bool>::type
23866: eval_eq(const cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, void>& a, U b) noexcept
23866: {
23866: return !a.sign() && (*a.limbs() == b);
23866: }
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class S>
23866: inline constexpr typename enable_if_c<
23866: is_signed<S>::value && is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, void> >::value,
23866: bool>::type
23866: eval_eq(const cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, void>& a, S b) noexcept
23866: {
23866: return (a.sign() == (b < 0)) && (*a.limbs() == boost::multiprecision::detail::unsigned_abs(b));
23866: }
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class U>
23866: inline constexpr typename enable_if_c<
23866: is_unsigned<U>::value && is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, void> >::value,
23866: bool>::type
23866: eval_eq(const cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, void>& a, U b) noexcept
23866: {
23866: return *a.limbs() == b;
23866: }
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class S>
23866: inline constexpr typename enable_if_c<
23866: is_signed<S>::value && is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, void> >::value,
23866: bool>::type
23866: eval_eq(const cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, void>& a, S b) noexcept
23866: {
23866: typedef typename make_unsigned<S>::type ui_type;
23866: if (b < 0)
23866: {
23866: cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, void> t(b);
23866: return *a.limbs() == *t.limbs();
23866: }
23866: else
23866: {
23866: return *a.limbs() == static_cast<ui_type>(b);
23866: }
23866: }
23866:
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked>
23866: inline constexpr typename enable_if_c<
23866: is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, void> >::value,
23866: bool>::type
23866: eval_lt(const cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, void>& a, const cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, void>& b) noexcept
23866: {
23866: if (a.sign() != b.sign())
23866: return a.sign();
23866: return a.sign() ? *a.limbs() > *b.limbs() : *a.limbs() < *b.limbs();
23866: }
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked>
23866: inline constexpr typename enable_if_c<
23866: is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, void> >::value,
23866: bool>::type
23866: eval_lt(const cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, void>& a, const cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, void>& b) noexcept
23866: {
23866: return *a.limbs() < *b.limbs();
23866: }
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class U>
23866: inline constexpr typename enable_if_c<
23866: is_unsigned<U>::value && is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, void> >::value,
23866: bool>::type
23866: eval_lt(const cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, void>& a, U b) noexcept
23866: {
23866: if (a.sign())
23866: return true;
23866: return *a.limbs() < b;
23866: }
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class S>
23866: inline constexpr typename enable_if_c<
23866: is_signed<S>::value && is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, void> >::value,
23866: bool>::type
23866: eval_lt(const cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, void>& a, S b) noexcept
23866: {
23866: if (a.sign() != (b < 0))
23866: return a.sign();
23866: return a.sign() ? (*a.limbs() > boost::multiprecision::detail::unsigned_abs(b)) : (*a.limbs() < boost::multiprecision::detail::unsigned_abs(b));
23866: }
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class U>
23866: inline constexpr typename enable_if_c<
23866: is_unsigned<U>::value && is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, void> >::value,
23866: bool>::type
23866: eval_lt(const cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, void>& a, U b) noexcept
23866: {
23866: return *a.limbs() < b;
23866: }
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class S>
23866: inline constexpr typename enable_if_c<
23866: is_signed<S>::value && is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, void> >::value,
23866: bool>::type
23866: eval_lt(const cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, void>& a, S b) noexcept
23866: {
23866: typedef typename make_unsigned<S>::type ui_type;
23866: if (b < 0)
23866: {
23866: cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, void> t(b);
23866: return *a.limbs() < *t.limbs();
23866: }
23866: else
23866: {
23866: return *a.limbs() < static_cast<ui_type>(b);
23866: }
23866: }
23866:
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked>
23866: inline constexpr typename enable_if_c<
23866: is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, void> >::value,
23866: bool>::type
23866: eval_gt(const cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, void>& a, const cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, void>& b) noexcept
23866: {
23866: if (a.sign() != b.sign())
23866: return !a.sign();
23866: return a.sign() ? *a.limbs() < *b.limbs() : *a.limbs() > *b.limbs();
23866: }
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked>
23866: inline constexpr typename enable_if_c<
23866: is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, void> >::value,
23866: bool>::type
23866: eval_gt(const cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, void>& a, const cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, void>& b) noexcept
23866: {
23866: return *a.limbs() > *b.limbs();
23866: }
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class U>
23866: inline constexpr typename enable_if_c<
23866: is_unsigned<U>::value && is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, void> >::value,
23866: bool>::type
23866: eval_gt(const cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, void>& a, U b) noexcept
23866: {
23866: if (a.sign())
23866: return false;
23866: return *a.limbs() > b;
23866: }
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class S>
23866: inline constexpr typename enable_if_c<
23866: is_signed<S>::value && is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, void> >::value,
23866: bool>::type
23866: eval_gt(const cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, void>& a, S b) noexcept
23866: {
23866: if (a.sign() != (b < 0))
23866: return !a.sign();
23866: return a.sign() ? (*a.limbs() < boost::multiprecision::detail::unsigned_abs(b)) : (*a.limbs() > boost::multiprecision::detail::unsigned_abs(b));
23866: }
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class U>
23866: inline constexpr typename enable_if_c<
23866: is_unsigned<U>::value && is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, void> >::value,
23866: bool>::type
23866: eval_gt(const cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, void>& a, U b) noexcept
23866: {
23866: return *a.limbs() > b;
23866: }
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class S>
23866: inline constexpr typename enable_if_c<
23866: is_signed<S>::value && is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, void> >::value,
23866: bool>::type
23866: eval_gt(const cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, void>& a, S b) noexcept
23866: {
23866: typedef typename make_unsigned<S>::type ui_type;
23866: if (b < 0)
23866: {
23866: cpp_int_backend<MinBits, MaxBits, unsigned_magnitude, Checked, void> t(b);
23866: return *a.limbs() > *t.limbs();
23866: }
23866: else
23866: {
23866: return *a.limbs() > static_cast<ui_type>(b);
23866: }
23866: }
23866:
23866:
23866:
23866:
23866:
23866: }}}
23866: # 2247 "/usr/include/boost/multiprecision/cpp_int.hpp" 2 3 4
23866: # 1 "/usr/include/boost/multiprecision/cpp_int/add.hpp" 1 3 4
23866: # 9 "/usr/include/boost/multiprecision/cpp_int/add.hpp" 3 4
23866: #define BOOST_MP_CPP_INT_ADD_HPP
23866:
23866:
23866:
23866: namespace boost { namespace multiprecision { namespace backends {
23866: # 23 "/usr/include/boost/multiprecision/cpp_int/add.hpp" 3 4
23866: template <class CppInt1, class CppInt2, class CppInt3>
23866: inline constexpr void add_unsigned(CppInt1& result, const CppInt2& a, const CppInt3& b) noexcept((is_non_throwing_cpp_int<CppInt1>::value))
23866: {
23866: using ::boost::multiprecision::std_constexpr::swap;
23866:
23866:
23866: double_limb_type carry = 0;
23866: unsigned m(0), x(0);
23866: unsigned as = a.size();
23866: unsigned bs = b.size();
23866: minmax(as, bs, m, x);
23866: if (x == 1)
23866: {
23866: bool s = a.sign();
23866: result = static_cast<double_limb_type>(*a.limbs()) + static_cast<double_limb_type>(*b.limbs());
23866: result.sign(s);
23866: return;
23866: }
23866: result.resize(x, x);
23866: typename CppInt2::const_limb_pointer pa = a.limbs();
23866: typename CppInt3::const_limb_pointer pb = b.limbs();
23866: typename CppInt1::limb_pointer pr = result.limbs();
23866: typename CppInt1::limb_pointer pr_end = pr + m;
23866:
23866: if (as < bs)
23866: swap(pa, pb);
23866:
23866:
23866: while (pr != pr_end)
23866: {
23866: carry += static_cast<double_limb_type>(*pa) + static_cast<double_limb_type>(*pb);
23866:
23866:
23866:
23866: *pr = static_cast<limb_type>(carry);
23866:
23866: carry >>= CppInt1::limb_bits;
23866: ++pr, ++pa, ++pb;
23866: }
23866: pr_end += x - m;
23866:
23866: while (pr != pr_end)
23866: {
23866: if (!carry)
23866: {
23866: if (pa != pr)
23866: std_constexpr::copy(pa, pa + (pr_end - pr), pr);
23866: break;
23866: }
23866: carry += static_cast<double_limb_type>(*pa);
23866:
23866:
23866:
23866: *pr = static_cast<limb_type>(carry);
23866:
23866: carry >>= CppInt1::limb_bits;
23866: ++pr, ++pa;
23866: }
23866: if (carry)
23866: {
23866:
23866: result.resize(x + 1, x + 1);
23866: if (result.size() > x)
23866: result.limbs()[x] = static_cast<limb_type>(carry);
23866: }
23866: result.normalize();
23866: result.sign(a.sign());
23866: }
23866:
23866:
23866:
23866: template <class CppInt1, class CppInt2>
23866: inline constexpr void add_unsigned(CppInt1& result, const CppInt2& a, const limb_type& o) noexcept((is_non_throwing_cpp_int<CppInt1>::value))
23866: {
23866:
23866:
23866: if (&result != &a)
23866: result.resize(a.size(), a.size());
23866: double_limb_type carry = o;
23866: typename CppInt1::limb_pointer pr = result.limbs();
23866: typename CppInt2::const_limb_pointer pa = a.limbs();
23866: unsigned i = 0;
23866:
23866: for (; carry && (i < result.size()); ++i)
23866: {
23866: carry += static_cast<double_limb_type>(pa[i]);
23866:
23866:
23866:
23866: pr[i] = static_cast<limb_type>(carry);
23866:
23866: carry >>= CppInt1::limb_bits;
23866: }
23866:
23866: if (&a != &result)
23866: {
23866: for (; i < result.size(); ++i)
23866: pr[i] = pa[i];
23866: }
23866: if (carry)
23866: {
23866:
23866: unsigned x = result.size();
23866: result.resize(x + 1, x + 1);
23866: if (result.size() > x)
23866: result.limbs()[x] = static_cast<limb_type>(carry);
23866: }
23866: result.normalize();
23866: result.sign(a.sign());
23866: }
23866:
23866:
23866:
23866: template <class CppInt1, class CppInt2, class CppInt3>
23866: inline constexpr void subtract_unsigned(CppInt1& result, const CppInt2& a, const CppInt3& b) noexcept((is_non_throwing_cpp_int<CppInt1>::value))
23866: {
23866: using ::boost::multiprecision::std_constexpr::swap;
23866:
23866:
23866: double_limb_type borrow = 0;
23866: unsigned m(0), x(0);
23866: minmax(a.size(), b.size(), m, x);
23866:
23866:
23866:
23866: if (x == 1)
23866: {
23866: bool s = a.sign();
23866: limb_type al = *a.limbs();
23866: limb_type bl = *b.limbs();
23866: if (bl > al)
23866: {
23866: ::boost::multiprecision::std_constexpr::swap(al, bl);
23866: s = !s;
23866: }
23866: result = al - bl;
23866: result.sign(s);
23866: return;
23866: }
23866:
23866:
23866: int c = a.compare_unsigned(b);
23866:
23866: result.resize(x, x);
23866:
23866: typename CppInt2::const_limb_pointer pa = a.limbs();
23866: typename CppInt3::const_limb_pointer pb = b.limbs();
23866: typename CppInt1::limb_pointer pr = result.limbs();
23866: bool swapped = false;
23866: if (c < 0)
23866: {
23866: swap(pa, pb);
23866: swapped = true;
23866: }
23866: else if (c == 0)
23866: {
23866: result = static_cast<limb_type>(0);
23866: return;
23866: }
23866:
23866: unsigned i = 0;
23866:
23866: while (i < m)
23866: {
23866: borrow = static_cast<double_limb_type>(pa[i]) - static_cast<double_limb_type>(pb[i]) - borrow;
23866: pr[i] = static_cast<limb_type>(borrow);
23866: borrow = (borrow >> CppInt1::limb_bits) & 1u;
23866: ++i;
23866: }
23866:
23866: while (borrow && (i < x))
23866: {
23866: borrow = static_cast<double_limb_type>(pa[i]) - borrow;
23866: pr[i] = static_cast<limb_type>(borrow);
23866: borrow = (borrow >> CppInt1::limb_bits) & 1u;
23866: ++i;
23866: }
23866:
23866: if ((x != i) && (pa != pr))
23866: std_constexpr::copy(pa + i, pa + x, pr + i);
23866: (static_cast <bool> (0 == borrow) ? void (0) : __assert_fail ("0 == borrow", "/usr/include/boost/multiprecision/cpp_int/add.hpp", 203, __extension__ __PRETTY_FUNCTION__));
23866:
23866:
23866:
23866:
23866: result.normalize();
23866: result.sign(a.sign());
23866: if (swapped)
23866: result.negate();
23866: }
23866:
23866:
23866:
23866: template <class CppInt1, class CppInt2>
23866: inline constexpr void subtract_unsigned(CppInt1& result, const CppInt2& a, const limb_type& b) noexcept((is_non_throwing_cpp_int<CppInt1>::value))
23866: {
23866:
23866:
23866:
23866:
23866:
23866: constexpr double_limb_type borrow = static_cast<double_limb_type>(CppInt1::max_limb_value) + 1;
23866:
23866: result.resize(a.size(), a.size());
23866: typename CppInt1::limb_pointer pr = result.limbs();
23866: typename CppInt2::const_limb_pointer pa = a.limbs();
23866: if (*pa >= b)
23866: {
23866: *pr = *pa - b;
23866: if (&result != &a)
23866: {
23866: std_constexpr::copy(pa + 1, pa + a.size(), pr + 1);
23866: result.sign(a.sign());
23866: }
23866: else if ((result.size() == 1) && (*pr == 0))
23866: {
23866: result.sign(false);
23866: }
23866: }
23866: else if (result.size() == 1)
23866: {
23866: *pr = b - *pa;
23866: result.sign(!a.sign());
23866: }
23866: else
23866: {
23866: *pr = static_cast<limb_type>((borrow + *pa) - b);
23866: unsigned i = 1;
23866: while (!pa[i])
23866: {
23866: pr[i] = CppInt1::max_limb_value;
23866: ++i;
23866: }
23866: pr[i] = pa[i] - 1;
23866: if (&result != &a)
23866: {
23866: ++i;
23866: std_constexpr::copy(pa + i, pa + a.size(), pr + i);
23866: }
23866: result.normalize();
23866: result.sign(a.sign());
23866: }
23866: }
23866:
23866:
23866:
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>::type
23866: eval_add(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: eval_add(result, result, o);
23866: }
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2, unsigned MinBits3, unsigned MaxBits3, cpp_integer_type SignType3, cpp_int_check_type Checked3, class Allocator3>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits3, MaxBits3, SignType3, Checked3, Allocator3> >::value>::type
23866: eval_add(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& a,
23866: const cpp_int_backend<MinBits3, MaxBits3, SignType3, Checked3, Allocator3>& b) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: if (a.sign() != b.sign())
23866: {
23866: subtract_unsigned(result, a, b);
23866: return;
23866: }
23866: add_unsigned(result, a, b);
23866: }
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_add(cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result, const limb_type& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: if (result.sign())
23866: {
23866: subtract_unsigned(result, result, o);
23866: }
23866: else
23866: add_unsigned(result, result, o);
23866: }
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>::type
23866: eval_add(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& a,
23866: const limb_type& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: if (a.sign())
23866: {
23866: subtract_unsigned(result, a, o);
23866: }
23866: else
23866: add_unsigned(result, a, o);
23866: }
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_add(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const signed_limb_type& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: if (o < 0)
23866: eval_subtract(result, static_cast<limb_type>(boost::multiprecision::detail::unsigned_abs(o)));
23866: else if (o > 0)
23866: eval_add(result, static_cast<limb_type>(o));
23866: }
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>::type
23866: eval_add(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& a,
23866: const signed_limb_type& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: if (o < 0)
23866: eval_subtract(result, a, static_cast<limb_type>(boost::multiprecision::detail::unsigned_abs(o)));
23866: else if (o > 0)
23866: eval_add(result, a, static_cast<limb_type>(o));
23866: else if (&result != &a)
23866: result = a;
23866: }
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_subtract(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const limb_type& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: if (result.sign())
23866: {
23866: add_unsigned(result, result, o);
23866: }
23866: else
23866: subtract_unsigned(result, result, o);
23866: }
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>::type
23866: eval_subtract(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& a,
23866: const limb_type& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: if (a.sign())
23866: {
23866: add_unsigned(result, a, o);
23866: }
23866: else
23866: {
23866: subtract_unsigned(result, a, o);
23866: }
23866: }
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_subtract(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const signed_limb_type& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: if (o)
23866: {
23866: if (o < 0)
23866: eval_add(result, static_cast<limb_type>(boost::multiprecision::detail::unsigned_abs(o)));
23866: else
23866: eval_subtract(result, static_cast<limb_type>(o));
23866: }
23866: }
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>::type
23866: eval_subtract(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& a,
23866: const signed_limb_type& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: if (o)
23866: {
23866: if (o < 0)
23866: eval_add(result, a, static_cast<limb_type>(boost::multiprecision::detail::unsigned_abs(o)));
23866: else
23866: eval_subtract(result, a, static_cast<limb_type>(o));
23866: }
23866: else if (&result != &a)
23866: result = a;
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_increment(cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866:
23866:
23866:
23866: constexpr const limb_type one = 1;
23866:
23866: if (!result.sign() && (result.limbs()[0] < cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::max_limb_value))
23866: ++result.limbs()[0];
23866: else if (result.sign() && result.limbs()[0])
23866: {
23866: --result.limbs()[0];
23866: if (!result.limbs()[0])
23866: result.sign(false);
23866: }
23866: else
23866: eval_add(result, one);
23866: }
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_decrement(cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866:
23866:
23866:
23866: constexpr const limb_type one = 1;
23866:
23866: if (!result.sign() && result.limbs()[0])
23866: --result.limbs()[0];
23866: else if (result.sign() && (result.limbs()[0] < cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::max_limb_value))
23866: ++result.limbs()[0];
23866: else
23866: eval_subtract(result, one);
23866: }
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>::type
23866: eval_subtract(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: eval_subtract(result, result, o);
23866: }
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2, unsigned MinBits3, unsigned MaxBits3, cpp_integer_type SignType3, cpp_int_check_type Checked3, class Allocator3>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits3, MaxBits3, SignType3, Checked3, Allocator3> >::value>::type
23866: eval_subtract(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& a,
23866: const cpp_int_backend<MinBits3, MaxBits3, SignType3, Checked3, Allocator3>& b) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: if (a.sign() != b.sign())
23866: {
23866: add_unsigned(result, a, b);
23866: return;
23866: }
23866: subtract_unsigned(result, a, b);
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<
23866: is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && (is_signed_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value || is_signed_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)>::type
23866: eval_add(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: if (result.sign() != o.sign())
23866: {
23866: if (*o.limbs() > *result.limbs())
23866: {
23866: *result.limbs() = detail::checked_subtract(*o.limbs(), *result.limbs(), typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::checked_type());
23866: result.negate();
23866: }
23866: else
23866: *result.limbs() = detail::checked_subtract(*result.limbs(), *o.limbs(), typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::checked_type());
23866: }
23866: else
23866: *result.limbs() = detail::checked_add(*result.limbs(), *o.limbs(), typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::checked_type());
23866: result.normalize();
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<
23866: is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_unsigned_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_unsigned_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_add(cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: *result.limbs() = detail::checked_add(*result.limbs(), *o.limbs(), typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::checked_type());
23866: result.normalize();
23866: }
23866:
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<
23866: is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && (is_signed_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value || is_signed_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)>::type
23866: eval_subtract(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: if (result.sign() != o.sign())
23866: {
23866: *result.limbs() = detail::checked_add(*result.limbs(), *o.limbs(), typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::checked_type());
23866: }
23866: else if (*result.limbs() < *o.limbs())
23866: {
23866: *result.limbs() = detail::checked_subtract(*o.limbs(), *result.limbs(), typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::checked_type());
23866: result.negate();
23866: }
23866: else
23866: *result.limbs() = detail::checked_subtract(*result.limbs(), *o.limbs(), typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::checked_type());
23866: result.normalize();
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<
23866: is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_unsigned_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_unsigned_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_subtract(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: *result.limbs() = detail::checked_subtract(*result.limbs(), *o.limbs(), typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::checked_type());
23866: result.normalize();
23866: }
23866:
23866:
23866:
23866:
23866:
23866: }}}
23866: # 2248 "/usr/include/boost/multiprecision/cpp_int.hpp" 2 3 4
23866: # 1 "/usr/include/boost/multiprecision/cpp_int/multiply.hpp" 1 3 4
23866: # 11 "/usr/include/boost/multiprecision/cpp_int/multiply.hpp" 3 4
23866: #define BOOST_MP_CPP_INT_MUL_HPP
23866:
23866: # 1 "/usr/include/boost/multiprecision/integer.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MP_INTEGER_HPP
23866:
23866: # 1 "/usr/include/boost/multiprecision/cpp_int.hpp" 1 3 4
23866: # 10 "/usr/include/boost/multiprecision/integer.hpp" 2 3 4
23866: # 1 "/usr/include/boost/multiprecision/detail/bitscan.hpp" 1 3 4
23866: # 9 "/usr/include/boost/multiprecision/detail/bitscan.hpp" 3 4
23866: #define BOOST_MP_DETAIL_BITSCAN_HPP
23866:
23866: # 1 "/usr/include/boost/predef/other/endian.h" 1 3 4
23866: # 195 "/usr/include/boost/predef/other/endian.h" 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 12 "/usr/include/boost/multiprecision/detail/bitscan.hpp" 2 3 4
23866: # 1 "/usr/include/boost/cstdint.hpp" 1 3 4
23866: # 13 "/usr/include/boost/multiprecision/detail/bitscan.hpp" 2 3 4
23866:
23866:
23866:
23866:
23866:
23866: namespace boost { namespace multiprecision { namespace detail {
23866:
23866: template <class Unsigned>
23866: inline constexpr unsigned find_lsb_default(Unsigned mask)
23866: {
23866: unsigned result = 0;
23866: while (!(mask & 1u))
23866: {
23866: mask >>= 1;
23866: ++result;
23866: }
23866: return result;
23866: }
23866:
23866: template <class Unsigned>
23866: inline constexpr unsigned find_msb_default(Unsigned mask)
23866: {
23866: unsigned index = 0;
23866: while (mask)
23866: {
23866: ++index;
23866: mask >>= 1;
23866: }
23866: return --index;
23866: }
23866:
23866: template <class Unsigned>
23866: inline constexpr unsigned find_lsb(Unsigned mask, const mpl::int_<0>&)
23866: {
23866: return find_lsb_default(mask);
23866: }
23866:
23866: template <class Unsigned>
23866: inline constexpr unsigned find_msb(Unsigned mask, const mpl::int_<0>&)
23866: {
23866: return find_msb_default(mask);
23866: }
23866: # 146 "/usr/include/boost/multiprecision/detail/bitscan.hpp" 3 4
23866: inline __attribute__ ((__always_inline__)) unsigned find_lsb(unsigned mask, mpl::int_<1> const&)
23866: {
23866: return __builtin_ctz(mask);
23866: }
23866: inline __attribute__ ((__always_inline__)) unsigned find_lsb(unsigned long mask, mpl::int_<2> const&)
23866: {
23866: return __builtin_ctzl(mask);
23866: }
23866: inline __attribute__ ((__always_inline__)) unsigned find_lsb(boost::ulong_long_type mask, mpl::int_<3> const&)
23866: {
23866: return __builtin_ctzll(mask);
23866: }
23866: inline __attribute__ ((__always_inline__)) unsigned find_msb(unsigned mask, mpl::int_<1> const&)
23866: {
23866: return sizeof(unsigned) * 8 - 1 - __builtin_clz(mask);
23866: }
23866: inline __attribute__ ((__always_inline__)) unsigned find_msb(unsigned long mask, mpl::int_<2> const&)
23866: {
23866: return sizeof(unsigned long) * 8 - 1 - __builtin_clzl(mask);
23866: }
23866: inline __attribute__ ((__always_inline__)) unsigned find_msb(boost::ulong_long_type mask, mpl::int_<3> const&)
23866: {
23866: return sizeof(boost::ulong_long_type) * 8 - 1 - __builtin_clzll(mask);
23866: }
23866: # 212 "/usr/include/boost/multiprecision/detail/bitscan.hpp" 3 4
23866: template <class Unsigned>
23866: inline __attribute__ ((__always_inline__)) constexpr unsigned find_lsb(Unsigned mask)
23866: {
23866: typedef typename make_unsigned<Unsigned>::type ui_type;
23866: typedef typename mpl::if_c<
23866: sizeof(Unsigned) <= sizeof(unsigned),
23866: mpl::int_<1>,
23866: typename mpl::if_c<
23866: sizeof(Unsigned) <= sizeof(unsigned long),
23866: mpl::int_<2>,
23866: typename mpl::if_c<
23866: sizeof(Unsigned) <= sizeof(boost::ulong_long_type),
23866: mpl::int_<3>,
23866: mpl::int_<0> >::type>::type>::type tag_type;
23866:
23866: if (__builtin_is_constant_evaluated())
23866: {
23866: return find_lsb_default(mask);
23866: }
23866: else
23866:
23866: return find_lsb(static_cast<ui_type>(mask), tag_type());
23866: }
23866: template <class Unsigned>
23866: inline __attribute__ ((__always_inline__)) constexpr unsigned find_msb(Unsigned mask)
23866: {
23866: typedef typename make_unsigned<Unsigned>::type ui_type;
23866: typedef typename mpl::if_c<
23866: sizeof(Unsigned) <= sizeof(unsigned),
23866: mpl::int_<1>,
23866: typename mpl::if_c<
23866: sizeof(Unsigned) <= sizeof(unsigned long),
23866: mpl::int_<2>,
23866: typename mpl::if_c<
23866: sizeof(Unsigned) <= sizeof(boost::ulong_long_type),
23866: mpl::int_<3>,
23866: mpl::int_<0> >::type>::type>::type tag_type;
23866:
23866: if (__builtin_is_constant_evaluated())
23866: {
23866: return find_msb_default(mask);
23866: }
23866: else
23866:
23866: return find_msb(static_cast<ui_type>(mask), tag_type());
23866: }
23866: # 314 "/usr/include/boost/multiprecision/detail/bitscan.hpp" 3 4
23866: }}}
23866: # 11 "/usr/include/boost/multiprecision/integer.hpp" 2 3 4
23866:
23866: namespace boost {
23866: namespace multiprecision {
23866:
23866: template <class Integer, class I2>
23866: inline constexpr typename enable_if_c<is_integral<Integer>::value && is_integral<I2>::value, Integer&>::type
23866: multiply(Integer& result, const I2& a, const I2& b)
23866: {
23866: return result = static_cast<Integer>(a) * static_cast<Integer>(b);
23866: }
23866: template <class Integer, class I2>
23866: inline constexpr typename enable_if_c<is_integral<Integer>::value && is_integral<I2>::value, Integer&>::type
23866: add(Integer& result, const I2& a, const I2& b)
23866: {
23866: return result = static_cast<Integer>(a) + static_cast<Integer>(b);
23866: }
23866: template <class Integer, class I2>
23866: inline constexpr typename enable_if_c<is_integral<Integer>::value && is_integral<I2>::value, Integer&>::type
23866: subtract(Integer& result, const I2& a, const I2& b)
23866: {
23866: return result = static_cast<Integer>(a) - static_cast<Integer>(b);
23866: }
23866:
23866: template <class Integer>
23866: inline constexpr typename enable_if_c<is_integral<Integer>::value>::type divide_qr(const Integer& x, const Integer& y, Integer& q, Integer& r)
23866: {
23866: q = x / y;
23866: r = x % y;
23866: }
23866:
23866: template <class I1, class I2>
23866: inline constexpr typename enable_if_c<is_integral<I1>::value && is_integral<I2>::value, I2>::type integer_modulus(const I1& x, I2 val)
23866: {
23866: return static_cast<I2>(x % val);
23866: }
23866:
23866: namespace detail {
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class I>
23866: struct double_integer
23866: {
23866: static const unsigned int_t_digits =
23866: 2 * sizeof(I) <= sizeof(boost::long_long_type) ? std::numeric_limits<I>::digits * 2 : 1;
23866:
23866: typedef typename mpl::if_c<
23866: 2 * sizeof(I) <= sizeof(boost::long_long_type),
23866: typename mpl::if_c<
23866: is_signed<I>::value,
23866: typename boost::int_t<int_t_digits>::least,
23866: typename boost::uint_t<int_t_digits>::least>::type,
23866: typename mpl::if_c<
23866: 2 * sizeof(I) <= sizeof(double_limb_type),
23866: typename mpl::if_c<
23866: is_signed<I>::value,
23866: signed_double_limb_type,
23866: double_limb_type>::type,
23866: number<cpp_int_backend<sizeof(I) * 8 * 2, sizeof(I) * 8 * 2, (is_signed<I>::value ? signed_magnitude : unsigned_magnitude), unchecked, void> > >::type>::type type;
23866: };
23866:
23866: }
23866:
23866: template <class I1, class I2, class I3>
23866: constexpr typename enable_if_c<is_integral<I1>::value && is_unsigned<I2>::value && is_integral<I3>::value, I1>::type
23866: powm(const I1& a, I2 b, I3 c)
23866: {
23866: typedef typename detail::double_integer<I1>::type double_type;
23866:
23866: I1 x(1), y(a);
23866: double_type result(0);
23866:
23866: while (b > 0)
23866: {
23866: if (b & 1)
23866: {
23866: multiply(result, x, y);
23866: x = integer_modulus(result, c);
23866: }
23866: multiply(result, y, y);
23866: y = integer_modulus(result, c);
23866: b >>= 1;
23866: }
23866: return x % c;
23866: }
23866:
23866: template <class I1, class I2, class I3>
23866: inline constexpr typename enable_if_c<is_integral<I1>::value && is_signed<I2>::value && is_integral<I3>::value, I1>::type
23866: powm(const I1& a, I2 b, I3 c)
23866: {
23866: if (b < 0)
23866: {
23866: ::boost::throw_exception(std::runtime_error("powm requires a positive exponent."), ::boost::source_location("/usr/include/boost/multiprecision/integer.hpp", 106, __PRETTY_FUNCTION__));
23866: }
23866: return powm(a, static_cast<typename make_unsigned<I2>::type>(b), c);
23866: }
23866:
23866: template <class Integer>
23866: constexpr typename enable_if_c<is_integral<Integer>::value, unsigned>::type lsb(const Integer& val)
23866: {
23866: if (val <= 0)
23866: {
23866: if (val == 0)
23866: {
23866: ::boost::throw_exception(std::range_error("No bits were set in the operand."), ::boost::source_location("/usr/include/boost/multiprecision/integer.hpp", 118, __PRETTY_FUNCTION__));
23866: }
23866: else
23866: {
23866: ::boost::throw_exception(std::range_error("Testing individual bits in negative values is not supported - results are undefined."), ::boost::source_location("/usr/include/boost/multiprecision/integer.hpp", 122, __PRETTY_FUNCTION__));
23866: }
23866: }
23866: return detail::find_lsb(val);
23866: }
23866:
23866: template <class Integer>
23866: constexpr typename enable_if_c<is_integral<Integer>::value, unsigned>::type msb(Integer val)
23866: {
23866: if (val <= 0)
23866: {
23866: if (val == 0)
23866: {
23866: ::boost::throw_exception(std::range_error("No bits were set in the operand."), ::boost::source_location("/usr/include/boost/multiprecision/integer.hpp", 135, __PRETTY_FUNCTION__));
23866: }
23866: else
23866: {
23866: ::boost::throw_exception(std::range_error("Testing individual bits in negative values is not supported - results are undefined."), ::boost::source_location("/usr/include/boost/multiprecision/integer.hpp", 139, __PRETTY_FUNCTION__));
23866: }
23866: }
23866: return detail::find_msb(val);
23866: }
23866:
23866: template <class Integer>
23866: constexpr typename enable_if_c<is_integral<Integer>::value, bool>::type bit_test(const Integer& val, unsigned index)
23866: {
23866: Integer mask = 1;
23866: if (index >= sizeof(Integer) * 8)
23866: return 0;
23866: if (index)
23866: mask <<= index;
23866: return val & mask ? true : false;
23866: }
23866:
23866: template <class Integer>
23866: constexpr typename enable_if_c<is_integral<Integer>::value, Integer&>::type bit_set(Integer& val, unsigned index)
23866: {
23866: Integer mask = 1;
23866: if (index >= sizeof(Integer) * 8)
23866: return val;
23866: if (index)
23866: mask <<= index;
23866: val |= mask;
23866: return val;
23866: }
23866:
23866: template <class Integer>
23866: constexpr typename enable_if_c<is_integral<Integer>::value, Integer&>::type bit_unset(Integer& val, unsigned index)
23866: {
23866: Integer mask = 1;
23866: if (index >= sizeof(Integer) * 8)
23866: return val;
23866: if (index)
23866: mask <<= index;
23866: val &= ~mask;
23866: return val;
23866: }
23866:
23866: template <class Integer>
23866: constexpr typename enable_if_c<is_integral<Integer>::value, Integer&>::type bit_flip(Integer& val, unsigned index)
23866: {
23866: Integer mask = 1;
23866: if (index >= sizeof(Integer) * 8)
23866: return val;
23866: if (index)
23866: mask <<= index;
23866: val ^= mask;
23866: return val;
23866: }
23866:
23866: template <class Integer>
23866: constexpr typename enable_if_c<is_integral<Integer>::value, Integer>::type sqrt(const Integer& x, Integer& r)
23866: {
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: Integer s = 0;
23866: if (x == 0)
23866: {
23866: r = 0;
23866: return s;
23866: }
23866: int g = msb(x);
23866: if (g == 0)
23866: {
23866: r = 1;
23866: return s;
23866: }
23866:
23866: Integer t = 0;
23866: r = x;
23866: g /= 2;
23866: bit_set(s, g);
23866: bit_set(t, 2 * g);
23866: r = x - t;
23866: --g;
23866: do
23866: {
23866: t = s;
23866: t <<= g + 1;
23866: bit_set(t, 2 * g);
23866: if (t <= r)
23866: {
23866: bit_set(s, g);
23866: r -= t;
23866: }
23866: --g;
23866: } while (g >= 0);
23866: return s;
23866: }
23866:
23866: template <class Integer>
23866: constexpr typename enable_if_c<is_integral<Integer>::value, Integer>::type sqrt(const Integer& x)
23866: {
23866: Integer r(0);
23866: return sqrt(x, r);
23866: }
23866:
23866: }}
23866: # 14 "/usr/include/boost/multiprecision/cpp_int/multiply.hpp" 2 3 4
23866:
23866: namespace boost { namespace multiprecision { namespace backends {
23866: # 24 "/usr/include/boost/multiprecision/cpp_int/multiply.hpp" 3 4
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>::type
23866: eval_multiply(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& a,
23866: const limb_type& val) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: if (!val)
23866: {
23866: result = static_cast<limb_type>(0);
23866: return;
23866: }
23866: if ((void*)&a != (void*)&result)
23866: result.resize(a.size(), a.size());
23866: double_limb_type carry = 0;
23866: typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::limb_pointer p = result.limbs();
23866: typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::limb_pointer pe = result.limbs() + result.size();
23866: typename cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>::const_limb_pointer pa = a.limbs();
23866: while (p != pe)
23866: {
23866: carry += static_cast<double_limb_type>(*pa) * static_cast<double_limb_type>(val);
23866:
23866:
23866:
23866: *p = static_cast<limb_type>(carry);
23866:
23866: carry >>= cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::limb_bits;
23866: ++p, ++pa;
23866: }
23866: if (carry)
23866: {
23866: unsigned i = result.size();
23866: result.resize(i + 1, i + 1);
23866: if (result.size() > i)
23866: result.limbs()[i] = static_cast<limb_type>(carry);
23866: }
23866: result.sign(a.sign());
23866: if (is_fixed_precision<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)
23866: result.normalize();
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr void resize_for_carry(cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& , unsigned ) {}
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, class Allocator1>
23866: inline constexpr void resize_for_carry(cpp_int_backend<MinBits1, MaxBits1, SignType1, checked, Allocator1>& result, unsigned required)
23866: {
23866: if (result.size() < required)
23866: result.resize(required, required);
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: const size_t karatsuba_cutoff = 40;
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class Allocator>
23866: inline void multiply_karatsuba(
23866: cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, Allocator>& result,
23866: const cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, Allocator>& a,
23866: const cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, Allocator>& b,
23866: typename cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, Allocator>::scoped_shared_storage& storage)
23866: {
23866: typedef cpp_int_backend<MinBits, MaxBits, signed_magnitude, Checked, Allocator> cpp_int_type;
23866:
23866: unsigned as = a.size();
23866: unsigned bs = b.size();
23866:
23866:
23866:
23866:
23866: if ((as < karatsuba_cutoff) || (bs < karatsuba_cutoff))
23866: {
23866: eval_multiply(result, a, b);
23866: return;
23866: }
23866:
23866:
23866:
23866: unsigned n = (as > bs ? as : bs) / 2 + 1;
23866: # 131 "/usr/include/boost/multiprecision/cpp_int/multiply.hpp" 3 4
23866: unsigned sz = (std::min)(as, n);
23866: const cpp_int_type a_l(a.limbs(), 0, sz);
23866:
23866: sz = (std::min)(bs, n);
23866: const cpp_int_type b_l(b.limbs(), 0, sz);
23866:
23866: limb_type zero = 0;
23866: const cpp_int_type a_h(as > n ? a.limbs() + n : &zero, 0, as > n ? as - n : 1);
23866: const cpp_int_type b_h(bs > n ? b.limbs() + n : &zero, 0, bs > n ? bs - n : 1);
23866: # 150 "/usr/include/boost/multiprecision/cpp_int/multiply.hpp" 3 4
23866: cpp_int_type t1(storage, 2 * n + 2);
23866: cpp_int_type t2(storage, n + 1);
23866: cpp_int_type t3(storage, n + 1);
23866: # 161 "/usr/include/boost/multiprecision/cpp_int/multiply.hpp" 3 4
23866: cpp_int_type result_low(result.limbs(), 0, 2 * n);
23866: cpp_int_type result_high(result.limbs(), 2 * n, result.size() - 2 * n);
23866:
23866:
23866:
23866: multiply_karatsuba(result_low, a_l, b_l, storage);
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: for (unsigned i = result_low.size(); i < 2 * n; ++i)
23866: result.limbs()[i] = 0;
23866:
23866:
23866:
23866: multiply_karatsuba(result_high, a_h, b_h, storage);
23866: for (unsigned i = result_high.size() + 2 * n; i < result.size(); ++i)
23866: result.limbs()[i] = 0;
23866:
23866:
23866:
23866: add_unsigned(t2, a_l, a_h);
23866: add_unsigned(t3, b_l, b_h);
23866: multiply_karatsuba(t1, t2, t3, storage);
23866: # 196 "/usr/include/boost/multiprecision/cpp_int/multiply.hpp" 3 4
23866: subtract_unsigned(t1, t1, result_high);
23866: subtract_unsigned(t1, t1, result_low);
23866:
23866:
23866:
23866:
23866:
23866: cpp_int_type result_alias(result.limbs(), n, result.size() - n);
23866: add_unsigned(result_alias, result_alias, t1);
23866:
23866:
23866:
23866: storage.deallocate(t1.capacity() + t2.capacity() + t3.capacity());
23866:
23866: result.normalize();
23866: }
23866:
23866: inline unsigned karatsuba_storage_size(unsigned s)
23866: {
23866: # 225 "/usr/include/boost/multiprecision/cpp_int/multiply.hpp" 3 4
23866: return 5 * s;
23866: }
23866: # 235 "/usr/include/boost/multiprecision/cpp_int/multiply.hpp" 3 4
23866: template <unsigned MinBits, unsigned MaxBits, cpp_integer_type SignType, cpp_int_check_type Checked, class Allocator>
23866: inline typename enable_if_c<!is_fixed_precision<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> >::value>::type
23866: setup_karatsuba(
23866: cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>& result,
23866: const cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>& a,
23866: const cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>& b)
23866: {
23866: unsigned as = a.size();
23866: unsigned bs = b.size();
23866: unsigned s = as > bs ? as : bs;
23866: unsigned storage_size = karatsuba_storage_size(s);
23866: if (storage_size < 300)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: limb_type limbs[300];
23866: typename cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>::scoped_shared_storage storage(limbs, storage_size);
23866: multiply_karatsuba(result, a, b, storage);
23866: }
23866: else
23866: {
23866: typename cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>::scoped_shared_storage storage(result.allocator(), storage_size);
23866: multiply_karatsuba(result, a, b, storage);
23866: }
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2, unsigned MinBits3, unsigned MaxBits3, cpp_integer_type SignType3, cpp_int_check_type Checked3, class Allocator3>
23866: inline typename enable_if_c<is_fixed_precision<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value || is_fixed_precision<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value || is_fixed_precision<cpp_int_backend<MinBits3, MaxBits3, SignType3, Checked3, Allocator3> >::value>::type
23866: setup_karatsuba(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& a,
23866: const cpp_int_backend<MinBits3, MaxBits3, SignType3, Checked3, Allocator3>& b)
23866: {
23866: # 279 "/usr/include/boost/multiprecision/cpp_int/multiply.hpp" 3 4
23866: typedef cpp_int_backend<0, 0, signed_magnitude, unchecked, std::allocator<limb_type> > variable_precision_type;
23866: variable_precision_type a_t(a.limbs(), 0, a.size()), b_t(b.limbs(), 0, b.size());
23866: unsigned as = a.size();
23866: unsigned bs = b.size();
23866: unsigned s = as > bs ? as : bs;
23866: unsigned sz = as + bs;
23866: unsigned storage_size = karatsuba_storage_size(s);
23866:
23866: if (sz * sizeof(limb_type) * 8 <= MaxBits1)
23866: {
23866:
23866: result.resize(sz, sz);
23866: variable_precision_type t(result.limbs(), 0, result.size());
23866: typename variable_precision_type::scoped_shared_storage storage(t.allocator(), storage_size);
23866: multiply_karatsuba(t, a_t, b_t, storage);
23866: }
23866: else
23866: {
23866:
23866:
23866:
23866:
23866: typename variable_precision_type::scoped_shared_storage storage(variable_precision_type::allocator_type(), sz + storage_size);
23866: variable_precision_type t(storage, sz);
23866: multiply_karatsuba(t, a_t, b_t, storage);
23866:
23866:
23866:
23866: result = t;
23866: }
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2, unsigned MinBits3, unsigned MaxBits3, cpp_integer_type SignType3, cpp_int_check_type Checked3, class Allocator3>
23866: inline constexpr void
23866: eval_multiply_comba(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& a,
23866: const cpp_int_backend<MinBits3, MaxBits3, SignType3, Checked3, Allocator3>& b) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866:
23866:
23866:
23866:
23866:
23866: int as = a.size(),
23866: bs = b.size(),
23866: rs = result.size();
23866: typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::limb_pointer pr = result.limbs();
23866:
23866: double_limb_type carry = 0,
23866: temp = 0;
23866: limb_type overflow = 0;
23866: const unsigned limb_bits = sizeof(limb_type) * 8;
23866: const bool must_throw = rs < as + bs - 1;
23866: for (int r = 0, lim = (std::min)(rs, as + bs - 1); r < lim; ++r, overflow = 0)
23866: {
23866: int i = r >= as ? as - 1 : r,
23866: j = r - i,
23866: k = i < bs - j ? i + 1 : bs - j;
23866:
23866: typename cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>::const_limb_pointer pa = a.limbs() + i;
23866: typename cpp_int_backend<MinBits3, MaxBits3, SignType3, Checked3, Allocator3>::const_limb_pointer pb = b.limbs() + j;
23866:
23866: temp = carry;
23866: carry += static_cast<double_limb_type>(*(pa)) * (*(pb));
23866: overflow += carry < temp;
23866: for (--k; k; k--)
23866: {
23866: temp = carry;
23866: carry += static_cast<double_limb_type>(*(--pa)) * (*(++pb));
23866: overflow += carry < temp;
23866: }
23866: *(pr++) = static_cast<limb_type>(carry);
23866: carry = (static_cast<double_limb_type>(overflow) << limb_bits) | (carry >> limb_bits);
23866: }
23866: if (carry || must_throw)
23866: {
23866: resize_for_carry(result, as + bs);
23866: if ((int)result.size() >= as + bs)
23866: *pr = static_cast<limb_type>(carry);
23866: }
23866: }
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2, unsigned MinBits3, unsigned MaxBits3, cpp_integer_type SignType3, cpp_int_check_type Checked3, class Allocator3>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits3, MaxBits3, SignType3, Checked3, Allocator3> >::value>::type
23866: eval_multiply(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& a,
23866: const cpp_int_backend<MinBits3, MaxBits3, SignType3, Checked3, Allocator3>& b)
23866: noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && (karatsuba_cutoff * sizeof(limb_type) * 8 > MaxBits1) && (karatsuba_cutoff * sizeof(limb_type)* 8 > MaxBits2) && (karatsuba_cutoff * sizeof(limb_type)* 8 > MaxBits3))))
23866:
23866:
23866:
23866: {
23866:
23866:
23866:
23866:
23866:
23866: unsigned as = a.size();
23866: unsigned bs = b.size();
23866: typename cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>::const_limb_pointer pa = a.limbs();
23866: typename cpp_int_backend<MinBits3, MaxBits3, SignType3, Checked3, Allocator3>::const_limb_pointer pb = b.limbs();
23866: if (as == 1)
23866: {
23866: bool s = b.sign() != a.sign();
23866: if (bs == 1)
23866: {
23866: result = static_cast<double_limb_type>(*pa) * static_cast<double_limb_type>(*pb);
23866: }
23866: else
23866: {
23866: limb_type l = *pa;
23866: eval_multiply(result, b, l);
23866: }
23866: result.sign(s);
23866: return;
23866: }
23866: if (bs == 1)
23866: {
23866: bool s = b.sign() != a.sign();
23866: limb_type l = *pb;
23866: eval_multiply(result, a, l);
23866: result.sign(s);
23866: return;
23866: }
23866:
23866: if ((void*)&result == (void*)&a)
23866: {
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> t(a);
23866: eval_multiply(result, t, b);
23866: return;
23866: }
23866: if ((void*)&result == (void*)&b)
23866: {
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> t(b);
23866: eval_multiply(result, a, t);
23866: return;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: constexpr const double_limb_type limb_max = ~static_cast<limb_type>(0u);
23866: constexpr const double_limb_type double_limb_max = ~static_cast<double_limb_type>(0u);
23866:
23866: result.resize(as + bs, as + bs - 1);
23866:
23866: if (!__builtin_is_constant_evaluated() && (as >= karatsuba_cutoff && bs >= karatsuba_cutoff))
23866:
23866:
23866:
23866: {
23866: setup_karatsuba(result, a, b);
23866:
23866:
23866:
23866: result.sign(a.sign() != b.sign());
23866: return;
23866: }
23866: typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::limb_pointer pr = result.limbs();
23866: static_assert(double_limb_max - 2 * limb_max >= limb_max * limb_max, "double_limb_max - 2 * limb_max >= limb_max * limb_max");
23866:
23866:
23866: if (__builtin_is_constant_evaluated())
23866: {
23866: for (unsigned i = 0; i < result.size(); ++i)
23866: pr[i] = 0;
23866: }
23866: else
23866:
23866: std::memset(pr, 0, result.size() * sizeof(limb_type));
23866: # 461 "/usr/include/boost/multiprecision/cpp_int/multiply.hpp" 3 4
23866: double_limb_type carry = 0;
23866: for (unsigned i = 0; i < as; ++i)
23866: {
23866: (static_cast <bool> (result.size() > i) ? void (0) : __assert_fail ("result.size() > i", "/usr/include/boost/multiprecision/cpp_int/multiply.hpp", 464, __extension__ __PRETTY_FUNCTION__));
23866: unsigned inner_limit = !is_fixed_precision<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value ? bs : (std::min)(result.size() - i, bs);
23866: unsigned j = 0;
23866: for (; j < inner_limit; ++j)
23866: {
23866: (static_cast <bool> (i + j < result.size()) ? void (0) : __assert_fail ("i + j < result.size()", "/usr/include/boost/multiprecision/cpp_int/multiply.hpp", 469, __extension__ __PRETTY_FUNCTION__));
23866:
23866: (static_cast <bool> (!std::numeric_limits<double_limb_type>::is_specialized || ((std::numeric_limits<double_limb_type>::max)() - carry > static_cast<double_limb_type>(cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::max_limb_value) * static_cast<double_limb_type>(cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::max_limb_value))) ? void (0) : __assert_fail ("!std::numeric_limits<double_limb_type>::is_specialized || ((std::numeric_limits<double_limb_type>::max)() - carry > static_cast<double_limb_type>(cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::max_limb_value) * static_cast<double_limb_type>(cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::max_limb_value))", "/usr/include/boost/multiprecision/cpp_int/multiply.hpp", 471, __extension__ __PRETTY_FUNCTION__))
23866: ;
23866:
23866: carry += static_cast<double_limb_type>(pa[i]) * static_cast<double_limb_type>(pb[j]);
23866: (static_cast <bool> (!std::numeric_limits<double_limb_type>::is_specialized || ((std::numeric_limits<double_limb_type>::max)() - carry >= pr[i + j])) ? void (0) : __assert_fail ("!std::numeric_limits<double_limb_type>::is_specialized || ((std::numeric_limits<double_limb_type>::max)() - carry >= pr[i + j])", "/usr/include/boost/multiprecision/cpp_int/multiply.hpp", 475, __extension__ __PRETTY_FUNCTION__));
23866: carry += pr[i + j];
23866:
23866:
23866:
23866: pr[i + j] = static_cast<limb_type>(carry);
23866:
23866: carry >>= cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::limb_bits;
23866: (static_cast <bool> (carry <= (cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::max_limb_value)) ? void (0) : __assert_fail ("carry <= (cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::max_limb_value)", "/usr/include/boost/multiprecision/cpp_int/multiply.hpp", 483, __extension__ __PRETTY_FUNCTION__));
23866: }
23866: if (carry)
23866: {
23866: resize_for_carry(result, i + j + 1);
23866: if (i + j < result.size())
23866:
23866:
23866:
23866: pr[i + j] = static_cast<limb_type>(carry);
23866:
23866: }
23866: carry = 0;
23866: }
23866:
23866:
23866: result.normalize();
23866:
23866:
23866:
23866: result.sign(a.sign() != b.sign());
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>::type
23866: eval_multiply(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& a)
23866: noexcept(((noexcept(eval_multiply(std::declval<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>&>(), std::declval<const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>&>(), std::declval<const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>&>())))))
23866: {
23866: eval_multiply(result, result, a);
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_multiply(cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result, const limb_type& val)
23866: noexcept(((noexcept(eval_multiply(std::declval<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>&>(), std::declval<const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>&>(), std::declval<const limb_type&>())))))
23866: {
23866: eval_multiply(result, result, val);
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>::type
23866: eval_multiply(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& a,
23866: const double_limb_type& val)
23866: noexcept(((noexcept(eval_multiply(std::declval<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>&>(), std::declval<const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>&>(), std::declval<const limb_type&>()))) && (noexcept(eval_multiply(std::declval<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>&>(), std::declval<const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>&>(), std::declval<const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>&>())))))
23866:
23866:
23866:
23866: {
23866: if (val <= (std::numeric_limits<limb_type>::max)())
23866: {
23866: eval_multiply(result, a, static_cast<limb_type>(val));
23866: }
23866: else
23866: {
23866:
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> t(val);
23866:
23866:
23866:
23866:
23866: eval_multiply(result, a, t);
23866: }
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_multiply(cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result, const double_limb_type& val)
23866: noexcept(((noexcept(eval_multiply(std::declval<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>&>(), std::declval<const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>&>(), std::declval<const double_limb_type&>())))))
23866: {
23866: eval_multiply(result, result, val);
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>::type
23866: eval_multiply(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& a,
23866: const signed_limb_type& val)
23866: noexcept(((noexcept(eval_multiply(std::declval<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>&>(), std::declval<const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>&>(), std::declval<const limb_type&>())))))
23866: {
23866: if (val > 0)
23866: eval_multiply(result, a, static_cast<limb_type>(val));
23866: else
23866: {
23866: eval_multiply(result, a, static_cast<limb_type>(boost::multiprecision::detail::unsigned_abs(val)));
23866: result.negate();
23866: }
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_multiply(cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result, const signed_limb_type& val)
23866: noexcept(((noexcept(eval_multiply(std::declval<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>&>(), std::declval<const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>&>(), std::declval<const limb_type&>())))))
23866: {
23866: eval_multiply(result, result, val);
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>::type
23866: eval_multiply(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& a,
23866: const signed_double_limb_type& val)
23866: noexcept(((noexcept(eval_multiply(std::declval<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>&>(), std::declval<const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>&>(), std::declval<const limb_type&>()))) && (noexcept(eval_multiply(std::declval<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>&>(), std::declval<const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>&>(), std::declval<const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>&>())))))
23866:
23866:
23866:
23866: {
23866: if (val > 0)
23866: {
23866: if (val <= (std::numeric_limits<limb_type>::max)())
23866: {
23866: eval_multiply(result, a, static_cast<limb_type>(val));
23866: return;
23866: }
23866: }
23866: else if (val >= -static_cast<signed_double_limb_type>((std::numeric_limits<limb_type>::max)()))
23866: {
23866: eval_multiply(result, a, static_cast<limb_type>(boost::multiprecision::detail::unsigned_abs(val)));
23866: result.negate();
23866: return;
23866: }
23866:
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> t(val);
23866:
23866:
23866:
23866:
23866: eval_multiply(result, a, t);
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_multiply(cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result, const signed_double_limb_type& val)
23866: noexcept(((noexcept(eval_multiply(std::declval<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>&>(), std::declval<const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>&>(), std::declval<const limb_type&>()))) && (noexcept(eval_multiply(std::declval<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>&>(), std::declval<const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>&>(), std::declval<const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>&>())))))
23866:
23866:
23866:
23866: {
23866: eval_multiply(result, result, val);
23866: }
23866:
23866:
23866:
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<
23866: is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && (is_signed_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value || is_signed_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)>::type
23866: eval_multiply(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: *result.limbs() = detail::checked_multiply(*result.limbs(), *o.limbs(), typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::checked_type());
23866: result.sign(result.sign() != o.sign());
23866: result.normalize();
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<
23866: is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_unsigned_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_multiply(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: *result.limbs() = detail::checked_multiply(*result.limbs(), *o.limbs(), typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::checked_type());
23866: result.normalize();
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<
23866: is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && (is_signed_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value || is_signed_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)>::type
23866: eval_multiply(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& a,
23866: const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& b) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: *result.limbs() = detail::checked_multiply(*a.limbs(), *b.limbs(), typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::checked_type());
23866: result.sign(a.sign() != b.sign());
23866: result.normalize();
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<
23866: is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_unsigned_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_multiply(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& a,
23866: const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& b) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: *result.limbs() = detail::checked_multiply(*a.limbs(), *b.limbs(), typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::checked_type());
23866: result.normalize();
23866: }
23866:
23866:
23866:
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<
23866: !is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_multiply(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: signed_double_limb_type a, signed_double_limb_type b)
23866: {
23866:
23866:
23866:
23866:
23866: constexpr const signed_double_limb_type mask = ~static_cast<limb_type>(0);
23866: constexpr const unsigned limb_bits = sizeof(limb_type) * 8;
23866:
23866: bool s = false;
23866: if (a < 0)
23866: {
23866: a = -a;
23866: s = true;
23866: }
23866: if (b < 0)
23866: {
23866: b = -b;
23866: s = !s;
23866: }
23866: double_limb_type w = a & mask;
23866: double_limb_type x = a >> limb_bits;
23866: double_limb_type y = b & mask;
23866: double_limb_type z = b >> limb_bits;
23866:
23866: result.resize(4, 4);
23866: limb_type* pr = result.limbs();
23866:
23866: double_limb_type carry = w * y;
23866: # 727 "/usr/include/boost/multiprecision/cpp_int/multiply.hpp" 3 4
23866: pr[0] = static_cast<limb_type>(carry);
23866: carry >>= limb_bits;
23866: carry += w * z + x * y;
23866: pr[1] = static_cast<limb_type>(carry);
23866: carry >>= limb_bits;
23866: carry += x * z;
23866: pr[2] = static_cast<limb_type>(carry);
23866: pr[3] = static_cast<limb_type>(carry >> limb_bits);
23866:
23866: result.sign(s);
23866: result.normalize();
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<
23866: !is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_multiply(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: double_limb_type a, double_limb_type b)
23866: {
23866:
23866:
23866:
23866:
23866: constexpr const signed_double_limb_type mask = ~static_cast<limb_type>(0);
23866: constexpr const unsigned limb_bits = sizeof(limb_type) * 8;
23866:
23866:
23866: double_limb_type w = a & mask;
23866: double_limb_type x = a >> limb_bits;
23866: double_limb_type y = b & mask;
23866: double_limb_type z = b >> limb_bits;
23866:
23866: result.resize(4, 4);
23866: limb_type* pr = result.limbs();
23866:
23866: double_limb_type carry = w * y;
23866: # 778 "/usr/include/boost/multiprecision/cpp_int/multiply.hpp" 3 4
23866: pr[0] = static_cast<limb_type>(carry);
23866: carry >>= limb_bits;
23866: carry += w * z;
23866: pr[1] = static_cast<limb_type>(carry);
23866: carry >>= limb_bits;
23866: pr[2] = static_cast<limb_type>(carry);
23866: carry = x * y + pr[1];
23866: pr[1] = static_cast<limb_type>(carry);
23866: carry >>= limb_bits;
23866: carry += pr[2] + x * z;
23866: pr[2] = static_cast<limb_type>(carry);
23866: pr[3] = static_cast<limb_type>(carry >> limb_bits);
23866:
23866: result.sign(false);
23866: result.normalize();
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1,
23866: unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<
23866: !is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value && is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>::type
23866: eval_multiply(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> const& a,
23866: cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> const& b)
23866: {
23866: typedef typename boost::multiprecision::detail::canonical<typename cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>::local_limb_type, cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::type canonical_type;
23866: eval_multiply(result, static_cast<canonical_type>(*a.limbs()), static_cast<canonical_type>(*b.limbs()));
23866: result.sign(a.sign() != b.sign());
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, class SI>
23866: inline constexpr typename enable_if_c<is_signed<SI>::value && (sizeof(SI) <= sizeof(signed_double_limb_type) / 2)>::type
23866: eval_multiply(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: SI a, SI b)
23866: {
23866: result = static_cast<signed_double_limb_type>(a) * static_cast<signed_double_limb_type>(b);
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, class UI>
23866: inline constexpr typename enable_if_c<is_unsigned<UI>::value && (sizeof(UI) <= sizeof(signed_double_limb_type) / 2)>::type
23866: eval_multiply(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: UI a, UI b)
23866: {
23866: result = static_cast<double_limb_type>(a) * static_cast<double_limb_type>(b);
23866: }
23866:
23866:
23866:
23866:
23866:
23866: }}}
23866: # 2249 "/usr/include/boost/multiprecision/cpp_int.hpp" 2 3 4
23866: # 1 "/usr/include/boost/multiprecision/cpp_int/divide.hpp" 1 3 4
23866: # 9 "/usr/include/boost/multiprecision/cpp_int/divide.hpp" 3 4
23866: #define BOOST_MP_CPP_INT_DIV_HPP
23866:
23866: namespace boost { namespace multiprecision { namespace backends {
23866:
23866: template <class CppInt1, class CppInt2, class CppInt3>
23866: constexpr void divide_unsigned_helper(
23866: CppInt1* result,
23866: const CppInt2& x,
23866: const CppInt3& y,
23866: CppInt1& r)
23866: {
23866: if (((void*)result == (void*)&x) || ((void*)&r == (void*)&x))
23866: {
23866: CppInt2 t(x);
23866: divide_unsigned_helper(result, t, y, r);
23866: return;
23866: }
23866: if (((void*)result == (void*)&y) || ((void*)&r == (void*)&y))
23866: {
23866: CppInt3 t(y);
23866: divide_unsigned_helper(result, x, t, r);
23866: return;
23866: }
23866: # 51 "/usr/include/boost/multiprecision/cpp_int/divide.hpp" 3 4
23866: using default_ops::eval_subtract;
23866:
23866: if (result == &r)
23866: {
23866: CppInt1 rem;
23866: divide_unsigned_helper(result, x, y, rem);
23866: r = rem;
23866: return;
23866: }
23866:
23866:
23866:
23866:
23866: limb_type y_order = y.size() - 1;
23866:
23866: if (y_order == 0)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: divide_unsigned_helper(result, x, y.limbs()[y_order], r);
23866: return;
23866: }
23866:
23866: typename CppInt2::const_limb_pointer px = x.limbs();
23866: typename CppInt3::const_limb_pointer py = y.limbs();
23866:
23866: limb_type r_order = x.size() - 1;
23866: if ((r_order == 0) && (*px == 0))
23866: {
23866:
23866: r = x;
23866: if (result)
23866: *result = x;
23866: return;
23866: }
23866:
23866: r = x;
23866: r.sign(false);
23866: if (result)
23866: *result = static_cast<limb_type>(0u);
23866:
23866:
23866:
23866:
23866:
23866: if (r_order <= y_order)
23866: {
23866: if ((r_order < y_order) || (r.compare_unsigned(y) < 0))
23866: {
23866: return;
23866: }
23866: }
23866:
23866: CppInt1 t;
23866: bool r_neg = false;
23866:
23866:
23866:
23866:
23866: if (r_order == 0)
23866: {
23866: if (result)
23866: {
23866: *result = px[0] / py[0];
23866: }
23866: r = px[0] % py[0];
23866: return;
23866: }
23866: else if (r_order == 1)
23866: {
23866: double_limb_type a = (static_cast<double_limb_type>(px[1]) << CppInt1::limb_bits) | px[0];
23866: double_limb_type b = y_order ? (static_cast<double_limb_type>(py[1]) << CppInt1::limb_bits) | py[0]
23866: : py[0];
23866: if (result)
23866: {
23866: *result = a / b;
23866: }
23866: r = a % b;
23866: return;
23866: }
23866:
23866:
23866:
23866: if (result)
23866: result->resize(1 + r_order - y_order, 1 + r_order - y_order);
23866: typename CppInt1::const_limb_pointer prem = r.limbs();
23866:
23866: typename CppInt1::limb_pointer pr = typename CppInt1::limb_pointer();
23866: if (result)
23866: {
23866: pr = result->limbs();
23866: for (unsigned i = 1; i < 1 + r_order - y_order; ++i)
23866: pr[i] = 0;
23866: }
23866: bool first_pass = true;
23866:
23866: do
23866: {
23866:
23866:
23866:
23866: limb_type guess = 1;
23866: if ((prem[r_order] <= py[y_order]) && (r_order > 0))
23866: {
23866: double_limb_type a = (static_cast<double_limb_type>(prem[r_order]) << CppInt1::limb_bits) | prem[r_order - 1];
23866: double_limb_type b = py[y_order];
23866: double_limb_type v = a / b;
23866: if (v <= CppInt1::max_limb_value)
23866: {
23866: guess = static_cast<limb_type>(v);
23866: --r_order;
23866: }
23866: }
23866: else if (r_order == 0)
23866: {
23866: guess = prem[0] / py[y_order];
23866: }
23866: else
23866: {
23866: double_limb_type a = (static_cast<double_limb_type>(prem[r_order]) << CppInt1::limb_bits) | prem[r_order - 1];
23866: double_limb_type b = (y_order > 0) ? (static_cast<double_limb_type>(py[y_order]) << CppInt1::limb_bits) | py[y_order - 1] : (static_cast<double_limb_type>(py[y_order]) << CppInt1::limb_bits);
23866: double_limb_type v = a / b;
23866: guess = static_cast<limb_type>(v);
23866: }
23866: (static_cast <bool> (guess) ? void (0) : __assert_fail ("guess", "/usr/include/boost/multiprecision/cpp_int/divide.hpp", 178, __extension__ __PRETTY_FUNCTION__));
23866:
23866:
23866:
23866: limb_type shift = r_order - y_order;
23866: if (result)
23866: {
23866: if (r_neg)
23866: {
23866: if (pr[shift] > guess)
23866: pr[shift] -= guess;
23866: else
23866: {
23866: t.resize(shift + 1, shift + 1);
23866: t.limbs()[shift] = guess;
23866: for (unsigned i = 0; i < shift; ++i)
23866: t.limbs()[i] = 0;
23866: eval_subtract(*result, t);
23866: }
23866: }
23866: else if (CppInt1::max_limb_value - pr[shift] > guess)
23866: pr[shift] += guess;
23866: else
23866: {
23866: t.resize(shift + 1, shift + 1);
23866: t.limbs()[shift] = guess;
23866: for (unsigned i = 0; i < shift; ++i)
23866: t.limbs()[i] = 0;
23866: eval_add(*result, t);
23866: }
23866: }
23866:
23866:
23866:
23866:
23866: double_limb_type carry = 0;
23866: t.resize(y.size() + shift + 1, y.size() + shift);
23866: bool truncated_t = (t.size() != y.size() + shift + 1);
23866: typename CppInt1::limb_pointer pt = t.limbs();
23866: for (unsigned i = 0; i < shift; ++i)
23866: pt[i] = 0;
23866: for (unsigned i = 0; i < y.size(); ++i)
23866: {
23866: carry += static_cast<double_limb_type>(py[i]) * static_cast<double_limb_type>(guess);
23866:
23866:
23866:
23866: pt[i + shift] = static_cast<limb_type>(carry);
23866:
23866: carry >>= CppInt1::limb_bits;
23866: }
23866: if (carry && !truncated_t)
23866: {
23866:
23866:
23866:
23866: pt[t.size() - 1] = static_cast<limb_type>(carry);
23866:
23866: }
23866: else if (!truncated_t)
23866: {
23866: t.resize(t.size() - 1, t.size() - 1);
23866: }
23866:
23866:
23866:
23866:
23866: if (truncated_t && carry)
23866: {
23866:
23866:
23866:
23866:
23866:
23866: for (unsigned i = 0; i <= r_order; ++i)
23866: r.limbs()[i] = ~prem[i];
23866: r.normalize();
23866: eval_increment(r);
23866: eval_add(r, t);
23866: r_neg = !r_neg;
23866: }
23866: else if (r.compare(t) > 0)
23866: {
23866: eval_subtract(r, t);
23866: }
23866: else
23866: {
23866: r.swap(t);
23866: eval_subtract(r, t);
23866: prem = r.limbs();
23866: r_neg = !r_neg;
23866: }
23866:
23866:
23866:
23866:
23866: if (result && first_pass)
23866: {
23866: first_pass = false;
23866: while (pr[result->size() - 1] == 0)
23866: result->resize(result->size() - 1, result->size() - 1);
23866: }
23866:
23866:
23866:
23866: r_order = r.size() - 1;
23866: if (r_order < y_order)
23866: break;
23866: }
23866:
23866:
23866: while ((r_order > y_order) || (r.compare_unsigned(y) >= 0));
23866:
23866:
23866:
23866:
23866: if (r_neg && eval_get_sign(r))
23866: {
23866:
23866: if (result)
23866: eval_decrement(*result);
23866: if (y.sign())
23866: {
23866: r.negate();
23866: eval_subtract(r, y);
23866: }
23866: else
23866: eval_subtract(r, y, r);
23866: }
23866:
23866: (static_cast <bool> (r.compare_unsigned(y) < 0) ? void (0) : __assert_fail ("r.compare_unsigned(y) < 0", "/usr/include/boost/multiprecision/cpp_int/divide.hpp", 308, __extension__ __PRETTY_FUNCTION__));
23866: }
23866:
23866: template <class CppInt1, class CppInt2>
23866: constexpr void divide_unsigned_helper(
23866: CppInt1* result,
23866: const CppInt2& x,
23866: limb_type y,
23866: CppInt1& r)
23866: {
23866: if (((void*)result == (void*)&x) || ((void*)&r == (void*)&x))
23866: {
23866: CppInt2 t(x);
23866: divide_unsigned_helper(result, t, y, r);
23866: return;
23866: }
23866:
23866: if (result == &r)
23866: {
23866: CppInt1 rem;
23866: divide_unsigned_helper(result, x, y, rem);
23866: r = rem;
23866: return;
23866: }
23866:
23866:
23866:
23866: using default_ops::eval_subtract;
23866:
23866: if (y == 0)
23866: {
23866: ::boost::throw_exception(std::overflow_error("Integer Division by zero."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int/divide.hpp", 339, __PRETTY_FUNCTION__));
23866: }
23866:
23866:
23866:
23866: limb_type r_order = x.size() - 1;
23866:
23866:
23866:
23866:
23866: r = x;
23866: r.sign(false);
23866: typename CppInt1::limb_pointer pr = r.limbs();
23866:
23866:
23866:
23866:
23866:
23866: if ((r_order == 0) && (*pr < y))
23866: {
23866: if (result)
23866: *result = static_cast<limb_type>(0u);
23866: return;
23866: }
23866:
23866:
23866:
23866:
23866: if (r_order == 0)
23866: {
23866: if (result)
23866: {
23866: *result = *pr / y;
23866: result->sign(x.sign());
23866: }
23866: *pr %= y;
23866: r.sign(x.sign());
23866: return;
23866: }
23866: else if (r_order == 1)
23866: {
23866: double_limb_type a = (static_cast<double_limb_type>(pr[r_order]) << CppInt1::limb_bits) | pr[0];
23866: if (result)
23866: {
23866: *result = a / y;
23866: result->sign(x.sign());
23866: }
23866: r = a % y;
23866: r.sign(x.sign());
23866: return;
23866: }
23866:
23866:
23866: typename CppInt1::limb_pointer pres = typename CppInt1::limb_pointer();
23866: if (result)
23866: {
23866: result->resize(r_order + 1, r_order + 1);
23866: pres = result->limbs();
23866: if (result->size() > r_order)
23866: pres[r_order] = 0;
23866: }
23866:
23866: do
23866: {
23866:
23866:
23866:
23866: if ((pr[r_order] < y) && r_order)
23866: {
23866: double_limb_type a = (static_cast<double_limb_type>(pr[r_order]) << CppInt1::limb_bits) | pr[r_order - 1];
23866: double_limb_type b = a % y;
23866: r.resize(r.size() - 1, r.size() - 1);
23866: --r_order;
23866: pr[r_order] = static_cast<limb_type>(b);
23866: if (result)
23866: pres[r_order] = static_cast<limb_type>(a / y);
23866: if (r_order && pr[r_order] == 0)
23866: {
23866: --r_order;
23866: r.resize(r.size() - 1, r.size() - 1);
23866: if (result)
23866: pres[r_order] = static_cast<limb_type>(0u);
23866: }
23866: }
23866: else
23866: {
23866: if (result)
23866: pres[r_order] = pr[r_order] / y;
23866: pr[r_order] %= y;
23866: if (r_order && pr[r_order] == 0)
23866: {
23866: --r_order;
23866: r.resize(r.size() - 1, r.size() - 1);
23866: if (result)
23866: pres[r_order] = static_cast<limb_type>(0u);
23866: }
23866: }
23866: }
23866:
23866:
23866: while (r_order || (pr[r_order] >= y));
23866:
23866: if (result)
23866: {
23866: result->normalize();
23866: result->sign(x.sign());
23866: }
23866: r.normalize();
23866: r.sign(x.sign());
23866:
23866: (static_cast <bool> (r.compare(y) < 0) ? void (0) : __assert_fail ("r.compare(y) < 0", "/usr/include/boost/multiprecision/cpp_int/divide.hpp", 449, __extension__ __PRETTY_FUNCTION__));
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2, unsigned MinBits3, unsigned MaxBits3, cpp_integer_type SignType3, cpp_int_check_type Checked3, class Allocator3>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits3, MaxBits3, SignType3, Checked3, Allocator3> >::value>::type
23866: eval_divide(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& a,
23866: const cpp_int_backend<MinBits3, MaxBits3, SignType3, Checked3, Allocator3>& b)
23866: {
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> r;
23866: bool s = a.sign() != b.sign();
23866: divide_unsigned_helper(&result, a, b, r);
23866: result.sign(s);
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>::type
23866: eval_divide(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& a,
23866: limb_type& b)
23866: {
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> r;
23866: bool s = a.sign();
23866: divide_unsigned_helper(&result, a, b, r);
23866: result.sign(s);
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>::type
23866: eval_divide(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& a,
23866: signed_limb_type& b)
23866: {
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> r;
23866: bool s = a.sign() != (b < 0);
23866: divide_unsigned_helper(&result, a, static_cast<limb_type>(boost::multiprecision::detail::unsigned_abs(b)), r);
23866: result.sign(s);
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>::type
23866: eval_divide(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& b)
23866: {
23866:
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> a(result);
23866: eval_divide(result, a, b);
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_divide(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: limb_type b)
23866: {
23866:
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> a(result);
23866: eval_divide(result, a, b);
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_divide(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: signed_limb_type b)
23866: {
23866:
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> a(result);
23866: eval_divide(result, a, b);
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2, unsigned MinBits3, unsigned MaxBits3, cpp_integer_type SignType3, cpp_int_check_type Checked3, class Allocator3>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits3, MaxBits3, SignType3, Checked3, Allocator3> >::value>::type
23866: eval_modulus(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& a,
23866: const cpp_int_backend<MinBits3, MaxBits3, SignType3, Checked3, Allocator3>& b)
23866: {
23866: bool s = a.sign();
23866: divide_unsigned_helper(static_cast<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>*>(0), a, b, result);
23866: result.sign(s);
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>::type
23866: eval_modulus(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& a, limb_type b)
23866: {
23866: bool s = a.sign();
23866: divide_unsigned_helper(static_cast<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>*>(0), a, b, result);
23866: result.sign(s);
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>::type
23866: eval_modulus(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& a,
23866: signed_limb_type b)
23866: {
23866: bool s = a.sign();
23866: divide_unsigned_helper(static_cast<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>*>(0), a, static_cast<limb_type>(boost::multiprecision::detail::unsigned_abs(b)), result);
23866: result.sign(s);
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>::type
23866: eval_modulus(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& b)
23866: {
23866:
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> a(result);
23866: eval_modulus(result, a, b);
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_modulus(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: limb_type b)
23866: {
23866:
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> a(result);
23866: eval_modulus(result, a, b);
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_modulus(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: signed_limb_type b)
23866: {
23866:
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> a(result);
23866: eval_modulus(result, a, b);
23866: }
23866:
23866:
23866:
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<
23866: is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && (is_signed_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value || is_signed_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)>::type
23866: eval_divide(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& o)
23866: {
23866: if (!*o.limbs())
23866: ::boost::throw_exception(std::overflow_error("Division by zero."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int/divide.hpp", 603, __PRETTY_FUNCTION__));
23866: *result.limbs() /= *o.limbs();
23866: result.sign(result.sign() != o.sign());
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<
23866: is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_unsigned_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_unsigned_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_divide(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& o)
23866: {
23866: if (!*o.limbs())
23866: ::boost::throw_exception(std::overflow_error("Division by zero."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int/divide.hpp", 616, __PRETTY_FUNCTION__));
23866: *result.limbs() /= *o.limbs();
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<
23866: is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_modulus(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& o)
23866: {
23866: if (!*o.limbs())
23866: ::boost::throw_exception(std::overflow_error("Division by zero."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int/divide.hpp", 628, __PRETTY_FUNCTION__));
23866: *result.limbs() %= *o.limbs();
23866: result.sign(result.sign());
23866: }
23866:
23866: }}}
23866: # 2250 "/usr/include/boost/multiprecision/cpp_int.hpp" 2 3 4
23866: # 1 "/usr/include/boost/multiprecision/cpp_int/bitwise.hpp" 1 3 4
23866: # 9 "/usr/include/boost/multiprecision/cpp_int/bitwise.hpp" 3 4
23866: #define BOOST_MP_CPP_INT_BIT_HPP
23866:
23866:
23866:
23866:
23866:
23866:
23866: namespace boost { namespace multiprecision { namespace backends {
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: constexpr void is_valid_bitwise_op(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& o, const mpl::int_<checked>&)
23866: {
23866: if (result.sign() || o.sign())
23866: ::boost::throw_exception(std::range_error("Bitwise operations on negative values results in undefined behavior."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int/bitwise.hpp", 24, __PRETTY_FUNCTION__));
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: constexpr void is_valid_bitwise_op(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>&,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>&, const mpl::int_<unchecked>&) {}
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_int_check_type Checked1, class Allocator1>
23866: constexpr void is_valid_bitwise_op(
23866: const cpp_int_backend<MinBits1, MaxBits1, signed_magnitude, Checked1, Allocator1>& result, const mpl::int_<checked>&)
23866: {
23866: if (result.sign())
23866: ::boost::throw_exception(std::range_error("Bitwise operations on negative values results in undefined behavior."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int/bitwise.hpp", 37, __PRETTY_FUNCTION__));
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_int_check_type Checked1, class Allocator1>
23866: constexpr void is_valid_bitwise_op(
23866: const cpp_int_backend<MinBits1, MaxBits1, unsigned_magnitude, Checked1, Allocator1>&, const mpl::int_<checked>&) {}
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: constexpr void is_valid_bitwise_op(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>&, const mpl::int_<unchecked>&) {}
23866:
23866: template <class CppInt1, class CppInt2, class Op>
23866: constexpr void bitwise_op(
23866: CppInt1& result,
23866: const CppInt2& o,
23866: Op op, const mpl::true_&) noexcept(((is_non_throwing_cpp_int<CppInt1>::value)))
23866: {
23866: # 67 "/usr/include/boost/multiprecision/cpp_int/bitwise.hpp" 3 4
23866: is_valid_bitwise_op(result, o, typename CppInt1::checked_type());
23866:
23866:
23866:
23866: unsigned rs = result.size();
23866: unsigned os = o.size();
23866: unsigned m(0), x(0);
23866: minmax(rs, os, m, x);
23866: result.resize(x, x);
23866: typename CppInt1::limb_pointer pr = result.limbs();
23866: typename CppInt2::const_limb_pointer po = o.limbs();
23866: for (unsigned i = rs; i < x; ++i)
23866: pr[i] = 0;
23866:
23866: limb_type next_limb = 0;
23866:
23866: if (!result.sign())
23866: {
23866: if (!o.sign())
23866: {
23866: for (unsigned i = 0; i < os; ++i)
23866: pr[i] = op(pr[i], po[i]);
23866: for (unsigned i = os; i < x; ++i)
23866: pr[i] = op(pr[i], limb_type(0));
23866: }
23866: else
23866: {
23866:
23866: double_limb_type carry = 1;
23866: for (unsigned i = 0; i < os; ++i)
23866: {
23866: carry += static_cast<double_limb_type>(~po[i]);
23866: pr[i] = op(pr[i], static_cast<limb_type>(carry));
23866: carry >>= CppInt1::limb_bits;
23866: }
23866: for (unsigned i = os; i < x; ++i)
23866: {
23866: carry += static_cast<double_limb_type>(~limb_type(0));
23866: pr[i] = op(pr[i], static_cast<limb_type>(carry));
23866: carry >>= CppInt1::limb_bits;
23866: }
23866:
23866: carry += static_cast<double_limb_type>(~limb_type(0));
23866: next_limb = op(limb_type(0), static_cast<limb_type>(carry));
23866: }
23866: }
23866: else
23866: {
23866: if (!o.sign())
23866: {
23866:
23866: double_limb_type carry = 1;
23866: for (unsigned i = 0; i < os; ++i)
23866: {
23866: carry += static_cast<double_limb_type>(~pr[i]);
23866: pr[i] = op(static_cast<limb_type>(carry), po[i]);
23866: carry >>= CppInt1::limb_bits;
23866: }
23866: for (unsigned i = os; i < x; ++i)
23866: {
23866: carry += static_cast<double_limb_type>(~pr[i]);
23866: pr[i] = op(static_cast<limb_type>(carry), limb_type(0));
23866: carry >>= CppInt1::limb_bits;
23866: }
23866:
23866: carry += static_cast<double_limb_type>(~limb_type(0));
23866: next_limb = op(static_cast<limb_type>(carry), limb_type(0));
23866: }
23866: else
23866: {
23866:
23866: double_limb_type r_carry = 1;
23866: double_limb_type o_carry = 1;
23866: for (unsigned i = 0; i < os; ++i)
23866: {
23866: r_carry += static_cast<double_limb_type>(~pr[i]);
23866: o_carry += static_cast<double_limb_type>(~po[i]);
23866: pr[i] = op(static_cast<limb_type>(r_carry), static_cast<limb_type>(o_carry));
23866: r_carry >>= CppInt1::limb_bits;
23866: o_carry >>= CppInt1::limb_bits;
23866: }
23866: for (unsigned i = os; i < x; ++i)
23866: {
23866: r_carry += static_cast<double_limb_type>(~pr[i]);
23866: o_carry += static_cast<double_limb_type>(~limb_type(0));
23866: pr[i] = op(static_cast<limb_type>(r_carry), static_cast<limb_type>(o_carry));
23866: r_carry >>= CppInt1::limb_bits;
23866: o_carry >>= CppInt1::limb_bits;
23866: }
23866:
23866: r_carry += static_cast<double_limb_type>(~limb_type(0));
23866: o_carry += static_cast<double_limb_type>(~limb_type(0));
23866: next_limb = op(static_cast<limb_type>(r_carry), static_cast<limb_type>(o_carry));
23866: }
23866: }
23866:
23866:
23866:
23866: if (static_cast<signed_limb_type>(next_limb) < 0)
23866: {
23866: double_limb_type carry = 1;
23866: for (unsigned i = 0; i < x; ++i)
23866: {
23866: carry += static_cast<double_limb_type>(~pr[i]);
23866: pr[i] = static_cast<limb_type>(carry);
23866: carry >>= CppInt1::limb_bits;
23866: }
23866: if (carry)
23866: {
23866: result.resize(x + 1, x);
23866: if (result.size() > x)
23866: result.limbs()[x] = static_cast<limb_type>(carry);
23866: }
23866: result.sign(true);
23866: }
23866: else
23866: result.sign(false);
23866:
23866: result.normalize();
23866: }
23866:
23866: template <class CppInt1, class CppInt2, class Op>
23866: constexpr void bitwise_op(
23866: CppInt1& result,
23866: const CppInt2& o,
23866: Op op, const mpl::false_&) noexcept(((is_non_throwing_cpp_int<CppInt1>::value)))
23866: {
23866:
23866:
23866:
23866:
23866:
23866: unsigned rs = result.size();
23866: unsigned os = o.size();
23866: unsigned m(0), x(0);
23866: minmax(rs, os, m, x);
23866: result.resize(x, x);
23866: typename CppInt1::limb_pointer pr = result.limbs();
23866: typename CppInt2::const_limb_pointer po = o.limbs();
23866: for (unsigned i = rs; i < x; ++i)
23866: pr[i] = 0;
23866:
23866: for (unsigned i = 0; i < os; ++i)
23866: pr[i] = op(pr[i], po[i]);
23866: for (unsigned i = os; i < x; ++i)
23866: pr[i] = op(pr[i], limb_type(0));
23866:
23866: result.normalize();
23866: }
23866:
23866: struct bit_and
23866: {
23866: constexpr limb_type operator()(limb_type a, limb_type b) const noexcept { return a & b; }
23866: };
23866: struct bit_or
23866: {
23866: constexpr limb_type operator()(limb_type a, limb_type b) const noexcept { return a | b; }
23866: };
23866: struct bit_xor
23866: {
23866: constexpr limb_type operator()(limb_type a, limb_type b) const noexcept { return a ^ b; }
23866: };
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>::type
23866: eval_bitwise_and(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: bitwise_op(result, o, bit_and(),
23866: mpl::bool_ < std::numeric_limits<number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> > >::is_signed || std::numeric_limits<number<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> > >::is_signed > ());
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>::type
23866: eval_bitwise_or(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: bitwise_op(result, o, bit_or(),
23866: mpl::bool_ < std::numeric_limits<number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> > >::is_signed || std::numeric_limits<number<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> > >::is_signed > ());
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>::type
23866: eval_bitwise_xor(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: bitwise_op(result, o, bit_xor(),
23866: mpl::bool_ < std::numeric_limits<number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> > >::is_signed || std::numeric_limits<number<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> > >::is_signed > ());
23866: }
23866:
23866:
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, unsigned_magnitude, Checked1, Allocator1> >::value>::type
23866: eval_bitwise_and(
23866: cpp_int_backend<MinBits1, MaxBits1, unsigned_magnitude, Checked1, Allocator1>& result,
23866: limb_type l) noexcept
23866: {
23866: result.limbs()[0] &= l;
23866: result.resize(1, 1);
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, unsigned_magnitude, Checked1, Allocator1> >::value>::type
23866: eval_bitwise_or(
23866: cpp_int_backend<MinBits1, MaxBits1, unsigned_magnitude, Checked1, Allocator1>& result,
23866: limb_type l) noexcept
23866: {
23866: result.limbs()[0] |= l;
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, unsigned_magnitude, Checked1, Allocator1> >::value>::type
23866: eval_bitwise_xor(
23866: cpp_int_backend<MinBits1, MaxBits1, unsigned_magnitude, Checked1, Allocator1>& result,
23866: limb_type l) noexcept
23866: {
23866: result.limbs()[0] ^= l;
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<is_signed_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>::type
23866: eval_complement(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: static_assert(((Checked1 != checked) || (Checked2 != checked)), "Attempt to take the complement of a signed type results in undefined behavior.");
23866:
23866: result = o;
23866: eval_increment(result);
23866: result.negate();
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<is_unsigned_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && !is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_complement(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: unsigned os = o.size();
23866: result.resize((0x7fffffff * 2U + 1U), os);
23866: for (unsigned i = 0; i < os; ++i)
23866: result.limbs()[i] = ~o.limbs()[i];
23866: for (unsigned i = os; i < result.size(); ++i)
23866: result.limbs()[i] = ~static_cast<limb_type>(0);
23866: result.normalize();
23866: }
23866:
23866: template <class Int>
23866: inline void left_shift_byte(Int& result, double_limb_type s)
23866: {
23866: limb_type offset = static_cast<limb_type>(s / Int::limb_bits);
23866: limb_type shift = static_cast<limb_type>(s % Int::limb_bits);
23866: unsigned ors = result.size();
23866: if ((ors == 1) && (!*result.limbs()))
23866: return;
23866: unsigned rs = ors;
23866: if (shift && (result.limbs()[ors - 1] >> (Int::limb_bits - shift)))
23866: ++rs;
23866: rs += offset;
23866: result.resize(rs, rs);
23866: rs = result.size();
23866:
23866: typename Int::limb_pointer pr = result.limbs();
23866:
23866: if (rs != ors)
23866: pr[rs - 1] = 0u;
23866: std::size_t bytes = static_cast<std::size_t>(s / 8);
23866: std::size_t len = (std::min)(ors * sizeof(limb_type), rs * sizeof(limb_type) - bytes);
23866: if (bytes >= rs * sizeof(limb_type))
23866: result = static_cast<limb_type>(0u);
23866: else
23866: {
23866: unsigned char* pc = reinterpret_cast<unsigned char*>(pr);
23866: std::memmove(pc + bytes, pc, len);
23866: std::memset(pc, 0, bytes);
23866: }
23866: }
23866:
23866: template <class Int>
23866: inline constexpr void left_shift_limb(Int& result, double_limb_type s)
23866: {
23866: limb_type offset = static_cast<limb_type>(s / Int::limb_bits);
23866: limb_type shift = static_cast<limb_type>(s % Int::limb_bits);
23866:
23866: unsigned ors = result.size();
23866: if ((ors == 1) && (!*result.limbs()))
23866: return;
23866: unsigned rs = ors;
23866: if (shift && (result.limbs()[ors - 1] >> (Int::limb_bits - shift)))
23866: ++rs;
23866: rs += offset;
23866: result.resize(rs, rs);
23866:
23866: typename Int::limb_pointer pr = result.limbs();
23866:
23866: if (offset > rs)
23866: {
23866:
23866: result = static_cast<limb_type>(0);
23866: return;
23866: }
23866:
23866: unsigned i = rs - result.size();
23866: for (; i < ors; ++i)
23866: pr[rs - 1 - i] = pr[ors - 1 - i];
23866: for (; i < rs; ++i)
23866: pr[rs - 1 - i] = 0;
23866: }
23866:
23866: template <class Int>
23866: inline constexpr void left_shift_generic(Int& result, double_limb_type s)
23866: {
23866: limb_type offset = static_cast<limb_type>(s / Int::limb_bits);
23866: limb_type shift = static_cast<limb_type>(s % Int::limb_bits);
23866:
23866: unsigned ors = result.size();
23866: if ((ors == 1) && (!*result.limbs()))
23866: return;
23866: unsigned rs = ors;
23866: if (shift && (result.limbs()[ors - 1] >> (Int::limb_bits - shift)))
23866: ++rs;
23866: rs += offset;
23866: result.resize(rs, rs);
23866: bool truncated = result.size() != rs;
23866:
23866: typename Int::limb_pointer pr = result.limbs();
23866:
23866: if (offset > rs)
23866: {
23866:
23866: result = static_cast<limb_type>(0);
23866: return;
23866: }
23866:
23866: unsigned i = rs - result.size();
23866:
23866: (static_cast <bool> (shift) ? void (0) : __assert_fail ("shift", "/usr/include/boost/multiprecision/cpp_int/bitwise.hpp", 407, __extension__ __PRETTY_FUNCTION__));
23866: if (!truncated)
23866: {
23866: if (rs > ors + offset)
23866: {
23866: pr[rs - 1 - i] = pr[ors - 1 - i] >> (Int::limb_bits - shift);
23866: --rs;
23866: }
23866: else
23866: {
23866: pr[rs - 1 - i] = pr[ors - 1 - i] << shift;
23866: if (ors > 1)
23866: pr[rs - 1 - i] |= pr[ors - 2 - i] >> (Int::limb_bits - shift);
23866: ++i;
23866: }
23866: }
23866: for (; rs - i >= 2 + offset; ++i)
23866: {
23866: pr[rs - 1 - i] = pr[rs - 1 - i - offset] << shift;
23866: pr[rs - 1 - i] |= pr[rs - 2 - i - offset] >> (Int::limb_bits - shift);
23866: }
23866: if (rs - i >= 1 + offset)
23866: {
23866: pr[rs - 1 - i] = pr[rs - 1 - i - offset] << shift;
23866: ++i;
23866: }
23866: for (; i < rs; ++i)
23866: pr[rs - 1 - i] = 0;
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_left_shift(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: double_limb_type s) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: is_valid_bitwise_op(result, typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::checked_type());
23866: if (!s)
23866: return;
23866: # 471 "/usr/include/boost/multiprecision/cpp_int/bitwise.hpp" 3 4
23866: constexpr const limb_type byte_shift_mask = 8 - 1;
23866:
23866:
23866:
23866:
23866: constexpr limb_type limb_shift_mask = cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::limb_bits - 1;
23866: if (__builtin_is_constant_evaluated() && ((s & limb_shift_mask) == 0))
23866: left_shift_limb(result, s);
23866: else if (((s & byte_shift_mask) == 0) && !__builtin_is_constant_evaluated())
23866:
23866: {
23866: left_shift_byte(result, s);
23866: }
23866: # 495 "/usr/include/boost/multiprecision/cpp_int/bitwise.hpp" 3 4
23866: else
23866: {
23866: left_shift_generic(result, s);
23866: }
23866:
23866:
23866:
23866: result.normalize();
23866: }
23866:
23866: template <class Int>
23866: inline void right_shift_byte(Int& result, double_limb_type s)
23866: {
23866: limb_type offset = static_cast<limb_type>(s / Int::limb_bits);
23866: (static_cast <bool> ((s % 8) == 0) ? void (0) : __assert_fail ("(s % 8) == 0", "/usr/include/boost/multiprecision/cpp_int/bitwise.hpp", 509, __extension__ __PRETTY_FUNCTION__));
23866: unsigned ors = result.size();
23866: unsigned rs = ors;
23866: if (offset >= rs)
23866: {
23866: result = limb_type(0);
23866: return;
23866: }
23866: rs -= offset;
23866: typename Int::limb_pointer pr = result.limbs();
23866: unsigned char* pc = reinterpret_cast<unsigned char*>(pr);
23866: limb_type shift = static_cast<limb_type>(s / 8);
23866: std::memmove(pc, pc + shift, ors * sizeof(pr[0]) - shift);
23866: shift = (sizeof(limb_type) - shift % sizeof(limb_type)) * 8;
23866: if (shift < Int::limb_bits)
23866: {
23866: pr[ors - offset - 1] &= (static_cast<limb_type>(1u) << shift) - 1;
23866: if (!pr[ors - offset - 1] && (rs > 1))
23866: --rs;
23866: }
23866: result.resize(rs, rs);
23866: }
23866:
23866: template <class Int>
23866: inline constexpr void right_shift_limb(Int& result, double_limb_type s)
23866: {
23866: limb_type offset = static_cast<limb_type>(s / Int::limb_bits);
23866: (static_cast <bool> ((s % Int::limb_bits) == 0) ? void (0) : __assert_fail ("(s % Int::limb_bits) == 0", "/usr/include/boost/multiprecision/cpp_int/bitwise.hpp", 536, __extension__ __PRETTY_FUNCTION__));
23866: unsigned ors = result.size();
23866: unsigned rs = ors;
23866: if (offset >= rs)
23866: {
23866: result = limb_type(0);
23866: return;
23866: }
23866: rs -= offset;
23866: typename Int::limb_pointer pr = result.limbs();
23866: unsigned i = 0;
23866: for (; i < rs; ++i)
23866: pr[i] = pr[i + offset];
23866: result.resize(rs, rs);
23866: }
23866:
23866: template <class Int>
23866: inline constexpr void right_shift_generic(Int& result, double_limb_type s)
23866: {
23866: limb_type offset = static_cast<limb_type>(s / Int::limb_bits);
23866: limb_type shift = static_cast<limb_type>(s % Int::limb_bits);
23866: unsigned ors = result.size();
23866: unsigned rs = ors;
23866: if (offset >= rs)
23866: {
23866: result = limb_type(0);
23866: return;
23866: }
23866: rs -= offset;
23866: typename Int::limb_pointer pr = result.limbs();
23866: if ((pr[ors - 1] >> shift) == 0)
23866: {
23866: if (--rs == 0)
23866: {
23866: result = limb_type(0);
23866: return;
23866: }
23866: }
23866: unsigned i = 0;
23866:
23866:
23866: (static_cast <bool> (shift) ? void (0) : __assert_fail ("shift", "/usr/include/boost/multiprecision/cpp_int/bitwise.hpp", 577, __extension__ __PRETTY_FUNCTION__));
23866: for (; i + offset + 1 < ors; ++i)
23866: {
23866: pr[i] = pr[i + offset] >> shift;
23866: pr[i] |= pr[i + offset + 1] << (Int::limb_bits - shift);
23866: }
23866: pr[i] = pr[i + offset] >> shift;
23866: result.resize(rs, rs);
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, unsigned_magnitude, Checked1, Allocator1> >::value>::type
23866: eval_right_shift(
23866: cpp_int_backend<MinBits1, MaxBits1, unsigned_magnitude, Checked1, Allocator1>& result,
23866: double_limb_type s) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, unsigned_magnitude, Checked1, Allocator1> >::value)))
23866: {
23866: is_valid_bitwise_op(result, typename cpp_int_backend<MinBits1, MaxBits1, unsigned_magnitude, Checked1, Allocator1>::checked_type());
23866: if (!s)
23866: return;
23866: # 617 "/usr/include/boost/multiprecision/cpp_int/bitwise.hpp" 3 4
23866: constexpr const limb_type byte_shift_mask = 8 - 1;
23866:
23866:
23866:
23866:
23866: constexpr limb_type limb_shift_mask = cpp_int_backend<MinBits1, MaxBits1, signed_magnitude, Checked1, Allocator1>::limb_bits - 1;
23866: if (__builtin_is_constant_evaluated() && ((s & limb_shift_mask) == 0))
23866: right_shift_limb(result, s);
23866: else if (((s & byte_shift_mask) == 0) && !__builtin_is_constant_evaluated())
23866:
23866: right_shift_byte(result, s);
23866: # 637 "/usr/include/boost/multiprecision/cpp_int/bitwise.hpp" 3 4
23866: else
23866: right_shift_generic(result, s);
23866: }
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, signed_magnitude, Checked1, Allocator1> >::value>::type
23866: eval_right_shift(
23866: cpp_int_backend<MinBits1, MaxBits1, signed_magnitude, Checked1, Allocator1>& result,
23866: double_limb_type s) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, signed_magnitude, Checked1, Allocator1> >::value)))
23866: {
23866: is_valid_bitwise_op(result, typename cpp_int_backend<MinBits1, MaxBits1, signed_magnitude, Checked1, Allocator1>::checked_type());
23866: if (!s)
23866: return;
23866:
23866: bool is_neg = result.sign();
23866: if (is_neg)
23866: eval_increment(result);
23866: # 670 "/usr/include/boost/multiprecision/cpp_int/bitwise.hpp" 3 4
23866: constexpr const limb_type byte_shift_mask = 8 - 1;
23866:
23866: if ((s & byte_shift_mask) == 0)
23866: right_shift_byte(result, s);
23866: # 683 "/usr/include/boost/multiprecision/cpp_int/bitwise.hpp" 3 4
23866: else
23866: right_shift_generic(result, s);
23866: if (is_neg)
23866: eval_decrement(result);
23866: }
23866:
23866:
23866:
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, class T>
23866: inline constexpr typename enable_if<is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> > >::type
23866: eval_left_shift(cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result, T s) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: is_valid_bitwise_op(result, typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::checked_type());
23866: *result.limbs() = detail::checked_left_shift(*result.limbs(), s, typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::checked_type());
23866: result.normalize();
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, class T>
23866: inline constexpr typename enable_if<is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> > >::type
23866: eval_right_shift(cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result, T s) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866:
23866: is_valid_bitwise_op(result, typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::checked_type());
23866: *result.limbs() = (static_cast<unsigned>(s) >= sizeof(*result.limbs()) * 8) ? 0 : (result.sign() ? ((--*result.limbs()) >> s) + 1 : *result.limbs() >> s);
23866: if (result.sign() && (*result.limbs() == 0))
23866: result = static_cast<signed_limb_type>(-1);
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<
23866: is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value && (is_signed_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value || is_signed_number<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value)>::type
23866: eval_complement(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: static_assert(((Checked1 != checked) || (Checked2 != checked)), "Attempt to take the complement of a signed type results in undefined behavior.");
23866:
23866:
23866:
23866: if (o.sign())
23866: {
23866: *result.limbs() = *o.limbs() - 1;
23866: result.sign(false);
23866: }
23866: else
23866: {
23866: *result.limbs() = 1 + *o.limbs();
23866: result.sign(true);
23866: }
23866: result.normalize();
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<
23866: is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value && is_unsigned_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_unsigned_number<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>::type
23866: eval_complement(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: *result.limbs() = ~*o.limbs();
23866: result.normalize();
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<
23866: is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value && is_unsigned_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_unsigned_number<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>::type
23866: eval_bitwise_and(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: *result.limbs() &= *o.limbs();
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<
23866: is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value && (is_signed_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value || is_signed_number<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value)>::type
23866: eval_bitwise_and(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: is_valid_bitwise_op(result, o, typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::checked_type());
23866:
23866: using default_ops::eval_bit_test;
23866: using default_ops::eval_increment;
23866:
23866: if (result.sign() || o.sign())
23866: {
23866:
23866:
23866:
23866: constexpr
23866:
23866: const unsigned m = static_unsigned_max<static_unsigned_max<MinBits1, MinBits2>::value, static_unsigned_max<MaxBits1, MaxBits2>::value>::value;
23866: cpp_int_backend<m + 1, m + 1, unsigned_magnitude, unchecked, void> t1(result);
23866: cpp_int_backend<m + 1, m + 1, unsigned_magnitude, unchecked, void> t2(o);
23866: eval_bitwise_and(t1, t2);
23866: bool s = eval_bit_test(t1, m + 1);
23866: if (s)
23866: {
23866: eval_complement(t1, t1);
23866: eval_increment(t1);
23866: }
23866: result = t1;
23866: result.sign(s);
23866: }
23866: else
23866: {
23866: *result.limbs() &= *o.limbs();
23866: }
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<
23866: is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value && is_unsigned_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_unsigned_number<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>::type
23866: eval_bitwise_or(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: *result.limbs() |= *o.limbs();
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<
23866: is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value && (is_signed_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value || is_signed_number<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value)>::type
23866: eval_bitwise_or(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: is_valid_bitwise_op(result, o, typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::checked_type());
23866:
23866: using default_ops::eval_bit_test;
23866: using default_ops::eval_increment;
23866:
23866: if (result.sign() || o.sign())
23866: {
23866:
23866:
23866:
23866: constexpr
23866:
23866: const unsigned m = static_unsigned_max<static_unsigned_max<MinBits1, MinBits2>::value, static_unsigned_max<MaxBits1, MaxBits2>::value>::value;
23866: cpp_int_backend<m + 1, m + 1, unsigned_magnitude, unchecked, void> t1(result);
23866: cpp_int_backend<m + 1, m + 1, unsigned_magnitude, unchecked, void> t2(o);
23866: eval_bitwise_or(t1, t2);
23866: bool s = eval_bit_test(t1, m + 1);
23866: if (s)
23866: {
23866: eval_complement(t1, t1);
23866: eval_increment(t1);
23866: }
23866: result = t1;
23866: result.sign(s);
23866: }
23866: else
23866: {
23866: *result.limbs() |= *o.limbs();
23866: result.normalize();
23866: }
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<
23866: is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value && is_unsigned_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_unsigned_number<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value>::type
23866: eval_bitwise_xor(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: *result.limbs() ^= *o.limbs();
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
23866: inline constexpr typename enable_if_c<
23866: is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_trivial_cpp_int<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value && (is_signed_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value || is_signed_number<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2> >::value)>::type
23866: eval_bitwise_xor(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& o) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: is_valid_bitwise_op(result, o, typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::checked_type());
23866:
23866: using default_ops::eval_bit_test;
23866: using default_ops::eval_increment;
23866:
23866: if (result.sign() || o.sign())
23866: {
23866:
23866:
23866:
23866: constexpr
23866:
23866: const unsigned m = static_unsigned_max<static_unsigned_max<MinBits1, MinBits2>::value, static_unsigned_max<MaxBits1, MaxBits2>::value>::value;
23866: cpp_int_backend<m + 1, m + 1, unsigned_magnitude, unchecked, void> t1(result);
23866: cpp_int_backend<m + 1, m + 1, unsigned_magnitude, unchecked, void> t2(o);
23866: eval_bitwise_xor(t1, t2);
23866: bool s = eval_bit_test(t1, m + 1);
23866: if (s)
23866: {
23866: eval_complement(t1, t1);
23866: eval_increment(t1);
23866: }
23866: result = t1;
23866: result.sign(s);
23866: }
23866: else
23866: {
23866: *result.limbs() ^= *o.limbs();
23866: }
23866: }
23866:
23866: }}}
23866: # 2251 "/usr/include/boost/multiprecision/cpp_int.hpp" 2 3 4
23866: # 1 "/usr/include/boost/multiprecision/cpp_int/misc.hpp" 1 3 4
23866: # 9 "/usr/include/boost/multiprecision/cpp_int/misc.hpp" 3 4
23866: #define BOOST_MP_CPP_INT_MISC_HPP
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/functional/hash_fwd.hpp" 1 3 4
23866: # 15 "/usr/include/boost/multiprecision/cpp_int/misc.hpp" 2 3 4
23866: # 23 "/usr/include/boost/multiprecision/cpp_int/misc.hpp" 3 4
23866: namespace boost { namespace multiprecision { namespace backends {
23866:
23866: template <class R, class CppInt>
23866: constexpr void check_in_range(const CppInt& val, const mpl::int_<checked>&)
23866: {
23866: typedef typename boost::multiprecision::detail::canonical<R, CppInt>::type cast_type;
23866: if (val.sign())
23866: {
23866: if (boost::is_signed<R>::value == false)
23866: ::boost::throw_exception(std::range_error("Attempt to assign a negative value to an unsigned type."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int/misc.hpp", 32, __PRETTY_FUNCTION__));
23866: if (val.compare(static_cast<cast_type>((std::numeric_limits<R>::min)())) < 0)
23866: ::boost::throw_exception(std::overflow_error("Could not convert to the target type - -value is out of range."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int/misc.hpp", 34, __PRETTY_FUNCTION__));
23866: }
23866: else
23866: {
23866: if (val.compare(static_cast<cast_type>((std::numeric_limits<R>::max)())) > 0)
23866: ::boost::throw_exception(std::overflow_error("Could not convert to the target type - -value is out of range."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int/misc.hpp", 39, __PRETTY_FUNCTION__));
23866: }
23866: }
23866: template <class R, class CppInt>
23866: inline constexpr void check_in_range(const CppInt& , const mpl::int_<unchecked>&) noexcept {}
23866:
23866: inline constexpr void check_is_negative(const mpl::true_&) noexcept {}
23866: inline void check_is_negative(const mpl::false_&)
23866: {
23866: ::boost::throw_exception(std::range_error("Attempt to assign a negative value to an unsigned type."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int/misc.hpp", 48, __PRETTY_FUNCTION__));
23866: }
23866:
23866: template <class Integer>
23866: inline constexpr Integer negate_integer(Integer i, const mpl::true_&) noexcept
23866: {
23866: return -i;
23866: }
23866: template <class Integer>
23866: inline constexpr Integer negate_integer(Integer i, const mpl::false_&) noexcept
23866: {
23866: return ~(i - 1);
23866: }
23866:
23866: template <class R, unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<is_integral<R>::value && !is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value, void>::type
23866: eval_convert_to(R* result, const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& backend)
23866: {
23866: typedef mpl::int_<Checked1> checked_type;
23866: check_in_range<R>(backend, checked_type());
23866:
23866: if (std::numeric_limits<R>::digits < cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::limb_bits)
23866: {
23866: if ((backend.sign() && boost::is_signed<R>::value) && (1 + static_cast<boost::multiprecision::limb_type>((std::numeric_limits<R>::max)()) <= backend.limbs()[0]))
23866: {
23866: *result = (std::numeric_limits<R>::min)();
23866: return;
23866: }
23866: else if (boost::is_signed<R>::value && !backend.sign() && static_cast<boost::multiprecision::limb_type>((std::numeric_limits<R>::max)()) <= backend.limbs()[0])
23866: {
23866: *result = (std::numeric_limits<R>::max)();
23866: return;
23866: }
23866: else
23866: *result = static_cast<R>(backend.limbs()[0]);
23866: }
23866: else
23866: *result = static_cast<R>(backend.limbs()[0]);
23866: unsigned shift = cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::limb_bits;
23866: unsigned i = 1;
23866: if (std::numeric_limits<R>::digits > cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::limb_bits)
23866: {
23866: while ((i < backend.size()) && (shift < static_cast<unsigned>(std::numeric_limits<R>::digits - cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::limb_bits)))
23866: {
23866: *result += static_cast<R>(backend.limbs()[i]) << shift;
23866: shift += cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::limb_bits;
23866: ++i;
23866: }
23866:
23866:
23866:
23866: if (i < backend.size())
23866: {
23866: const limb_type mask = std::numeric_limits<R>::digits - shift == cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::limb_bits ? ~static_cast<limb_type>(0) : (static_cast<limb_type>(1u) << (std::numeric_limits<R>::digits - shift)) - 1;
23866: *result += (static_cast<R>(backend.limbs()[i]) & mask) << shift;
23866: if ((static_cast<R>(backend.limbs()[i]) & static_cast<limb_type>(~mask)) || (i + 1 < backend.size()))
23866: {
23866:
23866: if (backend.sign())
23866: {
23866: check_is_negative(boost::is_signed<R>());
23866: *result = (std::numeric_limits<R>::min)();
23866: }
23866: else if (boost::is_signed<R>::value)
23866: *result = (std::numeric_limits<R>::max)();
23866: return;
23866: }
23866: }
23866: }
23866: else if (backend.size() > 1)
23866: {
23866:
23866: if (backend.sign())
23866: {
23866: check_is_negative(boost::is_signed<R>());
23866: *result = (std::numeric_limits<R>::min)();
23866: }
23866: else if (boost::is_signed<R>::value)
23866: *result = (std::numeric_limits<R>::max)();
23866: return;
23866: }
23866: if (backend.sign())
23866: {
23866: check_is_negative(mpl::bool_<boost::is_signed<R>::value>());
23866: *result = negate_integer(*result, mpl::bool_<boost::is_signed<R>::value>());
23866: }
23866: }
23866:
23866: template <class R, unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<is_floating_point<R>::value && !is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value, void>::type
23866: eval_convert_to(R* result, const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& backend) noexcept((is_arithmetic<R>::value))
23866: {
23866: typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::const_limb_pointer p = backend.limbs();
23866: unsigned shift = cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::limb_bits;
23866: *result = static_cast<R>(*p);
23866: for (unsigned i = 1; i < backend.size(); ++i)
23866: {
23866: *result += static_cast<R>(std::ldexp(static_cast<long double>(p[i]), shift));
23866: shift += cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::limb_bits;
23866: }
23866: if (backend.sign())
23866: *result = -*result;
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value, bool>::type
23866: eval_is_zero(const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& val) noexcept
23866: {
23866: return (val.size() == 1) && (val.limbs()[0] == 0);
23866: }
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value, int>::type
23866: eval_get_sign(const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& val) noexcept
23866: {
23866: return eval_is_zero(val) ? 0 : val.sign() ? -1 : 1;
23866: }
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_abs(cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result, const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& val) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: result = val;
23866: result.sign(false);
23866: }
23866:
23866:
23866:
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value, unsigned>::type
23866: eval_lsb(const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& a)
23866: {
23866: using default_ops::eval_get_sign;
23866: if (eval_get_sign(a) == 0)
23866: {
23866: ::boost::throw_exception(std::range_error("No bits were set in the operand."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int/misc.hpp", 182, __PRETTY_FUNCTION__));
23866: }
23866: if (a.sign())
23866: {
23866: ::boost::throw_exception(std::range_error("Testing individual bits in negative values is not supported - results are undefined."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int/misc.hpp", 186, __PRETTY_FUNCTION__));
23866: }
23866:
23866:
23866:
23866:
23866: unsigned index = 0;
23866: while (!a.limbs()[index] && (index < a.size()))
23866: ++index;
23866:
23866:
23866:
23866: unsigned result = boost::multiprecision::detail::find_lsb(a.limbs()[index]);
23866:
23866: return result + index * cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::limb_bits;
23866: }
23866:
23866:
23866:
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value, unsigned>::type
23866: eval_msb_imp(const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& a)
23866: {
23866:
23866:
23866:
23866: return (a.size() - 1) * cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::limb_bits + boost::multiprecision::detail::find_msb(a.limbs()[a.size() - 1]);
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value, unsigned>::type
23866: eval_msb(const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& a)
23866: {
23866: using default_ops::eval_get_sign;
23866: if (eval_get_sign(a) == 0)
23866: {
23866: ::boost::throw_exception(std::range_error("No bits were set in the operand."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int/misc.hpp", 223, __PRETTY_FUNCTION__));
23866: }
23866: if (a.sign())
23866: {
23866: ::boost::throw_exception(std::range_error("Testing individual bits in negative values is not supported - results are undefined."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int/misc.hpp", 227, __PRETTY_FUNCTION__));
23866: }
23866: return eval_msb_imp(a);
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value, bool>::type
23866: eval_bit_test(const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& val, unsigned index) noexcept
23866: {
23866: unsigned offset = index / cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::limb_bits;
23866: unsigned shift = index % cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::limb_bits;
23866: limb_type mask = shift ? limb_type(1u) << shift : limb_type(1u);
23866: if (offset >= val.size())
23866: return false;
23866: return val.limbs()[offset] & mask ? true : false;
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_bit_set(cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& val, unsigned index)
23866: {
23866: unsigned offset = index / cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::limb_bits;
23866: unsigned shift = index % cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::limb_bits;
23866: limb_type mask = shift ? limb_type(1u) << shift : limb_type(1u);
23866: if (offset >= val.size())
23866: {
23866: unsigned os = val.size();
23866: val.resize(offset + 1, offset + 1);
23866: if (offset >= val.size())
23866: return;
23866: for (unsigned i = os; i <= offset; ++i)
23866: val.limbs()[i] = 0;
23866: }
23866: val.limbs()[offset] |= mask;
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_bit_unset(cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& val, unsigned index) noexcept
23866: {
23866: unsigned offset = index / cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::limb_bits;
23866: unsigned shift = index % cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::limb_bits;
23866: limb_type mask = shift ? limb_type(1u) << shift : limb_type(1u);
23866: if (offset >= val.size())
23866: return;
23866: val.limbs()[offset] &= ~mask;
23866: val.normalize();
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_bit_flip(cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& val, unsigned index)
23866: {
23866: unsigned offset = index / cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::limb_bits;
23866: unsigned shift = index % cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::limb_bits;
23866: limb_type mask = shift ? limb_type(1u) << shift : limb_type(1u);
23866: if (offset >= val.size())
23866: {
23866: unsigned os = val.size();
23866: val.resize(offset + 1, offset + 1);
23866: if (offset >= val.size())
23866: return;
23866: for (unsigned i = os; i <= offset; ++i)
23866: val.limbs()[i] = 0;
23866: }
23866: val.limbs()[offset] ^= mask;
23866: val.normalize();
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_qr(
23866: const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& x,
23866: const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& y,
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& q,
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& r) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: divide_unsigned_helper(&q, x, y, r);
23866: q.sign(x.sign() != y.sign());
23866: r.sign(x.sign());
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_qr(
23866: const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& x,
23866: limb_type y,
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& q,
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& r) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: divide_unsigned_helper(&q, x, y, r);
23866: q.sign(x.sign());
23866: r.sign(x.sign());
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, class U>
23866: inline constexpr typename enable_if_c<is_integral<U>::value>::type eval_qr(
23866: const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& x,
23866: U y,
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& q,
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& r) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: using default_ops::eval_qr;
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> t;
23866: t = y;
23866: eval_qr(x, t, q, r);
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, class Integer>
23866: inline constexpr typename enable_if_c<is_unsigned<Integer>::value && !is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value, Integer>::type
23866: eval_integer_modulus(const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& x, Integer val)
23866: {
23866: if ((sizeof(Integer) <= sizeof(limb_type)) || (val <= (std::numeric_limits<limb_type>::max)()))
23866: {
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> d;
23866: divide_unsigned_helper(static_cast<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>*>(0), x, static_cast<limb_type>(val), d);
23866: return d.limbs()[0];
23866: }
23866: else
23866: {
23866: return default_ops::eval_integer_modulus(x, val);
23866: }
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, class Integer>
23866: inline constexpr typename enable_if_c<is_signed<Integer>::value && !is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value, Integer>::type
23866: eval_integer_modulus(const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& x, Integer val)
23866: {
23866: return eval_integer_modulus(x, boost::multiprecision::detail::unsigned_abs(val));
23866: }
23866:
23866: inline constexpr limb_type integer_gcd_reduce(limb_type u, limb_type v)
23866: {
23866: do
23866: {
23866: if (u > v)
23866: std_constexpr::swap(u, v);
23866: if (u == v)
23866: break;
23866: v -= u;
23866: v >>= boost::multiprecision::detail::find_lsb(v);
23866: } while (true);
23866: return u;
23866: }
23866:
23866: inline constexpr double_limb_type integer_gcd_reduce(double_limb_type u, double_limb_type v)
23866: {
23866: do
23866: {
23866: if (u > v)
23866: std_constexpr::swap(u, v);
23866: if (u == v)
23866: break;
23866: if (v <= ~static_cast<limb_type>(0))
23866: {
23866: u = integer_gcd_reduce(static_cast<limb_type>(v), static_cast<limb_type>(u));
23866: break;
23866: }
23866: v -= u;
23866:
23866:
23866:
23866: while ((static_cast<unsigned>(v) & 1u) == 0)
23866:
23866: v >>= 1;
23866: } while (true);
23866: return u;
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_gcd(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& a,
23866: limb_type v)
23866: {
23866: using default_ops::eval_get_sign;
23866: using default_ops::eval_is_zero;
23866: using default_ops::eval_lsb;
23866:
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> u(a);
23866:
23866: int s = eval_get_sign(u);
23866:
23866:
23866: if (s < 0)
23866: {
23866: u.negate();
23866: }
23866: else if (s == 0)
23866: {
23866: result = v;
23866: return;
23866: }
23866: if (v == 0)
23866: {
23866: result = u;
23866: return;
23866: }
23866:
23866:
23866:
23866:
23866: unsigned us = eval_lsb(u);
23866: unsigned vs = boost::multiprecision::detail::find_lsb(v);
23866: int shift = (std::min)(us, vs);
23866: eval_right_shift(u, us);
23866: if (vs)
23866: v >>= vs;
23866:
23866: do
23866: {
23866:
23866:
23866: if (u.size() <= 2)
23866: {
23866: if (u.size() == 1)
23866: v = integer_gcd_reduce(*u.limbs(), v);
23866: else
23866: {
23866: double_limb_type i = u.limbs()[0] | (static_cast<double_limb_type>(u.limbs()[1]) << sizeof(limb_type) * 8);
23866: v = static_cast<limb_type>(integer_gcd_reduce(i, static_cast<double_limb_type>(v)));
23866: }
23866: break;
23866: }
23866: eval_subtract(u, v);
23866: us = eval_lsb(u);
23866: eval_right_shift(u, us);
23866: } while (true);
23866:
23866: result = v;
23866: eval_left_shift(result, shift);
23866: }
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, class Integer>
23866: inline constexpr typename enable_if_c<is_unsigned<Integer>::value && (sizeof(Integer) <= sizeof(limb_type)) && !is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_gcd(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& a,
23866: const Integer& v)
23866: {
23866: eval_gcd(result, a, static_cast<limb_type>(v));
23866: }
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, class Integer>
23866: inline constexpr typename enable_if_c<is_signed<Integer>::value && (sizeof(Integer) <= sizeof(limb_type)) && !is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_gcd(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& a,
23866: const Integer& v)
23866: {
23866: eval_gcd(result, a, static_cast<limb_type>(v < 0 ? -v : v));
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<!is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_gcd(
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
23866: const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& a,
23866: const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& b)
23866: {
23866: using default_ops::eval_get_sign;
23866: using default_ops::eval_is_zero;
23866: using default_ops::eval_lsb;
23866:
23866: if (a.size() == 1)
23866: {
23866: eval_gcd(result, b, *a.limbs());
23866: return;
23866: }
23866: if (b.size() == 1)
23866: {
23866: eval_gcd(result, a, *b.limbs());
23866: return;
23866: }
23866:
23866: cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> u(a), v(b);
23866:
23866: int s = eval_get_sign(u);
23866:
23866:
23866: if (s < 0)
23866: {
23866: u.negate();
23866: }
23866: else if (s == 0)
23866: {
23866: result = v;
23866: return;
23866: }
23866: s = eval_get_sign(v);
23866: if (s < 0)
23866: {
23866: v.negate();
23866: }
23866: else if (s == 0)
23866: {
23866: result = u;
23866: return;
23866: }
23866:
23866:
23866:
23866:
23866: unsigned us = eval_lsb(u);
23866: unsigned vs = eval_lsb(v);
23866: int shift = (std::min)(us, vs);
23866: eval_right_shift(u, us);
23866: eval_right_shift(v, vs);
23866:
23866: do
23866: {
23866:
23866:
23866: s = u.compare(v);
23866: if (s > 0)
23866: u.swap(v);
23866: if (s == 0)
23866: break;
23866: if (v.size() <= 2)
23866: {
23866: if (v.size() == 1)
23866: u = integer_gcd_reduce(*v.limbs(), *u.limbs());
23866: else
23866: {
23866: double_limb_type i = v.limbs()[0] | (static_cast<double_limb_type>(v.limbs()[1]) << sizeof(limb_type) * 8);
23866: double_limb_type j = (u.size() == 1) ? *u.limbs() : u.limbs()[0] | (static_cast<double_limb_type>(u.limbs()[1]) << sizeof(limb_type) * 8);
23866: u = integer_gcd_reduce(i, j);
23866: }
23866: break;
23866: }
23866: eval_subtract(v, u);
23866: vs = eval_lsb(v);
23866: eval_right_shift(v, vs);
23866: } while (true);
23866:
23866: result = u;
23866: eval_left_shift(result, shift);
23866: }
23866:
23866:
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value>::type
23866: eval_gcd(cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result, const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& a, const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& b) noexcept
23866: {
23866: *result.limbs() = boost::integer::gcd(*a.limbs(), *b.limbs());
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && (Checked1 == unchecked)>::type
23866: eval_lcm(cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result, const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& a, const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& b) noexcept(((is_non_throwing_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value)))
23866: {
23866: *result.limbs() = boost::integer::lcm(*a.limbs(), *b.limbs());
23866: result.normalize();
23866: }
23866:
23866: inline void conversion_overflow(const mpl::int_<checked>&)
23866: {
23866: ::boost::throw_exception(std::overflow_error("Overflow in conversion to narrower type"), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int/misc.hpp", 584, __PRETTY_FUNCTION__));
23866: }
23866: inline constexpr void conversion_overflow(const mpl::int_<unchecked>&) {}
23866:
23866: template <class R, unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<
23866: is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_signed_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && boost::is_convertible<typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::local_limb_type, R>::value>::type
23866: eval_convert_to(R* result, const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& val)
23866: {
23866: typedef typename common_type<R, typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::local_limb_type>::type common_type;
23866: if (std::numeric_limits<R>::is_specialized && (static_cast<common_type>(*val.limbs()) > static_cast<common_type>((std::numeric_limits<R>::max)())))
23866: {
23866: if (val.isneg())
23866: {
23866: check_is_negative(mpl::bool_ < boost::is_signed<R>::value || (number_category<R>::value == number_kind_floating_point) > ());
23866: if (static_cast<common_type>(*val.limbs()) > -static_cast<common_type>((std::numeric_limits<R>::min)()))
23866: conversion_overflow(typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::checked_type());
23866: *result = (std::numeric_limits<R>::min)();
23866: }
23866: else
23866: {
23866: conversion_overflow(typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::checked_type());
23866: *result = boost::is_signed<R>::value ? (std::numeric_limits<R>::max)() : static_cast<R>(*val.limbs());
23866: }
23866: }
23866: else
23866: {
23866: *result = static_cast<R>(*val.limbs());
23866: if (val.isneg())
23866: {
23866: check_is_negative(mpl::bool_ < boost::is_signed<R>::value || (number_category<R>::value == number_kind_floating_point) > ());
23866: *result = negate_integer(*result, mpl::bool_ < is_signed_number<R>::value || (number_category<R>::value == number_kind_floating_point) > ());
23866: }
23866: }
23866: }
23866:
23866: template <class R, unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<
23866: is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && is_unsigned_number<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value && boost::is_convertible<typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::local_limb_type, R>::value>::type
23866: eval_convert_to(R* result, const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& val)
23866: {
23866: typedef typename common_type<R, typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::local_limb_type>::type common_type;
23866: if (std::numeric_limits<R>::is_specialized && (static_cast<common_type>(*val.limbs()) > static_cast<common_type>((std::numeric_limits<R>::max)())))
23866: {
23866: conversion_overflow(typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::checked_type());
23866: *result = boost::is_signed<R>::value ? (std::numeric_limits<R>::max)() : static_cast<R>(*val.limbs());
23866: }
23866: else
23866: *result = static_cast<R>(*val.limbs());
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value, unsigned>::type
23866: eval_lsb(const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& a)
23866: {
23866: using default_ops::eval_get_sign;
23866: if (eval_get_sign(a) == 0)
23866: {
23866: ::boost::throw_exception(std::range_error("No bits were set in the operand."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int/misc.hpp", 642, __PRETTY_FUNCTION__));
23866: }
23866: if (a.sign())
23866: {
23866: ::boost::throw_exception(std::range_error("Testing individual bits in negative values is not supported - results are undefined."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int/misc.hpp", 646, __PRETTY_FUNCTION__));
23866: }
23866:
23866:
23866:
23866: return boost::multiprecision::detail::find_lsb(*a.limbs());
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value, unsigned>::type
23866: eval_msb_imp(const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& a)
23866: {
23866:
23866:
23866:
23866: return boost::multiprecision::detail::find_msb(*a.limbs());
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr typename enable_if_c<is_trivial_cpp_int<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> >::value, unsigned>::type
23866: eval_msb(const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& a)
23866: {
23866: using default_ops::eval_get_sign;
23866: if (eval_get_sign(a) == 0)
23866: {
23866: ::boost::throw_exception(std::range_error("No bits were set in the operand."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int/misc.hpp", 671, __PRETTY_FUNCTION__));
23866: }
23866: if (a.sign())
23866: {
23866: ::boost::throw_exception(std::range_error("Testing individual bits in negative values is not supported - results are undefined."), ::boost::source_location("/usr/include/boost/multiprecision/cpp_int/misc.hpp", 675, __PRETTY_FUNCTION__));
23866: }
23866: return eval_msb_imp(a);
23866: }
23866:
23866: template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1>
23866: inline constexpr std::size_t hash_value(const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& val) noexcept
23866: {
23866: std::size_t result = 0;
23866: for (unsigned i = 0; i < val.size(); ++i)
23866: {
23866: boost::hash_combine(result, val.limbs()[i]);
23866: }
23866: boost::hash_combine(result, val.sign());
23866: return result;
23866: }
23866:
23866:
23866:
23866:
23866:
23866: }}}
23866: # 2252 "/usr/include/boost/multiprecision/cpp_int.hpp" 2 3 4
23866: # 1 "/usr/include/boost/multiprecision/cpp_int/limits.hpp" 1 3 4
23866: # 9 "/usr/include/boost/multiprecision/cpp_int/limits.hpp" 3 4
23866: #define BOOST_MP_CPP_INT_LIM_HPP
23866:
23866: namespace std {
23866:
23866: namespace detail {
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>
23866: get_min(const boost::mpl::true_&, const boost::mpl::true_&, const boost::mpl::true_&)
23866: {
23866:
23866: typedef boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> result_type;
23866: typedef boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MaxBits, MaxBits, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked>, ExpressionTemplates> ui_type;
23866:
23866:
23866:
23866: constexpr
23866:
23866: const result_type val = -result_type(~ui_type(0));
23866: return val;
23866: }
23866:
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: inline boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>
23866: get_min(const boost::mpl::true_&, const boost::mpl::true_&, const boost::mpl::false_&)
23866: {
23866:
23866: typedef boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> result_type;
23866: typedef boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MaxBits, MaxBits, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked>, ExpressionTemplates> ui_type;
23866: static const result_type val = -result_type(~ui_type(0));
23866: return val;
23866: }
23866:
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>
23866: get_min(const boost::mpl::true_&, const boost::mpl::false_&, const boost::mpl::true_&)
23866: {
23866:
23866:
23866:
23866:
23866: constexpr
23866:
23866: const boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> val(0u);
23866: return val;
23866: }
23866:
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: inline boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>
23866: get_min(const boost::mpl::true_&, const boost::mpl::false_&, const boost::mpl::false_&)
23866: {
23866:
23866: static const boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> val(0u);
23866: return val;
23866: }
23866:
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates, bool has_allocator>
23866: inline boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>
23866: get_min(const boost::mpl::false_&, const boost::mpl::true_&, const boost::mpl::bool_<has_allocator>&)
23866: {
23866:
23866:
23866: static const boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> val(0u);
23866: return val;
23866: }
23866:
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates, bool has_allocator>
23866: inline boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>
23866: get_min(const boost::mpl::false_&, const boost::mpl::false_&, const boost::mpl::bool_<has_allocator>&)
23866: {
23866:
23866: static const boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> val(0u);
23866: return val;
23866: }
23866:
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>
23866: get_max(const boost::mpl::true_&, const boost::mpl::true_&, const boost::mpl::true_&)
23866: {
23866:
23866: typedef boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> result_type;
23866: typedef boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MaxBits, MaxBits, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked>, ExpressionTemplates> ui_type;
23866:
23866:
23866:
23866: constexpr
23866:
23866: const result_type val = ~ui_type(0);
23866: return val;
23866: }
23866:
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: inline boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>
23866: get_max(const boost::mpl::true_&, const boost::mpl::true_&, const boost::mpl::false_&)
23866: {
23866:
23866: typedef boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> result_type;
23866: typedef boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MaxBits, MaxBits, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked>, ExpressionTemplates> ui_type;
23866: static const result_type val = ~ui_type(0);
23866: return val;
23866: }
23866:
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: inline constexpr boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>
23866: get_max(const boost::mpl::true_&, const boost::mpl::false_&, const boost::mpl::true_&)
23866: {
23866:
23866: typedef boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> result_type;
23866: typedef boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, Allocator>, ExpressionTemplates> ui_type;
23866:
23866:
23866:
23866: constexpr
23866:
23866: const result_type val = ~ui_type(0);
23866: return val;
23866: }
23866:
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: inline boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>
23866: get_max(const boost::mpl::true_&, const boost::mpl::false_&, const boost::mpl::false_&)
23866: {
23866:
23866: typedef boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> result_type;
23866: typedef boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, Allocator>, ExpressionTemplates> ui_type;
23866: static const result_type val = ~ui_type(0);
23866: return val;
23866: }
23866:
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates, bool has_allocator>
23866: inline boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>
23866: get_max(const boost::mpl::false_&, const boost::mpl::true_&, const boost::mpl::bool_<has_allocator>&)
23866: {
23866:
23866:
23866: static const boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> val(0u);
23866: return val;
23866: }
23866:
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates, bool has_allocator>
23866: inline boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>
23866: get_max(const boost::mpl::false_&, const boost::mpl::false_&, const boost::mpl::bool_<has_allocator>&)
23866: {
23866:
23866: static const boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> val(0u);
23866: return val;
23866: }
23866:
23866: }
23866:
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: class numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >
23866: {
23866: typedef boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> backend_type;
23866: typedef boost::multiprecision::number<backend_type, ExpressionTemplates> number_type;
23866:
23866: struct inititializer
23866: {
23866: constexpr inititializer()
23866: {
23866: (std::numeric_limits<number_type>::max)();
23866: (std::numeric_limits<number_type>::min)();
23866: }
23866: constexpr void do_nothing() const {}
23866: };
23866:
23866: static const inititializer init;
23866:
23866: public:
23866: static constexpr bool is_specialized = true;
23866:
23866:
23866:
23866:
23866: static constexpr number_type(min)()
23866: {
23866: init.do_nothing();
23866: return detail::get_min<MinBits, MaxBits, SignType, Checked, Allocator, ExpressionTemplates>(boost::multiprecision::backends::is_fixed_precision<backend_type>(), boost::multiprecision::is_signed_number<backend_type>(), boost::mpl::bool_<boost::is_void<Allocator>::value>());
23866: }
23866: static constexpr number_type(max)()
23866: {
23866: init.do_nothing();
23866: return detail::get_max<MinBits, MaxBits, SignType, Checked, Allocator, ExpressionTemplates>(boost::multiprecision::backends::is_fixed_precision<backend_type>(), boost::multiprecision::is_signed_number<backend_type>(), boost::mpl::bool_<boost::is_void<Allocator>::value>());
23866: }
23866: static constexpr number_type lowest() { return (min)(); }
23866: static constexpr int digits = boost::multiprecision::backends::max_precision<backend_type>::value == (0x7fffffff * 2U + 1U) ? 0x7fffffff : boost::multiprecision::backends::max_precision<backend_type>::value;
23866: static constexpr int digits10 = (digits > 0x7fffffff / 301) ? (digits / 1000) * 301L : (digits * 301) / 1000;
23866: static constexpr int max_digits10 = digits10 + 3;
23866: static constexpr bool is_signed = boost::multiprecision::is_signed_number<backend_type>::value;
23866: static constexpr bool is_integer = true;
23866: static constexpr bool is_exact = true;
23866: static constexpr int radix = 2;
23866: static constexpr number_type epsilon() { return 0; }
23866: static constexpr number_type round_error() { return 0; }
23866: static constexpr int min_exponent = 0;
23866: static constexpr int min_exponent10 = 0;
23866: static constexpr int max_exponent = 0;
23866: static constexpr int max_exponent10 = 0;
23866: static constexpr bool has_infinity = false;
23866: static constexpr bool has_quiet_NaN = false;
23866: static constexpr bool has_signaling_NaN = false;
23866: static constexpr float_denorm_style has_denorm = denorm_absent;
23866: static constexpr bool has_denorm_loss = false;
23866: static constexpr number_type infinity() { return 0; }
23866: static constexpr number_type quiet_NaN() { return 0; }
23866: static constexpr number_type signaling_NaN() { return 0; }
23866: static constexpr number_type denorm_min() { return 0; }
23866: static constexpr bool is_iec559 = false;
23866: static constexpr bool is_bounded = boost::multiprecision::backends::is_fixed_precision<backend_type>::value;
23866: static constexpr bool is_modulo = (boost::multiprecision::backends::is_fixed_precision<backend_type>::value && (Checked == boost::multiprecision::unchecked));
23866: static constexpr bool traps = false;
23866: static constexpr bool tinyness_before = false;
23866: static constexpr float_round_style round_style = round_toward_zero;
23866: };
23866:
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: const typename numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::inititializer numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::init;
23866:
23866:
23866:
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: constexpr int numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::digits;
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: constexpr int numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::digits10;
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: constexpr int numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::max_digits10;
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::is_signed;
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::is_integer;
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::is_exact;
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: constexpr int numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::radix;
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: constexpr int numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::min_exponent;
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: constexpr int numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::min_exponent10;
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: constexpr int numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::max_exponent;
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: constexpr int numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::max_exponent10;
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::has_infinity;
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::has_quiet_NaN;
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::has_signaling_NaN;
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: constexpr float_denorm_style numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::has_denorm;
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::has_denorm_loss;
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::is_iec559;
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::is_bounded;
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::is_modulo;
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::traps;
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::tinyness_before;
23866: template <unsigned MinBits, unsigned MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: constexpr float_round_style numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::round_style;
23866:
23866:
23866:
23866:
23866:
23866:
23866: }
23866: # 2253 "/usr/include/boost/multiprecision/cpp_int.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/multiprecision/cpp_int/literals.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MP_CPP_INT_LITERALS_HPP
23866:
23866:
23866:
23866: namespace boost { namespace multiprecision {
23866:
23866: namespace literals {
23866: namespace detail {
23866:
23866: template <char>
23866: struct hex_value;
23866: template <>
23866: struct hex_value<'0'>
23866: {
23866: static constexpr limb_type value = 0;
23866: };
23866: template <>
23866: struct hex_value<'1'>
23866: {
23866: static constexpr limb_type value = 1;
23866: };
23866: template <>
23866: struct hex_value<'2'>
23866: {
23866: static constexpr limb_type value = 2;
23866: };
23866: template <>
23866: struct hex_value<'3'>
23866: {
23866: static constexpr limb_type value = 3;
23866: };
23866: template <>
23866: struct hex_value<'4'>
23866: {
23866: static constexpr limb_type value = 4;
23866: };
23866: template <>
23866: struct hex_value<'5'>
23866: {
23866: static constexpr limb_type value = 5;
23866: };
23866: template <>
23866: struct hex_value<'6'>
23866: {
23866: static constexpr limb_type value = 6;
23866: };
23866: template <>
23866: struct hex_value<'7'>
23866: {
23866: static constexpr limb_type value = 7;
23866: };
23866: template <>
23866: struct hex_value<'8'>
23866: {
23866: static constexpr limb_type value = 8;
23866: };
23866: template <>
23866: struct hex_value<'9'>
23866: {
23866: static constexpr limb_type value = 9;
23866: };
23866: template <>
23866: struct hex_value<'a'>
23866: {
23866: static constexpr limb_type value = 10;
23866: };
23866: template <>
23866: struct hex_value<'b'>
23866: {
23866: static constexpr limb_type value = 11;
23866: };
23866: template <>
23866: struct hex_value<'c'>
23866: {
23866: static constexpr limb_type value = 12;
23866: };
23866: template <>
23866: struct hex_value<'d'>
23866: {
23866: static constexpr limb_type value = 13;
23866: };
23866: template <>
23866: struct hex_value<'e'>
23866: {
23866: static constexpr limb_type value = 14;
23866: };
23866: template <>
23866: struct hex_value<'f'>
23866: {
23866: static constexpr limb_type value = 15;
23866: };
23866: template <>
23866: struct hex_value<'A'>
23866: {
23866: static constexpr limb_type value = 10;
23866: };
23866: template <>
23866: struct hex_value<'B'>
23866: {
23866: static constexpr limb_type value = 11;
23866: };
23866: template <>
23866: struct hex_value<'C'>
23866: {
23866: static constexpr limb_type value = 12;
23866: };
23866: template <>
23866: struct hex_value<'D'>
23866: {
23866: static constexpr limb_type value = 13;
23866: };
23866: template <>
23866: struct hex_value<'E'>
23866: {
23866: static constexpr limb_type value = 14;
23866: };
23866: template <>
23866: struct hex_value<'F'>
23866: {
23866: static constexpr limb_type value = 15;
23866: };
23866:
23866: template <class Pack, limb_type value>
23866: struct combine_value_to_pack;
23866: template <limb_type first, limb_type... ARGS, limb_type value>
23866: struct combine_value_to_pack<value_pack<first, ARGS...>, value>
23866: {
23866: typedef value_pack<first | value, ARGS...> type;
23866: };
23866:
23866: template <char NextChar, char... CHARS>
23866: struct pack_values
23866: {
23866: static constexpr unsigned chars_per_limb = sizeof(limb_type) * 8 / 4;
23866: static constexpr unsigned shift = ((sizeof...(CHARS)) % chars_per_limb) * 4;
23866: static constexpr limb_type value_to_add = shift ? hex_value<NextChar>::value << shift : hex_value<NextChar>::value;
23866:
23866: typedef typename pack_values<CHARS...>::type recursive_packed_type;
23866: typedef typename boost::mpl::if_c<shift == 0,
23866: typename recursive_packed_type::next_type,
23866: recursive_packed_type>::type pack_type;
23866: typedef typename combine_value_to_pack<pack_type, value_to_add>::type type;
23866: };
23866: template <char NextChar>
23866: struct pack_values<NextChar>
23866: {
23866: static constexpr limb_type value_to_add = hex_value<NextChar>::value;
23866:
23866: typedef value_pack<value_to_add> type;
23866: };
23866:
23866: template <class T>
23866: struct strip_leading_zeros_from_pack;
23866: template <limb_type... PACK>
23866: struct strip_leading_zeros_from_pack<value_pack<PACK...> >
23866: {
23866: typedef value_pack<PACK...> type;
23866: };
23866: template <limb_type... PACK>
23866: struct strip_leading_zeros_from_pack<value_pack<0u, PACK...> >
23866: {
23866: typedef typename strip_leading_zeros_from_pack<value_pack<PACK...> >::type type;
23866: };
23866:
23866: template <limb_type v, class PACK>
23866: struct append_value_to_pack;
23866: template <limb_type v, limb_type... PACK>
23866: struct append_value_to_pack<v, value_pack<PACK...> >
23866: {
23866: typedef value_pack<PACK..., v> type;
23866: };
23866:
23866: template <class T>
23866: struct reverse_value_pack;
23866: template <limb_type v, limb_type... VALUES>
23866: struct reverse_value_pack<value_pack<v, VALUES...> >
23866: {
23866: typedef typename reverse_value_pack<value_pack<VALUES...> >::type lead_values;
23866: typedef typename append_value_to_pack<v, lead_values>::type type;
23866: };
23866: template <limb_type v>
23866: struct reverse_value_pack<value_pack<v> >
23866: {
23866: typedef value_pack<v> type;
23866: };
23866: template <>
23866: struct reverse_value_pack<value_pack<> >
23866: {
23866: typedef value_pack<> type;
23866: };
23866:
23866: template <char l1, char l2, char... STR>
23866: struct make_packed_value_from_str
23866: {
23866: static_assert(l1 == '0', "Multi-precision integer literals must be in hexadecimal notation.");
23866: static_assert((l2 == 'X') || (l2 == 'x'), "Multi-precision integer literals must be in hexadecimal notation.");
23866: typedef typename pack_values<STR...>::type packed_type;
23866: typedef typename strip_leading_zeros_from_pack<packed_type>::type stripped_type;
23866: typedef typename reverse_value_pack<stripped_type>::type type;
23866: };
23866:
23866: template <class Pack, class B>
23866: struct make_backend_from_pack
23866: {
23866: static constexpr Pack p = {};
23866: static constexpr B value = p;
23866: };
23866:
23866: template <class Pack, class B>
23866: constexpr B make_backend_from_pack<Pack, B>::value;
23866:
23866: template <unsigned Digits>
23866: struct signed_cpp_int_literal_result_type
23866: {
23866: static constexpr unsigned bits = Digits * 4;
23866: typedef boost::multiprecision::backends::cpp_int_backend<bits, bits, signed_magnitude, unchecked, void> backend_type;
23866: typedef number<backend_type, et_off> number_type;
23866: };
23866:
23866: template <unsigned Digits>
23866: struct unsigned_cpp_int_literal_result_type
23866: {
23866: static constexpr unsigned bits = Digits * 4;
23866: typedef boost::multiprecision::backends::cpp_int_backend<bits, bits, unsigned_magnitude, unchecked, void> backend_type;
23866: typedef number<backend_type, et_off> number_type;
23866: };
23866:
23866: }
23866:
23866: template <char... STR>
23866: constexpr typename boost::multiprecision::literals::detail::signed_cpp_int_literal_result_type<(sizeof...(STR)) - 2>::number_type operator"" _cppi()
23866: {
23866: typedef typename boost::multiprecision::literals::detail::make_packed_value_from_str<STR...>::type pt;
23866: return boost::multiprecision::literals::detail::make_backend_from_pack<pt, typename boost::multiprecision::literals::detail::signed_cpp_int_literal_result_type<(sizeof...(STR)) - 2>::backend_type>::value;
23866: }
23866:
23866: template <char... STR>
23866: constexpr typename boost::multiprecision::literals::detail::unsigned_cpp_int_literal_result_type<(sizeof...(STR)) - 2>::number_type operator"" _cppui()
23866: {
23866: typedef typename boost::multiprecision::literals::detail::make_packed_value_from_str<STR...>::type pt;
23866: return boost::multiprecision::literals::detail::make_backend_from_pack<pt, typename boost::multiprecision::literals::detail::unsigned_cpp_int_literal_result_type<(sizeof...(STR)) - 2>::backend_type>::value;
23866: }
23866:
23866: #define BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(Bits) template <char... STR> constexpr boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<Bits, Bits, boost::multiprecision::signed_magnitude, boost::multiprecision::unchecked, void> > operator"" BOOST_JOIN(_cppi, Bits)() { typedef typename boost::multiprecision::literals::detail::make_packed_value_from_str<STR...>::type pt; return boost::multiprecision::literals::detail::make_backend_from_pack< pt, boost::multiprecision::backends::cpp_int_backend<Bits, Bits, boost::multiprecision::signed_magnitude, boost::multiprecision::unchecked, void> >::value; } template <char... STR> constexpr boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<Bits, Bits, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> > operator"" BOOST_JOIN(_cppui, Bits)() { typedef typename boost::multiprecision::literals::detail::make_packed_value_from_str<STR...>::type pt; return boost::multiprecision::literals::detail::make_backend_from_pack< pt, boost::multiprecision::backends::cpp_int_backend<Bits, Bits, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >::value; }
23866: # 268 "/usr/include/boost/multiprecision/cpp_int/literals.hpp" 3 4
23866: template <char... STR> constexpr boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::signed_magnitude, boost::multiprecision::unchecked, void> > operator"" _cppi128() { typedef typename boost::multiprecision::literals::detail::make_packed_value_from_str<STR...>::type pt; return boost::multiprecision::literals::detail::make_backend_from_pack< pt, boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::signed_magnitude, boost::multiprecision::unchecked, void> >::value; } template <char... STR> constexpr boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> > operator"" _cppui128() { typedef typename boost::multiprecision::literals::detail::make_packed_value_from_str<STR...>::type pt; return boost::multiprecision::literals::detail::make_backend_from_pack< pt, boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >::value; }
23866: template <char... STR> constexpr boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<256, 256, boost::multiprecision::signed_magnitude, boost::multiprecision::unchecked, void> > operator"" _cppi256() { typedef typename boost::multiprecision::literals::detail::make_packed_value_from_str<STR...>::type pt; return boost::multiprecision::literals::detail::make_backend_from_pack< pt, boost::multiprecision::backends::cpp_int_backend<256, 256, boost::multiprecision::signed_magnitude, boost::multiprecision::unchecked, void> >::value; } template <char... STR> constexpr boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> > operator"" _cppui256() { typedef typename boost::multiprecision::literals::detail::make_packed_value_from_str<STR...>::type pt; return boost::multiprecision::literals::detail::make_backend_from_pack< pt, boost::multiprecision::backends::cpp_int_backend<256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >::value; }
23866: template <char... STR> constexpr boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<512, 512, boost::multiprecision::signed_magnitude, boost::multiprecision::unchecked, void> > operator"" _cppi512() { typedef typename boost::multiprecision::literals::detail::make_packed_value_from_str<STR...>::type pt; return boost::multiprecision::literals::detail::make_backend_from_pack< pt, boost::multiprecision::backends::cpp_int_backend<512, 512, boost::multiprecision::signed_magnitude, boost::multiprecision::unchecked, void> >::value; } template <char... STR> constexpr boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<512, 512, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> > operator"" _cppui512() { typedef typename boost::multiprecision::literals::detail::make_packed_value_from_str<STR...>::type pt; return boost::multiprecision::literals::detail::make_backend_from_pack< pt, boost::multiprecision::backends::cpp_int_backend<512, 512, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >::value; }
23866: template <char... STR> constexpr boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<1024, 1024, boost::multiprecision::signed_magnitude, boost::multiprecision::unchecked, void> > operator"" _cppi1024() { typedef typename boost::multiprecision::literals::detail::make_packed_value_from_str<STR...>::type pt; return boost::multiprecision::literals::detail::make_backend_from_pack< pt, boost::multiprecision::backends::cpp_int_backend<1024, 1024, boost::multiprecision::signed_magnitude, boost::multiprecision::unchecked, void> >::value; } template <char... STR> constexpr boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<1024, 1024, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> > operator"" _cppui1024() { typedef typename boost::multiprecision::literals::detail::make_packed_value_from_str<STR...>::type pt; return boost::multiprecision::literals::detail::make_backend_from_pack< pt, boost::multiprecision::backends::cpp_int_backend<1024, 1024, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >::value; }
23866:
23866: }
23866:
23866:
23866:
23866:
23866: template <unsigned MinBits, cpp_int_check_type Checked>
23866: constexpr number<cpp_int_backend<MinBits, MinBits, signed_magnitude, Checked, void>, et_off>
23866: operator-(const number<cpp_int_backend<MinBits, MinBits, signed_magnitude, Checked, void>, et_off>& a)
23866: {
23866: return cpp_int_backend<MinBits, MinBits, signed_magnitude, Checked, void>(a.backend(), boost::multiprecision::literals::detail::make_negate_tag());
23866: }
23866: template <unsigned MinBits, cpp_int_check_type Checked>
23866: constexpr number<cpp_int_backend<MinBits, MinBits, signed_magnitude, Checked, void>, et_off>
23866: operator-(number<cpp_int_backend<MinBits, MinBits, signed_magnitude, Checked, void>, et_off>&& a)
23866: {
23866: return cpp_int_backend<MinBits, MinBits, signed_magnitude, Checked, void>(static_cast<const number<cpp_int_backend<MinBits, MinBits, signed_magnitude, Checked, void>, et_off>&>(a).backend(), boost::multiprecision::literals::detail::make_negate_tag());
23866: }
23866:
23866: }}
23866: # 2255 "/usr/include/boost/multiprecision/cpp_int.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/multiprecision/cpp_int/serialize.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MP_CPP_INT_SERIALIZE_HPP
23866:
23866: namespace boost {
23866:
23866: namespace archive {
23866:
23866: class binary_oarchive;
23866: class binary_iarchive;
23866:
23866: }
23866:
23866: namespace serialization {
23866:
23866: namespace mp = boost::multiprecision;
23866:
23866: namespace cpp_int_detail {
23866:
23866: using namespace boost::multiprecision;
23866: using namespace boost::multiprecision::backends;
23866:
23866: template <class T>
23866: struct is_binary_archive : public mpl::false_
23866: {};
23866: template <>
23866: struct is_binary_archive<boost::archive::binary_oarchive> : public mpl::true_
23866: {};
23866: template <>
23866: struct is_binary_archive<boost::archive::binary_iarchive> : public mpl::true_
23866: {};
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class Archive, class Int>
23866: void do_serialize(Archive& ar, Int& val, mpl::false_ const&, mpl::false_ const&, mpl::false_ const&)
23866: {
23866:
23866:
23866:
23866:
23866: using boost::make_nvp;
23866: bool s;
23866: ar& make_nvp("sign", s);
23866: std::size_t limb_count;
23866: std::size_t byte_count;
23866: ar& make_nvp("byte-count", byte_count);
23866: limb_count = byte_count / sizeof(limb_type) + ((byte_count % sizeof(limb_type)) ? 1 : 0);
23866: val.resize(limb_count, limb_count);
23866: limb_type* pl = val.limbs();
23866: for (std::size_t i = 0; i < limb_count; ++i)
23866: {
23866: pl[i] = 0;
23866: for (std::size_t j = 0; (j < sizeof(limb_type)) && byte_count; ++j)
23866: {
23866: unsigned char byte;
23866: ar& make_nvp("byte", byte);
23866: pl[i] |= static_cast<limb_type>(byte) << (j * 8);
23866: --byte_count;
23866: }
23866: }
23866: if (s != val.sign())
23866: val.negate();
23866: val.normalize();
23866: }
23866: template <class Archive, class Int>
23866: void do_serialize(Archive& ar, Int& val, mpl::true_ const&, mpl::false_ const&, mpl::false_ const&)
23866: {
23866:
23866:
23866:
23866:
23866: using boost::make_nvp;
23866: bool s = val.sign();
23866: ar& make_nvp("sign", s);
23866: limb_type* pl = val.limbs();
23866: std::size_t limb_count = val.size();
23866: std::size_t byte_count = limb_count * sizeof(limb_type);
23866: ar& make_nvp("byte-count", byte_count);
23866:
23866: for (std::size_t i = 0; i < limb_count; ++i)
23866: {
23866: limb_type l = pl[i];
23866: for (std::size_t j = 0; j < sizeof(limb_type); ++j)
23866: {
23866: unsigned char byte = static_cast<unsigned char>((l >> (j * 8)) & ((1u << 8) - 1));
23866: ar& make_nvp("byte", byte);
23866: }
23866: }
23866: }
23866: template <class Archive, class Int>
23866: void do_serialize(Archive& ar, Int& val, mpl::false_ const&, mpl::true_ const&, mpl::false_ const&)
23866: {
23866:
23866:
23866:
23866: using boost::make_nvp;
23866: bool s;
23866: typename Int::local_limb_type l = 0;
23866: ar& make_nvp("sign", s);
23866: std::size_t byte_count;
23866: ar& make_nvp("byte-count", byte_count);
23866: for (std::size_t i = 0; i < byte_count; ++i)
23866: {
23866: unsigned char b;
23866: ar& make_nvp("byte", b);
23866: l |= static_cast<typename Int::local_limb_type>(b) << (i * 8);
23866: }
23866: *val.limbs() = l;
23866: if (s != val.sign())
23866: val.negate();
23866: }
23866: template <class Archive, class Int>
23866: void do_serialize(Archive& ar, Int& val, mpl::true_ const&, mpl::true_ const&, mpl::false_ const&)
23866: {
23866:
23866:
23866:
23866: using boost::make_nvp;
23866: bool s = val.sign();
23866: typename Int::local_limb_type l = *val.limbs();
23866: ar& make_nvp("sign", s);
23866: std::size_t limb_count = sizeof(l);
23866: ar& make_nvp("byte-count", limb_count);
23866: for (std::size_t i = 0; i < limb_count; ++i)
23866: {
23866: unsigned char b = static_cast<unsigned char>(static_cast<typename Int::local_limb_type>(l >> (i * 8)) & static_cast<typename Int::local_limb_type>((1u << 8) - 1));
23866: ar& make_nvp("byte", b);
23866: }
23866: }
23866: template <class Archive, class Int>
23866: void do_serialize(Archive& ar, Int& val, mpl::false_ const&, mpl::false_ const&, mpl::true_ const&)
23866: {
23866:
23866:
23866:
23866: bool s;
23866: std::size_t c;
23866: ar& s;
23866: ar& c;
23866: val.resize(c, c);
23866: ar.load_binary(val.limbs(), c * sizeof(limb_type));
23866: if (s != val.sign())
23866: val.negate();
23866: val.normalize();
23866: }
23866: template <class Archive, class Int>
23866: void do_serialize(Archive& ar, Int& val, mpl::true_ const&, mpl::false_ const&, mpl::true_ const&)
23866: {
23866:
23866:
23866:
23866: bool s = val.sign();
23866: std::size_t c = val.size();
23866: ar& s;
23866: ar& c;
23866: ar.save_binary(val.limbs(), c * sizeof(limb_type));
23866: }
23866: template <class Archive, class Int>
23866: void do_serialize(Archive& ar, Int& val, mpl::false_ const&, mpl::true_ const&, mpl::true_ const&)
23866: {
23866:
23866:
23866:
23866: bool s;
23866: ar& s;
23866: ar.load_binary(val.limbs(), sizeof(*val.limbs()));
23866: if (s != val.sign())
23866: val.negate();
23866: }
23866: template <class Archive, class Int>
23866: void do_serialize(Archive& ar, Int& val, mpl::true_ const&, mpl::true_ const&, mpl::true_ const&)
23866: {
23866:
23866:
23866:
23866: bool s = val.sign();
23866: ar& s;
23866: ar.save_binary(val.limbs(), sizeof(*val.limbs()));
23866: }
23866:
23866: }
23866:
23866: template <class Archive, unsigned MinBits, unsigned MaxBits, mp::cpp_integer_type SignType, mp::cpp_int_check_type Checked, class Allocator>
23866: void serialize(Archive& ar, mp::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>& val, const unsigned int )
23866: {
23866: typedef typename Archive::is_saving save_tag;
23866: typedef mpl::bool_<mp::backends::is_trivial_cpp_int<mp::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> >::value> trivial_tag;
23866: typedef typename cpp_int_detail::is_binary_archive<Archive>::type binary_tag;
23866:
23866:
23866: cpp_int_detail::do_serialize(ar, val, save_tag(), trivial_tag(), binary_tag());
23866: }
23866:
23866: }
23866: }
23866: # 2257 "/usr/include/boost/multiprecision/cpp_int.hpp" 2 3 4
23866: # 1 "/usr/include/boost/multiprecision/cpp_int/import_export.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MP_CPP_INT_IMPORT_EXPORT_HPP
23866:
23866: namespace boost {
23866: namespace multiprecision {
23866:
23866: namespace detail {
23866:
23866: template <class Backend, class Unsigned>
23866: void assign_bits(Backend& val, Unsigned bits, unsigned bit_location, unsigned chunk_bits, const mpl::false_& tag)
23866: {
23866: unsigned limb = bit_location / (sizeof(limb_type) * 8);
23866: unsigned shift = bit_location % (sizeof(limb_type) * 8);
23866:
23866: limb_type mask = chunk_bits >= sizeof(limb_type) * 8 ? ~static_cast<limb_type>(0u) : (static_cast<limb_type>(1u) << chunk_bits) - 1;
23866:
23866: limb_type value = static_cast<limb_type>(bits & mask) << shift;
23866: if (value)
23866: {
23866: if (val.size() == limb)
23866: {
23866: val.resize(limb + 1, limb + 1);
23866: if (val.size() > limb)
23866: val.limbs()[limb] = value;
23866: }
23866: else if (val.size() > limb)
23866: val.limbs()[limb] |= value;
23866: }
23866: if (chunk_bits > sizeof(limb_type) * 8 - shift)
23866: {
23866: shift = sizeof(limb_type) * 8 - shift;
23866: chunk_bits -= shift;
23866: bit_location += shift;
23866: bits >>= shift;
23866: if (bits)
23866: assign_bits(val, bits, bit_location, chunk_bits, tag);
23866: }
23866: }
23866: template <class Backend, class Unsigned>
23866: void assign_bits(Backend& val, Unsigned bits, unsigned bit_location, unsigned chunk_bits, const mpl::true_&)
23866: {
23866: typedef typename Backend::local_limb_type local_limb_type;
23866:
23866:
23866:
23866:
23866: if ((bit_location >= sizeof(local_limb_type) * 8) && bits)
23866: val.resize(2, 2);
23866: else
23866: {
23866: local_limb_type mask = chunk_bits >= sizeof(local_limb_type) * 8 ? ~static_cast<local_limb_type>(0u) : (static_cast<local_limb_type>(1u) << chunk_bits) - 1;
23866: local_limb_type value = (static_cast<local_limb_type>(bits) & mask) << bit_location;
23866: *val.limbs() |= value;
23866:
23866:
23866:
23866: bit_location = sizeof(local_limb_type) * 8 - bit_location;
23866: if ((bit_location < sizeof(bits) * 8) && (bits >>= bit_location))
23866: val.resize(2, 2);
23866: }
23866: }
23866:
23866: template <unsigned MinBits, unsigned MaxBits, cpp_integer_type SignType, cpp_int_check_type Checked, class Allocator>
23866: inline void resize_to_bit_size(cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>& newval, unsigned bits, const mpl::false_&)
23866: {
23866: unsigned limb_count = static_cast<unsigned>(bits / (sizeof(limb_type) * 8));
23866: if (bits % (sizeof(limb_type) * 8))
23866: ++limb_count;
23866: static const unsigned max_limbs = MaxBits ? MaxBits / (8 * sizeof(limb_type)) + ((MaxBits % (8 * sizeof(limb_type))) ? 1 : 0) : (std::numeric_limits<unsigned>::max)();
23866: if (limb_count > max_limbs)
23866: limb_count = max_limbs;
23866: newval.resize(limb_count, limb_count);
23866: std::memset(newval.limbs(), 0, newval.size() * sizeof(limb_type));
23866: }
23866: template <unsigned MinBits, unsigned MaxBits, cpp_integer_type SignType, cpp_int_check_type Checked, class Allocator>
23866: inline void resize_to_bit_size(cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>& newval, unsigned, const mpl::true_&)
23866: {
23866: *newval.limbs() = 0;
23866: }
23866:
23866: template <unsigned MinBits, unsigned MaxBits, cpp_integer_type SignType, cpp_int_check_type Checked, class Allocator, expression_template_option ExpressionTemplates, class Iterator>
23866: number<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>&
23866: import_bits_generic(
23866: number<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>& val, Iterator i, Iterator j, unsigned chunk_size = 0, bool msv_first = true)
23866: {
23866: typename number<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>::backend_type newval;
23866:
23866: typedef typename std::iterator_traits<Iterator>::value_type value_type;
23866: typedef typename boost::make_unsigned<value_type>::type unsigned_value_type;
23866: typedef typename std::iterator_traits<Iterator>::difference_type difference_type;
23866: typedef typename boost::make_unsigned<difference_type>::type size_type;
23866: typedef typename cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>::trivial_tag tag_type;
23866:
23866: if (!chunk_size)
23866: chunk_size = std::numeric_limits<value_type>::digits;
23866:
23866: size_type limbs = std::distance(i, j);
23866: size_type bits = limbs * chunk_size;
23866:
23866: detail::resize_to_bit_size(newval, static_cast<unsigned>(bits), tag_type());
23866:
23866: difference_type bit_location = msv_first ? bits - chunk_size : 0;
23866: difference_type bit_location_change = msv_first ? -static_cast<difference_type>(chunk_size) : chunk_size;
23866:
23866: while (i != j)
23866: {
23866: detail::assign_bits(newval, static_cast<unsigned_value_type>(*i), static_cast<unsigned>(bit_location), chunk_size, tag_type());
23866: ++i;
23866: bit_location += bit_location_change;
23866: }
23866:
23866: newval.normalize();
23866:
23866: val.backend().swap(newval);
23866: return val;
23866: }
23866:
23866: template <unsigned MinBits, unsigned MaxBits, cpp_integer_type SignType, cpp_int_check_type Checked, class Allocator, expression_template_option ExpressionTemplates, class T>
23866: inline typename boost::disable_if_c<boost::multiprecision::backends::is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> >::value, number<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>&>::type
23866: import_bits_fast(
23866: number<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>& val, T* i, T* j, unsigned chunk_size = 0)
23866: {
23866: std::size_t byte_len = (j - i) * (chunk_size ? chunk_size / 8 : sizeof(*i));
23866: std::size_t limb_len = byte_len / sizeof(limb_type);
23866: if (byte_len % sizeof(limb_type))
23866: ++limb_len;
23866: cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>& result = val.backend();
23866: result.resize(static_cast<unsigned>(limb_len), static_cast<unsigned>(limb_len));
23866: result.limbs()[result.size() - 1] = 0u;
23866: std::memcpy(result.limbs(), i, (std::min)(byte_len, result.size() * sizeof(limb_type)));
23866: result.normalize();
23866: return val;
23866: }
23866: template <unsigned MinBits, unsigned MaxBits, cpp_integer_type SignType, cpp_int_check_type Checked, class Allocator, expression_template_option ExpressionTemplates, class T>
23866: inline typename boost::enable_if_c<boost::multiprecision::backends::is_trivial_cpp_int<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> >::value, number<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>&>::type
23866: import_bits_fast(
23866: number<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>& val, T* i, T* j, unsigned chunk_size = 0)
23866: {
23866: cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>& result = val.backend();
23866: std::size_t byte_len = (j - i) * (chunk_size ? chunk_size / 8 : sizeof(*i));
23866: std::size_t limb_len = byte_len / sizeof(result.limbs()[0]);
23866: if (byte_len % sizeof(result.limbs()[0]))
23866: ++limb_len;
23866: result.limbs()[0] = 0u;
23866: result.resize(static_cast<unsigned>(limb_len), static_cast<unsigned>(limb_len));
23866: std::memcpy(result.limbs(), i, (std::min)(byte_len, result.size() * sizeof(result.limbs()[0])));
23866: result.normalize();
23866: return val;
23866: }
23866: }
23866:
23866: template <unsigned MinBits, unsigned MaxBits, cpp_integer_type SignType, cpp_int_check_type Checked, class Allocator, expression_template_option ExpressionTemplates, class Iterator>
23866: inline number<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>&
23866: import_bits(
23866: number<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>& val, Iterator i, Iterator j, unsigned chunk_size = 0, bool msv_first = true)
23866: {
23866: return detail::import_bits_generic(val, i, j, chunk_size, msv_first);
23866: }
23866:
23866: template <unsigned MinBits, unsigned MaxBits, cpp_integer_type SignType, cpp_int_check_type Checked, class Allocator, expression_template_option ExpressionTemplates, class T>
23866: inline number<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>&
23866: import_bits(
23866: number<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>& val, T* i, T* j, unsigned chunk_size = 0, bool msv_first = true)
23866: {
23866:
23866: if (((chunk_size % 8) == 0) && !msv_first)
23866: return detail::import_bits_fast(val, i, j, chunk_size);
23866:
23866: return detail::import_bits_generic(val, i, j, chunk_size, msv_first);
23866: }
23866:
23866: namespace detail {
23866:
23866: template <class Backend>
23866: boost::uintmax_t extract_bits(const Backend& val, unsigned location, unsigned count, const mpl::false_& tag)
23866: {
23866: unsigned limb = location / (sizeof(limb_type) * 8);
23866: unsigned shift = location % (sizeof(limb_type) * 8);
23866: boost::uintmax_t result = 0;
23866: boost::uintmax_t mask = count == std::numeric_limits<boost::uintmax_t>::digits ? ~static_cast<boost::uintmax_t>(0) : (static_cast<boost::uintmax_t>(1u) << count) - 1;
23866: if (count > (sizeof(limb_type) * 8 - shift))
23866: {
23866: result = extract_bits(val, location + sizeof(limb_type) * 8 - shift, count - sizeof(limb_type) * 8 + shift, tag);
23866: result <<= sizeof(limb_type) * 8 - shift;
23866: }
23866: if (limb < val.size())
23866: result |= (val.limbs()[limb] >> shift) & mask;
23866: return result;
23866: }
23866:
23866: template <class Backend>
23866: inline boost::uintmax_t extract_bits(const Backend& val, unsigned location, unsigned count, const mpl::true_&)
23866: {
23866: typename Backend::local_limb_type result = *val.limbs();
23866: typename Backend::local_limb_type mask = count >= std::numeric_limits<typename Backend::local_limb_type>::digits ? ~static_cast<typename Backend::local_limb_type>(0) : (static_cast<typename Backend::local_limb_type>(1u) << count) - 1;
23866: return (result >> location) & mask;
23866: }
23866:
23866: }
23866:
23866: template <unsigned MinBits, unsigned MaxBits, cpp_integer_type SignType, cpp_int_check_type Checked, class Allocator, expression_template_option ExpressionTemplates, class OutputIterator>
23866: OutputIterator export_bits(
23866: const number<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates>& val, OutputIterator out, unsigned chunk_size, bool msv_first = true)
23866: {
23866:
23866:
23866:
23866:
23866: typedef typename cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>::trivial_tag tag_type;
23866: if (!val)
23866: {
23866: *out = 0;
23866: ++out;
23866: return out;
23866: }
23866: unsigned bitcount = boost::multiprecision::backends::eval_msb_imp(val.backend()) + 1;
23866: unsigned chunks = bitcount / chunk_size;
23866: if (bitcount % chunk_size)
23866: ++chunks;
23866:
23866: int bit_location = msv_first ? bitcount - chunk_size : 0;
23866: int bit_step = msv_first ? -static_cast<int>(chunk_size) : chunk_size;
23866: while (bit_location % bit_step)
23866: ++bit_location;
23866:
23866: do
23866: {
23866: *out = detail::extract_bits(val.backend(), bit_location, chunk_size, tag_type());
23866: ++out;
23866: bit_location += bit_step;
23866: } while ((bit_location >= 0) && (bit_location < (int)bitcount));
23866:
23866: return out;
23866:
23866:
23866:
23866: }
23866:
23866: }
23866: }
23866: # 2258 "/usr/include/boost/multiprecision/cpp_int.hpp" 2 3 4
23866: # 48 "src/common/common.h" 2
23866: # 1 "/usr/include/boost/multiprecision/gmp.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MATH_ER_GMP_BACKEND_HPP
23866:
23866:
23866: # 1 "/usr/include/boost/multiprecision/debug_adaptor.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MATH_DEBUG_ADAPTER_HPP
23866:
23866: # 1 "/usr/include/boost/multiprecision/traits/extract_exponent_type.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MATH_EXTRACT_EXPONENT_HPP
23866:
23866:
23866:
23866: namespace boost {
23866: namespace multiprecision {
23866: namespace backends {
23866:
23866: template <class Backend, int cat>
23866: struct extract_exponent_type
23866: {
23866: typedef int type;
23866: };
23866: template <class Backend>
23866: struct extract_exponent_type<Backend, number_kind_floating_point>
23866: {
23866: typedef typename Backend::exponent_type type;
23866: };
23866:
23866: }}}
23866: # 10 "/usr/include/boost/multiprecision/debug_adaptor.hpp" 2 3 4
23866:
23866:
23866: namespace boost {
23866: namespace multiprecision {
23866: namespace backends {
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class Backend>
23866: struct debug_adaptor
23866: {
23866: typedef typename Backend::signed_types signed_types;
23866: typedef typename Backend::unsigned_types unsigned_types;
23866: typedef typename Backend::float_types float_types;
23866: typedef typename extract_exponent_type<
23866: Backend, number_category<Backend>::value>::type exponent_type;
23866:
23866: private:
23866: std::string debug_value;
23866: Backend m_value;
23866:
23866: public:
23866: void update_view()
23866: {
23866:
23866: try
23866: {
23866:
23866: debug_value = m_value.str(0, static_cast<std::ios_base::fmtflags>(0));
23866:
23866: }
23866: catch (const std::exception& e)
23866: {
23866: debug_value = "String conversion failed with message: \"";
23866: debug_value += e.what();
23866: debug_value += "\"";
23866: }
23866:
23866: }
23866: debug_adaptor()
23866: {
23866: update_view();
23866: }
23866: debug_adaptor(const debug_adaptor& o) : debug_value(o.debug_value), m_value(o.m_value)
23866: {
23866: }
23866: debug_adaptor& operator=(const debug_adaptor& o)
23866: {
23866: debug_value = o.debug_value;
23866: m_value = o.m_value;
23866: return *this;
23866: }
23866: template <class T>
23866: debug_adaptor(const T& i, const typename enable_if_c<is_convertible<T, Backend>::value>::type* = 0)
23866: : m_value(i)
23866: {
23866: update_view();
23866: }
23866: template <class T>
23866: debug_adaptor(const T& i, const T& j)
23866: : m_value(i, j)
23866: {
23866: update_view();
23866: }
23866: template <class T>
23866: typename enable_if_c<is_arithmetic<T>::value || is_convertible<T, Backend>::value, debug_adaptor&>::type operator=(const T& i)
23866: {
23866: m_value = i;
23866: update_view();
23866: return *this;
23866: }
23866: debug_adaptor& operator=(const char* s)
23866: {
23866: m_value = s;
23866: update_view();
23866: return *this;
23866: }
23866: void swap(debug_adaptor& o)
23866: {
23866: std::swap(m_value, o.value());
23866: std::swap(debug_value, o.debug_value);
23866: }
23866: std::string str(std::streamsize digits, std::ios_base::fmtflags f) const
23866: {
23866: return m_value.str(digits, f);
23866: }
23866: void negate()
23866: {
23866: m_value.negate();
23866: update_view();
23866: }
23866: int compare(const debug_adaptor& o) const
23866: {
23866: return m_value.compare(o.value());
23866: }
23866: template <class T>
23866: int compare(const T& i) const
23866: {
23866: return m_value.compare(i);
23866: }
23866: Backend& value()
23866: {
23866: return m_value;
23866: }
23866: const Backend& value() const
23866: {
23866: return m_value;
23866: }
23866: template <class Archive>
23866: void serialize(Archive& ar, const unsigned int )
23866: {
23866: ar & boost::make_nvp("value", m_value);
23866: typedef typename Archive::is_loading tag;
23866: if (tag::value)
23866: update_view();
23866: }
23866: static unsigned default_precision() noexcept
23866: {
23866: return Backend::default_precision();
23866: }
23866: static void default_precision(unsigned v) noexcept
23866: {
23866: Backend::default_precision(v);
23866: }
23866: unsigned precision() const noexcept
23866: {
23866: return value().precision();
23866: }
23866: void precision(unsigned digits10) noexcept
23866: {
23866: value().precision(digits10);
23866: }
23866: };
23866:
23866: template <class Backend>
23866: inline Backend const& unwrap_debug_type(debug_adaptor<Backend> const& val)
23866: {
23866: return val.value();
23866: }
23866: template <class T>
23866: inline const T& unwrap_debug_type(const T& val)
23866: {
23866: return val;
23866: }
23866:
23866: #define NON_MEMBER_OP1(name,str) template <class Backend> inline void BOOST_JOIN(eval_, name)(debug_adaptor<Backend> & result) { using default_ops::BOOST_JOIN(eval_, name); BOOST_JOIN(eval_, name) (result.value()); result.update_view(); }
23866: # 168 "/usr/include/boost/multiprecision/debug_adaptor.hpp" 3 4
23866: #define NON_MEMBER_OP2(name,str) template <class Backend, class T> inline void BOOST_JOIN(eval_, name)(debug_adaptor<Backend> & result, const T& a) { using default_ops::BOOST_JOIN(eval_, name); BOOST_JOIN(eval_, name) (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void BOOST_JOIN(eval_, name)(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::BOOST_JOIN(eval_, name); BOOST_JOIN(eval_, name) (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866: # 186 "/usr/include/boost/multiprecision/debug_adaptor.hpp" 3 4
23866: #define NON_MEMBER_OP3(name,str) template <class Backend, class T, class U> inline void BOOST_JOIN(eval_, name)(debug_adaptor<Backend> & result, const T& a, const U& b) { using default_ops::BOOST_JOIN(eval_, name); BOOST_JOIN(eval_, name) (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void BOOST_JOIN(eval_, name)(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b) { using default_ops::BOOST_JOIN(eval_, name); BOOST_JOIN(eval_, name) (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void BOOST_JOIN(eval_, name)(debug_adaptor<Backend> & result, const T& a, const debug_adaptor<Backend>& b) { using default_ops::BOOST_JOIN(eval_, name); BOOST_JOIN(eval_, name) (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend> inline void BOOST_JOIN(eval_, name)(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b) { using default_ops::BOOST_JOIN(eval_, name); BOOST_JOIN(eval_, name) (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); }
23866: # 220 "/usr/include/boost/multiprecision/debug_adaptor.hpp" 3 4
23866: #define NON_MEMBER_OP4(name,str) template <class Backend, class T, class U, class V> inline void BOOST_JOIN(eval_, name)(debug_adaptor<Backend> & result, const T& a, const U& b, const V& c) { using default_ops::BOOST_JOIN(eval_, name); BOOST_JOIN(eval_, name) (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); } template <class Backend, class T> inline void BOOST_JOIN(eval_, name)(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b, const T& c) { using default_ops::BOOST_JOIN(eval_, name); BOOST_JOIN(eval_, name) (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); } template <class Backend, class T> inline void BOOST_JOIN(eval_, name)(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b, const debug_adaptor<Backend>& c) { using default_ops::BOOST_JOIN(eval_, name); BOOST_JOIN(eval_, name) (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); } template <class Backend, class T> inline void BOOST_JOIN(eval_, name)(debug_adaptor<Backend> & result, const T& a, const debug_adaptor<Backend>& b, const debug_adaptor<Backend>& c) { using default_ops::BOOST_JOIN(eval_, name); BOOST_JOIN(eval_, name) (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); } template <class Backend> inline void BOOST_JOIN(eval_, name)(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b, const debug_adaptor<Backend>& c) { using default_ops::BOOST_JOIN(eval_, name); BOOST_JOIN(eval_, name) (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); } template <class Backend, class T, class U> inline void BOOST_JOIN(eval_, name)(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b, const U& c) { using default_ops::BOOST_JOIN(eval_, name); BOOST_JOIN(eval_, name) (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); }
23866: # 270 "/usr/include/boost/multiprecision/debug_adaptor.hpp" 3 4
23866: template <class Backend, class T> inline void eval_add(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_add; eval_add (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_add(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_add; eval_add (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866: template <class Backend, class T> inline void eval_subtract(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_subtract; eval_subtract (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_subtract(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_subtract; eval_subtract (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866: template <class Backend, class T> inline void eval_multiply(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_multiply; eval_multiply (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_multiply(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_multiply; eval_multiply (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866: template <class Backend, class T> inline void eval_divide(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_divide; eval_divide (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_divide(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_divide; eval_divide (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866:
23866: template <class Backend, class R>
23866: inline void eval_convert_to(R* result, const debug_adaptor<Backend>& val)
23866: {
23866: using default_ops::eval_convert_to;
23866: eval_convert_to(result, val.value());
23866: }
23866:
23866: template <class Backend, class Exp>
23866: inline void eval_frexp(debug_adaptor<Backend>& result, const debug_adaptor<Backend>& arg, Exp* exp)
23866: {
23866: eval_frexp(result.value(), arg.value(), exp);
23866: result.update_view();
23866: }
23866:
23866: template <class Backend, class Exp>
23866: inline void eval_ldexp(debug_adaptor<Backend>& result, const debug_adaptor<Backend>& arg, Exp exp)
23866: {
23866: eval_ldexp(result.value(), arg.value(), exp);
23866: result.update_view();
23866: }
23866:
23866: template <class Backend, class Exp>
23866: inline void eval_scalbn(debug_adaptor<Backend>& result, const debug_adaptor<Backend>& arg, Exp exp)
23866: {
23866: using default_ops::eval_scalbn;
23866: eval_scalbn(result.value(), arg.value(), exp);
23866: result.update_view();
23866: }
23866:
23866: template <class Backend>
23866: inline typename Backend::exponent_type eval_ilogb(const debug_adaptor<Backend>& arg)
23866: {
23866: using default_ops::eval_ilogb;
23866: return eval_ilogb(arg.value());
23866: }
23866:
23866: template <class Backend, class T> inline void eval_floor(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_floor; eval_floor (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_floor(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_floor; eval_floor (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866: template <class Backend, class T> inline void eval_ceil(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_ceil; eval_ceil (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_ceil(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_ceil; eval_ceil (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866: template <class Backend, class T> inline void eval_sqrt(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_sqrt; eval_sqrt (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_sqrt(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_sqrt; eval_sqrt (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866: template <class Backend, class T> inline void eval_logb(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_logb; eval_logb (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_logb(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_logb; eval_logb (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866:
23866: template <class Backend>
23866: inline int eval_fpclassify(const debug_adaptor<Backend>& arg)
23866: {
23866: using default_ops::eval_fpclassify;
23866: return eval_fpclassify(arg.value());
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class Backend, class T, class U> inline void eval_add(debug_adaptor<Backend> & result, const T& a, const U& b) { using default_ops::eval_add; eval_add (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_add(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b) { using default_ops::eval_add; eval_add (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_add(debug_adaptor<Backend> & result, const T& a, const debug_adaptor<Backend>& b) { using default_ops::eval_add; eval_add (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend> inline void eval_add(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b) { using default_ops::eval_add; eval_add (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); }
23866: template <class Backend, class T, class U> inline void eval_subtract(debug_adaptor<Backend> & result, const T& a, const U& b) { using default_ops::eval_subtract; eval_subtract (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_subtract(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b) { using default_ops::eval_subtract; eval_subtract (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_subtract(debug_adaptor<Backend> & result, const T& a, const debug_adaptor<Backend>& b) { using default_ops::eval_subtract; eval_subtract (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend> inline void eval_subtract(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b) { using default_ops::eval_subtract; eval_subtract (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); }
23866: template <class Backend, class T, class U> inline void eval_multiply(debug_adaptor<Backend> & result, const T& a, const U& b) { using default_ops::eval_multiply; eval_multiply (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_multiply(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b) { using default_ops::eval_multiply; eval_multiply (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_multiply(debug_adaptor<Backend> & result, const T& a, const debug_adaptor<Backend>& b) { using default_ops::eval_multiply; eval_multiply (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend> inline void eval_multiply(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b) { using default_ops::eval_multiply; eval_multiply (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); }
23866: template <class Backend, class T, class U> inline void eval_divide(debug_adaptor<Backend> & result, const T& a, const U& b) { using default_ops::eval_divide; eval_divide (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_divide(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b) { using default_ops::eval_divide; eval_divide (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_divide(debug_adaptor<Backend> & result, const T& a, const debug_adaptor<Backend>& b) { using default_ops::eval_divide; eval_divide (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend> inline void eval_divide(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b) { using default_ops::eval_divide; eval_divide (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); }
23866: template <class Backend, class T, class U> inline void eval_multiply_add(debug_adaptor<Backend> & result, const T& a, const U& b) { using default_ops::eval_multiply_add; eval_multiply_add (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_multiply_add(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b) { using default_ops::eval_multiply_add; eval_multiply_add (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_multiply_add(debug_adaptor<Backend> & result, const T& a, const debug_adaptor<Backend>& b) { using default_ops::eval_multiply_add; eval_multiply_add (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend> inline void eval_multiply_add(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b) { using default_ops::eval_multiply_add; eval_multiply_add (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); }
23866: template <class Backend, class T, class U> inline void eval_multiply_subtract(debug_adaptor<Backend> & result, const T& a, const U& b) { using default_ops::eval_multiply_subtract; eval_multiply_subtract (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_multiply_subtract(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b) { using default_ops::eval_multiply_subtract; eval_multiply_subtract (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_multiply_subtract(debug_adaptor<Backend> & result, const T& a, const debug_adaptor<Backend>& b) { using default_ops::eval_multiply_subtract; eval_multiply_subtract (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend> inline void eval_multiply_subtract(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b) { using default_ops::eval_multiply_subtract; eval_multiply_subtract (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); }
23866: template <class Backend, class T, class U, class V> inline void eval_multiply_add(debug_adaptor<Backend> & result, const T& a, const U& b, const V& c) { using default_ops::eval_multiply_add; eval_multiply_add (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); } template <class Backend, class T> inline void eval_multiply_add(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b, const T& c) { using default_ops::eval_multiply_add; eval_multiply_add (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); } template <class Backend, class T> inline void eval_multiply_add(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b, const debug_adaptor<Backend>& c) { using default_ops::eval_multiply_add; eval_multiply_add (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); } template <class Backend, class T> inline void eval_multiply_add(debug_adaptor<Backend> & result, const T& a, const debug_adaptor<Backend>& b, const debug_adaptor<Backend>& c) { using default_ops::eval_multiply_add; eval_multiply_add (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); } template <class Backend> inline void eval_multiply_add(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b, const debug_adaptor<Backend>& c) { using default_ops::eval_multiply_add; eval_multiply_add (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); } template <class Backend, class T, class U> inline void eval_multiply_add(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b, const U& c) { using default_ops::eval_multiply_add; eval_multiply_add (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); }
23866: template <class Backend, class T, class U, class V> inline void eval_multiply_subtract(debug_adaptor<Backend> & result, const T& a, const U& b, const V& c) { using default_ops::eval_multiply_subtract; eval_multiply_subtract (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); } template <class Backend, class T> inline void eval_multiply_subtract(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b, const T& c) { using default_ops::eval_multiply_subtract; eval_multiply_subtract (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); } template <class Backend, class T> inline void eval_multiply_subtract(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b, const debug_adaptor<Backend>& c) { using default_ops::eval_multiply_subtract; eval_multiply_subtract (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); } template <class Backend, class T> inline void eval_multiply_subtract(debug_adaptor<Backend> & result, const T& a, const debug_adaptor<Backend>& b, const debug_adaptor<Backend>& c) { using default_ops::eval_multiply_subtract; eval_multiply_subtract (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); } template <class Backend> inline void eval_multiply_subtract(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b, const debug_adaptor<Backend>& c) { using default_ops::eval_multiply_subtract; eval_multiply_subtract (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); } template <class Backend, class T, class U> inline void eval_multiply_subtract(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b, const U& c) { using default_ops::eval_multiply_subtract; eval_multiply_subtract (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); }
23866:
23866: template <class Backend> inline void eval_increment(debug_adaptor<Backend> & result) { using default_ops::eval_increment; eval_increment (result.value()); result.update_view(); }
23866: template <class Backend> inline void eval_decrement(debug_adaptor<Backend> & result) { using default_ops::eval_decrement; eval_decrement (result.value()); result.update_view(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class Backend, class T> inline void eval_modulus(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_modulus; eval_modulus (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_modulus(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_modulus; eval_modulus (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866: template <class Backend, class T, class U> inline void eval_modulus(debug_adaptor<Backend> & result, const T& a, const U& b) { using default_ops::eval_modulus; eval_modulus (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_modulus(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b) { using default_ops::eval_modulus; eval_modulus (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_modulus(debug_adaptor<Backend> & result, const T& a, const debug_adaptor<Backend>& b) { using default_ops::eval_modulus; eval_modulus (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend> inline void eval_modulus(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b) { using default_ops::eval_modulus; eval_modulus (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); }
23866: template <class Backend, class T> inline void eval_bitwise_or(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_bitwise_or; eval_bitwise_or (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_bitwise_or(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_bitwise_or; eval_bitwise_or (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866: template <class Backend, class T, class U> inline void eval_bitwise_or(debug_adaptor<Backend> & result, const T& a, const U& b) { using default_ops::eval_bitwise_or; eval_bitwise_or (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_bitwise_or(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b) { using default_ops::eval_bitwise_or; eval_bitwise_or (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_bitwise_or(debug_adaptor<Backend> & result, const T& a, const debug_adaptor<Backend>& b) { using default_ops::eval_bitwise_or; eval_bitwise_or (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend> inline void eval_bitwise_or(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b) { using default_ops::eval_bitwise_or; eval_bitwise_or (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); }
23866: template <class Backend, class T> inline void eval_bitwise_and(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_bitwise_and; eval_bitwise_and (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_bitwise_and(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_bitwise_and; eval_bitwise_and (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866: template <class Backend, class T, class U> inline void eval_bitwise_and(debug_adaptor<Backend> & result, const T& a, const U& b) { using default_ops::eval_bitwise_and; eval_bitwise_and (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_bitwise_and(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b) { using default_ops::eval_bitwise_and; eval_bitwise_and (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_bitwise_and(debug_adaptor<Backend> & result, const T& a, const debug_adaptor<Backend>& b) { using default_ops::eval_bitwise_and; eval_bitwise_and (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend> inline void eval_bitwise_and(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b) { using default_ops::eval_bitwise_and; eval_bitwise_and (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); }
23866: template <class Backend, class T> inline void eval_bitwise_xor(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_bitwise_xor; eval_bitwise_xor (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_bitwise_xor(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_bitwise_xor; eval_bitwise_xor (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866: template <class Backend, class T, class U> inline void eval_bitwise_xor(debug_adaptor<Backend> & result, const T& a, const U& b) { using default_ops::eval_bitwise_xor; eval_bitwise_xor (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_bitwise_xor(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b) { using default_ops::eval_bitwise_xor; eval_bitwise_xor (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_bitwise_xor(debug_adaptor<Backend> & result, const T& a, const debug_adaptor<Backend>& b) { using default_ops::eval_bitwise_xor; eval_bitwise_xor (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend> inline void eval_bitwise_xor(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b) { using default_ops::eval_bitwise_xor; eval_bitwise_xor (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); }
23866: template <class Backend, class T, class U, class V> inline void eval_qr(debug_adaptor<Backend> & result, const T& a, const U& b, const V& c) { using default_ops::eval_qr; eval_qr (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); } template <class Backend, class T> inline void eval_qr(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b, const T& c) { using default_ops::eval_qr; eval_qr (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); } template <class Backend, class T> inline void eval_qr(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b, const debug_adaptor<Backend>& c) { using default_ops::eval_qr; eval_qr (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); } template <class Backend, class T> inline void eval_qr(debug_adaptor<Backend> & result, const T& a, const debug_adaptor<Backend>& b, const debug_adaptor<Backend>& c) { using default_ops::eval_qr; eval_qr (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); } template <class Backend> inline void eval_qr(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b, const debug_adaptor<Backend>& c) { using default_ops::eval_qr; eval_qr (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); } template <class Backend, class T, class U> inline void eval_qr(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b, const U& c) { using default_ops::eval_qr; eval_qr (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); }
23866: template <class Backend, class T> inline void eval_complement(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_complement; eval_complement (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_complement(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_complement; eval_complement (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866:
23866: template <class Backend>
23866: inline void eval_left_shift(debug_adaptor<Backend>& arg, std::size_t a)
23866: {
23866: using default_ops::eval_left_shift;
23866: eval_left_shift(arg.value(), a);
23866: arg.update_view();
23866: }
23866: template <class Backend>
23866: inline void eval_left_shift(debug_adaptor<Backend>& arg, const debug_adaptor<Backend>& a, std::size_t b)
23866: {
23866: using default_ops::eval_left_shift;
23866: eval_left_shift(arg.value(), a.value(), b);
23866: arg.update_view();
23866: }
23866: template <class Backend>
23866: inline void eval_right_shift(debug_adaptor<Backend>& arg, std::size_t a)
23866: {
23866: using default_ops::eval_right_shift;
23866: eval_right_shift(arg.value(), a);
23866: arg.update_view();
23866: }
23866: template <class Backend>
23866: inline void eval_right_shift(debug_adaptor<Backend>& arg, const debug_adaptor<Backend>& a, std::size_t b)
23866: {
23866: using default_ops::eval_right_shift;
23866: eval_right_shift(arg.value(), a.value(), b);
23866: arg.update_view();
23866: }
23866:
23866: template <class Backend, class T>
23866: inline unsigned eval_integer_modulus(const debug_adaptor<Backend>& arg, const T& a)
23866: {
23866: using default_ops::eval_integer_modulus;
23866: return eval_integer_modulus(arg.value(), a);
23866: }
23866:
23866: template <class Backend>
23866: inline unsigned eval_lsb(const debug_adaptor<Backend>& arg)
23866: {
23866: using default_ops::eval_lsb;
23866: return eval_lsb(arg.value());
23866: }
23866:
23866: template <class Backend>
23866: inline unsigned eval_msb(const debug_adaptor<Backend>& arg)
23866: {
23866: using default_ops::eval_msb;
23866: return eval_msb(arg.value());
23866: }
23866:
23866: template <class Backend>
23866: inline bool eval_bit_test(const debug_adaptor<Backend>& arg, unsigned a)
23866: {
23866: using default_ops::eval_bit_test;
23866: return eval_bit_test(arg.value(), a);
23866: }
23866:
23866: template <class Backend>
23866: inline void eval_bit_set(const debug_adaptor<Backend>& arg, unsigned a)
23866: {
23866: using default_ops::eval_bit_set;
23866: eval_bit_set(arg.value(), a);
23866: arg.update_view();
23866: }
23866: template <class Backend>
23866: inline void eval_bit_unset(const debug_adaptor<Backend>& arg, unsigned a)
23866: {
23866: using default_ops::eval_bit_unset;
23866: eval_bit_unset(arg.value(), a);
23866: arg.update_view();
23866: }
23866: template <class Backend>
23866: inline void eval_bit_flip(const debug_adaptor<Backend>& arg, unsigned a)
23866: {
23866: using default_ops::eval_bit_flip;
23866: eval_bit_flip(arg.value(), a);
23866: arg.update_view();
23866: }
23866:
23866: template <class Backend, class T, class U> inline void eval_gcd(debug_adaptor<Backend> & result, const T& a, const U& b) { using default_ops::eval_gcd; eval_gcd (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_gcd(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b) { using default_ops::eval_gcd; eval_gcd (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_gcd(debug_adaptor<Backend> & result, const T& a, const debug_adaptor<Backend>& b) { using default_ops::eval_gcd; eval_gcd (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend> inline void eval_gcd(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b) { using default_ops::eval_gcd; eval_gcd (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); }
23866: template <class Backend, class T, class U> inline void eval_lcm(debug_adaptor<Backend> & result, const T& a, const U& b) { using default_ops::eval_lcm; eval_lcm (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_lcm(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b) { using default_ops::eval_lcm; eval_lcm (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_lcm(debug_adaptor<Backend> & result, const T& a, const debug_adaptor<Backend>& b) { using default_ops::eval_lcm; eval_lcm (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend> inline void eval_lcm(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b) { using default_ops::eval_lcm; eval_lcm (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); }
23866: template <class Backend, class T, class U, class V> inline void eval_powm(debug_adaptor<Backend> & result, const T& a, const U& b, const V& c) { using default_ops::eval_powm; eval_powm (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); } template <class Backend, class T> inline void eval_powm(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b, const T& c) { using default_ops::eval_powm; eval_powm (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); } template <class Backend, class T> inline void eval_powm(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b, const debug_adaptor<Backend>& c) { using default_ops::eval_powm; eval_powm (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); } template <class Backend, class T> inline void eval_powm(debug_adaptor<Backend> & result, const T& a, const debug_adaptor<Backend>& b, const debug_adaptor<Backend>& c) { using default_ops::eval_powm; eval_powm (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); } template <class Backend> inline void eval_powm(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b, const debug_adaptor<Backend>& c) { using default_ops::eval_powm; eval_powm (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); } template <class Backend, class T, class U> inline void eval_powm(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b, const U& c) { using default_ops::eval_powm; eval_powm (result.value(), unwrap_debug_type(a), unwrap_debug_type(b), unwrap_debug_type(c)); result.update_view(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class Backend, class T> inline void eval_abs(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_abs; eval_abs (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_abs(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_abs; eval_abs (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866: template <class Backend, class T> inline void eval_fabs(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_fabs; eval_fabs (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_fabs(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_fabs; eval_fabs (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class Backend, class T> inline void eval_trunc(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_trunc; eval_trunc (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_trunc(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_trunc; eval_trunc (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866: template <class Backend, class T> inline void eval_round(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_round; eval_round (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_round(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_round; eval_round (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866: template <class Backend, class T> inline void eval_exp(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_exp; eval_exp (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_exp(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_exp; eval_exp (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866: template <class Backend, class T> inline void eval_log(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_log; eval_log (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_log(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_log; eval_log (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866: template <class Backend, class T> inline void eval_log10(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_log10; eval_log10 (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_log10(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_log10; eval_log10 (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866: template <class Backend, class T> inline void eval_sin(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_sin; eval_sin (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_sin(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_sin; eval_sin (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866: template <class Backend, class T> inline void eval_cos(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_cos; eval_cos (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_cos(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_cos; eval_cos (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866: template <class Backend, class T> inline void eval_tan(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_tan; eval_tan (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_tan(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_tan; eval_tan (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866: template <class Backend, class T> inline void eval_asin(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_asin; eval_asin (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_asin(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_asin; eval_asin (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866: template <class Backend, class T> inline void eval_acos(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_acos; eval_acos (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_acos(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_acos; eval_acos (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866: template <class Backend, class T> inline void eval_atan(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_atan; eval_atan (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_atan(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_atan; eval_atan (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866: template <class Backend, class T> inline void eval_sinh(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_sinh; eval_sinh (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_sinh(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_sinh; eval_sinh (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866: template <class Backend, class T> inline void eval_cosh(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_cosh; eval_cosh (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_cosh(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_cosh; eval_cosh (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866: template <class Backend, class T> inline void eval_tanh(debug_adaptor<Backend> & result, const T& a) { using default_ops::eval_tanh; eval_tanh (result.value(), unwrap_debug_type(a)); result.update_view(); } template <class Backend> inline void eval_tanh(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a) { using default_ops::eval_tanh; eval_tanh (result.value(), unwrap_debug_type(a)); result.update_view(); }
23866: template <class Backend, class T, class U> inline void eval_fmod(debug_adaptor<Backend> & result, const T& a, const U& b) { using default_ops::eval_fmod; eval_fmod (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_fmod(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b) { using default_ops::eval_fmod; eval_fmod (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_fmod(debug_adaptor<Backend> & result, const T& a, const debug_adaptor<Backend>& b) { using default_ops::eval_fmod; eval_fmod (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend> inline void eval_fmod(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b) { using default_ops::eval_fmod; eval_fmod (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); }
23866: template <class Backend, class T, class U> inline void eval_pow(debug_adaptor<Backend> & result, const T& a, const U& b) { using default_ops::eval_pow; eval_pow (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_pow(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b) { using default_ops::eval_pow; eval_pow (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_pow(debug_adaptor<Backend> & result, const T& a, const debug_adaptor<Backend>& b) { using default_ops::eval_pow; eval_pow (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend> inline void eval_pow(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b) { using default_ops::eval_pow; eval_pow (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); }
23866: template <class Backend, class T, class U> inline void eval_atan2(debug_adaptor<Backend> & result, const T& a, const U& b) { using default_ops::eval_atan2; eval_atan2 (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_atan2(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const T& b) { using default_ops::eval_atan2; eval_atan2 (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend, class T> inline void eval_atan2(debug_adaptor<Backend> & result, const T& a, const debug_adaptor<Backend>& b) { using default_ops::eval_atan2; eval_atan2 (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); } template <class Backend> inline void eval_atan2(debug_adaptor<Backend> & result, const debug_adaptor<Backend>& a, const debug_adaptor<Backend>& b) { using default_ops::eval_atan2; eval_atan2 (result.value(), unwrap_debug_type(a), unwrap_debug_type(b)); result.update_view(); }
23866:
23866: template <class Backend>
23866: int eval_signbit(const debug_adaptor<Backend>& val)
23866: {
23866: return eval_signbit(val.value());
23866: }
23866:
23866: template <class Backend>
23866: std::size_t hash_value(const debug_adaptor<Backend>& val)
23866: {
23866: return hash_value(val.value());
23866: }
23866:
23866: }
23866:
23866: using backends::debug_adaptor;
23866:
23866: template <class Backend>
23866: struct number_category<backends::debug_adaptor<Backend> > : public number_category<Backend>
23866: {};
23866:
23866:
23866:
23866:
23866: }}
23866:
23866: namespace std {
23866:
23866: template <class Backend, boost::multiprecision::expression_template_option ExpressionTemplates>
23866: class numeric_limits<boost::multiprecision::number<boost::multiprecision::backends::debug_adaptor<Backend>, ExpressionTemplates> >
23866: : public std::numeric_limits<boost::multiprecision::number<Backend, ExpressionTemplates> >
23866: {
23866: typedef std::numeric_limits<boost::multiprecision::number<Backend, ExpressionTemplates> > base_type;
23866: typedef boost::multiprecision::number<boost::multiprecision::backends::debug_adaptor<Backend>, ExpressionTemplates> number_type;
23866:
23866: public:
23866: static number_type(min)() noexcept { return (base_type::min)(); }
23866: static number_type(max)() noexcept { return (base_type::max)(); }
23866: static number_type lowest() noexcept { return -(max)(); }
23866: static number_type epsilon() noexcept { return base_type::epsilon(); }
23866: static number_type round_error() noexcept { return epsilon() / 2; }
23866: static number_type infinity() noexcept { return base_type::infinity(); }
23866: static number_type quiet_NaN() noexcept { return base_type::quiet_NaN(); }
23866: static number_type signaling_NaN() noexcept { return base_type::signaling_NaN(); }
23866: static number_type denorm_min() noexcept { return base_type::denorm_min(); }
23866: };
23866:
23866: }
23866:
23866: namespace boost {
23866: namespace math {
23866:
23866: namespace policies {
23866:
23866: template <class Backend, boost::multiprecision::expression_template_option ExpressionTemplates, class Policy>
23866: struct precision<boost::multiprecision::number<boost::multiprecision::debug_adaptor<Backend>, ExpressionTemplates>, Policy>
23866: : public precision<boost::multiprecision::number<Backend, ExpressionTemplates>, Policy>
23866: {};
23866:
23866: #undef NON_MEMBER_OP1
23866: #undef NON_MEMBER_OP2
23866: #undef NON_MEMBER_OP3
23866: #undef NON_MEMBER_OP4
23866:
23866: }
23866:
23866: }}
23866: # 11 "/usr/include/boost/multiprecision/gmp.hpp" 2 3 4
23866:
23866: # 1 "/usr/include/boost/multiprecision/detail/big_lanczos.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MP_BIG_LANCZOS
23866:
23866: # 1 "/usr/include/boost/math/bindings/detail/big_lanczos.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_BIG_LANCZOS_HPP
23866:
23866: # 1 "/usr/include/boost/math/special_functions/lanczos.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MATH_SPECIAL_FUNCTIONS_LANCZOS
23866:
23866:
23866:
23866:
23866:
23866:
23866: # 1 "/usr/include/boost/math/tools/big_constant.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MATH_TOOLS_BIG_CONSTANT_HPP
23866: # 18 "/usr/include/boost/math/tools/big_constant.hpp" 3 4
23866: namespace boost{ namespace math{
23866:
23866: namespace tools{
23866:
23866: template <class T>
23866: struct numeric_traits : public std::numeric_limits< T > {};
23866: # 37 "/usr/include/boost/math/tools/big_constant.hpp" 3 4
23866: typedef long double largest_float;
23866: #define BOOST_MATH_LARGEST_FLOAT_C(x) x ##L
23866:
23866:
23866: template <class T>
23866: inline constexpr T make_big_value(largest_float v, const char*, boost::true_type const&, boost::false_type const&) noexcept(std::is_floating_point<T>::value)
23866: {
23866: return static_cast<T>(v);
23866: }
23866: template <class T>
23866: inline constexpr T make_big_value(largest_float v, const char*, boost::true_type const&, boost::true_type const&) noexcept(std::is_floating_point<T>::value)
23866: {
23866: return static_cast<T>(v);
23866: }
23866:
23866: template <class T>
23866: inline T make_big_value(largest_float, const char* s, boost::false_type const&, boost::false_type const&)
23866: {
23866: return boost::lexical_cast<T>(s);
23866: }
23866:
23866: template <class T>
23866: inline constexpr T make_big_value(largest_float, const char* s, boost::false_type const&, boost::true_type const&) noexcept(std::is_floating_point<T>::value)
23866: {
23866: return T(s);
23866: }
23866:
23866:
23866:
23866:
23866: #define BOOST_MATH_BIG_CONSTANT(T,D,x) boost::math::tools::make_big_value<T>( BOOST_MATH_LARGEST_FLOAT_C(x), BOOST_STRINGIZE(x), boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((D <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())
23866: # 80 "/usr/include/boost/math/tools/big_constant.hpp" 3 4
23866: #define BOOST_MATH_HUGE_CONSTANT(T,D,x) boost::math::tools::make_big_value<T>(0.0L, BOOST_STRINGIZE(x), boost::integral_constant<bool, boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && boost::math::tools::numeric_traits<T>::max_exponent <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::max_exponent && boost::math::tools::numeric_traits<T>::digits <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits)>(), boost::is_constructible<T, const char*>())
23866:
23866:
23866:
23866:
23866: }}}
23866: # 15 "/usr/include/boost/math/special_functions/lanczos.hpp" 2 3 4
23866:
23866:
23866: # 1 "/usr/include/boost/cstdint.hpp" 1 3 4
23866: # 18 "/usr/include/boost/math/special_functions/lanczos.hpp" 2 3 4
23866: # 1 "/usr/include/boost/math/tools/rational.hpp" 1 3 4
23866:
23866:
23866:
23866:
23866:
23866:
23866: #define BOOST_MATH_TOOLS_RATIONAL_HPP
23866: # 26 "/usr/include/boost/math/tools/rational.hpp" 3 4
23866: #define BOOST_HEADER() <BOOST_JOIN(boost/math/tools/detail/polynomial_horner3_, BOOST_MATH_MAX_POLY_ORDER).hpp>
23866: # 1 "/usr/include/boost/math/tools/detail/polynomial_horner3_20.hpp" 1 3 4
23866: # 10 "/usr/include/boost/math/tools/detail/polynomial_horner3_20.hpp" 3 4
23866: #define BOOST_MATH_TOOLS_POLY_EVAL_20_HPP
23866:
23866: namespace boost{ namespace math{ namespace tools{ namespace detail{
23866:
23866: template <class T, class V>
23866: inline V evaluate_polynomial_c_imp(const T*, const V&, const boost::integral_constant<int, 0>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: return static_cast<V>(0);
23866: }
23866:
23866: template <class T, class V>
23866: inline V evaluate_polynomial_c_imp(const T* a, const V&, const boost::integral_constant<int, 1>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: return static_cast<V>(a[0]);
23866: }
23866:
23866: template <class T, class V>
23866: inline V evaluate_polynomial_c_imp(const T* a, const V& x, const boost::integral_constant<int, 2>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: return static_cast<V>(a[1] * x + a[0]);
23866: }
23866:
23866: template <class T, class V>
23866: inline V evaluate_polynomial_c_imp(const T* a, const V& x, const boost::integral_constant<int, 3>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: return static_cast<V>((a[2] * x + a[1]) * x + a[0]);
23866: }
23866:
23866: template <class T, class V>
23866: inline V evaluate_polynomial_c_imp(const T* a, const V& x, const boost::integral_constant<int, 4>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: return static_cast<V>(((a[3] * x + a[2]) * x + a[1]) * x + a[0]);
23866: }
23866:
23866: template <class T, class V>
23866: inline V evaluate_polynomial_c_imp(const T* a, const V& x, const boost::integral_constant<int, 5>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: V x2 = x * x;
23866: V t[2];
23866: t[0] = static_cast<V>(a[4] * x2 + a[2]);
23866: t[1] = static_cast<V>(a[3] * x2 + a[1]);
23866: t[0] *= x2;
23866: t[0] += static_cast<V>(a[0]);
23866: t[1] *= x;
23866: return t[0] + t[1];
23866: }
23866:
23866: template <class T, class V>
23866: inline V evaluate_polynomial_c_imp(const T* a, const V& x, const boost::integral_constant<int, 6>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: V x2 = x * x;
23866: V t[2];
23866: t[0] = a[5] * x2 + a[3];
23866: t[1] = a[4] * x2 + a[2];
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[1]);
23866: t[1] += static_cast<V>(a[0]);
23866: t[0] *= x;
23866: return t[0] + t[1];
23866: }
23866:
23866: template <class T, class V>
23866: inline V evaluate_polynomial_c_imp(const T* a, const V& x, const boost::integral_constant<int, 7>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: V x2 = x * x;
23866: V t[2];
23866: t[0] = static_cast<V>(a[6] * x2 + a[4]);
23866: t[1] = static_cast<V>(a[5] * x2 + a[3]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[2]);
23866: t[1] += static_cast<V>(a[1]);
23866: t[0] *= x2;
23866: t[0] += static_cast<V>(a[0]);
23866: t[1] *= x;
23866: return t[0] + t[1];
23866: }
23866:
23866: template <class T, class V>
23866: inline V evaluate_polynomial_c_imp(const T* a, const V& x, const boost::integral_constant<int, 8>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: V x2 = x * x;
23866: V t[2];
23866: t[0] = a[7] * x2 + a[5];
23866: t[1] = a[6] * x2 + a[4];
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[3]);
23866: t[1] += static_cast<V>(a[2]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[1]);
23866: t[1] += static_cast<V>(a[0]);
23866: t[0] *= x;
23866: return t[0] + t[1];
23866: }
23866:
23866: template <class T, class V>
23866: inline V evaluate_polynomial_c_imp(const T* a, const V& x, const boost::integral_constant<int, 9>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: V x2 = x * x;
23866: V t[2];
23866: t[0] = static_cast<V>(a[8] * x2 + a[6]);
23866: t[1] = static_cast<V>(a[7] * x2 + a[5]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[4]);
23866: t[1] += static_cast<V>(a[3]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[2]);
23866: t[1] += static_cast<V>(a[1]);
23866: t[0] *= x2;
23866: t[0] += static_cast<V>(a[0]);
23866: t[1] *= x;
23866: return t[0] + t[1];
23866: }
23866:
23866: template <class T, class V>
23866: inline V evaluate_polynomial_c_imp(const T* a, const V& x, const boost::integral_constant<int, 10>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: V x2 = x * x;
23866: V t[2];
23866: t[0] = a[9] * x2 + a[7];
23866: t[1] = a[8] * x2 + a[6];
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[5]);
23866: t[1] += static_cast<V>(a[4]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[3]);
23866: t[1] += static_cast<V>(a[2]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[1]);
23866: t[1] += static_cast<V>(a[0]);
23866: t[0] *= x;
23866: return t[0] + t[1];
23866: }
23866:
23866: template <class T, class V>
23866: inline V evaluate_polynomial_c_imp(const T* a, const V& x, const boost::integral_constant<int, 11>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: V x2 = x * x;
23866: V t[2];
23866: t[0] = static_cast<V>(a[10] * x2 + a[8]);
23866: t[1] = static_cast<V>(a[9] * x2 + a[7]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[6]);
23866: t[1] += static_cast<V>(a[5]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[4]);
23866: t[1] += static_cast<V>(a[3]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[2]);
23866: t[1] += static_cast<V>(a[1]);
23866: t[0] *= x2;
23866: t[0] += static_cast<V>(a[0]);
23866: t[1] *= x;
23866: return t[0] + t[1];
23866: }
23866:
23866: template <class T, class V>
23866: inline V evaluate_polynomial_c_imp(const T* a, const V& x, const boost::integral_constant<int, 12>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: V x2 = x * x;
23866: V t[2];
23866: t[0] = a[11] * x2 + a[9];
23866: t[1] = a[10] * x2 + a[8];
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[7]);
23866: t[1] += static_cast<V>(a[6]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[5]);
23866: t[1] += static_cast<V>(a[4]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[3]);
23866: t[1] += static_cast<V>(a[2]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[1]);
23866: t[1] += static_cast<V>(a[0]);
23866: t[0] *= x;
23866: return t[0] + t[1];
23866: }
23866:
23866: template <class T, class V>
23866: inline V evaluate_polynomial_c_imp(const T* a, const V& x, const boost::integral_constant<int, 13>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: V x2 = x * x;
23866: V t[2];
23866: t[0] = static_cast<V>(a[12] * x2 + a[10]);
23866: t[1] = static_cast<V>(a[11] * x2 + a[9]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[8]);
23866: t[1] += static_cast<V>(a[7]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[6]);
23866: t[1] += static_cast<V>(a[5]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[4]);
23866: t[1] += static_cast<V>(a[3]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[2]);
23866: t[1] += static_cast<V>(a[1]);
23866: t[0] *= x2;
23866: t[0] += static_cast<V>(a[0]);
23866: t[1] *= x;
23866: return t[0] + t[1];
23866: }
23866:
23866: template <class T, class V>
23866: inline V evaluate_polynomial_c_imp(const T* a, const V& x, const boost::integral_constant<int, 14>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: V x2 = x * x;
23866: V t[2];
23866: t[0] = a[13] * x2 + a[11];
23866: t[1] = a[12] * x2 + a[10];
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[9]);
23866: t[1] += static_cast<V>(a[8]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[7]);
23866: t[1] += static_cast<V>(a[6]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[5]);
23866: t[1] += static_cast<V>(a[4]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[3]);
23866: t[1] += static_cast<V>(a[2]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[1]);
23866: t[1] += static_cast<V>(a[0]);
23866: t[0] *= x;
23866: return t[0] + t[1];
23866: }
23866:
23866: template <class T, class V>
23866: inline V evaluate_polynomial_c_imp(const T* a, const V& x, const boost::integral_constant<int, 15>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: V x2 = x * x;
23866: V t[2];
23866: t[0] = static_cast<V>(a[14] * x2 + a[12]);
23866: t[1] = static_cast<V>(a[13] * x2 + a[11]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[10]);
23866: t[1] += static_cast<V>(a[9]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[8]);
23866: t[1] += static_cast<V>(a[7]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[6]);
23866: t[1] += static_cast<V>(a[5]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[4]);
23866: t[1] += static_cast<V>(a[3]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[2]);
23866: t[1] += static_cast<V>(a[1]);
23866: t[0] *= x2;
23866: t[0] += static_cast<V>(a[0]);
23866: t[1] *= x;
23866: return t[0] + t[1];
23866: }
23866:
23866: template <class T, class V>
23866: inline V evaluate_polynomial_c_imp(const T* a, const V& x, const boost::integral_constant<int, 16>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: V x2 = x * x;
23866: V t[2];
23866: t[0] = a[15] * x2 + a[13];
23866: t[1] = a[14] * x2 + a[12];
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[11]);
23866: t[1] += static_cast<V>(a[10]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[9]);
23866: t[1] += static_cast<V>(a[8]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[7]);
23866: t[1] += static_cast<V>(a[6]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[5]);
23866: t[1] += static_cast<V>(a[4]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[3]);
23866: t[1] += static_cast<V>(a[2]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[1]);
23866: t[1] += static_cast<V>(a[0]);
23866: t[0] *= x;
23866: return t[0] + t[1];
23866: }
23866:
23866: template <class T, class V>
23866: inline V evaluate_polynomial_c_imp(const T* a, const V& x, const boost::integral_constant<int, 17>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: V x2 = x * x;
23866: V t[2];
23866: t[0] = static_cast<V>(a[16] * x2 + a[14]);
23866: t[1] = static_cast<V>(a[15] * x2 + a[13]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[12]);
23866: t[1] += static_cast<V>(a[11]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[10]);
23866: t[1] += static_cast<V>(a[9]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[8]);
23866: t[1] += static_cast<V>(a[7]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[6]);
23866: t[1] += static_cast<V>(a[5]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[4]);
23866: t[1] += static_cast<V>(a[3]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[2]);
23866: t[1] += static_cast<V>(a[1]);
23866: t[0] *= x2;
23866: t[0] += static_cast<V>(a[0]);
23866: t[1] *= x;
23866: return t[0] + t[1];
23866: }
23866:
23866: template <class T, class V>
23866: inline V evaluate_polynomial_c_imp(const T* a, const V& x, const boost::integral_constant<int, 18>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: V x2 = x * x;
23866: V t[2];
23866: t[0] = a[17] * x2 + a[15];
23866: t[1] = a[16] * x2 + a[14];
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[13]);
23866: t[1] += static_cast<V>(a[12]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[11]);
23866: t[1] += static_cast<V>(a[10]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[9]);
23866: t[1] += static_cast<V>(a[8]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[7]);
23866: t[1] += static_cast<V>(a[6]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[5]);
23866: t[1] += static_cast<V>(a[4]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[3]);
23866: t[1] += static_cast<V>(a[2]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[1]);
23866: t[1] += static_cast<V>(a[0]);
23866: t[0] *= x;
23866: return t[0] + t[1];
23866: }
23866:
23866: template <class T, class V>
23866: inline V evaluate_polynomial_c_imp(const T* a, const V& x, const boost::integral_constant<int, 19>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: V x2 = x * x;
23866: V t[2];
23866: t[0] = static_cast<V>(a[18] * x2 + a[16]);
23866: t[1] = static_cast<V>(a[17] * x2 + a[15]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[14]);
23866: t[1] += static_cast<V>(a[13]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[12]);
23866: t[1] += static_cast<V>(a[11]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[10]);
23866: t[1] += static_cast<V>(a[9]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[8]);
23866: t[1] += static_cast<V>(a[7]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[6]);
23866: t[1] += static_cast<V>(a[5]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[4]);
23866: t[1] += static_cast<V>(a[3]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[2]);
23866: t[1] += static_cast<V>(a[1]);
23866: t[0] *= x2;
23866: t[0] += static_cast<V>(a[0]);
23866: t[1] *= x;
23866: return t[0] + t[1];
23866: }
23866:
23866: template <class T, class V>
23866: inline V evaluate_polynomial_c_imp(const T* a, const V& x, const boost::integral_constant<int, 20>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: V x2 = x * x;
23866: V t[2];
23866: t[0] = a[19] * x2 + a[17];
23866: t[1] = a[18] * x2 + a[16];
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[15]);
23866: t[1] += static_cast<V>(a[14]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[13]);
23866: t[1] += static_cast<V>(a[12]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[11]);
23866: t[1] += static_cast<V>(a[10]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[9]);
23866: t[1] += static_cast<V>(a[8]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[7]);
23866: t[1] += static_cast<V>(a[6]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[5]);
23866: t[1] += static_cast<V>(a[4]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[3]);
23866: t[1] += static_cast<V>(a[2]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[0] += static_cast<V>(a[1]);
23866: t[1] += static_cast<V>(a[0]);
23866: t[0] *= x;
23866: return t[0] + t[1];
23866: }
23866:
23866:
23866: }}}}
23866: # 28 "/usr/include/boost/math/tools/rational.hpp" 2 3 4
23866: #undef BOOST_HEADER
23866: # 39 "/usr/include/boost/math/tools/rational.hpp" 3 4
23866: #define BOOST_HEADER() <BOOST_JOIN(boost/math/tools/detail/rational_horner3_, BOOST_MATH_MAX_POLY_ORDER).hpp>
23866: # 1 "/usr/include/boost/math/tools/detail/rational_horner3_20.hpp" 1 3 4
23866: # 10 "/usr/include/boost/math/tools/detail/rational_horner3_20.hpp" 3 4
23866: #define BOOST_MATH_TOOLS_RAT_EVAL_20_HPP
23866:
23866: namespace boost{ namespace math{ namespace tools{ namespace detail{
23866:
23866: template <class T, class U, class V>
23866: inline V evaluate_rational_c_imp(const T*, const U*, const V&, const boost::integral_constant<int, 0>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: return static_cast<V>(0);
23866: }
23866:
23866: template <class T, class U, class V>
23866: inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const boost::integral_constant<int, 1>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: return static_cast<V>(a[0]) / static_cast<V>(b[0]);
23866: }
23866:
23866: template <class T, class U, class V>
23866: inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const boost::integral_constant<int, 2>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: return static_cast<V>((a[1] * x + a[0]) / (b[1] * x + b[0]));
23866: }
23866:
23866: template <class T, class U, class V>
23866: inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const boost::integral_constant<int, 3>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: return static_cast<V>(((a[2] * x + a[1]) * x + a[0]) / ((b[2] * x + b[1]) * x + b[0]));
23866: }
23866:
23866: template <class T, class U, class V>
23866: inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const boost::integral_constant<int, 4>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: return static_cast<V>((((a[3] * x + a[2]) * x + a[1]) * x + a[0]) / (((b[3] * x + b[2]) * x + b[1]) * x + b[0]));
23866: }
23866:
23866: template <class T, class U, class V>
23866: inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const boost::integral_constant<int, 5>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: if(x <= 1)
23866: {
23866: V x2 = x * x;
23866: V t[4];
23866: t[0] = a[4] * x2 + a[2];
23866: t[1] = a[3] * x2 + a[1];
23866: t[2] = b[4] * x2 + b[2];
23866: t[3] = b[3] * x2 + b[1];
23866: t[0] *= x2;
23866: t[2] *= x2;
23866: t[0] += static_cast<V>(a[0]);
23866: t[2] += static_cast<V>(b[0]);
23866: t[1] *= x;
23866: t[3] *= x;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: else
23866: {
23866: V z = 1 / x;
23866: V z2 = 1 / (x * x);
23866: V t[4];
23866: t[0] = a[0] * z2 + a[2];
23866: t[1] = a[1] * z2 + a[3];
23866: t[2] = b[0] * z2 + b[2];
23866: t[3] = b[1] * z2 + b[3];
23866: t[0] *= z2;
23866: t[2] *= z2;
23866: t[0] += static_cast<V>(a[4]);
23866: t[2] += static_cast<V>(b[4]);
23866: t[1] *= z;
23866: t[3] *= z;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: }
23866:
23866: template <class T, class U, class V>
23866: inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const boost::integral_constant<int, 6>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: if(x <= 1)
23866: {
23866: V x2 = x * x;
23866: V t[4];
23866: t[0] = a[5] * x2 + a[3];
23866: t[1] = a[4] * x2 + a[2];
23866: t[2] = b[5] * x2 + b[3];
23866: t[3] = b[4] * x2 + b[2];
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[1]);
23866: t[1] += static_cast<V>(a[0]);
23866: t[2] += static_cast<V>(b[1]);
23866: t[3] += static_cast<V>(b[0]);
23866: t[0] *= x;
23866: t[2] *= x;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: else
23866: {
23866: V z = 1 / x;
23866: V z2 = 1 / (x * x);
23866: V t[4];
23866: t[0] = a[0] * z2 + a[2];
23866: t[1] = a[1] * z2 + a[3];
23866: t[2] = b[0] * z2 + b[2];
23866: t[3] = b[1] * z2 + b[3];
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[4]);
23866: t[1] += static_cast<V>(a[5]);
23866: t[2] += static_cast<V>(b[4]);
23866: t[3] += static_cast<V>(b[5]);
23866: t[0] *= z;
23866: t[2] *= z;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: }
23866:
23866: template <class T, class U, class V>
23866: inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const boost::integral_constant<int, 7>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: if(x <= 1)
23866: {
23866: V x2 = x * x;
23866: V t[4];
23866: t[0] = a[6] * x2 + a[4];
23866: t[1] = a[5] * x2 + a[3];
23866: t[2] = b[6] * x2 + b[4];
23866: t[3] = b[5] * x2 + b[3];
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[2]);
23866: t[1] += static_cast<V>(a[1]);
23866: t[2] += static_cast<V>(b[2]);
23866: t[3] += static_cast<V>(b[1]);
23866: t[0] *= x2;
23866: t[2] *= x2;
23866: t[0] += static_cast<V>(a[0]);
23866: t[2] += static_cast<V>(b[0]);
23866: t[1] *= x;
23866: t[3] *= x;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: else
23866: {
23866: V z = 1 / x;
23866: V z2 = 1 / (x * x);
23866: V t[4];
23866: t[0] = a[0] * z2 + a[2];
23866: t[1] = a[1] * z2 + a[3];
23866: t[2] = b[0] * z2 + b[2];
23866: t[3] = b[1] * z2 + b[3];
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[4]);
23866: t[1] += static_cast<V>(a[5]);
23866: t[2] += static_cast<V>(b[4]);
23866: t[3] += static_cast<V>(b[5]);
23866: t[0] *= z2;
23866: t[2] *= z2;
23866: t[0] += static_cast<V>(a[6]);
23866: t[2] += static_cast<V>(b[6]);
23866: t[1] *= z;
23866: t[3] *= z;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: }
23866:
23866: template <class T, class U, class V>
23866: inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const boost::integral_constant<int, 8>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: if(x <= 1)
23866: {
23866: V x2 = x * x;
23866: V t[4];
23866: t[0] = a[7] * x2 + a[5];
23866: t[1] = a[6] * x2 + a[4];
23866: t[2] = b[7] * x2 + b[5];
23866: t[3] = b[6] * x2 + b[4];
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[3]);
23866: t[1] += static_cast<V>(a[2]);
23866: t[2] += static_cast<V>(b[3]);
23866: t[3] += static_cast<V>(b[2]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[1]);
23866: t[1] += static_cast<V>(a[0]);
23866: t[2] += static_cast<V>(b[1]);
23866: t[3] += static_cast<V>(b[0]);
23866: t[0] *= x;
23866: t[2] *= x;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: else
23866: {
23866: V z = 1 / x;
23866: V z2 = 1 / (x * x);
23866: V t[4];
23866: t[0] = a[0] * z2 + a[2];
23866: t[1] = a[1] * z2 + a[3];
23866: t[2] = b[0] * z2 + b[2];
23866: t[3] = b[1] * z2 + b[3];
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[4]);
23866: t[1] += static_cast<V>(a[5]);
23866: t[2] += static_cast<V>(b[4]);
23866: t[3] += static_cast<V>(b[5]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[6]);
23866: t[1] += static_cast<V>(a[7]);
23866: t[2] += static_cast<V>(b[6]);
23866: t[3] += static_cast<V>(b[7]);
23866: t[0] *= z;
23866: t[2] *= z;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: }
23866:
23866: template <class T, class U, class V>
23866: inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const boost::integral_constant<int, 9>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: if(x <= 1)
23866: {
23866: V x2 = x * x;
23866: V t[4];
23866: t[0] = a[8] * x2 + a[6];
23866: t[1] = a[7] * x2 + a[5];
23866: t[2] = b[8] * x2 + b[6];
23866: t[3] = b[7] * x2 + b[5];
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[4]);
23866: t[1] += static_cast<V>(a[3]);
23866: t[2] += static_cast<V>(b[4]);
23866: t[3] += static_cast<V>(b[3]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[2]);
23866: t[1] += static_cast<V>(a[1]);
23866: t[2] += static_cast<V>(b[2]);
23866: t[3] += static_cast<V>(b[1]);
23866: t[0] *= x2;
23866: t[2] *= x2;
23866: t[0] += static_cast<V>(a[0]);
23866: t[2] += static_cast<V>(b[0]);
23866: t[1] *= x;
23866: t[3] *= x;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: else
23866: {
23866: V z = 1 / x;
23866: V z2 = 1 / (x * x);
23866: V t[4];
23866: t[0] = a[0] * z2 + a[2];
23866: t[1] = a[1] * z2 + a[3];
23866: t[2] = b[0] * z2 + b[2];
23866: t[3] = b[1] * z2 + b[3];
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[4]);
23866: t[1] += static_cast<V>(a[5]);
23866: t[2] += static_cast<V>(b[4]);
23866: t[3] += static_cast<V>(b[5]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[6]);
23866: t[1] += static_cast<V>(a[7]);
23866: t[2] += static_cast<V>(b[6]);
23866: t[3] += static_cast<V>(b[7]);
23866: t[0] *= z2;
23866: t[2] *= z2;
23866: t[0] += static_cast<V>(a[8]);
23866: t[2] += static_cast<V>(b[8]);
23866: t[1] *= z;
23866: t[3] *= z;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: }
23866:
23866: template <class T, class U, class V>
23866: inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const boost::integral_constant<int, 10>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: if(x <= 1)
23866: {
23866: V x2 = x * x;
23866: V t[4];
23866: t[0] = a[9] * x2 + a[7];
23866: t[1] = a[8] * x2 + a[6];
23866: t[2] = b[9] * x2 + b[7];
23866: t[3] = b[8] * x2 + b[6];
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[5]);
23866: t[1] += static_cast<V>(a[4]);
23866: t[2] += static_cast<V>(b[5]);
23866: t[3] += static_cast<V>(b[4]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[3]);
23866: t[1] += static_cast<V>(a[2]);
23866: t[2] += static_cast<V>(b[3]);
23866: t[3] += static_cast<V>(b[2]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[1]);
23866: t[1] += static_cast<V>(a[0]);
23866: t[2] += static_cast<V>(b[1]);
23866: t[3] += static_cast<V>(b[0]);
23866: t[0] *= x;
23866: t[2] *= x;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: else
23866: {
23866: V z = 1 / x;
23866: V z2 = 1 / (x * x);
23866: V t[4];
23866: t[0] = a[0] * z2 + a[2];
23866: t[1] = a[1] * z2 + a[3];
23866: t[2] = b[0] * z2 + b[2];
23866: t[3] = b[1] * z2 + b[3];
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[4]);
23866: t[1] += static_cast<V>(a[5]);
23866: t[2] += static_cast<V>(b[4]);
23866: t[3] += static_cast<V>(b[5]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[6]);
23866: t[1] += static_cast<V>(a[7]);
23866: t[2] += static_cast<V>(b[6]);
23866: t[3] += static_cast<V>(b[7]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[8]);
23866: t[1] += static_cast<V>(a[9]);
23866: t[2] += static_cast<V>(b[8]);
23866: t[3] += static_cast<V>(b[9]);
23866: t[0] *= z;
23866: t[2] *= z;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: }
23866:
23866: template <class T, class U, class V>
23866: inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const boost::integral_constant<int, 11>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: if(x <= 1)
23866: {
23866: V x2 = x * x;
23866: V t[4];
23866: t[0] = a[10] * x2 + a[8];
23866: t[1] = a[9] * x2 + a[7];
23866: t[2] = b[10] * x2 + b[8];
23866: t[3] = b[9] * x2 + b[7];
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[6]);
23866: t[1] += static_cast<V>(a[5]);
23866: t[2] += static_cast<V>(b[6]);
23866: t[3] += static_cast<V>(b[5]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[4]);
23866: t[1] += static_cast<V>(a[3]);
23866: t[2] += static_cast<V>(b[4]);
23866: t[3] += static_cast<V>(b[3]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[2]);
23866: t[1] += static_cast<V>(a[1]);
23866: t[2] += static_cast<V>(b[2]);
23866: t[3] += static_cast<V>(b[1]);
23866: t[0] *= x2;
23866: t[2] *= x2;
23866: t[0] += static_cast<V>(a[0]);
23866: t[2] += static_cast<V>(b[0]);
23866: t[1] *= x;
23866: t[3] *= x;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: else
23866: {
23866: V z = 1 / x;
23866: V z2 = 1 / (x * x);
23866: V t[4];
23866: t[0] = a[0] * z2 + a[2];
23866: t[1] = a[1] * z2 + a[3];
23866: t[2] = b[0] * z2 + b[2];
23866: t[3] = b[1] * z2 + b[3];
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[4]);
23866: t[1] += static_cast<V>(a[5]);
23866: t[2] += static_cast<V>(b[4]);
23866: t[3] += static_cast<V>(b[5]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[6]);
23866: t[1] += static_cast<V>(a[7]);
23866: t[2] += static_cast<V>(b[6]);
23866: t[3] += static_cast<V>(b[7]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[8]);
23866: t[1] += static_cast<V>(a[9]);
23866: t[2] += static_cast<V>(b[8]);
23866: t[3] += static_cast<V>(b[9]);
23866: t[0] *= z2;
23866: t[2] *= z2;
23866: t[0] += static_cast<V>(a[10]);
23866: t[2] += static_cast<V>(b[10]);
23866: t[1] *= z;
23866: t[3] *= z;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: }
23866:
23866: template <class T, class U, class V>
23866: inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const boost::integral_constant<int, 12>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: if(x <= 1)
23866: {
23866: V x2 = x * x;
23866: V t[4];
23866: t[0] = a[11] * x2 + a[9];
23866: t[1] = a[10] * x2 + a[8];
23866: t[2] = b[11] * x2 + b[9];
23866: t[3] = b[10] * x2 + b[8];
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[7]);
23866: t[1] += static_cast<V>(a[6]);
23866: t[2] += static_cast<V>(b[7]);
23866: t[3] += static_cast<V>(b[6]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[5]);
23866: t[1] += static_cast<V>(a[4]);
23866: t[2] += static_cast<V>(b[5]);
23866: t[3] += static_cast<V>(b[4]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[3]);
23866: t[1] += static_cast<V>(a[2]);
23866: t[2] += static_cast<V>(b[3]);
23866: t[3] += static_cast<V>(b[2]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[1]);
23866: t[1] += static_cast<V>(a[0]);
23866: t[2] += static_cast<V>(b[1]);
23866: t[3] += static_cast<V>(b[0]);
23866: t[0] *= x;
23866: t[2] *= x;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: else
23866: {
23866: V z = 1 / x;
23866: V z2 = 1 / (x * x);
23866: V t[4];
23866: t[0] = a[0] * z2 + a[2];
23866: t[1] = a[1] * z2 + a[3];
23866: t[2] = b[0] * z2 + b[2];
23866: t[3] = b[1] * z2 + b[3];
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[4]);
23866: t[1] += static_cast<V>(a[5]);
23866: t[2] += static_cast<V>(b[4]);
23866: t[3] += static_cast<V>(b[5]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[6]);
23866: t[1] += static_cast<V>(a[7]);
23866: t[2] += static_cast<V>(b[6]);
23866: t[3] += static_cast<V>(b[7]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[8]);
23866: t[1] += static_cast<V>(a[9]);
23866: t[2] += static_cast<V>(b[8]);
23866: t[3] += static_cast<V>(b[9]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[10]);
23866: t[1] += static_cast<V>(a[11]);
23866: t[2] += static_cast<V>(b[10]);
23866: t[3] += static_cast<V>(b[11]);
23866: t[0] *= z;
23866: t[2] *= z;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: }
23866:
23866: template <class T, class U, class V>
23866: inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const boost::integral_constant<int, 13>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: if(x <= 1)
23866: {
23866: V x2 = x * x;
23866: V t[4];
23866: t[0] = a[12] * x2 + a[10];
23866: t[1] = a[11] * x2 + a[9];
23866: t[2] = b[12] * x2 + b[10];
23866: t[3] = b[11] * x2 + b[9];
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[8]);
23866: t[1] += static_cast<V>(a[7]);
23866: t[2] += static_cast<V>(b[8]);
23866: t[3] += static_cast<V>(b[7]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[6]);
23866: t[1] += static_cast<V>(a[5]);
23866: t[2] += static_cast<V>(b[6]);
23866: t[3] += static_cast<V>(b[5]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[4]);
23866: t[1] += static_cast<V>(a[3]);
23866: t[2] += static_cast<V>(b[4]);
23866: t[3] += static_cast<V>(b[3]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[2]);
23866: t[1] += static_cast<V>(a[1]);
23866: t[2] += static_cast<V>(b[2]);
23866: t[3] += static_cast<V>(b[1]);
23866: t[0] *= x2;
23866: t[2] *= x2;
23866: t[0] += static_cast<V>(a[0]);
23866: t[2] += static_cast<V>(b[0]);
23866: t[1] *= x;
23866: t[3] *= x;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: else
23866: {
23866: V z = 1 / x;
23866: V z2 = 1 / (x * x);
23866: V t[4];
23866: t[0] = a[0] * z2 + a[2];
23866: t[1] = a[1] * z2 + a[3];
23866: t[2] = b[0] * z2 + b[2];
23866: t[3] = b[1] * z2 + b[3];
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[4]);
23866: t[1] += static_cast<V>(a[5]);
23866: t[2] += static_cast<V>(b[4]);
23866: t[3] += static_cast<V>(b[5]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[6]);
23866: t[1] += static_cast<V>(a[7]);
23866: t[2] += static_cast<V>(b[6]);
23866: t[3] += static_cast<V>(b[7]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[8]);
23866: t[1] += static_cast<V>(a[9]);
23866: t[2] += static_cast<V>(b[8]);
23866: t[3] += static_cast<V>(b[9]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[10]);
23866: t[1] += static_cast<V>(a[11]);
23866: t[2] += static_cast<V>(b[10]);
23866: t[3] += static_cast<V>(b[11]);
23866: t[0] *= z2;
23866: t[2] *= z2;
23866: t[0] += static_cast<V>(a[12]);
23866: t[2] += static_cast<V>(b[12]);
23866: t[1] *= z;
23866: t[3] *= z;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: }
23866:
23866: template <class T, class U, class V>
23866: inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const boost::integral_constant<int, 14>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: if(x <= 1)
23866: {
23866: V x2 = x * x;
23866: V t[4];
23866: t[0] = a[13] * x2 + a[11];
23866: t[1] = a[12] * x2 + a[10];
23866: t[2] = b[13] * x2 + b[11];
23866: t[3] = b[12] * x2 + b[10];
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[9]);
23866: t[1] += static_cast<V>(a[8]);
23866: t[2] += static_cast<V>(b[9]);
23866: t[3] += static_cast<V>(b[8]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[7]);
23866: t[1] += static_cast<V>(a[6]);
23866: t[2] += static_cast<V>(b[7]);
23866: t[3] += static_cast<V>(b[6]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[5]);
23866: t[1] += static_cast<V>(a[4]);
23866: t[2] += static_cast<V>(b[5]);
23866: t[3] += static_cast<V>(b[4]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[3]);
23866: t[1] += static_cast<V>(a[2]);
23866: t[2] += static_cast<V>(b[3]);
23866: t[3] += static_cast<V>(b[2]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[1]);
23866: t[1] += static_cast<V>(a[0]);
23866: t[2] += static_cast<V>(b[1]);
23866: t[3] += static_cast<V>(b[0]);
23866: t[0] *= x;
23866: t[2] *= x;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: else
23866: {
23866: V z = 1 / x;
23866: V z2 = 1 / (x * x);
23866: V t[4];
23866: t[0] = a[0] * z2 + a[2];
23866: t[1] = a[1] * z2 + a[3];
23866: t[2] = b[0] * z2 + b[2];
23866: t[3] = b[1] * z2 + b[3];
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[4]);
23866: t[1] += static_cast<V>(a[5]);
23866: t[2] += static_cast<V>(b[4]);
23866: t[3] += static_cast<V>(b[5]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[6]);
23866: t[1] += static_cast<V>(a[7]);
23866: t[2] += static_cast<V>(b[6]);
23866: t[3] += static_cast<V>(b[7]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[8]);
23866: t[1] += static_cast<V>(a[9]);
23866: t[2] += static_cast<V>(b[8]);
23866: t[3] += static_cast<V>(b[9]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[10]);
23866: t[1] += static_cast<V>(a[11]);
23866: t[2] += static_cast<V>(b[10]);
23866: t[3] += static_cast<V>(b[11]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[12]);
23866: t[1] += static_cast<V>(a[13]);
23866: t[2] += static_cast<V>(b[12]);
23866: t[3] += static_cast<V>(b[13]);
23866: t[0] *= z;
23866: t[2] *= z;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: }
23866:
23866: template <class T, class U, class V>
23866: inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const boost::integral_constant<int, 15>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: if(x <= 1)
23866: {
23866: V x2 = x * x;
23866: V t[4];
23866: t[0] = a[14] * x2 + a[12];
23866: t[1] = a[13] * x2 + a[11];
23866: t[2] = b[14] * x2 + b[12];
23866: t[3] = b[13] * x2 + b[11];
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[10]);
23866: t[1] += static_cast<V>(a[9]);
23866: t[2] += static_cast<V>(b[10]);
23866: t[3] += static_cast<V>(b[9]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[8]);
23866: t[1] += static_cast<V>(a[7]);
23866: t[2] += static_cast<V>(b[8]);
23866: t[3] += static_cast<V>(b[7]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[6]);
23866: t[1] += static_cast<V>(a[5]);
23866: t[2] += static_cast<V>(b[6]);
23866: t[3] += static_cast<V>(b[5]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[4]);
23866: t[1] += static_cast<V>(a[3]);
23866: t[2] += static_cast<V>(b[4]);
23866: t[3] += static_cast<V>(b[3]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[2]);
23866: t[1] += static_cast<V>(a[1]);
23866: t[2] += static_cast<V>(b[2]);
23866: t[3] += static_cast<V>(b[1]);
23866: t[0] *= x2;
23866: t[2] *= x2;
23866: t[0] += static_cast<V>(a[0]);
23866: t[2] += static_cast<V>(b[0]);
23866: t[1] *= x;
23866: t[3] *= x;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: else
23866: {
23866: V z = 1 / x;
23866: V z2 = 1 / (x * x);
23866: V t[4];
23866: t[0] = a[0] * z2 + a[2];
23866: t[1] = a[1] * z2 + a[3];
23866: t[2] = b[0] * z2 + b[2];
23866: t[3] = b[1] * z2 + b[3];
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[4]);
23866: t[1] += static_cast<V>(a[5]);
23866: t[2] += static_cast<V>(b[4]);
23866: t[3] += static_cast<V>(b[5]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[6]);
23866: t[1] += static_cast<V>(a[7]);
23866: t[2] += static_cast<V>(b[6]);
23866: t[3] += static_cast<V>(b[7]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[8]);
23866: t[1] += static_cast<V>(a[9]);
23866: t[2] += static_cast<V>(b[8]);
23866: t[3] += static_cast<V>(b[9]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[10]);
23866: t[1] += static_cast<V>(a[11]);
23866: t[2] += static_cast<V>(b[10]);
23866: t[3] += static_cast<V>(b[11]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[12]);
23866: t[1] += static_cast<V>(a[13]);
23866: t[2] += static_cast<V>(b[12]);
23866: t[3] += static_cast<V>(b[13]);
23866: t[0] *= z2;
23866: t[2] *= z2;
23866: t[0] += static_cast<V>(a[14]);
23866: t[2] += static_cast<V>(b[14]);
23866: t[1] *= z;
23866: t[3] *= z;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: }
23866:
23866: template <class T, class U, class V>
23866: inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const boost::integral_constant<int, 16>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: if(x <= 1)
23866: {
23866: V x2 = x * x;
23866: V t[4];
23866: t[0] = a[15] * x2 + a[13];
23866: t[1] = a[14] * x2 + a[12];
23866: t[2] = b[15] * x2 + b[13];
23866: t[3] = b[14] * x2 + b[12];
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[11]);
23866: t[1] += static_cast<V>(a[10]);
23866: t[2] += static_cast<V>(b[11]);
23866: t[3] += static_cast<V>(b[10]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[9]);
23866: t[1] += static_cast<V>(a[8]);
23866: t[2] += static_cast<V>(b[9]);
23866: t[3] += static_cast<V>(b[8]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[7]);
23866: t[1] += static_cast<V>(a[6]);
23866: t[2] += static_cast<V>(b[7]);
23866: t[3] += static_cast<V>(b[6]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[5]);
23866: t[1] += static_cast<V>(a[4]);
23866: t[2] += static_cast<V>(b[5]);
23866: t[3] += static_cast<V>(b[4]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[3]);
23866: t[1] += static_cast<V>(a[2]);
23866: t[2] += static_cast<V>(b[3]);
23866: t[3] += static_cast<V>(b[2]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[1]);
23866: t[1] += static_cast<V>(a[0]);
23866: t[2] += static_cast<V>(b[1]);
23866: t[3] += static_cast<V>(b[0]);
23866: t[0] *= x;
23866: t[2] *= x;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: else
23866: {
23866: V z = 1 / x;
23866: V z2 = 1 / (x * x);
23866: V t[4];
23866: t[0] = a[0] * z2 + a[2];
23866: t[1] = a[1] * z2 + a[3];
23866: t[2] = b[0] * z2 + b[2];
23866: t[3] = b[1] * z2 + b[3];
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[4]);
23866: t[1] += static_cast<V>(a[5]);
23866: t[2] += static_cast<V>(b[4]);
23866: t[3] += static_cast<V>(b[5]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[6]);
23866: t[1] += static_cast<V>(a[7]);
23866: t[2] += static_cast<V>(b[6]);
23866: t[3] += static_cast<V>(b[7]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[8]);
23866: t[1] += static_cast<V>(a[9]);
23866: t[2] += static_cast<V>(b[8]);
23866: t[3] += static_cast<V>(b[9]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[10]);
23866: t[1] += static_cast<V>(a[11]);
23866: t[2] += static_cast<V>(b[10]);
23866: t[3] += static_cast<V>(b[11]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[12]);
23866: t[1] += static_cast<V>(a[13]);
23866: t[2] += static_cast<V>(b[12]);
23866: t[3] += static_cast<V>(b[13]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[14]);
23866: t[1] += static_cast<V>(a[15]);
23866: t[2] += static_cast<V>(b[14]);
23866: t[3] += static_cast<V>(b[15]);
23866: t[0] *= z;
23866: t[2] *= z;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: }
23866:
23866: template <class T, class U, class V>
23866: inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const boost::integral_constant<int, 17>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: if(x <= 1)
23866: {
23866: V x2 = x * x;
23866: V t[4];
23866: t[0] = a[16] * x2 + a[14];
23866: t[1] = a[15] * x2 + a[13];
23866: t[2] = b[16] * x2 + b[14];
23866: t[3] = b[15] * x2 + b[13];
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[12]);
23866: t[1] += static_cast<V>(a[11]);
23866: t[2] += static_cast<V>(b[12]);
23866: t[3] += static_cast<V>(b[11]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[10]);
23866: t[1] += static_cast<V>(a[9]);
23866: t[2] += static_cast<V>(b[10]);
23866: t[3] += static_cast<V>(b[9]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[8]);
23866: t[1] += static_cast<V>(a[7]);
23866: t[2] += static_cast<V>(b[8]);
23866: t[3] += static_cast<V>(b[7]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[6]);
23866: t[1] += static_cast<V>(a[5]);
23866: t[2] += static_cast<V>(b[6]);
23866: t[3] += static_cast<V>(b[5]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[4]);
23866: t[1] += static_cast<V>(a[3]);
23866: t[2] += static_cast<V>(b[4]);
23866: t[3] += static_cast<V>(b[3]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[2]);
23866: t[1] += static_cast<V>(a[1]);
23866: t[2] += static_cast<V>(b[2]);
23866: t[3] += static_cast<V>(b[1]);
23866: t[0] *= x2;
23866: t[2] *= x2;
23866: t[0] += static_cast<V>(a[0]);
23866: t[2] += static_cast<V>(b[0]);
23866: t[1] *= x;
23866: t[3] *= x;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: else
23866: {
23866: V z = 1 / x;
23866: V z2 = 1 / (x * x);
23866: V t[4];
23866: t[0] = a[0] * z2 + a[2];
23866: t[1] = a[1] * z2 + a[3];
23866: t[2] = b[0] * z2 + b[2];
23866: t[3] = b[1] * z2 + b[3];
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[4]);
23866: t[1] += static_cast<V>(a[5]);
23866: t[2] += static_cast<V>(b[4]);
23866: t[3] += static_cast<V>(b[5]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[6]);
23866: t[1] += static_cast<V>(a[7]);
23866: t[2] += static_cast<V>(b[6]);
23866: t[3] += static_cast<V>(b[7]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[8]);
23866: t[1] += static_cast<V>(a[9]);
23866: t[2] += static_cast<V>(b[8]);
23866: t[3] += static_cast<V>(b[9]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[10]);
23866: t[1] += static_cast<V>(a[11]);
23866: t[2] += static_cast<V>(b[10]);
23866: t[3] += static_cast<V>(b[11]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[12]);
23866: t[1] += static_cast<V>(a[13]);
23866: t[2] += static_cast<V>(b[12]);
23866: t[3] += static_cast<V>(b[13]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[14]);
23866: t[1] += static_cast<V>(a[15]);
23866: t[2] += static_cast<V>(b[14]);
23866: t[3] += static_cast<V>(b[15]);
23866: t[0] *= z2;
23866: t[2] *= z2;
23866: t[0] += static_cast<V>(a[16]);
23866: t[2] += static_cast<V>(b[16]);
23866: t[1] *= z;
23866: t[3] *= z;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: }
23866:
23866: template <class T, class U, class V>
23866: inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const boost::integral_constant<int, 18>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: if(x <= 1)
23866: {
23866: V x2 = x * x;
23866: V t[4];
23866: t[0] = a[17] * x2 + a[15];
23866: t[1] = a[16] * x2 + a[14];
23866: t[2] = b[17] * x2 + b[15];
23866: t[3] = b[16] * x2 + b[14];
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[13]);
23866: t[1] += static_cast<V>(a[12]);
23866: t[2] += static_cast<V>(b[13]);
23866: t[3] += static_cast<V>(b[12]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[11]);
23866: t[1] += static_cast<V>(a[10]);
23866: t[2] += static_cast<V>(b[11]);
23866: t[3] += static_cast<V>(b[10]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[9]);
23866: t[1] += static_cast<V>(a[8]);
23866: t[2] += static_cast<V>(b[9]);
23866: t[3] += static_cast<V>(b[8]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[7]);
23866: t[1] += static_cast<V>(a[6]);
23866: t[2] += static_cast<V>(b[7]);
23866: t[3] += static_cast<V>(b[6]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[5]);
23866: t[1] += static_cast<V>(a[4]);
23866: t[2] += static_cast<V>(b[5]);
23866: t[3] += static_cast<V>(b[4]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[3]);
23866: t[1] += static_cast<V>(a[2]);
23866: t[2] += static_cast<V>(b[3]);
23866: t[3] += static_cast<V>(b[2]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[1]);
23866: t[1] += static_cast<V>(a[0]);
23866: t[2] += static_cast<V>(b[1]);
23866: t[3] += static_cast<V>(b[0]);
23866: t[0] *= x;
23866: t[2] *= x;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: else
23866: {
23866: V z = 1 / x;
23866: V z2 = 1 / (x * x);
23866: V t[4];
23866: t[0] = a[0] * z2 + a[2];
23866: t[1] = a[1] * z2 + a[3];
23866: t[2] = b[0] * z2 + b[2];
23866: t[3] = b[1] * z2 + b[3];
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[4]);
23866: t[1] += static_cast<V>(a[5]);
23866: t[2] += static_cast<V>(b[4]);
23866: t[3] += static_cast<V>(b[5]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[6]);
23866: t[1] += static_cast<V>(a[7]);
23866: t[2] += static_cast<V>(b[6]);
23866: t[3] += static_cast<V>(b[7]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[8]);
23866: t[1] += static_cast<V>(a[9]);
23866: t[2] += static_cast<V>(b[8]);
23866: t[3] += static_cast<V>(b[9]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[10]);
23866: t[1] += static_cast<V>(a[11]);
23866: t[2] += static_cast<V>(b[10]);
23866: t[3] += static_cast<V>(b[11]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[12]);
23866: t[1] += static_cast<V>(a[13]);
23866: t[2] += static_cast<V>(b[12]);
23866: t[3] += static_cast<V>(b[13]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[14]);
23866: t[1] += static_cast<V>(a[15]);
23866: t[2] += static_cast<V>(b[14]);
23866: t[3] += static_cast<V>(b[15]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[16]);
23866: t[1] += static_cast<V>(a[17]);
23866: t[2] += static_cast<V>(b[16]);
23866: t[3] += static_cast<V>(b[17]);
23866: t[0] *= z;
23866: t[2] *= z;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: }
23866:
23866: template <class T, class U, class V>
23866: inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const boost::integral_constant<int, 19>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: if(x <= 1)
23866: {
23866: V x2 = x * x;
23866: V t[4];
23866: t[0] = a[18] * x2 + a[16];
23866: t[1] = a[17] * x2 + a[15];
23866: t[2] = b[18] * x2 + b[16];
23866: t[3] = b[17] * x2 + b[15];
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[14]);
23866: t[1] += static_cast<V>(a[13]);
23866: t[2] += static_cast<V>(b[14]);
23866: t[3] += static_cast<V>(b[13]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[12]);
23866: t[1] += static_cast<V>(a[11]);
23866: t[2] += static_cast<V>(b[12]);
23866: t[3] += static_cast<V>(b[11]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[10]);
23866: t[1] += static_cast<V>(a[9]);
23866: t[2] += static_cast<V>(b[10]);
23866: t[3] += static_cast<V>(b[9]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[8]);
23866: t[1] += static_cast<V>(a[7]);
23866: t[2] += static_cast<V>(b[8]);
23866: t[3] += static_cast<V>(b[7]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[6]);
23866: t[1] += static_cast<V>(a[5]);
23866: t[2] += static_cast<V>(b[6]);
23866: t[3] += static_cast<V>(b[5]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[4]);
23866: t[1] += static_cast<V>(a[3]);
23866: t[2] += static_cast<V>(b[4]);
23866: t[3] += static_cast<V>(b[3]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[2]);
23866: t[1] += static_cast<V>(a[1]);
23866: t[2] += static_cast<V>(b[2]);
23866: t[3] += static_cast<V>(b[1]);
23866: t[0] *= x2;
23866: t[2] *= x2;
23866: t[0] += static_cast<V>(a[0]);
23866: t[2] += static_cast<V>(b[0]);
23866: t[1] *= x;
23866: t[3] *= x;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: else
23866: {
23866: V z = 1 / x;
23866: V z2 = 1 / (x * x);
23866: V t[4];
23866: t[0] = a[0] * z2 + a[2];
23866: t[1] = a[1] * z2 + a[3];
23866: t[2] = b[0] * z2 + b[2];
23866: t[3] = b[1] * z2 + b[3];
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[4]);
23866: t[1] += static_cast<V>(a[5]);
23866: t[2] += static_cast<V>(b[4]);
23866: t[3] += static_cast<V>(b[5]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[6]);
23866: t[1] += static_cast<V>(a[7]);
23866: t[2] += static_cast<V>(b[6]);
23866: t[3] += static_cast<V>(b[7]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[8]);
23866: t[1] += static_cast<V>(a[9]);
23866: t[2] += static_cast<V>(b[8]);
23866: t[3] += static_cast<V>(b[9]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[10]);
23866: t[1] += static_cast<V>(a[11]);
23866: t[2] += static_cast<V>(b[10]);
23866: t[3] += static_cast<V>(b[11]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[12]);
23866: t[1] += static_cast<V>(a[13]);
23866: t[2] += static_cast<V>(b[12]);
23866: t[3] += static_cast<V>(b[13]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[14]);
23866: t[1] += static_cast<V>(a[15]);
23866: t[2] += static_cast<V>(b[14]);
23866: t[3] += static_cast<V>(b[15]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[16]);
23866: t[1] += static_cast<V>(a[17]);
23866: t[2] += static_cast<V>(b[16]);
23866: t[3] += static_cast<V>(b[17]);
23866: t[0] *= z2;
23866: t[2] *= z2;
23866: t[0] += static_cast<V>(a[18]);
23866: t[2] += static_cast<V>(b[18]);
23866: t[1] *= z;
23866: t[3] *= z;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: }
23866:
23866: template <class T, class U, class V>
23866: inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const boost::integral_constant<int, 20>*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: if(x <= 1)
23866: {
23866: V x2 = x * x;
23866: V t[4];
23866: t[0] = a[19] * x2 + a[17];
23866: t[1] = a[18] * x2 + a[16];
23866: t[2] = b[19] * x2 + b[17];
23866: t[3] = b[18] * x2 + b[16];
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[15]);
23866: t[1] += static_cast<V>(a[14]);
23866: t[2] += static_cast<V>(b[15]);
23866: t[3] += static_cast<V>(b[14]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[13]);
23866: t[1] += static_cast<V>(a[12]);
23866: t[2] += static_cast<V>(b[13]);
23866: t[3] += static_cast<V>(b[12]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[11]);
23866: t[1] += static_cast<V>(a[10]);
23866: t[2] += static_cast<V>(b[11]);
23866: t[3] += static_cast<V>(b[10]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[9]);
23866: t[1] += static_cast<V>(a[8]);
23866: t[2] += static_cast<V>(b[9]);
23866: t[3] += static_cast<V>(b[8]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[7]);
23866: t[1] += static_cast<V>(a[6]);
23866: t[2] += static_cast<V>(b[7]);
23866: t[3] += static_cast<V>(b[6]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[5]);
23866: t[1] += static_cast<V>(a[4]);
23866: t[2] += static_cast<V>(b[5]);
23866: t[3] += static_cast<V>(b[4]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[3]);
23866: t[1] += static_cast<V>(a[2]);
23866: t[2] += static_cast<V>(b[3]);
23866: t[3] += static_cast<V>(b[2]);
23866: t[0] *= x2;
23866: t[1] *= x2;
23866: t[2] *= x2;
23866: t[3] *= x2;
23866: t[0] += static_cast<V>(a[1]);
23866: t[1] += static_cast<V>(a[0]);
23866: t[2] += static_cast<V>(b[1]);
23866: t[3] += static_cast<V>(b[0]);
23866: t[0] *= x;
23866: t[2] *= x;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: else
23866: {
23866: V z = 1 / x;
23866: V z2 = 1 / (x * x);
23866: V t[4];
23866: t[0] = a[0] * z2 + a[2];
23866: t[1] = a[1] * z2 + a[3];
23866: t[2] = b[0] * z2 + b[2];
23866: t[3] = b[1] * z2 + b[3];
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[4]);
23866: t[1] += static_cast<V>(a[5]);
23866: t[2] += static_cast<V>(b[4]);
23866: t[3] += static_cast<V>(b[5]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[6]);
23866: t[1] += static_cast<V>(a[7]);
23866: t[2] += static_cast<V>(b[6]);
23866: t[3] += static_cast<V>(b[7]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[8]);
23866: t[1] += static_cast<V>(a[9]);
23866: t[2] += static_cast<V>(b[8]);
23866: t[3] += static_cast<V>(b[9]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[10]);
23866: t[1] += static_cast<V>(a[11]);
23866: t[2] += static_cast<V>(b[10]);
23866: t[3] += static_cast<V>(b[11]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[12]);
23866: t[1] += static_cast<V>(a[13]);
23866: t[2] += static_cast<V>(b[12]);
23866: t[3] += static_cast<V>(b[13]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[14]);
23866: t[1] += static_cast<V>(a[15]);
23866: t[2] += static_cast<V>(b[14]);
23866: t[3] += static_cast<V>(b[15]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[16]);
23866: t[1] += static_cast<V>(a[17]);
23866: t[2] += static_cast<V>(b[16]);
23866: t[3] += static_cast<V>(b[17]);
23866: t[0] *= z2;
23866: t[1] *= z2;
23866: t[2] *= z2;
23866: t[3] *= z2;
23866: t[0] += static_cast<V>(a[18]);
23866: t[1] += static_cast<V>(a[19]);
23866: t[2] += static_cast<V>(b[18]);
23866: t[3] += static_cast<V>(b[19]);
23866: t[0] *= z;
23866: t[2] *= z;
23866: return (t[0] + t[1]) / (t[2] + t[3]);
23866: }
23866: }
23866:
23866:
23866: }}}}
23866: # 41 "/usr/include/boost/math/tools/rational.hpp" 2 3 4
23866: #undef BOOST_HEADER
23866: # 165 "/usr/include/boost/math/tools/rational.hpp" 3 4
23866: namespace boost{ namespace math{ namespace tools{
23866:
23866:
23866:
23866:
23866: template <class T, class U>
23866: U evaluate_polynomial(const T* poly, U const& z, std::size_t count) noexcept(std::is_floating_point<U>::value);
23866:
23866: namespace detail{
23866:
23866: template <class T, class V, class Tag>
23866: inline V evaluate_polynomial_c_imp(const T* a, const V& val, const Tag*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: return evaluate_polynomial(a, val, Tag::value);
23866: }
23866:
23866: }
23866:
23866:
23866:
23866:
23866:
23866:
23866: template <class T, class U>
23866: inline U evaluate_polynomial(const T* poly, U const& z, std::size_t count) noexcept(std::is_floating_point<U>::value)
23866: {
23866: (static_cast <bool> (count > 0) ? void (0) : __assert_fail ("count > 0", "/usr/include/boost/math/tools/rational.hpp", 191, __extension__ __PRETTY_FUNCTION__));
23866: U sum = static_cast<U>(poly[count - 1]);
23866: for(int i = static_cast<int>(count) - 2; i >= 0; --i)
23866: {
23866: sum *= z;
23866: sum += static_cast<U>(poly[i]);
23866: }
23866: return sum;
23866: }
23866:
23866:
23866:
23866:
23866: template <std::size_t N, class T, class V>
23866: inline V evaluate_polynomial(const T(&a)[N], const V& val) noexcept(std::is_floating_point<V>::value)
23866: {
23866: typedef boost::integral_constant<int, N> tag_type;
23866: return detail::evaluate_polynomial_c_imp(static_cast<const T*>(a), val, static_cast<tag_type const*>(0));
23866: }
23866:
23866: template <std::size_t N, class T, class V>
23866: inline V evaluate_polynomial(const boost::array<T,N>& a, const V& val) noexcept(std::is_floating_point<V>::value)
23866: {
23866: typedef boost::integral_constant<int, N> tag_type;
23866: return detail::evaluate_polynomial_c_imp(static_cast<const T*>(a.data()), val, static_cast<tag_type const*>(0));
23866: }
23866:
23866:
23866:
23866: template <class T, class U>
23866: inline U evaluate_even_polynomial(const T* poly, U z, std::size_t count) noexcept(std::is_floating_point<U>::value)
23866: {
23866: return evaluate_polynomial(poly, U(z*z), count);
23866: }
23866:
23866: template <std::size_t N, class T, class V>
23866: inline V evaluate_even_polynomial(const T(&a)[N], const V& z) noexcept(std::is_floating_point<V>::value)
23866: {
23866: return evaluate_polynomial(a, V(z*z));
23866: }
23866:
23866: template <std::size_t N, class T, class V>
23866: inline V evaluate_even_polynomial(const boost::array<T,N>& a, const V& z) noexcept(std::is_floating_point<V>::value)
23866: {
23866: return evaluate_polynomial(a, V(z*z));
23866: }
23866:
23866:
23866:
23866: template <class T, class U>
23866: inline U evaluate_odd_polynomial(const T* poly, U z, std::size_t count) noexcept(std::is_floating_point<U>::value)
23866: {
23866: return poly[0] + z * evaluate_polynomial(poly+1, U(z*z), count-1);
23866: }
23866:
23866: template <std::size_t N, class T, class V>
23866: inline V evaluate_odd_polynomial(const T(&a)[N], const V& z) noexcept(std::is_floating_point<V>::value)
23866: {
23866: typedef boost::integral_constant<int, N-1> tag_type;
23866: return a[0] + z * detail::evaluate_polynomial_c_imp(static_cast<const T*>(a) + 1, V(z*z), static_cast<tag_type const*>(0));
23866: }
23866:
23866: template <std::size_t N, class T, class V>
23866: inline V evaluate_odd_polynomial(const boost::array<T,N>& a, const V& z) noexcept(std::is_floating_point<V>::value)
23866: {
23866: typedef boost::integral_constant<int, N-1> tag_type;
23866: return a[0] + z * detail::evaluate_polynomial_c_imp(static_cast<const T*>(a.data()) + 1, V(z*z), static_cast<tag_type const*>(0));
23866: }
23866:
23866: template <class T, class U, class V>
23866: V evaluate_rational(const T* num, const U* denom, const V& z_, std::size_t count) noexcept(std::is_floating_point<V>::value);
23866:
23866: namespace detail{
23866:
23866: template <class T, class U, class V, class Tag>
23866: inline V evaluate_rational_c_imp(const T* num, const U* denom, const V& z, const Tag*) noexcept(std::is_floating_point<V>::value)
23866: {
23866: return boost::math::tools::evaluate_rational(num, denom, z, Tag::value);
23866: }
23866:
23866: }
23866: # 280 "/usr/include/boost/math/tools/rational.hpp" 3 4
23866: template <class T, class U, class V>
23866: V evaluate_rational(const T* num, const U* denom, const V& z_, std::size_t count) noexcept(std::is_floating_point<V>::value)
23866: {
23866: V z(z_);
23866: V s1, s2;
23866: if(z <= 1)
23866: {
23866: s1 = static_cast<V>(num[count-1]);
23866: s2 = static_cast<V>(denom[count-1]);
23866: for(int i = (int)count - 2; i >= 0; --i)
23866: {
23866: s1 *= z;
23866: s2 *= z;
23866: s1 += num[i];
23866: s2 += denom[i];
23866: }
23866: }
23866: else
23866: {
23866: z = 1 / z;
23866: s1 = static_cast<V>(num[0]);
23866: s2 = static_cast<V>(denom[0]);
23866: for(unsigned i = 1; i < count; ++i)
23866: {
23866: s1 *= z;
23866: s2 *= z;
23866: s1 += num[i];
23866: s2 += denom[i];
23866: }
23866: }
23866: return s1 / s2;
23866: }
23866:
23866: template <std::size_t N, class T, class U, class V>
23866: inline V evaluate_rational(const T(&a)[N], const U(&b)[N], const V& z) noexcept(std::is_floating_point<V>::value)
23866: {
23866: return detail::evaluate_rational_c_imp(a, b, z, static_cast<const boost::integral_constant<int, N>*>(0));
23866: }
23866:
23866: template <std::size_t N, class T, class U, class V>
23866: inline V evaluate_rational(const boost::array<T,N>& a, const boost::array<U,N>& b, const V& z) noexcept(std::is_floating_point<V>::value)
23866: {
23866: return detail::evaluate_rational_c_imp(a.data(), b.data(), z, static_cast<boost::integral_constant<int, N>*>(0));
23866: }
23866:
23866: }
23866: }
23866: }
23866: # 19 "/usr/include/boost/math/special_functions/lanczos.hpp" 2 3 4
23866:
23866:
23866:
23866: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/10/include/limits.h" 1 3 4
23866: # 23 "/usr/include/boost/math/special_functions/lanczos.hpp" 2 3 4
23866: # 34 "/usr/include/boost/math/special_functions/lanczos.hpp" 3 4
23866: namespace boost{ namespace math{ namespace lanczos{
23866: # 51 "/usr/include/boost/math/special_functions/lanczos.hpp" 3 4
23866: template <class Lanczos, class T>
23866: struct lanczos_initializer
23866: {
23866: struct init
23866: {
23866: init()
23866: {
23866: T t(1);
23866: Lanczos::lanczos_sum(t);
23866: Lanczos::lanczos_sum_expG_scaled(t);
23866: Lanczos::lanczos_sum_near_1(t);
23866: Lanczos::lanczos_sum_near_2(t);
23866: Lanczos::g();
23866: }
23866: void force_instantiate()const{}
23866: };
23866: static const init initializer;
23866: static void force_instantiate()
23866: {
23866: initializer.force_instantiate();
23866: }
23866: };
23866: template <class Lanczos, class T>
23866: typename lanczos_initializer<Lanczos, T>::init const lanczos_initializer<Lanczos, T>::initializer;
23866:
23866:
23866:
23866:
23866:
23866: struct lanczos6 : public boost::integral_constant<int, 35>
23866: {
23866:
23866:
23866:
23866:
23866: template <class T>
23866: static T lanczos_sum(const T& z)
23866: {
23866: lanczos_initializer<lanczos6, T>::force_instantiate();
23866: static const T num[6] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8706.349592549009182288174442774377925882L, "8706.349592549009182288174442774377925882", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((35 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8523.650341121874633477483696775067709735L, "8523.650341121874633477483696775067709735", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((35 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3338.029219476423550899999750161289306564L, "3338.029219476423550899999750161289306564", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((35 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 653.6424994294008795995653541449610986791L, "653.6424994294008795995653541449610986791", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((35 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 63.99951844938187085666201263218840287667L, "63.99951844938187085666201263218840287667", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((35 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.506628274631006311133031631822390264407L, "2.506628274631006311133031631822390264407", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((35 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: static const boost::uint16_t denom[6] = {
23866: static_cast<boost::uint16_t>(0u),
23866: static_cast<boost::uint16_t>(24u),
23866: static_cast<boost::uint16_t>(50u),
23866: static_cast<boost::uint16_t>(35u),
23866: static_cast<boost::uint16_t>(10u),
23866: static_cast<boost::uint16_t>(1u)
23866: };
23866: return boost::math::tools::evaluate_rational(num, denom, z);
23866: }
23866:
23866: template <class T>
23866: static T lanczos_sum_expG_scaled(const T& z)
23866: {
23866: lanczos_initializer<lanczos6, T>::force_instantiate();
23866: static const T num[6] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 32.81244541029783471623665933780748627823L, "32.81244541029783471623665933780748627823", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((35 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 32.12388941444332003446077108933558534361L, "32.12388941444332003446077108933558534361", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((35 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 12.58034729455216106950851080138931470954L, "12.58034729455216106950851080138931470954", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((35 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.463444478353241423633780693218408889251L, "2.463444478353241423633780693218408889251", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((35 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.2412010548258800231126240760264822486599L, "0.2412010548258800231126240760264822486599", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((35 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.009446967704539249494420221613134244048319L, "0.009446967704539249494420221613134244048319", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((35 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: static const boost::uint16_t denom[6] = {
23866: static_cast<boost::uint16_t>(0u),
23866: static_cast<boost::uint16_t>(24u),
23866: static_cast<boost::uint16_t>(50u),
23866: static_cast<boost::uint16_t>(35u),
23866: static_cast<boost::uint16_t>(10u),
23866: static_cast<boost::uint16_t>(1u)
23866: };
23866: return boost::math::tools::evaluate_rational(num, denom, z);
23866: }
23866:
23866:
23866: template<class T>
23866: static T lanczos_sum_near_1(const T& dz)
23866: {
23866: lanczos_initializer<lanczos6, T>::force_instantiate();
23866: static const T d[5] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.044879010930422922760429926121241330235L, "2.044879010930422922760429926121241330235", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((35 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.751366405578505366591317846728753993668L, "-2.751366405578505366591317846728753993668", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((35 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.02282965224225004296750609604264824677L, "1.02282965224225004296750609604264824677", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((35 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.09786124911582813985028889636665335893627L, "-0.09786124911582813985028889636665335893627", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((35 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.0009829742267506615183144364420540766510112L, "0.0009829742267506615183144364420540766510112", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((35 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: };
23866: T result = 0;
23866: for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k)
23866: {
23866: result += (-d[k-1]*dz)/(k*dz + k*k);
23866: }
23866: return result;
23866: }
23866:
23866: template<class T>
23866: static T lanczos_sum_near_2(const T& dz)
23866: {
23866: lanczos_initializer<lanczos6, T>::force_instantiate();
23866: static const T d[5] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.748142489536043490764289256167080091892L, "5.748142489536043490764289256167080091892", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((35 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -7.734074268282457156081021756682138251825L, "-7.734074268282457156081021756682138251825", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((35 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.875167944990511006997713242805893543947L, "2.875167944990511006997713242805893543947", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((35 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.2750873773533504542306766137703788781776L, "-0.2750873773533504542306766137703788781776", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((35 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.002763134585812698552178368447708846850353L, "0.002763134585812698552178368447708846850353", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((35 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: };
23866: T result = 0;
23866: T z = dz + 2;
23866: for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k)
23866: {
23866: result += (-d[k-1]*dz)/(z + k*z + k*k - 1);
23866: }
23866: return result;
23866: }
23866:
23866: static double g(){ return 5.581000000000000405009359383257105946541; }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: struct lanczos11 : public boost::integral_constant<int, 60>
23866: {
23866:
23866:
23866:
23866:
23866: template <class T>
23866: static T lanczos_sum(const T& z)
23866: {
23866: lanczos_initializer<lanczos11, T>::force_instantiate();
23866: static const T num[11] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 38474670393.31776828316099004518914832218L, "38474670393.31776828316099004518914832218", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 36857665043.51950660081971227404959150474L, "36857665043.51950660081971227404959150474", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 15889202453.72942008945006665994637853242L, "15889202453.72942008945006665994637853242", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4059208354.298834770194507810788393801607L, "4059208354.298834770194507810788393801607", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 680547661.1834733286087695557084801366446L, "680547661.1834733286087695557084801366446", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 78239755.00312005289816041245285376206263L, "78239755.00312005289816041245285376206263", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6246580.776401795264013335510453568106366L, "6246580.776401795264013335510453568106366", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 341986.3488721347032223777872763188768288L, "341986.3488721347032223777872763188768288", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 12287.19451182455120096222044424100527629L, "12287.19451182455120096222044424100527629", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 261.6140441641668190791708576058805625502L, "261.6140441641668190791708576058805625502", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.506628274631000502415573855452633787834L, "2.506628274631000502415573855452633787834", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: static const boost::uint32_t denom[11] = {
23866: static_cast<boost::uint32_t>(0u),
23866: static_cast<boost::uint32_t>(362880u),
23866: static_cast<boost::uint32_t>(1026576u),
23866: static_cast<boost::uint32_t>(1172700u),
23866: static_cast<boost::uint32_t>(723680u),
23866: static_cast<boost::uint32_t>(269325u),
23866: static_cast<boost::uint32_t>(63273u),
23866: static_cast<boost::uint32_t>(9450u),
23866: static_cast<boost::uint32_t>(870u),
23866: static_cast<boost::uint32_t>(45u),
23866: static_cast<boost::uint32_t>(1u)
23866: };
23866: return boost::math::tools::evaluate_rational(num, denom, z);
23866: }
23866:
23866: template <class T>
23866: static T lanczos_sum_expG_scaled(const T& z)
23866: {
23866: lanczos_initializer<lanczos11, T>::force_instantiate();
23866: static const T num[11] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 709811.662581657956893540610814842699825L, "709811.662581657956893540610814842699825", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 679979.847415722640161734319823103390728L, "679979.847415722640161734319823103390728", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 293136.785721159725251629480984140341656L, "293136.785721159725251629480984140341656", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 74887.5403291467179935942448101441897121L, "74887.5403291467179935942448101441897121", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 12555.29058241386295096255111537516768137L, "12555.29058241386295096255111537516768137", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1443.42992444170669746078056942194198252L, "1443.42992444170669746078056942194198252", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 115.2419459613734722083208906727972935065L, "115.2419459613734722083208906727972935065", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.30923920573262762719523981992008976989L, "6.30923920573262762719523981992008976989", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.2266840463022436475495508977579735223818L, "0.2266840463022436475495508977579735223818", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.004826466289237661857584712046231435101741L, "0.004826466289237661857584712046231435101741", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.4624429436045378766270459638520555557321e-4L, "0.4624429436045378766270459638520555557321e-4", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: static const boost::uint32_t denom[11] = {
23866: static_cast<boost::uint32_t>(0u),
23866: static_cast<boost::uint32_t>(362880u),
23866: static_cast<boost::uint32_t>(1026576u),
23866: static_cast<boost::uint32_t>(1172700u),
23866: static_cast<boost::uint32_t>(723680u),
23866: static_cast<boost::uint32_t>(269325u),
23866: static_cast<boost::uint32_t>(63273u),
23866: static_cast<boost::uint32_t>(9450u),
23866: static_cast<boost::uint32_t>(870u),
23866: static_cast<boost::uint32_t>(45u),
23866: static_cast<boost::uint32_t>(1u)
23866: };
23866: return boost::math::tools::evaluate_rational(num, denom, z);
23866: }
23866:
23866:
23866: template<class T>
23866: static T lanczos_sum_near_1(const T& dz)
23866: {
23866: lanczos_initializer<lanczos11, T>::force_instantiate();
23866: static const T d[10] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.005853070677940377969080796551266387954L, "4.005853070677940377969080796551266387954", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -13.17044315127646469834125159673527183164L, "-13.17044315127646469834125159673527183164", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 17.19146865350790353683895137079288129318L, "17.19146865350790353683895137079288129318", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -11.36446409067666626185701599196274701126L, "-11.36446409067666626185701599196274701126", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.024801119349323770107694133829772634737L, "4.024801119349323770107694133829772634737", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.7445703262078094128346501724255463005006L, "-0.7445703262078094128346501724255463005006", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.06513861351917497265045550019547857713172L, "0.06513861351917497265045550019547857713172", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.00217899958561830354633560009312512312758L, "-0.00217899958561830354633560009312512312758", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.17655204574495137651670832229571934738e-4L, "0.17655204574495137651670832229571934738e-4", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.1036282091079938047775645941885460820853e-7L, "-0.1036282091079938047775645941885460820853e-7", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: };
23866: T result = 0;
23866: for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k)
23866: {
23866: result += (-d[k-1]*dz)/(k*dz + k*k);
23866: }
23866: return result;
23866: }
23866:
23866: template<class T>
23866: static T lanczos_sum_near_2(const T& dz)
23866: {
23866: lanczos_initializer<lanczos11, T>::force_instantiate();
23866: static const T d[10] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 19.05889633808148715159575716844556056056L, "19.05889633808148715159575716844556056056", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -62.66183664701721716960978577959655644762L, "-62.66183664701721716960978577959655644762", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 81.7929198065004751699057192860287512027L, "81.7929198065004751699057192860287512027", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -54.06941772964234828416072865069196553015L, "-54.06941772964234828416072865069196553015", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 19.14904664790693019642068229478769661515L, "19.14904664790693019642068229478769661515", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.542488556926667589704590409095331790317L, "-3.542488556926667589704590409095331790317", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.3099140334815639910894627700232804503017L, "0.3099140334815639910894627700232804503017", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.01036716187296241640634252431913030440825L, "-0.01036716187296241640634252431913030440825", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.8399926504443119927673843789048514017761e-4L, "0.8399926504443119927673843789048514017761e-4", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.493038376656195010308610694048822561263e-7L, "-0.493038376656195010308610694048822561263e-7", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((60 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: };
23866: T result = 0;
23866: T z = dz + 2;
23866: for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k)
23866: {
23866: result += (-d[k-1]*dz)/(z + k*z + k*k - 1);
23866: }
23866: return result;
23866: }
23866:
23866: static double g(){ return 10.90051099999999983936049829935654997826; }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: struct lanczos13 : public boost::integral_constant<int, 72>
23866: {
23866:
23866:
23866:
23866:
23866: template <class T>
23866: static T lanczos_sum(const T& z)
23866: {
23866: lanczos_initializer<lanczos13, T>::force_instantiate();
23866: static const T num[13] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 44012138428004.60895436261759919070125699L, "44012138428004.60895436261759919070125699", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 41590453358593.20051581730723108131357995L, "41590453358593.20051581730723108131357995", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 18013842787117.99677796276038389462742949L, "18013842787117.99677796276038389462742949", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4728736263475.388896889723995205703970787L, "4728736263475.388896889723995205703970787", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 837910083628.4046470415724300225777912264L, "837910083628.4046470415724300225777912264", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 105583707273.4299344907359855510105321192L, "105583707273.4299344907359855510105321192", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9701363618.494999493386608345339104922694L, "9701363618.494999493386608345339104922694", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 654914397.5482052641016767125048538245644L, "654914397.5482052641016767125048538245644", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 32238322.94213356530668889463945849409184L, "32238322.94213356530668889463945849409184", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1128514.219497091438040721811544858643121L, "1128514.219497091438040721811544858643121", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 26665.79378459858944762533958798805525125L, "26665.79378459858944762533958798805525125", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 381.8801248632926870394389468349331394196L, "381.8801248632926870394389468349331394196", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.506628274631000502415763426076722427007L, "2.506628274631000502415763426076722427007", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: static const boost::uint32_t denom[13] = {
23866: static_cast<boost::uint32_t>(0u),
23866: static_cast<boost::uint32_t>(39916800u),
23866: static_cast<boost::uint32_t>(120543840u),
23866: static_cast<boost::uint32_t>(150917976u),
23866: static_cast<boost::uint32_t>(105258076u),
23866: static_cast<boost::uint32_t>(45995730u),
23866: static_cast<boost::uint32_t>(13339535u),
23866: static_cast<boost::uint32_t>(2637558u),
23866: static_cast<boost::uint32_t>(357423u),
23866: static_cast<boost::uint32_t>(32670u),
23866: static_cast<boost::uint32_t>(1925u),
23866: static_cast<boost::uint32_t>(66u),
23866: static_cast<boost::uint32_t>(1u)
23866: };
23866: return boost::math::tools::evaluate_rational(num, denom, z);
23866: }
23866:
23866: template <class T>
23866: static T lanczos_sum_expG_scaled(const T& z)
23866: {
23866: lanczos_initializer<lanczos13, T>::force_instantiate();
23866: static const T num[13] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 86091529.53418537217994842267760536134841L, "86091529.53418537217994842267760536134841", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 81354505.17858011242874285785316135398567L, "81354505.17858011242874285785316135398567", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 35236626.38815461910817650960734605416521L, "35236626.38815461910817650960734605416521", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9249814.988024471294683815872977672237195L, "9249814.988024471294683815872977672237195", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1639024.216687146960253839656643518985826L, "1639024.216687146960253839656643518985826", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 206530.8157641225032631778026076868855623L, "206530.8157641225032631778026076868855623", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 18976.70193530288915698282139308582105936L, "18976.70193530288915698282139308582105936", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1281.068909912559479885759622791374106059L, "1281.068909912559479885759622791374106059", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 63.06093343420234536146194868906771599354L, "63.06093343420234536146194868906771599354", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.207470909792527638222674678171050209691L, "2.207470909792527638222674678171050209691", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.05216058694613505427476207805814960742102L, "0.05216058694613505427476207805814960742102", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.0007469903808915448316510079585999893674101L, "0.0007469903808915448316510079585999893674101", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.4903180573459871862552197089738373164184e-5L, "0.4903180573459871862552197089738373164184e-5", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: static const boost::uint32_t denom[13] = {
23866: static_cast<boost::uint32_t>(0u),
23866: static_cast<boost::uint32_t>(39916800u),
23866: static_cast<boost::uint32_t>(120543840u),
23866: static_cast<boost::uint32_t>(150917976u),
23866: static_cast<boost::uint32_t>(105258076u),
23866: static_cast<boost::uint32_t>(45995730u),
23866: static_cast<boost::uint32_t>(13339535u),
23866: static_cast<boost::uint32_t>(2637558u),
23866: static_cast<boost::uint32_t>(357423u),
23866: static_cast<boost::uint32_t>(32670u),
23866: static_cast<boost::uint32_t>(1925u),
23866: static_cast<boost::uint32_t>(66u),
23866: static_cast<boost::uint32_t>(1u)
23866: };
23866: return boost::math::tools::evaluate_rational(num, denom, z);
23866: }
23866:
23866:
23866: template<class T>
23866: static T lanczos_sum_near_1(const T& dz)
23866: {
23866: lanczos_initializer<lanczos13, T>::force_instantiate();
23866: static const T d[12] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.832115561461656947793029596285626840312L, "4.832115561461656947793029596285626840312", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -19.86441536140337740383120735104359034688L, "-19.86441536140337740383120735104359034688", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 33.9927422807443239927197864963170585331L, "33.9927422807443239927197864963170585331", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -31.41520692249765980987427413991250886138L, "-31.41520692249765980987427413991250886138", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 17.0270866009599345679868972409543597821L, "17.0270866009599345679868972409543597821", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -5.5077216950865501362506920516723682167L, "-5.5077216950865501362506920516723682167", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.037811741948214855286817963800439373362L, "1.037811741948214855286817963800439373362", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.106640468537356182313660880481398642811L, "-0.106640468537356182313660880481398642811", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.005276450526660653288757565778182586742831L, "0.005276450526660653288757565778182586742831", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.0001000935625597121545867453746252064770029L, "-0.0001000935625597121545867453746252064770029", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.462590910138598083940803704521211569234e-6L, "0.462590910138598083940803704521211569234e-6", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.1735307814426389420248044907765671743012e-9L, "-0.1735307814426389420248044907765671743012e-9", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: };
23866: T result = 0;
23866: for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k)
23866: {
23866: result += (-d[k-1]*dz)/(k*dz + k*k);
23866: }
23866: return result;
23866: }
23866:
23866: template<class T>
23866: static T lanczos_sum_near_2(const T& dz)
23866: {
23866: lanczos_initializer<lanczos13, T>::force_instantiate();
23866: static const T d[12] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 26.96979819614830698367887026728396466395L, "26.96979819614830698367887026728396466395", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -110.8705424709385114023884328797900204863L, "-110.8705424709385114023884328797900204863", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 189.7258846119231466417015694690434770085L, "189.7258846119231466417015694690434770085", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -175.3397202971107486383321670769397356553L, "-175.3397202971107486383321670769397356553", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 95.03437648691551457087250340903980824948L, "95.03437648691551457087250340903980824948", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -30.7406022781665264273675797983497141978L, "-30.7406022781665264273675797983497141978", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.792405601630517993355102578874590410552L, "5.792405601630517993355102578874590410552", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.5951993240669148697377539518639997795831L, "-0.5951993240669148697377539518639997795831", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.02944979359164017509944724739946255067671L, "0.02944979359164017509944724739946255067671", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.0005586586555377030921194246330399163602684L, "-0.0005586586555377030921194246330399163602684", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.2581888478270733025288922038673392636029e-5L, "0.2581888478270733025288922038673392636029e-5", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.9685385411006641478305219367315965391289e-9L, "-0.9685385411006641478305219367315965391289e-9", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((72 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: };
23866: T result = 0;
23866: T z = dz + 2;
23866: for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k)
23866: {
23866: result += (-d[k-1]*dz)/(z + k*z + k*k - 1);
23866: }
23866: return result;
23866: }
23866:
23866: static double g(){ return 13.1445650000000000545696821063756942749; }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: struct lanczos22 : public boost::integral_constant<int, 120>
23866: {
23866:
23866:
23866:
23866:
23866: template <class T>
23866: static T lanczos_sum(const T& z)
23866: {
23866: lanczos_initializer<lanczos22, T>::force_instantiate();
23866: static const T num[22] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 46198410803245094237463011094.12173081986L, "46198410803245094237463011094.12173081986", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 43735859291852324413622037436.321513777L, "43735859291852324413622037436.321513777", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 19716607234435171720534556386.97481377748L, "19716607234435171720534556386.97481377748", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5629401471315018442177955161.245623932129L, "5629401471315018442177955161.245623932129", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1142024910634417138386281569.245580222392L, "1142024910634417138386281569.245580222392", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 175048529315951173131586747.695329230778L, "175048529315951173131586747.695329230778", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 21044290245653709191654675.41581372963167L, "21044290245653709191654675.41581372963167", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2033001410561031998451380.335553678782601L, "2033001410561031998451380.335553678782601", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 160394318862140953773928.8736211601848891L, "160394318862140953773928.8736211601848891", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 10444944438396359705707.48957290388740896L, "10444944438396359705707.48957290388740896", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 565075825801617290121.1466393747967538948L, "565075825801617290121.1466393747967538948", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 25475874292116227538.99448534450411942597L, "25475874292116227538.99448534450411942597", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 957135055846602154.6720835535232270205725L, "957135055846602154.6720835535232270205725", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 29874506304047462.23662392445173880821515L, "29874506304047462.23662392445173880821515", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 769651310384737.2749087590725764959689181L, "769651310384737.2749087590725764959689181", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 16193289100889.15989633624378404096011797L, "16193289100889.15989633624378404096011797", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 273781151680.6807433264462376754578933261L, "273781151680.6807433264462376754578933261", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3630485900.32917021712188739762161583295L, "3630485900.32917021712188739762161583295", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 36374352.05577334277856865691538582936484L, "36374352.05577334277856865691538582936484", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 258945.7742115532455441786924971194951043L, "258945.7742115532455441786924971194951043", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1167.501919472435718934219997431551246996L, "1167.501919472435718934219997431551246996", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.50662827463100050241576528481104525333L, "2.50662827463100050241576528481104525333", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: static const boost::uint64_t denom[22] = {
23866: 0uLL,
23866: 2432902008176640000uLL,
23866: 8752948036761600000uLL,
23866: 13803759753640704000uLL,
23866: 12870931245150988800uLL,
23866: 8037811822645051776uLL,
23866: 3599979517947607200uLL,
23866: 1206647803780373360uLL,
23866: 311333643161390640uLL,
23866: 63030812099294896uLL,
23866: 10142299865511450uLL,
23866: 1307535010540395uLL,
23866: 135585182899530uLL,
23866: 11310276995381uLL,
23866: 756111184500uLL,
23866: 40171771630uLL,
23866: 1672280820uLL,
23866: 53327946uLL,
23866: 1256850uLL,
23866: 20615uLL,
23866: 210uLL,
23866: 1uLL
23866: };
23866: return boost::math::tools::evaluate_rational(num, denom, z);
23866: }
23866:
23866: template <class T>
23866: static T lanczos_sum_expG_scaled(const T& z)
23866: {
23866: lanczos_initializer<lanczos22, T>::force_instantiate();
23866: static const T num[22] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6939996264376682180.277485395074954356211L, "6939996264376682180.277485395074954356211", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6570067992110214451.87201438870245659384L, "6570067992110214451.87201438870245659384", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2961859037444440551.986724631496417064121L, "2961859037444440551.986724631496417064121", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 845657339772791245.3541226499766163431651L, "845657339772791245.3541226499766163431651", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 171556737035449095.2475716923888737881837L, "171556737035449095.2475716923888737881837", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 26296059072490867.7822441885603400926007L, "26296059072490867.7822441885603400926007", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3161305619652108.433798300149816829198706L, "3161305619652108.433798300149816829198706", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 305400596026022.4774396904484542582526472L, "305400596026022.4774396904484542582526472", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 24094681058862.55120507202622377623528108L, "24094681058862.55120507202622377623528108", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1569055604375.919477574824168939428328839L, "1569055604375.919477574824168939428328839", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 84886558909.02047889339710230696942513159L, "84886558909.02047889339710230696942513159", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3827024985.166751989686050643579753162298L, "3827024985.166751989686050643579753162298", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 143782298.9273215199098728674282885500522L, "143782298.9273215199098728674282885500522", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4487794.24541641841336786238909171265944L, "4487794.24541641841336786238909171265944", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 115618.2025760830513505888216285273541959L, "115618.2025760830513505888216285273541959", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2432.580773108508276957461757328744780439L, "2432.580773108508276957461757328744780439", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 41.12782532742893597168530008461874360191L, "41.12782532742893597168530008461874360191", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.5453771709477689805460179187388702295792L, "0.5453771709477689805460179187388702295792", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.005464211062612080347167337964166505282809L, "0.005464211062612080347167337964166505282809", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.388992321263586767037090706042788910953e-4L, "0.388992321263586767037090706042788910953e-4", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.1753839324538447655939518484052327068859e-6L, "0.1753839324538447655939518484052327068859e-6", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.3765495513732730583386223384116545391759e-9L, "0.3765495513732730583386223384116545391759e-9", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: static const boost::uint64_t denom[22] = {
23866: 0uLL,
23866: 2432902008176640000uLL,
23866: 8752948036761600000uLL,
23866: 13803759753640704000uLL,
23866: 12870931245150988800uLL,
23866: 8037811822645051776uLL,
23866: 3599979517947607200uLL,
23866: 1206647803780373360uLL,
23866: 311333643161390640uLL,
23866: 63030812099294896uLL,
23866: 10142299865511450uLL,
23866: 1307535010540395uLL,
23866: 135585182899530uLL,
23866: 11310276995381uLL,
23866: 756111184500uLL,
23866: 40171771630uLL,
23866: 1672280820uLL,
23866: 53327946uLL,
23866: 1256850uLL,
23866: 20615uLL,
23866: 210uLL,
23866: 1uLL
23866: };
23866: return boost::math::tools::evaluate_rational(num, denom, z);
23866: }
23866:
23866:
23866: template<class T>
23866: static T lanczos_sum_near_1(const T& dz)
23866: {
23866: lanczos_initializer<lanczos22, T>::force_instantiate();
23866: static const T d[21] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.318998691953337183034781139546384476554L, "8.318998691953337183034781139546384476554", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -63.15415991415959158214140353299240638675L, "-63.15415991415959158214140353299240638675", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 217.3108224383632868591462242669081540163L, "217.3108224383632868591462242669081540163", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -448.5134281386108366899784093610397354889L, "-448.5134281386108366899784093610397354889", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 619.2903759363285456927248474593012711346L, "619.2903759363285456927248474593012711346", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -604.1630177420625418522025080080444177046L, "-604.1630177420625418522025080080444177046", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 428.8166750424646119935047118287362193314L, "428.8166750424646119935047118287362193314", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -224.6988753721310913866347429589434550302L, "-224.6988753721310913866347429589434550302", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 87.32181627555510833499451817622786940961L, "87.32181627555510833499451817622786940961", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -25.07866854821128965662498003029199058098L, "-25.07866854821128965662498003029199058098", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.264398125689025351448861011657789005392L, "5.264398125689025351448861011657789005392", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.792518936256495243383586076579921559914L, "-0.792518936256495243383586076579921559914", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.08317448364744713773350272460937904691566L, "0.08317448364744713773350272460937904691566", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.005845345166274053157781068150827567998882L, "-0.005845345166274053157781068150827567998882", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.0002599412126352082483326238522490030412391L, "0.0002599412126352082483326238522490030412391", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.6748102079670763884917431338234783496303e-5L, "-0.6748102079670763884917431338234783496303e-5", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.908824383434109002762325095643458603605e-7L, "0.908824383434109002762325095643458603605e-7", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.5299325929309389890892469299969669579725e-9L, "-0.5299325929309389890892469299969669579725e-9", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.994306085859549890267983602248532869362e-12L, "0.994306085859549890267983602248532869362e-12", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.3499893692975262747371544905820891835298e-15L, "-0.3499893692975262747371544905820891835298e-15", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.7260746353663365145454867069182884694961e-20L, "0.7260746353663365145454867069182884694961e-20", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: };
23866: T result = 0;
23866: for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k)
23866: {
23866: result += (-d[k-1]*dz)/(k*dz + k*k);
23866: }
23866: return result;
23866: }
23866:
23866: template<class T>
23866: static T lanczos_sum_near_2(const T& dz)
23866: {
23866: lanczos_initializer<lanczos22, T>::force_instantiate();
23866: static const T d[21] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 75.39272007105208086018421070699575462226L, "75.39272007105208086018421070699575462226", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -572.3481967049935412452681346759966390319L, "-572.3481967049935412452681346759966390319", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1969.426202741555335078065370698955484358L, "1969.426202741555335078065370698955484358", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -4064.74968778032030891520063865996757519L, "-4064.74968778032030891520063865996757519", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5612.452614138013929794736248384309574814L, "5612.452614138013929794736248384309574814", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -5475.357667500026172903620177988213902339L, "-5475.357667500026172903620177988213902339", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3886.243614216111328329547926490398103492L, "3886.243614216111328329547926490398103492", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2036.382026072125407192448069428134470564L, "-2036.382026072125407192448069428134470564", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 791.3727954936062108045551843636692287652L, "791.3727954936062108045551843636692287652", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -227.2808432388436552794021219198885223122L, "-227.2808432388436552794021219198885223122", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 47.70974355562144229897637024320739257284L, "47.70974355562144229897637024320739257284", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -7.182373807798293545187073539819697141572L, "-7.182373807798293545187073539819697141572", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.7537866989631514559601547530490976100468L, "0.7537866989631514559601547530490976100468", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.05297470142240154822658739758236594717787L, "-0.05297470142240154822658739758236594717787", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.00235577330936380542539812701472320434133L, "0.00235577330936380542539812701472320434133", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.6115613067659273118098229498679502138802e-4L, "-0.6115613067659273118098229498679502138802e-4", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.8236417010170941915758315020695551724181e-6L, "0.8236417010170941915758315020695551724181e-6", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.4802628430993048190311242611330072198089e-8L, "-0.4802628430993048190311242611330072198089e-8", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.9011113376981524418952720279739624707342e-11L, "0.9011113376981524418952720279739624707342e-11", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.3171854152689711198382455703658589996796e-14L, "-0.3171854152689711198382455703658589996796e-14", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.6580207998808093935798753964580596673177e-19L, "0.6580207998808093935798753964580596673177e-19", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((120 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: };
23866: T result = 0;
23866: T z = dz + 2;
23866: for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k)
23866: {
23866: result += (-d[k-1]*dz)/(z + k*z + k*k - 1);
23866: }
23866: return result;
23866: }
23866:
23866: static double g(){ return 22.61890999999999962710717227309942245483; }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: struct lanczos6m24 : public boost::integral_constant<int, 24>
23866: {
23866:
23866:
23866:
23866: template <class T>
23866: static T lanczos_sum(const T& z)
23866: {
23866: static const T num[6] = {
23866: static_cast<T>(58.52061591769095910314047740215847630266L),
23866: static_cast<T>(182.5248962595894264831189414768236280862L),
23866: static_cast<T>(211.0971093028510041839168287718170827259L),
23866: static_cast<T>(112.2526547883668146736465390902227161763L),
23866: static_cast<T>(27.5192015197455403062503721613097825345L),
23866: static_cast<T>(2.50662858515256974113978724717473206342L)
23866: };
23866: static const boost::uint16_t denom[6] = {
23866: static_cast<boost::uint16_t>(0u),
23866: static_cast<boost::uint16_t>(24u),
23866: static_cast<boost::uint16_t>(50u),
23866: static_cast<boost::uint16_t>(35u),
23866: static_cast<boost::uint16_t>(10u),
23866: static_cast<boost::uint16_t>(1u)
23866: };
23866: return boost::math::tools::evaluate_rational(num, denom, z);
23866: }
23866:
23866: template <class T>
23866: static T lanczos_sum_expG_scaled(const T& z)
23866: {
23866: static const T num[6] = {
23866: static_cast<T>(14.0261432874996476619570577285003839357L),
23866: static_cast<T>(43.74732405540314316089531289293124360129L),
23866: static_cast<T>(50.59547402616588964511581430025589038612L),
23866: static_cast<T>(26.90456680562548195593733429204228910299L),
23866: static_cast<T>(6.595765571169314946316366571954421695196L),
23866: static_cast<T>(0.6007854010515290065101128585795542383721L)
23866: };
23866: static const boost::uint16_t denom[6] = {
23866: static_cast<boost::uint16_t>(0u),
23866: static_cast<boost::uint16_t>(24u),
23866: static_cast<boost::uint16_t>(50u),
23866: static_cast<boost::uint16_t>(35u),
23866: static_cast<boost::uint16_t>(10u),
23866: static_cast<boost::uint16_t>(1u)
23866: };
23866: return boost::math::tools::evaluate_rational(num, denom, z);
23866: }
23866:
23866:
23866: template<class T>
23866: static T lanczos_sum_near_1(const T& dz)
23866: {
23866: static const T d[5] = {
23866: static_cast<T>(0.4922488055204602807654354732674868442106L),
23866: static_cast<T>(0.004954497451132152436631238060933905650346L),
23866: static_cast<T>(-0.003374784572167105840686977985330859371848L),
23866: static_cast<T>(0.001924276018962061937026396537786414831385L),
23866: static_cast<T>(-0.00056533046336427583708166383712907694434L),
23866: };
23866: T result = 0;
23866: for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k)
23866: {
23866: result += (-d[k-1]*dz)/(k*dz + k*k);
23866: }
23866: return result;
23866: }
23866:
23866: template<class T>
23866: static T lanczos_sum_near_2(const T& dz)
23866: {
23866: static const T d[5] = {
23866: static_cast<T>(0.6534966888520080645505805298901130485464L),
23866: static_cast<T>(0.006577461728560758362509168026049182707101L),
23866: static_cast<T>(-0.004480276069269967207178373559014835978161L),
23866: static_cast<T>(0.00255461870648818292376982818026706528842L),
23866: static_cast<T>(-0.000750517993690428370380996157470900204524L),
23866: };
23866: T result = 0;
23866: T z = dz + 2;
23866: for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k)
23866: {
23866: result += (-d[k-1]*dz)/(z + k*z + k*k - 1);
23866: }
23866: return result;
23866: }
23866:
23866: static double g(){ return 1.428456135094165802001953125; }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: struct lanczos13m53 : public boost::integral_constant<int, 53>
23866: {
23866:
23866:
23866:
23866: template <class T>
23866: static T lanczos_sum(const T& z)
23866: {
23866: static const T num[13] = {
23866: static_cast<T>(23531376880.41075968857200767445163675473L),
23866: static_cast<T>(42919803642.64909876895789904700198885093L),
23866: static_cast<T>(35711959237.35566804944018545154716670596L),
23866: static_cast<T>(17921034426.03720969991975575445893111267L),
23866: static_cast<T>(6039542586.35202800506429164430729792107L),
23866: static_cast<T>(1439720407.311721673663223072794912393972L),
23866: static_cast<T>(248874557.8620541565114603864132294232163L),
23866: static_cast<T>(31426415.58540019438061423162831820536287L),
23866: static_cast<T>(2876370.628935372441225409051620849613599L),
23866: static_cast<T>(186056.2653952234950402949897160456992822L),
23866: static_cast<T>(8071.672002365816210638002902272250613822L),
23866: static_cast<T>(210.8242777515793458725097339207133627117L),
23866: static_cast<T>(2.506628274631000270164908177133837338626L)
23866: };
23866: static const boost::uint32_t denom[13] = {
23866: static_cast<boost::uint32_t>(0u),
23866: static_cast<boost::uint32_t>(39916800u),
23866: static_cast<boost::uint32_t>(120543840u),
23866: static_cast<boost::uint32_t>(150917976u),
23866: static_cast<boost::uint32_t>(105258076u),
23866: static_cast<boost::uint32_t>(45995730u),
23866: static_cast<boost::uint32_t>(13339535u),
23866: static_cast<boost::uint32_t>(2637558u),
23866: static_cast<boost::uint32_t>(357423u),
23866: static_cast<boost::uint32_t>(32670u),
23866: static_cast<boost::uint32_t>(1925u),
23866: static_cast<boost::uint32_t>(66u),
23866: static_cast<boost::uint32_t>(1u)
23866: };
23866: return boost::math::tools::evaluate_rational(num, denom, z);
23866: }
23866:
23866: template <class T>
23866: static T lanczos_sum_expG_scaled(const T& z)
23866: {
23866: static const T num[13] = {
23866: static_cast<T>(56906521.91347156388090791033559122686859L),
23866: static_cast<T>(103794043.1163445451906271053616070238554L),
23866: static_cast<T>(86363131.28813859145546927288977868422342L),
23866: static_cast<T>(43338889.32467613834773723740590533316085L),
23866: static_cast<T>(14605578.08768506808414169982791359218571L),
23866: static_cast<T>(3481712.15498064590882071018964774556468L),
23866: static_cast<T>(601859.6171681098786670226533699352302507L),
23866: static_cast<T>(75999.29304014542649875303443598909137092L),
23866: static_cast<T>(6955.999602515376140356310115515198987526L),
23866: static_cast<T>(449.9445569063168119446858607650988409623L),
23866: static_cast<T>(19.51992788247617482847860966235652136208L),
23866: static_cast<T>(0.5098416655656676188125178644804694509993L),
23866: static_cast<T>(0.006061842346248906525783753964555936883222L)
23866: };
23866: static const boost::uint32_t denom[13] = {
23866: static_cast<boost::uint32_t>(0u),
23866: static_cast<boost::uint32_t>(39916800u),
23866: static_cast<boost::uint32_t>(120543840u),
23866: static_cast<boost::uint32_t>(150917976u),
23866: static_cast<boost::uint32_t>(105258076u),
23866: static_cast<boost::uint32_t>(45995730u),
23866: static_cast<boost::uint32_t>(13339535u),
23866: static_cast<boost::uint32_t>(2637558u),
23866: static_cast<boost::uint32_t>(357423u),
23866: static_cast<boost::uint32_t>(32670u),
23866: static_cast<boost::uint32_t>(1925u),
23866: static_cast<boost::uint32_t>(66u),
23866: static_cast<boost::uint32_t>(1u)
23866: };
23866: return boost::math::tools::evaluate_rational(num, denom, z);
23866: }
23866:
23866:
23866: template<class T>
23866: static T lanczos_sum_near_1(const T& dz)
23866: {
23866: static const T d[12] = {
23866: static_cast<T>(2.208709979316623790862569924861841433016L),
23866: static_cast<T>(-3.327150580651624233553677113928873034916L),
23866: static_cast<T>(1.483082862367253753040442933770164111678L),
23866: static_cast<T>(-0.1993758927614728757314233026257810172008L),
23866: static_cast<T>(0.004785200610085071473880915854204301886437L),
23866: static_cast<T>(-0.1515973019871092388943437623825208095123e-5L),
23866: static_cast<T>(-0.2752907702903126466004207345038327818713e-7L),
23866: static_cast<T>(0.3075580174791348492737947340039992829546e-7L),
23866: static_cast<T>(-0.1933117898880828348692541394841204288047e-7L),
23866: static_cast<T>(0.8690926181038057039526127422002498960172e-8L),
23866: static_cast<T>(-0.2499505151487868335680273909354071938387e-8L),
23866: static_cast<T>(0.3394643171893132535170101292240837927725e-9L),
23866: };
23866: T result = 0;
23866: for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k)
23866: {
23866: result += (-d[k-1]*dz)/(k*dz + k*k);
23866: }
23866: return result;
23866: }
23866:
23866: template<class T>
23866: static T lanczos_sum_near_2(const T& dz)
23866: {
23866: static const T d[12] = {
23866: static_cast<T>(6.565936202082889535528455955485877361223L),
23866: static_cast<T>(-9.8907772644920670589288081640128194231L),
23866: static_cast<T>(4.408830289125943377923077727900630927902L),
23866: static_cast<T>(-0.5926941084905061794445733628891024027949L),
23866: static_cast<T>(0.01422519127192419234315002746252160965831L),
23866: static_cast<T>(-0.4506604409707170077136555010018549819192e-5L),
23866: static_cast<T>(-0.8183698410724358930823737982119474130069e-7L),
23866: static_cast<T>(0.9142922068165324132060550591210267992072e-7L),
23866: static_cast<T>(-0.5746670642147041587497159649318454348117e-7L),
23866: static_cast<T>(0.2583592566524439230844378948704262291927e-7L),
23866: static_cast<T>(-0.7430396708998719707642735577238449585822e-8L),
23866: static_cast<T>(0.1009141566987569892221439918230042368112e-8L),
23866: };
23866: T result = 0;
23866: T z = dz + 2;
23866: for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k)
23866: {
23866: result += (-d[k-1]*dz)/(z + k*z + k*k - 1);
23866: }
23866: return result;
23866: }
23866:
23866: static double g(){ return 6.024680040776729583740234375; }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: struct lanczos17m64 : public boost::integral_constant<int, 64>
23866: {
23866:
23866:
23866:
23866: template <class T>
23866: static T lanczos_sum(const T& z)
23866: {
23866: lanczos_initializer<lanczos17m64, T>::force_instantiate();
23866: static const T num[17] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 553681095419291969.2230556393350368550504L, "553681095419291969.2230556393350368550504", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 731918863887667017.2511276782146694632234L, "731918863887667017.2511276782146694632234", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 453393234285807339.4627124634539085143364L, "453393234285807339.4627124634539085143364", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 174701893724452790.3546219631779712198035L, "174701893724452790.3546219631779712198035", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 46866125995234723.82897281620357050883077L, "46866125995234723.82897281620357050883077", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9281280675933215.169109622777099699054272L, "9281280675933215.169109622777099699054272", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1403600894156674.551057997617468721789536L, "1403600894156674.551057997617468721789536", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 165345984157572.7305349809894046783973837L, "165345984157572.7305349809894046783973837", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 15333629842677.31531822808737907246817024L, "15333629842677.31531822808737907246817024", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1123152927963.956626161137169462874517318L, "1123152927963.956626161137169462874517318", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 64763127437.92329018717775593533620578237L, "64763127437.92329018717775593533620578237", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2908830362.657527782848828237106640944457L, "2908830362.657527782848828237106640944457", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 99764700.56999856729959383751710026787811L, "99764700.56999856729959383751710026787811", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2525791.604886139959837791244686290089331L, "2525791.604886139959837791244686290089331", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 44516.94034970167828580039370201346554872L, "44516.94034970167828580039370201346554872", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 488.0063567520005730476791712814838113252L, "488.0063567520005730476791712814838113252", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.50662827463100050241576877135758834683L, "2.50662827463100050241576877135758834683", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: static const boost::uint64_t denom[17] = {
23866: 0uLL,
23866: 1307674368000uLL,
23866: 4339163001600uLL,
23866: 6165817614720uLL,
23866: 5056995703824uLL,
23866: 2706813345600uLL,
23866: 1009672107080uLL,
23866: 272803210680uLL,
23866: 54631129553uLL,
23866: 8207628000uLL,
23866: 928095740uLL,
23866: 78558480uLL,
23866: 4899622uLL,
23866: 218400uLL,
23866: 6580uLL,
23866: 120uLL,
23866: 1uLL
23866: };
23866: return boost::math::tools::evaluate_rational(num, denom, z);
23866: }
23866:
23866: template <class T>
23866: static T lanczos_sum_expG_scaled(const T& z)
23866: {
23866: lanczos_initializer<lanczos17m64, T>::force_instantiate();
23866: static const T num[17] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2715894658327.717377557655133124376674911L, "2715894658327.717377557655133124376674911", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3590179526097.912105038525528721129550434L, "3590179526097.912105038525528721129550434", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2223966599737.814969312127353235818710172L, "2223966599737.814969312127353235818710172", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 856940834518.9562481809925866825485883417L, "856940834518.9562481809925866825485883417", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 229885871668.749072933597446453399395469L, "229885871668.749072933597446453399395469", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 45526171687.54610815813502794395753410032L, "45526171687.54610815813502794395753410032", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6884887713.165178784550917647709216424823L, "6884887713.165178784550917647709216424823", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 811048596.1407531864760282453852372777439L, "811048596.1407531864760282453852372777439", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 75213915.96540822314499613623119501704812L, "75213915.96540822314499613623119501704812", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5509245.417224265151697527957954952830126L, "5509245.417224265151697527957954952830126", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 317673.5368435419126714931842182369574221L, "317673.5368435419126714931842182369574221", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 14268.27989845035520147014373320337523596L, "14268.27989845035520147014373320337523596", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 489.3618720403263670213909083601787814792L, "489.3618720403263670213909083601787814792", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 12.38941330038454449295883217865458609584L, "12.38941330038454449295883217865458609584", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.2183627389504614963941574507281683147897L, "0.2183627389504614963941574507281683147897", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.002393749522058449186690627996063983095463L, "0.002393749522058449186690627996063983095463", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.1229541408909435212800785616808830746135e-4L, "0.1229541408909435212800785616808830746135e-4", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: static const boost::uint64_t denom[17] = {
23866: 0uLL,
23866: 1307674368000uLL,
23866: 4339163001600uLL,
23866: 6165817614720uLL,
23866: 5056995703824uLL,
23866: 2706813345600uLL,
23866: 1009672107080uLL,
23866: 272803210680uLL,
23866: 54631129553uLL,
23866: 8207628000uLL,
23866: 928095740uLL,
23866: 78558480uLL,
23866: 4899622uLL,
23866: 218400uLL,
23866: 6580uLL,
23866: 120uLL,
23866: 1uLL
23866: };
23866: return boost::math::tools::evaluate_rational(num, denom, z);
23866: }
23866:
23866:
23866: template<class T>
23866: static T lanczos_sum_near_1(const T& dz)
23866: {
23866: lanczos_initializer<lanczos17m64, T>::force_instantiate();
23866: static const T d[16] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.493645054286536365763334986866616581265L, "4.493645054286536365763334986866616581265", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -16.95716370392468543800733966378143997694L, "-16.95716370392468543800733966378143997694", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 26.19196892983737527836811770970479846644L, "26.19196892983737527836811770970479846644", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -21.3659076437988814488356323758179283908L, "-21.3659076437988814488356323758179283908", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.913992596774556590710751047594507535764L, "9.913992596774556590710751047594507535764", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.62888300018780199210536267080940382158L, "-2.62888300018780199210536267080940382158", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.3807056693542503606384861890663080735588L, "0.3807056693542503606384861890663080735588", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.02714647489697685807340312061034730486958L, "-0.02714647489697685807340312061034730486958", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.0007815484715461206757220527133967191796747L, "0.0007815484715461206757220527133967191796747", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.6108630817371501052576880554048972272435e-5L, "-0.6108630817371501052576880554048972272435e-5", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.5037380238864836824167713635482801545086e-8L, "0.5037380238864836824167713635482801545086e-8", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.1483232144262638814568926925964858237006e-13L, "-0.1483232144262638814568926925964858237006e-13", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.1346609158752142460943888149156716841693e-14L, "0.1346609158752142460943888149156716841693e-14", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.660492688923978805315914918995410340796e-15L, "-0.660492688923978805315914918995410340796e-15", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.1472114697343266749193617793755763792681e-15L, "0.1472114697343266749193617793755763792681e-15", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.1410901942033374651613542904678399264447e-16L, "-0.1410901942033374651613542904678399264447e-16", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: };
23866: T result = 0;
23866: for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k)
23866: {
23866: result += (-d[k-1]*dz)/(k*dz + k*k);
23866: }
23866: return result;
23866: }
23866:
23866: template<class T>
23866: static T lanczos_sum_near_2(const T& dz)
23866: {
23866: lanczos_initializer<lanczos17m64, T>::force_instantiate();
23866: static const T d[16] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 23.56409085052261327114594781581930373708L, "23.56409085052261327114594781581930373708", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -88.92116338946308797946237246006238652361L, "-88.92116338946308797946237246006238652361", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 137.3472822086847596961177383569603988797L, "137.3472822086847596961177383569603988797", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -112.0400438263562152489272966461114852861L, "-112.0400438263562152489272966461114852861", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 51.98768915202973863076166956576777843805L, "51.98768915202973863076166956576777843805", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -13.78552090862799358221343319574970124948L, "-13.78552090862799358221343319574970124948", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.996371068830872830250406773917646121742L, "1.996371068830872830250406773917646121742", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.1423525874909934506274738563671862576161L, "-0.1423525874909934506274738563671862576161", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.004098338646046865122459664947239111298524L, "0.004098338646046865122459664947239111298524", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.3203286637326511000882086573060433529094e-4L, "-0.3203286637326511000882086573060433529094e-4", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.2641536751640138646146395939004587594407e-7L, "0.2641536751640138646146395939004587594407e-7", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.7777876663062235617693516558976641009819e-13L, "-0.7777876663062235617693516558976641009819e-13", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.7061443477097101636871806229515157914789e-14L, "0.7061443477097101636871806229515157914789e-14", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.3463537849537988455590834887691613484813e-14L, "-0.3463537849537988455590834887691613484813e-14", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.7719578215795234036320348283011129450595e-15L, "0.7719578215795234036320348283011129450595e-15", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.7398586479708476329563577384044188912075e-16L, "-0.7398586479708476329563577384044188912075e-16", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((64 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: };
23866: T result = 0;
23866: T z = dz + 2;
23866: for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k)
23866: {
23866: result += (-d[k-1]*dz)/(z + k*z + k*k - 1);
23866: }
23866: return result;
23866: }
23866:
23866: static double g(){ return 12.2252227365970611572265625; }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: struct lanczos24m113 : public boost::integral_constant<int, 113>
23866: {
23866:
23866:
23866:
23866: template <class T>
23866: static T lanczos_sum(const T& z)
23866: {
23866: lanczos_initializer<lanczos24m113, T>::force_instantiate();
23866: static const T num[24] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2029889364934367661624137213253.22102954656825019111612712252027267955023987678816620961507L, "2029889364934367661624137213253.22102954656825019111612712252027267955023987678816620961507", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2338599599286656537526273232565.2727349714338768161421882478417543004440597874814359063158L, "2338599599286656537526273232565.2727349714338768161421882478417543004440597874814359063158", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1288527989493833400335117708406.3953711906175960449186720680201425446299360322830739180195L, "1288527989493833400335117708406.3953711906175960449186720680201425446299360322830739180195", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 451779745834728745064649902914.550539158066332484594436145043388809847364393288132164411521L, "451779745834728745064649902914.550539158066332484594436145043388809847364393288132164411521", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 113141284461097964029239556815.291212318665536114012605167994061291631013303788706545334708L, "113141284461097964029239556815.291212318665536114012605167994061291631013303788706545334708", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 21533689802794625866812941616.7509064680880468667055339259146063256555368135236149614592432L, "21533689802794625866812941616.7509064680880468667055339259146063256555368135236149614592432", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3235510315314840089932120340.71494940111731241353655381919722177496659303550321056514776757L, "3235510315314840089932120340.71494940111731241353655381919722177496659303550321056514776757", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 393537392344185475704891959.081297108513472083749083165179784098220158201055270548272414314L, "393537392344185475704891959.081297108513472083749083165179784098220158201055270548272414314", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 39418265082950435024868801.5005452240816902251477336582325944930252142622315101857742955673L, "39418265082950435024868801.5005452240816902251477336582325944930252142622315101857742955673", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3290158764187118871697791.05850632319194734270969161036889516414516566453884272345518372696L, "3290158764187118871697791.05850632319194734270969161036889516414516566453884272345518372696", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 230677110449632078321772.618245845856640677845629174549731890660612368500786684333975350954L, "230677110449632078321772.618245845856640677845629174549731890660612368500786684333975350954", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 13652233645509183190158.5916189185218250859402806777406323001463296297553612462737044693697L, "13652233645509183190158.5916189185218250859402806777406323001463296297553612462737044693697", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 683661466754325350495.216655026531202476397782296585200982429378069417193575896602446904762L, "683661466754325350495.216655026531202476397782296585200982429378069417193575896602446904762", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 28967871782219334117.0122379171041074970463982134039409352925258212207710168851968215545064L, "28967871782219334117.0122379171041074970463982134039409352925258212207710168851968215545064", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1036104088560167006.2022834098572346459442601718514554488352117620272232373622553429728555L, "1036104088560167006.2022834098572346459442601718514554488352117620272232373622553429728555", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 31128490785613152.8380102669349814751268126141105475287632676569913936040772990253369753962L, "31128490785613152.8380102669349814751268126141105475287632676569913936040772990253369753962", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 779327504127342.536207878988196814811198475410572992436243686674896894543126229424358472541L, "779327504127342.536207878988196814811198475410572992436243686674896894543126229424358472541", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 16067543181294.643350688789124777020407337133926174150582333950666044399234540521336771876L, "16067543181294.643350688789124777020407337133926174150582333950666044399234540521336771876", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 268161795520.300916569439413185778557212729611517883948634711190170998896514639936969855484L, "268161795520.300916569439413185778557212729611517883948634711190170998896514639936969855484", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3533216359.10528191668842486732408440112703691790824611391987708562111396961696753452085068L, "3533216359.10528191668842486732408440112703691790824611391987708562111396961696753452085068", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 35378979.5479656110614685178752543826919239614088343789329169535932709470588426584501652577L, "35378979.5479656110614685178752543826919239614088343789329169535932709470588426584501652577", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 253034.881362204346444503097491737872930637147096453940375713745904094735506180552724766444L, "253034.881362204346444503097491737872930637147096453940375713745904094735506180552724766444", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1151.61895453463992438325318456328526085882924197763140514450975619271382783957699017875304L, "1151.61895453463992438325318456328526085882924197763140514450975619271382783957699017875304", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.50662827463100050241576528481104515966515623051532908941425544355490413900497467936202516L, "2.50662827463100050241576528481104515966515623051532908941425544355490413900497467936202516", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: static const T denom[24] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.0L, "0.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.112400072777760768e22L, "0.112400072777760768e22", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.414847677933545472e22L, "0.414847677933545472e22", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6756146673770930688000.0L, "6756146673770930688000.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6548684852703068697600.0L, "6548684852703068697600.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4280722865357147142912.0L, "4280722865357147142912.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2021687376910682741568.0L, "2021687376910682741568.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 720308216440924653696.0L, "720308216440924653696.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 199321978221066137360.0L, "199321978221066137360.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 43714229649594412832.0L, "43714229649594412832.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7707401101297361068.0L, "7707401101297361068.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1103230881185949736.0L, "1103230881185949736.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 129006659818331295.0L, "129006659818331295.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 12363045847086207.0L, "12363045847086207.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 971250460939913.0L, "971250460939913.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 62382416421941.0L, "62382416421941.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3256091103430.0L, "3256091103430.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 136717357942.0L, "136717357942.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4546047198.0L, "4546047198.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 116896626.0L, "116896626.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2240315.0L, "2240315.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 30107.0L, "30107.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 253.0L, "253.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0L, "1.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: return boost::math::tools::evaluate_rational(num, denom, z);
23866: }
23866:
23866: template <class T>
23866: static T lanczos_sum_expG_scaled(const T& z)
23866: {
23866: lanczos_initializer<lanczos24m113, T>::force_instantiate();
23866: static const T num[24] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3035162425359883494754.02878223286972654682199012688209026810841953293372712802258398358538L, "3035162425359883494754.02878223286972654682199012688209026810841953293372712802258398358538", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3496756894406430103600.16057175075063458536101374170860226963245118484234495645518505519827L, "3496756894406430103600.16057175075063458536101374170860226963245118484234495645518505519827", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1926652656689320888654.01954015145958293168365236755537645929361841917596501251362171653478L, "1926652656689320888654.01954015145958293168365236755537645929361841917596501251362171653478", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 675517066488272766316.083023742440619929434602223726894748181327187670231286180156444871912L, "675517066488272766316.083023742440619929434602223726894748181327187670231286180156444871912", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 169172853104918752780.086262749564831660238912144573032141700464995906149421555926000038492L, "169172853104918752780.086262749564831660238912144573032141700464995906149421555926000038492", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 32197935167225605785.6444116302160245528783954573163541751756353183343357329404208062043808L, "32197935167225605785.6444116302160245528783954573163541751756353183343357329404208062043808", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4837849542714083249.37587447454818124327561966323276633775195138872820542242539845253171632L, "4837849542714083249.37587447454818124327561966323276633775195138872820542242539845253171632", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 588431038090493242.308438203986649553459461798968819276505178004064031201740043314534404158L, "588431038090493242.308438203986649553459461798968819276505178004064031201740043314534404158", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 58939585141634058.6206417889192563007809470547755357240808035714047014324843817783741669733L, "58939585141634058.6206417889192563007809470547755357240808035714047014324843817783741669733", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4919561837722192.82991866530802080996138070630296720420704876654726991998309206256077395868L, "4919561837722192.82991866530802080996138070630296720420704876654726991998309206256077395868", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 344916580244240.407442753122831512004021081677987651622305356145640394384006997569631719101L, "344916580244240.407442753122831512004021081677987651622305356145640394384006997569631719101", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 20413302960687.8250598845969238472629322716685686993835561234733641729957841485003560103066L, "20413302960687.8250598845969238472629322716685686993835561234733641729957841485003560103066", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1022234822943.78400752460970689311934727763870970686747383486600540378889311406851534545789L, "1022234822943.78400752460970689311934727763870970686747383486600540378889311406851534545789", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 43313787191.9821354846952908076307094286897439975815501673706144217246093900159173598852503L, "43313787191.9821354846952908076307094286897439975815501673706144217246093900159173598852503", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1549219505.59667418528481770869280437577581951167003505825834192510436144666564648361001914L, "1549219505.59667418528481770869280437577581951167003505825834192510436144666564648361001914", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 46544421.1998761919380541579358096705925369145324466147390364674998568485110045455014967149L, "46544421.1998761919380541579358096705925369145324466147390364674998568485110045455014967149", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1165278.06807504975090675074910052763026564833951579556132777702952882101173607903881127542L, "1165278.06807504975090675074910052763026564833951579556132777702952882101173607903881127542", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 24024.759267256769471083727721827405338569868270177779485912486668586611981795179894572115L, "24024.759267256769471083727721827405338569868270177779485912486668586611981795179894572115", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 400.965008113421955824358063769761286758463521789765880962939528760888853281920872064838918L, "400.965008113421955824358063769761286758463521789765880962939528760888853281920872064838918", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.28299015654478269617039029170846385138134929147421558771949982217659507918482272439717603L, "5.28299015654478269617039029170846385138134929147421558771949982217659507918482272439717603", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.0528999024412510102409256676599360516359062802002483877724963720047531347449011629466149805L, "0.0528999024412510102409256676599360516359062802002483877724963720047531347449011629466149805", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.000378346710654740685454266569593414561162134092347356968516522170279688139165340746957511115L, "0.000378346710654740685454266569593414561162134092347356968516522170279688139165340746957511115", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.172194142179211139195966608011235161516824700287310869949928393345257114743230967204370963e-5L, "0.172194142179211139195966608011235161516824700287310869949928393345257114743230967204370963e-5", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.374799931707148855771381263542708435935402853962736029347951399323367765509988401336565436e-8L, "0.374799931707148855771381263542708435935402853962736029347951399323367765509988401336565436e-8", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: static const T denom[24] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.0L, "0.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.112400072777760768e22L, "0.112400072777760768e22", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.414847677933545472e22L, "0.414847677933545472e22", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6756146673770930688000.0L, "6756146673770930688000.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6548684852703068697600.0L, "6548684852703068697600.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4280722865357147142912.0L, "4280722865357147142912.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2021687376910682741568.0L, "2021687376910682741568.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 720308216440924653696.0L, "720308216440924653696.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 199321978221066137360.0L, "199321978221066137360.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 43714229649594412832.0L, "43714229649594412832.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7707401101297361068.0L, "7707401101297361068.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1103230881185949736.0L, "1103230881185949736.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 129006659818331295.0L, "129006659818331295.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 12363045847086207.0L, "12363045847086207.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 971250460939913.0L, "971250460939913.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 62382416421941.0L, "62382416421941.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3256091103430.0L, "3256091103430.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 136717357942.0L, "136717357942.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4546047198.0L, "4546047198.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 116896626.0L, "116896626.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2240315.0L, "2240315.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 30107.0L, "30107.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 253.0L, "253.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0L, "1.0", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: return boost::math::tools::evaluate_rational(num, denom, z);
23866: }
23866:
23866:
23866: template<class T>
23866: static T lanczos_sum_near_1(const T& dz)
23866: {
23866: lanczos_initializer<lanczos24m113, T>::force_instantiate();
23866: static const T d[23] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.4734083002469026177867421609938203388868806387315406134072298925733950040583068760685908L, "7.4734083002469026177867421609938203388868806387315406134072298925733950040583068760685908", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -50.4225805042247530267317342133388132970816607563062253708655085754357843064134941138154171L, "-50.4225805042247530267317342133388132970816607563062253708655085754357843064134941138154171", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 152.288200621747008570784082624444625293884063492396162110698238568311211546361189979357019L, "152.288200621747008570784082624444625293884063492396162110698238568311211546361189979357019", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -271.894959539150384169327513139846971255640842175739337449692360299099322742181325023644769L, "-271.894959539150384169327513139846971255640842175739337449692360299099322742181325023644769", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 319.240102980202312307047586791116902719088581839891008532114107693294261542869734803906793L, "319.240102980202312307047586791116902719088581839891008532114107693294261542869734803906793", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -259.493144143048088289689500935518073716201741349569864988870534417890269467336454358361499L, "-259.493144143048088289689500935518073716201741349569864988870534417890269467336454358361499", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 149.747518319689708813209645403067832020714660918583227716408482877303972685262557460145835L, "149.747518319689708813209645403067832020714660918583227716408482877303972685262557460145835", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -61.9261301009341333289187201425188698128684426428003249782448828881580630606817104372760037L, "-61.9261301009341333289187201425188698128684426428003249782448828881580630606817104372760037", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 18.3077524177286961563937379403377462608113523887554047531153187277072451294845795496072365L, "18.3077524177286961563937379403377462608113523887554047531153187277072451294845795496072365", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.82011322251948043097070160584761236869363471824695092089556195047949392738162970152230254L, "-3.82011322251948043097070160584761236869363471824695092089556195047949392738162970152230254", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.549382685505691522516705902336780999493262538301283190963770663549981309645795228539620711L, "0.549382685505691522516705902336780999493262538301283190963770663549981309645795228539620711", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.0524814679715180697633723771076668718265358076235229045603747927518423453658004287459638024L, "-0.0524814679715180697633723771076668718265358076235229045603747927518423453658004287459638024", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.00315392664003333528534120626687784812050217700942910879712808180705014754163256855643360698L, "0.00315392664003333528534120626687784812050217700942910879712808180705014754163256855643360698", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.000110098373127648510519799564665442121339511198561008748083409549601095293123407080388658329L, "-0.000110098373127648510519799564665442121339511198561008748083409549601095293123407080388658329", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.19809382866681658224945717689377373458866950897791116315219376038432014207446832310901893e-5L, "0.19809382866681658224945717689377373458866950897791116315219376038432014207446832310901893e-5", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.152278977408600291408265615203504153130482270424202400677280558181047344681214058227949755e-7L, "-0.152278977408600291408265615203504153130482270424202400677280558181047344681214058227949755e-7", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.364344768076106268872239259083188037615571711218395765792787047015406264051536972018235217e-10L, "0.364344768076106268872239259083188037615571711218395765792787047015406264051536972018235217e-10", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.148897510480440424971521542520683536298361220674662555578951242811522959610991621951203526e-13L, "-0.148897510480440424971521542520683536298361220674662555578951242811522959610991621951203526e-13", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.261199241161582662426512749820666625442516059622425213340053324061794752786482115387573582e-18L, "0.261199241161582662426512749820666625442516059622425213340053324061794752786482115387573582e-18", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.780072664167099103420998436901014795601783313858454665485256897090476089641613851903791529e-24L, "-0.780072664167099103420998436901014795601783313858454665485256897090476089641613851903791529e-24", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.303465867587106629530056603454807425512962762653755513440561256044986695349304176849392735e-24L, "0.303465867587106629530056603454807425512962762653755513440561256044986695349304176849392735e-24", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.615420597971283870342083342286977366161772327800327789325710571275345878439656918541092056e-25L, "-0.615420597971283870342083342286977366161772327800327789325710571275345878439656918541092056e-25", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.499641233843540749369110053005439398774706583601830828776209650445427083113181961630763702e-26L, "0.499641233843540749369110053005439398774706583601830828776209650445427083113181961630763702e-26", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: };
23866: T result = 0;
23866: for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k)
23866: {
23866: result += (-d[k-1]*dz)/(k*dz + k*k);
23866: }
23866: return result;
23866: }
23866:
23866: template<class T>
23866: static T lanczos_sum_near_2(const T& dz)
23866: {
23866: lanczos_initializer<lanczos24m113, T>::force_instantiate();
23866: static const T d[23] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 61.4165001061101455341808888883960361969557848005400286332291451422461117307237198559485365L, "61.4165001061101455341808888883960361969557848005400286332291451422461117307237198559485365", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -414.372973678657049667308134761613915623353625332248315105320470271523320700386200587519147L, "-414.372973678657049667308134761613915623353625332248315105320470271523320700386200587519147", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1251.50505818554680171298972755376376836161706773644771875668053742215217922228357204561873L, "1251.50505818554680171298972755376376836161706773644771875668053742215217922228357204561873", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2234.43389421602399514176336175766511311493214354568097811220122848998413358085613880612158L, "-2234.43389421602399514176336175766511311493214354568097811220122848998413358085613880612158", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2623.51647746991904821899989145639147785427273427135380151752779100215839537090464785708684L, "2623.51647746991904821899989145639147785427273427135380151752779100215839537090464785708684", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2132.51572435428751962745870184529534443305617818870214348386131243463614597272260797772423L, "-2132.51572435428751962745870184529534443305617818870214348386131243463614597272260797772423", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1230.62572059218405766499842067263311220019173335523810725664442147670956427061920234820189L, "1230.62572059218405766499842067263311220019173335523810725664442147670956427061920234820189", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -508.90919151163744999377586956023909888833335885805154492270846381061182696305011395981929L, "-508.90919151163744999377586956023909888833335885805154492270846381061182696305011395981929", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 150.453184562246579758706538566480316921938628645961177699894388251635886834047343195475395L, "150.453184562246579758706538566480316921938628645961177699894388251635886834047343195475395", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -31.3937061525822497422230490071156186113405446381476081565548185848237169870395131828731397L, "-31.3937061525822497422230490071156186113405446381476081565548185848237169870395131828731397", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.51482916590287954234936829724231512565732528859217337795452389161322923867318809206313688L, "4.51482916590287954234936829724231512565732528859217337795452389161322923867318809206313688", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.431292919341108177524462194102701868233551186625103849565527515201492276412231365776131952L, "-0.431292919341108177524462194102701868233551186625103849565527515201492276412231365776131952", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.0259189820815586225636729971503340447445001375909094681698918294680345547092233915092128323L, "0.0259189820815586225636729971503340447445001375909094681698918294680345547092233915092128323", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.000904788882557558697594884691337532557729219389814315972435534723829065673966567231504429712L, "-0.000904788882557558697594884691337532557729219389814315972435534723829065673966567231504429712", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.162793589759218213439218473348810982422449144393340433592232065020562974405674317564164312e-4L, "0.162793589759218213439218473348810982422449144393340433592232065020562974405674317564164312e-4", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.125142926178202562426432039899709511761368233479483128438847484617555752948755923647214487e-6L, "-0.125142926178202562426432039899709511761368233479483128438847484617555752948755923647214487e-6", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.299418680048132583204152682950097239197934281178261879500770485862852229898797687301941982e-9L, "0.299418680048132583204152682950097239197934281178261879500770485862852229898797687301941982e-9", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.122364035267809278675627784883078206654408225276233049012165202996967011873995261617995421e-12L, "-0.122364035267809278675627784883078206654408225276233049012165202996967011873995261617995421e-12", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.21465364366598631597052073538883430194257709353929022544344097235100199405814005393447785e-17L, "0.21465364366598631597052073538883430194257709353929022544344097235100199405814005393447785e-17", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.641064035802907518396608051803921688237330857546406669209280666066685733941549058513986818e-23L, "-0.641064035802907518396608051803921688237330857546406669209280666066685733941549058513986818e-23", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.249388374622173329690271566855185869111237201309011956145463506483151054813346819490278951e-23L, "0.249388374622173329690271566855185869111237201309011956145463506483151054813346819490278951e-23", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -0.505752900177513489906064295001851463338022055787536494321532352380960774349054239257683149e-24L, "-0.505752900177513489906064295001851463338022055787536494321532352380960774349054239257683149e-24", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.410605371184590959139968810080063542546949719163227555918846829816144878123034347778284006e-25L, "0.410605371184590959139968810080063542546949719163227555918846829816144878123034347778284006e-25", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((113 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: };
23866: T result = 0;
23866: T z = dz + 2;
23866: for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k)
23866: {
23866: result += (-d[k-1]*dz)/(z + k*z + k*k - 1);
23866: }
23866: return result;
23866: }
23866:
23866: static double g(){ return 20.3209821879863739013671875; }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: struct lanczos32MP : public boost::integral_constant<int, 134>
23866: {
23866: template <class T>
23866: static T lanczos_sum(const T& z)
23866: {
23866: static const T num[32] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.5570588792269726580426965328821299006241260e+42L, "1.5570588792269726580426965328821299006241260e+42", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.1774633762992816326945208100096848962840570e+42L, "2.1774633762992816326945208100096848962840570e+42", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.4729248542870148408945035000721777267825674e+42L, "1.4729248542870148408945035000721777267825674e+42", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.4187209355291098195390045608656819929546438e+41L, "6.4187209355291098195390045608656819929546438e+41", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.0248306413899929430368029054268103901281039e+41L, "2.0248306413899929430368029054268103901281039e+41", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.9257678361460200143521812997589499752976231e+40L, "4.9257678361460200143521812997589499752976231e+40", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.6124719365239930504906027891035869583753288e+39L, "9.6124719365239930504906027891035869583753288e+39", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.5454747713027643957043517109001371929077089e+39L, "1.5454747713027643957043517109001371929077089e+39", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.0864696676761302003121425399683010735367223e+38L, "2.0864696676761302003121425399683010735367223e+38", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.3986590841584046388095075457448938071498037e+37L, "2.3986590841584046388095075457448938071498037e+37", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.3730272176307717941787236450736722205208718e+36L, "2.3730272176307717941787236450736722205208718e+36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.0364763054036420066290166982737191399230330e+35L, "2.0364763054036420066290166982737191399230330e+35", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.5251577656813796428428395564637209124879141e+34L, "1.5251577656813796428428395564637209124879141e+34", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0012588845037002389721073745460292782912025e+33L, "1.0012588845037002389721073745460292782912025e+33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.7802279869271138404361989987596881149322644e+31L, "5.7802279869271138404361989987596881149322644e+31", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.9402720678039082125732480764868685957396877e+30L, "2.9402720678039082125732480764868685957396877e+30", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.3191712125257631604053220568076491847333218e+29L, "1.3191712125257631604053220568076491847333218e+29", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.2201606453728489193256459039591784247070127e+27L, "5.2201606453728489193256459039591784247070127e+27", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.8201383870559727838136908091985005180163020e+26L, "1.8201383870559727838136908091985005180163020e+26", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.5806105013691586921928194185346247254008596e+24L, "5.5806105013691586921928194185346247254008596e+24", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.4998261429327606587262540663611193050275961e+23L, "1.4998261429327606587262540663611193050275961e+23", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.5175518216952441498193267690845732518664615e+21L, "3.5175518216952441498193267690845732518664615e+21", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.1558306683405617426954019692046993902758157e+19L, "7.1558306683405617426954019692046993902758157e+19", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2526529449739780296036175515849964203851625e+18L, "1.2526529449739780296036175515849964203851625e+18", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.8671408513624251160128760408315369701624440e+16L, "1.8671408513624251160128760408315369701624440e+16", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.3367482193223363697833634493247948824157616e+14L, "2.3367482193223363697833634493247948824157616e+14", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.4092037586229976036163287167214501623150351e+12L, "2.4092037586229976036163287167214501623150351e+12", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.9923609136198492516415716991452463530279321e+10L, "1.9923609136198492516415716991452463530279321e+10", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2704580842864713292739934791084236962038214e+08L, "1.2704580842864713292739934791084236962038214e+08", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.8637257952414489194330242306329389356743799e+05L, "5.8637257952414489194330242306329389356743799e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.7432900891411285513294395078026439443163899e+03L, "1.7432900891411285513294395078026439443163899e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.5066282746310005024157652848110452530069853e+00L, "2.5066282746310005024157652848110452530069853e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: static const T denom[32] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.0000000000000000000000000000000000000000000e+00L, "0.0000000000000000000000000000000000000000000e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.6525285981219105863630848000000000000000000e+32L, "2.6525285981219105863630848000000000000000000e+32", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0596817613895338599493271552000000000000000e+33L, "1.0596817613895338599493271552000000000000000e+33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.9028937852409282099982165606400000000000000e+33L, "1.9028937852409282099982165606400000000000000e+33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.0707922020245946836608666419200000000000000e+33L, "2.0707922020245946836608666419200000000000000e+33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.5477949752547197371117812531200000000000000e+33L, "1.5477949752547197371117812531200000000000000e+33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.5189988850542311250318425141248000000000000e+32L, "8.5189988850542311250318425141248000000000000e+32", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.6093078815883681280561453887897600000000000e+32L, "3.6093078815883681280561453887897600000000000e+32", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2136536667474513652307465210240000000000000e+32L, "1.2136536667474513652307465210240000000000000e+32", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.3114629767614997850763390570240000000000000e+31L, "3.3114629767614997850763390570240000000000000e+31", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.4541614716906607001396551577600000000000000e+30L, "7.4541614716906607001396551577600000000000000e+30", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.4019376240868075016911422397440000000000000e+30L, "1.4019376240868075016911422397440000000000000e+30", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.2245742324696206305840307600000000000000000e+29L, "2.2245742324696206305840307600000000000000000e+29", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.0006513636556697864066736800000000000000000e+28L, "3.0006513636556697864066736800000000000000000e+28", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.4602661104938986779113940000000000000000000e+27L, "3.4602661104938986779113940000000000000000000e+27", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.4256361393293766065270064000000000000000000e+26L, "3.4256361393293766065270064000000000000000000e+26", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.9197210605623737977801375000000000000000000e+25L, "2.9197210605623737977801375000000000000000000e+25", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.1458832493345014521397750000000000000000000e+24L, "2.1458832493345014521397750000000000000000000e+24", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.3605580871196332287117500000000000000000000e+23L, "1.3605580871196332287117500000000000000000000e+23", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.4359416261117272348550000000000000000000000e+21L, "7.4359416261117272348550000000000000000000000e+21", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.4960054586805754087500000000000000000000000e+20L, "3.4960054586805754087500000000000000000000000e+20", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.4090257524223082475000000000000000000000000e+19L, "1.4090257524223082475000000000000000000000000e+19", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.8433867667953267500000000000000000000000000e+17L, "4.8433867667953267500000000000000000000000000e+17", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.4097793282984515000000000000000000000000000e+16L, "1.4097793282984515000000000000000000000000000e+16", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.4409270792812500000000000000000000000000000e+14L, "3.4409270792812500000000000000000000000000000e+14", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.9491892473250000000000000000000000000000000e+12L, "6.9491892473250000000000000000000000000000000e+12", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1400943144500000000000000000000000000000000e+11L, "1.1400943144500000000000000000000000000000000e+11", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.4803212690000000000000000000000000000000000e+09L, "1.4803212690000000000000000000000000000000000e+09", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.4631225000000000000000000000000000000000000e+07L, "1.4631225000000000000000000000000000000000000e+07", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0338500000000000000000000000000000000000000e+05L, "1.0338500000000000000000000000000000000000000e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.6500000000000000000000000000000000000000000e+02L, "4.6500000000000000000000000000000000000000000e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0000000000000000000000000000000000000000000e+00L, "1.0000000000000000000000000000000000000000000e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: return boost::math::tools::evaluate_rational(num, denom, z);
23866: }
23866:
23866: template <class T>
23866: static T lanczos_sum_expG_scaled(const T& z)
23866: {
23866: static const T num[32] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.3676354398462675075959984137356365580662550e+32L, "7.3676354398462675075959984137356365580662550e+32", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0303243219777652371982632367487187515581930e+33L, "1.0303243219777652371982632367487187515581930e+33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.9695330738315109132895792451395673621363046e+32L, "6.9695330738315109132895792451395673621363046e+32", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.0371873841126513851737915789350097633065208e+32L, "3.0371873841126513851737915789350097633065208e+32", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.5810211111592336765499877083050083223251925e+31L, "9.5810211111592336765499877083050083223251925e+31", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.3307571834445765987280306477823996158240302e+31L, "2.3307571834445765987280306477823996158240302e+31", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.5483950445870222746510194590139013118104375e+30L, "4.5483950445870222746510194590139013118104375e+30", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.3128221728465167159919234074383914011057504e+29L, "7.3128221728465167159919234074383914011057504e+29", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.8726824481851158990505892727571391497920715e+28L, "9.8726824481851158990505892727571391497920715e+28", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1349889148269349577271512140093856701260605e+28L, "1.1349889148269349577271512140093856701260605e+28", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1228605200219708164439121714303738845598879e+27L, "1.1228605200219708164439121714303738845598879e+27", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.6361256470584159095341545227609851733775758e+25L, "9.6361256470584159095341545227609851733775758e+25", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.2166868932853575755146911619588166896783547e+24L, "7.2166868932853575755146911619588166896783547e+24", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.7377209303689212354445666628772172811909754e+23L, "4.7377209303689212354445666628772172811909754e+23", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.7350675774071094836814884499810988826239303e+22L, "2.7350675774071094836814884499810988826239303e+22", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.3912674066825924538916027148038869739001663e+21L, "1.3912674066825924538916027148038869739001663e+21", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.2420070983154004111449116807024523016395065e+19L, "6.2420070983154004111449116807024523016395065e+19", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.4700569185690640515452949188152438288912426e+18L, "2.4700569185690640515452949188152438288912426e+18", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.6124656329989777592191745322776627796111867e+16L, "8.6124656329989777592191745322776627796111867e+16", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.6406132905056437989704993228158312134178284e+15L, "2.6406132905056437989704993228158312134178284e+15", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.0968236279962512789710882617045613206867906e+13L, "7.0968236279962512789710882617045613206867906e+13", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.6644225731453470304909038926424696324288813e+12L, "1.6644225731453470304909038926424696324288813e+12", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.3859703275819088757835059385783332958674837e+10L, "3.3859703275819088757835059385783332958674837e+10", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.9272583422150418041465884118526583443207265e+08L, "5.9272583422150418041465884118526583443207265e+08", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.8348702102467259218213323557081872404861389e+06L, "8.8348702102467259218213323557081872404861389e+06", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1056941535328594779262418139203368431235554e+05L, "1.1056941535328594779262418139203368431235554e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1399784061251411774918201133708617903068477e+03L, "1.1399784061251411774918201133708617903068477e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.4273820161750809875685215118516360445304050e+00L, "9.4273820161750809875685215118516360445304050e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.0115080627363704378364976159119115750197259e-02L, "6.0115080627363704378364976159119115750197259e-02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.7745767713042344487490571988087795152219347e-04L, "2.7745767713042344487490571988087795152219347e-04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.2488376091888795863984895909744485000401866e-07L, "8.2488376091888795863984895909744485000401866e-07", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1860773896913111295543391748504025973928588e-09L, "1.1860773896913111295543391748504025973928588e-09", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: static const T denom[32] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.0000000000000000000000000000000000000000000e+00L, "0.0000000000000000000000000000000000000000000e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.6525285981219105863630848000000000000000000e+32L, "2.6525285981219105863630848000000000000000000e+32", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0596817613895338599493271552000000000000000e+33L, "1.0596817613895338599493271552000000000000000e+33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.9028937852409282099982165606400000000000000e+33L, "1.9028937852409282099982165606400000000000000e+33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.0707922020245946836608666419200000000000000e+33L, "2.0707922020245946836608666419200000000000000e+33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.5477949752547197371117812531200000000000000e+33L, "1.5477949752547197371117812531200000000000000e+33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.5189988850542311250318425141248000000000000e+32L, "8.5189988850542311250318425141248000000000000e+32", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.6093078815883681280561453887897600000000000e+32L, "3.6093078815883681280561453887897600000000000e+32", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2136536667474513652307465210240000000000000e+32L, "1.2136536667474513652307465210240000000000000e+32", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.3114629767614997850763390570240000000000000e+31L, "3.3114629767614997850763390570240000000000000e+31", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.4541614716906607001396551577600000000000000e+30L, "7.4541614716906607001396551577600000000000000e+30", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.4019376240868075016911422397440000000000000e+30L, "1.4019376240868075016911422397440000000000000e+30", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.2245742324696206305840307600000000000000000e+29L, "2.2245742324696206305840307600000000000000000e+29", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.0006513636556697864066736800000000000000000e+28L, "3.0006513636556697864066736800000000000000000e+28", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.4602661104938986779113940000000000000000000e+27L, "3.4602661104938986779113940000000000000000000e+27", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.4256361393293766065270064000000000000000000e+26L, "3.4256361393293766065270064000000000000000000e+26", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.9197210605623737977801375000000000000000000e+25L, "2.9197210605623737977801375000000000000000000e+25", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.1458832493345014521397750000000000000000000e+24L, "2.1458832493345014521397750000000000000000000e+24", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.3605580871196332287117500000000000000000000e+23L, "1.3605580871196332287117500000000000000000000e+23", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.4359416261117272348550000000000000000000000e+21L, "7.4359416261117272348550000000000000000000000e+21", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.4960054586805754087500000000000000000000000e+20L, "3.4960054586805754087500000000000000000000000e+20", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.4090257524223082475000000000000000000000000e+19L, "1.4090257524223082475000000000000000000000000e+19", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.8433867667953267500000000000000000000000000e+17L, "4.8433867667953267500000000000000000000000000e+17", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.4097793282984515000000000000000000000000000e+16L, "1.4097793282984515000000000000000000000000000e+16", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.4409270792812500000000000000000000000000000e+14L, "3.4409270792812500000000000000000000000000000e+14", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.9491892473250000000000000000000000000000000e+12L, "6.9491892473250000000000000000000000000000000e+12", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1400943144500000000000000000000000000000000e+11L, "1.1400943144500000000000000000000000000000000e+11", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.4803212690000000000000000000000000000000000e+09L, "1.4803212690000000000000000000000000000000000e+09", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.4631225000000000000000000000000000000000000e+07L, "1.4631225000000000000000000000000000000000000e+07", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0338500000000000000000000000000000000000000e+05L, "1.0338500000000000000000000000000000000000000e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.6500000000000000000000000000000000000000000e+02L, "4.6500000000000000000000000000000000000000000e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0000000000000000000000000000000000000000000e+00L, "1.0000000000000000000000000000000000000000000e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: return boost::math::tools::evaluate_rational(num, denom, z);
23866: }
23866:
23866:
23866: template<class T>
23866: static T lanczos_sum_near_1(const T& dz)
23866: {
23866: static const T d[31] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.8968008940705433227909677660515993038374841e+00L, "7.8968008940705433227909677660515993038374841e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -5.6618604605116020762015754929520236835404324e+01L, "-5.6618604605116020762015754929520236835404324e+01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.8292545018854689128055824823953561237213555e+02L, "1.8292545018854689128055824823953561237213555e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.5208766506452851610872857905478685024504482e+02L, "-3.5208766506452851610872857905478685024504482e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.4977346993761774005199362646328436255151093e+02L, "4.4977346993761774005199362646328436255151093e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -4.0215319141694562206816207245107490261482447e+02L, "-4.0215319141694562206816207245107490261482447e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.5868485920551737806269221936902170855620396e+02L, "2.5868485920551737806269221936902170855620396e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.2119342552650938943400026113911660156093453e+02L, "-1.2119342552650938943400026113911660156093453e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.1418202444782049081885117917390551996878611e+01L, "4.1418202444782049081885117917390551996878611e+01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.0248307330153472190143848702750491768975848e+01L, "-1.0248307330153472190143848702750491768975848e+01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.8061053255438937388879028538451417962537674e+00L, "1.8061053255438937388879028538451417962537674e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.2080708594510418170142862951931773430228843e-01L, "-2.2080708594510418170142862951931773430228843e-01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.8014009027542132302057253782788244298905648e-02L, "1.8014009027542132302057253782788244298905648e-02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -9.2759167304556987616725030218164051987480377e-04L, "-9.2759167304556987616725030218164051987480377e-04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.7821648880614102293660548885638379600357589e-05L, "2.7821648880614102293660548885638379600357589e-05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -4.3159048716588863974468231104830412871370083e-07L, "-4.3159048716588863974468231104830412871370083e-07", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.8802059531699177780993451552740605512217594e-09L, "2.8802059531699177780993451552740605512217594e-09", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -6.0864938064916182822437411537845427325953853e-12L, "-6.0864938064916182822437411537845427325953853e-12", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.3077465050230400693183749778781074723249743e-15L, "2.3077465050230400693183749778781074723249743e-15", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -4.4535910089559609770590606433653482492203612e-20L, "-4.4535910089559609770590606433653482492203612e-20", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.8463914918024931651359730176750702440539677e-26L, "1.8463914918024931651359730176750702440539677e-26", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.6476799036488876225768641543721151210680141e-26L, "-2.6476799036488876225768641543721151210680141e-26", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.9859528302828214478942827717619270410965131e-26L, "2.9859528302828214478942827717619270410965131e-26", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.4164337794361162374639737594212065825014909e-26L, "-2.4164337794361162374639737594212065825014909e-26", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.4264219556008516021575829429243024924344353e-26L, "1.4264219556008516021575829429243024924344353e-26", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -6.3654171220500680155015450276084381767112451e-27L, "-6.3654171220500680155015450276084381767112451e-27", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.1771337070979387873887155215691051891368210e-27L, "2.1771337070979387873887155215691051891368210e-27", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -5.6130349210382862255475637378026742528052158e-28L, "-5.6130349210382862255475637378026742528052158e-28", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0357425223049510242618626197816013695138258e-28L, "1.0357425223049510242618626197816013695138258e-28", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.2237222565117372586662393874248709023486029e-29L, "-1.2237222565117372586662393874248709023486029e-29", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.9653890134419774710417169916706146555543512e-31L, "6.9653890134419774710417169916706146555543512e-31", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: T result = 0;
23866: for (unsigned k = 1; k <= sizeof(d) / sizeof(d[0]); ++k)
23866: {
23866: result += (-d[k - 1] * dz) / (k * dz + k * k);
23866: }
23866: return result;
23866: }
23866:
23866: template<class T>
23866: static T lanczos_sum_near_2(const T& dz)
23866: {
23866: static const T d[31] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.8235732906799716623552488416933899152528589e+01L, "6.8235732906799716623552488416933899152528589e+01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -4.8923760814221749411260475309979161560716608e+02L, "-4.8923760814221749411260475309979161560716608e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.5806466857096723284428938485933849993255433e+03L, "1.5806466857096723284428938485933849993255433e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.0423661676922237999255010522403805001149858e+03L, "-3.0423661676922237999255010522403805001149858e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.8864627302775745934819737805015890258069096e+03L, "3.8864627302775745934819737805015890258069096e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.4749790611725489418874785394046879079002711e+03L, "-3.4749790611725489418874785394046879079002711e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.2352787155916216728704971718263237763940956e+03L, "2.2352787155916216728704971718263237763940956e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.0472243539148225143721882968062403836164182e+03L, "-1.0472243539148225143721882968062403836164182e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.5789194097878442125894349247978066638013227e+02L, "3.5789194097878442125894349247978066638013227e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -8.8554944097961585263202464603716331582929738e+01L, "-8.8554944097961585263202464603716331582929738e+01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.5606436359298279012809323203777498460831161e+01L, "1.5606436359298279012809323203777498460831161e+01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.9079793884371809023191793438331090550554931e+00L, "-1.9079793884371809023191793438331090550554931e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.5565785753912199592703963702155052413697331e-01L, "1.5565785753912199592703963702155052413697331e-01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -8.0152581402976896653242934862478024763161144e-03L, "-8.0152581402976896653242934862478024763161144e-03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.4040502318727807490297102100258877023641629e-04L, "2.4040502318727807490297102100258877023641629e-04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.7293447818191967510645955265996052825799609e-06L, "-3.7293447818191967510645955265996052825799609e-06", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.4887668661450911754046983982188022868005334e-08L, "2.4887668661450911754046983982188022868005334e-08", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -5.2592989400365993333512441603746877766052195e-11L, "-5.2592989400365993333512441603746877766052195e-11", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.9941084528494632503325323388230135305735007e-14L, "1.9941084528494632503325323388230135305735007e-14", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.8483184600922127060811720536956793306527275e-19L, "-3.8483184600922127060811720536956793306527275e-19", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.5954546450654998035263505446322855520450213e-25L, "1.5954546450654998035263505446322855520450213e-25", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.2878426485811911877035106634321308368820032e-25L, "-2.2878426485811911877035106634321308368820032e-25", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.5801420414749176901982573044724995471338101e-25L, "2.5801420414749176901982573044724995471338101e-25", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.0880244059892646868604082519013410844174147e-25L, "-2.0880244059892646868604082519013410844174147e-25", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2325617535559095736858057307295434296584568e-25L, "1.2325617535559095736858057307295434296584568e-25", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -5.5003147275337403154295953682157801293504851e-26L, "-5.5003147275337403154295953682157801293504851e-26", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.8812468002260686540475204400230633058447779e-26L, "1.8812468002260686540475204400230633058447779e-26", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -4.8501862565143035234095815929073455137122638e-27L, "-4.8501862565143035234095815929073455137122638e-27", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.9497824575117543406738759847704395400692055e-28L, "8.9497824575117543406738759847704395400692055e-28", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.0574102876284982539299549303708483236373651e-28L, "-1.0574102876284982539299549303708483236373651e-28", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.0187464606086614102031360043044718659169199e-30L, "6.0187464606086614102031360043044718659169199e-30", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((134 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: };
23866: T result = 0;
23866: T z = dz + 2;
23866: for (unsigned k = 1; k <= sizeof(d) / sizeof(d[0]); ++k)
23866: {
23866: result += (-d[k - 1] * dz) / (z + k * z + k * k - 1);
23866: }
23866: return result;
23866: }
23866:
23866: static double g() { return 2.1471552819013595581054687500000000000000000e+01; }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: struct lanczos35MP : public boost::integral_constant<int, 168>
23866: {
23866: template <class T>
23866: static T lanczos_sum(const T& z)
23866: {
23866: static const T num[35] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.17215050716253100021302249837728942659410271586236104e+50L, "2.17215050716253100021302249837728942659410271586236104e+50", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.51055117651708470336913962553466820524801246971658127e+50L, "2.51055117651708470336913962553466820524801246971658127e+50", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.40813458996718289733677017073036013655624930344397267e+50L, "1.40813458996718289733677017073036013655624930344397267e+50", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.10569518324826607478187974291222641098997506635019681e+49L, "5.10569518324826607478187974291222641098997506635019681e+49", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.34502197565331471178368569687788687058240547971732391e+49L, "1.34502197565331471178368569687788687058240547971732391e+49", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.74311603169690571192608960963509140372217014888512918e+48L, "2.74311603169690571192608960963509140372217014888512918e+48", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.50656021978234091874071935392175934984492682009447097e+47L, "4.50656021978234091874071935392175934984492682009447097e+47", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.12703102551730381018400796362603958419580969330315139e+46L, "6.12703102551730381018400796362603958419580969330315139e+46", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.02844698442195350077632196816248435420923619452768200e+45L, "7.02844698442195350077632196816248435420923619452768200e+45", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.90106767379334717236568166816961185224083190775430842e+44L, "6.90106767379334717236568166816961185224083190775430842e+44", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.86371531667026447746284883480888667804130713757839681e+43L, "5.86371531667026447746284883480888667804130713757839681e+43", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.34808948517797782155274346690360992144536507118093783e+42L, "4.34808948517797782155274346690360992144536507118093783e+42", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.83232124439938458545786668616393415008373341980153072e+41L, "2.83232124439938458545786668616393415008373341980153072e+41", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.62895707563068512468013948922815298700909218398406635e+40L, "1.62895707563068512468013948922815298700909218398406635e+40", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.30384063116420066671650072267242339695473078925159324e+38L, "8.30384063116420066671650072267242339695473078925159324e+38", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.76258309689585811716178198120267186946262194080905971e+37L, "3.76258309689585811716178198120267186946262194080905971e+37", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.51837231299916455171135124843484994848995300472356341e+36L, "1.51837231299916455171135124843484994848995300472356341e+36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.46324357690180919340289798257560253430931750807924001e+34L, "5.46324357690180919340289798257560253430931750807924001e+34", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.75333853376321853646128997503611223620394342435525484e+33L, "1.75333853376321853646128997503611223620394342435525484e+33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.01719517877315910652307531002686423847077617217874485e+31L, "5.01719517877315910652307531002686423847077617217874485e+31", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.27861878894319497853745513558138184450369083409359360e+30L, "1.27861878894319497853745513558138184450369083409359360e+30", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.89640024726662067702004632718605032785787967237099607e+28L, "2.89640024726662067702004632718605032785787967237099607e+28", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.81537701811791870172286588846619085013138846074815251e+26L, "5.81537701811791870172286588846619085013138846074815251e+26", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.03090758312551459302562064161308518889144037164899961e+25L, "1.03090758312551459302562064161308518889144037164899961e+25", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.60538569869661647274451913615710409703905629234367906e+23L, "1.60538569869661647274451913615710409703905629234367906e+23", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.18176163448730621246454091850022844174919234685832508e+21L, "2.18176163448730621246454091850022844174919234685832508e+21", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.56586635256765282348264053213197702964352373258511008e+19L, "2.56586635256765282348264053213197702964352373258511008e+19", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.58289895656990946427745668670352144404744258615044371e+17L, "2.58289895656990946427745668670352144404744258615044371e+17", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.19373478903102411154024309088124853938046967389531861e+15L, "2.19373478903102411154024309088124853938046967389531861e+15", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.54192605870424877025476980158698548681325282029269310e+13L, "1.54192605870424877025476980158698548681325282029269310e+13", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.73027427579217615249706012469272147499107562412573337e+10L, "8.73027427579217615249706012469272147499107562412573337e+10", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.82675918536460865549992482360500962016208597062710654e+08L, "3.82675918536460865549992482360500962016208597062710654e+08", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.21869956201943834772161655315196962519434419814106818e+06L, "1.21869956201943834772161655315196962519434419814106818e+06", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.50897418653428667959996348205296461689142907811767371e+03L, "2.50897418653428667959996348205296461689142907811767371e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.50662827463100050241576528481104525300698674060984055e+00L, "2.50662827463100050241576528481104525300698674060984055e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: static const T denom[35] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.00000000000000000000000000000000000000000000000000000e+00L, "0.00000000000000000000000000000000000000000000000000000e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.68331761881188649551819440128000000000000000000000000e+36L, "8.68331761881188649551819440128000000000000000000000000e+36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.55043336733310191803732770947072000000000000000000000e+37L, "3.55043336733310191803732770947072000000000000000000000e+37", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.55728779174162547080350866368102400000000000000000000e+37L, "6.55728779174162547080350866368102400000000000000000000e+37", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.37352350419052295388404251629977600000000000000000000e+37L, "7.37352350419052295388404251629977600000000000000000000e+37", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.72117566475005542296335706764492800000000000000000000e+37L, "5.72117566475005542296335706764492800000000000000000000e+37", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.28417720643003773414159612967554252800000000000000000e+37L, "3.28417720643003773414159612967554252800000000000000000e+37", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.45822739485943139719482682477713244160000000000000000e+37L, "1.45822739485943139719482682477713244160000000000000000e+37", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.16476527817201997988283152951021977600000000000000000e+36L, "5.16476527817201997988283152951021977600000000000000000e+36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.49225481668254064104679479029764121600000000000000000e+36L, "1.49225481668254064104679479029764121600000000000000000e+36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.57726463942545496998486904826347776000000000000000000e+35L, "3.57726463942545496998486904826347776000000000000000000e+35", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.20859297660335343156864734965859840000000000000000000e+34L, "7.20859297660335343156864734965859840000000000000000000e+34", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.23364307820330543590375511999050240000000000000000000e+34L, "1.23364307820330543590375511999050240000000000000000000e+34", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.80750015058176473779293385245398400000000000000000000e+33L, "1.80750015058176473779293385245398400000000000000000000e+33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.28183125026789051815954180232544000000000000000000000e+32L, "2.28183125026789051815954180232544000000000000000000000e+32", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.49437224233918151570015089338400000000000000000000000e+31L, "2.49437224233918151570015089338400000000000000000000000e+31", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.37000480501772121324931003824000000000000000000000000e+30L, "2.37000480501772121324931003824000000000000000000000000e+30", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.96258640868140652967646352465000000000000000000000000e+29L, "1.96258640868140652967646352465000000000000000000000000e+29", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.41894262447739018035536664650000000000000000000000000e+28L, "1.41894262447739018035536664650000000000000000000000000e+28", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.96452376168568744680811480000000000000000000000000000e+26L, "8.96452376168568744680811480000000000000000000000000000e+26", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.94875410890088264440962800000000000000000000000000000e+25L, "4.94875410890088264440962800000000000000000000000000000e+25", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.38478815149246067334598000000000000000000000000000000e+24L, "2.38478815149246067334598000000000000000000000000000000e+24", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.00124085806115519088380000000000000000000000000000000e+23L, "1.00124085806115519088380000000000000000000000000000000e+23", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.65117470518809938644000000000000000000000000000000000e+21L, "3.65117470518809938644000000000000000000000000000000000e+21", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.15145312544238764840000000000000000000000000000000000e+20L, "1.15145312544238764840000000000000000000000000000000000e+20", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.12192419709374919000000000000000000000000000000000000e+18L, "3.12192419709374919000000000000000000000000000000000000e+18", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.22038661704031100000000000000000000000000000000000000e+16L, "7.22038661704031100000000000000000000000000000000000000e+16", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.40979763670090400000000000000000000000000000000000000e+15L, "1.40979763670090400000000000000000000000000000000000000e+15", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.29191290647440000000000000000000000000000000000000000e+13L, "2.29191290647440000000000000000000000000000000000000000e+13", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.04437176604000000000000000000000000000000000000000000e+11L, "3.04437176604000000000000000000000000000000000000000000e+11", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.21763644400000000000000000000000000000000000000000000e+09L, "3.21763644400000000000000000000000000000000000000000000e+09", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.60169360000000000000000000000000000000000000000000000e+07L, "2.60169360000000000000000000000000000000000000000000000e+07", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.51096000000000000000000000000000000000000000000000000e+05L, "1.51096000000000000000000000000000000000000000000000000e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.61000000000000000000000000000000000000000000000000000e+02L, "5.61000000000000000000000000000000000000000000000000000e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.00000000000000000000000000000000000000000000000000000e+00L, "1.00000000000000000000000000000000000000000000000000000e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: return boost::math::tools::evaluate_rational(num, denom, z);
23866: }
23866:
23866: template <class T>
23866: static T lanczos_sum_expG_scaled(const T& z)
23866: {
23866: static const T num[35] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.84421398435712762388902267099927585742388886580864424e+37L, "2.84421398435712762388902267099927585742388886580864424e+37", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.28731583799033736725852757551292030085556435695468295e+37L, "3.28731583799033736725852757551292030085556435695468295e+37", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.84381150359300352571680869181416248982215282642834936e+37L, "1.84381150359300352571680869181416248982215282642834936e+37", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.68539753215772969226355064737523321566208288321687448e+36L, "6.68539753215772969226355064737523321566208288321687448e+36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.76117184320624276162478300964159399462275652881271996e+36L, "1.76117184320624276162478300964159399462275652881271996e+36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.59183627116994441494601110756468114877940946273012852e+35L, "3.59183627116994441494601110756468114877940946273012852e+35", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.90089018057779871758440184258134151304912092733579104e+34L, "5.90089018057779871758440184258134151304912092733579104e+34", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.02273473587728940068021671629793244969348874651645551e+33L, "8.02273473587728940068021671629793244969348874651645551e+33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.20304883823127369598764418881022021049206245678741573e+32L, "9.20304883823127369598764418881022021049206245678741573e+32", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.03625836242722113759123056762610636251641913153595812e+31L, "9.03625836242722113759123056762610636251641913153595812e+31", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.67794913334462808923359541498599600753842936204419932e+30L, "7.67794913334462808923359541498599600753842936204419932e+30", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.69338859264140114791649895977363900871692586779302150e+29L, "5.69338859264140114791649895977363900871692586779302150e+29", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.70864158121145435408364940074910197916145829346031858e+28L, "3.70864158121145435408364940074910197916145829346031858e+28", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.13295647753179115743895667847873122731507276407230715e+27L, "2.13295647753179115743895667847873122731507276407230715e+27", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.08730493440263847356723847541024859440843056640671533e+26L, "1.08730493440263847356723847541024859440843056640671533e+26", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.92672649809905793239714364398097142490510744815940192e+24L, "4.92672649809905793239714364398097142490510744815940192e+24", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.98815678372776973689475889094271298156568135487559824e+23L, "1.98815678372776973689475889094271298156568135487559824e+23", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.15357141696015228406471054927723105303656292491717836e+21L, "7.15357141696015228406471054927723105303656292491717836e+21", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.29582156512528703674984172534752222415664014582498353e+20L, "2.29582156512528703674984172534752222415664014582498353e+20", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.56951562180494343732211791410530161839249714612303326e+18L, "6.56951562180494343732211791410530161839249714612303326e+18", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.67422350715677024140556410421772283993277946880053914e+17L, "1.67422350715677024140556410421772283993277946880053914e+17", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.79254663081905790190270601146772274854974105071798035e+15L, "3.79254663081905790190270601146772274854974105071798035e+15", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.61465496276608608941993297108655885737613121720232292e+13L, "7.61465496276608608941993297108655885737613121720232292e+13", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.34987044168298086318822469739196823360923972361455073e+12L, "1.34987044168298086318822469739196823360923972361455073e+12", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.10209211537761991333937729340544738747931371426736883e+10L, "2.10209211537761991333937729340544738747931371426736883e+10", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.85679879496413826670691454915567101976631415248412906e+08L, "2.85679879496413826670691454915567101976631415248412906e+08", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.35974553231926272707704478737590721340254406209650188e+06L, "3.35974553231926272707704478737590721340254406209650188e+06", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.38204802486455055334129565820015244464343854444712513e+04L, "3.38204802486455055334129565820015244464343854444712513e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.87247644413155087645140975008088533286977710080244249e+02L, "2.87247644413155087645140975008088533286977710080244249e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.01899805954981363917258740277358024893572331522514601e+00L, "2.01899805954981363917258740277358024893572331522514601e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.14314215799519834172753514406176454576793263619287700e-02L, "1.14314215799519834172753514406176454576793263619287700e-02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.01075867159821346256470334018168931185179114379271616e-05L, "5.01075867159821346256470334018168931185179114379271616e-05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.59576526838074751422330690168945437827562833198707558e-07L, "1.59576526838074751422330690168945437827562833198707558e-07", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.28525092722679899458094768960179796663588010298597603e-10L, "3.28525092722679899458094768960179796663588010298597603e-10", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.28217919006153582429216342066702743329957749672852350e-13L, "3.28217919006153582429216342066702743329957749672852350e-13", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: static const T denom[35] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.00000000000000000000000000000000000000000000000000000e+00L, "0.00000000000000000000000000000000000000000000000000000e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.68331761881188649551819440128000000000000000000000000e+36L, "8.68331761881188649551819440128000000000000000000000000e+36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.55043336733310191803732770947072000000000000000000000e+37L, "3.55043336733310191803732770947072000000000000000000000e+37", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.55728779174162547080350866368102400000000000000000000e+37L, "6.55728779174162547080350866368102400000000000000000000e+37", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.37352350419052295388404251629977600000000000000000000e+37L, "7.37352350419052295388404251629977600000000000000000000e+37", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.72117566475005542296335706764492800000000000000000000e+37L, "5.72117566475005542296335706764492800000000000000000000e+37", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.28417720643003773414159612967554252800000000000000000e+37L, "3.28417720643003773414159612967554252800000000000000000e+37", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.45822739485943139719482682477713244160000000000000000e+37L, "1.45822739485943139719482682477713244160000000000000000e+37", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.16476527817201997988283152951021977600000000000000000e+36L, "5.16476527817201997988283152951021977600000000000000000e+36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.49225481668254064104679479029764121600000000000000000e+36L, "1.49225481668254064104679479029764121600000000000000000e+36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.57726463942545496998486904826347776000000000000000000e+35L, "3.57726463942545496998486904826347776000000000000000000e+35", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.20859297660335343156864734965859840000000000000000000e+34L, "7.20859297660335343156864734965859840000000000000000000e+34", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.23364307820330543590375511999050240000000000000000000e+34L, "1.23364307820330543590375511999050240000000000000000000e+34", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.80750015058176473779293385245398400000000000000000000e+33L, "1.80750015058176473779293385245398400000000000000000000e+33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.28183125026789051815954180232544000000000000000000000e+32L, "2.28183125026789051815954180232544000000000000000000000e+32", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.49437224233918151570015089338400000000000000000000000e+31L, "2.49437224233918151570015089338400000000000000000000000e+31", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.37000480501772121324931003824000000000000000000000000e+30L, "2.37000480501772121324931003824000000000000000000000000e+30", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.96258640868140652967646352465000000000000000000000000e+29L, "1.96258640868140652967646352465000000000000000000000000e+29", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.41894262447739018035536664650000000000000000000000000e+28L, "1.41894262447739018035536664650000000000000000000000000e+28", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.96452376168568744680811480000000000000000000000000000e+26L, "8.96452376168568744680811480000000000000000000000000000e+26", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.94875410890088264440962800000000000000000000000000000e+25L, "4.94875410890088264440962800000000000000000000000000000e+25", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.38478815149246067334598000000000000000000000000000000e+24L, "2.38478815149246067334598000000000000000000000000000000e+24", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.00124085806115519088380000000000000000000000000000000e+23L, "1.00124085806115519088380000000000000000000000000000000e+23", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.65117470518809938644000000000000000000000000000000000e+21L, "3.65117470518809938644000000000000000000000000000000000e+21", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.15145312544238764840000000000000000000000000000000000e+20L, "1.15145312544238764840000000000000000000000000000000000e+20", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.12192419709374919000000000000000000000000000000000000e+18L, "3.12192419709374919000000000000000000000000000000000000e+18", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.22038661704031100000000000000000000000000000000000000e+16L, "7.22038661704031100000000000000000000000000000000000000e+16", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.40979763670090400000000000000000000000000000000000000e+15L, "1.40979763670090400000000000000000000000000000000000000e+15", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.29191290647440000000000000000000000000000000000000000e+13L, "2.29191290647440000000000000000000000000000000000000000e+13", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.04437176604000000000000000000000000000000000000000000e+11L, "3.04437176604000000000000000000000000000000000000000000e+11", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.21763644400000000000000000000000000000000000000000000e+09L, "3.21763644400000000000000000000000000000000000000000000e+09", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.60169360000000000000000000000000000000000000000000000e+07L, "2.60169360000000000000000000000000000000000000000000000e+07", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.51096000000000000000000000000000000000000000000000000e+05L, "1.51096000000000000000000000000000000000000000000000000e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.61000000000000000000000000000000000000000000000000000e+02L, "5.61000000000000000000000000000000000000000000000000000e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.00000000000000000000000000000000000000000000000000000e+00L, "1.00000000000000000000000000000000000000000000000000000e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: return boost::math::tools::evaluate_rational(num, denom, z);
23866: }
23866:
23866:
23866: template<class T>
23866: static T lanczos_sum_near_1(const T& dz)
23866: {
23866: static const T d[34] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.09112391094335813989230740596164619994797033481760301e+01L, "1.09112391094335813989230740596164619994797033481760301e+01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.11095925828443504625574261745581427703630213518975734e+02L, "-1.11095925828443504625574261745581427703630213518975734e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.25795762399049096970854782036824945808150003653799701e+02L, "5.25795762399049096970854782036824945808150003653799701e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.53596813364794430843820749839089482856771473577902136e+03L, "-1.53596813364794430843820749839089482856771473577902136e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.10150518856225197104044336968686219568570379161186763e+03L, "3.10150518856225197104044336968686219568570379161186763e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -4.59440015012604275008985164760189204399872934212169290e+03L, "-4.59440015012604275008985164760189204399872934212169290e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.17182126100715726914905437099855137991832224176746144e+03L, "5.17182126100715726914905437099855137991832224176746144e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -4.52194070233963020921586697582404279809725757428225907e+03L, "-4.52194070233963020921586697582404279809725757428225907e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.11287192546142126817144783716567250328231623970392395e+03L, "3.11287192546142126817144783716567250328231623970392395e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.70029010284498269942986238607675315541449827223720491e+03L, "-1.70029010284498269942986238607675315541449827223720491e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.39359986548869257712075354365607803246217579350731025e+02L, "7.39359986548869257712075354365607803246217579350731025e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.55857186796151318525331772210231419636656738702520247e+02L, "-2.55857186796151318525331772210231419636656738702520247e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.01976508569781091139272219093293962106866776273944401e+01L, "7.01976508569781091139272219093293962106866776273944401e+01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.51622799316222576708968190643735578161547893435503117e+01L, "-1.51622799316222576708968190643735578161547893435503117e+01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.55114022296440557292153472011659421232773792851704649e+00L, "2.55114022296440557292153472011659421232773792851704649e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.29558714084043876803654097222727620781593122323144986e-01L, "-3.29558714084043876803654097222727620781593122323144986e-01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.20655790191462561334686083455624901268509187198531392e-02L, "3.20655790191462561334686083455624901268509187198531392e-02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.29211265190736317625627743320462821391020598683096969e-03L, "-2.29211265190736317625627743320462821391020598683096969e-03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.16547271274032555838193953745182811226836340887412893e-04L, "1.16547271274032555838193953745182811226836340887412893e-04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -4.04158977282328622262713955181985365200737836471868621e-06L, "-4.04158977282328622262713955181985365200737836471868621e-06", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.04099527601588222217706879074903022432460969180041885e-08L, "9.04099527601588222217706879074903022432460969180041885e-08", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.21026124816545340223909137077288908237190834054935310e-09L, "-1.21026124816545340223909137077288908237190834054935310e-09", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.73486546143800890651761116982457576405090186184403710e-12L, "8.73486546143800890651761116982457576405090186184403710e-12", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.92426051924806467732549205594664201603409972582813132e-14L, "-2.92426051924806467732549205594664201603409972582813132e-14", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.61340208721806452778722682494918504979435178283255061e-17L, "3.61340208721806452778722682494918504979435178283255061e-17", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.13517996614037348212434679983945901825382670014683797e-20L, "-1.13517996614037348212434679983945901825382670014683797e-20", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.61930266547148210568279523485628689044657261784716591e-25L, "4.61930266547148210568279523485628689044657261784716591e-25", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -5.78463508004708787795311937422590618909194917033730955e-31L, "-5.78463508004708787795311937422590618909194917033730955e-31", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.53568640059658459444865728826184250691297909350787934e-35L, "-1.53568640059658459444865728826184250691297909350787934e-35", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.63117406343686364701920733651409741863929155565374940e-36L, "6.63117406343686364701920733651409741863929155565374940e-36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.02296711810469513023726896410540806344003955071812851e-36L, "-2.02296711810469513023726896410540806344003955071812851e-36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.05776322342042086937257880311088879198393056129493081e-37L, "4.05776322342042086937257880311088879198393056129493081e-37", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -4.82527152907979058393765521600344474439209706209233775e-38L, "-4.82527152907979058393765521600344474439209706209233775e-38", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.61571352467214817635971061532522193500863154360283722e-39L, "2.61571352467214817635971061532522193500863154360283722e-39", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: T result = 0;
23866: for (unsigned k = 1; k <= sizeof(d) / sizeof(d[0]); ++k)
23866: {
23866: result += (-d[k - 1] * dz) / (k * dz + k * k);
23866: }
23866: return result;
23866: }
23866:
23866: template<class T>
23866: static T lanczos_sum_near_2(const T& dz)
23866: {
23866: static const T d[34] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.27149725743552824677345467452765724462183747425698430e+02L, "1.27149725743552824677345467452765724462183747425698430e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.29461157973340118022513089366929246812794440622918275e+03L, "-1.29461157973340118022513089366929246812794440622918275e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.12714892558448280578038020250503421879861075137953016e+03L, "6.12714892558448280578038020250503421879861075137953016e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.78987853703364598882843888232934449281930468883391335e+04L, "-1.78987853703364598882843888232934449281930468883391335e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.61421402429854740596701737352164170551274801368708941e+04L, "3.61421402429854740596701737352164170551274801368708941e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -5.35389897687788587032725281528384185518833066402901114e+04L, "-5.35389897687788587032725281528384185518833066402901114e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.02677338784735277115375432621012998338558552597357336e+04L, "6.02677338784735277115375432621012998338558552597357336e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -5.26946128083650646734645560602832582368091536233949979e+04L, "-5.26946128083650646734645560602832582368091536233949979e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.62745979285730759140267927796734683888575236461558969e+04L, "3.62745979285730759140267927796734683888575236461558969e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.98136451866684089001192332403279162096332022571108845e+04L, "-1.98136451866684089001192332403279162096332022571108845e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.61583350640418693864271497678443168377071451407567658e+03L, "8.61583350640418693864271497678443168377071451407567658e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.98152856924573421857895007425890467500099537012952122e+03L, "-2.98152856924573421857895007425890467500099537012952122e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.18020021813066494304354702578430478815286552616366363e+02L, "8.18020021813066494304354702578430478815286552616366363e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.76687516020609325102781997617812558189956529947937455e+02L, "-1.76687516020609325102781997617812558189956529947937455e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.97286840137911020382328323869139629696357829352821391e+01L, "2.97286840137911020382328323869139629696357829352821391e+01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.84037960234558373817068181823488833809395626348103188e+00L, "-3.84037960234558373817068181823488833809395626348103188e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.73663296826451629159939759241902446349258313114071094e-01L, "3.73663296826451629159939759241902446349258313114071094e-01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.67102106498038196040637483025426329160024817197530409e-02L, "-2.67102106498038196040637483025426329160024817197530409e-02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.35813663599770253165594840156807550072235435724240491e-03L, "1.35813663599770253165594840156807550072235435724240491e-03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -4.70970369202279764117806847443483943084782006868895857e-05L, "-4.70970369202279764117806847443483943084782006868895857e-05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.05355593279987378383061490338957570599931723523376630e-06L, "1.05355593279987378383061490338957570599931723523376630e-06", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.41032914996100466638712258076005313289749145071459453e-08L, "-1.41032914996100466638712258076005313289749145071459453e-08", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.01788232911919897659739133018267424364933824143275367e-10L, "1.01788232911919897659739133018267424364933824143275367e-10", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.40766909510419913528326529229511125941552363401838743e-13L, "-3.40766909510419913528326529229511125941552363401838743e-13", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.21073243637136845906400015214174112719748429942427344e-16L, "4.21073243637136845906400015214174112719748429942427344e-16", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.32283620509730411652267827642614145629073466029279697e-19L, "-1.32283620509730411652267827642614145629073466029279697e-19", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.38291811911040907926983774874091831690977569145002154e-24L, "5.38291811911040907926983774874091831690977569145002154e-24", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -6.74089126429842876230950047383862474772290970041867579e-30L, "-6.74089126429842876230950047383862474772290970041867579e-30", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.78955023078122126762117283369038212754061385626732316e-34L, "-1.78955023078122126762117283369038212754061385626732316e-34", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.72737133764019622888917725972972138033556721960526187e-35L, "7.72737133764019622888917725972972138033556721960526187e-35", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.35738316863436492576730648996735973692694426493195922e-35L, "-2.35738316863436492576730648996735973692694426493195922e-35", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.72855077059130427852097715321796484769785970590691282e-36L, "4.72855077059130427852097715321796484769785970590691282e-36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -5.62293563001680479553446157798018614684701661703654843e-37L, "-5.62293563001680479553446157798018614684701661703654843e-37", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.04811629504314504274190599430387363985052709041515655e-38L, "3.04811629504314504274190599430387363985052709041515655e-38", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((168 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: };
23866: T result = 0;
23866: T z = dz + 2;
23866: for (unsigned k = 1; k <= sizeof(d) / sizeof(d[0]); ++k)
23866: {
23866: result += (-d[k - 1] * dz) / (z + k * z + k * k - 1);
23866: }
23866: return result;
23866: }
23866:
23866: static double g() { return 2.96640371531248092651367187500000000000000000000000000e+01; }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866:
23866: struct lanczos48MP : public boost::integral_constant<int, 201>
23866: {
23866: template <class T>
23866: static T lanczos_sum(const T& z)
23866: {
23866: static const T num[48] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.761757987425932419978923296640371540367427757167447418730589877e+70L, "5.761757987425932419978923296640371540367427757167447418730589877e+70", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.723233313564421930629677035555276136256253817229396631458438691e+70L, "8.723233313564421930629677035555276136256253817229396631458438691e+70", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.460052620548943146316510839385235752729444155384745952604400014e+70L, "6.460052620548943146316510839385235752729444155384745952604400014e+70", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.118620599704657143233902039524163888476114389296433891234019212e+70L, "3.118620599704657143233902039524163888476114389296433891234019212e+70", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.103553323924588863191816202847384353588419783622786374048756587e+70L, "1.103553323924588863191816202847384353588419783622786374048756587e+70", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.051624469576894078907076790635986076815810433950937821174281248e+69L, "3.051624469576894078907076790635986076815810433950937821174281248e+69", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.865434054315747674202246332480484800778071304068935338977820344e+68L, "6.865434054315747674202246332480484800778071304068935338977820344e+68", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.291785980379681713553231795767203835753576510251486784293089714e+68L, "1.291785980379681713553231795767203835753576510251486784293089714e+68", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.073927196464385740270105346713079967925505577692095446860826790e+67L, "2.073927196464385740270105346713079967925505577692095446860826790e+67", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.884317172328855613403642857232246924724496526520223674336243586e+66L, "2.884317172328855613403642857232246924724496526520223674336243586e+66", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.515983058669346491005379681336434957516572863544374020968683717e+65L, "3.515983058669346491005379681336434957516572863544374020968683717e+65", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.791988252541273516986153564408477102509671668999707480365384945e+64L, "3.791988252541273516986153564408477102509671668999707480365384945e+64", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.645764905652320236264233988360776875326874810201273735655153182e+63L, "3.645764905652320236264233988360776875326874810201273735655153182e+63", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.144135487589921315512939394666974184673239886993573956770438389e+62L, "3.144135487589921315512939394666974184673239886993573956770438389e+62", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.444700846549614719681016920231266383188819427952261902403138865e+61L, "2.444700846549614719681016920231266383188819427952261902403138865e+61", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.721099093953481665535866508692670759355705777392277743203856663e+60L, "1.721099093953481665535866508692670759355705777392277743203856663e+60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.100969797434901880312682514502493221610943693861105392844971160e+59L, "1.100969797434901880312682514502493221610943693861105392844971160e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.418121506159806547634040503980950792234471035467217702752406105e+57L, "6.418121506159806547634040503980950792234471035467217702752406105e+57", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.417864259432558812733518752689742288284271989351444645566759428e+56L, "3.417864259432558812733518752689742288284271989351444645566759428e+56", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.665995533734965936996397899459612023184583125575089834552055942e+55L, "1.665995533734965936996397899459612023184583125575089834552055942e+55", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.444766925649844009950058690449625999301860892596426461258095232e+53L, "7.444766925649844009950058690449625999301860892596426461258095232e+53", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.053637791492838551734963920042182131006240650838206322215619662e+52L, "3.053637791492838551734963920042182131006240650838206322215619662e+52", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.150696853422753584935226676401667305978026730065639035499393518e+51L, "1.150696853422753584935226676401667305978026730065639035499393518e+51", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.985976091763077924792684854305586783380530313659602423780141188e+49L, "3.985976091763077924792684854305586783380530313659602423780141188e+49", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.269589095786672590317833654141210781129738119237951536741077115e+48L, "1.269589095786672590317833654141210781129738119237951536741077115e+48", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.718300118825405526804849893058410300716988331091767076237827497e+46L, "3.718300118825405526804849893058410300716988331091767076237827497e+46", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.001037055130874457401651655102738871459032839441218104652569066e+45L, "1.001037055130874457401651655102738871459032839441218104652569066e+45", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.475842513986568687160423191409256650108932454810648362428602348e+43L, "2.475842513986568687160423191409256650108932454810648362428602348e+43", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.620452049086499203878684285356863241396518483154492676811559133e+41L, "5.620452049086499203878684285356863241396518483154492676811559133e+41", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.169661026157169583693125067814111812572434991018171004040405784e+40L, "1.169661026157169583693125067814111812572434991018171004040405784e+40", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.227918466522161929152413190031319328201533237960827483146218740e+38L, "2.227918466522161929152413190031319328201533237960827483146218740e+38", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.876388843752351291646654793076860108915313255758699513365393870e+36L, "3.876388843752351291646654793076860108915313255758699513365393870e+36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.145947758366681136606104191450792163942386660344907590963820717e+34L, "6.145947758366681136606104191450792163942386660344907590963820717e+34", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.853323303407534484800459250019301328433169196161471441696806506e+32L, "8.853323303407534484800459250019301328433169196161471441696806506e+32", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.154628006575221227908667538321556179086649067527404327882584768e+31L, "1.154628006575221227908667538321556179086649067527404327882584768e+31", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.357526820024103486396860374714568600536209103260198100884104997e+29L, "1.357526820024103486396860374714568600536209103260198100884104997e+29", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.431529899588725297356982438015035066854198997921929156832870645e+27L, "1.431529899588725297356982438015035066854198997921929156832870645e+27", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.345565129287503320724079046959642760096964859126850291147857935e+25L, "1.345565129287503320724079046959642760096964859126850291147857935e+25", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.118851309483567225684739040233675455708538654675741148330404763e+23L, "1.118851309483567225684739040233675455708538654675741148330404763e+23", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.153371780240325463304870847387326315142505274277395976930776452e+20L, "8.153371780240325463304870847387326315142505274277395976930776452e+20", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.146212685927632120682088036018035709941745020823689824280902727e+18L, "5.146212685927632120682088036018035709941745020823689824280902727e+18", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.771109638413640784841091904266004758198074452790973613270876444e+16L, "2.771109638413640784841091904266004758198074452790973613270876444e+16", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.247775743837944205683004431867637625466576857881195465700397478e+14L, "1.247775743837944205683004431867637625466576857881195465700397478e+14", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.570311375510395966207715903995528566489264305503840005145629111e+11L, "4.570311375510395966207715903995528566489264305503840005145629111e+11", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.307932649387240491969419239876926639445902586258953887216911993e+09L, "1.307932649387240491969419239876926639445902586258953887216911993e+09", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.743144608535924824275750439447323876880302369055576390115394778e+06L, "2.743144608535924824275750439447323876880302369055576390115394778e+06", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.749690888961891063146468955091435916957208840312184463551812828e+03L, "3.749690888961891063146468955091435916957208840312184463551812828e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.506628274631000502415765284811045253006986740609938316629929233e+00L, "2.506628274631000502415765284811045253006986740609938316629929233e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: static const T denom[48] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.000000000000000000000000000000000000000000000000000000000000000e+00L, "0.000000000000000000000000000000000000000000000000000000000000000e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.502622159812088949850305428800254892961651752960000000000000000e+57L, "5.502622159812088949850305428800254892961651752960000000000000000e+57", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.430336111272256671478593169569751383305061494947840000000000000e+58L, "2.430336111272256671478593169569751383305061494947840000000000000e+58", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.920361290698585974808779016476219830728024276336640000000000000e+58L, "4.920361290698585974808779016476219830728024276336640000000000000e+58", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.149178946896205138947217427059336370288899808821248000000000000e+58L, "6.149178946896205138947217427059336370288899808821248000000000000e+58", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.374105269656119699331051574067858017333550280343552000000000000e+58L, "5.374105269656119699331051574067858017333550280343552000000000000e+58", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.521316226597066883749849655326023294027593332332429312000000000e+58L, "3.521316226597066883749849655326023294027593332332429312000000000e+58", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.808864152650289891915479515152146571014320216782405632000000000e+58L, "1.808864152650289891915479515152146571014320216782405632000000000e+58", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.514810409642252571378917003183814999063638859346214912000000000e+57L, "7.514810409642252571378917003183814999063638859346214912000000000e+57", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.583350992233550434239775839017811699814141926043903590400000000e+57L, "2.583350992233550434239775839017811699814141926043903590400000000e+57", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.478403249251559174520099458337662519939088809134875607040000000e+56L, "7.478403249251559174520099458337662519939088809134875607040000000e+56", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.848344883280695333961708798743230793633983609036568330240000000e+56L, "1.848344883280695333961708798743230793633983609036568330240000000e+56", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.943873277267014936040757307088314776495222166971439104000000000e+55L, "3.943873277267014936040757307088314776495222166971439104000000000e+55", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.331069721888505257142927693659482094449571844495257600000000000e+54L, "7.331069721888505257142927693659482094449571844495257600000000000e+54", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.196124539826947758881834650235619760202156354268084224000000000e+54L, "1.196124539826947758881834650235619760202156354268084224000000000e+54", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.723744838816127002822609734027860811982593574672547840000000000e+53L, "1.723744838816127002822609734027860811982593574672547840000000000e+53", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.205691767196054136766333529400075228162139411801728000000000000e+52L, "2.205691767196054136766333529400075228162139411801728000000000000e+52", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.517213632743192166819003098472340901249838381523200000000000000e+51L, "2.517213632743192166819003098472340901249838381523200000000000000e+51", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.571722144655713179046526371841394014407124514352640000000000000e+50L, "2.571722144655713179046526371841394014407124514352640000000000000e+50", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.359512744028577584409389641902976782871564427046400000000000000e+49L, "2.359512744028577584409389641902976782871564427046400000000000000e+49", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.949188285585060392916084953872833077002135851920000000000000000e+48L, "1.949188285585060392916084953872833077002135851920000000000000000e+48", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.452967188675463645529736303316005271151737332000000000000000000e+47L, "1.452967188675463645529736303316005271151737332000000000000000000e+47", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.790015208782962556675223159728484084908850744000000000000000000e+45L, "9.790015208782962556675223159728484084908850744000000000000000000e+45", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.970673071264242753610155919125826961862567840000000000000000000e+44L, "5.970673071264242753610155919125826961862567840000000000000000000e+44", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.299166890445957751586491053313346243255473500000000000000000000e+43L, "3.299166890445957751586491053313346243255473500000000000000000000e+43", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.652735578141047520337049888545244673386975000000000000000000000e+42L, "1.652735578141047520337049888545244673386975000000000000000000000e+42", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.508428802270485256066710729742536448661900000000000000000000000e+40L, "7.508428802270485256066710729742536448661900000000000000000000000e+40", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.093294777021479729147119238554967297499000000000000000000000000e+39L, "3.093294777021479729147119238554967297499000000000000000000000000e+39", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.155176275192359061296447275633302204250000000000000000000000000e+38L, "1.155176275192359061296447275633302204250000000000000000000000000e+38", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.907505708457079284974986712721395225000000000000000000000000000e+36L, "3.907505708457079284974986712721395225000000000000000000000000000e+36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.195848283940498442888394846136646210000000000000000000000000000e+35L, "1.195848283940498442888394846136646210000000000000000000000000000e+35", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.305934675041764670409270520636101000000000000000000000000000000e+33L, "3.305934675041764670409270520636101000000000000000000000000000000e+33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.238840089027488915014959267151000000000000000000000000000000000e+31L, "8.238840089027488915014959267151000000000000000000000000000000000e+31", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.846167161648076059624793804150000000000000000000000000000000000e+30L, "1.846167161648076059624793804150000000000000000000000000000000000e+30", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.707826341119682695847826052600000000000000000000000000000000000e+28L, "3.707826341119682695847826052600000000000000000000000000000000000e+28", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.648183019818072129964867660000000000000000000000000000000000000e+26L, "6.648183019818072129964867660000000000000000000000000000000000000e+26", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.059080011923383455919277000000000000000000000000000000000000000e+25L, "1.059080011923383455919277000000000000000000000000000000000000000e+25", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.490144286132397218940500000000000000000000000000000000000000000e+23L, "1.490144286132397218940500000000000000000000000000000000000000000e+23", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.838362455658776519186000000000000000000000000000000000000000000e+21L, "1.838362455658776519186000000000000000000000000000000000000000000e+21", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.970532718044669378600000000000000000000000000000000000000000000e+19L, "1.970532718044669378600000000000000000000000000000000000000000000e+19", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.814183952293757550000000000000000000000000000000000000000000000e+17L, "1.814183952293757550000000000000000000000000000000000000000000000e+17", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.413370614847675000000000000000000000000000000000000000000000000e+15L, "1.413370614847675000000000000000000000000000000000000000000000000e+15", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.134958017031000000000000000000000000000000000000000000000000000e+12L, "9.134958017031000000000000000000000000000000000000000000000000000e+12", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.765795079100000000000000000000000000000000000000000000000000000e+10L, "4.765795079100000000000000000000000000000000000000000000000000000e+10", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.928125650000000000000000000000000000000000000000000000000000000e+08L, "1.928125650000000000000000000000000000000000000000000000000000000e+08", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.675250000000000000000000000000000000000000000000000000000000000e+05L, "5.675250000000000000000000000000000000000000000000000000000000000e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.081000000000000000000000000000000000000000000000000000000000000e+03L, "1.081000000000000000000000000000000000000000000000000000000000000e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.000000000000000000000000000000000000000000000000000000000000000e+00L, "1.000000000000000000000000000000000000000000000000000000000000000e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: return boost::math::tools::evaluate_rational(num, denom, z);
23866: }
23866:
23866: template <class T>
23866: static T lanczos_sum_expG_scaled(const T& z)
23866: {
23866: static const T num[48] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.775732062655417998910881298714821053061055705608286949609421120e+58L, "1.775732062655417998910881298714821053061055705608286949609421120e+58", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.688437299644448784121592662352787426980194425446481703306505899e+58L, "2.688437299644448784121592662352787426980194425446481703306505899e+58", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.990941408817264621124181941423397180231807676408175000011574647e+58L, "1.990941408817264621124181941423397180231807676408175000011574647e+58", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.611362716446299768312931282360230566955098878347512701289885826e+57L, "9.611362716446299768312931282360230566955098878347512701289885826e+57", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.401071382066693821667231534775770086983519477562699643517826070e+57L, "3.401071382066693821667231534775770086983519477562699643517826070e+57", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.404885497858970433702192998314287586471872015950314081905843790e+56L, "9.404885497858970433702192998314287586471872015950314081905843790e+56", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.115877029354588030985670444733795075439494699793733843615128537e+56L, "2.115877029354588030985670444733795075439494699793733843615128537e+56", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.981190790128533233774351539949086864384527026303253658346042487e+55L, "3.981190790128533233774351539949086864384527026303253658346042487e+55", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.391693345003088328615594164751621620795026048184784616056424156e+54L, "6.391693345003088328615594164751621620795026048184784616056424156e+54", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.889256530644592752851605934648543064680013184446459552930302708e+53L, "8.889256530644592752851605934648543064680013184446459552930302708e+53", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.083600502252557317792851907104175947655615832167024966482957198e+53L, "1.083600502252557317792851907104175947655615832167024966482957198e+53", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.168663303100387254423547467716347840589509950430146037235024663e+52L, "1.168663303100387254423547467716347840589509950430146037235024663e+52", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.123598327107617380847613820395680616677588511868146055764672247e+51L, "1.123598327107617380847613820395680616677588511868146055764672247e+51", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.689997752127767317102012222013845618089045780981297513260591263e+49L, "9.689997752127767317102012222013845618089045780981297513260591263e+49", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.534390868711924145397558028431517797916157184545344400315049888e+48L, "7.534390868711924145397558028431517797916157184545344400315049888e+48", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.304302698603539256283286371502868034443493795813215278491516590e+47L, "5.304302698603539256283286371502868034443493795813215278491516590e+47", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.393109140624987047793401361048831961769792029208766436336102130e+46L, "3.393109140624987047793401361048831961769792029208766436336102130e+46", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.978018543190809154654104033779556195143800802618966016721119650e+45L, "1.978018543190809154654104033779556195143800802618966016721119650e+45", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.053360999285885098804414279382371819392475408561904784568215676e+44L, "1.053360999285885098804414279382371819392475408561904784568215676e+44", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.134477518753880004346650767299407142912151189519394755303948278e+42L, "5.134477518753880004346650767299407142912151189519394755303948278e+42", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.294423222517027804991661400849986263936601088969957809227734095e+41L, "2.294423222517027804991661400849986263936601088969957809227734095e+41", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.411090410120803602405769061472811786006792830932395177026805674e+39L, "9.411090410120803602405769061472811786006792830932395177026805674e+39", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.546364324011365762789375386661337991434000702963811196005801731e+38L, "3.546364324011365762789375386661337991434000702963811196005801731e+38", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.228448949533845774618310075362255075191314754073111861819975658e+37L, "1.228448949533845774618310075362255075191314754073111861819975658e+37", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.912781600174900095022672513908490962899309128877584272045832513e+35L, "3.912781600174900095022672513908490962899309128877584272045832513e+35", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.145953154225327686809754524860534768156895534588187817885425867e+34L, "1.145953154225327686809754524860534768156895534588187817885425867e+34", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.085123669861365984774838320924008647858451270384142925874188908e+32L, "3.085123669861365984774838320924008647858451270384142925874188908e+32", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.630367231261397170650842427640465271470437848007390468680241668e+30L, "7.630367231261397170650842427640465271470437848007390468680241668e+30", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.732182596346604787991836614669276692020582495778773122326853797e+29L, "1.732182596346604787991836614669276692020582495778773122326853797e+29", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.604810530255586389021528105443008249789929772232910820974558737e+27L, "3.604810530255586389021528105443008249789929772232910820974558737e+27", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.866283281281868197964883431828004811500103664332499479032936741e+25L, "6.866283281281868197964883431828004811500103664332499479032936741e+25", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.194674953754173153419535571352963617418336620849047024493757781e+24L, "1.194674953754173153419535571352963617418336620849047024493757781e+24", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.894136566262225941799684575793203365634052117390221232065529506e+22L, "1.894136566262225941799684575793203365634052117390221232065529506e+22", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.728530091896234109430773225830735206267902257956559214561779937e+20L, "2.728530091896234109430773225830735206267902257956559214561779937e+20", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.558479853180206010560597094150305393424259777860361999786422123e+18L, "3.558479853180206010560597094150305393424259777860361999786422123e+18", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.183799294403182487629551851184805610521945574359855930862189385e+16L, "4.183799294403182487629551851184805610521945574359855930862189385e+16", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.411871423439005125979602342436157376541872925894678545707600871e+14L, "4.411871423439005125979602342436157376541872925894678545707600871e+14", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.146934230284030660663814250662713645615827253848318877256260252e+12L, "4.146934230284030660663814250662713645615827253848318877256260252e+12", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.448218665084135299794121636822853382005896647323977605040284573e+10L, "3.448218665084135299794121636822853382005896647323977605040284573e+10", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.512810104228409918190743070957013357446861162954554120244345275e+08L, "2.512810104228409918190743070957013357446861162954554120244345275e+08", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.586025460907685522041021408846741988415862331430490056017676558e+06L, "1.586025460907685522041021408846741988415862331430490056017676558e+06", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.540359114012197595748944623835295064565126012703153392373623351e+03L, "8.540359114012197595748944623835295064565126012703153392373623351e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.845554430040583564794301575257907183920519062724643766057340299e+01L, "3.845554430040583564794301575257907183920519062724643766057340299e+01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.408536849955106342184570268692357634552350288861587703063273018e-01L, "1.408536849955106342184570268692357634552350288861587703063273018e-01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.030953654039823541442226125506893371879437951634029024402619056e-04L, "4.030953654039823541442226125506893371879437951634029024402619056e-04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.454172918244607114802676127860508419821673596398248024962237789e-07L, "8.454172918244607114802676127860508419821673596398248024962237789e-07", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.155627562127299657410444702080985966726894475302009989071093439e-09L, "1.155627562127299657410444702080985966726894475302009989071093439e-09", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.725246714864934496649491688787278190129598018071339049048385845e-13L, "7.725246714864934496649491688787278190129598018071339049048385845e-13", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: static const T denom[48] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.000000000000000000000000000000000000000000000000000000000000000e+00L, "0.000000000000000000000000000000000000000000000000000000000000000e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.502622159812088949850305428800254892961651752960000000000000000e+57L, "5.502622159812088949850305428800254892961651752960000000000000000e+57", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.430336111272256671478593169569751383305061494947840000000000000e+58L, "2.430336111272256671478593169569751383305061494947840000000000000e+58", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.920361290698585974808779016476219830728024276336640000000000000e+58L, "4.920361290698585974808779016476219830728024276336640000000000000e+58", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.149178946896205138947217427059336370288899808821248000000000000e+58L, "6.149178946896205138947217427059336370288899808821248000000000000e+58", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.374105269656119699331051574067858017333550280343552000000000000e+58L, "5.374105269656119699331051574067858017333550280343552000000000000e+58", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.521316226597066883749849655326023294027593332332429312000000000e+58L, "3.521316226597066883749849655326023294027593332332429312000000000e+58", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.808864152650289891915479515152146571014320216782405632000000000e+58L, "1.808864152650289891915479515152146571014320216782405632000000000e+58", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.514810409642252571378917003183814999063638859346214912000000000e+57L, "7.514810409642252571378917003183814999063638859346214912000000000e+57", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.583350992233550434239775839017811699814141926043903590400000000e+57L, "2.583350992233550434239775839017811699814141926043903590400000000e+57", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.478403249251559174520099458337662519939088809134875607040000000e+56L, "7.478403249251559174520099458337662519939088809134875607040000000e+56", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.848344883280695333961708798743230793633983609036568330240000000e+56L, "1.848344883280695333961708798743230793633983609036568330240000000e+56", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.943873277267014936040757307088314776495222166971439104000000000e+55L, "3.943873277267014936040757307088314776495222166971439104000000000e+55", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.331069721888505257142927693659482094449571844495257600000000000e+54L, "7.331069721888505257142927693659482094449571844495257600000000000e+54", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.196124539826947758881834650235619760202156354268084224000000000e+54L, "1.196124539826947758881834650235619760202156354268084224000000000e+54", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.723744838816127002822609734027860811982593574672547840000000000e+53L, "1.723744838816127002822609734027860811982593574672547840000000000e+53", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.205691767196054136766333529400075228162139411801728000000000000e+52L, "2.205691767196054136766333529400075228162139411801728000000000000e+52", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.517213632743192166819003098472340901249838381523200000000000000e+51L, "2.517213632743192166819003098472340901249838381523200000000000000e+51", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.571722144655713179046526371841394014407124514352640000000000000e+50L, "2.571722144655713179046526371841394014407124514352640000000000000e+50", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.359512744028577584409389641902976782871564427046400000000000000e+49L, "2.359512744028577584409389641902976782871564427046400000000000000e+49", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.949188285585060392916084953872833077002135851920000000000000000e+48L, "1.949188285585060392916084953872833077002135851920000000000000000e+48", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.452967188675463645529736303316005271151737332000000000000000000e+47L, "1.452967188675463645529736303316005271151737332000000000000000000e+47", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.790015208782962556675223159728484084908850744000000000000000000e+45L, "9.790015208782962556675223159728484084908850744000000000000000000e+45", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.970673071264242753610155919125826961862567840000000000000000000e+44L, "5.970673071264242753610155919125826961862567840000000000000000000e+44", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.299166890445957751586491053313346243255473500000000000000000000e+43L, "3.299166890445957751586491053313346243255473500000000000000000000e+43", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.652735578141047520337049888545244673386975000000000000000000000e+42L, "1.652735578141047520337049888545244673386975000000000000000000000e+42", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.508428802270485256066710729742536448661900000000000000000000000e+40L, "7.508428802270485256066710729742536448661900000000000000000000000e+40", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.093294777021479729147119238554967297499000000000000000000000000e+39L, "3.093294777021479729147119238554967297499000000000000000000000000e+39", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.155176275192359061296447275633302204250000000000000000000000000e+38L, "1.155176275192359061296447275633302204250000000000000000000000000e+38", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.907505708457079284974986712721395225000000000000000000000000000e+36L, "3.907505708457079284974986712721395225000000000000000000000000000e+36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.195848283940498442888394846136646210000000000000000000000000000e+35L, "1.195848283940498442888394846136646210000000000000000000000000000e+35", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.305934675041764670409270520636101000000000000000000000000000000e+33L, "3.305934675041764670409270520636101000000000000000000000000000000e+33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.238840089027488915014959267151000000000000000000000000000000000e+31L, "8.238840089027488915014959267151000000000000000000000000000000000e+31", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.846167161648076059624793804150000000000000000000000000000000000e+30L, "1.846167161648076059624793804150000000000000000000000000000000000e+30", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.707826341119682695847826052600000000000000000000000000000000000e+28L, "3.707826341119682695847826052600000000000000000000000000000000000e+28", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.648183019818072129964867660000000000000000000000000000000000000e+26L, "6.648183019818072129964867660000000000000000000000000000000000000e+26", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.059080011923383455919277000000000000000000000000000000000000000e+25L, "1.059080011923383455919277000000000000000000000000000000000000000e+25", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.490144286132397218940500000000000000000000000000000000000000000e+23L, "1.490144286132397218940500000000000000000000000000000000000000000e+23", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.838362455658776519186000000000000000000000000000000000000000000e+21L, "1.838362455658776519186000000000000000000000000000000000000000000e+21", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.970532718044669378600000000000000000000000000000000000000000000e+19L, "1.970532718044669378600000000000000000000000000000000000000000000e+19", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.814183952293757550000000000000000000000000000000000000000000000e+17L, "1.814183952293757550000000000000000000000000000000000000000000000e+17", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.413370614847675000000000000000000000000000000000000000000000000e+15L, "1.413370614847675000000000000000000000000000000000000000000000000e+15", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.134958017031000000000000000000000000000000000000000000000000000e+12L, "9.134958017031000000000000000000000000000000000000000000000000000e+12", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.765795079100000000000000000000000000000000000000000000000000000e+10L, "4.765795079100000000000000000000000000000000000000000000000000000e+10", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.928125650000000000000000000000000000000000000000000000000000000e+08L, "1.928125650000000000000000000000000000000000000000000000000000000e+08", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.675250000000000000000000000000000000000000000000000000000000000e+05L, "5.675250000000000000000000000000000000000000000000000000000000000e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.081000000000000000000000000000000000000000000000000000000000000e+03L, "1.081000000000000000000000000000000000000000000000000000000000000e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.000000000000000000000000000000000000000000000000000000000000000e+00L, "1.000000000000000000000000000000000000000000000000000000000000000e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: return boost::math::tools::evaluate_rational(num, denom, z);
23866: }
23866:
23866:
23866: template<class T>
23866: static T lanczos_sum_near_1(const T& dz)
23866: {
23866: static const T d[47] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.059629332377126683204423480567078764834299559082175332563440691e+01L, "1.059629332377126683204423480567078764834299559082175332563440691e+01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.045539783916612448318159279915745234781500064405838259582295756e+02L, "-1.045539783916612448318159279915745234781500064405838259582295756e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.784116147862702971548198855631720823614071322755242269800139953e+02L, "4.784116147862702971548198855631720823614071322755242269800139953e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.347627123899697763041970836639890836066182746484603984701614322e+03L, "-1.347627123899697763041970836639890836066182746484603984701614322e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.616287350264343765684251764154979472791739226517501453422663702e+03L, "2.616287350264343765684251764154979472791739226517501453422663702e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.713882062539651653939339395399443747287004395732955159091898814e+03L, "-3.713882062539651653939339395399443747287004395732955159091898814e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.991169606573224259776909844091992693404451938778998047720606365e+03L, "3.991169606573224259776909844091992693404451938778998047720606365e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.317302161605094814956529918647229867233820698992970037871348037e+03L, "-3.317302161605094814956529918647229867233820698992970037871348037e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.160243421312714521088457044577429625205805822189897013706603525e+03L, "2.160243421312714521088457044577429625205805822189897013706603525e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.109943233027050100899811890306430189301581767622560123811853152e+03L, "-1.109943233027050100899811890306430189301581767622560123811853152e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.510589694767723034579229465791750718722450232983242500655372350e+02L, "4.510589694767723034579229465791750718722450232983242500655372350e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.447631000703120050516586541372187152390222336990410786008441418e+02L, "-1.447631000703120050516586541372187152390222336990410786008441418e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.650513815713423478665128697883383003943391843803280033790640056e+01L, "3.650513815713423478665128697883383003943391843803280033790640056e+01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -7.169833252147741984016531016457108860830636610643268300442548571e+00L, "-7.169833252147741984016531016457108860830636610643268300442548571e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.082891222574188256195988224106955541928146669677565424595939508e+00L, "1.082891222574188256195988224106955541928146669677565424595939508e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.236107424816170540654753273736991964308279435358993150196240041e-01L, "-1.236107424816170540654753273736991964308279435358993150196240041e-01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.042295614972976540486053879488442847688158698802215145729595300e-02L, "1.042295614972976540486053879488442847688158698802215145729595300e-02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -6.301008161384761854991230670333450694872613042265540662425668275e-04L, "-6.301008161384761854991230670333450694872613042265540662425668275e-04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.626174700692043436308812511757112824553679923076031241653340508e-05L, "2.626174700692043436308812511757112824553679923076031241653340508e-05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -7.165638597797307942127436742547456896168876912136407736672893749e-07L, "-7.165638597797307942127436742547456896168876912136407736672893749e-07", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.193760947891421842393017150194414897043594152709554867681454093e-08L, "1.193760947891421842393017150194414897043594152709554867681454093e-08", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.102566205604210639065160857917396944102487766555058309172771685e-10L, "-1.102566205604210639065160857917396944102487766555058309172771685e-10", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.915816623470797626925445072607835810426224865943397673652473644e-13L, "4.915816623470797626925445072607835810426224865943397673652473644e-13", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -8.588275837841705058968991523347781566219989845111381889185487327e-16L, "-8.588275837841705058968991523347781566219989845111381889185487327e-16", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.200550301285945062259329336559146630395284987411539369061121774e-19L, "4.200550301285945062259329336559146630395284987411539369061121774e-19", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.164333226683698411437894680594408940426530663957731548446585176e-23L, "-3.164333226683698411437894680594408940426530663957731548446585176e-23", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.066415481671710192926882432742434212829003971627792457166443068e-28L, "1.066415481671710192926882432742434212829003971627792457166443068e-28", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.794259516500627365643093960688415401054083199354112116216326548e-35L, "1.794259516500627365643093960688415401054083199354112116216326548e-35", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -4.109766027021453750770079684473469373477285891593627979028234104e-35L, "-4.109766027021453750770079684473469373477285891593627979028234104e-35", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.857040454431507009464118652247309465880198950544005451066913133e-35L, "7.857040454431507009464118652247309465880198950544005451066913133e-35", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.257636833252205356462338019252188768182918234805529456629813332e-34L, "-1.257636833252205356462338019252188768182918234805529456629813332e-34", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.657386968948568677903872677704817552898314429680193647771915640e-34L, "1.657386968948568677903872677704817552898314429680193647771915640e-34", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.807368757318279512579151153998249666772948741065806312921477647e-34L, "-1.807368757318279512579151153998249666772948741065806312921477647e-34", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.661046240741398691824399424582067048482718145278248186045239803e-34L, "1.661046240741398691824399424582067048482718145278248186045239803e-34", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.310274358393495831279259654715581878034928245769119610060724565e-34L, "-1.310274358393495831279259654715581878034928245769119610060724565e-34", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.979289812994200254512860775692570111131240734486735844065571645e-35L, "8.979289812994200254512860775692570111131240734486735844065571645e-35", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -5.374132043246630393307108400571746261019561481928368054130159659e-35L, "-5.374132043246630393307108400571746261019561481928368054130159659e-35", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.807680467889122570534300256450516518962725443297886143108832476e-35L, "2.807680467889122570534300256450516518962725443297886143108832476e-35", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.273791157694681089776609329544693948790210894828257493359951461e-35L, "-1.273791157694681089776609329544693948790210894828257493359951461e-35", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.971177216154470328027539744763226999793762414262864963697237346e-36L, "4.971177216154470328027539744763226999793762414262864963697237346e-36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.645869582759689501568146144102914403686604774258048281344406053e-36L, "-1.645869582759689501568146144102914403686604774258048281344406053e-36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.533836765077295478897031652308024155740827573708543095934776509e-37L, "4.533836765077295478897031652308024155740827573708543095934776509e-37", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.011071482407693628614243045457397049948479637840391111641112292e-37L, "-1.011071482407693628614243045457397049948479637840391111641112292e-37", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.753334959707221495336088007359122169612976692723773645699626150e-38L, "1.753334959707221495336088007359122169612976692723773645699626150e-38", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.217604773736938924265403811396189809599754278055061061653740309e-39L, "-2.217604773736938924265403811396189809599754278055061061653740309e-39", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.819104328189909539214493755590516594857915205552841395610714917e-40L, "1.819104328189909539214493755590516594857915205552841395610714917e-40", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -7.261124772729210946163851510369531392121538686694430629664292782e-42L, "-7.261124772729210946163851510369531392121538686694430629664292782e-42", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: T result = 0;
23866: for (unsigned k = 1; k <= sizeof(d) / sizeof(d[0]); ++k)
23866: {
23866: result += (-d[k - 1] * dz) / (k * dz + k * k);
23866: }
23866: return result;
23866: }
23866:
23866: template<class T>
23866: static T lanczos_sum_near_2(const T& dz)
23866: {
23866: static const T d[47] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.201442621036266842137537764128372139686555918574926377003612763e+02L, "1.201442621036266842137537764128372139686555918574926377003612763e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.185467427150643969519910927764836582205108528009141221591420898e+03L, "-1.185467427150643969519910927764836582205108528009141221591420898e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.424388386017623557963301151646679462091516489317860889362683594e+03L, "5.424388386017623557963301151646679462091516489317860889362683594e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.527983998220780910263892115033927387104053611029099941633323011e+04L, "-1.527983998220780910263892115033927387104053611029099941633323011e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.966432728352315714505545454293409301356907573727621630702827634e+04L, "2.966432728352315714505545454293409301356907573727621630702827634e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -4.210921746972897898551337991192707389898034825880579655985363009e+04L, "-4.210921746972897898551337991192707389898034825880579655985363009e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.525319492963037163576188790739239848749059077112768508582824310e+04L, "4.525319492963037163576188790739239848749059077112768508582824310e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.761266399512640929192286468240357629226481512485264527650043412e+04L, "-3.761266399512640929192286468240357629226481512485264527650043412e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.449355108314973517543246836489412427594992113516547680523282212e+04L, "2.449355108314973517543246836489412427594992113516547680523282212e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.258490177973741431378782429416242097479994678322390199981700552e+04L, "-1.258490177973741431378782429416242097479994678322390199981700552e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.114255088752286384038861754183366335220682008583459292808501983e+03L, "5.114255088752286384038861754183366335220682008583459292808501983e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.641371685961506906939690430062582517060728808639566257675679493e+03L, "-1.641371685961506906939690430062582517060728808639566257675679493e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.139072742579462987548668350779672609568514018384674745960251434e+02L, "4.139072742579462987548668350779672609568514018384674745960251434e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -8.129392978890804438983060711164783076784089453197491087525720250e+01L, "-8.129392978890804438983060711164783076784089453197491087525720250e+01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.227817717944841986447189375517242505918979312023367060292099051e+01L, "1.227817717944841986447189375517242505918979312023367060292099051e+01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.401539292067249253713639886818857395065226008969910929456090178e+00L, "-1.401539292067249253713639886818857395065226008969910929456090178e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.181789081601278618540976740818676551399023595924451938057596056e-01L, "1.181789081601278618540976740818676551399023595924451938057596056e-01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -7.144290488450459735914078985115746320918090890348935029860425141e-03L, "-7.144290488450459735914078985115746320918090890348935029860425141e-03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.977643331768050273059868974450773270172308183228656321879824795e-04L, "2.977643331768050273059868974450773270172308183228656321879824795e-04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -8.124636941696344229278652214634921673116603924841964381194849043e-06L, "-8.124636941696344229278652214634921673116603924841964381194849043e-06", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.353525462444406600575359080915245707387262742058104197063680358e-07L, "1.353525462444406600575359080915245707387262742058104197063680358e-07", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.250125861423094782405286690199652039727315544398975014264972834e-09L, "-1.250125861423094782405286690199652039727315544398975014264972834e-09", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.573714720964717327652547152474097356959063887913062262865877352e-12L, "5.573714720964717327652547152474097356959063887913062262865877352e-12", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -9.737669879005051560419153179757554889911318336987864449783329044e-15L, "-9.737669879005051560419153179757554889911318336987864449783329044e-15", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.762722217636305077074994367900679148917691897585712642440813437e-18L, "4.762722217636305077074994367900679148917691897585712642440813437e-18", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.587825185218585020252537180920386716805319681061835516115435092e-22L, "-3.587825185218585020252537180920386716805319681061835516115435092e-22", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.209136980512837161314713015292452549173388035330975386269996826e-27L, "1.209136980512837161314713015292452549173388035330975386269996826e-27", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.034390508507134900778125110328032318737425888723900242108805840e-34L, "2.034390508507134900778125110328032318737425888723900242108805840e-34", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -4.659788018772143666295222723749466460348336784193790467337277007e-34L, "-4.659788018772143666295222723749466460348336784193790467337277007e-34", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.908571128342935499766722474863105091718059244706787068658556651e-34L, "8.908571128342935499766722474863105091718059244706787068658556651e-34", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.425950044120254934054607924023969978647876123112048584684333719e-33L, "-1.425950044120254934054607924023969978647876123112048584684333719e-33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.879199908120536747953526966437055347446296944118172532473563579e-33L, "1.879199908120536747953526966437055347446296944118172532473563579e-33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.049254197314637745167349860869170443784687973315125511356920644e-33L, "-2.049254197314637745167349860869170443784687973315125511356920644e-33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.883348910945891785870183207161008885784794173754432580579430117e-33L, "1.883348910945891785870183207161008885784794173754432580579430117e-33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.485632203001929498321635338807138918181560966989477820879657556e-33L, "-1.485632203001929498321635338807138918181560966989477820879657556e-33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.018101439657813295290872898460623215815148336073781084176896879e-33L, "1.018101439657813295290872898460623215815148336073781084176896879e-33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -6.093367832078140478972419022586567008505333455627897676553352131e-34L, "-6.093367832078140478972419022586567008505333455627897676553352131e-34", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.183440545955440848970303491445824299419388286256245840846211512e-34L, "3.183440545955440848970303491445824299419388286256245840846211512e-34", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.444266348988579122529259208173467560400718346248315966198898381e-34L, "-1.444266348988579122529259208173467560400718346248315966198898381e-34", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.636484383471871096369253024129613184534143941833907586683970329e-35L, "5.636484383471871096369253024129613184534143941833907586683970329e-35", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.866141116496477515961611479835778926021343627571438400431425496e-35L, "-1.866141116496477515961611479835778926021343627571438400431425496e-35", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.140613382384541819628458619521408963917801187880958447868987984e-36L, "5.140613382384541819628458619521408963917801187880958447868987984e-36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.146386132171160390143187663792496413753249459594650450672610453e-36L, "-1.146386132171160390143187663792496413753249459594650450672610453e-36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.987988898740147227778865012441676866493607979490727350027458052e-37L, "1.987988898740147227778865012441676866493607979490727350027458052e-37", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.514393298082843730831623322496784440966181704206301582735570257e-38L, "-2.514393298082843730831623322496784440966181704206301582735570257e-38", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.062560373914843383483799612278119836498689222815662595453851079e-39L, "2.062560373914843383483799612278119836498689222815662595453851079e-39", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -8.232902310328177520527925464546117674377821202617522000849431630e-41L, "-8.232902310328177520527925464546117674377821202617522000849431630e-41", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((201 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: };
23866: T result = 0;
23866: T z = dz + 2;
23866: for (unsigned k = 1; k <= sizeof(d) / sizeof(d[0]); ++k)
23866: {
23866: result += (-d[k - 1] * dz) / (z + k * z + k * k - 1);
23866: }
23866: return result;
23866: }
23866:
23866: static double g() { return 2.880805098265409469604492187500000000000000000000000000000000000e+01; }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: struct lanczos49MP : public boost::integral_constant<int, 234>
23866: {
23866: template <class T>
23866: static T lanczos_sum(const T& z)
23866: {
23866: static const T num[49] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.5742499367008530642617319352897520430205552639474773193534726699460038382e+74L, "1.5742499367008530642617319352897520430205552639474773193534726699460038382e+74", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.2055424563420473601452029826557352738661904429902299059433513914586136617e+74L, "2.2055424563420473601452029826557352738661904429902299059433513914586136617e+74", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.5124573975150897396579361228988665521507891014129938036244581220575769357e+74L, "1.5124573975150897396579361228988665521507891014129938036244581220575769357e+74", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.7657855450073472861630911067774749012357295936579551712546801770340228765e+73L, "6.7657855450073472861630911067774749012357295936579551712546801770340228765e+73", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.2200724511833181761435003548793565030399736349888521665887428093215263908e+73L, "2.2200724511833181761435003548793565030399736349888521665887428093215263908e+73", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.6969626159645181170657767707096364240775930310958541253756412108457464465e+72L, "5.6969626159645181170657767707096364240775930310958541253756412108457464465e+72", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1902838064351166646672468793217979804852505454197638767497901741630038659e+72L, "1.1902838064351166646672468793217979804852505454197638767497901741630038659e+72", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.0815524946284433112181691476757266928589723434617417902816279882371678020e+71L, "2.0815524946284433112181691476757266928589723434617417902816279882371678020e+71", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.1085775474754412572785597234367295850853434122501232697548485520290211685e+70L, "3.1085775474754412572785597234367295850853434122501232697548485520290211685e+70", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.0248876219420480494671692552535249842631934230477107608175338135254767453e+69L, "4.0248876219420480494671692552535249842631934230477107608175338135254767453e+69", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.5717898581583284547576613790182065259217990496576104453319232531339965508e+68L, "4.5717898581583284547576613790182065259217990496576104453319232531339965508e+68", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.5987266955225124754687270016251985476100549398788271466921127242855554305e+67L, "4.5987266955225124754687270016251985476100549398788271466921127242855554305e+67", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.1277201593916609119851488898621364059725185338025069187337522019022532875e+66L, "4.1277201593916609119851488898621364059725185338025069187337522019022532875e+66", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.3266912844842724918464413240523721967983751112927460422203771012324285814e+65L, "3.3266912844842724918464413240523721967983751112927460422203771012324285814e+65", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.4198349306520385923755583127019190414798256355752152907538684107889754415e+64L, "2.4198349306520385923755583127019190414798256355752152907538684107889754415e+64", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.5954968135971263467860541616149005468520952700568675174669869313790120813e+63L, "1.5954968135971263467860541616149005468520952700568675174669869313790120813e+63", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.5697573028906337479684490638442403255222113759866980140004921288934014321e+61L, "9.5697573028906337479684490638442403255222113759866980140004921288934014321e+61", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.2372180596212313667398562038281895205587396825353276904411403952354592724e+60L, "5.2372180596212313667398562038281895205587396825353276904411403952354592724e+60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.6216537416683580103634264243351068913266542152026155538733152213171424662e+59L, "2.6216537416683580103634264243351068913266542152026155538733152213171424662e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2028581946420676660634538276758371308595650705510961727364638531545389749e+58L, "1.2028581946420676660634538276758371308595650705510961727364638531545389749e+58", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.0668609223671045472881034712995505846341571161239968651357297157517601241e+56L, "5.0668609223671045472881034712995505846341571161239968651357297157517601241e+56", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.9620881267196496193861934343921326919697524102893094861578977849944522047e+55L, "1.9620881267196496193861934343921326919697524102893094861578977849944522047e+55", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.9917155089797622879653341069010820156774380191279115491781432309218621096e+53L, "6.9917155089797622879653341069010820156774380191279115491781432309218621096e+53", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.2942244374439765758128985411022615606270110470067503605960457871147797553e+52L, "2.2942244374439765758128985411022615606270110470067503605960457871147797553e+52", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.9351028342882568351470704633625779062510316389795468890729515726996746376e+50L, "6.9351028342882568351470704633625779062510316389795468890729515726996746376e+50", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.9314927110707228066333377498237626208657080992885612416826068446390297282e+49L, "1.9314927110707228066333377498237626208657080992885612416826068446390297282e+49", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.9556005176089621449765653988254594966772984328873034691437246673533838584e+47L, "4.9556005176089621449765653988254594966772984328873034691437246673533838584e+47", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1708002669765411191695114973458120651885979389757503801447241827647515479e+46L, "1.1708002669765411191695114973458120651885979389757503801447241827647515479e+46", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.5453624823926493383313636717841737625222638948016893410076575426986147237e+44L, "2.5453624823926493383313636717841737625222638948016893410076575426986147237e+44", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.0870291142516923896770486348199039577071847823857246263136765980806245584e+42L, "5.0870291142516923896770486348199039577071847823857246263136765980806245584e+42", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.3337301613565742543387644582305705841930917569470575861418313137426853827e+40L, "9.3337301613565742543387644582305705841930917569470575861418313137426853827e+40", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.5696392889303372910143506267477452989689410812923616782357472172107995484e+39L, "1.5696392889303372910143506267477452989689410812923616782357472172107995484e+39", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.4143864855807616500285749805611035801672647319221651520900664580210701417e+37L, "2.4143864855807616500285749805611035801672647319221651520900664580210701417e+37", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.3883950248556863481116504212968387826172322376709179509012607292972789664e+35L, "3.3883950248556863481116504212968387826172322376709179509012607292972789664e+35", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.3257340722619328574784440823494550029955992275874284892851081786012219555e+33L, "4.3257340722619328574784440823494550029955992275874284892851081786012219555e+33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.0054658629154523660536922265411423770787857332470130847913952020455172951e+31L, "5.0054658629154523660536922265411423770787857332470130847913952020455172951e+31", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.2273347597734780854875327656763513602785317406227796368685036961474823856e+29L, "5.2273347597734780854875327656763513602785317406227796368685036961474823856e+29", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.9014441058506987415445336961216002315976811002826148787399813116200761040e+27L, "4.9014441058506987415445336961216002315976811002826148787399813116200761040e+27", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.1007719003538290551470147047960192204273669359908829249030378418530058831e+25L, "4.1007719003538290551470147047960192204273669359908829249030378418530058831e+25", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.0380905019192393560853564871253022486270254732200016399586810852416299561e+23L, "3.0380905019192393560853564871253022486270254732200016399586810852416299561e+23", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.9744635849298784873006356360567530952404226257040467086536310864153303851e+21L, "1.9744635849298784873006356360567530952404226257040467086536310864153303851e+21", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1124649237555162417911032704785227088470234269296071198905173077670702197e+19L, "1.1124649237555162417911032704785227088470234269296071198905173077670702197e+19", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.3521744565441850034376761928380748678988834367585778746740882700228177944e+16L, "5.3521744565441850034376761928380748678988834367585778746740882700228177944e+16", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.1551192264984335079683102449711150606277601324509245213720618349409077054e+14L, "2.1551192264984335079683102449711150606277601324509245213720618349409077054e+14", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.0649463728846790219460420909345995584550543072052058591106589782466481621e+11L, "7.0649463728846790219460420909345995584550543072052058591106589782466481621e+11", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.8110794685236845669275412185521099716923991533427218655037515888279356458e+09L, "1.8110794685236845669275412185521099716923991533427218655037515888279356458e+09", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.4051945147325155571782612757500183884572379142638708146516926708747795902e+06L, "3.4051945147325155571782612757500183884572379142638708146516926708747795902e+06", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.1761279721833493440329993975995822357104129877086617643903445974526391316e+03L, "4.1761279721833493440329993975995822357104129877086617643903445974526391316e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.5066282746310005024157652848110452530069867406099383166299235756022800280e+00L, "2.5066282746310005024157652848110452530069867406099383166299235756022800280e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: static const T denom[49] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.0000000000000000000000000000000000000000000000000000000000000000000000000e+00L, "0.0000000000000000000000000000000000000000000000000000000000000000000000000e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.5862324151116818064296435515361197996919763238912000000000000000000000000e+59L, "2.5862324151116818064296435515361197996919763238912000000000000000000000000e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1477605944577727245447890951265834050463405543784448000000000000000000000e+60L, "1.1477605944577727245447890951265834050463405543784448000000000000000000000e+60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.3368731677410579748749120694395208342752220248276992000000000000000000000e+60L, "2.3368731677410579748749120694395208342752220248276992000000000000000000000e+60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.9393177179482022750532799808826502923430631529093529600000000000000000000e+60L, "2.9393177179482022750532799808826502923430631529093529600000000000000000000e+60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.5873212662073383100750664140824866318496576298496819200000000000000000000e+60L, "2.5873212662073383100750664140824866318496576298496819200000000000000000000e+60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.7087596791971826323557398537439095283663043689996772966400000000000000000e+60L, "1.7087596791971826323557398537439095283663043689996772966400000000000000000e+60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.8537931401160691803777386867476912131700643521105494016000000000000000000e+59L, "8.8537931401160691803777386867476912131700643521105494016000000000000000000e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.7128473077968876977396389430116077066613422855709615718400000000000000000e+59L, "3.7128473077968876977396389430116077066613422855709615718400000000000000000e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2893230704461912298064838143702096489032830938340968366080000000000000000e+59L, "1.2893230704461912298064838143702096489032830938340968366080000000000000000e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.7731846263715878554484243293204825543527859328977818943488000000000000000e+58L, "3.7731846263715878554484243293204825543527859328977818943488000000000000000e+58", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.4350612763444239870720412999269509820736318433853587128320000000000000000e+57L, "9.4350612763444239870720412999269509820736318433853587128320000000000000000e+57", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.0384549286435665533353268142058310243161527793802332119040000000000000000e+57L, "2.0384549286435665533353268142058310243161527793802332119040000000000000000e+57", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.8399900970142989644612517467287880620408209836099149824000000000000000000e+56L, "3.8399900970142989644612517467287880620408209836099149824000000000000000000e+56", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.3548923093755049924589156254733610823950920495095216128000000000000000000e+55L, "6.3548923093755049924589156254733610823950920495095216128000000000000000000e+55", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.2977252822627446721481004001665655765203461552290590720000000000000000000e+54L, "9.2977252822627446721481004001665655765203461552290590720000000000000000000e+54", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2090496144637581445624377322208214384344648810140669440000000000000000000e+54L, "1.2090496144637581445624377322208214384344648810140669440000000000000000000e+54", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.4036595841089057320815648092220077464036379804960768000000000000000000000e+53L, "1.4036595841089057320815648092220077464036379804960768000000000000000000000e+53", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.4604307712625044108337677046126892768963323598980608000000000000000000000e+52L, "1.4604307712625044108337677046126892768963323598980608000000000000000000000e+52", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.3661432041590027825770657688785384893903477321470720000000000000000000000e+51L, "1.3661432041590027825770657688785384893903477321470720000000000000000000000e+51", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1520697686278361431114988925105292244781602931070400000000000000000000000e+50L, "1.1520697686278361431114988925105292244781602931070400000000000000000000000e+50", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.7781340723597395269058455794580578514153013123200000000000000000000000000e+48L, "8.7781340723597395269058455794580578514153013123200000000000000000000000000e+48", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.0542743368034560471670911883883927910588971816800000000000000000000000000e+47L, "6.0542743368034560471670911883883927910588971816800000000000000000000000000e+47", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.7852178643724903498642955979619870805662919592000000000000000000000000000e+46L, "3.7852178643724903498642955979619870805662919592000000000000000000000000000e+46", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.1476757456360244186066663869698554305163293290000000000000000000000000000e+45L, "2.1476757456360244186066663869698554305163293290000000000000000000000000000e+45", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1067024107708881097170625529475996208174256000000000000000000000000000000e+44L, "1.1067024107708881097170625529475996208174256000000000000000000000000000000e+44", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.1816971152081755906884039315242368042580680000000000000000000000000000000e+42L, "5.1816971152081755906884039315242368042580680000000000000000000000000000000e+42", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.2046914254271439983058171150950882746907200000000000000000000000000000000e+41L, "2.2046914254271439983058171150950882746907200000000000000000000000000000000e+41", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.5226232704255673172404214340314876574740000000000000000000000000000000000e+39L, "8.5226232704255673172404214340314876574740000000000000000000000000000000000e+39", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.9917039581671863252346910306123579600000000000000000000000000000000000000e+38L, "2.9917039581671863252346910306123579600000000000000000000000000000000000000e+38", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.5279926429774219665504424895636324120000000000000000000000000000000000000e+36L, "9.5279926429774219665504424895636324120000000000000000000000000000000000000e+36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.7496375812101278379807519908356136800000000000000000000000000000000000000e+35L, "2.7496375812101278379807519908356136800000000000000000000000000000000000000e+35", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.1781895168846844604663013761970710000000000000000000000000000000000000000e+33L, "7.1781895168846844604663013761970710000000000000000000000000000000000000000e+33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.6915825748773446395251490146656000000000000000000000000000000000000000000e+32L, "1.6915825748773446395251490146656000000000000000000000000000000000000000000e+32", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.5888455419743269266732720488720000000000000000000000000000000000000000000e+30L, "3.5888455419743269266732720488720000000000000000000000000000000000000000000e+30", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.8324723604341765969313138528000000000000000000000000000000000000000000000e+28L, "6.8324723604341765969313138528000000000000000000000000000000000000000000000e+28", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1625859075857974372785469560000000000000000000000000000000000000000000000e+27L, "1.1625859075857974372785469560000000000000000000000000000000000000000000000e+27", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.7594478264056101488213120000000000000000000000000000000000000000000000000e+25L, "1.7594478264056101488213120000000000000000000000000000000000000000000000000e+25", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.3541746402920221829579200000000000000000000000000000000000000000000000000e+23L, "2.3541746402920221829579200000000000000000000000000000000000000000000000000e+23", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.7645128331397711271280000000000000000000000000000000000000000000000000000e+21L, "2.7645128331397711271280000000000000000000000000000000000000000000000000000e+21", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.8231991756227354271000000000000000000000000000000000000000000000000000000e+19L, "2.8231991756227354271000000000000000000000000000000000000000000000000000000e+19", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.4784681412721648000000000000000000000000000000000000000000000000000000000e+17L, "2.4784681412721648000000000000000000000000000000000000000000000000000000000e+17", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.8427136416481320000000000000000000000000000000000000000000000000000000000e+15L, "1.8427136416481320000000000000000000000000000000000000000000000000000000000e+15", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1374881704208000000000000000000000000000000000000000000000000000000000000e+13L, "1.1374881704208000000000000000000000000000000000000000000000000000000000000e+13", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.6720141346000000000000000000000000000000000000000000000000000000000000000e+10L, "5.6720141346000000000000000000000000000000000000000000000000000000000000000e+10", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.1948624000000000000000000000000000000000000000000000000000000000000000000e+08L, "2.1948624000000000000000000000000000000000000000000000000000000000000000000e+08", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.1833200000000000000000000000000000000000000000000000000000000000000000000e+05L, "6.1833200000000000000000000000000000000000000000000000000000000000000000000e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1280000000000000000000000000000000000000000000000000000000000000000000000e+03L, "1.1280000000000000000000000000000000000000000000000000000000000000000000000e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0000000000000000000000000000000000000000000000000000000000000000000000000e+00L, "1.0000000000000000000000000000000000000000000000000000000000000000000000000e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: return boost::math::tools::evaluate_rational(num, denom, z);
23866: }
23866:
23866: template <class T>
23866: static T lanczos_sum_expG_scaled(const T& z)
23866: {
23866: static const T num[49] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.9156595384723483714761513394165493705512008185104458104037189919966679583e+59L, "8.9156595384723483714761513394165493705512008185104458104037189919966679583e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2490942626049052041642905803851633038401948356209065994820093902482046488e+60L, "1.2490942626049052041642905803851633038401948356209065994820093902482046488e+60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.5657016133969059292054137486140786946523144967749946090276991389460410256e+59L, "8.5657016133969059292054137486140786946523144967749946090276991389460410256e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.8317575261281828541202228096164333127703313535243593976139496326255603885e+59L, "3.8317575261281828541202228096164333127703313535243593976139496326255603885e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2573232282907489549580534670684496645767812633106925447384772399512629009e+59L, "1.2573232282907489549580534670684496645767812633106925447384772399512629009e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.2264367876545276188760221330510623567338280567044843125670581811561508361e+58L, "3.2264367876545276188760221330510623567338280567044843125670581811561508361e+58", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.7410929642927466039608438519399985289266866350365951941371580436768272283e+57L, "6.7410929642927466039608438519399985289266866350365951941371580436768272283e+57", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1788733746089745519939950216688781077254011132768568000829003039800512115e+57L, "1.1788733746089745519939950216688781077254011132768568000829003039800512115e+57", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.7605221646260701306188822826505483714178735327624200723152581930359377597e+56L, "1.7605221646260701306188822826505483714178735327624200723152581930359377597e+56", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.2794682649344687478785548483237660272987192396957769664741689026760236827e+55L, "2.2794682649344687478785548483237660272987192396957769664741689026760236827e+55", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.5892026994266264487972781655291611074377224857532819461836222961458821278e+54L, "2.5892026994266264487972781655291611074377224857532819461836222961458821278e+54", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.6044581976409422084009086165534449955654966215396670231211076839220955529e+53L, "2.6044581976409422084009086165534449955654966215396670231211076839220955529e+53", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.3377067867856641370165698166594859838986332949917530009978864573093452852e+52L, "2.3377067867856641370165698166594859838986332949917530009978864573093452852e+52", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.8840494251009843798733373985085724953611000664053469151896413377742842585e+51L, "1.8840494251009843798733373985085724953611000664053469151896413377742842585e+51", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.3704573764322216880093728898018690177362850852138123977146826586562660042e+50L, "1.3704573764322216880093728898018690177362850852138123977146826586562660042e+50", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.0359898089375286965109471568127438755772335943188122764617864358438172366e+48L, "9.0359898089375286965109471568127438755772335943188122764617864358438172366e+48", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.4197682330664983610360781372995395147813463692379312665516728111546651975e+47L, "5.4197682330664983610360781372995395147813463692379312665516728111546651975e+47", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.9660635239520142135892297007271080519825235074724441273950199516718744758e+46L, "2.9660635239520142135892297007271080519825235074724441273950199516718744758e+46", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.4847561142331378363753305417832438611221296838300212519621989387291450611e+45L, "1.4847561142331378363753305417832438611221296838300212519621989387291450611e+45", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.8123071733863185211372790750342775813125583218947155817719674827525929182e+43L, "6.8123071733863185211372790750342775813125583218947155817719674827525929182e+43", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.8695828952857913310728321803468643286198192850402657393713980287261259638e+42L, "2.8695828952857913310728321803468643286198192850402657393713980287261259638e+42", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1112155264857128661506293440611411838336453876178977662636328219208269490e+41L, "1.1112155264857128661506293440611411838336453876178977662636328219208269490e+41", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.9597114546218224309028736968589856884375435031334606638164700453351137400e+39L, "3.9597114546218224309028736968589856884375435031334606638164700453351137400e+39", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2993187112308342042984815542969104496107563160266146124117192158716725839e+38L, "1.2993187112308342042984815542969104496107563160266146124117192158716725839e+38", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.9276492438289459104440745719026053099029450534209231660211458499968839130e+36L, "3.9276492438289459104440745719026053099029450534209231660211458499968839130e+36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0938880168568707970634270396301729019623679984385010064117584299386152912e+35L, "1.0938880168568707970634270396301729019623679984385010064117584299386152912e+35", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.8065713069852021979452626742757704686014267992443726831364663812595589478e+33L, "2.8065713069852021979452626742757704686014267992443726831364663812595589478e+33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.6307492378187334600766084298235996134621924808224715558467640454423842655e+31L, "6.6307492378187334600766084298235996134621924808224715558467640454423842655e+31", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.4415490682866089784509877074414842364885644695603000622810515902853301434e+30L, "1.4415490682866089784509877074414842364885644695603000622810515902853301434e+30", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.8810050162690958474575145223002401297790616292489104417882204295223485358e+28L, "2.8810050162690958474575145223002401297790616292489104417882204295223485358e+28", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.2860958353933214242194744963395870718749107497800918932121607454081905640e+26L, "5.2860958353933214242194744963395870718749107497800918932121607454081905640e+26", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.8895474422826652624342608217034044478811180021465482602156553101973142851e+24L, "8.8895474422826652624342608217034044478811180021465482602156553101973142851e+24", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.3673716858987747316948988327383411119224741422002091782489841976044254452e+23L, "1.3673716858987747316948988327383411119224741422002091782489841976044254452e+23", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.9189949269921720477131833122497011042624119182630703457459218878350720360e+21L, "1.9189949269921720477131833122497011042624119182630703457459218878350720360e+21", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.4498506458943304056122167501858896499220570899589497703614276271780187559e+19L, "2.4498506458943304056122167501858896499220570899589497703614276271780187559e+19", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.8348122127750881334333964077955476539118633228361300065573128691903485670e+17L, "2.8348122127750881334333964077955476539118633228361300065573128691903485670e+17", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.9604661829895068017545272035886457795302072787311442846001622570781400887e+15L, "2.9604661829895068017545272035886457795302072787311442846001622570781400887e+15", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.7759001843251065234667097315555616424286286440771094985162292676933917344e+13L, "2.7759001843251065234667097315555616424286286440771094985162292676933917344e+13", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.3224448199826427582356965293979283708473565146649764333289536983716495991e+11L, "2.3224448199826427582356965293979283708473565146649764333289536983716495991e+11", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.7206022964144885856033111994076522875074747824871090843993137657458226608e+09L, "1.7206022964144885856033111994076522875074747824871090843993137657458226608e+09", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1182242847179807470291498763391918222721736346452719834560856782062915656e+07L, "1.1182242847179807470291498763391918222721736346452719834560856782062915656e+07", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.3003709115482840946768994349442745995208542698397935766566883071074706882e+04L, "6.3003709115482840946768994349442745995208542698397935766566883071074706882e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.0311683127686139178455785110448360190741004055855567244689436514834230540e+02L, "3.0311683127686139178455785110448360190741004055855567244689436514834230540e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2205374026276431316033131273698903101132908812758212963153267146702515001e+00L, "1.2205374026276431316033131273698903101132908812758212963153267146702515001e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.0011852660581895977871209152278420195617235126960126683426738428884540341e-03L, "4.0011852660581895977871209152278420195617235126960126683426738428884540341e-03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0256927799097601645189517227865464454408483715314872385869625463116763013e-05L, "1.0256927799097601645189517227865464454408483715314872385869625463116763013e-05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.9285092060573954544191464750091257510108951419853791428165851425157303961e-08L, "1.9285092060573954544191464750091257510108951419853791428165851425157303961e-08", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.3651222287552713546296738256776548189076669986821606599921179638781057448e-11L, "2.3651222287552713546296738256776548189076669986821606599921179638781057448e-11", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.4196122080178359418232367999588103764109880361922878363699332724809241837e-14L, "1.4196122080178359418232367999588103764109880361922878363699332724809241837e-14", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: static const T denom[49] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.0000000000000000000000000000000000000000000000000000000000000000000000000e+00L, "0.0000000000000000000000000000000000000000000000000000000000000000000000000e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.5862324151116818064296435515361197996919763238912000000000000000000000000e+59L, "2.5862324151116818064296435515361197996919763238912000000000000000000000000e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1477605944577727245447890951265834050463405543784448000000000000000000000e+60L, "1.1477605944577727245447890951265834050463405543784448000000000000000000000e+60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.3368731677410579748749120694395208342752220248276992000000000000000000000e+60L, "2.3368731677410579748749120694395208342752220248276992000000000000000000000e+60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.9393177179482022750532799808826502923430631529093529600000000000000000000e+60L, "2.9393177179482022750532799808826502923430631529093529600000000000000000000e+60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.5873212662073383100750664140824866318496576298496819200000000000000000000e+60L, "2.5873212662073383100750664140824866318496576298496819200000000000000000000e+60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.7087596791971826323557398537439095283663043689996772966400000000000000000e+60L, "1.7087596791971826323557398537439095283663043689996772966400000000000000000e+60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.8537931401160691803777386867476912131700643521105494016000000000000000000e+59L, "8.8537931401160691803777386867476912131700643521105494016000000000000000000e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.7128473077968876977396389430116077066613422855709615718400000000000000000e+59L, "3.7128473077968876977396389430116077066613422855709615718400000000000000000e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2893230704461912298064838143702096489032830938340968366080000000000000000e+59L, "1.2893230704461912298064838143702096489032830938340968366080000000000000000e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.7731846263715878554484243293204825543527859328977818943488000000000000000e+58L, "3.7731846263715878554484243293204825543527859328977818943488000000000000000e+58", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.4350612763444239870720412999269509820736318433853587128320000000000000000e+57L, "9.4350612763444239870720412999269509820736318433853587128320000000000000000e+57", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.0384549286435665533353268142058310243161527793802332119040000000000000000e+57L, "2.0384549286435665533353268142058310243161527793802332119040000000000000000e+57", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.8399900970142989644612517467287880620408209836099149824000000000000000000e+56L, "3.8399900970142989644612517467287880620408209836099149824000000000000000000e+56", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.3548923093755049924589156254733610823950920495095216128000000000000000000e+55L, "6.3548923093755049924589156254733610823950920495095216128000000000000000000e+55", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.2977252822627446721481004001665655765203461552290590720000000000000000000e+54L, "9.2977252822627446721481004001665655765203461552290590720000000000000000000e+54", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2090496144637581445624377322208214384344648810140669440000000000000000000e+54L, "1.2090496144637581445624377322208214384344648810140669440000000000000000000e+54", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.4036595841089057320815648092220077464036379804960768000000000000000000000e+53L, "1.4036595841089057320815648092220077464036379804960768000000000000000000000e+53", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.4604307712625044108337677046126892768963323598980608000000000000000000000e+52L, "1.4604307712625044108337677046126892768963323598980608000000000000000000000e+52", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.3661432041590027825770657688785384893903477321470720000000000000000000000e+51L, "1.3661432041590027825770657688785384893903477321470720000000000000000000000e+51", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1520697686278361431114988925105292244781602931070400000000000000000000000e+50L, "1.1520697686278361431114988925105292244781602931070400000000000000000000000e+50", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.7781340723597395269058455794580578514153013123200000000000000000000000000e+48L, "8.7781340723597395269058455794580578514153013123200000000000000000000000000e+48", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.0542743368034560471670911883883927910588971816800000000000000000000000000e+47L, "6.0542743368034560471670911883883927910588971816800000000000000000000000000e+47", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.7852178643724903498642955979619870805662919592000000000000000000000000000e+46L, "3.7852178643724903498642955979619870805662919592000000000000000000000000000e+46", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.1476757456360244186066663869698554305163293290000000000000000000000000000e+45L, "2.1476757456360244186066663869698554305163293290000000000000000000000000000e+45", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1067024107708881097170625529475996208174256000000000000000000000000000000e+44L, "1.1067024107708881097170625529475996208174256000000000000000000000000000000e+44", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.1816971152081755906884039315242368042580680000000000000000000000000000000e+42L, "5.1816971152081755906884039315242368042580680000000000000000000000000000000e+42", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.2046914254271439983058171150950882746907200000000000000000000000000000000e+41L, "2.2046914254271439983058171150950882746907200000000000000000000000000000000e+41", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.5226232704255673172404214340314876574740000000000000000000000000000000000e+39L, "8.5226232704255673172404214340314876574740000000000000000000000000000000000e+39", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.9917039581671863252346910306123579600000000000000000000000000000000000000e+38L, "2.9917039581671863252346910306123579600000000000000000000000000000000000000e+38", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.5279926429774219665504424895636324120000000000000000000000000000000000000e+36L, "9.5279926429774219665504424895636324120000000000000000000000000000000000000e+36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.7496375812101278379807519908356136800000000000000000000000000000000000000e+35L, "2.7496375812101278379807519908356136800000000000000000000000000000000000000e+35", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.1781895168846844604663013761970710000000000000000000000000000000000000000e+33L, "7.1781895168846844604663013761970710000000000000000000000000000000000000000e+33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.6915825748773446395251490146656000000000000000000000000000000000000000000e+32L, "1.6915825748773446395251490146656000000000000000000000000000000000000000000e+32", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.5888455419743269266732720488720000000000000000000000000000000000000000000e+30L, "3.5888455419743269266732720488720000000000000000000000000000000000000000000e+30", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.8324723604341765969313138528000000000000000000000000000000000000000000000e+28L, "6.8324723604341765969313138528000000000000000000000000000000000000000000000e+28", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1625859075857974372785469560000000000000000000000000000000000000000000000e+27L, "1.1625859075857974372785469560000000000000000000000000000000000000000000000e+27", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.7594478264056101488213120000000000000000000000000000000000000000000000000e+25L, "1.7594478264056101488213120000000000000000000000000000000000000000000000000e+25", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.3541746402920221829579200000000000000000000000000000000000000000000000000e+23L, "2.3541746402920221829579200000000000000000000000000000000000000000000000000e+23", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.7645128331397711271280000000000000000000000000000000000000000000000000000e+21L, "2.7645128331397711271280000000000000000000000000000000000000000000000000000e+21", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.8231991756227354271000000000000000000000000000000000000000000000000000000e+19L, "2.8231991756227354271000000000000000000000000000000000000000000000000000000e+19", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.4784681412721648000000000000000000000000000000000000000000000000000000000e+17L, "2.4784681412721648000000000000000000000000000000000000000000000000000000000e+17", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.8427136416481320000000000000000000000000000000000000000000000000000000000e+15L, "1.8427136416481320000000000000000000000000000000000000000000000000000000000e+15", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1374881704208000000000000000000000000000000000000000000000000000000000000e+13L, "1.1374881704208000000000000000000000000000000000000000000000000000000000000e+13", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.6720141346000000000000000000000000000000000000000000000000000000000000000e+10L, "5.6720141346000000000000000000000000000000000000000000000000000000000000000e+10", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.1948624000000000000000000000000000000000000000000000000000000000000000000e+08L, "2.1948624000000000000000000000000000000000000000000000000000000000000000000e+08", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.1833200000000000000000000000000000000000000000000000000000000000000000000e+05L, "6.1833200000000000000000000000000000000000000000000000000000000000000000000e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1280000000000000000000000000000000000000000000000000000000000000000000000e+03L, "1.1280000000000000000000000000000000000000000000000000000000000000000000000e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0000000000000000000000000000000000000000000000000000000000000000000000000e+00L, "1.0000000000000000000000000000000000000000000000000000000000000000000000000e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: return boost::math::tools::evaluate_rational(num, denom, z);
23866: }
23866:
23866:
23866: template<class T>
23866: static T lanczos_sum_near_1(const T& dz)
23866: {
23866: static const T d[48] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2066789802575522178795921101394468758895980798225454578416417743837821182e+01L, "1.2066789802575522178795921101394468758895980798225454578416417743837821182e+01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.3679788352265125219923749199991620615257401271523573821302279091870986385e+02L, "-1.3679788352265125219923749199991620615257401271523573821302279091870986385e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.2630033804072373059579276357751429378169881873880556882995810292143631169e+02L, "7.2630033804072373059579276357751429378169881873880556882995810292143631169e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.3999752086438541157776701982236284193725611536088710297195418612889088941e+03L, "-2.3999752086438541157776701982236284193725611536088710297195418612889088941e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.5326869500703014940743489551921365917396663139743104045090175695793718397e+03L, "5.5326869500703014940743489551921365917396663139743104045090175695793718397e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -9.4539806536100390983482685579769998888148275478188901957443850396223701663e+03L, "-9.4539806536100390983482685579769998888148275478188901957443850396223701663e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2418837249375022042463276831798225069762119451024109889652570545798197307e+04L, "1.2418837249375022042463276831798225069762119451024109889652570545798197307e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.2837532371348753406818677898802253115337338144774680681639085300947433821e+04L, "-1.2837532371348753406818677898802253115337338144774680681639085300947433821e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0603676137809014970843333435453530863140601935101507289758344098164636049e+04L, "1.0603676137809014970843333435453530863140601935101507289758344098164636049e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -7.0675156715558786066521224677848991893948220792765278914746791001795702147e+03L, "-7.0675156715558786066521224677848991893948220792765278914746791001795702147e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.8231576762102015440131857562883207655276091648820750106248419664382342083e+03L, "3.8231576762102015440131857562883207655276091648820750106248419664382342083e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.6828357670521487851037941818117892204609675060095269337474530867886953446e+03L, "-1.6828357670521487851037941818117892204609675060095269337474530867886953446e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.0263919393474265394410446439494942658409182482953883911882462037294240391e+02L, "6.0263919393474265394410446439494942658409182482953883911882462037294240391e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.7511174204844870012138672336839720481677091590654128683087419414952818657e+02L, "-1.7511174204844870012138672336839720481677091590654128683087419414952818657e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.1077240937707245791059934044373222445269304780721564415689327491376493334e+01L, "4.1077240937707245791059934044373222445269304780721564415689327491376493334e+01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -7.7197427650993388314150434222790763404096237849031957731092258677118877326e+00L, "-7.7197427650993388314150434222790763404096237849031957731092258677118877326e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1502942251829477374710555866529647619927300737021040120015632037419548655e+00L, "1.1502942251829477374710555866529647619927300737021040120015632037419548655e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.3407293979752550880132165447474755706150471817851620226242890535888257338e-01L, "-1.3407293979752550880132165447474755706150471817851620226242890535888257338e-01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2014334746887994911502478644617408322636134206225589060774099980181312765e-02L, "1.2014334746887994911502478644617408322636134206225589060774099980181312765e-02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -8.0983646402105726518672426329015155996093741444426226630025345020847577111e-04L, "-8.0983646402105726518672426329015155996093741444426226630025345020847577111e-04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.9942365899792195557178345302806016444352718230344395806792868608352214871e-05L, "3.9942365899792195557178345302806016444352718230344395806792868608352214871e-05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.3916756170744060855799456788870481671060079696580348774412746337324507629e-06L, "-1.3916756170744060855799456788870481671060079696580348774412746337324507629e-06", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.2738029264164285805306112157985005833945884241358728352406636162060451936e-08L, "3.2738029264164285805306112157985005833945884241358728352406636162060451936e-08", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -4.9005795832591317070122324350352498562565929180970558213118848371143071658e-10L, "-4.9005795832591317070122324350352498562565929180970558213118848371143071658e-10", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.3120237284050523317140903263269508807725654665206264201337566990649593815e-12L, "4.3120237284050523317140903263269508807725654665206264201337566990649593815e-12", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.9993164488488861127293338637233872747923249255635013388317575640760246175e-14L, "-1.9993164488488861127293338637233872747923249255635013388317575640760246175e-14", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.1770960183589659510713725797228496911736699917131125983799031646762143273e-17L, "4.1770960183589659510713725797228496911736699917131125983799031646762143273e-17", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.1067143632180728240506803448567684891294208768806045480286272494772691950e-20L, "-3.1067143632180728240506803448567684891294208768806045480286272494772691950e-20", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.6244126131167038529019905678720925754781858101865433373489388749513540167e-24L, "5.6244126131167038529019905678720925754781858101865433373489388749513540167e-24", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.2602412034992451089948288841723108481473094784377158526788906759478344724e-28L, "-1.2602412034992451089948288841723108481473094784377158526788906759478344724e-28", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.5993275050503412644261961442095022244184843038273154020407386192200117900e-35L, "8.5993275050503412644261961442095022244184843038273154020407386192200117900e-35", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2376677581089123203915935849311668028430409001498177367770610457728550321e-39L, "1.2376677581089123203915935849311668028430409001498177367770610457728550321e-39", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.8150848887085059253468109780286976776338724012461857375172227849044365287e-39L, "-1.8150848887085059253468109780286976776338724012461857375172227849044365287e-39", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.2888861291942792803542790121202831584212092799440963290014968720997192671e-39L, "2.2888861291942792803542790121202831584212092799440963290014968720997192671e-39", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.4367686092860277330824120317504561350242498766190734227637416697402218133e-39L, "-2.4367686092860277330824120317504561350242498766190734227637416697402218133e-39", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.1658834966582889258321173900424691594425653659844978485212529673045052341e-39L, "2.1658834966582889258321173900424691594425653659844978485212529673045052341e-39", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.6078489664179099912530462853749930668959707942650569176553871936075352345e-39L, "-1.6078489664179099912530462853749930668959707942650569176553871936075352345e-39", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0044570187922899426305396174281740469543589839974788550682447627990764739e-39L, "1.0044570187922899426305396174281740469543589839974788550682447627990764739e-39", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -5.3214978442929458907632954943316397146183013077035413667972521651417588659e-40L, "-5.3214978442929458907632954943316397146183013077035413667972521651417588659e-40", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.3990788346383540827394552555896039808285381860296208830197355311239959128e-40L, "2.3990788346383540827394552555896039808285381860296208830197355311239959128e-40", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -9.1813962257175782149431101470253920074573257556345440519764098954533396958e-41L, "-9.1813962257175782149431101470253920074573257556345440519764098954533396958e-41", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.9566302522237219982311281591833653462640003193980940062047608523626590962e-41L, "2.9566302522237219982311281591833653462640003193980940062047608523626590962e-41", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -7.8844939069206979681852040267695059179818896523029249336074241598129744909e-42L, "-7.8844939069206979681852040267695059179818896523029249336074241598129744909e-42", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.6980186103098555864348162964443149317288303456071195638226831779183346735e-42L, "1.6980186103098555864348162964443149317288303456071195638226831779183346735e-42", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.8409438292612321309493446423416582883045091540877596567806910261300252610e-43L, "-2.8409438292612321309493446423416582883045091540877596567806910261300252610e-43", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.4666144269083503254700296220598377304876489203081567665937809718753144311e-44L, "3.4666144269083503254700296220598377304876489203081567665937809718753144311e-44", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.7449599736044707057960973836294763832382889203992176649603299199814964095e-45L, "-2.7449599736044707057960973836294763832382889203992176649603299199814964095e-45", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0585685375038567471031307628591396658405283305367035292669018178549132199e-46L, "1.0585685375038567471031307628591396658405283305367035292669018178549132199e-46", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: T result = 0;
23866: for (unsigned k = 1; k <= sizeof(d) / sizeof(d[0]); ++k)
23866: {
23866: result += (-d[k - 1] * dz) / (k * dz + k * k);
23866: }
23866: return result;
23866: }
23866:
23866: template<class T>
23866: static T lanczos_sum_near_2(const T& dz)
23866: {
23866: static const T d[48] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.5455231550124674608383465879384903101217726809855880053735498558660305251e+02L, "1.5455231550124674608383465879384903101217726809855880053735498558660305251e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.7521171744934997797979463716947798398649024826461953154035391579443199892e+03L, "-1.7521171744934997797979463716947798398649024826461953154035391579443199892e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.3025071978608000907597512615615521968983853964414599121560447447486249179e+03L, "9.3025071978608000907597512615615521968983853964414599121560447447486249179e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.0739055847506874449724863962235222139048946552417933333489374601444889442e+04L, "-3.0739055847506874449724863962235222139048946552417933333489374601444889442e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.0863054140081769874319573695951392605490718603916106954837774653056576623e+04L, "7.0863054140081769874319573695951392605490718603916106954837774653056576623e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.2108726717088904191265369690298547113580473039391314603986085479556111007e+05L, "-1.2108726717088904191265369690298547113580473039391314603986085479556111007e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.5906136463190712486212821488571957306185167770225864012898706881699647057e+05L, "1.5906136463190712486212821488571957306185167770225864012898706881699647057e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.6442404200085453327213398272100872399623441451383083438265316066112956103e+05L, "-1.6442404200085453327213398272100872399623441451383083438265316066112956103e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.3581264998698427315063870744999865373965234956609066658837559718999590062e+05L, "1.3581264998698427315063870744999865373965234956609066658837559718999590062e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -9.0521251281527290170664891261612911437995934455165647349853355253750334406e+04L, "-9.0521251281527290170664891261612911437995934455165647349853355253750334406e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.8967279703383588010975605180679227794424995039989024281878608594596616855e+04L, "4.8967279703383588010975605180679227794424995039989024281878608594596616855e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.1553882073152030175586351692198830408611546985761579133373632331779244638e+04L, "-2.1553882073152030175586351692198830408611546985761579133373632331779244638e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.7186463308194716629084448574149234823489365098510570780593191406061889318e+03L, "7.7186463308194716629084448574149234823489365098510570780593191406061889318e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.2428438423008152181399734545002360362921592139304278927551479335858821905e+03L, "-2.2428438423008152181399734545002360362921592139304278927551479335858821905e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.2612026936693838529789647834479279275034238291000514930718615542291190074e+02L, "5.2612026936693838529789647834479279275034238291000514930718615542291190074e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -9.8875023012785484029602598574637362767234771045911074782572204578687659312e+01L, "-9.8875023012785484029602598574637362767234771045911074782572204578687659312e+01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.4733051533871237880957666174363507890599952187881138769651021452363258297e+01L, "1.4733051533871237880957666174363507890599952187881138769651021452363258297e+01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.7172158984110335489611392604457344891052843492969255546784144895328933329e+00L, "-1.7172158984110335489611392604457344891052843492969255546784144895328933329e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.5388046735862609465152559757953131111281278387717331973511139237319990770e-01L, "1.5388046735862609465152559757953131111281278387717331973511139237319990770e-01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.0372443934101018493930850177650436102881381002613480220638309361418767946e-02L, "-1.0372443934101018493930850177650436102881381002613480220638309361418767946e-02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.1158470789748281012838916430380981653860595791320888251473386188428788856e-04L, "5.1158470789748281012838916430380981653860595791320888251473386188428788856e-04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.7824681838708087799263224394519010740357745634535755030787340328399772549e-05L, "-1.7824681838708087799263224394519010740357745634535755030787340328399772549e-05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.1931104382411821412587448903202613576618187938526144451753089437172395491e-07L, "4.1931104382411821412587448903202613576618187938526144451753089437172395491e-07", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -6.2766977322268088075311831528842893348256386710249195361734612266778385323e-09L, "-6.2766977322268088075311831528842893348256386710249195361734612266778385323e-09", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.5228711415779960574453455948991424203497366984285083000319325448210101974e-11L, "5.5228711415779960574453455948991424203497366984285083000319325448210101974e-11", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.5607389508299290889393825247382548268608977769597750095981719736417860627e-13L, "-2.5607389508299290889393825247382548268608977769597750095981719736417860627e-13", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.3500547558276404981577111880189245551703390604657164900460067017086475257e-16L, "5.3500547558276404981577111880189245551703390604657164900460067017086475257e-16", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.9791021994420737378470356651659599587167405408055854179971153565586792084e-19L, "-3.9791021994420737378470356651659599587167405408055854179971153565586792084e-19", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.2037883058679724499875763987161800762132311085398211645162684109748694340e-23L, "7.2037883058679724499875763987161800762132311085398211645162684109748694340e-23", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.6141260374761318937819974670878746263129124551434880143657761001893177100e-27L, "-1.6141260374761318937819974670878746263129124551434880143657761001893177100e-27", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1014080790364138694339981796904397090336135156681914457153169895058123962e-33L, "1.1014080790364138694339981796904397090336135156681914457153169895058123962e-33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.5852138055486955162695207029733124482316515915389725207819834510328826882e-38L, "1.5852138055486955162695207029733124482316515915389725207819834510328826882e-38", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.3247738377057606447050864939101938086522392428747461590714144146282468974e-38L, "-2.3247738377057606447050864939101938086522392428747461590714144146282468974e-38", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.9316218892795919921760137631186915684395320376859960566984260379803979907e-38L, "2.9316218892795919921760137631186915684395320376859960566984260379803979907e-38", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.1210308380902232855988541317886447706766253774127605015790322866153349557e-38L, "-3.1210308380902232855988541317886447706766253774127605015790322866153349557e-38", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.7740792289514179382145837836403663560484901236914958039358936821942590582e-38L, "2.7740792289514179382145837836403663560484901236914958039358936821942590582e-38", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.0593445713551373294655454085927889987266290706104795764516423812212247302e-38L, "-2.0593445713551373294655454085927889987266290706104795764516423812212247302e-38", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2865158059079907658671256163529513022184187924172645112729579745062723961e-38L, "1.2865158059079907658671256163529513022184187924172645112729579745062723961e-38", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -6.8158128816897517506937531950420472376185024126168447501964316612370015014e-39L, "-6.8158128816897517506937531950420472376185024126168447501964316612370015014e-39", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.0727575024490003112672747176557026577347452778581212406977128868690751231e-39L, "3.0727575024490003112672747176557026577347452778581212406977128868690751231e-39", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.1759598612683119428775753540097890056929269067220807101660487076215190882e-39L, "-1.1759598612683119428775753540097890056929269067220807101660487076215190882e-39", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.7868733858667171123449703661037140974108364228765817302050018596960416788e-40L, "3.7868733858667171123449703661037140974108364228765817302050018596960416788e-40", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.0098516753892371349956889909483048597911093401064123370095186647248754503e-40L, "-1.0098516753892371349956889909483048597911093401064123370095186647248754503e-40", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.1748345026411581847490576071466694584307900894689508331424519370338054748e-41L, "2.1748345026411581847490576071466694584307900894689508331424519370338054748e-41", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.6387013796128814207293408288388785778364579569320260571422484577307186443e-42L, "-3.6387013796128814207293408288388785778364579569320260571422484577307186443e-42", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.4400648009494470795051094944915668879009266928618607576647564429190022802e-43L, "4.4400648009494470795051094944915668879009266928618607576647564429190022802e-43", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.5157645638963794722990984515235056341682398223940346512667816730324057574e-44L, "-3.5157645638963794722990984515235056341682398223940346512667816730324057574e-44", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.3558222299776027787073219176369904651832196778690432544150792644775402371e-45L, "1.3558222299776027787073219176369904651832196778690432544150792644775402371e-45", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((234 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: };
23866: T result = 0;
23866: T z = dz + 2;
23866: for (unsigned k = 1; k <= sizeof(d) / sizeof(d[0]); ++k)
23866: {
23866: result += (-d[k - 1] * dz) / (z + k * z + k * k - 1);
23866: }
23866: return result;
23866: }
23866:
23866: static double g() { return 3.2804746093749997726263245567679405212402343750000000000000000000000000000e+01; }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: struct lanczos49MP_2 : public boost::integral_constant<int, 267>
23866: {
23866: template <class T>
23866: static T lanczos_sum(const T& z)
23866: {
23866: static const T num[49] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.29576393886533812647621748658593518049105182771886345672193119325886860615058992916e+76L, "1.29576393886533812647621748658593518049105182771886345672193119325886860615058992916e+76", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.64940250521075704286553287922703978233859608760738220959805633167660346858918484441e+76L, "1.64940250521075704286553287922703978233859608760738220959805633167660346858918484441e+76", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.02782279850582131264593341856583603623569135771086732311690891701018783486399941058e+76L, "1.02782279850582131264593341856583603623569135771086732311690891701018783486399941058e+76", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.17871318833644489595452604622172623859528919270761702889241650479860350523603645576e+75L, "4.17871318833644489595452604622172623859528919270761702889241650479860350523603645576e+75", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.24636895901125366174317752785594004344350462222105593541765135970641727807408046603e+75L, "1.24636895901125366174317752785594004344350462222105593541765135970641727807408046603e+75", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.90766536403132277814150094353285923029162708480029761430241108404154368124040257524e+74L, "2.90766536403132277814150094353285923029162708480029761430241108404154368124040257524e+74", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.52382781721986299602475060387708982171655203328511435511051797995280492002324724681e+73L, "5.52382781721986299602475060387708982171655203328511435511051797995280492002324724681e+73", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.78482374388380268613213967834073614067861524793728730151201542394918426634868617345e+72L, "8.78482374388380268613213967834073614067861524793728730151201542394918426634868617345e+72", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.19325027080949586393337406155391099309209314019751861163367432285571050834050337943e+72L, "1.19325027080949586393337406155391099309209314019751861163367432285571050834050337943e+72", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.40545316209557907826875120370637029196186181048557227564363347693674382156389673345e+71L, "1.40545316209557907826875120370637029196186181048557227564363347693674382156389673345e+71", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.45248231502915687322615277256109191586795311001308546524559632502753988355826682144e+70L, "1.45248231502915687322615277256109191586795311001308546524559632502753988355826682144e+70", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.32951710710760475384871665492267398285929602882057694753684715739127717537388087360e+69L, "1.32951710710760475384871665492267398285929602882057694753684715739127717537388087360e+69", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.08609708232067139682194681883946299264352243218047148918541516101215386723695461807e+68L, "1.08609708232067139682194681883946299264352243218047148918541516101215386723695461807e+68", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.96790018517492120048938623906554309076682107791064003018940091271134763465693455777e+66L, "7.96790018517492120048938623906554309076682107791064003018940091271134763465693455777e+66", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.27669033307366420506859833929956397578574575080825866111910129757118415016658467329e+65L, "5.27669033307366420506859833929956397578574575080825866111910129757118415016658467329e+65", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.16802337748974823514819525636942825363065912689755393017268041605495575074123213602e+64L, "3.16802337748974823514819525636942825363065912689755393017268041605495575074123213602e+64", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.73054387508326490801862749035024819220968371854706600225017512476962193917082134622e+63L, "1.73054387508326490801862749035024819220968371854706600225017512476962193917082134622e+63", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.62670382432299595501509896985706425528571034019439577742070022359804568860138431456e+61L, "8.62670382432299595501509896985706425528571034019439577742070022359804568860138431456e+61", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.93419603580003232059946064747952976400826625336761312144282727389088893514776127326e+60L, "3.93419603580003232059946064747952976400826625336761312144282727389088893514776127326e+60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.64477326525726493380322761443767318183513031346169727378679051953394311858102484110e+59L, "1.64477326525726493380322761443767318183513031346169727378679051953394311858102484110e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.31417565379195208375864005040359979626430954027274059125918083665481151874801228147e+57L, "6.31417565379195208375864005040359979626430954027274059125918083665481151874801228147e+57", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.22873281009357235993917586746434823288058696112725892939606733669981526181084161579e+56L, "2.22873281009357235993917586746434823288058696112725892939606733669981526181084161579e+56", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.24038151344262567906410045463097784963500265667230009248051943941184141216283364012e+54L, "7.24038151344262567906410045463097784963500265667230009248051943941184141216283364012e+54", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.16635103397331843098281133679963613292528445793288854356269441338108669168034969473e+53L, "2.16635103397331843098281133679963613292528445793288854356269441338108669168034969473e+53", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.97226028792130808404381304085761534201244857265870272466382244177818968609788744866e+51L, "5.97226028792130808404381304085761534201244857265870272466382244177818968609788744866e+51", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.51722539705401822010051258989781033530766592277336923172687967760117181597042914505e+50L, "1.51722539705401822010051258989781033530766592277336923172687967760117181597042914505e+50", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.55143196851124103497589961680541188447723645252871343011474640057780989215029733411e+48L, "3.55143196851124103497589961680541188447723645252871343011474640057780989215029733411e+48", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.65631576916353367608977102104279419518759334245125488959476099210969778356845251386e+46L, "7.65631576916353367608977102104279419518759334245125488959476099210969778356845251386e+46", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.51913643147679636800192101181821796326331285929097206716389984328795132228290343736e+45L, "1.51913643147679636800192101181821796326331285929097206716389984328795132228290343736e+45", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.77142070954017798440735921701401232362942654167866941640116269309928860707230400223e+43L, "2.77142070954017798440735921701401232362942654167866941640116269309928860707230400223e+43", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.64265304588830405590756890757870027959619641212378439580733250347485559404826031214e+41L, "4.64265304588830405590756890757870027959619641212378439580733250347485559404826031214e+41", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.12961287129418300922993605074391681508051626956297216905205033442654279681009631622e+39L, "7.12961287129418300922993605074391681508051626956297216905205033442654279681009631622e+39", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.00163852645278376379452857266851549886004284453902427442045925921205957134756527439e+38L, "1.00163852645278376379452857266851549886004284453902427442045925921205957134756527439e+38", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.28416298426892934885339736163488241290345416925540130172490965458139411097784230624e+36L, "1.28416298426892934885339736163488241290345416925540130172490965458139411097784230624e+36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.49793255972439978183906387866659603599388803095306163216192230005161964280456557158e+34L, "1.49793255972439978183906387866659603599388803095306163216192230005161964280456557158e+34", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.58404837985235629013707612365235872533571223333496498253968477010731743022987544752e+32L, "1.58404837985235629013707612365235872533571223333496498253968477010731743022987544752e+32", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.51210388163173191310089232642285522934883375636207281562370177051035472857070373332e+30L, "1.51210388163173191310089232642285522934883375636207281562370177051035472857070373332e+30", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.29625175202138639315345810129285907904834629385738665013524881366645746417930602439e+28L, "1.29625175202138639315345810129285907904834629385738665013524881366645746417930602439e+28", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.91704411637684940906309546543695853685028152118727394684725500498007979899474115290e+25L, "9.91704411637684940906309546543695853685028152118727394684725500498007979899474115290e+25", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.71980627815396304296720837491060731114276254036666247979635295719640774180255608217e+23L, "6.71980627815396304296720837491060731114276254036666247979635295719640774180255608217e+23", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.99515302992882524356421852289147703799628458429164679118485650618041455793969699036e+21L, "3.99515302992882524356421852289147703799628458429164679118485650618041455793969699036e+21", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.05962638033903929635201902285319054754141795004681756534441119215276710860621598251e+19L, "2.05962638033903929635201902285319054754141795004681756534441119215276710860621598251e+19", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.06860641169958199340995275230206293988239276251216776246763641876943705626715807705e+16L, "9.06860641169958199340995275230206293988239276251216776246763641876943705626715807705e+16", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.34257282855413383182163862298720605042203946165367698145431759335580579509759239742e+14L, "3.34257282855413383182163862298720605042203946165367698145431759335580579509759239742e+14", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.00325103633255410612780052993328410422609156975902055798191507344081921284741604327e+12L, "1.00325103633255410612780052993328410422609156975902055798191507344081921284741604327e+12", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.35516908008075882088679988477934347017452660082246021362543874768562840957846903854e+09L, "2.35516908008075882088679988477934347017452660082246021362543874768562840957846903854e+09", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.05605466237751558310956675128455566243720955874966620350919363272463056561354608608e+06L, "4.05605466237751558310956675128455566243720955874966620350919363272463056561354608608e+06", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.55729572460925281137543520027396380407277254872226907448088245735142585109299314309e+03L, "4.55729572460925281137543520027396380407277254872226907448088245735142585109299314309e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.50662827463100050241576528481104525300698674060993831662992357634350984153163470001e+00L, "2.50662827463100050241576528481104525300698674060993831662992357634350984153163470001e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: static const T denom[49] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00L, "0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.58623241511168180642964355153611979969197632389120000000000000000000000000000000000e+59L, "2.58623241511168180642964355153611979969197632389120000000000000000000000000000000000e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.14776059445777272454478909512658340504634055437844480000000000000000000000000000000e+60L, "1.14776059445777272454478909512658340504634055437844480000000000000000000000000000000e+60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.33687316774105797487491206943952083427522202482769920000000000000000000000000000000e+60L, "2.33687316774105797487491206943952083427522202482769920000000000000000000000000000000e+60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.93931771794820227505327998088265029234306315290935296000000000000000000000000000000e+60L, "2.93931771794820227505327998088265029234306315290935296000000000000000000000000000000e+60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.58732126620733831007506641408248663184965762984968192000000000000000000000000000000e+60L, "2.58732126620733831007506641408248663184965762984968192000000000000000000000000000000e+60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.70875967919718263235573985374390952836630436899967729664000000000000000000000000000e+60L, "1.70875967919718263235573985374390952836630436899967729664000000000000000000000000000e+60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.85379314011606918037773868674769121317006435211054940160000000000000000000000000000e+59L, "8.85379314011606918037773868674769121317006435211054940160000000000000000000000000000e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.71284730779688769773963894301160770666134228557096157184000000000000000000000000000e+59L, "3.71284730779688769773963894301160770666134228557096157184000000000000000000000000000e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.28932307044619122980648381437020964890328309383409683660800000000000000000000000000e+59L, "1.28932307044619122980648381437020964890328309383409683660800000000000000000000000000e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.77318462637158785544842432932048255435278593289778189434880000000000000000000000000e+58L, "3.77318462637158785544842432932048255435278593289778189434880000000000000000000000000e+58", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.43506127634442398707204129992695098207363184338535871283200000000000000000000000000e+57L, "9.43506127634442398707204129992695098207363184338535871283200000000000000000000000000e+57", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.03845492864356655333532681420583102431615277938023321190400000000000000000000000000e+57L, "2.03845492864356655333532681420583102431615277938023321190400000000000000000000000000e+57", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.83999009701429896446125174672878806204082098360991498240000000000000000000000000000e+56L, "3.83999009701429896446125174672878806204082098360991498240000000000000000000000000000e+56", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.35489230937550499245891562547336108239509204950952161280000000000000000000000000000e+55L, "6.35489230937550499245891562547336108239509204950952161280000000000000000000000000000e+55", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.29772528226274467214810040016656557652034615522905907200000000000000000000000000000e+54L, "9.29772528226274467214810040016656557652034615522905907200000000000000000000000000000e+54", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.20904961446375814456243773222082143843446488101406694400000000000000000000000000000e+54L, "1.20904961446375814456243773222082143843446488101406694400000000000000000000000000000e+54", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.40365958410890573208156480922200774640363798049607680000000000000000000000000000000e+53L, "1.40365958410890573208156480922200774640363798049607680000000000000000000000000000000e+53", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.46043077126250441083376770461268927689633235989806080000000000000000000000000000000e+52L, "1.46043077126250441083376770461268927689633235989806080000000000000000000000000000000e+52", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.36614320415900278257706576887853848939034773214707200000000000000000000000000000000e+51L, "1.36614320415900278257706576887853848939034773214707200000000000000000000000000000000e+51", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.15206976862783614311149889251052922447816029310704000000000000000000000000000000000e+50L, "1.15206976862783614311149889251052922447816029310704000000000000000000000000000000000e+50", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.77813407235973952690584557945805785141530131232000000000000000000000000000000000000e+48L, "8.77813407235973952690584557945805785141530131232000000000000000000000000000000000000e+48", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.05427433680345604716709118838839279105889718168000000000000000000000000000000000000e+47L, "6.05427433680345604716709118838839279105889718168000000000000000000000000000000000000e+47", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.78521786437249034986429559796198708056629195920000000000000000000000000000000000000e+46L, "3.78521786437249034986429559796198708056629195920000000000000000000000000000000000000e+46", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.14767574563602441860666638696985543051632932900000000000000000000000000000000000000e+45L, "2.14767574563602441860666638696985543051632932900000000000000000000000000000000000000e+45", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.10670241077088810971706255294759962081742560000000000000000000000000000000000000000e+44L, "1.10670241077088810971706255294759962081742560000000000000000000000000000000000000000e+44", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.18169711520817559068840393152423680425806800000000000000000000000000000000000000000e+42L, "5.18169711520817559068840393152423680425806800000000000000000000000000000000000000000e+42", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.20469142542714399830581711509508827469072000000000000000000000000000000000000000000e+41L, "2.20469142542714399830581711509508827469072000000000000000000000000000000000000000000e+41", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.52262327042556731724042143403148765747400000000000000000000000000000000000000000000e+39L, "8.52262327042556731724042143403148765747400000000000000000000000000000000000000000000e+39", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.99170395816718632523469103061235796000000000000000000000000000000000000000000000000e+38L, "2.99170395816718632523469103061235796000000000000000000000000000000000000000000000000e+38", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.52799264297742196655044248956363241200000000000000000000000000000000000000000000000e+36L, "9.52799264297742196655044248956363241200000000000000000000000000000000000000000000000e+36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.74963758121012783798075199083561368000000000000000000000000000000000000000000000000e+35L, "2.74963758121012783798075199083561368000000000000000000000000000000000000000000000000e+35", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.17818951688468446046630137619707100000000000000000000000000000000000000000000000000e+33L, "7.17818951688468446046630137619707100000000000000000000000000000000000000000000000000e+33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.69158257487734463952514901466560000000000000000000000000000000000000000000000000000e+32L, "1.69158257487734463952514901466560000000000000000000000000000000000000000000000000000e+32", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.58884554197432692667327204887200000000000000000000000000000000000000000000000000000e+30L, "3.58884554197432692667327204887200000000000000000000000000000000000000000000000000000e+30", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.83247236043417659693131385280000000000000000000000000000000000000000000000000000000e+28L, "6.83247236043417659693131385280000000000000000000000000000000000000000000000000000000e+28", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.16258590758579743727854695600000000000000000000000000000000000000000000000000000000e+27L, "1.16258590758579743727854695600000000000000000000000000000000000000000000000000000000e+27", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.75944782640561014882131200000000000000000000000000000000000000000000000000000000000e+25L, "1.75944782640561014882131200000000000000000000000000000000000000000000000000000000000e+25", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.35417464029202218295792000000000000000000000000000000000000000000000000000000000000e+23L, "2.35417464029202218295792000000000000000000000000000000000000000000000000000000000000e+23", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.76451283313977112712800000000000000000000000000000000000000000000000000000000000000e+21L, "2.76451283313977112712800000000000000000000000000000000000000000000000000000000000000e+21", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.82319917562273542710000000000000000000000000000000000000000000000000000000000000000e+19L, "2.82319917562273542710000000000000000000000000000000000000000000000000000000000000000e+19", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.47846814127216480000000000000000000000000000000000000000000000000000000000000000000e+17L, "2.47846814127216480000000000000000000000000000000000000000000000000000000000000000000e+17", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.84271364164813200000000000000000000000000000000000000000000000000000000000000000000e+15L, "1.84271364164813200000000000000000000000000000000000000000000000000000000000000000000e+15", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.13748817042080000000000000000000000000000000000000000000000000000000000000000000000e+13L, "1.13748817042080000000000000000000000000000000000000000000000000000000000000000000000e+13", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.67201413460000000000000000000000000000000000000000000000000000000000000000000000000e+10L, "5.67201413460000000000000000000000000000000000000000000000000000000000000000000000000e+10", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.19486240000000000000000000000000000000000000000000000000000000000000000000000000000e+08L, "2.19486240000000000000000000000000000000000000000000000000000000000000000000000000000e+08", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.18332000000000000000000000000000000000000000000000000000000000000000000000000000000e+05L, "6.18332000000000000000000000000000000000000000000000000000000000000000000000000000000e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.12800000000000000000000000000000000000000000000000000000000000000000000000000000000e+03L, "1.12800000000000000000000000000000000000000000000000000000000000000000000000000000000e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00L, "1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: return boost::math::tools::evaluate_rational(num, denom, z);
23866: }
23866:
23866: template <class T>
23866: static T lanczos_sum_expG_scaled(const T& z)
23866: {
23866: static const T num[49] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.49663610130791477461794140374370924490696733744664264226063545477852907120064438588e+59L, "9.49663610130791477461794140374370924490696733744664264226063545477852907120064438588e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.20884482942845999689198014205795770851399772847436497410154319183860398480228326286e+60L, "1.20884482942845999689198014205795770851399772847436497410154319183860398480228326286e+60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.53289916571146966947513241858798999095967787802671792160665282347073321227016292403e+59L, "7.53289916571146966947513241858798999095967787802671792160665282347073321227016292403e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.06257315326410705497495763375336857281692495321204603919284336971479478405381409540e+59L, "3.06257315326410705497495763375336857281692495321204603919284336971479478405381409540e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.13462097275260056500457419367381935327442299676685171001942731892832408882413435566e+58L, "9.13462097275260056500457419367381935327442299676685171001942731892832408882413435566e+58", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.13102394952914002112762425649207244062991186339070382885956481064589709031894816496e+58L, "2.13102394952914002112762425649207244062991186339070382885956481064589709031894816496e+58", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.04840581629048620249901745346405131124091439055732548308528857701167494671648257347e+57L, "4.04840581629048620249901745346405131124091439055732548308528857701167494671648257347e+57", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.43838524961944675350746734141447316445830054880306039896637689653198992735066081474e+56L, "6.43838524961944675350746734141447316445830054880306039896637689653198992735066081474e+56", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.74531483688910159100344151068655208511626316424159676205726034341092475816888011372e+55L, "8.74531483688910159100344151068655208511626316424159676205726034341092475816888011372e+55", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.03005469109920428385867124264753643595038929217266678155910599078268836953793159656e+55L, "1.03005469109920428385867124264753643595038929217266678155910599078268836953793159656e+55", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.06452229265586101928934888140259774581544836837635812825070642317924068191237940651e+54L, "1.06452229265586101928934888140259774581544836837635812825070642317924068191237940651e+54", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.74401260751298616807064335204160985098707747263556384563576228484205922370857356950e+52L, "9.74401260751298616807064335204160985098707747263556384563576228484205922370857356950e+52", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.95999059097413995107763881990067736638605879036860399501004480843044798852321320153e+51L, "7.95999059097413995107763881990067736638605879036860399501004480843044798852321320153e+51", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.83966309607370356019329894907872727851559431468853382195539375506355518522739451561e+50L, "5.83966309607370356019329894907872727851559431468853382195539375506355518522739451561e+50", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.86727909378079977412627692901220876068535926169729765468023963613209750668440883454e+49L, "3.86727909378079977412627692901220876068535926169729765468023963613209750668440883454e+49", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.32183997980385285815563935626564558737112327901896765866420315909089479889407291483e+48L, "2.32183997980385285815563935626564558737112327901896765866420315909089479889407291483e+48", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.26831322790199691523763382147990685271332413931335425536077401693909941536685446004e+47L, "1.26831322790199691523763382147990685271332413931335425536077401693909941536685446004e+47", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.32249937786475248948857177694117967417864070990756190329454700663693499608768713815e+45L, "6.32249937786475248948857177694117967417864070990756190329454700663693499608768713815e+45", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.88336686819032307424839603734550094343459546588744595045643380205822126447806151375e+44L, "2.88336686819032307424839603734550094343459546588744595045643380205822126447806151375e+44", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.20545206582813581050133859680698140274276251798965738445951215893805514854794850980e+43L, "1.20545206582813581050133859680698140274276251798965738445951215893805514854794850980e+43", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.62765065960304045423639870153223988753806599339881709607153712409175486794708548715e+41L, "4.62765065960304045423639870153223988753806599339881709607153712409175486794708548715e+41", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.63343521375027791107490012004281169470903074417529835343633992756599689706467597925e+40L, "1.63343521375027791107490012004281169470903074417529835343633992756599689706467597925e+40", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.30646566133119269769508008116142168214781437395136629206311256865360022042754477332e+38L, "5.30646566133119269769508008116142168214781437395136629206311256865360022042754477332e+38", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.58771569575797497748917749020901655508364490119697350339089287796185236358536233400e+37L, "1.58771569575797497748917749020901655508364490119697350339089287796185236358536233400e+37", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.37706135782308791418825498038425839394113136784263252755599976807797063043875082698e+35L, "4.37706135782308791418825498038425839394113136784263252755599976807797063043875082698e+35", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.11197240850069894333209760920904406397403024207197696391699562264322296386093323413e+34L, "1.11197240850069894333209760920904406397403024207197696391699562264322296386093323413e+34", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.60283960927607800898139439849090533043340726395143638152077844277751805149166560973e+32L, "2.60283960927607800898139439849090533043340726395143638152077844277751805149166560973e+32", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.61130330576422804633963440554474730419413739922460725405112412454286488484955915987e+30L, "5.61130330576422804633963440554474730419413739922460725405112412454286488484955915987e+30", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.11337300300297295349076762512699923957438723580465440290334845396273762855836733517e+29L, "1.11337300300297295349076762512699923957438723580465440290334845396273762855836733517e+29", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.03117042948259288566605349078528499682057378893001882806984505986948136392761267006e+27L, "2.03117042948259288566605349078528499682057378893001882806984505986948136392761267006e+27", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.40259403730882930955675549420130062238621449273398874217078083754343032954759973357e+25L, "3.40259403730882930955675549420130062238621449273398874217078083754343032954759973357e+25", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.22528347572098799721775967384397848588784390912022136506439711506219967445623919686e+23L, "5.22528347572098799721775967384397848588784390912022136506439711506219967445623919686e+23", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.34099499566403754037791880900467520578107411723617564672664393961433945628291065109e+21L, "7.34099499566403754037791880900467520578107411723617564672664393961433945628291065109e+21", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.41161286449337414692992004461766142962293572495919749372515938105183883550234862604e+19L, "9.41161286449337414692992004461766142962293572495919749372515938105183883550234862604e+19", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.09783271453440804906045665973485276329744852249747400433246982560607811629926185500e+18L, "1.09783271453440804906045665973485276329744852249747400433246982560607811629926185500e+18", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.16094688076417849092104554198103013111536406662498981965117749909832209236913802539e+16L, "1.16094688076417849092104554198103013111536406662498981965117749909832209236913802539e+16", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.10821885688578986410930893219376699456504867926107715594671444282949767588694287037e+14L, "1.10821885688578986410930893219376699456504867926107715594671444282949767588694287037e+14", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.50021127722497072888981489155684575207215375480643952454970468046331143014884622646e+11L, "9.50021127722497072888981489155684575207215375480643952454970468046331143014884622646e+11", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.26818800470068614566377728536610325478326870447541587095650095821101649087210816040e+09L, "7.26818800470068614566377728536610325478326870447541587095650095821101649087210816040e+09", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.92493678677258766132448688907920434402513619957710479626424529957236460471189038381e+07L, "4.92493678677258766132448688907920434402513619957710479626424529957236460471189038381e+07", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.92804216541904692956935385209461325937556277824668580633404375808334363503194457710e+05L, "2.92804216541904692956935385209461325937556277824668580633404375808334363503194457710e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.50949734377247428538055873924894146321959030826140132714559567319426159642629912422e+03L, "1.50949734377247428538055873924894146321959030826140132714559567319426159642629912422e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.64636917688205569668044105440719648394808067896062765005278597960400006426062506946e+00L, "6.64636917688205569668044105440719648394808067896062765005278597960400006426062506946e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.44976703261974330359141562652121211268881081847095890846270752149427888286399621821e-02L, "2.44976703261974330359141562652121211268881081847095890846270752149427888286399621821e-02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.35281305841345486358892992557075736755186129730528304574018484234880523171404766251e-05L, "7.35281305841345486358892992557075736755186129730528304574018484234880523171404766251e-05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.72610018227274377132777187985570646349538821991325846732587180123971090415405994340e-07L, "1.72610018227274377132777187985570646349538821991325846732587180123971090415405994340e-07", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.97267688814850268231161594533176277702963907108885229111755006417082297177116403628e-10L, "2.97267688814850268231161594533176277702963907108885229111755006417082297177116403628e-10", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.34003577384307789433517516041141801840291757339440089597599691127216013708701908122e-13L, "3.34003577384307789433517516041141801840291757339440089597599691127216013708701908122e-13", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.83710441782049075320423070384744844199992659460213011403809803120117400852034616312e-16L, "1.83710441782049075320423070384744844199992659460213011403809803120117400852034616312e-16", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: static const T denom[49] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00L, "0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.58623241511168180642964355153611979969197632389120000000000000000000000000000000000e+59L, "2.58623241511168180642964355153611979969197632389120000000000000000000000000000000000e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.14776059445777272454478909512658340504634055437844480000000000000000000000000000000e+60L, "1.14776059445777272454478909512658340504634055437844480000000000000000000000000000000e+60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.33687316774105797487491206943952083427522202482769920000000000000000000000000000000e+60L, "2.33687316774105797487491206943952083427522202482769920000000000000000000000000000000e+60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.93931771794820227505327998088265029234306315290935296000000000000000000000000000000e+60L, "2.93931771794820227505327998088265029234306315290935296000000000000000000000000000000e+60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.58732126620733831007506641408248663184965762984968192000000000000000000000000000000e+60L, "2.58732126620733831007506641408248663184965762984968192000000000000000000000000000000e+60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.70875967919718263235573985374390952836630436899967729664000000000000000000000000000e+60L, "1.70875967919718263235573985374390952836630436899967729664000000000000000000000000000e+60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.85379314011606918037773868674769121317006435211054940160000000000000000000000000000e+59L, "8.85379314011606918037773868674769121317006435211054940160000000000000000000000000000e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.71284730779688769773963894301160770666134228557096157184000000000000000000000000000e+59L, "3.71284730779688769773963894301160770666134228557096157184000000000000000000000000000e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.28932307044619122980648381437020964890328309383409683660800000000000000000000000000e+59L, "1.28932307044619122980648381437020964890328309383409683660800000000000000000000000000e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.77318462637158785544842432932048255435278593289778189434880000000000000000000000000e+58L, "3.77318462637158785544842432932048255435278593289778189434880000000000000000000000000e+58", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.43506127634442398707204129992695098207363184338535871283200000000000000000000000000e+57L, "9.43506127634442398707204129992695098207363184338535871283200000000000000000000000000e+57", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.03845492864356655333532681420583102431615277938023321190400000000000000000000000000e+57L, "2.03845492864356655333532681420583102431615277938023321190400000000000000000000000000e+57", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.83999009701429896446125174672878806204082098360991498240000000000000000000000000000e+56L, "3.83999009701429896446125174672878806204082098360991498240000000000000000000000000000e+56", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.35489230937550499245891562547336108239509204950952161280000000000000000000000000000e+55L, "6.35489230937550499245891562547336108239509204950952161280000000000000000000000000000e+55", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.29772528226274467214810040016656557652034615522905907200000000000000000000000000000e+54L, "9.29772528226274467214810040016656557652034615522905907200000000000000000000000000000e+54", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.20904961446375814456243773222082143843446488101406694400000000000000000000000000000e+54L, "1.20904961446375814456243773222082143843446488101406694400000000000000000000000000000e+54", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.40365958410890573208156480922200774640363798049607680000000000000000000000000000000e+53L, "1.40365958410890573208156480922200774640363798049607680000000000000000000000000000000e+53", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.46043077126250441083376770461268927689633235989806080000000000000000000000000000000e+52L, "1.46043077126250441083376770461268927689633235989806080000000000000000000000000000000e+52", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.36614320415900278257706576887853848939034773214707200000000000000000000000000000000e+51L, "1.36614320415900278257706576887853848939034773214707200000000000000000000000000000000e+51", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.15206976862783614311149889251052922447816029310704000000000000000000000000000000000e+50L, "1.15206976862783614311149889251052922447816029310704000000000000000000000000000000000e+50", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.77813407235973952690584557945805785141530131232000000000000000000000000000000000000e+48L, "8.77813407235973952690584557945805785141530131232000000000000000000000000000000000000e+48", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.05427433680345604716709118838839279105889718168000000000000000000000000000000000000e+47L, "6.05427433680345604716709118838839279105889718168000000000000000000000000000000000000e+47", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.78521786437249034986429559796198708056629195920000000000000000000000000000000000000e+46L, "3.78521786437249034986429559796198708056629195920000000000000000000000000000000000000e+46", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.14767574563602441860666638696985543051632932900000000000000000000000000000000000000e+45L, "2.14767574563602441860666638696985543051632932900000000000000000000000000000000000000e+45", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.10670241077088810971706255294759962081742560000000000000000000000000000000000000000e+44L, "1.10670241077088810971706255294759962081742560000000000000000000000000000000000000000e+44", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.18169711520817559068840393152423680425806800000000000000000000000000000000000000000e+42L, "5.18169711520817559068840393152423680425806800000000000000000000000000000000000000000e+42", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.20469142542714399830581711509508827469072000000000000000000000000000000000000000000e+41L, "2.20469142542714399830581711509508827469072000000000000000000000000000000000000000000e+41", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.52262327042556731724042143403148765747400000000000000000000000000000000000000000000e+39L, "8.52262327042556731724042143403148765747400000000000000000000000000000000000000000000e+39", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.99170395816718632523469103061235796000000000000000000000000000000000000000000000000e+38L, "2.99170395816718632523469103061235796000000000000000000000000000000000000000000000000e+38", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.52799264297742196655044248956363241200000000000000000000000000000000000000000000000e+36L, "9.52799264297742196655044248956363241200000000000000000000000000000000000000000000000e+36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.74963758121012783798075199083561368000000000000000000000000000000000000000000000000e+35L, "2.74963758121012783798075199083561368000000000000000000000000000000000000000000000000e+35", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.17818951688468446046630137619707100000000000000000000000000000000000000000000000000e+33L, "7.17818951688468446046630137619707100000000000000000000000000000000000000000000000000e+33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.69158257487734463952514901466560000000000000000000000000000000000000000000000000000e+32L, "1.69158257487734463952514901466560000000000000000000000000000000000000000000000000000e+32", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.58884554197432692667327204887200000000000000000000000000000000000000000000000000000e+30L, "3.58884554197432692667327204887200000000000000000000000000000000000000000000000000000e+30", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.83247236043417659693131385280000000000000000000000000000000000000000000000000000000e+28L, "6.83247236043417659693131385280000000000000000000000000000000000000000000000000000000e+28", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.16258590758579743727854695600000000000000000000000000000000000000000000000000000000e+27L, "1.16258590758579743727854695600000000000000000000000000000000000000000000000000000000e+27", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.75944782640561014882131200000000000000000000000000000000000000000000000000000000000e+25L, "1.75944782640561014882131200000000000000000000000000000000000000000000000000000000000e+25", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.35417464029202218295792000000000000000000000000000000000000000000000000000000000000e+23L, "2.35417464029202218295792000000000000000000000000000000000000000000000000000000000000e+23", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.76451283313977112712800000000000000000000000000000000000000000000000000000000000000e+21L, "2.76451283313977112712800000000000000000000000000000000000000000000000000000000000000e+21", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.82319917562273542710000000000000000000000000000000000000000000000000000000000000000e+19L, "2.82319917562273542710000000000000000000000000000000000000000000000000000000000000000e+19", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.47846814127216480000000000000000000000000000000000000000000000000000000000000000000e+17L, "2.47846814127216480000000000000000000000000000000000000000000000000000000000000000000e+17", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.84271364164813200000000000000000000000000000000000000000000000000000000000000000000e+15L, "1.84271364164813200000000000000000000000000000000000000000000000000000000000000000000e+15", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.13748817042080000000000000000000000000000000000000000000000000000000000000000000000e+13L, "1.13748817042080000000000000000000000000000000000000000000000000000000000000000000000e+13", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.67201413460000000000000000000000000000000000000000000000000000000000000000000000000e+10L, "5.67201413460000000000000000000000000000000000000000000000000000000000000000000000000e+10", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.19486240000000000000000000000000000000000000000000000000000000000000000000000000000e+08L, "2.19486240000000000000000000000000000000000000000000000000000000000000000000000000000e+08", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.18332000000000000000000000000000000000000000000000000000000000000000000000000000000e+05L, "6.18332000000000000000000000000000000000000000000000000000000000000000000000000000000e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.12800000000000000000000000000000000000000000000000000000000000000000000000000000000e+03L, "1.12800000000000000000000000000000000000000000000000000000000000000000000000000000000e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00L, "1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: return boost::math::tools::evaluate_rational(num, denom, z);
23866: }
23866:
23866:
23866: template<class T>
23866: static T lanczos_sum_near_1(const T& dz)
23866: {
23866: static const T d[48] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.36662594316736437928923771651218082870790219434510733129873815200968646566980996339e+01L, "1.36662594316736437928923771651218082870790219434510733129873815200968646566980996339e+01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.76780165965526893166944674250172218113345269194305352999222919039854748751783233101e+02L, "-1.76780165965526893166944674250172218113345269194305352999222919039854748751783233101e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.07970572889193090835848021094044050788957851893559287421136980839960026782217427894e+03L, "1.07970572889193090835848021094044050788957851893559287421136980839960026782217427894e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -4.14103116540076985021820709941614153683990156820041738016476143763552291310864305462e+03L, "-4.14103116540076985021820709941614153683990156820041738016476143763552291310864305462e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.11895235901890827822967425840835669339942717903640916537446753898873381005535850448e+04L, "1.11895235901890827822967425840835669339942717903640916537446753898873381005535850448e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.26548471357135814759065586133601745345092666805731605105989839308832305900191949768e+04L, "-2.26548471357135814759065586133601745345092666805731605105989839308832305900191949768e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.56856136042152636864745499626803467747701570337645969278665918810296351408741364840e+04L, "3.56856136042152636864745499626803467747701570337645969278665918810296351408741364840e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -4.48255074360054688238131834296168065172557135920905358164352154448630969015187687499e+04L, "-4.48255074360054688238131834296168065172557135920905358164352154448630969015187687499e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.56619966800988637898793129440851486107980873809024863561425305126874295268067178801e+04L, "4.56619966800988637898793129440851486107980873809024863561425305126874295268067178801e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.81597333294282872581583559942700103331926900424172914177106074836091709159865752408e+04L, "-3.81597333294282872581583559942700103331926900424172914177106074836091709159865752408e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.63678053487724707751260697626783885891593791493016491379265204946777211045670615960e+04L, "2.63678053487724707751260697626783885891593791493016491379265204946777211045670615960e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.51398164257933964710898171665986511410737733219980979417140085562924634596875563017e+04L, "-1.51398164257933964710898171665986511410737733219980979417140085562924634596875563017e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.24278345602386851676210506047826420822246500559376040889647916551285989221630819711e+03L, "7.24278345602386851676210506047826420822246500559376040889647916551285989221630819711e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.88891626830459350723218099328412217578914954601038686119863249895652809029737934745e+03L, "-2.88891626830459350723218099328412217578914954601038686119863249895652809029737934745e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.59719898181036663575857261276179540194083274881058286618169370083758218641306764946e+02L, "9.59719898181036663575857261276179540194083274881058286618169370083758218641306764946e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.64811367543293387988966817387441229757530457146808054159891759802567729960811992548e+02L, "-2.64811367543293387988966817387441229757530457146808054159891759802567729960811992548e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.04201418909362106976467138015064536194810537117201428954061434907295912679183849448e+01L, "6.04201418909362106976467138015064536194810537117201428954061434907295912679183849448e+01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.13288541649508118041751198270788445621639048290878149127604057823054487014510567347e+01L, "-1.13288541649508118041751198270788445621639048290878149127604057823054487014510567347e+01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.73151244996618239257199112314250678525910059470480205369884034575880974697338791461e+00L, "1.73151244996618239257199112314250678525910059470480205369884034575880974697338791461e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.13522814977566175652818016173551223075398445721839956765100980594656777696996995600e-01L, "-2.13522814977566175652818016173551223075398445721839956765100980594656777696996995600e-01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.09751773607848160413869110673825438505378131216432708718954295924780177394997267064e-02L, "2.09751773607848160413869110673825438505378131216432708718954295924780177394997267064e-02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.61580494932170317026139049544442892885812277792439584113117496484172419053879898708e-03L, "-1.61580494932170317026139049544442892885812277792439584113117496484172419053879898708e-03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.57433012294978946531397728731840486773642836205104228434646630602626154207102575497e-05L, "9.57433012294978946531397728731840486773642836205104228434646630602626154207102575497e-05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -4.26115172606869205202745132493304748075964471479903642930011237303391162925986198072e-06L, "-4.26115172606869205202745132493304748075964471479903642930011237303391162925986198072e-06", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.38298958800694421458738651547755286166537642575090914169204625632511624488640442440e-07L, "1.38298958800694421458738651547755286166537642575090914169204625632511624488640442440e-07", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.15434025288605144031976010596974001946974995609543721535748916319261879201397044643e-09L, "-3.15434025288605144031976010596974001946974995609543721535748916319261879201397044643e-09", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.82356872364336815146383574702913568837734092081047520230601339834144374864204220536e-11L, "4.82356872364336815146383574702913568837734092081047520230601339834144374864204220536e-11", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -4.65347968332361614985780283973809979932690029695650403412722596287871272868944164634e-13L, "-4.65347968332361614985780283973809979932690029695650403412722596287871272868944164634e-13", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.61330972151984338818972320382872350752985962075827056997941920528654516802241093365e-15L, "2.61330972151984338818972320382872350752985962075827056997941920528654516802241093365e-15", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -7.65712722253446172294321996643259661334528734360491402384245881720504947974618941889e-18L, "-7.65712722253446172294321996643259661334528734360491402384245881720504947974618941889e-18", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.00315206806375905680927042642419402837617729582878141293654269070861386455343121457e-20L, "1.00315206806375905680927042642419402837617729582878141293654269070861386455343121457e-20", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -4.67823488694203852929295147942658910943366513902587599688834805295280061153989766567e-24L, "-4.67823488694203852929295147942658910943366513902587599688834805295280061153989766567e-24", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.42784331030702330814913209805860341549196535898588904124741295988710093967131088558e-28L, "5.42784331030702330814913209805860341549196535898588904124741295988710093967131088558e-28", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -8.48033607088050589024790469649076336393214555653483679072498587123824764496639393119e-33L, "-8.48033607088050589024790469649076336393214555653483679072498587123824764496639393119e-33", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.38678975538457226036965671734240034395107611196492658679331149986658879027568426753e-39L, "5.38678975538457226036965671734240034395107611196492658679331149986658879027568426753e-39", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.16374538409167657752796610509153125477921149181502343813699059314745306802450755203e-44L, "-3.16374538409167657752796610509153125477921149181502343813699059314745306802450755203e-44", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.81171114010755337144545373726087472870924044681995068325590922531565077520176259988e-44L, "2.81171114010755337144545373726087472870924044681995068325590922531565077520176259988e-44", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.12518224599976943855815669111195755470966740275125423482269033756614972278324281875e-44L, "-2.12518224599976943855815669111195755470966740275125423482269033756614972278324281875e-44", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.34263635935093852590059444867684742593087836231966301216975070578889017560759389549e-44L, "1.34263635935093852590059444867684742593087836231966301216975070578889017560759389549e-44", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -6.99309631968130547786945826997659785416033441104613988483204974783621090009511212354e-45L, "-6.99309631968130547786945826997659785416033441104613988483204974783621090009511212354e-45", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.97679666641473578922997037967978768575315112030381704618978104186395317308038799663e-45L, "2.97679666641473578922997037967978768575315112030381704618978104186395317308038799663e-45", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.02914662367729885237175382124322264439002075945431846631322577735558916377073070681e-45L, "-1.02914662367729885237175382124322264439002075945431846631322577735558916377073070681e-45", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.86340999808161554465998036301386594999661959859518584115844390884231065866412899967e-46L, "2.86340999808161554465998036301386594999661959859518584115844390884231065866412899967e-46", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -6.29984672974930250076096802152581521034785267762668779142172198560320648227598177519e-47L, "-6.29984672974930250076096802152581521034785267762668779142172198560320648227598177519e-47", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.06114476593975974108382448813738674408492134446936551295509200129676957425762855493e-47L, "1.06114476593975974108382448813738674408492134446936551295509200129676957425762855493e-47", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.29100594893020385764408454293732511414412187214201378654051353911377525656418964207e-48L, "-1.29100594893020385764408454293732511414412187214201378654051353911377525656418964207e-48", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.01295708418471529474900073238291374279037984260859165547005675299775146592711994348e-49L, "1.01295708418471529474900073238291374279037984260859165547005675299775146592711994348e-49", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.85645797686287223531258890899878578933576632756354490084215435591125736026369211048e-51L, "-3.85645797686287223531258890899878578933576632756354490084215435591125736026369211048e-51", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: T result = 0;
23866: for (unsigned k = 1; k <= sizeof(d) / sizeof(d[0]); ++k)
23866: {
23866: result += (-d[k - 1] * dz) / (k * dz + k * k);
23866: }
23866: return result;
23866: }
23866:
23866: template<class T>
23866: static T lanczos_sum_near_2(const T& dz)
23866: {
23866: static const T d[48] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.96888487550957841138585220622994611985377489508130630837700057227501332853802783571e+02L, "1.96888487550957841138585220622994611985377489508130630837700057227501332853802783571e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.54685487861380185221232939396911532213815096219473151461939579496835151047360732452e+03L, "-2.54685487861380185221232939396911532213815096219473151461939579496835151047360732452e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.55552167748949946948357664110976074745481263569802725437644778906661083814390424521e+04L, "1.55552167748949946948357664110976074745481263569802725437644778906661083814390424521e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -5.96594384244972046908436642965430637119152525028640569187886872989713864303356592740e+04L, "-5.96594384244972046908436642965430637119152525028640569187886872989713864303356592740e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.61206392071125071279258677015155474032235397552388756144191669459747349464120963595e+05L, "1.61206392071125071279258677015155474032235397552388756144191669459747349464120963595e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.26386207619544812116284495283640666091191851380376198408981809802540783149068179434e+05L, "-3.26386207619544812116284495283640666091191851380376198408981809802540783149068179434e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.14119209063000811010153319909166529923295169312754965782286511885151365058895055453e+05L, "5.14119209063000811010153319909166529923295169312754965782286511885151365058895055453e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -6.45796781987366173516756643389460485986669456101668857494954730722833100110613651939e+05L, "-6.45796781987366173516756643389460485986669456101668857494954730722833100110613651939e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.57848002216691432249235663216198359909768823927158528746723212875688277777327166892e+05L, "6.57848002216691432249235663216198359909768823927158528746723212875688277777327166892e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -5.49763614406879724077940366200859712110749040051198851331880172109188055935892153627e+05L, "-5.49763614406879724077940366200859712110749040051198851331880172109188055935892153627e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.79878440118422879619706786668472072947762184485364412917440713970863702012601831523e+05L, "3.79878440118422879619706786668472072947762184485364412917440713970863702012601831523e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.18117881690802831493078756446312359535362496025568649851035022806893921424585651770e+05L, "-2.18117881690802831493078756446312359535362496025568649851035022806893921424585651770e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.04346085879989815616410913816129789693536068884338152664460700712557690664496356491e+05L, "1.04346085879989815616410913816129789693536068884338152664460700712557690664496356491e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -4.16203393160809415901576300558568214071599197484753461939177893151363492512491744816e+04L, "-4.16203393160809415901576300558568214071599197484753461939177893151363492512491744816e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.38265924315387281787206504282410481919445750548305464376847792250029309946303762942e+04L, "1.38265924315387281787206504282410481919445750548305464376847792250029309946303762942e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.81511194797468462062874900113250266465621301462447801385359808929965375229616323251e+03L, "-3.81511194797468462062874900113250266465621301462447801385359808929965375229616323251e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.70467183357417683453667167003713608362889484387619452881332522389524770233094455619e+02L, "8.70467183357417683453667167003713608362889484387619452881332522389524770233094455619e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.63213714284756057716179081387804854162483375452448157161319547511874432644723929936e+02L, "-1.63213714284756057716179081387804854162483375452448157161319547511874432644723929936e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.49457336262308128548970424731422625668341066112088155314174120975542287189333019758e+01L, "2.49457336262308128548970424731422625668341066112088155314174120975542287189333019758e+01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.07620269531262256257667392994057559249714693275375776469485257399496930680150472549e+00L, "-3.07620269531262256257667392994057559249714693275375776469485257399496930680150472549e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.02187366435225062095438319574039637826727962739349882824178780109324022923104253736e-01L, "3.02187366435225062095438319574039637826727962739349882824178780109324022923104253736e-01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.32787467733840531952793152972131223922164668925536951733638661285196165517774652382e-02L, "-2.32787467733840531952793152972131223922164668925536951733638661285196165517774652382e-02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.37936454861394636073464067115999570083944553260438583828963060925061101644510914088e-03L, "1.37936454861394636073464067115999570083944553260438583828963060925061101644510914088e-03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -6.13900038094091115267314860504732881894801020942472019504308090210210731167345398552e-05L, "-6.13900038094091115267314860504732881894801020942472019504308090210210731167345398552e-05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.99245982152457111301991970385956762536902876746714853773765158096202639164545608854e-06L, "1.99245982152457111301991970385956762536902876746714853773765158096202639164545608854e-06", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -4.54442771789078363056076138819579948120113702520046296917694187019851573438477912893e-08L, "-4.54442771789078363056076138819579948120113702520046296917694187019851573438477912893e-08", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.94926914964866053119681538255564252500374927699409988373657464226793796472537754598e-10L, "6.94926914964866053119681538255564252500374927699409988373657464226793796472537754598e-10", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -6.70422350226445404683228568613754929042955139666562491583132456753472072839819516057e-12L, "-6.70422350226445404683228568613754929042955139666562491583132456753472072839819516057e-12", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.76497022572067913016091674317545685518824311681605875941103548614928596445142654530e-14L, "3.76497022572067913016091674317545685518824311681605875941103548614928596445142654530e-14", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.10315496743460248468022132288915711635897058766184880707096827157196752704473690191e-16L, "-1.10315496743460248468022132288915711635897058766184880707096827157196752704473690191e-16", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.44523155331686111418148572564943890979552960547133940740999458361025242160963413278e-19L, "1.44523155331686111418148572564943890979552960547133940740999458361025242160963413278e-19", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -6.73988808644577660977639361852731370450420349068670037458430193432726909116710442573e-23L, "-6.73988808644577660977639361852731370450420349068670037458430193432726909116710442573e-23", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.81984174508721338476616177429473006273759399181666460057479840823572355207273441830e-27L, "7.81984174508721338476616177429473006273759399181666460057479840823572355207273441830e-27", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.22175387586288279410299617080503779059482571464350109824108120007426231737351306256e-31L, "-1.22175387586288279410299617080503779059482571464350109824108120007426231737351306256e-31", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.76069628266069128881232691561697202264350068700303406802593331217743381427492776348e-38L, "7.76069628266069128881232691561697202264350068700303406802593331217743381427492776348e-38", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -4.55797760012119196385166534789617212222293557097685410066659856245708610260816713241e-43L, "-4.55797760012119196385166534789617212222293557097685410066659856245708610260816713241e-43", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.05080524465178727911313037718933906722430509738224888801936471543177490693203242080e-43L, "4.05080524465178727911313037718933906722430509738224888801936471543177490693203242080e-43", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.06172965819221083679631791380848228306721487317680820361950045678791125133333041491e-43L, "-3.06172965819221083679631791380848228306721487317680820361950045678791125133333041491e-43", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.93432331242636842233461846275246262853067820473357196595254072710231999304513059821e-43L, "1.93432331242636842233461846275246262853067820473357196595254072710231999304513059821e-43", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.00748867278864769255014599872258605211683566333279390476878762044733272684660155341e-43L, "-1.00748867278864769255014599872258605211683566333279390476878762044733272684660155341e-43", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.28864237743622222407442194745385245322813091389014701339281732300960497092852607932e-44L, "4.28864237743622222407442194745385245322813091389014701339281732300960497092852607932e-44", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.48268166001867959355256619834250603827306390609511540411093653502476081933431007754e-44L, "-1.48268166001867959355256619834250603827306390609511540411093653502476081933431007754e-44", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.12528729298048868682661828587192615782099352227112063181739468363374124346195882740e-45L, "4.12528729298048868682661828587192615782099352227112063181739468363374124346195882740e-45", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -9.07612869947754202550701651568771230782100517153410159160000452433811651633069544830e-46L, "-9.07612869947754202550701651568771230782100517153410159160000452433811651633069544830e-46", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.52878107636588388950021856856509972417665723455977954669464087724444519346925778688e-46L, "1.52878107636588388950021856856509972417665723455977954669464087724444519346925778688e-46", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.85993987583058920731606562273777225552135287406894580374509213860879421694626894310e-47L, "-1.85993987583058920731606562273777225552135287406894580374509213860879421694626894310e-47", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.45935754590553989061937536984206183886886144778541444482827659230313539351404405283e-48L, "1.45935754590553989061937536984206183886886144778541444482827659230313539351404405283e-48", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -5.55596198187619704372842019685051223079581761704170979479661609332351755409245768399e-50L, "-5.55596198187619704372842019685051223079581761704170979479661609332351755409245768399e-50", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((267 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: };
23866: T result = 0;
23866: T z = dz + 2;
23866: for (unsigned k = 1; k <= sizeof(d) / sizeof(d[0]); ++k)
23866: {
23866: result += (-d[k - 1] * dz) / (z + k * z + k * k - 1);
23866: }
23866: return result;
23866: }
23866:
23866: static double g() { return 3.71521093750000019895196601282805204391479492187500000000000000000000000000000000000e+01; }
23866: };
23866:
23866:
23866:
23866:
23866:
23866:
23866: struct lanczos58MP : public boost::integral_constant<int, 334>
23866: {
23866: template <class T>
23866: static T lanczos_sum(const T& z)
23866: {
23866: static const T num[58] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1113345018281139401900617648632565892997531886271137869532357720305909403460902551816191757935253298297e+96L, "1.1113345018281139401900617648632565892997531886271137869532357720305909403460902551816191757935253298297e+96", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.3306998523015859302296206498309765162943025964850544682652937543993544826195909937055933931442768067675e+96L, "1.3306998523015859302296206498309765162943025964850544682652937543993544826195909937055933931442768067675e+96", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.8268352474100341852641008414682924186512501342670048541149232501353823124314085480609221821688640650080e+95L, "7.8268352474100341852641008414682924186512501342670048541149232501353823124314085480609221821688640650080e+95", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.0141386651493209831831274089811845202892902987250465018037980182315440505121630111661568734223655786214e+95L, "3.0141386651493209831831274089811845202892902987250465018037980182315440505121630111661568734223655786214e+95", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.5471258592914542867143021588167696855338160407933457150021303941501653183920330822783098409082225352649e+94L, "8.5471258592914542867143021588167696855338160407933457150021303941501653183920330822783098409082225352649e+94", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.9029900619671536896112969373037726527696919271039767737722503312395772965346303367519600397313792277727e+94L, "1.9029900619671536896112969373037726527696919271039767737722503312395772965346303367519600397313792277727e+94", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.4640693221647807642599419508017238730661097576373283904791677661939143319337033201070793440010339999715e+93L, "3.4640693221647807642599419508017238730661097576373283904791677661939143319337033201070793440010339999715e+93", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.3008318491825889746629471128738097186407559167000216981000503166575445677111681454415332001004453692360e+92L, "5.3008318491825889746629471128738097186407559167000216981000503166575445677111681454415332001004453692360e+92", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.9581961997681479620796339921050983411541681934353890086635121221338490738854914613804353855734829750740e+91L, "6.9581961997681479620796339921050983411541681934353890086635121221338490738854914613804353855734829750740e+91", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.9562812093757389383361734216065083810639336069848105427428961256383580773444097085298844542948261561976e+90L, "7.9562812093757389383361734216065083810639336069848105427428961256383580773444097085298844542948261561976e+90", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.0204448099875032766488461246324914875195022845573308192494619777200657405252573402181380342443147295173e+89L, "8.0204448099875032766488461246324914875195022845573308192494619777200657405252573402181380342443147295173e+89", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.1967742477741068422882850261828584111953166907106815923693978537447964053382494347755201222673169434806e+88L, "7.1967742477741068422882850261828584111953166907106815923693978537447964053382494347755201222673169434806e+88", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.7934308426826323386245296144249798411531042807557571947289014719343462128587532573403065724298496762577e+87L, "5.7934308426826323386245296144249798411531042807557571947289014719343462128587532573403065724298496762577e+87", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.2112731316363645590406244691358512085700135781552933145962419229534561671703452680159817420544888863655e+86L, "4.2112731316363645590406244691358512085700135781552933145962419229534561671703452680159817420544888863655e+86", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.7792875367286636291574914918267428357586601357931867786906344130539973047706286380462771311772443260655e+85L, "2.7792875367286636291574914918267428357586601357931867786906344130539973047706286380462771311772443260655e+85", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.6729889167781214645382609228554520670924462597343847547527634847733870633193570419233293354907537898968e+84L, "1.6729889167781214645382609228554520670924462597343847547527634847733870633193570419233293354907537898968e+84", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.2212896890317209445182351532165347688163702283356828888187120214401748895306876396481747000574259149233e+82L, "9.2212896890317209445182351532165347688163702283356828888187120214401748895306876396481747000574259149233e+82", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.6696330100177872775181285832060367195698947756070274789550514016487770556676430692662838020948055174819e+81L, "4.6696330100177872775181285832060367195698947756070274789550514016487770556676430692662838020948055174819e+81", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.1787790436987713717592679695802576546659292017904142826938775295267502136179724011234775858106585474335e+80L, "2.1787790436987713717592679695802576546659292017904142826938775295267502136179724011234775858106585474335e+80", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.3897471960941486230091766140467565375262975446763006777927562006563131703283610364746875620601313483057e+78L, "9.3897471960941486230091766140467565375262975446763006777927562006563131703283610364746875620601313483057e+78", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.7456216276193058883301725852613487104982510349671722342387971953607146505494372335184541893296983766398e+77L, "3.7456216276193058883301725852613487104982510349671722342387971953607146505494372335184541893296983766398e+77", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.3855091017101453942895165907767739025127711826384743418432444735139729009897407793448891996393706658957e+76L, "1.3855091017101453942895165907767739025127711826384743418432444735139729009897407793448891996393706658957e+76", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.7596919543541505311176214833582242571197674817260097288825507658966682365463135538963387631678553863542e+74L, "4.7596919543541505311176214833582242571197674817260097288825507658966682365463135538963387631678553863542e+74", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.5205308568827525377048378465545277453459194177597465928758908233213456983481011601239823019085100837607e+73L, "1.5205308568827525377048378465545277453459194177597465928758908233213456983481011601239823019085100837607e+73", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.5219482007379940303673464060102227421305538751659464891709211634879751289944728765835405235116911964067e+71L, "4.5219482007379940303673464060102227421305538751659464891709211634879751289944728765835405235116911964067e+71", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2529929196659743450833612479027982672526994601606551595908472901860777472333846227605233498599036089780e+70L, "1.2529929196659743450833612479027982672526994601606551595908472901860777472333846227605233498599036089780e+70", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.2371343799933848311703711400651007221131224388690941908721236718964833912418768528725638940635396117593e+68L, "3.2371343799933848311703711400651007221131224388690941908721236718964833912418768528725638940635396117593e+68", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.8015422120873735048084230762717970714811562909437854684093754471976926045882197320273930142628411250042e+66L, "7.8015422120873735048084230762717970714811562909437854684093754471976926045882197320273930142628411250042e+66", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.7544934847649309554128203553793825206530899558440305080175611169946112759760674627144360103537889679591e+65L, "1.7544934847649309554128203553793825206530899558440305080175611169946112759760674627144360103537889679591e+65", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.6825279122107455550724823529764700516671135432239079326787536307050166777000218851702259835300111357922e+63L, "3.6825279122107455550724823529764700516671135432239079326787536307050166777000218851702259835300111357922e+63", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.2137862491643897667607321980849893924427698956617156800113142641018717095876369593791167006646811605785e+61L, "7.2137862491643897667607321980849893924427698956617156800113142641018717095876369593791167006646811605785e+61", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.3186571319674830310069793304531422675865920550412368667057521060523822178148626902742473745717612071248e+60L, "1.3186571319674830310069793304531422675865920550412368667057521060523822178148626902742473745717612071248e+60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.2485774541577495056605563690047646700517885331946681444187667959802672435192052254156475697343336771638e+58L, "2.2485774541577495056605563690047646700517885331946681444187667959802672435192052254156475697343336771638e+58", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.5749708448011926909660539105173117507305781970952738170400845272354829441805660173686553510885012106315e+56L, "3.5749708448011926909660539105173117507305781970952738170400845272354829441805660173686553510885012106315e+56", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.2957728089076810011933348982855845071484336995217889625353037764527196874992238794680831083872659220534e+54L, "5.2957728089076810011933348982855845071484336995217889625353037764527196874992238794680831083872659220534e+54", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.3029702073166140154775964636478493296495204191370975362621002042260278819606865308080233433968063616502e+52L, "7.3029702073166140154775964636478493296495204191370975362621002042260278819606865308080233433968063616502e+52", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.3651754658248543289835755041517884667332033286508690963566578707866450840862377843752246373050313956333e+50L, "9.3651754658248543289835755041517884667332033286508690963566578707866450840862377843752246373050313956333e+50", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1153610110919853077136756888034644015689784357746290647672760493336488593590043112457135368750990637667e+49L, "1.1153610110919853077136756888034644015689784357746290647672760493336488593590043112457135368750990637667e+49", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2317697361001624160827173449861094521356739436250957059660912760537330301205792128544135654641326400704e+47L, "1.2317697361001624160827173449861094521356739436250957059660912760537330301205792128544135654641326400704e+47", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2591336713897064687825047779362333153357928528455245343833435858589598201567338554890557167949204480368e+45L, "1.2591336713897064687825047779362333153357928528455245343833435858589598201567338554890557167949204480368e+45", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1888395650074118534283640535831622534704266864697448915278695723452804398372734472806777342045155424277e+43L, "1.1888395650074118534283640535831622534704266864697448915278695723452804398372734472806777342045155424277e+43", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0342195380047963732482565081644533382537722066923561121178973781344452277931733870503748282543943428982e+41L, "1.0342195380047963732482565081644533382537722066923561121178973781344452277931733870503748282543943428982e+41", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.2659603644818244197377849119572544438113712679642935412688508428331533577481416745415954979034017913781e+38L, "8.2659603644818244197377849119572544438113712679642935412688508428331533577481416745415954979034017913781e+38", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.0493876469565505074955014266411916314577665137838261525037575218110760155069631757821913430706010515995e+36L, "6.0493876469565505074955014266411916314577665137838261525037575218110760155069631757821913430706010515995e+36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.0380102035661800729809170954585443393379101722448652003355183633039922242269533846456702077836461601594e+34L, "4.0380102035661800729809170954585443393379101722448652003355183633039922242269533846456702077836461601594e+34", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.4471701800736812643301636372332435764064729819100848382778186520311589961354650397132342954205946278402e+32L, "2.4471701800736812643301636372332435764064729819100848382778186520311589961354650397132342954205946278402e+32", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.3391793076015860668513073429148720023215553662036803736563341850799950224212365984411047979319730267348e+30L, "1.3391793076015860668513073429148720023215553662036803736563341850799950224212365984411047979319730267348e+30", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.5746079755559823667940853958792940224952894096446926758424644873786146686411034227207764327098030858365e+27L, "6.5746079755559823667940853958792940224952894096446926758424644873786146686411034227207764327098030858365e+27", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.8730952802737845263408235958198085714879899902329571556827316641606659145317043632556281422581317630775e+25L, "2.8730952802737845263408235958198085714879899902329571556827316641606659145317043632556281422581317630775e+25", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1068860106460271425431255001071933519142520498723285368106201466148952145283909421951418316204387374823e+23L, "1.1068860106460271425431255001071933519142520498723285368106201466148952145283909421951418316204387374823e+23", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.7146191714834483705600971071352976348572227109511068140706241351872914486137201205172098597005503434574e+20L, "3.7146191714834483705600971071352976348572227109511068140706241351872914486137201205172098597005503434574e+20", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0693465808661148698636384310734985694414606785941298207428612238748657882890467389962396214120403612061e+18L, "1.0693465808661148698636384310734985694414606785941298207428612238748657882890467389962396214120403612061e+18", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.5877812671795420049920049903121324610843253367633375770943367999226546473657225178995404939996916553769e+15L, "2.5877812671795420049920049903121324610843253367633375770943367999226546473657225178995404939996916553769e+15", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.1199728232559097639450648660234135896472362777482676055586950665599850474720777665093211412423570836354e+12L, "5.1199728232559097639450648660234135896472362777482676055586950665599850474720777665093211412423570836354e+12", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.9536149625531631518225658997937689548178270704423376010017262234330926444650292977902802706698285898435e+09L, "7.9536149625531631518225658997937689548178270704423376010017262234330926444650292977902802706698285898435e+09", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.0978434212942028068922584596812569730178537381770594492536210144311893565241511848298648224631091914130e+06L, "9.0978434212942028068922584596812569730178537381770594492536210144311893565241511848298648224631091914130e+06", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.8136582389003336880560289199735195790527296500214034301547642961678068653936021531092803113827675512051e+03L, "6.8136582389003336880560289199735195790527296500214034301547642961678068653936021531092803113827675512051e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.5066282746310005024157652848110452530069867406099383166299235763422936546078420094024669537723756981791e+00L, "2.5066282746310005024157652848110452530069867406099383166299235763422936546078420094024669537723756981791e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: static const T denom[58] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00L, "0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.1099858780486345185404564746372494973649797888116845868744704000000000000000000000000000000000000000000e+74L, "7.1099858780486345185404564746372494973649797888116845868744704000000000000000000000000000000000000000000e+74", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.2787481989562818154790285585287083447455750564964755439725051904000000000000000000000000000000000000000e+75L, "3.2787481989562818154790285585287083447455750564964755439725051904000000000000000000000000000000000000000e+75", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.9814423801545723353305894697802330693700024131737540066597268357120000000000000000000000000000000000000e+75L, "6.9814423801545723353305894697802330693700024131737540066597268357120000000000000000000000000000000000000e+75", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.2379872707088650213961476468088967648845485386801302969710798700544000000000000000000000000000000000000e+75L, "9.2379872707088650213961476468088967648845485386801302969710798700544000000000000000000000000000000000000e+75", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.6028610849707118786878466090726746922395786229117545420266938564608000000000000000000000000000000000000e+75L, "8.6028610849707118786878466090726746922395786229117545420266938564608000000000000000000000000000000000000e+75", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.0438085338641386367983933867412545578566598680906745465073101805977600000000000000000000000000000000000e+75L, "6.0438085338641386367983933867412545578566598680906745465073101805977600000000000000000000000000000000000e+75", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.3492380371843850750819852073737242436575952022390816483000346566721536000000000000000000000000000000000e+75L, "3.3492380371843850750819852073737242436575952022390816483000346566721536000000000000000000000000000000000e+75", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.5102990983560640009327873678307954320470630605324516076646299828695859200000000000000000000000000000000e+75L, "1.5102990983560640009327873678307954320470630605324516076646299828695859200000000000000000000000000000000e+75", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.6706536806860658574451791386582141941677796433514743219241257405513728000000000000000000000000000000000e+74L, "5.6706536806860658574451791386582141941677796433514743219241257405513728000000000000000000000000000000000e+74", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.8043159910377823217375261881225863717725312218178043012454139087028224000000000000000000000000000000000e+74L, "1.8043159910377823217375261881225863717725312218178043012454139087028224000000000000000000000000000000000e+74", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.9335160303959039103395501372789994167981664930485977399292586960638443520000000000000000000000000000000e+73L, "4.9335160303959039103395501372789994167981664930485977399292586960638443520000000000000000000000000000000e+73", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1723691196565373582067598608574778201485664959896330847068435199126667264000000000000000000000000000000e+73L, "1.1723691196565373582067598608574778201485664959896330847068435199126667264000000000000000000000000000000e+73", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.4438352206893499975371296011596621640882812103203541286914698812249866240000000000000000000000000000000e+72L, "2.4438352206893499975371296011596621640882812103203541286914698812249866240000000000000000000000000000000e+72", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.5035118941062978428961903224471555396129604077556196563177106772688896000000000000000000000000000000000e+71L, "4.5035118941062978428961903224471555396129604077556196563177106772688896000000000000000000000000000000000e+71", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.3850308579063636618912025850466431356280013115826126911230283854233600000000000000000000000000000000000e+70L, "7.3850308579063636618912025850466431356280013115826126911230283854233600000000000000000000000000000000000e+70", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0836900819838640440767313247219165663768918429617679815795491004563456000000000000000000000000000000000e+70L, "1.0836900819838640440767313247219165663768918429617679815795491004563456000000000000000000000000000000000e+70", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.4298706038662999363673291534756645260294395901949985216872998030991360000000000000000000000000000000000e+69L, "1.4298706038662999363673291534756645260294395901949985216872998030991360000000000000000000000000000000000e+69", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.7034492632938290783198763770876160868300549275946097010473332643840000000000000000000000000000000000000e+68L, "1.7034492632938290783198763770876160868300549275946097010473332643840000000000000000000000000000000000000e+68", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.8389252775111283069889631347879462661235829004870041197088140774400000000000000000000000000000000000000e+67L, "1.8389252775111283069889631347879462661235829004870041197088140774400000000000000000000000000000000000000e+67", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.8045026245181087909282578887424942187415211828585867350357833779200000000000000000000000000000000000000e+66L, "1.8045026245181087909282578887424942187415211828585867350357833779200000000000000000000000000000000000000e+66", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.6139415015963261948795856116734033680672939822172300204078108032000000000000000000000000000000000000000e+65L, "1.6139415015963261948795856116734033680672939822172300204078108032000000000000000000000000000000000000000e+65", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.3187949670862787149323475106066210874520928766305564723661651200000000000000000000000000000000000000000e+64L, "1.3187949670862787149323475106066210874520928766305564723661651200000000000000000000000000000000000000000e+64", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.8652947935638867544975258598123447770317269214048194873129760000000000000000000000000000000000000000000e+62L, "9.8652947935638867544975258598123447770317269214048194873129760000000000000000000000000000000000000000000e+62", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.7677767608518504817918794029244339508807996285424723220104640000000000000000000000000000000000000000000e+61L, "6.7677767608518504817918794029244339508807996285424723220104640000000000000000000000000000000000000000000e+61", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.2641467556495415387682543812562093348191054073538914270730400000000000000000000000000000000000000000000e+60L, "4.2641467556495415387682543812562093348191054073538914270730400000000000000000000000000000000000000000000e+60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.4706517237142185424284275343767027578875512836847707758280000000000000000000000000000000000000000000000e+59L, "2.4706517237142185424284275343767027578875512836847707758280000000000000000000000000000000000000000000000e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.3177422716201009039921461100044177449498643771855331909700000000000000000000000000000000000000000000000e+58L, "1.3177422716201009039921461100044177449498643771855331909700000000000000000000000000000000000000000000000e+58", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.4750611894960504179018603471357527802382408288670161342000000000000000000000000000000000000000000000000e+56L, "6.4750611894960504179018603471357527802382408288670161342000000000000000000000000000000000000000000000000e+56", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.9330478552107545132079399426533304480054308936780642545000000000000000000000000000000000000000000000000e+55L, "2.9330478552107545132079399426533304480054308936780642545000000000000000000000000000000000000000000000000e+55", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2252899213008209896248783169149861832238011945022246000000000000000000000000000000000000000000000000000e+54L, "1.2252899213008209896248783169149861832238011945022246000000000000000000000000000000000000000000000000000e+54", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.7217402128877734970019794026056267173695376012268710000000000000000000000000000000000000000000000000000e+52L, "4.7217402128877734970019794026056267173695376012268710000000000000000000000000000000000000000000000000000e+52", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.6785124525594845202965146591601984920001061237741320000000000000000000000000000000000000000000000000000e+51L, "1.6785124525594845202965146591601984920001061237741320000000000000000000000000000000000000000000000000000e+51", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.5034829951836538559219701088754272365603191632587000000000000000000000000000000000000000000000000000000e+49L, "5.5034829951836538559219701088754272365603191632587000000000000000000000000000000000000000000000000000000e+49", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.6637415534451225329152181513653760874075278100800000000000000000000000000000000000000000000000000000000e+48L, "1.6637415534451225329152181513653760874075278100800000000000000000000000000000000000000000000000000000000e+48", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.6347190324222080575971451540788329488139570600000000000000000000000000000000000000000000000000000000000e+46L, "4.6347190324222080575971451540788329488139570600000000000000000000000000000000000000000000000000000000000e+46", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1887997793364622891010571019581486512880887480000000000000000000000000000000000000000000000000000000000e+45L, "1.1887997793364622891010571019581486512880887480000000000000000000000000000000000000000000000000000000000e+45", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.8047716936655096027980248782543659943937913000000000000000000000000000000000000000000000000000000000000e+43L, "2.8047716936655096027980248782543659943937913000000000000000000000000000000000000000000000000000000000000e+43", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.0790225058170194637643585929666817947860000000000000000000000000000000000000000000000000000000000000000e+41L, "6.0790225058170194637643585929666817947860000000000000000000000000000000000000000000000000000000000000000e+41", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2084757755139694726502828251712490452850000000000000000000000000000000000000000000000000000000000000000e+40L, "1.2084757755139694726502828251712490452850000000000000000000000000000000000000000000000000000000000000000e+40", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.1993406165887949960123200495814460898000000000000000000000000000000000000000000000000000000000000000000e+38L, "2.1993406165887949960123200495814460898000000000000000000000000000000000000000000000000000000000000000000e+38", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.6561413270081694853593737727970949550000000000000000000000000000000000000000000000000000000000000000000e+36L, "3.6561413270081694853593737727970949550000000000000000000000000000000000000000000000000000000000000000000e+36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.5369993949587931998758036774526800000000000000000000000000000000000000000000000000000000000000000000000e+34L, "5.5369993949587931998758036774526800000000000000000000000000000000000000000000000000000000000000000000000e+34", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.6151991880839964140266135934090000000000000000000000000000000000000000000000000000000000000000000000000e+32L, "7.6151991880839964140266135934090000000000000000000000000000000000000000000000000000000000000000000000000e+32", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.4760566491969897737280290058600000000000000000000000000000000000000000000000000000000000000000000000000e+30L, "9.4760566491969897737280290058600000000000000000000000000000000000000000000000000000000000000000000000000e+30", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0621766041618690022809397383500000000000000000000000000000000000000000000000000000000000000000000000000e+29L, "1.0621766041618690022809397383500000000000000000000000000000000000000000000000000000000000000000000000000e+29", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0668475851162648374876202000000000000000000000000000000000000000000000000000000000000000000000000000000e+27L, "1.0668475851162648374876202000000000000000000000000000000000000000000000000000000000000000000000000000000e+27", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.5410679744103301927030500000000000000000000000000000000000000000000000000000000000000000000000000000000e+24L, "9.5410679744103301927030500000000000000000000000000000000000000000000000000000000000000000000000000000000e+24", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.5395191798636166637180000000000000000000000000000000000000000000000000000000000000000000000000000000000e+22L, "7.5395191798636166637180000000000000000000000000000000000000000000000000000000000000000000000000000000000e+22", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.2147541393617700530500000000000000000000000000000000000000000000000000000000000000000000000000000000000e+20L, "5.2147541393617700530500000000000000000000000000000000000000000000000000000000000000000000000000000000000e+20", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.1197409850631024000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+18L, "3.1197409850631024000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+18", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.5899910954161520000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+16L, "1.5899910954161520000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+16", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.7660425636804000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+13L, "6.7660425636804000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+13", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.3384219373900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+11L, "2.3384219373900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+11", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.3043596000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+08L, "6.3043596000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+08", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2435500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+06L, "1.2435500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+06", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.5960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+03L, "1.5960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00L, "1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: return boost::math::tools::evaluate_rational(num, denom, z);
23866: }
23866:
23866: template <class T>
23866: static T lanczos_sum_expG_scaled(const T& z)
23866: {
23866: static const T num[58] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.9525834451195623352844833708766019251484824420589901934439764663785971607902920873854007890984226025387e+75L, "2.9525834451195623352844833708766019251484824420589901934439764663785971607902920873854007890984226025387e+75", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.5353913226536305547742063023255223178577430351061832712694094731916543407128432857596013878418835545541e+75L, "3.5353913226536305547742063023255223178577430351061832712694094731916543407128432857596013878418835545541e+75", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.0794265040063864629969189140227704423008747481150565046014672784314863153912417986968014303182196879938e+75L, "2.0794265040063864629969189140227704423008747481150565046014672784314863153912417986968014303182196879938e+75", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.0079363228400099355108372825384509227179448653556047031855632715439781114354847693263728085548142549876e+74L, "8.0079363228400099355108372825384509227179448653556047031855632715439781114354847693263728085548142549876e+74", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.2707926617939589278984760255796767920967443801395440059906534121478842405887081438764736244178311493742e+74L, "2.2707926617939589278984760255796767920967443801395440059906534121478842405887081438764736244178311493742e+74", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.0558467715603214792617326562510713807234351435955730720590956416562782623810902927804516780978093617536e+73L, "5.0558467715603214792617326562510713807234351435955730720590956416562782623810902927804516780978093617536e+73", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.2033080198136382677487341183423922900647133007317553822084317473855699622210307747112227636535549617309e+72L, "9.2033080198136382677487341183423922900647133007317553822084317473855699622210307747112227636535549617309e+72", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.4083202075984620999390260696805188384092629914880295342492703293697714617999890327029040466923272486691e+72L, "1.4083202075984620999390260696805188384092629914880295342492703293697714617999890327029040466923272486691e+72", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.8486472680848031160157166025706272700120860759432294711200940780548927766558565495831077710008357816723e+71L, "1.8486472680848031160157166025706272700120860759432294711200940780548927766558565495831077710008357816723e+71", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.1138175900123376987163744326763008390621758864911227853169463977789770550938948181501331329408292888705e+70L, "2.1138175900123376987163744326763008390621758864911227853169463977789770550938948181501331329408292888705e+70", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.1308645173446504769606114641352353002279158988307024846586220931944095152963117782251173128553590002677e+69L, "2.1308645173446504769606114641352353002279158988307024846586220931944095152963117782251173128553590002677e+69", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.9120324679281068850671805700697238886511656051607969710283305054986370771314011765262161774820057407221e+68L, "1.9120324679281068850671805700697238886511656051607969710283305054986370771314011765262161774820057407221e+68", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.5391934623114467787956807868296099285488891013887607698670475417480968323895750297127042280725645864237e+67L, "1.5391934623114467787956807868296099285488891013887607698670475417480968323895750297127042280725645864237e+67", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1188472337439846560727348944974065682611782369759313015986429928637543111162293072546541343053710871237e+66L, "1.1188472337439846560727348944974065682611782369759313015986429928637543111162293072546541343053710871237e+66", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.3839859706266764054133980098731552638450995195061568584278432933554090666516712057667084959928750476621e+64L, "7.3839859706266764054133980098731552638450995195061568584278432933554090666516712057667084959928750476621e+64", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.4447818108967399523602631725512074937872788923328188245441957349314890139383300142665492699548078016636e+63L, "4.4447818108967399523602631725512074937872788923328188245441957349314890139383300142665492699548078016636e+63", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.4499038978543131336483547267337201487870950383856380855972848092343622627255235050078874464565496828787e+62L, "2.4499038978543131336483547267337201487870950383856380855972848092343622627255235050078874464565496828787e+62", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2406238713440761680092008034709525627435037404776653076097934320335762078719054009676170121443275896208e+61L, "1.2406238713440761680092008034709525627435037404776653076097934320335762078719054009676170121443275896208e+61", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.7885604418978046593206212118683810887087891637289025925672325034976573417819599577035132403057170493687e+59L, "5.7885604418978046593206212118683810887087891637289025925672325034976573417819599577035132403057170493687e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.4946595358499347633866345682061171079599164941304972231143049023731630101503606670560705515260702923050e+58L, "2.4946595358499347633866345682061171079599164941304972231143049023731630101503606670560705515260702923050e+58", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.9513336364509343072555606544850997149882112871146960235297930573184577313990835201997736426755771031690e+56L, "9.9513336364509343072555606544850997149882112871146960235297930573184577313990835201997736426755771031690e+56", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.6810080403717774179828377811768440096006474456859136430725963485797286723671499145937476199781240726843e+55L, "3.6810080403717774179828377811768440096006474456859136430725963485797286723671499145937476199781240726843e+55", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2645506501577530162354586527854723438171436013868785795302304165655061134281691393986730787208175906833e+54L, "1.2645506501577530162354586527854723438171436013868785795302304165655061134281691393986730787208175906833e+54", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.0397326173536285938710693563469993609385607650335155744195392582126325319144559249104863671555936627244e+52L, "4.0397326173536285938710693563469993609385607650335155744195392582126325319144559249104863671555936627244e+52", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2013871048927633852181093624593869925193443374649283179426834256685646298857112848793626713837584764108e+51L, "1.2013871048927633852181093624593869925193443374649283179426834256685646298857112848793626713837584764108e+51", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.3289402473981501234144402953028274630427307351359919167469712295902671507115725494100349633541940933204e+49L, "3.3289402473981501234144402953028274630427307351359919167469712295902671507115725494100349633541940933204e+49", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.6003893195733192859177412982185685700998370832033861854329854490539688708839874262744736474012759445436e+47L, "8.6003893195733192859177412982185685700998370832033861854329854490539688708839874262744736474012759445436e+47", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.0727066732760648460132569879963196679351152547539542083857690449447906448979182035004975167951264229374e+46L, "2.0727066732760648460132569879963196679351152547539542083857690449447906448979182035004975167951264229374e+46", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.6613224093786683644702502032231164856098499632779487718555251290733786904948988026020403761370171127380e+44L, "4.6613224093786683644702502032231164856098499632779487718555251290733786904948988026020403761370171127380e+44", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.7837068244515233545220503730640329863081890096623187288769939552653286719974960799952261791747246686408e+42L, "9.7837068244515233545220503730640329863081890096623187288769939552653286719974960799952261791747246686408e+42", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.9165522010589216370481372290739111949387650621903781998282461665273890471374114621564713215060999778073e+41L, "1.9165522010589216370481372290739111949387650621903781998282461665273890471374114621564713215060999778073e+41", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.5033963322756782307786713227898388231893223357237704976668993902202940789294809098147971301691772648755e+39L, "3.5033963322756782307786713227898388231893223357237704976668993902202940789294809098147971301691772648755e+39", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.9740002270190565366640741207315377496247453294707036602010614289735470303392852115947439612907179897898e+37L, "5.9740002270190565366640741207315377496247453294707036602010614289735470303392852115947439612907179897898e+37", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.4979501813196320177935632677278886186231320810970746337833403723731191512041559167496248429116298871699e+35L, "9.4979501813196320177935632677278886186231320810970746337833403723731191512041559167496248429116298871699e+35", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.4069761263574572480694806529063097871169957005541147202721661005052475351188525148368053997631136759790e+34L, "1.4069761263574572480694806529063097871169957005541147202721661005052475351188525148368053997631136759790e+34", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.9402465143351975112300028774197323450509816779255592414045815705522691518043705429706146342655130265366e+32L, "1.9402465143351975112300028774197323450509816779255592414045815705522691518043705429706146342655130265366e+32", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.4881313407932962145111410344090747527354995727266179099775181263231061106933689865989301929428200117871e+30L, "2.4881313407932962145111410344090747527354995727266179099775181263231061106933689865989301929428200117871e+30", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.9632810384855297696182113289305607179489664745076688933167066674562917487536504070129264115660678482556e+28L, "2.9632810384855297696182113289305607179489664745076688933167066674562917487536504070129264115660678482556e+28", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.2725546854039254943463934183457508258081242388204842730157719983831445104894295952204798603845536120509e+26L, "3.2725546854039254943463934183457508258081242388204842730157719983831445104894295952204798603845536120509e+26", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.3452549409942328202733488146109233160716224388189413469297783823577482916724384652184656289642575364301e+24L, "3.3452549409942328202733488146109233160716224388189413469297783823577482916724384652184656289642575364301e+24", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.1584981954307469031764309294640361429335538748027906889408285804565757617154922327898215115914925102238e+22L, "3.1584981954307469031764309294640361429335538748027906889408285804565757617154922327898215115914925102238e+22", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.7477051072463293412749200465569024873771231987242784210248733085001441979676968452992807610739566040156e+20L, "2.7477051072463293412749200465569024873771231987242784210248733085001441979676968452992807610739566040156e+20", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.1960928676322401992340089643560231337218499440045721085448636142070840811937842162960498037401931828261e+18L, "2.1960928676322401992340089643560231337218499440045721085448636142070840811937842162960498037401931828261e+18", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.6071958343894951054088987834710923196788323800906338042869660264064639861175574231931711270452905023878e+16L, "1.6071958343894951054088987834710923196788323800906338042869660264064639861175574231931711270452905023878e+16", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0728148958446892912836806181637101367297983133466225777574815613761623459000110314136961372678097371209e+14L, "1.0728148958446892912836806181637101367297983133466225777574815613761623459000110314136961372678097371209e+14", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.5016195836538037540865015222440859129132562974585463183411281203357391116994585543064375504964287033151e+11L, "6.5016195836538037540865015222440859129132562974585463183411281203357391116994585543064375504964287033151e+11", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.5579194627421707093560391662678700402228252243270030776955569538161088100804816540797427121002521848777e+09L, "3.5579194627421707093560391662678700402228252243270030776955569538161088100804816540797427121002521848777e+09", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.7467358958842104945974935265631802960291549549388120971605962335321138414180962067591937089645593587253e+07L, "1.7467358958842104945974935265631802960291549549388120971605962335321138414180962067591937089645593587253e+07", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.6332135345687020156244092536439323519014928693505240553789259043703120308196994214855462894182573058664e+04L, "7.6332135345687020156244092536439323519014928693505240553789259043703120308196994214855462894182573058664e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.9407647340128848401194943791119430377408353392667765444895085026094746239619902099149777694224783951328e+02L, "2.9407647340128848401194943791119430377408353392667765444895085026094746239619902099149777694224783951328e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.8689665916105177080976558363071196803124010350312199134246436579120098844674440713135687985135098450472e-01L, "9.8689665916105177080976558363071196803124010350312199134246436579120098844674440713135687985135098450472e-01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.8410303167649082918635413442316246381709300383012975083202578569099476956148029095902566747899894260699e-03L, "2.8410303167649082918635413442316246381709300383012975083202578569099476956148029095902566747899894260699e-03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.8751938471236167190844006303614257144787097468775849169694452270347666880072332030058767126104666814717e-06L, "6.8751938471236167190844006303614257144787097468775849169694452270347666880072332030058767126104666814717e-06", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.3602697452963248452045411104106027969968697679097453973063118187262717386356657326020477164267694748313e-08L, "1.3602697452963248452045411104106027969968697679097453973063118187262717386356657326020477164267694748313e-08", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.1131092239698914177951080885440635365109643513308304020521218234027520232780450142616357759194523396831e-11L, "2.1131092239698914177951080885440635365109643513308304020521218234027520232780450142616357759194523396831e-11", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.4171068051802330111071549877540818528598812224565937952488425520621143590937182779724061728889603469712e-14L, "2.4171068051802330111071549877540818528598812224565937952488425520621143590937182779724061728889603469712e-14", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.8102465534711886967772860840717324393645550944967932350301450628070653877586909697550907928519183677886e-17L, "1.8102465534711886967772860840717324393645550944967932350301450628070653877586909697550907928519183677886e-17", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.6595873110837641575235810188999693348770063449340247652053167124146826554900758076335155425689417108046e-21L, "6.6595873110837641575235810188999693348770063449340247652053167124146826554900758076335155425689417108046e-21", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: static const T denom[58] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00L, "0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.1099858780486345185404564746372494973649797888116845868744704000000000000000000000000000000000000000000e+74L, "7.1099858780486345185404564746372494973649797888116845868744704000000000000000000000000000000000000000000e+74", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.2787481989562818154790285585287083447455750564964755439725051904000000000000000000000000000000000000000e+75L, "3.2787481989562818154790285585287083447455750564964755439725051904000000000000000000000000000000000000000e+75", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.9814423801545723353305894697802330693700024131737540066597268357120000000000000000000000000000000000000e+75L, "6.9814423801545723353305894697802330693700024131737540066597268357120000000000000000000000000000000000000e+75", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.2379872707088650213961476468088967648845485386801302969710798700544000000000000000000000000000000000000e+75L, "9.2379872707088650213961476468088967648845485386801302969710798700544000000000000000000000000000000000000e+75", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.6028610849707118786878466090726746922395786229117545420266938564608000000000000000000000000000000000000e+75L, "8.6028610849707118786878466090726746922395786229117545420266938564608000000000000000000000000000000000000e+75", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.0438085338641386367983933867412545578566598680906745465073101805977600000000000000000000000000000000000e+75L, "6.0438085338641386367983933867412545578566598680906745465073101805977600000000000000000000000000000000000e+75", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.3492380371843850750819852073737242436575952022390816483000346566721536000000000000000000000000000000000e+75L, "3.3492380371843850750819852073737242436575952022390816483000346566721536000000000000000000000000000000000e+75", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.5102990983560640009327873678307954320470630605324516076646299828695859200000000000000000000000000000000e+75L, "1.5102990983560640009327873678307954320470630605324516076646299828695859200000000000000000000000000000000e+75", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.6706536806860658574451791386582141941677796433514743219241257405513728000000000000000000000000000000000e+74L, "5.6706536806860658574451791386582141941677796433514743219241257405513728000000000000000000000000000000000e+74", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.8043159910377823217375261881225863717725312218178043012454139087028224000000000000000000000000000000000e+74L, "1.8043159910377823217375261881225863717725312218178043012454139087028224000000000000000000000000000000000e+74", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.9335160303959039103395501372789994167981664930485977399292586960638443520000000000000000000000000000000e+73L, "4.9335160303959039103395501372789994167981664930485977399292586960638443520000000000000000000000000000000e+73", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1723691196565373582067598608574778201485664959896330847068435199126667264000000000000000000000000000000e+73L, "1.1723691196565373582067598608574778201485664959896330847068435199126667264000000000000000000000000000000e+73", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.4438352206893499975371296011596621640882812103203541286914698812249866240000000000000000000000000000000e+72L, "2.4438352206893499975371296011596621640882812103203541286914698812249866240000000000000000000000000000000e+72", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.5035118941062978428961903224471555396129604077556196563177106772688896000000000000000000000000000000000e+71L, "4.5035118941062978428961903224471555396129604077556196563177106772688896000000000000000000000000000000000e+71", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.3850308579063636618912025850466431356280013115826126911230283854233600000000000000000000000000000000000e+70L, "7.3850308579063636618912025850466431356280013115826126911230283854233600000000000000000000000000000000000e+70", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0836900819838640440767313247219165663768918429617679815795491004563456000000000000000000000000000000000e+70L, "1.0836900819838640440767313247219165663768918429617679815795491004563456000000000000000000000000000000000e+70", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.4298706038662999363673291534756645260294395901949985216872998030991360000000000000000000000000000000000e+69L, "1.4298706038662999363673291534756645260294395901949985216872998030991360000000000000000000000000000000000e+69", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.7034492632938290783198763770876160868300549275946097010473332643840000000000000000000000000000000000000e+68L, "1.7034492632938290783198763770876160868300549275946097010473332643840000000000000000000000000000000000000e+68", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.8389252775111283069889631347879462661235829004870041197088140774400000000000000000000000000000000000000e+67L, "1.8389252775111283069889631347879462661235829004870041197088140774400000000000000000000000000000000000000e+67", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.8045026245181087909282578887424942187415211828585867350357833779200000000000000000000000000000000000000e+66L, "1.8045026245181087909282578887424942187415211828585867350357833779200000000000000000000000000000000000000e+66", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.6139415015963261948795856116734033680672939822172300204078108032000000000000000000000000000000000000000e+65L, "1.6139415015963261948795856116734033680672939822172300204078108032000000000000000000000000000000000000000e+65", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.3187949670862787149323475106066210874520928766305564723661651200000000000000000000000000000000000000000e+64L, "1.3187949670862787149323475106066210874520928766305564723661651200000000000000000000000000000000000000000e+64", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.8652947935638867544975258598123447770317269214048194873129760000000000000000000000000000000000000000000e+62L, "9.8652947935638867544975258598123447770317269214048194873129760000000000000000000000000000000000000000000e+62", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.7677767608518504817918794029244339508807996285424723220104640000000000000000000000000000000000000000000e+61L, "6.7677767608518504817918794029244339508807996285424723220104640000000000000000000000000000000000000000000e+61", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.2641467556495415387682543812562093348191054073538914270730400000000000000000000000000000000000000000000e+60L, "4.2641467556495415387682543812562093348191054073538914270730400000000000000000000000000000000000000000000e+60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.4706517237142185424284275343767027578875512836847707758280000000000000000000000000000000000000000000000e+59L, "2.4706517237142185424284275343767027578875512836847707758280000000000000000000000000000000000000000000000e+59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.3177422716201009039921461100044177449498643771855331909700000000000000000000000000000000000000000000000e+58L, "1.3177422716201009039921461100044177449498643771855331909700000000000000000000000000000000000000000000000e+58", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.4750611894960504179018603471357527802382408288670161342000000000000000000000000000000000000000000000000e+56L, "6.4750611894960504179018603471357527802382408288670161342000000000000000000000000000000000000000000000000e+56", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.9330478552107545132079399426533304480054308936780642545000000000000000000000000000000000000000000000000e+55L, "2.9330478552107545132079399426533304480054308936780642545000000000000000000000000000000000000000000000000e+55", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2252899213008209896248783169149861832238011945022246000000000000000000000000000000000000000000000000000e+54L, "1.2252899213008209896248783169149861832238011945022246000000000000000000000000000000000000000000000000000e+54", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.7217402128877734970019794026056267173695376012268710000000000000000000000000000000000000000000000000000e+52L, "4.7217402128877734970019794026056267173695376012268710000000000000000000000000000000000000000000000000000e+52", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.6785124525594845202965146591601984920001061237741320000000000000000000000000000000000000000000000000000e+51L, "1.6785124525594845202965146591601984920001061237741320000000000000000000000000000000000000000000000000000e+51", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.5034829951836538559219701088754272365603191632587000000000000000000000000000000000000000000000000000000e+49L, "5.5034829951836538559219701088754272365603191632587000000000000000000000000000000000000000000000000000000e+49", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.6637415534451225329152181513653760874075278100800000000000000000000000000000000000000000000000000000000e+48L, "1.6637415534451225329152181513653760874075278100800000000000000000000000000000000000000000000000000000000e+48", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.6347190324222080575971451540788329488139570600000000000000000000000000000000000000000000000000000000000e+46L, "4.6347190324222080575971451540788329488139570600000000000000000000000000000000000000000000000000000000000e+46", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1887997793364622891010571019581486512880887480000000000000000000000000000000000000000000000000000000000e+45L, "1.1887997793364622891010571019581486512880887480000000000000000000000000000000000000000000000000000000000e+45", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.8047716936655096027980248782543659943937913000000000000000000000000000000000000000000000000000000000000e+43L, "2.8047716936655096027980248782543659943937913000000000000000000000000000000000000000000000000000000000000e+43", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.0790225058170194637643585929666817947860000000000000000000000000000000000000000000000000000000000000000e+41L, "6.0790225058170194637643585929666817947860000000000000000000000000000000000000000000000000000000000000000e+41", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2084757755139694726502828251712490452850000000000000000000000000000000000000000000000000000000000000000e+40L, "1.2084757755139694726502828251712490452850000000000000000000000000000000000000000000000000000000000000000e+40", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.1993406165887949960123200495814460898000000000000000000000000000000000000000000000000000000000000000000e+38L, "2.1993406165887949960123200495814460898000000000000000000000000000000000000000000000000000000000000000000e+38", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.6561413270081694853593737727970949550000000000000000000000000000000000000000000000000000000000000000000e+36L, "3.6561413270081694853593737727970949550000000000000000000000000000000000000000000000000000000000000000000e+36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.5369993949587931998758036774526800000000000000000000000000000000000000000000000000000000000000000000000e+34L, "5.5369993949587931998758036774526800000000000000000000000000000000000000000000000000000000000000000000000e+34", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.6151991880839964140266135934090000000000000000000000000000000000000000000000000000000000000000000000000e+32L, "7.6151991880839964140266135934090000000000000000000000000000000000000000000000000000000000000000000000000e+32", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.4760566491969897737280290058600000000000000000000000000000000000000000000000000000000000000000000000000e+30L, "9.4760566491969897737280290058600000000000000000000000000000000000000000000000000000000000000000000000000e+30", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0621766041618690022809397383500000000000000000000000000000000000000000000000000000000000000000000000000e+29L, "1.0621766041618690022809397383500000000000000000000000000000000000000000000000000000000000000000000000000e+29", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0668475851162648374876202000000000000000000000000000000000000000000000000000000000000000000000000000000e+27L, "1.0668475851162648374876202000000000000000000000000000000000000000000000000000000000000000000000000000000e+27", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.5410679744103301927030500000000000000000000000000000000000000000000000000000000000000000000000000000000e+24L, "9.5410679744103301927030500000000000000000000000000000000000000000000000000000000000000000000000000000000e+24", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.5395191798636166637180000000000000000000000000000000000000000000000000000000000000000000000000000000000e+22L, "7.5395191798636166637180000000000000000000000000000000000000000000000000000000000000000000000000000000000e+22", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.2147541393617700530500000000000000000000000000000000000000000000000000000000000000000000000000000000000e+20L, "5.2147541393617700530500000000000000000000000000000000000000000000000000000000000000000000000000000000000e+20", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.1197409850631024000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+18L, "3.1197409850631024000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+18", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.5899910954161520000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+16L, "1.5899910954161520000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+16", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.7660425636804000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+13L, "6.7660425636804000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+13", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.3384219373900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+11L, "2.3384219373900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+11", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.3043596000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+08L, "6.3043596000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+08", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2435500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+06L, "1.2435500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+06", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.5960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+03L, "1.5960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00L, "1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: return boost::math::tools::evaluate_rational(num, denom, z);
23866: }
23866:
23866:
23866: template<class T>
23866: static T lanczos_sum_near_1(const T& dz)
23866: {
23866: static const T d[57] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.7428115435862376558997260696640294500966442454383057764865555979364261022425976429085092772284462056620e+01L, "1.7428115435862376558997260696640294500966442454383057764865555979364261022425976429085092772284462056620e+01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.9098470636910381824837046571049540905024165376037355421260734899535717859205986796003654941175663049821e+02L, "-2.9098470636910381824837046571049540905024165376037355421260734899535717859205986796003654941175663049821e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.3238837075893790405047962895917439384623673303456004530561387555917370190498457070337183015927777421697e+03L, "2.3238837075893790405047962895917439384623673303456004530561387555917370190498457070337183015927777421697e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.1818710867341557832686340441113771687173935259473061186027784614571488561024113573068868892276452685792e+04L, "-1.1818710867341557832686340441113771687173935259473061186027784614571488561024113573068868892276452685792e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.2993023860235266500362186023069966658235478225844203105044378872946562122380318851444839578192967323002e+04L, "4.2993023860235266500362186023069966658235478225844203105044378872946562122380318851444839578192967323002e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.1912180368478885109223112981184136172284705131966546680563227042436992258659147484337283480302880786198e+05L, "-1.1912180368478885109223112981184136172284705131966546680563227042436992258659147484337283480302880786198e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.6139396362168514560020167846095021752825297585055554665973631410697906644150591916500251626224775776603e+05L, "2.6139396362168514560020167846095021752825297585055554665973631410697906644150591916500251626224775776603e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -4.6634802529570780684302635411632208905442609915247254971321402103134398787017804507333676554065934886041e+05L, "-4.6634802529570780684302635411632208905442609915247254971321402103134398787017804507333676554065934886041e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.8912442659385178766302183254171219505160153159736231877672680444314286802452078408167890642564966971613e+05L, "6.8912442659385178766302183254171219505160153159736231877672680444314286802452078408167890642564966971613e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -8.5495375341789279888846473669676987489917192922529063440714880612919546655027506056499234132070763181503e+05L, "-8.5495375341789279888846473669676987489917192922529063440714880612919546655027506056499234132070763181503e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.9953131705119738082952990229447045802828349018683164227185193391425402046621590400831377644280156201943e+05L, "8.9953131705119738082952990229447045802828349018683164227185193391425402046621590400831377644280156201943e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -8.0869264878440576629536295016426099545140305890893332059172420721937348112425650207439043097833689822279e+05L, "-8.0869264878440576629536295016426099545140305890893332059172420721937348112425650207439043097833689822279e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.2468943229845282686806294869840458047361754209121185638286960316366706592206130567941492816463381946909e+05L, "6.2468943229845282686806294869840458047361754209121185638286960316366706592206130567941492816463381946909e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -4.1630054452110204332042164710368677551444071577885528134258060122924060097997330723219233292551334541916e+05L, "-4.1630054452110204332042164710368677551444071577885528134258060122924060097997330723219233292551334541916e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.3999790605522096466954112874401964638803242076322683502391870253501264993933977365040197484368089793844e+05L, "2.3999790605522096466954112874401964638803242076322683502391870253501264993933977365040197484368089793844e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.1989159366950562464845132094716096217280130489202748985857413544679377185401912495211215199827572320658e+05L, "-1.1989159366950562464845132094716096217280130489202748985857413544679377185401912495211215199827572320658e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.1934569461829331860249338515130842345952840084924773082558044904616988546739452572774668343010410556738e+04L, "5.1934569461829331860249338515130842345952840084924773082558044904616988546739452572774668343010410556738e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.9504509773595632752455387440694137287105978110568834596383152715430739170438241704706104769027458757024e+04L, "-1.9504509773595632752455387440694137287105978110568834596383152715430739170438241704706104769027458757024e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 6.3443645806133388465801728173699557032879027729815842645734341879259895367471331502957361274245333765268e+03L, "6.3443645806133388465801728173699557032879027729815842645734341879259895367471331502957361274245333765268e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.7841389657268783911632604958857419096159175608100099391870386517930613345705029477317961997797817456392e+03L, "-1.7841389657268783911632604958857419096159175608100099391870386517930613345705029477317961997797817456392e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.3263071690820256271926147120746615152585668319664536987434389730938667811945831461118672855948398156120e+02L, "4.3263071690820256271926147120746615152585668319664536987434389730938667811945831461118672855948398156120e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -9.0147093132626919930705734140711481562906727339902047165060887486522943229634999363817715017657681660287e+01L, "-9.0147093132626919930705734140711481562906727339902047165060887486522943229634999363817715017657681660287e+01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.6071102334369619355078667017356321869894503980205853863658685021270881486705453945159213607404060788769e+01L, "1.6071102334369619355078667017356321869894503980205853863658685021270881486705453945159213607404060788769e+01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.4383630842681764529222336922814378927628353308340684972787496418846394508904604721467821529575751627808e+00L, "-2.4383630842681764529222336922814378927628353308340684972787496418846394508904604721467821529575751627808e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.1286133930578257063116405165630725640730704580877093703762851704304775232899279568326548372516108061737e-01L, "3.1286133930578257063116405165630725640730704580877093703762851704304775232899279568326548372516108061737e-01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.3692644530387989631839105618463769604011314569959807313957135524319268073994325844277072212634894718838e-02L, "-3.3692644530387989631839105618463769604011314569959807313957135524319268073994325844277072212634894718838e-02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.0185001434002208420172349105229077528666279911019323889220715333407026262532945659702898548882557288755e-03L, "3.0185001434002208420172349105229077528666279911019323889220715333407026262532945659702898548882557288755e-03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.2263062380436433070464690537097677591705999260831413712451347815254366329816629201276858957857633159301e-04L, "-2.2263062380436433070464690537097677591705999260831413712451347815254366329816629201276858957857633159301e-04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.3353139137616007516399230327860238131259262384241927446052286747295202825849286263834250215682608257253e-05L, "1.3353139137616007516399230327860238131259262384241927446052286747295202825849286263834250215682608257253e-05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -6.4195296490132509971486202730620553572364290374630355485943647261186824263045109480840776574102283117802e-07L, "-6.4195296490132509971486202730620553572364290374630355485943647261186824263045109480840776574102283117802e-07", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.4317122347228636250935502644177076353230092364254437169086888072416523402594888598203831115818706298660e-08L, "2.4317122347228636250935502644177076353230092364254437169086888072416523402594888598203831115818706298660e-08", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -7.1116401895712757982110113602984617019673481361481571387831251493876840058692034827601429496435585930404e-10L, "-7.1116401895712757982110113602984617019673481361481571387831251493876840058692034827601429496435585930404e-10", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.5670513725610592064219547014678059161831695745208975662601768645833855387548399162792665797683105415471e-11L, "1.5670513725610592064219547014678059161831695745208975662601768645833855387548399162792665797683105415471e-11", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.5260646573782426214538742421235036428884108667170155792319000553615370065204316405736286181192562052741e-13L, "-2.5260646573782426214538742421235036428884108667170155792319000553615370065204316405736286181192562052741e-13", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.8733941140402994491303889414468143535352703737984260742434438594748723811519620261843045417069155536008e-15L, "2.8733941140402994491303889414468143535352703737984260742434438594748723811519620261843045417069155536008e-15", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.2056577386533803436177435861654503857156683256162837031477537088773467287029340043192251326622052870465e-17L, "-2.2056577386533803436177435861654503857156683256162837031477537088773467287029340043192251326622052870465e-17", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0800931908111468667692114269177968638854301916581458483888602672737990097921789711610932672475861001994e-19L, "1.0800931908111468667692114269177968638854301916581458483888602672737990097921789711610932672475861001994e-19", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.1394496063229749361320583264730160299755358905685423988290847461006304721866926670065937080941317261860e-22L, "-3.1394496063229749361320583264730160299755358905685423988290847461006304721866926670065937080941317261860e-22", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.9274792450690899704710418936228583371317511924974285800543619049655797337986789330520046119470213637029e-25L, "4.9274792450690899704710418936228583371317511924974285800543619049655797337986789330520046119470213637029e-25", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.6755223694460581147198804301148887855673388834174147952660909117310772380696272509534022412162907695615e-28L, "-3.6755223694460581147198804301148887855673388834174147952660909117310772380696272509534022412162907695615e-28", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.0900225572290190698649005514102451202434886376168031607266730359956445823401555519988657304185446296554e-31L, "1.0900225572290190698649005514102451202434886376168031607266730359956445823401555519988657304185446296554e-31", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -9.9024654365441546862123770751558932020185466144030552444525982172062830502919077739315180881006251414076e-36L, "-9.9024654365441546862123770751558932020185466144030552444525982172062830502919077739315180881006251414076e-36", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.8401409342622593684683418781548298452423138616374012775158698166549875044639516398318322746270349752685e-40L, "1.8401409342622593684683418781548298452423138616374012775158698166549875044639516398318322746270349752685e-40", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.5509630598854356990909041057867643490325454268799807828321700754551551638916414252086883229952366535870e-46L, "-3.5509630598854356990909041057867643490325454268799807828321700754551551638916414252086883229952366535870e-46", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.9657368621557895021941755410664403576678059155205990324521617023894341207730153756506985102036313160050e-53L, "1.9657368621557895021941755410664403576678059155205990324521617023894341207730153756506985102036313160050e-53", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 8.1241524357510805548447946933511907560696760445486904751298400852883111381333879290886698299626153350908e-56L, "8.1241524357510805548447946933511907560696760445486904751298400852883111381333879290886698299626153350908e-56", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -4.7964162808880362344077245029516705444495147547810713281233063336303852616170950226238109362470235010501e-56L, "-4.7964162808880362344077245029516705444495147547810713281233063336303852616170950226238109362470235010501e-56", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.4347533225708328774658804669618167169988215409141087123873615495103598105335608364600471221104934664685e-56L, "2.4347533225708328774658804669618167169988215409141087123873615495103598105335608364600471221104934664685e-56", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.0479456512751620605515259329413452300868549663188231386090986433707412031359388913176316853836715844262e-56L, "-1.0479456512751620605515259329413452300868549663188231386090986433707412031359388913176316853836715844262e-56", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.7702413521297716432095744498633554542922110264197418721766960511801656053258128107225421844535437414965e-57L, "3.7702413521297716432095744498633554542922110264197418721766960511801656053258128107225421844535437414965e-57", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.1172472608352701420007786830697096251191397605488453881854169564652213625087310098345004527869954910248e-57L, "-1.1172472608352701420007786830697096251191397605488453881854169564652213625087310098345004527869954910248e-57", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.6812745632569367999094411216914045337299158629329933113885292569194336792226670477775358040058394820261e-58L, "2.6812745632569367999094411216914045337299158629329933113885292569194336792226670477775358040058394820261e-58", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -5.0940899331938988550733986571553993560122282178667089274000678435292023664866549561623149093538369388095e-59L, "-5.0940899331938988550733986571553993560122282178667089274000678435292023664866549561623149093538369388095e-59", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.3990413208296530427672464741601390159299766279095164840741566288983363882627013060272921361169788365065e-60L, "7.3990413208296530427672464741601390159299766279095164840741566288983363882627013060272921361169788365065e-60", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -7.7457129143553309783200493485805274806723421714099516756842649457968744562118823820376006640033350414786e-61L, "-7.7457129143553309783200493485805274806723421714099516756842649457968744562118823820376006640033350414786e-61", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.2197041624023821332095587670691140585500743194040476924703015039327636848179534186153838408314119752602e-62L, "5.2197041624023821332095587670691140585500743194040476924703015039327636848179534186153838408314119752602e-62", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.7047723462914761686649775942852334082321432815609988664912617018852671864913042227323649381537503179251e-63L, "-1.7047723462914761686649775942852334082321432815609988664912617018852671864913042227323649381537503179251e-63", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>()))
23866: };
23866: T result = 0;
23866: for (unsigned k = 1; k <= sizeof(d) / sizeof(d[0]); ++k)
23866: {
23866: result += (-d[k - 1] * dz) / (k * dz + k * k);
23866: }
23866: return result;
23866: }
23866:
23866: template<class T>
23866: static T lanczos_sum_near_2(const T& dz)
23866: {
23866: static const T d[57] = {
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 3.1662905928411697905258405605703584854097058546117590807018322943510409180314506715189727704455120038255e+02L, "3.1662905928411697905258405605703584854097058546117590807018322943510409180314506715189727704455120038255e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -5.2865276330524469503633315971419666291446796012439883450060362841602955272110829770969508625348151344110e+03L, "-5.2865276330524469503633315971419666291446796012439883450060362841602955272110829770969508625348151344110e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.2219660233923727011658095806761811032946810239961697070082822527681712138952842835075740681056558805545e+04L, "4.2219660233923727011658095806761811032946810239961697070082822527681712138952842835075740681056558805545e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.1471898769829091933140257345448028662421485176900416920959625594396387278224755880120811584841740984425e+05L, "-2.1471898769829091933140257345448028662421485176900416920959625594396387278224755880120811584841740984425e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.8108506629663017023576288202278104175560258464862168051112507988271579950339846330515110250714726935097e+05L, "7.8108506629663017023576288202278104175560258464862168051112507988271579950339846330515110250714726935097e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.1641711509053717182383657533380473756042975817599106212749608660372803916254884680397716414106410031258e+06L, "-2.1641711509053717182383657533380473756042975817599106212749608660372803916254884680397716414106410031258e+06", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.7489314096332467747675642425312337606864580547949737826112168114861342185432170188369658631861013639815e+06L, "4.7489314096332467747675642425312337606864580547949737826112168114861342185432170188369658631861013639815e+06", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -8.4724786849037234839356479194796060821229710729537665905710787287944594232273268923957076043820505152123e+06L, "-8.4724786849037234839356479194796060821229710729537665905710787287944594232273268923957076043820505152123e+06", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.2519817172723530341690766298268651248835138906207131843033724432774951682486028564360090931772389689559e+07L, "1.2519817172723530341690766298268651248835138906207131843033724432774951682486028564360090931772389689559e+07", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.5532557359535150161664447223551521375257233550726531311510295929236015954526292484349276082718903034254e+07L, "-1.5532557359535150161664447223551521375257233550726531311510295929236015954526292484349276082718903034254e+07", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.6342429895113330905046033016646335037353665731613082814708242545769972330151611687916571207590466290675e+07L, "1.6342429895113330905046033016646335037353665731613082814708242545769972330151611687916571207590466290675e+07", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.4692098728454232462170975109580416322729103219472916098312631671127459727620998375190829900768135597920e+07L, "-1.4692098728454232462170975109580416322729103219472916098312631671127459727620998375190829900768135597920e+07", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1349180467693002337442162064332669746019375174297711955789632954762786417078957693464106665366428215075e+07L, "1.1349180467693002337442162064332669746019375174297711955789632954762786417078957693464106665366428215075e+07", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -7.5632302457640823075347957970491681679223652407676639065204661139779189254891918422939089928834865040327e+06L, "-7.5632302457640823075347957970491681679223652407676639065204661139779189254891918422939089928834865040327e+06", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 4.3602139028787279699176338906645576475531513654199858202869033753097108161316098377414795783646795195944e+06L, "4.3602139028787279699176338906645576475531513654199858202869033753097108161316098377414795783646795195944e+06", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -2.1781564770643699404196555460989570673904909639666069579972319801392840126860473187109481731392038690946e+06L, "-2.1781564770643699404196555460989570673904909639666069579972319801392840126860473187109481731392038690946e+06", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 9.4353253130211266653540571778153094858600293629830279655688388322741879148986220244682882658942335696445e+05L, "9.4353253130211266653540571778153094858600293629830279655688388322741879148986220244682882658942335696445e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.5435240282512309592551076592408102377879926851607713336111442642626445924365822019934119240733876795141e+05L, "-3.5435240282512309592551076592408102377879926851607713336111442642626445924365822019934119240733876795141e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 1.1526261667865026060062626782458367235346781022115660163078870751778821943822555542992468135865376114967e+05L, "1.1526261667865026060062626782458367235346781022115660163078870751778821943822555542992468135865376114967e+05", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -3.2413730814968410697200758155304075536237935327710818457186113369696959175294570307981528264101370866348e+04L, "-3.2413730814968410697200758155304075536237935327710818457186113369696959175294570307981528264101370866348e+04", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 7.8599121870734324248863589686279377309239133065805881581800599402339736200679855503773749459170204132791e+03L, "7.8599121870734324248863589686279377309239133065805881581800599402339736200679855503773749459170204132791e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -1.6377668257261558531404127005983837331367557885561101077531977908963614729639690754651655156526373276599e+03L, "-1.6377668257261558531404127005983837331367557885561101077531977908963614729639690754651655156526373276599e+03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 2.9197523005380738606902261922935494412976764483416941348495962454277708460181544072006267228271644673220e+02L, "2.9197523005380738606902261922935494412976764483416941348495962454277708460181544072006267228271644673220e+02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -4.4299489087401028354837196175165054006400597113077360830473379437347868849689360216846724154620950362855e+01L, "-4.4299489087401028354837196175165054006400597113077360830473379437347868849689360216846724154620950362855e+01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.6839760968600182694175565648725095464923929298411152920412000388870216851203160830044900161240884736073e+00L, "5.6839760968600182694175565648725095464923929298411152920412000388870216851203160830044900161240884736073e+00", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -6.1211841186792218837353890586540028399627732652134291573554656108241153104326807995702108419307165078338e-01L, "-6.1211841186792218837353890586540028399627732652134291573554656108241153104326807995702108419307165078338e-01", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( 5.4839254672775355063516929562453773790762108550565402409275434242243168512055903461692839292134763272349e-02L, "5.4839254672775355063516929562453773790762108550565402409275434242243168512055903461692839292134763272349e-02", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits10))) >(), boost::is_constructible<T, const char*>())),
23866: static_cast<T>(boost::math::tools::make_big_value<T>( -4.0446900436498039824930882038167913752019117688189621941029942455212255095042589886820040572146790228293e-03L, "-4.0446900436498039824930882038167913752019117688189621941029942455212255095042589886820040572146790228293e-03", boost::integral_constant<bool, (boost::is_convertible<boost::math::tools::largest_float, T>::value) && ((334 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>::digits) || boost::is_floating_point<T>::value || (boost::math::tools::numeric_traits<T>::is_specialized && (boost::math::tools::numeric_traits<T>::digits10 <= boost::math::tools::numeric_traits<boost::math::tools::largest_float>